একটি বিন্যাস ফ্রেজ: একটি বিন্যাস ফ্রেজ মানক (ই) বিএনএফ প্রসঙ্গে বিনামূল্যে ব্যাকরণ সংজ্ঞা একটি এক্সটেনশান রয়েছে প্রযোজনার (অথবা equivalently, nonterminals) মাধ্যমে । ক্রমবিন্যাস বাক্যাংশের অবস্থানে, আমরা এই প্রযোজনার প্রতিটি একবারে দেখতে চাই, তবে আমরা এই নন-টার্মিনালগুলির ক্রমগুলিতে আগ্রহী নই।
উদাহরণ স্বরূপ:
S <- X { A, B, C } Y
সমান:
S <- X A B C Y
S <- X A C B Y
S <- X B A C Y
S <- X B C A Y
S <- X C A B Y
S <- X C B A Y
ধারণাটি "পরিচ্ছেদের বাক্যাংশ সহ প্রসঙ্গ-মুক্ত ব্যাকরণগুলি প্রসারিত করা" তে প্রবর্তিত হয়েছে বলে মনে হয় । এর মধ্যে এটি কীভাবে এলএল (1) পার্সার ব্যবহার করে এই বাক্যাংশগুলিকে রৈখিক সময়ে পার্স করতে হবে তাও বর্ণিত হয়েছে।
পার্সিং কম্বিনেটরগুলি ব্যবহার করে পারমিটেশন বাক্যাংশগুলি পার্স করার জন্য একটি পদ্ধতি "পার্সিং পারমিটেশন বাক্যাংশগুলি" কাগজটি বর্ণনা করে। এই কেবলমাত্র দুটি পেপারই আমি খুঁজে পেয়েছি যে ক্রমশক্তি বাক্যাংশ এবং সেগুলি কীভাবে পার্স করা যায় সে সম্পর্কে আলোচনা।
আমরা সহজেই এলএল (1) ভিত্তিক পার্সারগুলির সাথে এই ধরণের ক্রমবর্ধমান বাক্যাংশগুলি সহজেই পার্স করতে পারি তা দেখে আমার অনুমান হবে যে আমরা এলআর (1) স্টাইল পার্সার দিয়ে একই কাজ করতে পারি। আমার প্রশ্ন তাই:
যথাযথ আকারের টেবিলটি বজায় রেখে এলআর (1) মেশিনারি ব্যবহার করে ইনপুট স্ট্রিং আকারে ক্রমবিন্যাসের বাক্যাংশগুলি সহ একটি ব্যাকরণকে কি টাইম লিনিয়ারে পার্স করা যায়?
অনুমান বাক্যাংশগুলি প্রসঙ্গ-মুক্ত ভাষার শক্তি বাড়ায় না: যেমন আমার উদাহরণে উপরের মতো কেবল সমস্ত সম্ভাব্য ক্রমশক্তি গণনা করা যায়। যাইহোক, ব্যাকরণটি তখন বিস্ফোরিত হয় কারণ ফলাফলের ব্যাকরণটি আকারের হতে পারে । এটি লিনিয়ার সময় পার্সিংয়ের অনুমতি দেয় তবে ব্যাকরণের আকারটি খুব বড় হয়ে যায়।
উপরোক্ত পদ্ধতির কোনও পার্সিং অ্যালগরিদম (যদিও এটি দরকারী নয়) এর জন্য কাজ করে, তাই সম্ভবত আমরা নির্দিষ্ট অ্যালগোরিদমের জন্য আরও ভাল করতে পারি। এলআর টেবিলের মধ্যে বাক্যাংশগুলি এনকোড করে আমরা 'নিছক' ঘনিষ্ঠভাবে ( ) ঘাটতিটি কমিয়ে আনতে পারি: আমাদের কাছে LR আইটেমগুলি এনকোড থাকতে পারে যা এখনও প্রযোজনা দেখা যায়নি, এবং ফলস্বরূপ হ্রাস করতে পারে ক্রমবিন্যাস বাক্যাংশের সমস্ত উপগ্রহে।
যদিও এটি আরও ভাল, এটি অবশ্যই যথেষ্ট ভাল নয় - 30 আইটেমের ক্রমবর্ধমান বাক্যাংশ থাকা ব্যাকরণকে অযোগ্য করে তুলবে। এলআর পার্সিংয়ের এখনও একটি অংশ রয়েছে যা আমরা এখনও স্পর্শ করতে পারি নি এবং এটি পার্সিংয়ের জন্য ব্যবহৃত আসল স্ট্যাক-ভিত্তিক পদ্ধতি। আমি কল্পনা করেছি যে স্ট্যাকের কাউন্টারগুলি সঞ্চয় করে সমস্যাটি সমাধান করতে সক্ষম হতে পারে তবে আমি কীভাবে এটি করব তা নিশ্চিত নই।
আমি বর্তমানে একটি পার্সার জেনারেটর বাস্তবায়ন করছি, এবং সমস্যায় ডোমেনের ক্রমবর্ধমান বাক্যাংশটি স্বর্গের উপহার হবে। যেহেতু আমি এলআর (1) যন্ত্রপাতি ব্যবহার করছি, উপরের প্রশ্নটি অনুসরণ করেছে।