我如何在 ANTLR 4 中使用自定义标记和上下文
How do I use custom tokens and contexts in ANTLR 4
我使用 ANTLR3 已经有一段时间了。我只是切换到 ANTLR 4。一般来说,我的学生在我的编译器中更容易理解 class。但是,从我找到的书和其他文档中并不清楚如何使构成解析树节点的标记和上下文自定义 classes。对于 ANTLR 3,我只是使用选项让生成的代码在生成的代码中重命名它们。在 ANTLR 4 中呢?是否有我应该能够找到的文档?
实施 TokenFactory<CustomTokenType>
,其中 CustomTokenType
扩展 CommonToken
。在调用解析器之前在词法分析器(和需要的解析器)上设置 TokenFactory。
在“The Definitive ANTLR 4 Reference”一书的源代码的 'extras' 目录中查找一些简单示例。这些在书中都有讨论。
查看 Converter.java 中的 GenPackage/GenPackageModel for a worked example, specifically the parse 方法。
Github 上还有其他示例 -- 使用 'language:antlr' 作为搜索词。其他的在它们的实现语言下分类,因此更难找到——'language:java antlr' 会找到很多。
我使用 ANTLR3 已经有一段时间了。我只是切换到 ANTLR 4。一般来说,我的学生在我的编译器中更容易理解 class。但是,从我找到的书和其他文档中并不清楚如何使构成解析树节点的标记和上下文自定义 classes。对于 ANTLR 3,我只是使用选项让生成的代码在生成的代码中重命名它们。在 ANTLR 4 中呢?是否有我应该能够找到的文档?
实施 TokenFactory<CustomTokenType>
,其中 CustomTokenType
扩展 CommonToken
。在调用解析器之前在词法分析器(和需要的解析器)上设置 TokenFactory。
在“The Definitive ANTLR 4 Reference”一书的源代码的 'extras' 目录中查找一些简单示例。这些在书中都有讨论。
查看 Converter.java 中的 GenPackage/GenPackageModel for a worked example, specifically the parse 方法。
Github 上还有其他示例 -- 使用 'language:antlr' 作为搜索词。其他的在它们的实现语言下分类,因此更难找到——'language:java antlr' 会找到很多。