1
현재 회사에서 사용하는 사내 언어 용 Eclipse 기반 편집기를 작성하려고합니다. 이 언어는 다음 형식의 문장으로 구성됩니다.Xtext의 문자열 구문 분석
{action}: {arguments}
... 자체 회선. {arguments}의 형식은 수행중인 {action}의 유형에 따라 다릅니다. 스크립트 조각의 예는 다음과 같습니다.
banner: Some string with numbers and punctuation (23) in it!
# some comment
timeout: 42
내 조각 문제와 같은 조각을 구문 분석하고 있습니다. 댓글과 타임 아웃 문이 작동하지만 배너 문을 다루는 규칙을 만들 수없는 것 같습니다. 모든 시도가 Antlr의 "token definition unreachable"경고가되거나 편집기가 입력을 일치시킬 수 없습니다. 나에게 ANTLR 경고를주는 ...
Banner:
'banner:' name=ANY_OTHER*;
및
Banner:
'banner:' name=FF_STRING;
terminal FF_STRING : ('a'..'z'|'A'..'Z'|'0'..'9'|'.'|':'|' ')+;
: 나는 배너 문에 대한 다음과 같은 규칙을 시도했습니다. 내가 해킹 한 것은 처음에는 '#'대신 'banner :'를 사용하여 SL_COMMENT와 동일한 터미널을 간단하게 만드는 것입니다. 단점은 구문 색상 표시가 없으며 자동 완성 목록에 '배너'가 표시되지 않는다는 것입니다.
어떤 조언을 환영합니다.
감사합니다. 이것은 여전히 효과가있는 것처럼 보이지만, 내 판단 규칙에 ':'을 추가하려고하면 antlr "결정이 다음과 같은 입력과 일치 할 수 있습니다."라는 경고가 표시됩니다. 이는 '배너'(즉, 배너와 콜론 사이에 공백이있을 수 있음) 바로 다음에 별도의 키워드로 ':'이 있기 때문입니다. – Exponent