在 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;
我正在为自己的 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;