簡體   English   中英

正確的LL(1)語法用於算術表達式

[英]Correct LL(1) grammar for arithmetic expressions

這是正確的LL語法:

E-> TX

T->(E)Y | intY

X-> + E | -E | Ë

Y-> * E | / E | Ë

但它會為表達式生成相同的AST樹

int-int + int和int-(int + int)

當量

子(Simple(int),Add(Simple(int),Simple(int))

當然,我可以提前使用,但這並不酷。

試試這個語法

E  -> T E'
E' -> + T E' | -TE' |epsilon
T  -> F T'
T' -> * F T' | /FT' |epsilon
F  -> (E) | int

通過在評估AST時添加一些其他“ if-s”來解決此問題。 語法保持不變

暫無
暫無

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

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