GoGPT Best VPN GoSearch

অনওয়ার্কস ফেভিকন

re2c - ক্লাউডে অনলাইন

উবুন্টু অনলাইন, ফেডোরা অনলাইন, উইন্ডোজ অনলাইন এমুলেটর বা MAC OS অনলাইন এমুলেটরের মাধ্যমে OnWorks ফ্রি হোস্টিং প্রদানকারীতে re2c চালান

এটি হল re2c কমান্ড যা আমাদের একাধিক বিনামূল্যের অনলাইন ওয়ার্কস্টেশন যেমন উবুন্টু অনলাইন, ফেডোরা অনলাইন, উইন্ডোজ অনলাইন এমুলেটর বা MAC OS অনলাইন এমুলেটর ব্যবহার করে OnWorks ফ্রি হোস্টিং প্রদানকারীতে চালানো যেতে পারে।

কার্যক্রম:

NAME এর


re2c - রেগুলার এক্সপ্রেশনকে C/C++ কোডে রূপান্তর করুন

সাইনোপিসিস


re2c [বিকল্প] ফাইল

বর্ণনাঃ


re2c C/C++ এর জন্য একটি লেক্সার জেনারেটর। এটি ভিতরে রেগুলার এক্সপ্রেশন স্পেসিফিকেশন খুঁজে পায়
C/C++ মন্তব্য করে এবং একটি হার্ড-কোডেড DFA দিয়ে প্রতিস্থাপন করে। ব্যবহারকারীকে কিছু সরবরাহ করতে হবে
উত্পন্ন ডিএফএ নিয়ন্ত্রণ এবং কাস্টমাইজ করার জন্য ইন্টারফেস কোড।

বিকল্প


-? -h --help
একটি সংক্ষিপ্ত সাহায্য আহ্বান করুন.

-b --বিট-ভেক্টর
বোঝায় -s. বিট ভেক্টরগুলিও ব্যবহার করুন
কম্পাইলার কয়েকটি কীওয়ার্ডের সাথে স্পেসিফিকেশনের জন্য সবচেয়ে উপযোগী (যেমন এর জন্য
বেশিরভাগ প্রোগ্রামিং ভাষা)।

-c -- শর্ত
(f)লেক্স-সদৃশ অবস্থা সমর্থন সমর্থন করতে ব্যবহৃত।

-d --ডিবাগ-আউটপুট
একটি পার্সার তৈরি করে যা বর্তমান অবস্থান সম্পর্কে তথ্য ডাম্প করে
ইনপুট পার্স করার সময় পার্সারটি উল্লেখ করুন। এটি পার্সার সমস্যা ডিবাগ করার জন্য দরকারী
এবং রাজ্য। আপনি যদি এই সুইচটি ব্যবহার করেন তবে আপনাকে একটি ম্যাক্রো সংজ্ঞায়িত করতে হবে YYDEBUG এটাই
দুটি পরামিতি সহ একটি ফাংশনের মতো বলা হয়: অকার্যকর YYDEBUG (int অবস্থা, গৃহস্থালির কাজ বর্তমান).
প্রথম পরামিতি রাষ্ট্র গ্রহণ করে বা -1 এবং দ্বিতীয় প্যারামিটারটি পায়
বর্তমান কার্সারে ইনপুট।

-D --এমিট-ডট
গ্রাফভিজ ডট ডেটা নির্গত করুন। এটি তারপর যেমন সঙ্গে প্রক্রিয়া করা যেতে পারে ডট - Tpng input.dot >
output.png. অনুগ্রহ করে মনে রাখবেন যে অনেক রাজ্যের স্ক্যানার ক্র্যাশ ডট হতে পারে।

-e --ইসিবি
EBCDIC সমর্থন করে এমন একটি পার্সার তৈরি করুন৷ উত্পন্ন কোড যে কোনো সঙ্গে মোকাবিলা করতে পারেন
0xFF পর্যন্ত অক্ষর। এই মোডে re2c অনুমান করে যে ইনপুট অক্ষর আকার 1
বাইট এই সুইচ এর সাথে বেমানান -w, -x, -u এবং -8.

-f --সঞ্চয়যোগ্য অবস্থা
সংরক্ষণযোগ্য অবস্থার জন্য সমর্থন সহ একটি স্ক্যানার তৈরি করুন।

-F --ফ্লেক্স-সিনট্যাক্স
ফ্লেক্স সিনট্যাক্সের জন্য আংশিক সমর্থন। যখন এই পতাকা সক্রিয় হয় তখন নামকৃত সংজ্ঞা
কোঁকড়া ধনুর্বন্ধনী দ্বারা বেষ্টিত করা আবশ্যক এবং একটি সমান চিহ্ন ছাড়া সংজ্ঞায়িত করা যেতে পারে এবং
সেমি কোলন বন্ধ করা। পরিবর্তে নামগুলিকে সরাসরি ডবল উদ্ধৃত স্ট্রিং হিসাবে বিবেচনা করা হয়।

-g --কম্পিউটেড-গোটোস
একটি স্ক্যানার তৈরি করুন যা GCC-এর কম্পিউটেড গোটো বৈশিষ্ট্য ব্যবহার করে। এটাই re2c
যখনই কোনো সিদ্ধান্ত একটি নির্দিষ্ট জটিলতার হয় (যেমন প্রচুর
যদি শর্ত অন্যথায় প্রয়োজন হয়)। এটি শুধুমাত্র GCC এবং উত্পাদনের সাথে ব্যবহারযোগ্য
আউটপুট যা অন্য কোন কম্পাইলারের সাথে কম্পাইল করা যায় না। উল্লেখ্য যে এটি বোঝায় -b
এবং জটিলতা থ্রেশহোল্ড ইনপ্লেস কনফিগারেশন ব্যবহার করে কনফিগার করা যেতে পারে
cgoto: থ্রেশহোল্ড.

-i --কোন-ডিবাগ-তথ্য
আউটপুট করবেন না # লাইন তথ্য আপনি যখন একটি CMS টুল ব্যবহার করতে চান তখন এটি কার্যকর
দ্য re2c আউটপুট যা আপনি চাইতে পারেন যদি আপনার ব্যবহারকারীদের প্রয়োজন না হয় re2c
নিজেদের উৎস থেকে নির্মাণ করার সময়।

-o আউটপুট --আউটপুট=আউটপুট
উল্লেখ আউটপুট ফাইল.

-r --পুনঃব্যবহারযোগ্য
এর সাথে স্ক্যানার সংজ্ঞা পুনঃব্যবহারের অনুমতি দেয় /*!use:re2c */ পরে /*!নিয়ম: re2c */. মধ্যে
এই মোড নং /*!re2c */ ব্লক এবং ঠিক এক /*!নিয়ম: re2c */ উপস্থিত থাকতে হবে।
নিয়ম প্রত্যেকের দ্বারা সংরক্ষণ এবং ব্যবহার করা হচ্ছে /*!use:re2c */ ব্লক যে অনুসরণ.
এই ব্লকে ইনপ্লেস কনফিগারেশন থাকতে পারে, বিশেষ করে re2c:পতাকা:ই,
re2c:flags:w, re2c:পতাকা:x, re2c:flags:u এবং re2c:flags:8. সেভাবেই সম্ভব
একই স্ক্যানার তৈরি করতে একাধিকবার বিভিন্ন চরিত্রের ধরন, ভিন্ন
ইনপুট মেকানিজম বা বিভিন্ন আউটপুট মেকানিজম। দ্য /*!use:re2c */ ব্লক পারে
এছাড়াও অতিরিক্ত নিয়ম রয়েছে যা নিয়মের সেটে যুক্ত করা হবে
/*!নিয়ম: re2c */.

-s --নেস্টেড-ifs
কিছু সুইচের জন্য নেস্টেড ifs তৈরি করুন। অনেক কম্পাইলার তৈরি করতে এই সহায়তা প্রয়োজন
আরও ভাল কোড।

-t HEADER কোন --টাইপ-হেডার=হেডার
একটা তৈরি কর HEADER কোন ফাইল যা (f)লেক্স-এর মতো শর্ত সমর্থনের জন্য প্রকার ধারণ করে।
এটি শুধুমাত্র যখন সক্রিয় করা যেতে পারে -c ব্যবহার করা হয়।

-u --ইউনিকোড
UTF-32 সমর্থন করে এমন একটি পার্সার তৈরি করুন৷ উত্পন্ন কোড কোনো বৈধ সঙ্গে মোকাবিলা করতে পারেন
ইউনিকোড অক্ষর 0x10FFFF পর্যন্ত। এই মোডে re2c যে ইনপুট অক্ষর অনুমান
আকার 4 বাইট। এই সুইচ এর সাথে বেমানান -e, -w, -x এবং -8. এই থেকেই বোঝা
-s.

-v --সংস্করণ
সংস্করণ তথ্য দেখান.

-V --ভার্নাম
একটি সংখ্যা XXYYZZ হিসাবে সংস্করণ দেখান.

-w --প্রশস্ত অক্ষর
UCS-2 সমর্থন করে এমন একটি পার্সার তৈরি করুন। উত্পন্ন কোড কোনো বৈধ সঙ্গে মোকাবিলা করতে পারেন
ইউনিকোড অক্ষর 0xFFFF পর্যন্ত। এই মোডে re2c যে ইনপুট অক্ষর অনুমান
আকার 2 বাইট। এই সুইচ এর সাথে বেমানান -e, -x, -u এবং -8. এই থেকেই বোঝা
-s.

