Antlr符号 - 需要示例

时间:2016-11-10 11:23:30

标签: parsing token antlr symbols

我正在查看使用Antlr的代码库,并定义了许多语法。我看到使用了以下内容,但不清楚它们实际意味着什么

  
      
  1. 令牌{ONE,TWO}
  2.   
  • 我在任何地方都看不到一个或两个。
  
      
  1. 符号 - >和^
  2.   
  • 这些的目的是什么?我在词法分析器和解析器规则中都看到了这些
  
      
  1. 符号[]
  2.   
  • 以下用于

令牌{SET}

ID:...

TOKEN1:.. SET [$ ID]

这是什么意思?例子会有很大帮助。

1 个答案:

答案 0 :(得分:2)

这些项目看起来好像来自ANTLR3语法。第一部分可能是一个令牌部分(注意复数),如下所示:

tokens {
  ONE,
  TWO
}

定义了一些"虚拟"令牌。这些被称为"虚拟"因为它们没有匹配的输入,通常用于树重写(例如,根据某些条件更改标记类型,例如谓词的结果)。

符号->^在生成AST时用于树重写(并且不再受ANTLR4 btw支持,因为它根本不会产生AST,但是解析树)。 ^表示根节点,它使解析器在活动规则中创建当前令牌的树,并使用标记的令牌作为该树的根。 ->允许更多地重写结果(不同的顺序,添加虚拟标记,遗漏标记等)。

问题的最后一部分演示了使用令牌操作。该语法使解析器从匹配的ID令牌创建具有所有值(除了类型,但是例如源位置,通道等)的新令牌SET。所以它也是重写机制的一部分。

<强>更新: ANTLR3主页仍然存在,并且有一些带有一些文档的Wiki:https://theantlrguy.atlassian.net/wiki/display/ANTLR3/ANTLR+3+Wiki+Home(或通过http://www.antlr3.org)。