PegJS外部变量提供者和访问者

时间:2020-04-25 06:26:25

标签: pegjs

我已经在PegJS中定义了一个基本的函数表达语法。我有两个问题:

  1. 它具有我在调用parser.parse时想要提供的外部变量和函数。类似于myParser.parse("x + y", {x: 1, y: 2})。我使用全局变量破解了一个解决方案,但是有更好的方法吗?

  2. 现在,我想实现两种类型的访问者,以使用从Javascript传入的变量输出表达式的结果,或输出SQL表达式以在数据库中执行它。像这样:

myParser.parse("MEAN(x, y)", "JavaScript", {x: 1, y: 2, MEAN: (args) => Math.mean(...args) })

将返回1.5,但是:

myParser.parse("MEAN(x, y)", "SQL", {})

将返回一个SQL表达式AVG(x, y)

PegJS中有一个visitor概念。我想我可以写2个访问者MathVisitorSqlVisitor,并用不同的依赖项对其进行配置,以遍历解析树并输出所需的内容。但是到目前为止,我仍无法弄清这是否是我需要的以及如何使用它。

0 个答案:

没有答案