我对 Spidermonkey Parser 非常陌生,我有两个问题。第一个是有一个关于如何使用 spidermonkeyParser 生成 Javascript 文件的 AST 的良好文档(针对初学者)。第二个是知道如何遍历 AST。我的目标是使用 AST 中的信息对 JS 文件进行一些静态分析(类型分析、字符串分析)。
谢谢
我对 Spidermonkey Parser 非常陌生,我有两个问题。第一个是有一个关于如何使用 spidermonkeyParser 生成 Javascript 文件的 AST 的良好文档(针对初学者)。第二个是知道如何遍历 AST。我的目标是使用 AST 中的信息对 JS 文件进行一些静态分析(类型分析、字符串分析)。
谢谢
Spidermonkey 的 AST 暴露为 Javascript 对象。这意味着您应该编写一个小的 Javascript 脚本,使用该脚本来读取和解析您想要解析的实际 Javascript 源文件,并将 AST 作为 Javascript 对象获取。
此功能在独立的 SpiderMonkey shell 中可用(可能不在 Firefox 附带的版本中)。您需要下载完整的 Spidermonkey 源代码并使用捆绑的 python 脚本构建它。Shell 将与您的独立 Spidermonkey Javascript 引擎一起构建。这个 shell 只是一个接受用户命令的小型控制台程序。shell 可以读取和执行独立的 Javascript 脚本。特别是,由这个 Shell 执行的那些 Javascript 脚本可以访问一个名为的额外全局对象Reflect
,该对象具有一个名为parse()
. Shell 还支持额外的文件 I/O 函数,这是您在要解析的目标 Javascript 源中读取的方式。
完整 AST 的描述在这里:
https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API