-x --utf-16
UTF-16 সমর্থন করে এমন একটি পার্সার তৈরি করুন৷ উত্পন্ন কোড কোনো বৈধ সঙ্গে মোকাবিলা করতে পারেন
ইউনিকোড অক্ষর 0x10FFFF পর্যন্ত। এই মোডে re2c যে ইনপুট অক্ষর অনুমান
আকার 2 বাইট। এই সুইচ এর সাথে বেমানান -e, -w, -u এবং -8. এই থেকেই বোঝা
-s.

-8 --utf-8
UTF-8 সমর্থন করে এমন একটি পার্সার তৈরি করুন৷ উত্পন্ন কোড কোনো বৈধ সঙ্গে মোকাবিলা করতে পারেন
ইউনিকোড অক্ষর 0x10FFFF পর্যন্ত। এই মোডে re2c যে ইনপুট অক্ষর অনুমান
আকার 1 বাইট। এই সুইচ এর সাথে বেমানান -e, -w, -x এবং -u.

--কেস-সংবেদনশীল
সমস্ত স্ট্রিং অক্ষর সংবেদনশীল, তাই সমস্ত "-অভিব্যক্তি একইভাবে আচরণ করা হয়
'-অভিব্যক্তি হয়।

--কেস-উল্টানো
একক এবং ডবল উদ্ধৃত স্ট্রিং এর অর্থ উল্টে দিন। এই সুইচ একক সঙ্গে
উদ্ধৃতিগুলি অক্ষর সংবেদনশীল এবং দ্বিগুণ উদ্ধৃতিগুলি অক্ষর সংবেদনশীল৷

--কোন-প্রজন্ম-তারিখ
জেনারেট করা ফাইলে ডেট আউটপুট চাপুন।

--কোন-প্রজন্ম-তারিখ
উত্পন্ন ফাইলে সংস্করণ আউটপুট দমন করুন।

--এনকোডিং-নীতি নীতিমালা
কিভাবে উল্লেখ করুন re2c ইউনিকোড surrogates চিকিত্সা করা আবশ্যক. নীতিমালা নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
ব্যর্থ (সারোগেটের সম্মুখীন হলে ত্রুটি সহ গর্ভপাত করুন), বিকল্প (নিঃশব্দে বিকল্প
ত্রুটি কোড পয়েন্ট 0xFFFD সহ সারোগেট), উপেক্ষা করা (সারোগেটদেরকে স্বাভাবিক কোড হিসাবে বিবেচনা করুন
পয়েন্ট)। গতানুগতিক re2c সারোগেট উপেক্ষা করে (অগ্রগতি সামঞ্জস্যের জন্য)। ইউনিকোড
স্ট্যান্ডার্ড বলে যে স্বতন্ত্র সারোগেটগুলি অবৈধ কোড পয়েন্ট, তবে আলাদা
লাইব্রেরি এবং প্রোগ্রাম তাদের ভিন্নভাবে আচরণ করে।

--ইনপুট ইনপুট
re2c ইনপুট API উল্লেখ করুন। ইনপুট নিম্নলিখিতগুলির মধ্যে একটি হতে পারে: ডিফল্ট, প্রথা.

-S --কঙ্কাল
C/C++ উৎসে re2c-জেনারেটেড কোড এম্বেড করার পরিবর্তে, একটি তৈরি করুন
একই DFA-এর জন্য স্বয়ংসম্পূর্ণ প্রোগ্রাম। সঠিকতা এবং জন্য সবচেয়ে দরকারী
কর্মক্ষমতা পরীক্ষা।

--খালি ক্লাস নীতিমালা
ব্যবহারকারী খালি ক্যারেক্টার ক্লাস ইনপুট করলে কি করবেন। নীতিমালা এক হতে পারে
নিম্নলিখিত: ম্যাচ খালি (খালি ইনপুট মেলে: বেশ অযৌক্তিক, কিন্তু এটি
পিছনের সামঞ্জস্যতার কারণে ডিফল্ট), ম্যাচ-কোনটি নয় (কোনও সাথে মিলতে ব্যর্থ
ইনপুট), ভুল (সংকলন ত্রুটি)। মনে রাখবেন যে নির্মাণের বিভিন্ন উপায় রয়েছে
খালি ক্লাস, যেমন: [], [^\x00-\xFF], [\x00-\xFF][\x00-\xFF]।

--dfa-মিনিমাইজেশন <টেবিল | মুর>
অভ্যন্তরীণ অ্যালগরিদম re2c দ্বারা DFA (ডিফল্টে মুর) উভয় টেবিল
ফিলিং এবং মুরের অ্যালগরিদমগুলি অভিন্ন ডিএফএ তৈরি করা উচিত (রাজ্য পর্যন্ত
রিবেলিং)। টেবিল ভর্তি অ্যালগরিদম অনেক সহজ এবং ধীর; এটি একটি হিসাবে কাজ করে
রেফারেন্স বাস্তবায়ন।

-1 --একক-পাস
অপ্রচলিত এবং কিছুই করে না (একক পাস এখন ডিফল্টরূপে)।

-W সমস্ত সতর্কতা চালু করুন।

-ভুল
সতর্কতাকে ত্রুটিতে পরিণত করুন। মনে রাখবেন যে এই বিকল্পটি কোনটি চালু করে না
সতর্কবার্তা, এটি শুধুমাত্র সেই সতর্কবার্তাগুলিকে প্রভাবিত করে যেগুলি এখন পর্যন্ত চালু করা হয়েছে বা থাকবে৷
পরে চালু হয়েছে।

-ডব্লিউ
স্বতন্ত্র চালু করুন সতর্কবার্তা.

-ওনো-
স্বতন্ত্র বন্ধ করুন সতর্কবার্তা.

-ভুল-
স্বতন্ত্র চালু করুন সতর্কবার্তা এবং এটিকে ত্রুটি হিসাবে বিবেচনা করুন (এটি বোঝায় -ডব্লিউ).

-Wno-ত্রুটি-
এই বিশেষ আচরণ করবেন না সতর্কবার্তা ত্রুটি হিসাবে। এটি সতর্কতা বন্ধ করে না
নিজেই।

-শর্ত-অর্ডার
সতর্ক করুন যদি জেনারেট করা প্রোগ্রামটি কন্ডিশন নম্বরিং সম্পর্কে অন্তর্নিহিত অনুমান করে।
এক হয় ব্যবহার করা উচিত -টি, --টাইপ-হেডার বিকল্প বা /*!types:re2c*/ নির্দেশনা
সংখ্যার শর্তের নামগুলির ম্যাপিং তৈরি করুন এবং স্বয়ংক্রিয়ভাবে জেনারেটেড অবস্থা ব্যবহার করুন
নাম থাকবে না।

-ভেম্পটি-চরিত্র-শ্রেণী
রেগুলার এক্সপ্রেশনে খালি ক্যারেক্টার ক্লাস থাকলে সতর্ক করুন। যৌক্তিক দিক থেকে
খালি অক্ষর ক্লাসের সাথে মেলানোর চেষ্টা করার দৃষ্টিভঙ্গি কোন অর্থহীন: এটি সর্বদা উচিত
ব্যর্থ যাইহোক, পিছনের সামঞ্জস্যের কারণে re2c খালি অক্ষর অনুমতি দেয়
ক্লাস এবং এটিকে খালি স্ট্রিং হিসাবে বিবেচনা করে। ব্যবহার করুন --খালি ক্লাস ডিফল্ট পরিবর্তন করার বিকল্প
আচরণ।

-Wmatch-খালি-স্ট্রিং
একটি নিয়মে রেগুলার এক্সপ্রেশন বাতিলযোগ্য হলে সতর্ক করুন (খালি স্ট্রিং মেলে)। যদি ডিএফএ
লুপে চলে এবং খালি ম্যাচ অনিচ্ছাকৃত (উন্নত নয় ইনপুট অবস্থান
ম্যানুয়ালি), লেক্সার চিরন্তন লুপে আটকে যেতে পারে।

-Wswapped-পরিসীমা
নিচের সীমাটি উপরের সীমার চেয়ে বেশি হলে সতর্ক করুন৷ ডিফল্ট re2c আচরণ হয়
নীরবে পরিসরের সীমানা অদলবদল করুন।

-Wunddefined-নিয়ন্ত্রণ-প্রবাহ
সতর্ক করুন যদি কিছু ইনপুট স্ট্রিং লেক্সারে অনির্ধারিত নিয়ন্ত্রণ প্রবাহ সৃষ্টি করে (ত্রুটিপূর্ণ
নিদর্শন রিপোর্ট করা হয়)। এটি সবচেয়ে বিপজ্জনক এবং সাধারণ ভুল। এটা হতে পারে
ডিফল্ট নিয়ম যোগ করে সহজেই ঠিক করা যায় * (এই নিয়মের সর্বনিম্ন অগ্রাধিকার আছে, ম্যাচগুলি
যেকোনো কোড ইউনিট এবং ঠিক একটি কোড ইউনিট ব্যবহার করে)।

-উইসলেস-এস্কেপ
সতর্ক করুন যদি একটি প্রতীক পালানো হয় যখন এটি করা উচিত নয়। ডিফল্টরূপে re2c নিঃশব্দে উপেক্ষা করে
এস্কেপ, কিন্তু এটি একটি টাইপো বা এস্কেপ সিকোয়েন্সে একটি ত্রুটি নির্দেশ করতে পারে।

ইন্টারফেস কোড


