0

歧義語法:從語法中消除歧義

E - > UV | EBE | V | [E]

V - > a | b

U - > < | >

B - >? | ! | @

一些信息:

優先順序:? <! < @,一元運算符(<,>)最高

二元運算符?,!,@是右關聯的。 E-> UV |

我的嘗試:

E - > UV | EBT | V | [E]

T→E

V→a | b

U - > < | >

B - >? | B1

B1 - >! | B2

B2 - > @

我不知道如果我在我的轉換過程中留下了一些極端情況。感謝您能否指出一些錯誤並提供一些提示。

回答

0

E -> UV | EBE | V | [E] V -> a | b U -> < | > B -> ? | ! | @

優先順序:? <! < @,一元運營商(<,>)是最高的 。

二元運算符?,!,@是正確的關聯。

我對您的優先順序感到困惑,因爲它意味着!的優先級高於>

因此,假設優先順序:

a,b,<,>,?,!,@

我想指出,明確的語法都是關於使用中介角色,通常比模糊的語法較多,以確保有步驟的標準程序以達到某個終端符號,即每個字符串將具有相同的分析樹。最高優先級意味着它是最終轉換到最終非終端到終端符號轉換。

我的答案是:

E -> V?E | V!E | [email protected] | [E] //Right associativity = right recursive V-> <V | >V | E | T | a | b T-> a | b | E

但是很難知道不知道你的目標串並接受/不接受。