Не могли бы вы объяснить, почему это двусмысленная грамматика? У меня есть довольно сложная грамматика и прибил ошибку, которую я имею к этому: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). «
Не могли бы вы перевести это простой грамматики, как 'А -.> aB',' B -> aB', ' A -> aa'. Надеюсь, вы знакомы с абстрактными грамматиками, иначе этот комментарий не будет иметь большого смысла для вас. Я могу сказать вам, почему это неоднозначно, но я не знаю синтаксиса и структуры этого языка. – ShellFish