2017-01-28 8 views
0

ここに私の文法があります。レクサー優先度付きスペース

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コードのためにしてみてくださいSENTENCEトークンとしてのみテキストに一致し、KEYWORDトークンを見つけることができません

def 123456 

。トークンの順序は問わない。

答えて

0

WSNLをスキップしています。したがって、パーサーはそれぞれのトークンを見ることさえできません。そのため、一致させることができません(これは、パーサに入力されるTokenStreamの一部ではありません)。

これを修正するには、字句モードを調べるか、this question