time: 2020.11.05
author
今天看到一篇介绍多端开发的文章,里面说到如何通过 ast 做多端适配,之前自己也了解到 v8 执行 js 也是将其通过 ast 转为字节码文件,babel 通过 ast 将 es6 转为 es5,内心有个问题:
通过语法分析、词法分析,生成 ast 结构,然后再通过转换 ast 为目标元素,为什么不直接通过语法分析、词法分析直接生成目标元素呢?
因为考虑到 ast 内部转换复杂,目前自己专注于后端开发相关,这里只做简单问题解决即可,不求深入了解 ast 转换过程
目前了解到
- ast 有一套标准规范,浏览器、babel 对 ast 有自己的实现
- ast 格式有 ExpressionStatement、FunctionDeclaration、CallExpression、Identifier 等显示声明,能明确知道表达式、变量、函数声明等格式
- 编译原理最基本的就是 ast
ast 在线体验
ast sf 入门
简易 js 编译器
mdn parse api mozilla 的 spiderMonkey 引擎定义的 ast 规范