2017-01-28 26 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代碼

def 123456 

只匹配文本句子令牌並沒有找到KEYWORD令牌。不管令牌的順序如何。

有什麼想法?

回答

0

你的問題是你跳過WSNL。因此解析器甚至不會看到相應的令牌。這就是爲什麼它不能匹配它們(它們不是輸入解析器的TokenStream的一部分)。

爲了解決這個問題,你可能會看看詞彙模式或this question