我想为具有不同变量类型组的语言构建编辑器,但是生成的内容助手存在问题。
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)。生成的内容助手在此处不显示任何内容,因此我想知道这是否是指定变量类型和组的正确方法。
答案 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]
;