开发者社区 问答 正文

什么是AST?

已解决

什么是AST?

展开
收起
詹姆斯邦德00 2022-10-25 15:57:32 1285 分享 版权
来自: 大淘宝技术
1 条回答
写回答
取消 提交回答
  • 推荐回答

    在计算机科学中,抽象语法树(Abstract Syntax Tree,AST)或简称语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。

    这是一段引自百科上的解释,什么意思呢?让我们一起来看下面这个例子:

    image.png

    可以看到,非常简单的一句初始化赋值代码 var str = ""hello world"" 被拆解成了多个部分,并用一棵树的形式表示了出来。(如果想查看更多源代码对应的 AST,可以使用神器 astexplorer 在线尝试)

    其实,我们每天日常工作都在使用的 js 代码编译工具 — Babel,它也离不开AST。为了将 ES6 甚至更高版本的 js 语法转换成浏览器兼容性更好的 ES5 代码,Babel 每次都需要先将源代码解析成 AST,然后修改 AST 使其符合 ES5 语法,最后再重新生成代码。总结一下就是3 个阶段:parse -> transform -> generate。

    以上内容摘自《大促背后的前端核心业务实践》电子书,点击https://developer.aliyun.com/topic/download?id=728可下载完整版。

    2022-10-25 16:12:28
    赞同 展开评论
问答地址: