从我在网上看到的示例以及迄今为止所读到的内容来看,使用 Antlr 创建语言的典型方法似乎需要一个 .g4
语法文件和一个类似的工具maven-antlr-plugin
基于此生成 Java 源。
是否可以从头开始实现一些东西,而无需语法文件并且必须使用这样的生成器?
在不涉及太多无聊细节的情况下,我们需要实现一种语言,该语言将在运行时定义相当多的动态部分,并且对它们进行硬编码对我们来说不起作用。因此我提出了这样的要求。
以编程方式实现这一点至少需要什么?词法分析器和解析器的实现?还有什么?
有人可以提供一个不需要生成代码的简约实现的示例吗?
最佳答案
我认为这在一般情况下是完全不切实际的。 Antlr 是一个从语法文件生成解析器的工具...如果你去掉生成解析器(因为那是“生成代码”)和使用语法文件,那么,实际上,你只是去掉了整个 Antlr。
您可能会使用运行时库的某些部分(也许是 ATN?或一些较低级别的东西,例如 CharacterStream),但总的来说,您几乎需要从头开始编写自己的通用解析器/词法分析器。
让我换个角度问你:你想从使用 Antlr 中获得什么?
关于java - 如果没有语法文件,我需要做什么才能在 Antlr 中以编程方式实现语法、解析器和词法分析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56212221/