Я пытаюсь создать DSL из этой грамматики:
grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals
generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
Program:
"print" expression=Expression "where" constant=Constant |
"print" expression=Expression;
Expression:
Add;
Add returns Expression:
Primary({Add.expression1=current} "+" expression2=Primary)*;
Primary returns Expression:
ExpressionParentheses | Number | ConstUsage;
Number returns Expression:
value=INT;
Constant:
name=ID "=" number=Number;
ConstUsage returns Expression:
name=[Constant];
ExpressionParentheses returns Expression:
"(" Add ")";
Но генерация артефактов Xtext в Eclipse всегда приводит к ошибке. Это происходит всегда, когда я использую ExpressionParentheses, а также ConstUsage в основном правиле сразу. Когда я помещаю туда ConstUsage или ExpressionParentheses, все работает нормально. В чем может быть проблема с моей грамматикой?