Parsing Antlr符号-需要示例
我正在研究一个使用Antlr并定义了许多语法的代码库。我看到了下面的用法,但不清楚它们的实际含义Parsing Antlr符号-需要示例,parsing,token,antlr,symbols,Parsing,Token,Antlr,Symbols,我正在研究一个使用Antlr并定义了许多语法的代码库。我看到了下面的用法,但不清楚它们的实际含义 标记{1,2} 我看不出有一两个定义 符号->和^ 这样做的目的是什么?我在lexer和解析器规则中都看到了这些 符号[] 这在以下情况中使用 标记{SET} 身份证: 令牌1:。。集合[$ID] 这是什么意思?示例将非常有用。这些项目看起来好像来自ANTLR3语法。第一部分可能是标记部分(注意复数形式),如下所示: tokens { ONE, TWO } 它定义了许多“虚拟”
- 我看不出有一两个定义李>
- 这样做的目的是什么?我在lexer和解析器规则中都看到了这些
- 这在以下情况中使用
这是什么意思?示例将非常有用。这些项目看起来好像来自ANTLR3语法。第一部分可能是标记部分(注意复数形式),如下所示:
tokens {
ONE,
TWO
}
它定义了许多“虚拟”令牌。这些被称为“虚拟”,因为它们没有要匹配的输入,通常用于树重写(例如,根据某些条件更改标记类型,例如谓词的结果)
生成AST时,符号->
和^
用于树重写(ANTLR4 btw不再支持,因为它根本不生成AST,而是生成解析树)^
表示根节点,它使解析器在活动规则中创建当前标记的树,并使用标记的标记作为该树的根<代码>->允许更进一步地重写结果(不同的顺序、添加虚拟令牌、省略令牌等)
问题的最后一部分演示了令牌操纵的使用。此语法导致解析器创建一个新的令牌集,其中包含来自匹配ID令牌的所有值(类型除外,但例如源位置、通道等)。所以它也是重写机制的一部分
更新:
ANTLR3主页仍然存在,并且有一个带有一些文档的Wiki:(或通过)。这些项目看起来好像来自ANTLR3语法。第一部分可能是标记部分(注意复数形式),如下所示:
tokens {
ONE,
TWO
}
它定义了许多“虚拟”令牌。这些被称为“虚拟”,因为它们没有要匹配的输入,通常用于树重写(例如,根据某些条件更改标记类型,例如谓词的结果)
生成AST时,符号->
和^
用于树重写(ANTLR4 btw不再支持,因为它根本不生成AST,而是生成解析树)^
表示根节点,它使解析器在活动规则中创建当前标记的树,并使用标记的标记作为该树的根<代码>->允许更进一步地重写结果(不同的顺序、添加虚拟令牌、省略令牌等)
问题的最后一部分演示了令牌操纵的使用。此语法导致解析器创建一个新的令牌集,其中包含来自匹配ID令牌的所有值(类型除外,但例如源位置、通道等)。所以它也是重写机制的一部分
更新:
ANTLR3主页仍然存在,并且有一个带有一些文档的Wiki:(或通过)。@MikeThanks。这在一定程度上是有帮助的,但是你能给我举一些例子来描述这些吗。示例将使事情变得更好。所有这些都在权威的ANTLR3指南中描述。这是所有认真使用ANTLR3(顺便说一句,ANTLR4也是如此)的人的最终参考。据我所知,没有一个简明的总结能描述所有这些。通常你会学习其他语法,从例子中学习。我给我的答案添加了一个链接。@MikeThanks。这在一定程度上是有帮助的,但是你能给我举一些例子来描述这些吗。示例将使事情变得更好。所有这些都在权威的ANTLR3指南中描述。这是所有认真使用ANTLR3(顺便说一句,ANTLR4也是如此)的人的最终参考。据我所知,没有一个简明的总结能描述所有这些。通常你会学习其他语法,从例子中学习。我给我的答案添加了一个链接。