যেহেতু আপনি লেক্সারগুলি কীভাবে কাজ করে তা শিখতে চান, আমি অনুমান করি আপনি প্রকৃতপক্ষে লেক্সার জেনারেটর কীভাবে কাজ করেন তা জানতে চান।
একটি লেক্সার জেনারেটর একটি লেজিকাল স্পেসিফিকেশন নেয় যা নিয়মের তালিকা (নিয়মিত-এক্সপ্রেশন-টোকেন জোড়) এবং একটি লেক্সার জেনারেট করে। এই ফলস্বরূপ লেক্সার তারপরে নিয়মের এই তালিকা অনুযায়ী কোনও ইনপুট (অক্ষর) স্ট্রিংকে টোকেন স্ট্রিংয়ে রূপান্তর করতে পারে।
যে পদ্ধতিটি সর্বাধিক ব্যবহৃত হয় তা হ'ল একটি নিয়মিত ভাবকে একটি ডিস্ট্রিনিস্টিক সসীম অটোমেটা (ডিএফএ) এ ননডেটারিস্টিনিস্টিক অটোমেটা (এনএফএ) এর মাধ্যমে আরও কিছু বিবরণ রূপান্তর করে।
এই রূপান্তরটি করার একটি বিশদ গাইড এখানে পাওয়া যাবে । মনে রাখবেন যে আমি নিজে এটি পড়িনি, তবে এটি বেশ ভাল দেখাচ্ছে। এছাড়াও, সংকলক নির্মাণ সম্পর্কিত যে কোনও বইয়ের প্রথম কয়েকটি অধ্যায়গুলিতে এই রূপান্তরটি প্রদর্শিত হবে।
আপনি যদি এই বিষয়ের উপর কোর্সগুলির লেকচার স্লাইডগুলিতে আগ্রহী হন তবে সংকলক নির্মাণের কোর্সগুলি থেকে তাদের অন্তহীন পরিমাণের সন্দেহ নেই। আমার বিশ্ববিদ্যালয় থেকে আপনি এই জাতীয় স্লাইডগুলি এখানে এবং এখানে সন্ধান করতে পারেন ।
আরও কয়েকটি জিনিস রয়েছে যা সাধারণত লেক্সারে নিযুক্ত হয় না বা পাঠ্যে চিকিত্সা করা হয় না তবে তবুও এটি বেশ কার্যকর:
প্রথমত, ইউনিকোড পরিচালনা করা কিছুটা অনানুষ্ঠানিক। সমস্যাটি হ'ল ASCII ইনপুটটি কেবল 8 টি বিট প্রশস্ত, যার অর্থ আপনি সহজেই ডিএফএ-র প্রতিটি রাজ্যের জন্য একটি রূপান্তর টেবিল রাখতে পারেন কারণ তাদের কেবল 256 টি প্রবেশ রয়েছে। তবে, ইউনিকোড, 16 বিট প্রস্থে (আপনি যদি ইউটিএফ -16 ব্যবহার করেন), ডিএফএতে প্রতিটি প্রবেশের জন্য k৪ কে টেবিলের প্রয়োজন। আপনার যদি জটিল ব্যাকরণ থাকে, তবে এটি বেশ কিছু জায়গা নেওয়া শুরু করতে পারে। এই টেবিলগুলি পূরণ করতে বেশ খানিকটা সময় নেওয়া শুরু হয়।
বিকল্পভাবে, আপনি অন্তর গাছ তৈরি করতে পারেন। একটি ব্যাপ্তি গাছের মধ্যে উদাহরণস্বরূপ টিপলস ('এ', 'জেড'), ('এ', 'জেড') থাকতে পারে যা পুরো টেবিলের চেয়ে স্মৃতিশক্তি অনেক বেশি কার্যকর। যদি আপনি অ-ওভারল্যাপিং অন্তরগুলি বজায় করেন তবে আপনি এই উদ্দেশ্যে যে কোনও ভারসাম্য বাইনারি গাছ ব্যবহার করতে পারেন। চলমান সময়টি প্রতিটি চরিত্রের জন্য আপনার প্রয়োজনীয় বিটের সংখ্যার মধ্যে রৈখিক, সুতরাং ইউনিকোডের ক্ষেত্রে ও (16)। তবে সর্বোত্তম ক্ষেত্রে এটি সাধারণত খানিকটা কম থাকে।
আরও একটি বিষয় হ'ল ল্যাক্সাররা সাধারণভাবে উত্পন্ন হিসাবে চতুষ্কোণীয় কার্যক্ষমতা সবচেয়ে খারাপ হয়। যদিও এই নিকৃষ্টতম আচরণটি সাধারণত দেখা যায় না, তবে এটি আপনাকে কামড়ায়। আপনি যদি সমস্যাটির মধ্যে চলে যান এবং এটি সমাধান করতে চান তবে রৈখিক সময় কীভাবে অর্জন করা যায় তার বর্ণনা দেওয়ার জন্য একটি কাগজ এখানে পাওয়া যাবে ।
আপনি সম্ভবত স্ট্রিং ফর্মের নিয়মিত প্রকাশগুলি বর্ণনা করতে সক্ষম হবেন, কারণ তারা সাধারণত প্রদর্শিত হয়। যাইহোক, এই নিয়মিত প্রকাশের বিবরণকে এনএফএগুলিতে (বা সম্ভবত প্রথমে পুনরাবৃত্ত মাঝারি কাঠামো) পার্স করা একটি মুরগির ডিমের সমস্যা bit নিয়মিত প্রকাশের বিবরণ পার্স করার জন্য, শান্টিং ইয়ার্ড অ্যালগরিদম খুব উপযুক্ত। অ্যালগরিদমের উইকিপিডিয়ায় একটি বিস্তৃত পৃষ্ঠা রয়েছে বলে মনে হচ্ছে ।