24 مهر 1392, 08:45 ب.ظ
گرامر G مفروض است کدام گزینه صحیح میباشد؟
۱- LL(1) است
۲- LL(1) نیست و با حذف قاعده [tex]B\rightarrow aA[/tex] گرامر LL(1) میشود.
۳- LL(1) نیست و با حذف قاعده [tex]C\rightarrow \lambda[/tex] گرامر LL(1) میشود.
۴- گزینه ۲و ۳
گرامر G:
[tex]A \rightarrow aBC | BEe[/tex]
[tex]B \rightarrow Cc|aA[/tex]
[tex]C\rightarrow cA|b| \lambda[/tex]
[tex]E\rightarrow f| \lambda[/tex]
میدونم که برای تشخیص این گرامر باید دو قاعده رو چک کنیم اول اینکه first سمت چپ هر قاعده باهم اشتراک نداشته باشند و دومی اگر در مجموعه first غیر ترمینالها لامبدا تولید بشه باید Follow اون رو بدست بیاریم.
در خط اول که برخورد First/First داریم
در خط سوم بایستی [tex]first(cA)\bigcap First(b) \bigcap Follow( C)[/tex] بدست بیاریم
[tex]first(cA)\bigcap First(b) \bigcap Follow( C)= \left \{ c \right \}\bigcap \left \{ b \right \}\bigcap \left \{ b,c,f,e,\$ \right \}[/tex]
اینجا چطوری بخش Follow رو بدست آورده؟
من فکر میکنم فقط c و $ باید باشه!
۱- LL(1) است
۲- LL(1) نیست و با حذف قاعده [tex]B\rightarrow aA[/tex] گرامر LL(1) میشود.
۳- LL(1) نیست و با حذف قاعده [tex]C\rightarrow \lambda[/tex] گرامر LL(1) میشود.
۴- گزینه ۲و ۳
گرامر G:
[tex]A \rightarrow aBC | BEe[/tex]
[tex]B \rightarrow Cc|aA[/tex]
[tex]C\rightarrow cA|b| \lambda[/tex]
[tex]E\rightarrow f| \lambda[/tex]
میدونم که برای تشخیص این گرامر باید دو قاعده رو چک کنیم اول اینکه first سمت چپ هر قاعده باهم اشتراک نداشته باشند و دومی اگر در مجموعه first غیر ترمینالها لامبدا تولید بشه باید Follow اون رو بدست بیاریم.
در خط اول که برخورد First/First داریم
در خط سوم بایستی [tex]first(cA)\bigcap First(b) \bigcap Follow( C)[/tex] بدست بیاریم
[tex]first(cA)\bigcap First(b) \bigcap Follow( C)= \left \{ c \right \}\bigcap \left \{ b \right \}\bigcap \left \{ b,c,f,e,\$ \right \}[/tex]
اینجا چطوری بخش Follow رو بدست آورده؟
من فکر میکنم فقط c و $ باید باشه!