在 XText 中编写 java 样式的 If 语句会导致错误

Writing java-style If statements in XText results in an error

我正在为自己的 DSL 语言编写自定义 Xtext 编辑器,现在想将 If-Statements 添加到我的语言中. 语句看起来像这样:

if (TRUE) {
    (...)
}

但是当我尝试添加它们时,出现错误 "A class may not be a super type of itself".

到目前为止,这是我的代码:

grammar XtextTest with org.eclipse.xtext.common.Terminals

generate xtextTest "http://www.my.xtext/Test"

Model:
    statements+=Statement*;

Statement:
    VariableAssignment |
    IfStatement;

IfStatement:
    'if' '(' BooleanExpression ')' '{' Statement '}';

BooleanExpression:
    'TRUE' | 'FALSE';

VariableAssignment:
    name=ID "=" INT ';';

我该如何实施?还是我做错了什么?

感谢任何帮助^^

赋值在 Xtext 中很重要。如果您只是调用规则而不分配它们,它会影响推断的超类型层次结构。 => 最好将语法更改为

IfStatement:
   'if' '(' condition=BooleanExpression ')' '{' statement=Statement '}';

如果你想引入一个共同的supertype/subtype关系,不要使用赋值

Number: Double | Long;