java - 如果没有语法文件,我需要做什么才能在 Antlr 中以编程方式实现语法、解析器和词法分析器?

标签 java antlr

从我在网上看到的示例以及迄今为止所读到的内容来看,使用 Antlr 创建语言的典型方法似乎需要一个 .g4 语法文件和一个类似的工具maven-antlr-plugin 基于此生成 Java 源。

是否可以从头开始实现一些东西,而无需语法文件并且必须使用这样的生成器?

在不涉及太多无聊细节的情况下,我们需要实现一种语言,该语言将在运行时定义相当多的动态部分,并且对它们进行硬编码对我们来说不起作用。因此我提出了这样的要求。

以编程方式实现这一点至少需要什么?词法分析器和解析器的实现?还有什么?

有人可以提供一个不需要生成代码的简约实现的示例吗?

最佳答案

我认为这在一般情况下是完全不切实际的。 Antlr 是一个从语法文件生成解析器的工具...如果你去掉生成解析器(因为那是“生成代码”)和使用语法文件,那么,实际上,你只是去掉了整个 Antlr。

您可能会使用运行时库的某些部分(也许是 ATN?或一些较低级别的东西,例如 CharacterStream),但总的来说,您几乎需要从头开始编写自己的通用解析器/词法分析器。

让我换个角度问你:你想从使用 Antlr 中获得什么?

关于java - 如果没有语法文件,我需要做什么才能在 Antlr 中以编程方式实现语法、解析器和词法分析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56212221/

相关文章:

java - 如何设置文件的隐藏属性

python - 如何使用 python 在 ANTLR 中执行自定义错误报告?

java - 简单的自定义表达式解析器

javascript - 为什么 antlr4 在 LT 上会卡住!*

c# - ANTLR:获取 token 名称?

java - 如何在 Antlr-4 词法分析器规则的操作中获取 token 属性

JavaHelp:是否可以从类路径之外的位置加载帮助?

java - 我应该如何处理 JSoup 中删除的元素?

java - 状态管理-【切换状态,重玩游戏】

java - Android 应用程序中的 3D