什么是JavaScript AST,如何使用它?
抽象语法树。。我总是听说在Github上编译到SpiderMonkey AST。什么是JavaScript AST,如何使用它?,javascript,abstract-syntax-tree,Javascript,Abstract Syntax Tree,抽象语法树。。我总是听说在Github上编译到SpiderMonkey AST。 那么,这是JS语法树的实际标准吗?还有V8,V8使用的是同一种AST吗 我该怎么玩呢?SpiderMonkey提供了。这可能是获得语法对象的最简单方法 还有一些开放的js解析器,比如(实际上是ECMAScript,但它很流行)1。您可以看看。一个在线工具,用于探索由10多个解析器生成的AST。这是学习一门语言的好工具。 2.您还可以将js代码粘贴到中,然后单击“show ast”按钮,您将看到ast 演示js
那么,这是JS语法树的实际标准吗?还有V8,V8使用的是同一种AST吗 我该怎么玩呢?SpiderMonkey提供了。这可能是获得语法对象的最简单方法 还有一些开放的js解析器,比如(实际上是ECMAScript,但它很流行)1。您可以看看。一个在线工具,用于探索由10多个解析器生成的AST。这是学习一门语言的好工具。
2.您还可以将js代码粘贴到中,然后单击“show ast”按钮,您将看到ast 演示js代码:
function foo(d) {
d += 3;
return d+999
}
function bar(d) {
return d*100
}
如果您想试用Marijnh教授的acron解析器 请尝试以下链接: 这是一个小巧、快速的JavaScript解析器,完全用JavaScript编写 上面提到的使用Esprima引擎,也用JavaScrpt编写 JavaScript在解析AST中占据主导地位,因为JavaScript引擎现在已经进行了超级优化 JS语法树的SpiderMonkey AST标准?V8使用的是同一种AST吗
<>这两种Web浏览器引擎都有C++内部写的AST处理。这就是为什么除了
eval
之外,JavaScrpt代码在大多数情况下都能快速运行的原因 我只知道Javascript AST的一个规范:
它起源于Mozilla的Dave Herman的出版物,并从那时起演变为社区标准。所以它应该在某种程度上与SpiderMonkey匹配,但我不确定V8和JSC
如果有人能提供更多信息,我们将不胜感激。抽象语法树(AST),是程序源代码的树表示形式
有两个JavaScriptAST
标准:
- -EcmaScript AST标准李>
- -设计时考虑到转型李>
- -支持尚未成为标准的语言功能,但具有
- 第一个
- 非常受欢迎,快速稳定
- 基于
,用于李>acorn
- 基于
,支持所有新的语言功能acorn
- 生成
Shift AST
- 可以解析JavaScript和TypeScript,并为此生成自己的AST格式
estree
的解析器可以很容易地相互替换,babel
具有非常广泛的基础架构,可以轻松地使用AST
。
它有:
- 描述所有的工具和使用方法
- -维护整体树状态,并负责替换、移除和添加节点李>
- -从字符串创建
-节点的最简单方法AST
- -包含
-节点的生成器和检查器AST
AST
最简单的方法之一是使用,它基于babel
,并支持借助的简化方式转换JavaScript
代码
下面是删除DebuggerStatement
节点的示例:
module.exports.replace=()=>({
“调试器”:“,
});
如果要切换变量的位置,请更改声明方式:
module.exports.replace=()=>({
'let uuu a=uuu b':'const uuu b=uuu a'
});
如果要将此代码转换为返回x[0]
:
for(常数x/y){
返回x;
}
您可以使用:
module.exports.replace=()=>({
'对于{return}的(const{return}a:'return{a[0]',
});
借助于
put
,您可以对JavaScript
代码进行最简单的转换,而无需直接使用AST
。这里有一个方便的JavaScript AST执行可视化:此图像的好处是什么?有帮助吗?视频链接无效谢谢@JuanPicado,我删除了链接。