当前位置: 首页 > 知识库问答 >
问题:

ANTLR:将生成的解析器集成到系统中的最佳实践

薛云瀚
2023-03-14

这里是背景,我试图创建一个DSL,让客户写简单的脚本查询到我们的mongodb为基础的数据库。我选择antlr来实现DSL。

    null

那么antlrers,你认为哪一个是我作为一个antlr新手应该走的路?你能列出每种方法的优点和缺点吗?或者你有其他方法可以推荐?

共有1个答案

胥宏义
2023-03-14

您不应该将业务逻辑嵌入到解析器中,因为这可能会导致维护方面的麻烦:您不希望重新编译语法来修复业务逻辑中的bug,更不用说必须在生成的解析器中调试业务逻辑的噩梦般的前景了。因此,除了最小的玩具项目之外,选择一应该是不可能的。

选项二可以通过多种方式实现:您可以(A)让ANTLR为您生成AST节点,并编写树解析器,或者(B)跳过树解析器,在解析器的操作中生成自己的表示。我在生产项目中用Java和C#尝试了这两种方法,这两种方法都非常有效。我认为,在(A)和(B)之间的选择很大程度上取决于您的个人口味,只要业务逻辑不在解析器之外。

 类似资料:
  • 我正在尝试使用ANTLRV4为一个简单的自定义语法生成一个lexer和解析器。问题是,当我运行Antlr.jar实用程序时,它生成了一个Lexer文件,而不是一个解析器文件,我认为它应该生成。 简单语法 hellolexer.js hellolexer.tokens 所需输出 hellolexer.js helloparser.js hellolistener.js hellovisitor.js

  • 从这里使用Lexer和解析器: https://raw.githubusercontent.com/antlr/grammars-v4/master/java/JavaLexer.g4 https://raw.githubusercontent.com/antlr/grammars-v4/master/java/JavaParser.g4 使用antlr-4.6生成Python3目标 antlr-

  • 我使用的是带有Linux的桌面(特别是Pop_OS!20.04,类似于ubuntu)。 我需要运行ASE,它是用于原子模拟的python包。这可以通过多种方式安装(apt、pip、conda)。为了达到我的目的,我需要用conda安装它(尽可能与社区保持一致)。由于我不喜欢conda在bash中的集成方式,我决定使用pyenv作为虚拟环境管理器。 因此,对于另一个stackoverflow问题,最

  • 问题内容: 我正在创建一个Web API,需要一种很好的方法来非常快速地生成一些格式正确的xml。我找不到在python中执行此操作的任何好方法。 注意:一些库看起来很有前途,但要么缺少文档,要么仅输出到文件。 问题答案: 使用lxml: 输出: 有关更多信息,请参见教程。

  • 我有一个简单的HelloWorld。g4语法(见底部)。我能够成功生成<代码>。py文件使用: 现在我想使用带有标志的来生成解析树GUI。我安装了ANTRL Python运行时()。我可以打开一个Python解释器并键入: 并且解释器识别 模块。 当我像这样运行< code>TestRig时: 我收到此错误消息: 从我的调查中,我发现了几篇列出相同错误消息的帖子。但是,在这些情况下,他们忘记在类路

  • 本文向大家介绍将node.js与SAP HANA系统集成,包括了将node.js与SAP HANA系统集成的使用技巧和注意事项,需要的朋友参考一下 您可以使用node.js将数据插入HANA数据库。您还可以通过JDBC驱动程序连接到SAP HANA数据库。 要通过JDBC连接,您需要安装JDBC驱动程序ngdbc.jar。此驱动程序是作为SAP HANA客户端安装的一部分安装的。Ngdbc.jar