这是背景,我正在尝试创建一个 DSL 以允许客户编写简单的脚本来查询我们基于 mongodb 的数据库。我选择antlr来实现DSL。
根据我的理解(如果不正确,请告诉我)有两种方法可以将 antlr 生成的解析器集成到系统中:
- 将代码嵌入到语法文件中,以便生成的解析器可以直接用于查询数据库并以某种格式(例如json编码)返回结果
- 在将 DSL 文件提供给它之后,保持解析器纯粹是一个解析器,并通过从生成的解析器类中检索 AST 在另一个类中构造查询
所以antlrers,你认为我作为一个antlr新手应该走哪一条路?您能否列出每种方法的优缺点,或者您有其他方法可以推荐?