하나의 요소가 공통 터미널 규칙 ID에 대한 완벽한 후보인 규칙을 정의하려고합니다. 나는 샘플 코드를 테스트 할 수있는 편집기를 시작하면 ID 규칙은 문자열 "ABC"를 일치하지 않습니다 :터미널 규칙 ID가 유효한 값과 일치하지 않습니다.
Define : ABC : Holder_1
내가 "기대 일치하지 않는 입력 'ABC'RULE_ID"를 얻을.
ID 규칙과 문법적으로 충돌하여이 오류가 발생합니까?
grammar com.testco.Test with org.eclipse.xtext.common.Terminals
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
generate defwiz "http://www.testco.com/Test"
Define_Holder:
'Definition' ':' holder_name=ID ':' holder_number=HOLDER_NUMBER (':' attribute=define_attr)? (':' pad=holder_pad)?
;
holder_pad:
HEX
;
Type:
TYPE_TERM ':' type_value=TYPE_VAL
;
//***************** TERMINALS *****************
terminal TYPE_TERM:
'Type_' INT+
;
terminal PROFILE:
(PROFILE_ID)(PROFILE_ID)'.'(PROFILE_ID)(PROFILE_ID)
;
terminal HOLDER_NUMBER returns ecore:: EString:
'Holder_' INT+;
terminal HEX returns ecore:: EString :
('0'..'9'|'A'..'F')
;
terminal PROFILE_ID : '^'?('a'..'z'|'A'..'Z') ('a'..'z'|'A'..'Z'|'0'..'9')*;
//***************** ENUMS *****************
enum define_attr:
BINARY='Binary' |
SCRAMBLE='Scramble' |
FORCESIZE='ForceSize' |
FIXEDSIZE='FixedSize'
;
내가 작성하려고하는 언어가 _0x_ 접두사를 인식하지 못하기 때문에 주어진 값이 변수가 입력되지 않은 변수의 유형과 일치 할 것으로 기대합니다. 확실히 아주 펑키 한 언어입니다. –