0
有人能解釋爲什麼這是模棱兩可的語法嗎? 我有一個相當複雜的語法,並釘上,我有到這個錯誤:Xtext:與一元減號的歧義語法
Expressions:
AdditionOrSubtraction;
AdditionOrSubtraction:
UnaryExpression ((PLUS | MINUS) UnaryExpression)*
;
UnaryExpression:
MINUS Expressions
| Atom
;
Atom returns Expression:
INT
;
我看着Java規範它給出了一個類似的表達: http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-MultiplicativeExpression
我已經簡化它,並顯示它下面:
MultiplicativeExpression:
UnaryExpression
MultiplicativeExpression * UnaryExpression
MultiplicativeExpression/UnaryExpression
MultiplicativeExpression % UnaryExpression
UnaryExpression:
+ UnaryExpression
- UnaryExpression
Literal
Literal:
IntegerLiteral
我收到以下錯誤消息,當我嘗試運行它: 「決定可以匹配輸入如‘RULE_MINUS {RULE_MINUS,......}’全光照g多種選擇:1,2 因此,對於該輸入禁用替代項2「
難道你翻譯這個簡單的語法像'A - > AB','乙 - > aB',' A - > aa'。我希望你對抽象語法很熟悉,否則這個評論對你來說沒有什麼意義。我可以告訴你爲什麼它是模糊的,但我不知道這種語言的語法和結構。 – ShellFish