ব্যবহারকারীকে অবশ্যই C/C++ কোড আকারে ইন্টারফেস কোড সরবরাহ করতে হবে (ম্যাক্রো, ফাংশন,
ভেরিয়েবল, ইত্যাদি) বা আকারে জায়গায় কনফিগারেশনের. কোন প্রতীক সংজ্ঞায়িত করা আবশ্যক
এবং কোনটি ঐচ্ছিক একটি নির্দিষ্ট ব্যবহারের ক্ষেত্রে নির্ভর করে।

YYCONDTYPE
In -c মোড আপনি ব্যবহার করতে পারেন -t হিসাবে ব্যবহৃত গণনা ধারণ করে এমন একটি ফাইল তৈরি করতে
শর্তাবলী প্রতিটি মান একটি নিয়ম সেটের শর্ত বোঝায়।

YYCTXMARKER
l- প্রকারের মান YYCTYPE *. উত্পন্ন কোড ট্রেলিং প্রসঙ্গ ব্যাকট্র্যাকিং সংরক্ষণ করে
তথ্য ইন YYCTXMARKER. স্ক্যানার হলে ব্যবহারকারীকে শুধুমাত্র এই ম্যাক্রোটি সংজ্ঞায়িত করতে হবে
স্পেসিফিকেশন তার এক বা একাধিক রেগুলার এক্সপ্রেশনে ট্রেলিং প্রসঙ্গ ব্যবহার করে।

YYCTYPE
একটি ইনপুট প্রতীক (কোড ইউনিট) ধরে রাখতে ব্যবহৃত টাইপ। সাধারণত গৃহস্থালির কাজ or অস্বাক্ষরিত গৃহস্থালির কাজ উন্নত
ASCII, EBCDIC এবং UTF-8, অস্বাক্ষরিত সংক্ষিপ্ত UTF-16 বা UCS-2 এর জন্য এবং অস্বাক্ষরিত কোন int উন্নত
UTF-32।

YYCURSOR
l- প্রকারের মান YYCTYPE * যেটি বর্তমান ইনপুট প্রতীককে নির্দেশ করে। উৎপন্ন
কোড অগ্রগতি YYCURSOR যেমন প্রতীক মিলে যায়। প্রবেশের সময়, YYCURSOR অনুমান করা হয়
বর্তমান টোকেনের প্রথম অক্ষরের দিকে নির্দেশ করুন। প্রস্থান করার সময়, YYCURSOR নির্দেশ করবে
নিম্নলিখিত টোকেনের প্রথম অক্ষর।

YYDEBUG (অবস্থা, বর্তমান)
এই শুধুমাত্র প্রয়োজন যদি -d পতাকা নির্দিষ্ট ছিল। এটি সহজেই ডিবাগ করতে দেয়
প্রতিটি রাজ্যের জন্য একটি ব্যবহারকারী সংজ্ঞায়িত ফাংশন কল করে পার্সার তৈরি করে। কাজ
নিম্নলিখিত স্বাক্ষর থাকা উচিত: অকার্যকর YYDEBUG (int অবস্থা, গৃহস্থালির কাজ বর্তমান). দ্য
প্রথম প্যারামিটারটি স্টেট বা -1 গ্রহণ করে এবং দ্বিতীয় প্যারামিটারটি গ্রহণ করে
বর্তমান কার্সারে ইনপুট।

YYFILL (ঢ)
উত্পন্ন কোড "কল"" YYFILL (ঢ) যখন বাফার প্রয়োজন (পুনরায়) পূরণ: অন্তত
n অতিরিক্ত অক্ষর প্রদান করা উচিত. YYFILL (ঢ) সমন্বয় করা উচিত YYCURSOR,
YYLIMIT, YYMARKER এবং YYCTXMARKER যেমন দরকার. সাধারণ প্রোগ্রামিং জন্য যে নোট
প্রত্যেক n দীর্ঘতম কীওয়ার্ড প্লাস ওয়ানের দৈর্ঘ্য হবে। ব্যবহারকারী স্থাপন করতে পারেন
ফর্মের একটি মন্তব্য /*!max:re2c*/ sertোকাতে YYMAXFILL সংজ্ঞা যা সেট করা হয়েছে
সর্বোচ্চ দৈর্ঘ্য মান।

YYGET শর্ত ()
এই সংজ্ঞাটি স্ক্যানার কোড প্রবেশ করার আগে শর্ত পেতে ব্যবহৃত হয় যখন
ব্যবহার -c সুইচ মানটিকে গণনা থেকে একটি মান দিয়ে শুরু করতে হবে
YYCONDTYPE টাইপ করুন।

YYGETSTATE ()
ব্যবহারকারী শুধুমাত্র এই ম্যাক্রো সংজ্ঞায়িত করতে হবে যদি -f পতাকা নির্দিষ্ট ছিল। তার মধ্যে
ক্ষেত্রে, উত্পন্ন কোড "কল" YYGETSTATE () স্ক্যানার একেবারে শুরুতে
সংরক্ষিত রাষ্ট্র প্রাপ্ত করার জন্য. YYGETSTATE () একটি স্বাক্ষরিত পূর্ণসংখ্যা ফেরত দিতে হবে। দ্য
মান অবশ্যই -1 হতে হবে, নির্দেশ করে যে স্ক্যানারটি প্রথমবার প্রবেশ করানো হয়েছে,
অথবা পূর্বে সংরক্ষিত একটি মান YYSETSTATE (গুলি). দ্বিতীয় ক্ষেত্রে, স্ক্যানার হবে
যেখানে শেষ হয়েছিল ঠিক তার পরে আবার অপারেশন শুরু করুন YYFILL (ঢ) বলা হয়.

YYLIMIT
প্রকারের অভিব্যক্তি YYCTYPE * যে বাফার শেষ চিহ্নিত YYLIMIT[-1] হয়
বাফারের শেষ অক্ষর)। উত্পন্ন কোড বারবার তুলনা YYCURSOR থেকে
YYLIMIT কখন বাফার (পুনরায়) পূরণ করতে হবে তা নির্ধারণ করতে।

YYMARKER
l- প্রকারের মান YYCTYPE *. উত্পন্ন কোড ব্যাকট্র্যাকিং তথ্য সংরক্ষণ করে
YYMARKER. কিছু সহজ স্ক্যানার এটি ব্যবহার নাও করতে পারে।

YYMAXFILL
এই দ্বারা স্বয়ংক্রিয়ভাবে সংজ্ঞায়িত করা হবে /*!max:re2c*/ ব্লক যেমন উপরে ব্যাখ্যা করা হয়েছে।

ওয়াইসেট কন্ডিশন (গ)
এই সংজ্ঞাটি রূপান্তর নিয়মে শর্ত সেট করতে ব্যবহৃত হয়। এই শুধুমাত্র হচ্ছে
ব্যবহৃত যখন -c সক্রিয় এবং রূপান্তর নিয়ম ব্যবহার করা হচ্ছে.

YYSETSTATE (গুলি)
ব্যবহারকারী শুধুমাত্র এই ম্যাক্রো সংজ্ঞায়িত করতে হবে যদি -f পতাকা নির্দিষ্ট ছিল। তার মধ্যে
ক্ষেত্রে, উত্পন্ন কোড "কল" YYSETSTATE কল করার ঠিক আগে YYFILL (ঢ). দ্য
প্যারামিটারে YYSETSTATE একটি স্বাক্ষরিত পূর্ণসংখ্যা যা স্বতন্ত্রভাবে নির্দিষ্টকে চিহ্নিত করে
উদাহরণস্বরুপ YYFILL (ঢ) যে সম্পর্কে বলা হবে. ব্যবহারকারী সংরক্ষণ করতে চান উচিত
স্ক্যানার অবস্থা এবং আছে YYFILL (ঢ) কলারের কাছে ফিরে যান, তাকে যা করতে হবে তা হল
একটি পরিবর্তনশীল যে অনন্য সনাক্তকারী সংরক্ষণ করুন. পরে স্ক্যান করা হলে ডাকা হয়
আবার, এটি কল করবে YYGETSTATE () এবং যেখানে এটি বন্ধ রেখেছিল ঠিক সেখানেই সম্পাদন পুনরায় শুরু করুন। দ্য
জেনারেটেড কোড উভয়ই থাকবে YYSETSTATE (গুলি) এবং YYGETSTATE যোদি ও YYFILL (ঢ)
অক্ষম করা হচ্ছে।

বাক্য গঠন


জন্য কোড re2c একটি সেট নিয়ে গঠিত বিধি, NAMED সংজ্ঞা এবং জায়গায় কনফিগারেশনের.

বিধি
নিয়মগুলি একটি নিয়মিত অভিব্যক্তি নিয়ে গঠিত (দেখুন নিয়মিত অভিব্যক্তি) এর একটি ব্লক সহ
C/C++ কোড যেটি কার্যকর করা হবে যখন সংশ্লিষ্ট রেগুলার এক্সপ্রেশন মিলে যায়। আপনি
হয় একটি খোলার কোঁকড়া বন্ধনী বা ক্রম সঙ্গে কোড শুরু করতে পারেন :=. যখন কোড
একটি কোঁকড়া বন্ধনী সঙ্গে তারপর re2c বন্ধনী গভীরতা গণনা করে এবং কোড খোঁজা বন্ধ করে দেয়
স্বয়ংক্রিয়ভাবে. অন্যথায় কোঁকড়া ধনুর্বন্ধনী অনুমোদিত নয় এবং re2c এ কোড খোঁজা বন্ধ করে দেয়
প্রথম লাইন যা হোয়াইটস্পেস দিয়ে শুরু হয় না। দুই বা ততোধিক নিয়ম ওভারল্যাপ হলে,
প্রথম নিয়ম পছন্দ করা হয়।
নিয়মিত অভিব্যক্তি { সি / সি ++ কোড }

