2013-02-24 7 views
0

Я хочу создать редактор для языка с различными группами переменных типов, но у вас проблемы с созданным помощником контента.Определение и использование Datatype 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' 
; 

Идея заключается в том, что определенные типы не допускаются везде, так что я хочу использовать тип = (ANY_REAL), например, в некоторых случаях. Созданный помощник по содержанию ничего здесь не показывает, поэтому я хочу знать, является ли это правильным подходом для указания типов переменных и групп.

ответ

0

OK. Ответ довольно прост! Каждый тип переменных должен быть определен внутри перечисления (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] 
; 
Смежные вопросы