0

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

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

我做对了吗?

4

1 回答 1

1

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

规则中的第一个子项 ( {listDepth > 0}?)WORD是谓词 - 与正则表达式世界中的任何内容都没有关系。它们在 Antlr 文档中定义,并在 TDAR 中详细解释。

您对array规则的理解基本上是正确的。

于 2016-04-07T20:56:36.903 回答