【问题标题】:What does this ANLTR4 notation mean?这个 ANLTR4 符号是什么意思?
【发布时间】:2016-04-07 20:38:52
【问题描述】:

我有一个关于 UCB 徽标语法表示法的问题,我发现它是为 ANTLR4 生成的。有些记号看不懂,想问问。如果有人愿意澄清,我将不胜感激。 以下是我不太明白的符号:

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\[\]();~{}] )*;

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

我说对了吗?

【问题讨论】:

    标签: grammar antlr4 ucb-logo


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      • 2012-11-03
      • 2016-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多