পার্সিং টেকনিকগুলি কম্পাইলারের সিনট্যাক্স অ্যানালাইসিসের জন্য বিভিন্ন পদ্ধতি ব্যবহার করে। এখানে Recursive Descent, LL, LR, এবং SLR পার্সিং টেকনিকগুলি বিস্তারিতভাবে আলোচনা করা হলো:
১. Recursive Descent Parsing
Recursive Descent Parsing একটি টপ-ডাউন পার্সিং পদ্ধতি, যা গ্রামারের উৎপাদনগুলিকে প্রতিনিধিত্বকারী রিকার্সিভ ফাংশনগুলির মাধ্যমে কাজ করে। এটি খুব সহজ এবং বাস্তবায়নে সহজ।
বৈশিষ্ট্য:
- রিকার্সিভ ফাংশন: গ্রামারের প্রতিটি উৎপাদনকে একটি ফাংশন দ্বারা প্রতিনিধিত্ব করা হয়, যা সংশ্লিষ্ট টোকেনগুলি পাঠ করে।
- ডিরেক্ট ইনপুট: ইনপুট টোকেনগুলির সাথে সামঞ্জস্য রেখে প্রোগ্রামটির সিনট্যাক্স তৈরি করা হয়।
- গ্রামার সীমাবদ্ধতা: Recursive Descent Parsing LL(1) গ্রামারের সাথে কাজ করে, যেখানে পূর্বাভাস (lookahead) একটি টোকেনের জন্য হয়।
উদাহরণ:
E → E + T | T
T → a
এটি একটি Recursive Descent Parser এর মাধ্যমে পার্স করা যাবে।
২. LL Parsing
LL Parsing একটি টপ-ডাউন পার্সিং টেকনিক, যেখানে "LL" নির্দেশ করে:
- L: বাম থেকে ডানদিকে ইনপুট পড়া।
- L: বাম থেকে ডানদিকে উৎপাদন করা।
বৈশিষ্ট্য:
- Predictive Parsing: পূর্বাভাস ব্যবহার করে কোডের সিনট্যাক্স তৈরি করা হয়।
- গ্রামার: LL(1) গ্রামার, যেখানে 1 নির্দেশ করে যে পূর্বাভাসের জন্য একটি টোকেন ব্যবহৃত হয়।
- সিম্পল স্ট্যাক: LL পার্সার একটি স্ট্যাক ব্যবহার করে সিনট্যাক্স গঠন করে।
উদাহরণ:
E → T E'
E' → + T E' | ε
T → a
এই গ্রামার একটি LL(1) পার্সার দ্বারা পার্স করা যাবে।
৩. LR Parsing
LR Parsing একটি বটম-আপ পার্সিং টেকনিক, যেখানে "LR" নির্দেশ করে:
- L: বাম থেকে ডানদিকে ইনপুট পড়া।
- R: ডান থেকে বাম দিকে উৎপাদন করা।
বৈশিষ্ট্য:
- Shift-Reduce Parsing: ইনপুট টোকেনগুলোকে শিফট করা এবং পরে উৎপাদন করা হয়।
- গ্রামার: LR(0), LR(1) ইত্যাদি গ্রামারের সাথে কাজ করে।
- অধিক সক্ষমতা: এটি অধিক জটিল গ্রামারগুলোকে পার্স করতে সক্ষম।
উদাহরণ:
LR(1) পার্সিংয়ের জন্য একটি উদাহরণ:
E → E + T | T
T → a
এই গ্রামারটি LR(1) পার্সার দ্বারা পার্স করা যাবে।
৪. SLR Parsing
SLR Parsing (Simple LR Parsing) LR পার্সিংয়ের একটি সহজ সংস্করণ। এটি মূলত LR(0) পার্সার এবং পূর্বাভাসকে ব্যবহার করে।
বৈশিষ্ট্য:
- Simplified LR Parsing: SLR পার্সার টেবিল তৈরি করার সময় শুধুমাত্র শেষ স্টেটগুলোর জন্য সামান্য নিয়ম ব্যবহার করে।
- Shift-Reduce Parsing: এটি শিফট এবং রিডিউস কৌশল ব্যবহার করে।
- গ্রামার: SLR গ্রামার, যা LR(0) এর ভিত্তিতে তৈরি।
উদাহরণ:
SLR(1) পার্সারের জন্য একটি উদাহরণ:
E → E + T | T
T → a
এই গ্রামারটিও SLR পার্সার দ্বারা পার্স করা যাবে।
উপসংহার
পার্সিং টেকনিকগুলি সিনট্যাক্স অ্যানালাইসিসের জন্য বিভিন্ন পদ্ধতি ব্যবহার করে। Recursive Descent সাধারণ এবং সহজ, LL এবং LR পার্সিং জটিল ভাষার সিনট্যাক্স বিশ্লেষণে সহায়ক। SLR পার্সিং LR পদ্ধতির একটি সহজ সংস্করণ, যা কার্যকরী এবং ব্যবহার সহজ। এই পদ্ধতিগুলি বিভিন্ন প্রোগ্রামিং ভাষার বিশ্লেষণে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more