সংকলক: এলএল (0) এবং এলআর (0) পার্সারগুলির মধ্যে পার্থক্য কী। এলএল (0) পার্সার্সের মতো জিনিস আছে কি?


উত্তর 1:

এই প্রশ্নটি এলএল (0) পার্সারগুলিতে কেন্দ্রীভূত বলে মনে হচ্ছে, সুতরাং আসুন তাদের সংজ্ঞা দিন। একটি এলএল (0) পার্সার, কোন উত্পাদন প্রয়োগ করতে হবে তা নির্ধারণের জন্য উত্পাদনের শুরুতে 0 টোকেন ব্যবহার করে বাম থেকে ডানদিকে পার্স করে। 0 টি টোকেনের অর্থ কী, এর অর্থ এই যে পার্সার কোন প্রযোজ্য প্রয়োগ করতে হবে তা নির্ধারণ করতে পার্স করা পাঠ্যটি ব্যবহার করতে পারবেন না। তার মানে পার্সার কোনও পছন্দ করতে পারে না। এটি টোকেনের ক্রমটি ঠিক কীভাবে বিশ্লেষণ করবে তা পার্সিংয়ের আগে এটি অবশ্যই জানা উচিত। টোকেনের ক্রম অবশ্যই স্থির করতে হবে, যার অর্থ পার্সার বিশ্লেষণকারী কেবলমাত্র একটি ক্রম থাকতে পারে। সুতরাং, আপনার কাছে এমন একটি পার্সার থাকতে পারে যা "হ্যালো ওয়ার্ল্ড!" এর মতো ব্যাকরণ সহ:

লক্ষ্য: "হ্যালো" হোয়াইটস্পেস "ওয়ার্ল্ড" বিস্মৃতকরণ-চিহ্ন;

নোট করুন যে লেক্সারটি টোকেনগুলির সাথে কীভাবে মেলে allowed

(আমি আশা করি স্বরলিপিটি সুস্পষ্ট - এটি মূলত যা আমি ইয়্যাক ++ এ ব্যবহার করি oted উদ্ধৃত স্ট্রিংগুলি টোকেন, কোনও শনাক্তকারী যেমন সংজ্ঞায়িত হয় নি))

পার্সার সর্বদা টোকেনের একই একই ক্রম আশা করে। এটির কেবল একটি নিয়ম থাকতে হবে না, যেমন আমাদের প্রথম উদাহরণটি করেছে। এটি দেখতে এটি দেখতে পারে।

লক্ষ্য: হ্যালো-অংশ সাদা অংশের শেষ অংশ;

হ্যালো-পার্ট: হ্যালো 1;

হ্যালো 1: "হ্যালো";

শেষ অংশ: বিশ্বের অংশ শেষ অংশ;

বিশ্বের অংশ: "বিশ্ব";

শেষ অংশ: "!";

তবে খেয়াল করুন কীভাবে কোনও বিলের কোনও "বা" (|) অপারেটর নেই এবং নন-টার্মিনাল প্রতি কেবল একটি নিয়ম রয়েছে। পার্সারকে কোনও বৈষম্যমূলক টোকেন (পার্সার কোন পথে যেতে পারে তা বেছে নিতে টোকেনগুলি) ব্যবহার না করে প্রতিটি নিয়মের সাথে কীভাবে মিল ফেলতে পারে তা জানার অনুমতি দেয় যা ব্যাকরণ এলএল (0) করে তোলে।

এখন, একটি পুনরাবৃত্তি উত্পাদন ব্যবহার করা এবং এখনও একটি এলএল (0) ব্যাকরণ থাকা কি সম্ভব? উত্তরটি "না"। আসুন দেখি আমাদের যদি পুনরাবৃত্ত নিয়ম থাকে তবে কী ঘটে।

লক্ষ্য: "x" গোল "y";

মনে রাখবেন, আমাদের কেবল নন-টার্মিনাল প্রতি একটি নিয়মের অনুমতি দেওয়া হয়েছে এবং "বা" অপারেটর নেই। সুতরাং, যখন আমরা লক্ষ্যটির পুনরাবৃত্তি প্রার্থনা করি, আমাদের অবশ্যই আমাদের এমন একটি পথে নিয়ে যেতে হবে যেখানে আমরা আবার সেই পুনরাবৃত্তির অনুরোধ, অসীম লুপে ফিরে আসব। নিজেকে প্রমাণ করুন, এটি কীভাবে আমরা সেই আহবানকে বাসা বেঁধে রাখি বা পুনরাবৃত্তি অপ্রত্যক্ষ কিনা তা বিবেচ্য নয়। এটি সর্বদা অসীম লুপের ফলস্বরূপ।

সুতরাং, একটি এলএল (0) ব্যাকরণের অবশ্যই টোকেনগুলির একটি সীমাবদ্ধ তালিকা পার্স করা উচিত, ঠিক একটি সীমাবদ্ধ তালিকা (প্রতি বারে একই তালিকা)।

এলআর (0) এর অর্থের পার্থক্যটি নোট করুন। কোনও এলআর (কে) পার্সারকে বৈষম্যমূলকভাবে উত্পাদনের মধ্যে যে কোনও (যত বেশি পছন্দ হয়) টোকেন ব্যবহার করার অনুমতি দেওয়া হয়, প্রসঙ্গ থেকে কে টোকেন পর্যন্ত উত্পাদন যখন হ্রাস করা উচিত কিনা তা নির্ধারণ করতে হ্রাস করে। LR (0) ক্ষেত্রে, এটি হ্রাস করা উচিত কিনা তা নির্ধারণের জন্য এটি কোনও অতিরিক্ত টোকেন ব্যবহার করতে পারে না। এটি নিয়মে টোকেনগুলি হ্রাস হওয়ার ভিত্তিতে সহজ সিদ্ধান্ত নিতে হবে। এখানে একটি সাধারণ এলআর (0) ব্যাকরণ রয়েছে:

লক্ষ্য: "এক্স" | "(" লক্ষ্য ")";

এই ব্যাকরণটি একটি "এক্স" পার্স করে যা ঘিরে কিছু সংখ্যক প্রথম বন্ধনী রয়েছে। নোট করুন যে এটি "x" টোকেন এবং কোন নিয়ম প্রয়োগ করতে হবে তা নির্ধারণ করতে "(" টোকেন) ব্যবহার করতে পারে। এলআর 0 (0) তে কোনও নিয়মের মধ্যে টোকেনের ব্যবহারকে সীমাবদ্ধ করে না, যেমন 0 এলএল (0) করে। এটি কেবলমাত্র সীমাবদ্ধ করে তা হ'ল হ্রাস করার সিদ্ধান্ত নেওয়ার সময় টোকেনের ব্যবহার (প্রসঙ্গ হিসাবে, অ-টার্মিনালের কিছু ব্যবহারের নিয়মের পরে) reduce এই ব্যাকরণটি হ্রাস করার সিদ্ধান্ত নেওয়ার কোনও প্রসঙ্গের প্রয়োজন নেই। প্রথম বিকল্পে, এটি দেখার পরে এটি হ্রাস পায় একটি "x" দ্বিতীয়টিতে এটি "") দেখার পরে হ্রাস পায়। কোনও নিয়মের মধ্যে টোকেনগুলি নির্ধারণ করে ঠিক কখন নিয়ম হ্রাস করা উচিত।


উত্তর 2:

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

এলআর (0) পার্সার অর্থ তারা শূন্যের সাথে ডানদিকের ডেরাইভেশন ব্যবহার করে বাম থেকে ডানে টোকন স্ট্রিমটি প্রক্রিয়া করে। এর অর্থ হ'ল তারা পার্স গাছটি নীচ থেকে উপরের দিকে তৈরি করে, যেখানে এলএল (0) পার্সারগুলি উপর থেকে নীচে পার্স গাছটি তৈরি করে।