নিয়মিত অভিব্যক্তি := সি / সি ++ কোড

একটি বিশেষ নিয়ম আছে: ডিফল্ট নিয়ম *
* { সি / সি ++ কোড }

* := সি / সি ++ কোড

নোট করুন যে ডিফল্ট নিয়ম * থেকে পৃথক [^]: ডিফল্ট নিয়মের সর্বনিম্ন অগ্রাধিকার আছে, ম্যাচ
যেকোন কোড ইউনিট (হয় বৈধ বা অবৈধ) এবং সর্বদা একটি অক্ষর ব্যবহার করে; যখন [^]
যেকোনো বৈধ কোড পয়েন্টের সাথে মেলে (কোড ইউনিট নয়) এবং একাধিক কোড ইউনিট ব্যবহার করতে পারে। আসলে,
যখন পরিবর্তনশীল-দৈর্ঘ্য এনকোডিং ব্যবহার করা হয়, * অবৈধ ইনপুট মেলানোর একমাত্র সম্ভাব্য উপায়
চরিত্র (দেখুন এনকোডিং বিস্তারিত জানার জন্য).

If -c সক্রিয় হলে প্রতিটি রেগুলার এক্সপ্রেশনের আগে কমা আলাদা করা একটি তালিকা থাকে
অবস্থার নাম। সাধারণ নামকরণের নিয়ম ছাড়াও দুটি বিশেষ ক্ষেত্রে রয়েছে: <*> (এই ধরনের নিয়ম
সব শর্তে একত্রিত করা হয়) এবং <> (এই ধরনের নিয়মের সাথে সম্পর্কিত নিয়মিত থাকতে পারে না
অভিব্যক্তি, এর কোড সমস্ত কর্মের সাথে একত্রিত হয়)। অ খালি নিয়ম আরো সুনির্দিষ্ট হতে পারে
নতুন শর্ত। এই ক্ষেত্রে re2c পরিবর্তন করার জন্য প্রয়োজনীয় কোড তৈরি করবে
স্বয়ংক্রিয়ভাবে অবস্থা। নিয়ম ব্যবহার করতে পারেন :=> স্বয়ংক্রিয়ভাবে কোড তৈরি করার শর্টকাট হিসাবে
যেটি শুধুমাত্র নতুন কন্ডিশন স্টেট সেট করে না বরং নতুনের সাথে এক্সিকিউশনও চালিয়ে যায়
অবস্থা. একটি শর্টকাট নিয়ম একটি লুপে ব্যবহার করা উচিত নয় যেখানে শুরুর মধ্যে কোড আছে
লুপ এবং re2c ব্লক যদি না re2c:cond:goto পরিবর্তিত হয় অবিরত. যদি কোড হয়
সমস্ত নিয়মের আগে প্রয়োজনীয় (যদিও সাধারণ জাম্প নয়) আপনি ব্যবহার করে ডোসো করতে পারেন
ছদ্ম-নিয়ম
নিয়মিত অভিব্যক্তি { সি / সি ++ কোড }

নিয়মিত অভিব্যক্তি := সি / সি ++ কোড

* { সি / সি ++ কোড }

* := সি / সি ++ কোড

নিয়মিত অভিব্যক্তি => শর্ত { সি / সি ++ কোড }

নিয়মিত অভিব্যক্তি => শর্ত := সি / সি ++ কোড

* => শর্ত { সি / সি ++ কোড }

* => শর্ত := সি / সি ++ কোড

নিয়মিত অভিব্যক্তি :=> শর্ত

<*> নিয়মিত অভিব্যক্তি { সি / সি ++ কোড }

<*> নিয়মিত অভিব্যক্তি := সি / সি ++ কোড

<*> * { সি / সি ++ কোড }

<*> * := সি / সি ++ কোড

<*> নিয়মিত অভিব্যক্তি => শর্ত { সি / সি ++ কোড }

<*> নিয়মিত অভিব্যক্তি => শর্ত := সি / সি ++ কোড

<*> * => শর্ত { সি / সি ++ কোড }

<*> * => শর্ত := সি / সি ++ কোড

<*> নিয়মিত অভিব্যক্তি :=> শর্ত

<> { সি / সি ++ কোড }

<> := সি / সি ++ কোড

<> => শর্ত { সি / সি ++ কোড }

<> => শর্ত := সি / সি ++ কোড

<> :=> শর্ত

<> :=> শর্ত

<! শর্ত-তালিকা> { সি / সি ++ কোড }

<! শর্ত-তালিকা> := সি / সি ++ কোড

{ সি / সি ++ কোড }

:= সি / সি ++ কোড

NAMED সংজ্ঞা
নামকৃত সংজ্ঞাগুলি হল:
নাম = নিয়মিত অভিব্যক্তি;

If -F সক্রিয়, তারপর নামযুক্ত সংজ্ঞাগুলিও ফর্মের:
নাম { নিয়মিত অভিব্যক্তি }

জায়গায় কনফিগারেশনের
re2c: condprefix = yyc;
শর্ত লেবেলের জন্য ব্যবহৃত উপসর্গ নির্দিষ্ট করার অনুমতি দেয়। এটাই এই লেখা
জেনারেটেড আউটপুট ফাইলের যেকোনো কন্ডিশন লেবেলে প্রিপেন্ড করা হয়।

re2c: condenumprefix = yyc;
শর্ত মানগুলির জন্য ব্যবহৃত উপসর্গ নির্দিষ্ট করার অনুমতি দেয়। এটাই এই লেখা
উত্পন্ন আউটপুট ফাইলের যেকোনো শর্তে enum মান পূর্বে প্রিপেন্ড করা হয়।

re2c:cond:ভাজক = /* *********************************** */ ;
কন্ডিশন ব্লকের জন্য ডিভাইডার কাস্টমাইজ করার অনুমতি দেয়। তুমি ব্যবহার করতে পার @@ রাখা
শর্তের নাম বা ব্যবহার করে স্থানধারক কাস্টমাইজ করুন re2c:cond:divider@cond.

re2c:cond:divider@cond = @@;
যে স্থানধারকটি শর্তের নামের সাথে প্রতিস্থাপিত হবে তা নির্দিষ্ট করে৷
re2c:cond:ভাজক.

re2c:cond:goto = এতে যান @@; ;
এর সাথে ব্যবহৃত কন্ডিশন গোটো স্টেটমেন্ট কাস্টমাইজ করার অনুমতি দেয় :=> শৈলী নিয়ম।
তুমি ব্যবহার করতে পার @@ শর্তের নাম রাখতে বা ব্যবহার করে স্থানধারককে স্বস্তমাইজ করতে
re2c:cond:goto@cond. এছাড়াও আপনি এটি পরিবর্তন করতে পারেন চালিয়ে যাওয়া;, যা আপনাকে অনুমতি দেবে
লুপ স্টার্ট এবং re2c-এর মধ্যে যেকোন কোড সহ পরবর্তী লুপ চক্র চালিয়ে যেতে
ব্লক।

re2c:cond:goto@cond = @@;
কন্ডিশন লেবেল দিয়ে প্রতিস্থাপিত করা হবে এমন স্থানধারককে নির্দিষ্ট করে
re2c:cond:goto.

re2c:ইন্ডেন্ট:টপ = 0;
ব্যবহার করার জন্য ইন্ডেন্টেশনের ন্যূনতম সংখ্যা নির্দিষ্ট করে। একটি সংখ্যাসূচক মান প্রয়োজন
শূন্যের চেয়ে বড় বা সমান।

re2c:ইন্ডেন্ট:স্ট্রিং = \t ;
ইন্ডেন্টেশনের জন্য ব্যবহার করার জন্য স্ট্রিং নির্দিষ্ট করে। ধারণ করা উচিত একটি স্ট্রিং প্রয়োজন
শুধুমাত্র হোয়াইটস্পেস, যদি না আপনি বাহ্যিক সরঞ্জামগুলির জন্য এটির প্রয়োজন হয়। উল্লেখ করার সবচেয়ে সহজ উপায়
শূন্যস্থান হল সেগুলিকে একক বা দ্বিগুণ উদ্ধৃতিতে অন্তর্ভুক্ত করা। আপনি যদি কোন চান না
ইন্ডেন্টেশন মোটেও আপনি এটিকে "" এ সেট করতে পারেন।

re2c:yych:রূপান্তর = 0;
যখন এই সেটিং অ শূন্য, তারপর re2c স্বয়ংক্রিয়ভাবে রূপান্তর কোড তৈরি করে
যখনই yych পড়া হয়. এই ক্ষেত্রে টাইপ ব্যবহার করে সংজ্ঞায়িত করা আবশ্যক
re2c:define:YYCTYPE.

re2c:yych:emit = 1;
প্রজন্মের yych এটি 0 এ সেট করে দমন করা যেতে পারে।

re2c:yybm:হেক্স = 0;
যদি শূন্যতে সেট করা হয় তবে একটি দশমিক টেবিল ব্যবহার করা হচ্ছে অন্যথায় একটি হেক্সাডেসিমেল টেবিল হবে
উত্পন্ন

