0
rule : block+ ;
block : '[' String ']' ;
String : ([a-z] | '[' | '\\]')+ ;
诀窍是字符串可以包含[而不反斜杠逃逸和]与backslasash逃逸,所以在这个例子:
[hello\]world][hello[[world]
第一个块可以正确解析,但第二个解析器试图找到]每[。有没有办法说antlr解析器忽略这个独立的[?我无法更改格式,但我需要找到antlr的一些解决方法。
PS:没有ANTLR有algorythm避免这种情况,是这样的:收集[在队列前,我们会发现第一]并使用队列的唯一负责人。但我真的需要antlr = _ =
是的,它真的有用,谢谢!但是,你能详细解释它的工作原理吗?我的意思是,似乎甚至有重要的令牌和模式的定义顺序...所以如果我要扩展这个语法,我需要了解我在做什么=) – doubledeath
我已经将文档的链接添加到答案中。是的,'mode ModeName'指令后声明的令牌与该模式相对应。 –