这个ANLTR4符号是什么意思?

时间:2016-04-07 20:38:52

标签: grammar antlr4 ucb-logo

我有一个关于我发现为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\[\]();~{}] )*;

我猜数组意味着它可以以{开头,并且具有任意数量的级别,但必须以}结尾。 我认为其他人是某种形式的正则表达式? 据我所知,正则表达式对于不同的编程语言是不同的。

我做对了吗?

1 个答案:

答案 0 :(得分:1)

Antlr不执行正则表达式。它确实实现了一些相同的运算符,但这就是相似性在很大程度上结束的地方。

WORD规则中的第一个子项(array)是谓词 - 与正则表达式世界中的任何内容无关。它们在Antlr文档中定义,并在TDAR中详细解释。

您对dispatch_async(dispatch_get_main_queue(),{ self.performSegueWithIdentifier("segue", sender: nil) }); 规则的理解基本上是正确的。