2013-02-24 2 views
0

다른 유형의 변수 그룹을 가진 언어에 대한 편집기를 작성하려고하지만 생성 된 내용 보조자에 문제가 있습니다.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

확인. 대답은 아주 간단합니다. 각 변수 타입은 ENUM (EnumRule) 내에 정의 될 수 있고, 구조 자체는 단순 유형 참조 (ParserRule)이다

xtext 설명서에 따라 종류가 참조 될 수
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" 
; 

:

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