使用xtext验证语义的最佳方法

时间:2014-06-11 21:09:53

标签: java validation dsl xtext xtend

我是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元素?

1 个答案:

答案 0 :(得分:3)

您要找的是一个类型系统。有几种方法可以实现这一点:你自己编写一个(通过在验证器类中编写检查),使用现有的方法,如http://xsemantics.sourceforge.net/https://code.google.com/a/eclipselabs.org/p/xtext-typesystem/

你可以看看Lorenzo Bettinis Book&#39;使用Xtext和Xtend实现领域特定语言&#39;