XText数据类型定义和用法

时间:2013-02-24 17:20:07

标签: variables definition xtext

我想为具有不同变量类型组的语言构建编辑器,但是生成的内容助手存在问题。

Type:
   'TYPE' ':' name=ID '(' type=[ANY] ')' ';'
;
ANY:
   ANY_NUM | Type
;
ANY_NUM:
   ANY_REAL | ANY_INT ...
;
ANY_REAL:
   'real' | 'float'
;
ANY_INT:
   'int' | 'sint' | 'lint'
;

这个想法是,在任何地方都不允许使用特定类型,所以我想在某些情况下使用type =(ANY_REAL)。生成的内容助手在此处不显示任何内容,因此我想知道这是否是指定变量类型和组的正确方法。

1 个答案:

答案 0 :(得分:0)

行。答案很简单。每个Variable类型都必须在枚举(EnumRule)中定义,结构本身是一个简单的类型引用(ParserRule):

TR_Any:
  TR_AnyDerived | TR_AnyElementary
;
TR_AnyDerived:
  ...
;
TR_AnyElementary:
  TR_AnyReal | TR_AnyInt |...
;
TR_AnyReal:
  type = E_AnyReal
;
TR_AnyInt:
  type = E_AnyInt
;
enum E_AnyReal:
  FLOAT = "float" |
  DOUBLE = "double" |
  ...
;
enum E_AnyInt:
  INT = "int"
;

可以按照xtext文档中的描述引用类型:

MyRule:
  anyvar = [TR_Any]
  intvar = [TR_Int]
;