Javascript 如何从PEG.js解析器导出状态变量

Javascript 如何从PEG.js解析器导出状态变量,javascript,node.js,parsing,peg,pegjs,Javascript,Node.js,Parsing,Peg,Pegjs,我开始使用优秀的JavaScript解析器生成器 实现Qt的qmake项目文件解析器*.pro。 它看起来像bash脚本,带有变量赋值和函数调用。 首先,我需要将所有作业解析到某种字典中, 并在外部代码中使用它 我无法理解如何从外部函数访问内部解析器状态。 例如:我需要解析我的pro文件,并将状态保存到客户端代码可访问变量中,例如JavaScript字典。 但我不能做到这一点 语法现在只理解TEMPLATE=app这样的赋值语句: 上述语法已在qmake-project-parser.js中成功

我开始使用优秀的JavaScript解析器生成器 实现Qt的qmake项目文件解析器*.pro。 它看起来像bash脚本,带有变量赋值和函数调用。 首先,我需要将所有作业解析到某种字典中, 并在外部代码中使用它

我无法理解如何从外部函数访问内部解析器状态。 例如:我需要解析我的pro文件,并将状态保存到客户端代码可访问变量中,例如JavaScript字典。 但我不能做到这一点

语法现在只理解TEMPLATE=app这样的赋值语句:

上述语法已在qmake-project-parser.js中成功编译 解析器使用代码frontend.js文件:

以及输出:

C:\Projects\qmake-project-parser>node frontend.js
PEG.js parser output:
[ [ [], undefined, [] ] ]
System variables dict:
**undefined**
问题是:为什么输出了undefined,但成功应用了REF 1规则? 我做错了什么

谢谢


另外,我是JavaScript新手,所以请对我的愚蠢错误耐心点:

从我使用PEG.js的记忆中,开始规则通常用于返回您想要作为解析器输出返回的任何内容:

Start = Statement* { return SystemVariablesDict }

最后应该是parserOutput。

谢谢!现在,解析器本身返回所需的字典。但是使用这种方式,我只能使用一个全局状态变量。有没有办法将客户机代码变量转发到PEG.js内部?当然,您可以导出一个嵌套对象,该对象包含您希望从解析器传递到调用代码的所有内容。好的,接受!我需要更深入地学习JavaScript中的类型系统
C:\Projects\qmake-project-parser>node frontend.js
PEG.js parser output:
[ [ [], undefined, [] ] ]
System variables dict:
**undefined**
Start = Statement* { return SystemVariablesDict }