2017-01-28 6 views
0

여기 내 문법.Lexer 우선 순위 공백으로

grammar MainGrammar; 

mainFile: statement*; 
statement: stackStatement NL; 
stackStatement: KEYWORD WS INT; 

INT: [0-9]+; 
KEYWORD: 'def'; 
SENTENCE: (~[\r\[email protected]:=])+; 
WS: [ \t]+ -> skip; 
NL: '\r'? '\n' -> skip; 

나는 주요 규칙 MainFile 코드에 노력 문장 토큰으로 텍스트 만 일치 KEYWORD 토큰을 찾을 수없는

def 123456 

. 토큰의 순서는 어떻든간에.

아이디어가 있으십니까?

답변

0

WSNL을 건너 뛰는 것이 문제입니다. 따라서 파서는 각 토큰을 보지 못합니다. 그것이 일치하지 않는 이유입니다 (그들은 파서에 공급되는 TokenStream의 일부가 아닙니다).

이 문제를 해결하기 위해 어휘 모드를 살펴 보거나 this question