第 149 题:babel 怎么把字符串解析成 AST,是怎么进行词法 / 语法分析的?
ast 又称抽象语法树,以树形结构描述代码,一般是 json 对象。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
ast 又称抽象语法树,以树形结构描述代码,一般是 json 对象。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
参考这个:https://the-super-tiny-compiler.glitch.me/intro
参考:https://mp.weixin.qq.com/s/fH2xYo_Bad0mgvo0OdYRZQ
编译原理(第2版) 值得一读
Babel
定义
Babel概述
Babel 中重要的对象Vistor
babel 在处理一个节点时,是以访问者的形式获取节点的信息,并进行相关的操作,这种操作是通过visitor对象实现的。
在 visitor 中定义了处理不同节点的函数。
AST
定义
Javascript 语法的AST(抽象语法树)
例如:
esprima、estraverse 和 escodegen 模块是操作 AST 的三个重要模块,也是实现 babel 的核心依赖。
例如:语法转换插件需要借助 babel-core 和 babel-types 两个模块,就是依赖 esprima、estraverse 和 escodegen
转换的抽象语法树:var answer= 6 * 7
每一个含有type属性的对象,我们称之为节点,修改是指获取对应的类型并修改改节点的属性即可;
estraverse 遍历和修改AST
查看遍历过程:
escodegen 将 AST 转换成 JS
var result=6 * 7
通过工具了解抽象语法树在 JavaScript 中的体现以及在 NodeJS 中用于生成、遍历和修改 AST 抽象语法树的核心依赖;让我们有了更加深刻地认识;
参考整合:https://juejin.im/post/5dca1eb86fb9a04a76025292
大致分为下面四步:
具体见下方链接文件的代码: