【发布时间】:2016-04-01 12:51:51
【问题描述】:
根据Parser API,您可以致电Reflect.parse() 获取AST。不幸的是,当尝试在 C++ 中评估一个脚本时,它给了我一个错误,说 ReferenceError: Reflect is not defined:
const char *script = "var r = Reflect.parse(\"obj.foo + 42\");";
bool ok = JS_EvaluateScript(cx, global, script, strlen(script), filename, lineno, rval.address());
实际上,我想解析一些简单的 JS 脚本并在 C++ 中获取 AST,我不喜欢绕道而行并在 JS 本身中对其进行分析的方式。你有什么建议吗?文档不是很好恕我直言。
我尝试使用 JS_CompileScript(),但似乎 1) JSScript 类的成员在使用编译后的库时不可见 2) 不再有关于树的信息 (?)。
我很想使用非常旧的 1.6 版本,因为那里有一个非常好的parsing tutorial。您对此有何看法?
另一种方法是不编译 SpiderMonkey 并直接使用 Parser 类。
任何提示/建议(在您看来)是最佳方式,我们将不胜感激。谢谢你:)
【问题讨论】:
标签: javascript c++ parsing spidermonkey