-1
這個練習有點問題。編譯器:改變模糊文法
鑑於這種語法:
S -> aX | X
X -> aXb | b | eps
a)所示,它是模糊的一個字符串
B)說什麼語言捕捉語法
三)改變語法和構建後裔解析器
我的解決方案:
a)我給出了曖昧與字符串「AB」:
- S -> aX -> ab
- S -> X -> aXb -> ab
二)語法抓住了這個語言:
L = {a^n b^n: n >= 0} U {a^n b^m: n=m+1, n,m >= 0} U {a^n b^m: m=n+1, n,m >= 0}
C)我的問題是改變語法來構建解析器。我嘗試了不同的語法,但它們也不明確。 例如這樣的:
- G -> X$
X -> aX' | b | eps
X' -> XB | eps
你能幫我找到了鍛鍊正確的語法,或給我輸入?
生產可能是X - > a |灣但是對於這種生產,語法會在解析表格時產生衝突以進行自頂向下的解析。你認爲另一種生產? – Federico
@federico:實際上,它必須是'X - > a | b | ε';否則,平衡的字符串將不可能。這是明確的,但不是LL(k)。 (它也不是LR(k))。LL(1)語法比較棘手,但可能;考慮將語言解構爲前綴和最大(有限)長度後綴。 – rici