re2c:yyfill: সক্ষম করুন = 1;
এর প্রজন্মকে দমন করতে এটিকে শূন্যে সেট করুন YYFILL (ঢ). এটি ব্যবহার করার সময় নিশ্চিত হন
যাচাই করুন যে উত্পন্ন স্ক্যানার ইনপুটের পিছনে পড়ে না। এই অনুমতি
আচরণ আপনার প্রোগ্রামগুলিতে গুরুতর নিরাপত্তা সমস্যা প্রবর্তন করতে পারে।

re2c:yyfill:চেক = 1;
এটি ব্যবহার করে পূর্ব শর্তের আউটপুট দমন করতে 0 সেট করা যেতে পারে YYCURSOR এবং
YYLIMIT যা কাজে লাগে যখন YYLIMIT + YYMAXFILL সর্বদা অ্যাক্সেসযোগ্য।

re2c:define:YYFILL = YYFILL ;
জন্য প্রতিস্থাপন YYFILL. নোট করুন যে ডিফল্টরূপে re2c ধনুর্বন্ধনীতে আর্গুমেন্ট তৈরি করে এবং
সেমিকোলন পরে YYFILL। আপনার যদি প্রয়োজন হয় YYFILL বরং একটি স্বেচ্ছাচারী বিবৃতি
একটি কল চেয়ে, সেট re2c:define:YYFILL:নগ্ন অ-শূন্য এবং ব্যবহার
re2c:define:YYFILL@len এর ভিতরে আনুষ্ঠানিক প্যারামিটার বোঝাতে YYFILL শরীর.

re2c:define:YYFILL@len = @@ ;
ভিতরে এই টেক্সট কোনো ঘটনা YYFILL প্রকৃত সঙ্গে প্রতিস্থাপিত করা হবে
যুক্তি.

re2c:yyfill: প্যারামিটার = 1;
পরে ধনুর্বন্ধনীতে আর্গুমেন্ট নিয়ন্ত্রণ করে YYFILL. শূন্য হলে, অ্যাগ্রুমেন্ট বাদ দেওয়া হয়। যদি
নন-জিরো, আর্গুমেন্ট তৈরি হয় যদি না re2c:define:YYFILL:নগ্ন অ-শূন্য সেট করা হয়.

re2c:define:YYFILL:নগ্ন = 0;
ধনুর্বন্ধনী এবং সেমিকোলনের পরে আর্গুমেন্ট নিয়ন্ত্রণ করে YYFILL. যদি শূন্য হয়, উভয় অ্যাগ্রুমেন্ট এবং
সেমিকোলন বাদ দেওয়া হয়। যদি শূন্য না হয়, তবে আর্গুমেন্ট তৈরি হয় যদি না
re2c:yyfill: প্যারামিটার শূন্য সেট করা হয় এবং সেমিকোলন নিঃশর্তভাবে তৈরি হয়।

re2c: স্টার্টলেবেল = 0;
যদি একটি শূন্য পূর্ণসংখ্যাতে সেট করা হয় তবে পরবর্তী স্ক্যানার ব্লকগুলির স্টার্ট লেবেল হবে
স্ক্যানার নিজেই ব্যবহার না করলেও তৈরি হবে। অন্যথায় স্বাভাবিক yy0 মত
প্রয়োজন হলেই স্টার্ট লেবেল তৈরি করা হচ্ছে। একটি টেক্সট মান সেট করা হলে একটি লেবেল
সাধারণ স্টার্ট লেবেল যাই হোক না কেন সেই টেক্সট দিয়ে তৈরি করা হবে
ব্যবহার করা হচ্ছে বা না করা হচ্ছে। একটি স্টার্ট লেবেল হওয়ার পরে এই সেটিংটি 0 এ রিসেট করা হচ্ছে৷
উত্পন্ন

re2c:লেবেল উপসর্গ = yy ;
সংখ্যাযুক্ত লেবেলগুলির উপসর্গ পরিবর্তন করার অনুমতি দেয়৷ ডিফল্ট হয় yy এবং হতে পারে
যে কোনো স্ট্রিং সেট করুন যা একটি বৈধ লেবেল।

re2c:state: abort = 0;
যখন শূন্য না এবং সুইচ -f সক্রিয় তারপর YYGETSTATE ব্লক থাকবে a
ডিফল্ট কেস যা বাতিল করে এবং একটি -1 কেস আরম্ভ করার জন্য ব্যবহৃত হয়।

re2c:state:nextlabel = 0;
যখন ব্যবহার করা হয় -f নিয়ন্ত্রণ করতে সক্রিয় আছে কিনা YYGETSTATE ব্লকের পরে একটি
yyপরবর্তী: লেবেল লাইন। ব্যবহার করার পরিবর্তে yyপরবর্তী আপনি সাধারণত কনফিগারেশন ব্যবহার করতে পারেন
স্টার্টলেবেল একটি নির্দিষ্ট স্টার্ট লেবেল বা ডিফল্ট জোর করতে yy0 স্টার্ট লেবেল হিসাবে।
একটি ডেডিকেটেড লেবেল ব্যবহার করার পরিবর্তে এটি প্রায়ই আলাদা করা ভাল YYGETSTATE
একটি স্থাপন করে প্রকৃত স্ক্যানার কোড থেকে কোড /*!getstate:re2c*/ মন্তব্য।

re2c:cgoto:থ্রেশহোল্ড = 9;
কখন -g সক্রিয় এই মানটি জটিলতা থ্রেশহোল্ড নির্দিষ্ট করে যা ট্রিগার করে
নেস্টেড যদি এবং ডিসিশন বিটফিল্ড ব্যবহার না করে জাম্প টেবিলের প্রজন্ম। দ্য
থ্রেশহোল্ডের তুলনা করা হয় একটি গণনাকৃত অনুমানের সাথে যেখানে প্রত্যেকটি যদি প্রয়োজন হয়
ব্যবহৃত বিটম্যাপ থ্রেশহোল্ডকে 2 দ্বারা ভাগ করে।

re2c:yych:রূপান্তর = 0;
যখন ইনপুট স্বাক্ষরিত অক্ষর ব্যবহার করে এবং -s or -b সুইচ কার্যকর হয় re2c
একজনকে স্বয়ংক্রিয়ভাবে স্বাক্ষরবিহীন অক্ষর প্রকারে রূপান্তর করার অনুমতি দেয় যা তখন হয়
এর অভ্যন্তরীণ একক চরিত্রের জন্য প্রয়োজনীয়। যখন এই সেটিংটি শূন্য বা খালি থাকে
স্ট্রিং রূপান্তর নিষ্ক্রিয় করা হয়. একটি শূন্য নম্বর ব্যবহার করে রূপান্তর নেওয়া হয়
থেকে YYCTYPE. যে একটি ইনপ্লেস কনফিগারেশন দ্বারা দেওয়া হয় যে মান হচ্ছে
ব্যবহৃত নইলে হবে (YYCTYPE) এবং সেই কনফিগারেশনের পরিবর্তনগুলি নেই
আর সম্ভব। যখন এই সেটিংটি একটি স্ট্রিং হয় তখন ধনুর্বন্ধনী নির্দিষ্ট করা আবশ্যক। এখন
আপনার ইনপুট অনুমান একটি গৃহস্থালির কাজ * বাফার এবং আপনি উপরে উল্লিখিত সুইচ ব্যবহার করছেন
আপনি সেট করতে পারেন YYCTYPE থেকে অস্বাক্ষরিত গৃহস্থালির কাজ এবং এই সেটিংটি হয় 1 বা (স্বাক্ষরবিহীন
চর).

re2c:define:YYCONDTYPE = YYCONDTYPE ;
সাথে শর্ত সমর্থনের জন্য ব্যবহৃত গণনা -c মোড.

re2c:define:YYCTXMARKER = YYCTXMARKER ;
একজনকে সংজ্ঞায়িত ওভাররাইট করার অনুমতি দেয় YYCTXMARKER এবং এইভাবে সেট করে এটি এড়ানো
প্রয়োজনীয় প্রকৃত কোডের মান।

re2c:define:YYCTYPE = YYCTYPE ;
একজনকে সংজ্ঞায়িত ওভাররাইট করার অনুমতি দেয় YYCTYPE এবং এইভাবে সেট করে এটি এড়ানো
প্রয়োজনীয় প্রকৃত কোডের মান।

re2c:define:YYCURSOR = YYCURSOR ;
একজনকে সংজ্ঞায়িত ওভাররাইট করার অনুমতি দেয় YYCURSOR এবং এইভাবে সেট করে এটি এড়ানো
প্রয়োজনীয় প্রকৃত কোডের মান।

re2c:define:YYDEBUG = YYDEBUG ;
একজনকে সংজ্ঞায়িত ওভাররাইট করার অনুমতি দেয় YYDEBUG এবং এইভাবে সেট করে এটি এড়ানো
প্রয়োজনীয় প্রকৃত কোডের মান।

re2c:define:YYGETCONDITION = YYGET শর্ত ;
জন্য প্রতিস্থাপন YYGET শর্ত. নোট করুন যে ডিফল্টরূপে re2c পরে ধনুর্বন্ধনী তৈরি করে
YYGET শর্ত। সেট re2c:define:YYGETCONDITION:নগ্ন বন্ধনী বাদ দিতে অ-শূন্য থেকে

re2c:define:YYGETCONDITION:নগ্ন = 0;
পরে ধনুর্বন্ধনী নিয়ন্ত্রণ করে YYGET শর্ত. শূন্য হলে, বন্ধনী বাদ দেওয়া হয়। যদি শূন্য না হয়,
ধনুর্বন্ধনী তৈরি হয়।

re2c:define:YYSETCONDITION = ওয়াইসেট কন্ডিশন ;
জন্য প্রতিস্থাপন ওয়াইসেট কন্ডিশন. নোট করুন যে ডিফল্টরূপে re2c মধ্যে যুক্তি তৈরি করে
ধনুর্বন্ধনী এবং সেমিকোলন পরে ওয়াইসেট কন্ডিশন। আপনার যদি প্রয়োজন হয় ওয়াইসেট কন্ডিশন an
নির্বিচারে বিবৃতি বরং একটি কল, সেট re2c:define:YYSETCONDITION:নগ্ন থেকে
অ-শূন্য এবং ব্যবহার re2c:define:YYSETCONDITION@cond ভিতরে আনুষ্ঠানিক প্যারামিটার বোঝাতে
of ওয়াইসেট কন্ডিশন শরীর.

re2c:define:YYSETCONDITION@cond = @@ ;
ভিতরে এই টেক্সট কোনো ঘটনা ওয়াইসেট কন্ডিশন সঙ্গে প্রতিস্থাপিত হবে
প্রকৃত যুক্তি।

re2c:define:YYSETCONDITION:নগ্ন = 0;
ধনুর্বন্ধনী এবং সেমিকোলনের পরে আর্গুমেন্ট নিয়ন্ত্রণ করে ওয়াইসেট কন্ডিশন. শূন্য হলে উভয়ই
এগ্রুমেন্ট এবং সেমিকোলন বাদ দেওয়া হয়। অ-শূন্য হলে, আর্গুমেন্ট এবং সেমিকোলন উভয়ই হয়
উত্পন্ন

re2c:define:YYGETSTATE = YYGETSTATE ;
জন্য প্রতিস্থাপন YYGETSTATE. নোট করুন যে ডিফল্টরূপে re2c পরে ধনুর্বন্ধনী তৈরি করে
YYGETSTATE। সেট re2c:define:YYGETSTATE:নগ্ন বন্ধনী বাদ দিতে অ-শূন্য থেকে

re2c:define:YYGETSTATE:নগ্ন = 0;
পরে ধনুর্বন্ধনী নিয়ন্ত্রণ করে YYGETSTATE. শূন্য হলে, বন্ধনী বাদ দেওয়া হয়। অ-শূন্য হলে, ধনুর্বন্ধনী
উৎপন্ন হয়

re2c:define:YYSETSTATE = YYSETSTATE ;
জন্য প্রতিস্থাপন YYSETSTATE. নোট করুন যে ডিফল্টরূপে re2c ধনুর্বন্ধনীতে যুক্তি তৈরি করে
এবং সেমিকোলন পরে YYSETSTATE। আপনার যদি প্রয়োজন হয় YYSETSTATE একটি স্বেচ্ছাচারী
বিবৃতি বরং একটি কল, সেট re2c:define:YYSETSTATE:নগ্ন অ-শূন্য এবং ব্যবহার
re2c:define:YYSETSTATE@cond এর ভিতরে আনুষ্ঠানিক প্যারামিটার বোঝাতে YYSETSTATE শরীর.

re2c:define:YYSETSTATE@state = @@ ;
ভিতরে এই টেক্সট কোনো ঘটনা YYSETSTATE প্রকৃত সঙ্গে প্রতিস্থাপিত করা হবে
যুক্তি.

re2c:define:YYSETSTATE:নগ্ন = 0;
ধনুর্বন্ধনী এবং সেমিকোলনের পরে আর্গুমেন্ট নিয়ন্ত্রণ করে YYSETSTATE. যদি শূন্য হয়, উভয় আগ্রুমেন্ট
এবং সেমিকোলন বাদ দেওয়া হয়। অ-শূন্য হলে, আর্গুমেন্ট এবং সেমিকোলন উভয়ই তৈরি হয়।

re2c:define:YYLIMIT = YYLIMIT ;
একজনকে সংজ্ঞায়িত ওভাররাইট করার অনুমতি দেয় YYLIMIT এবং এইভাবে সেট করে এটি এড়ানো
প্রয়োজনীয় প্রকৃত কোডের মান।

re2c:define:YYMARKER = YYMARKER ;
একজনকে সংজ্ঞায়িত ওভাররাইট করার অনুমতি দেয় YYMARKER এবং এইভাবে সেট করে এটি এড়ানো
প্রয়োজনীয় প্রকৃত কোডের মান।

re2c:label:yyFillLabel = yyFillLabel ;
একজনকে লেবেলের নাম ওভাররাইট করার অনুমতি দেয় yyFillLabel.

re2c:label:yyNext = yyপরবর্তী ;
একজনকে লেবেলের নাম ওভাররাইট করার অনুমতি দেয় yyপরবর্তী.

re2c:variable:yyaccept = yyaccept;
একজনকে ভেরিয়েবলের নাম ওভাররাইট করার অনুমতি দেয় yyaccept.

re2c:variable:yybm = yybm ;
একজনকে ভেরিয়েবলের নাম ওভাররাইট করার অনুমতি দেয় yybm.

re2c:variable:yych = yych ;
একজনকে ভেরিয়েবলের নাম ওভাররাইট করার অনুমতি দেয় yych.

re2c:variable:yyctable = yyctable ;
যখন উভয় -c এবং -g তখন সক্রিয় re2c একটি স্ট্যাটিক তৈরি করতে এই ভেরিয়েবল ব্যবহার করে
জন্য লাফ টেবিল YYGET শর্ত.

re2c:variable:ystable = ystable ;
অবচয়।

re2c:variable:yytarget = yytarget ;
একজনকে ভেরিয়েবলের নাম ওভাররাইট করার অনুমতি দেয় yytarget.

নিয়মিত অভিব্যক্তি
"ফু" আক্ষরিক স্ট্রিং "ফু". ANSI-C এস্কেপ সিকোয়েন্স ব্যবহার করা যেতে পারে।

'ফু' আক্ষরিক স্ট্রিং "ফু" (অক্ষর [a-zA-Z] কেস-অসংবেদনশীল আচরণ করা হয়েছে)। ANSI-C পালানো
ক্রম ব্যবহার করা যেতে পারে।

[xyz] চরিত্রের শ্রেণী; এই ক্ষেত্রে, রেগুলার এক্সপ্রেশন হয় মেলে x, y, বা z.

[abj-oZ]
এটি একটি পরিসীমা সহ অক্ষর শ্রেণী; মেলে a, b, থেকে কোন চিঠি j দ্বারা o or Z.

[^শ্রেণী]
উল্টানো অক্ষর শ্রেণী।

r \ s যে কোনো মেলে r যা নয় s. r এবং s নিয়মিত অভিব্যক্তি হতে হবে যা হতে পারে
চরিত্রের শ্রেণী হিসাবে প্রকাশ করা হয়।

r* শূন্য বা তার বেশি ঘটনা r.

r+ এক বা একাধিক ঘটনা r.

r? ঐচ্ছিক r.

(R) r; অগ্রাধিকার ওভাররাইড করতে বন্ধনী ব্যবহার করা হয়।

r s r দ্বারা অনুসরণ s (সংযুক্তি)।

r | s পারেন r or s (বিকল্প)।

r / s r কিন্তু শুধুমাত্র যদি এটি অনুসরণ করা হয় s। মনে রাখবেন যে s মিলিত পাঠ্যের অংশ নয়।
এই ধরনের রেগুলার এক্সপ্রেশনকে "ট্রেলিং কনটেক্সট" বলা হয়। অনুগত প্রসঙ্গ পারে
শুধুমাত্র একটি নিয়মের শেষ হতে হবে এবং একটি নামকৃত সংজ্ঞার অংশ নয়।

r{n} ম্যাচ r ঠিক n বার।

r{n,} ম্যাচ r অন্তত n বার।

r{n,m} ম্যাচ r অন্তত n বার, কিন্তু এর বেশি নয় m বার।

. নিউলাইন ছাড়া যেকোনো অক্ষর মেলে।

নাম এর দ্বারা নির্দিষ্ট করা সংজ্ঞার সাথে মিলে যায় নাম শুধু যদি -F বন্ধ. যদি -F সক্রিয়
তারপর এটি এমন আচরণ করে যেন এটি ডবল কোটে আবদ্ধ ছিল এবং স্ট্রিংয়ের সাথে মেলে
"নাম"।

ক্যারেক্টার ক্লাস এবং স্ট্রিং লিটারেলে অক্টাল বা হেক্সাডেসিমেল ক্যারেক্টার থাকতে পারে
সংজ্ঞা এবং পালানোর ক্রমগুলির নিম্নলিখিত সেট: \a, \b, \f, \n, \r, \t, \v, \\। একটি
অক্টাল অক্ষর একটি ব্যাকস্ল্যাশ দ্বারা সংজ্ঞায়িত করা হয় এবং এর তিনটি অক্টাল সংখ্যা (যেমন \ 377).
0 থেকে 0xFF পর্যন্ত হেক্সাডেসিমেল অক্ষরগুলি ব্যাকস্ল্যাশ দ্বারা সংজ্ঞায়িত করা হয়, একটি ছোট হাতের x এবং দুই
হেক্সাডেসিমেল সংখ্যা (যেমন \x12) 0x100 থেকে 0xFFFF পর্যন্ত হেক্সাডেসিমেল অক্ষর দ্বারা সংজ্ঞায়িত করা হয়
ব্যাকস্ল্যাশ, একটি ছোট হাতের \u বা একটি বড় কেসড \X এবং চারটি হেক্সাডেসিমেল সংখ্যা (যেমন
\u1234) 0x10000 থেকে 0xFFFFffff পর্যন্ত হেক্সাডেসিমেল অক্ষরগুলি ব্যাকস্ল্যাশ দ্বারা সংজ্ঞায়িত করা হয়, একটি
বড় হাতের \U এবং আট হেক্সাডেসিমেল সংখ্যা (যেমন \U12345678).

