簡體   English   中英

為給定的CFG生成LL(1)解析表

[英]Generating the LL(1) parsing table for the given CFG

CFG如下:

S -> SD|SB
B -> b|c
D -> a|dB

我嘗試的方法如下:

我通過左分解方法從第一個產品( S->SD|SB )中消除了不確定性。

因此,應用左分解后的CFG如下:

S -> SS'
S'-> D|B
B -> b|c
D -> a|dB

我需要找到用於生產的S第一個 ,即S -> SS' ,以便繼續進行。 有人可以幫忙還是建議?

您不能以這種方式將這種語法轉換為LL(1)解析器:語法是左遞歸的 ,因此您將必須執行左遞歸移除 關鍵是您可以執行以下技巧:由於S的唯一規則是S -> SS'S -> (epsilon),這意味着您只需顛倒順序,從而引入規則S -> S'S 所以現在的語法是:

S -> S'S
S'-> D|B
B -> b|c
D -> a|dB

現在我們可以構造firstfirst(B)= {b,c}first(D)= {a,d}first(S')= {a,b,c,d}first(S)= { a,b,c,d}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM