我有一个关于我发现为ANTLR4生成的UCB徽标语法符号的问题。有一些符号无法表达和思考要求。如果有人愿意澄清,我将不胜感激。 以下是我不太了解的符号:
WORD
: {listDepth > 0}? ~[ \t\r\n\[\];] ( ~[ \t\r\n\];~] | LINE_CONTINUATION | '\\' ( [ \t\[\]();~] | LINE_BREAK ) )*
| {arrayDepth > 0}? ~[ \t\r\n{};] ( ~[ \t\r\n};~] | LINE_CONTINUATION | '\\' ( [ \t{}();~] | LINE_BREAK ) )*;
array
: '{' ( ~( '{' | '}' ) | array )* '}';
NAME
: ~[-+*/=<> \t\r\n\[\]()":{}] ( ~[-+*/=<> \t\r\n\[\](){}] | LINE_CONTINUATION | '\\' [-+*/=<> \t\r\n\[\]();~{}] )*;
我猜数组意味着它可以以{开头,并且具有任意数量的级别,但必须以}结尾。 我认为其他人是某种形式的正则表达式? 据我所知,正则表达式对于不同的编程语言是不同的。
我做对了吗?
答案 0 :(得分:1)
Antlr不执行正则表达式。它确实实现了一些相同的运算符,但这就是相似性在很大程度上结束的地方。
WORD
规则中的第一个子项(array
)是谓词 - 与正则表达式世界中的任何内容无关。它们在Antlr文档中定义,并在TDAR中详细解释。
您对dispatch_async(dispatch_get_main_queue(),{
self.performSegueWithIdentifier("segue", sender: nil)
});
规则的理解基本上是正确的。