এই ব্যাকরণ এলএল (1) কেমন?


12

এটি ড্রাগন বুকের একটি প্রশ্ন। এটি ব্যাকরণ:

SAaAbBbBa
Aε
Bε

প্রশ্ন জিজ্ঞাসা করে যে এটি এলএল (1) তবে এসএলআর (1) নয় কীভাবে তা দেখানো যায়।

এটি এলএল (1) প্রমাণ করার জন্য, আমি এর পার্সিং টেবিলটি তৈরির চেষ্টা করেছি, তবে আমি একটি ঘরে একাধিক প্রযোজনা পাচ্ছি, যা দ্বন্দ্ব।

দয়া করে বলুন কীভাবে এই এলএল (1), এবং কীভাবে এটি প্রমাণ করবেন?


6
ব্যাকরণগুলির সাথে আমি খুব দুর্গত নই, তবে মনে হয় এই ব্যাকরণের ভাষা সীমাবদ্ধ। L={ab,ba}
নেজক

@ নেজক: হ্যাঁ এমনটা মনে হচ্ছে!
বিনয়াক গার্গ

উত্তর:


11

প্রথমে আসুন আপনার প্রযোজনার একটি সংখ্যা দিন give

1 2 3 4SAaAb
SBbBa
Aε
Bε

প্রথমে গণনা করা যাক এবং প্রথমে সেটগুলি অনুসরণ করুন। এর মতো ছোট উদাহরণগুলির জন্য, এই সেটগুলি সম্পর্কে স্বজ্ঞাত ব্যবহার করা যথেষ্ট is

FIRST(S)={a,b}FIRST(A)={}FIRST(B)={}FOLLOW(A)={a,b}FOLLOW(B)={a,b}

এখন আসুন সারণীটি গণনা করা যাক । সংজ্ঞা অনুসারে, যদি আমরা বিরোধ না পাই তবে ব্যাকরণটি ।LL(1)LL(1)

    a | b |
-----------
S | 1 | 2 |
A | 3 | 3 |
B | 4 | 4 |

যেহেতু কোনও বিরোধ নেই, ব্যাকরণটি ।LL(1)

এখন টেবিলের জন্য। প্রথমত, অটোমেটন।SLR(1)LR(0)

state 0SAaAbSBbBaABA1B5
state 1SAaAba2
state 2SAaAbAA3
state 3SAaAbb4
state 4SAaAbb
state 5SBbBab6
state 6SBbBaBB7
state 7SBbBaa8
state 8SBbBa

এবং তারপরে সারণী (আমি ধরে নিই যে কিছু অনুসরণ করতে পারে)।SLR(1)S

    a     | b     | A | B |
---------------------------
0 | R3/R4 | R3/R4 | 1 | 5 |
1 | S2    |       |   |   |
2 | R3    | R3    | 3 |   |
3 |       | S4    |   |   |
4 | R1    | R1    |   |   |
5 |       | S4    |   |   |
6 | R4    | R4    |   | 7 |
7 | S8    |       |   |   |
8 | R2    | R2    |   |   |

রাজ্যে 0 দ্বন্দ্ব রয়েছে, তাই ব্যাকরণটি । মনে রাখবেন যদি পরিবর্তে ব্যবহার করা হয়েছিল, তারপর উভয় দ্বন্দ্ব সঠিকভাবে সমাধান করা হবে: lookahead রাজ্যের 0 R3 গ্রহণ করা হবে এবং lookahead উপর এটা R4 গ্রহণ করা হবে।SLR(1)LALR(1)a LALR(1)b

এই আকর্ষণীয় প্রশ্নের জন্ম দেয় একটি ব্যাকরণ আছে কিনা কিন্তু , যে ক্ষেত্রে কিন্তু সহজ নয় একটি উদাহরণ এটি।LL(1)LALR(1)


ধন্যবাদ! আমি প্রথমটি এবং অনুসরণ যথাযথভাবে তৈরি করেছি, তবে আমি সারণীটি তৈরিতে ভুল করেছি।
বিনায়ক গর্গ

10