একমাত্র পোর্টেবল "যেকোন" নিয়ম হল ডিফল্ট নিয়ম *.

স্ক্যানার সঙ্গে সঞ্চয়যোগ্য রাজ্য


যখন -f পতাকা নির্দিষ্ট করা হয়েছে, re2c একটি স্ক্যানার তৈরি করে যা তার বর্তমান অবস্থা সংরক্ষণ করতে পারে,
কলারে ফিরে যান, এবং পরে ঠিক যেখান থেকে ক্রিয়াকলাপ বন্ধ রেখেছিলেন তা আবার শুরু করুন।

এর ডিফল্ট অপারেশন re2c একটি "টান" মডেল, যেখানে স্ক্যানার অতিরিক্ত ইনপুট চায়
যখনই এটি প্রয়োজন। যাইহোক, অপারেশন এই মোড অনুমান যে স্ক্যানার হয়
পার্সিং লুপের "মালিক" এবং এটি সবসময় সুবিধাজনক নাও হতে পারে।

সাধারণত, যদি স্ট্রিমে স্ক্যানারের আগে বা তার জন্য একটি প্রিপ্রসেসর থাকে
ডেটার অন্য কোনও পদ্ধতিগত উত্সের ব্যাপার, স্ক্যানার আরও ডেটার জন্য "জিজ্ঞাসা" করতে পারে না যদি না
স্ক্যানার এবং উত্স উভয়ই একটি পৃথক থ্রেডে থাকে।

সার্জারির -f পতাকা শুধুমাত্র এই পরিস্থিতির জন্য দরকারী: এটি ব্যবহারকারীদের স্ক্যানার ডিজাইন করতে দেয় যা কাজ করে
একটি "পুশ" মডেল, অর্থাৎ যেখানে স্ক্যানার খণ্ডে খণ্ডে ডেটা দেওয়া হয়। যখন স্ক্যানার
ব্যবহার করার জন্য ডেটা শেষ হয়ে যায়, এটি কেবল তার অবস্থা সঞ্চয় করে এবং কলারের কাছে ফিরে আসে। যখন আরো
ইনপুট ডেটা স্ক্যানারে খাওয়ানো হয়, এটি ঠিক যেখান থেকে ছেড়ে গিয়েছিল সেখানেই এটি পুনরায় কাজ শুরু করে।

"টান" মডেলের তুলনায় পরিবর্তন প্রয়োজন:

· ব্যবহারকারীকে ম্যাক্রো সরবরাহ করতে হবে YYSETSTATE () এবং YYGETSTATE (অবস্থা).

· দ্য -f বিকল্পের ঘোষণাকে বাধা দেয় yych এবং yyaccept. তাই ব্যবহারকারীকে ঘোষণা করতে হবে
এইগুলো. এছাড়াও ব্যবহারকারীকে এইগুলি সংরক্ষণ এবং পুনরুদ্ধার করতে হবে। উদাহরণে
উদাহরণ/push_model/push.re এগুলিকে (C++) শ্রেণির ক্ষেত্র হিসাবে ঘোষণা করা হয় যার মধ্যে
স্ক্যানার একটি পদ্ধতি, তাই তাদের স্পষ্টভাবে সংরক্ষণ/পুনরুদ্ধার করার প্রয়োজন নেই। সি জন্য তারা
যেমন ম্যাক্রো তৈরি করা যেতে পারে যা প্যারামিটার হিসাবে পাস করা কাঠামো থেকে ক্ষেত্রগুলি নির্বাচন করে।
বিকল্পভাবে, তাদের স্থানীয় ভেরিয়েবল হিসাবে ঘোষণা করা যেতে পারে, এর সাথে সংরক্ষিত YYFILL (ঢ) যখন এটা
ফিরে আসার সিদ্ধান্ত নেয় এবং ফাংশনে প্রবেশের সময় পুনরুদ্ধার করে। এছাড়াও, এটা আরো হতে পারে
থেকে রাষ্ট্রকে বাঁচাতে দক্ষ YYFILL (ঢ) কারণ YYSETSTATE (অবস্থা) বলা হয়
শর্তহীনভাবে YYFILL (ঢ) তবে পায় না অবস্থা পরামিতি হিসাবে, তাই আমরা হবে
দ্বারা একটি স্থানীয় পরিবর্তনশীল মধ্যে রাষ্ট্র সংরক্ষণ করুন YYSETSTATE (অবস্থা).

· সংশোধন করুন YYFILL (ঢ) আরো ইনপুট প্রয়োজন হলে (ফাংশন কলিং থেকে) ফিরে আসতে।

· আরো ইনপুট প্রয়োজন হলে চিনতে এবং যথাযথভাবে প্রতিক্রিয়া জানাতে কলার পরিবর্তন করুন।

· জেনারেট করা কোডটিতে একটি সুইচ ব্লক থাকবে যা শেষ অবস্থা পুনরুদ্ধার করতে ব্যবহৃত হয়
কর্সপোডিং এর পিছনে ঝাঁপ দিয়ে YYFILL (ঢ) কল এই কোড স্বয়ংক্রিয়ভাবে তৈরি হয়
প্রথম এপিলগে /*!re2c */ ব্লক এটা প্রজন্মের ট্রিগার করা সম্ভব
YYGETSTATE () একটি স্থাপন দ্বারা আগে ব্লক /*!getstate:re2c*/ মন্তব্য এই বিশেষ করে
দরকারী যখন স্ক্যানার কোড একটি লুপের ভিতরে আবৃত করা উচিত।

দয়া করে দেখুন উদাহরণ/push_model/push.re "ধাক্কা" মডেল স্ক্যানারের জন্য। জেনারেটেড কোড হতে পারে
ইনপ্লেস কনফিগারেশন ব্যবহার করে tweaked রাষ্ট্র: গর্ভপাত এবং রাষ্ট্র: নেক্সটলেবেল.

স্ক্যানার সঙ্গে শর্ত সাপোর্ট


ব্যবহার করার সময় আপনি শর্তের নামের তালিকা সহ রেগুলার এক্সপ্রেশনের আগে করতে পারেন -c
সুইচ এক্ষেত্রে re2c প্রতিটি শর্তের জন্য স্ক্যানার ব্লক তৈরি করে। যেখানে প্রতিটি
উত্পন্ন ব্লকের নিজস্ব পূর্বশর্ত আছে। পূর্বশর্ত ইন্টারফেস দ্বারা দেওয়া হয়
নির্ধারণ করা YYGETCONDITON() এবং টাইপের হতে হবে YYCONDTYPE.

দুটি বিশেষ নিয়মের ধরন আছে। প্রথমত, শর্তের নিয়ম <*> সব একত্রিত করা হয়
শর্তাবলী (উল্লেখ্য যে তাদের সেই শর্তের অন্যান্য নিয়মের তুলনায় কম অগ্রাধিকার রয়েছে)। এবং
দ্বিতীয় খালি অবস্থার তালিকা একজনকে একটি কোড ব্লক প্রদান করতে দেয় যার একটি নেই
স্ক্যানার অংশ। মানে এটা কোন রেগুলার এক্সপ্রেশনের অনুমতি দেয় না। শর্ত মান
এই বিশেষ ব্লকটি উল্লেখ করা সর্বদা গণনার মান 0 সহ এক। এইভাবে
এই বিশেষ নিয়মের কোড একটি স্ক্যানার শুরু করতে ব্যবহার করা যেতে পারে। এটা কোন ভাবেই নয়
এই নিয়মগুলি থাকা প্রয়োজন: তবে কখনও কখনও এটি একটি উত্সর্গীকৃত থাকা সহায়ক
অপ্রবর্তিত অবস্থা রাষ্ট্র.

অ-খালি নিয়ম একজনকে নতুন শর্ত নির্দিষ্ট করার অনুমতি দেয়, যা তাদের রূপান্তর বিধি তৈরি করে।
সংজ্ঞায়িত করার জন্য কল জেনারেট করা ছাড়াও YYSETCONDTITION অন্য কোন বিশেষ কোড নেই
উত্পন্ন

অন্য ধরণের বিশেষ নিয়ম রয়েছে যা একজনকে যেকোন কোড ব্লকে কোড প্রিপেন্ড করতে দেয়
শর্তের একটি নির্দিষ্ট সেটের সমস্ত নিয়ম বা সমস্ত নিয়মের সমস্ত কোড ব্লকের জন্য। এটা হতে পারে
সহায়ক যখন কিছু অপারেশন নিয়মের মধ্যে সাধারণ। উদাহরণস্বরূপ এটি সংরক্ষণ করতে ব্যবহার করা যেতে পারে
স্ক্যান করা স্ট্রিং এর দৈর্ঘ্য। এই বিশেষ সেটআপ নিয়মগুলি একটি বিস্ময় চিহ্ন দিয়ে শুরু হয়
হয় শর্তের একটি তালিকা অনুসরণ করে <! অবস্থা, ... > বা একটি তারকা । কখন re2c
একটি নিয়মের জন্য কোড তৈরি করে যার রাজ্যে একটি সেটআপ নিয়ম এবং একটি star'd সেটআপ নেই
নিয়ম বর্তমান, তার চেয়ে কোড সেটআপ কোড হিসাবে ব্যবহার করা হবে।

