0
rule : block+ ;
block : '[' String ']' ;
String : ([a-z] | '[' | '\\]')+ ;
訣竅是字符串可以包含[而不反斜槓逃逸和]與backslasash逃逸,所以在這個例子:
[hello\]world][hello[[world]
第一個塊可以正確解析,但第二個解析器試圖找到]每[。有沒有辦法說antlr解析器忽略這個獨立的[?我無法更改格式,但我需要找到antlr的一些解決方法。
PS:沒有ANTLR有algorythm避免這種情況,是這樣的:收集[在隊列前,我們會發現第一]並使用隊列的唯一負責人。但我真的需要antlr = _ =
是的,它真的有用,謝謝!但是,你能詳細解釋它的工作原理嗎?我的意思是,似乎甚至有重要的令牌和模式的定義順序...所以如果我要擴展這個語法,我需要了解我在做什麼=) – doubledeath
我已經將文檔的鏈接添加到答案中。是的,'mode ModeName'指令後聲明的令牌與該模式相對應。 –