在没有语法文件的情况下,我需要做些什么才能在ANTLR中实现语法,解析器和Lexer



从我在网上看到的示例中,到目前为止我阅读的内容似乎是,使用ANTLR创建语言的典型方法需要.g4语法文件和类似的工具基于此生成Java源的maven-antlr-plugin

是否可以在不存在语法文件的情况下从头开始实现事物,并且必须使用这种生成器?

在不介绍太多无聊的细节的情况下,我们需要实施一种语言,该语言将在运行时定义了很多动态零件,并且对它们进行硬编码对我们不起作用。因此我的问。

以编程方式实施此功能最少需要什么?Lexer和解析器的实现?还有什么?

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

我认为这在通常的情况下是完全不可行的。ANTLR是一种从语法文件生成解析器的工具...如果您拿走生成解析器(因为那是"生成代码"(并使用语法文件,那么,实际上,您只是将整个antlr带走。

您可能可以使用运行时库的某些部分(也许是ATN?或一些低级的内容,例如tarneTream(,但是总的来说,您几乎需要从Scratch中编写自己的一般Parser/Lexer。p>让我扭转您的问题:您想从使用antlr?

中获得什么

您最好实现Earley解析器,该解析器本质上是由一组语法规则直接驱动的。

想要另一种语言吗?修改规则集,将其交给Earley解析引擎。

可能是一个更有趣的问题:"哪种解析机械对于某些规则是恒定的语法有效/有效,有些是动态的?"我很长一段时间以来一直在跟踪解析机器,但没有看到这个问题提出的问题,更不用说看到了一个答案了。我怀疑,如果您部分评估了针对基线调子的Earley解析器,并使用占位符的占位符,但这显然是一个研究项目。

最新更新