এনকোডিং


re2c নিম্নলিখিত এনকোডিং সমর্থন করে: ASCII (ডিফল্ট), EBCDIC (-e), UCS-2 (-w), UTF-16
(-x, UTF-32 (-u) এবং UTF-8 (-8) ইনপ্লেস কনফিগারেশনও দেখুন re2c: পতাকা.

এনকোডিং সম্পর্কে কথা বলার সময় নিম্নলিখিত ধারণাগুলি স্পষ্ট করা উচিত। কোড পয়েন্ট একটি
বিমূর্ত সংখ্যা, যা একক এনকোডিং প্রতীক প্রতিনিধিত্ব করে। কোড ইউনিট সবচেয়ে ছোট ইউনিট
মেমরির, যা এনকোড করা পাঠ্যে ব্যবহৃত হয় (এটি ইনপুটের একটি অক্ষরের সাথে মিলে যায়
প্রবাহ)। একটি একক কোড পয়েন্ট প্রতিনিধিত্ব করার জন্য এক বা একাধিক কোড ইউনিটের প্রয়োজন হতে পারে, নির্ভর করে
এনকোডিং এর উপর। স্থির-দৈর্ঘ্যের এনকোডিং-এ, প্রতিটি কোড পয়েন্ট সমানভাবে উপস্থাপিত হয়
কোড ইউনিট সংখ্যা। পরিবর্তনশীল-দৈর্ঘ্য এনকোডিং-এ, বিভিন্ন কোড পয়েন্ট হতে পারে
বিভিন্ন সংখ্যক কোড ইউনিট দিয়ে উপস্থাপিত।

হওয়া ASCII একটি নির্দিষ্ট দৈর্ঘ্যের এনকোডিং। এর কোড স্পেসে 0 থেকে 100x0 কোড পয়েন্ট রয়েছে
0xFF। একটি কোড পয়েন্ট ঠিক একটি 1-বাইট কোড ইউনিট দিয়ে প্রতিনিধিত্ব করা হয়, যার আছে
কোড পয়েন্ট হিসাবে একই মান। আকার YYCTYPE 1 বাইট হতে হবে।

ইবিসিডিআইসি একটি নির্দিষ্ট দৈর্ঘ্যের এনকোডিং। এর কোড স্পেসে 0 থেকে 100x0 কোড পয়েন্ট রয়েছে
0xFF। একটি কোড পয়েন্ট ঠিক একটি 1-বাইট কোড ইউনিট দিয়ে প্রতিনিধিত্ব করা হয়, যার আছে
কোড পয়েন্ট হিসাবে একই মান। আকার YYCTYPE 1 বাইট হতে হবে।

UCS-2 একটি নির্দিষ্ট দৈর্ঘ্যের এনকোডিং। এর কোড স্পেসে 0 থেকে 10000x0 কোড পয়েন্ট রয়েছে
0xFFFF. একটি কোড পয়েন্ট ঠিক একটি 2-বাইট কোড ইউনিট দিয়ে প্রতিনিধিত্ব করা হয়, যা আছে
কোড পয়েন্ট হিসাবে একই মান। আকার YYCTYPE 2 বাইট হতে হবে।

হল UTF-16 একটি পরিবর্তনশীল-দৈর্ঘ্য এনকোডিং। এর কোড স্পেসে সমস্ত ইউনিকোড কোড পয়েন্ট রয়েছে,
0 থেকে 0xD7FF এবং 0xE000 থেকে 0x10FFFF পর্যন্ত। একটি কোড পয়েন্ট সঙ্গে প্রতিনিধিত্ব করা হয়
এক বা দুটি 2-বাইট কোড ইউনিট। আকার YYCTYPE 2 বাইট হতে হবে।

হল UTF-32 একটি নির্দিষ্ট দৈর্ঘ্যের এনকোডিং। এর কোড স্পেসে 0 থেকে সমস্ত ইউনিকোড কোড পয়েন্ট রয়েছে
0xD7FF এবং 0xE000 থেকে 0x10FFFF পর্যন্ত। একটি কোড পয়েন্ট ঠিক সঙ্গে প্রতিনিধিত্ব করা হয়
একটি 4-বাইট কোড ইউনিট। আকার YYCTYPE 4 বাইট হতে হবে।

হল UTF-8 একটি পরিবর্তনশীল-দৈর্ঘ্য এনকোডিং। এর কোড স্পেসে সমস্ত ইউনিকোড কোড পয়েন্ট রয়েছে,
0 থেকে 0xD7FF এবং 0xE000 থেকে 0x10FFFF পর্যন্ত। একটি কোড পয়েন্ট সঙ্গে প্রতিনিধিত্ব করা হয়
এক, দুই, তিন বা চারটি 1-বাইট কোড ইউনিটের ক্রম। আকার YYCTYPE 1 হতে হবে
বাইট

ইউনিকোডে, 0xD800 থেকে 0xDFFF (সারোগেটস) রেঞ্জের মানগুলি বৈধ ইউনিকোড কোড নয়
পয়েন্ট, কোড ইউনিটের যেকোন এনকোড করা ক্রম, যা ইউনিকোড কোড পয়েন্টে ম্যাপ করবে
পরিসীমা 0xD800-0xDFFF, খারাপ-গঠিত। ব্যবহারকারী কিভাবে নিয়ন্ত্রণ করতে পারেন re2c যেমন অসুস্থ আচরণ করে
সঙ্গে ক্রম --এনকোডিং-নীতি পতাকা (দেখুন বিকল্প সম্পূর্ণ ব্যাখ্যার জন্য)।

কিছু এনকোডিংয়ের জন্য, কোড ইউনিট রয়েছে, যেগুলি কখনই বৈধ এনকোড করা স্ট্রীমে ঘটে না (যেমন
UTF-0 এ 8xFF বাইট)। যদি জেনারেট করা স্ক্যানারটি অবশ্যই অবৈধ ইনপুটের জন্য চেক করতে হবে, একমাত্র সত্য
এটি করার উপায় হল ডিফল্ট নিয়ম ব্যবহার করা *. দ্রষ্টব্য, যে সম্পূর্ণ পরিসীমা নিয়ম [^] অবৈধ ধরবে না
কোড ইউনিট যখন পরিবর্তনশীল-দৈর্ঘ্য এনকোডিং ব্যবহার করা হয় ([^] মানে "সমস্ত বৈধ কোড পয়েন্ট", যখন
ডিফল্ট নিয়ম * মানে "সমস্ত সম্ভাব্য কোড ইউনিট")।

জেনেরিক ইনপুট এপিআই


re2c সাধারণত পয়েন্টার-এর মতো আদিম ব্যবহার করে ইনপুটে কাজ করে YYCURSOR, YYMARKER,
YYCTXMARKER এবং YYLIMIT.

জেনেরিক ইনপুট API (এর সাথে সক্ষম --ইনপুট প্রথা সুইচ) একজনকে ইনপুট কাস্টমাইজ করতে দেয়
অপারেশন এই মোডে, re2c পরিপ্রেক্ষিতে ইনপুট সব অপারেশন প্রকাশ করবে
নিম্নলিখিত আদিম:

┌────────────────┬──────────────────────────────── ──┐
YYPEEK () │ বর্তমান ইনপুট অক্ষর পান │৷
├────────────────┼──────────────────────────────── ──┤
YYSKIP () │ পরবর্তী চরিত্রে অগ্রসর হও │৷
├────────────────┼──────────────────────────────── ──┤
YYBACKUP () │ ব্যাকআপ বর্তমান ইনপুট অবস্থান │
├────────────────┼──────────────────────────────── ──┤
YYBACKUPCTX () │ ব্যাকআপ বর্তমান ইনপুট অবস্থান │
│ │ ট্রেলিং প্রসঙ্গের জন্য │
├────────────────┼──────────────────────────────── ──┤
YYRESTORE () │ বর্তমান ইনপুট অবস্থান পুনরুদ্ধার করুন │৷
├────────────────┼──────────────────────────────── ──┤
YYRESTORECTX () │ বর্তমান ইনপুট অবস্থান পুনরুদ্ধার করুন │৷
│ │ ট্রেলিং প্রসঙ্গের জন্য │
├────────────────┼──────────────────────────────── ──┤
ইয়েলেসথান (ঢ) │ এর চেয়ে কম হলে পরীক্ষা করুন n ইনপুট │
│ │ অক্ষর বাকি আছে │৷
└────────────────┴──────────────────────────────── ──┘

কয়েকটি দরকারী লিঙ্ক যা কিছু উদাহরণ প্রদান করে:

1. http://skvadrik.github.io/aleph_null/posts/re2c/2015-01-13-input_model.html

2. http://skvadrik.github.io/aleph_null/posts/re2c/2015-01-15-input_model_custom.html

onworks.net পরিষেবা ব্যবহার করে অনলাইনে re2c ব্যবহার করুন


বিনামূল্যে সার্ভার এবং ওয়ার্কস্টেশন

উইন্ডোজ এবং লিনাক্স অ্যাপ ডাউনলোড করুন

লিনাক্স কমান্ডগুলি

Ad




×
ভি .আই. পি  বিজ্ঞাপন
❤️এখানে কেনাকাটা করুন, বুক করুন, অথবা কিনুন — বিনামূল্যে, পরিষেবাগুলি বিনামূল্যে রাখতে সাহায্য করে।