我有一個規則匹配的字符串,看起來像這樣:ANTLR的詞法分析規則
STRING
: '"' (~('"' | '\\') | '\\' .)* '"'
;
我不想引號是標記文本的一部分。在Antlr2中,我會在引號後面加上'!'
,告訴Antlr不要將它們添加到文本中。
注意'!'下面是。
STRING
: '"'! (~('"' | '\\') | '\\' .)* '"'!
;
然而,在Antlr3我再也不能這樣做,因爲我得到的錯誤:
warning(149): Crv__.g:0:0: rewrite syntax or operator with no output option; setting output=AST
我不知道我是否可以使用一個重寫規則這裏我不知道該怎麼寫匹配所有標記'。'
我唯一的想法是抓住匹配的文本並且不用引號就可以返回它,但我不確定如何做到這一點,因爲令牌尚未創建。
我正在使用C Antlr運行時。 我該如何做到這一點?
在這種情況下,您將要刪除感嘆號。此外,您現在只刪除引號,但留下可能在其中跳出其他字符的反斜槓:我希望它們在引號時被刪除從標記中剝離 –
@感謝!你是對的事實上,最初的問題是ANTLR 3不允許感嘆號: )我從記憶中重新輸入了我的答案。我已經更新了我的答案。 – chollida
沒有比添加這種耗時的操作更好的解決方案嗎? –