我是Xtext验证系统的新手,无法弄清楚如何验证我的表达。
我有类似的东西:
VAR
<VARIABLE>:<TYPE>:= <VALUE>;
END_VAR
我需要做的是确保&lt;&#39; TYPE&#39;&gt;与&lt;&#39; VALUE&#39;&gt;的类型相同。 我的语法规则就像这个片段一样设置:
VarRule:
'VAR'
variableDef+=VariableDefRule+ ';'
'END_VAR'
;
VariableDefRule:
type=TypeName (':=' constant=Constant)?
;
TypeName:
INT | STRING | FLOAT
;
INT: name='INT';
STRING: name='STRING';
FLOAT: name='FLOAT';
Constant:
Integer | String | ...
;
terminal Integer returns ecore::EInt:
(0..9)+
;
如何关联&lt;&#39; VALUE&#39;&gt;元素到TypeName元素?
答案 0 :(得分:3)
您要找的是一个类型系统。有几种方法可以实现这一点:你自己编写一个(通过在验证器类中编写检查),使用现有的方法,如http://xsemantics.sourceforge.net/或https://code.google.com/a/eclipselabs.org/p/xtext-typesystem/
你可以看看Lorenzo Bettinis Book&#39;使用Xtext和Xtend实现领域特定语言&#39;