Невозможно создать артефакты Xtext для грамматики, которая использует круглые скобки и перекрестные ссылки одновременно - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь создать 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, все работает нормально. В чем может быть проблема с моей грамматикой?

1 Ответ

0 голосов
/ 05 января 2019

thw следующая грамматика работает отлично

Program:
     "print" expression=Expression ("where" constant=Constant)?
;

Expression:
    Add;

Add returns Expression:
    Primary({Add.expression1=current} "+"  expression2=Primary)*;

Primary returns Expression:
    Number | ConstUsage | "("Add")";

Number returns Expression:
    value=INT;

Constant:
    name=ID "=" number=Number;

ConstUsage returns Expression:
    name=[Constant];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...