যদি আপনাকে জিজ্ঞাসা করা না হয় তবে এটি এলএল (1) ব্যাকরণ বলে প্রমাণ করার জন্য আপনাকে এলএল (1) সারণীটি তৈরি করতে হবে না। আপনি কেবল প্রথম / অনুসরণ সেটগুলি অ্যালেক্সের মতো গণনা করেছেন:

FIRST(S)=a,bFIRST(A)=εFIRST(B)=εFOLLOW(A)=a,bFOLLOW(B)=a,b

এবং তারপরে, সংজ্ঞা অনুসারে একটি এলএল (1) ব্যাকরণ করতে হবে:

  1. যদি এবং ব্যাকরণের দুটি পৃথক নিয়ম হয়, তবে এটি হওয়া উচিত । সুতরাং, দুটি সেট কোনও সাধারণ উপাদান নেই।AaAbFIRST(a)FIRST(b)=
  2. যদি কোনও অ-টার্মিনাল প্রতীক -এর জন্য আপনার , তবে এটি হওয়া উচিত । অতএব, যদি অ-টার্মিনাল প্রতীকটির জন্য শূন্য উত্পাদন থাকে, তবে প্রথম এবং ফল সেটগুলিতে কোনও সাধারণ উপাদান থাকতে পারে না।AΑεFIRST(A)FOLLOW(A)=

সুতরাং, প্রদত্ত ব্যাকরণের জন্য:

  1. আমরা আশা করি আপনি যেহেতু যখন এবং তাদের কোনও সাধারণ উপাদান নেই।FIRST(AaAb)FIRST(BbBa)=FIRST(AaAb)={a}FIRST(BbBa)={b}
  2. FIRST(A)FOLLOWA)= যেহেতু যখন , এবং এখন থেকে যখন ।FIRST(A)={a,b}FOLLOW(A)=FIRST(B)FOLLOW(B)=FIRST(B)={ε}FOLLOW(B)={a,b}

এসএলআর (1) বিশ্লেষণ হিসাবে আমি মনে করি এটি নির্দোষ!


স্বাগত! এই উত্তরটির উন্নতি করার জন্য, আপনি যা ব্যাকরণে হাত রেখেছেন তার প্রয়োগ আপনি করেন না কেন?
রাফেল

এখানে এসে খুশি !! আপনার অনুরোধের উত্তর দিয়েছি এবং আমি মনে করি আমি এর পুরো ব্যাখ্যা দিয়েছি!
ইথান

ধন্যবাদ! মনে রাখবেন যে আমি এখানে আপনার গণিতের জন্য সম্পাদনা করেছি তেমন আমরা ল্যাটেক্স ব্যবহার করতে পারি।
রাফেল

ওহ ধন্যবাদ! এটি একটি দুর্দান্ত ব্যাখ্যা। তবে আমি মনে করি আবেদনে কিছু ভুল আছে is প্রথম (ক) = {এপসিলন n't নয়? আমি মনে করি আপনি প্রথম পরিবর্তন এবং অনুসরণ করুন।
বিনয়াক গার্গ

FIRST (A) প্রকৃতপক্ষে এপসিলন তবে আপনি যেহেতু পুরো ডান সদস্যের প্রথম সেটটি গণনা করতে দেখছেন, এ -> ε কেবলমাত্র দেখায় যে আমাদের একটি খালি উত্পাদন রয়েছে এবং আপনি যে প্রথম টার্মিনাল প্রতীকটি দেখছেন (এবং সুতরাং এটির প্রথম সেট) হ'ল টার্মিনাল প্রতীক a। আশা করি এটি সাহায্য করেছে!
ইথান

0

পর্যাপ্ত শর্তের জন্য অনুসন্ধান করুন যা ব্যাকরণ এলএল করে (1) (ইঙ্গিত: প্রথম সেটগুলি দেখুন)।

একটি প্রয়োজনীয় শর্ত অনুসন্ধান করুন যা সমস্ত এসএলআর (1) ব্যাকরণকারীদের অবশ্যই পূরণ করতে হবে (ইঙ্গিত: অনুসরণ করুন সেটগুলি দেখুন)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.