我有其中我寫的詞法標記爲一要求:如果ANTLR與任何已定義的令牌不匹配,是否有可用的默認令牌?
IF_LEXER_TOKEN: ('I')('F') (.)* ('E')('N')('D')_('I')('F')
ANY :(options {greedy=true;}: .)* ;
但如果輸入給定爲:
IF a>b then a=b END_IF
IF c>d then c=d
在這種情況下,預期的行爲是它應該使用令牌第一行爲IF_LEXER_TOKEN,第二行爲ANY標記,但相反,它考慮了兩行的ANY標記。 請幫忙。 注意:由於某些限制,我無法爲以上方案中的 創建解析器規則。
爲什麼你將所有的單個字母標記放入一個自己的括號中?看起來很奇怪。 –