我正在查看使用Antlr的代码库,并定义了许多语法。我看到使用了以下内容,但不清楚它们实际意味着什么
- 令牌{ONE,TWO}
醇>
- 符号 - >和^
醇>
- 符号[]
醇>
令牌{SET}
ID:...
TOKEN1:.. SET [$ ID]
这是什么意思?例子会有很大帮助。
答案 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)。