[英]Is there a default token available in ANTLR in case it doesn't match any of the already defined Tokens?
我有一個要求,其中我已將Lexer令牌寫為:
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令牌。 請幫助。 注意:由於某些限制,我無法為上述情況創建解析器規則。
不,沒有這樣的默認令牌。 但是您可以輕松創建它:
ANY: .*?;
最好是使此非貪婪性允許在輸入之后匹配其他令牌。 順便說一句:在詞法分析器中定義完整序列有幾個缺點,例如,如果詞法分析器規則失敗,錯誤報告將無法為您提供充分的理由。 您必須顯式處理所有空格。 而且您放棄了這樣的原則,通常令牌之間沒有多少空格(包括換行符)無關緊要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.