2012-12-23 5 views
1

Xtext에서 만든 내 Datatype에 문제가 있습니다. 문제는이 함수 내에 있습니다 :Xtend/Xtext 데이터 유형

«FOR e: bla.EAllAttributes» 
     «e.EType.name» «e.name»; 
    «ENDFOR» 

이 for 루프는 e.EType.name에 대해 EInt 또는 EString을 반환합니다. 하지만 이중, 부울 등 내 DSL에서 만든 터미널 규칙/데이터 형식이 필요합니다. 문자열 표현식을 가진 모든 터미널 규칙은 EString으로 반환되고 숫자 만있는 규칙은 EInt로 반환됩니다. 열거 형은 올바르게 반환되지만 ...

도움을 위해 미리 감사드립니다.

답변

2

설명서에 문제를 설명하는 섹션이 있습니다.

각 터미널 규칙은 원자 값 (Ecore EDataType)을 반환합니다. 자세한 내용은 "참조 문 서", "문법 언어", "구문", "규칙", "터미널 규칙" 기본적으로 ecore :: EString 인스턴스가 리턴되어야한다고 가정합니다. 그러나 다른 유형을 제공하려는 경우 지정할 수 있습니다.

이 절에서는 문법 변경 및 제공해야하는 값 변환기 등록에 대해서도 설명합니다.

기본적으로 "터미널 규칙"의 경우와 동일하며 "값 변환기"섹션으로 전달한다는 또 다른 섹션 "데이터 형식 규칙"이 있습니다.