标题
[AST]在线 ast 解析器和常用 ast 库
clq
浏览(297) +
2024-01-03 00:16:15 发表
编辑
关键字:
[2024-01-03 12:42:51 最后更新]
[AST]在线 ast 解析器和常用 ast 库
https://www.jianshu.com/p/f1fc02b7b3be
https://astexplorer.net/
支持20种开发语言50种语法格式的在线代码解析器 AST 插件示例集合【含源码】
非常棒的在线AST浏览器
https://astexplorer.net/
源码:https://github.com/fkling/astexplorer
----------------------------------------------------------------
https://ast.89tool.com/
----------------------------------------------------------------
代码讲解
https://baijiahao.baidu.com/s?id=1772077675275387114&wfr=spider&for=pc
https://zhuanlan.zhihu.com/p/483476846 这一篇比较详细
https://blog.csdn.net/ekcchina/article/details/129277867
----------------------------------------------------------------
JavaScript 解析器是代码分析扫描工具的基础,没有它就很难工作,我们先来介绍下目前有哪些常用的解析器。
2.1 ESTree
ESTree 的初衷通过社区的力量,保证和 es 规范的一致性,通过自定义的语法结构来表述 JavaScript 的 AST,后来随着知名度越来越高,多位知名工程师的参与,使得变成了事实意义上的规范,目前这个库是 Mozilla 和社区一起维护的。因为 EsTree 定义的规范,所以现在所有的js解析器或者编译器,基本上都绕不开它。
2.2 Esprima
这是第一个用 JavaScript 编写的符合 EsTree 规范的 JavaScript 的解析器,后续多个编译器都是受它的影响。
2.3 acorn
acorn 和 Esprima 很类似,输出的ast都是符合 EsTree 规范的,目前webpack 的 AST 解析器用的就是 acorn,和 Esprima 一样,也是也不直接支持 JSX。
2.4 @babel/parser
babel 官方的解析器,最初 fork 于 acorn,后来完全走向了自己的道路,其构建的插件体系非常强大,提供了一套完善的 visitor 插件机制用于扩展,通过编写 babel 插件来操作 ast 非常的方便。
2.5 espree
eslint、prettier 的默认解析器,最初 fork 于 Esprima 的一个分支,后来因为 ES6 的快速发展,但 Esprima 短时间内又不支持,后面就基于 acorn 开发。
2.6 swc
swc 是用 rust 编写的 JavaScript 编译器,单核比 babel 快4倍,4核比 babel 快70倍,也可以用来打包 js、ts 代码,并且也拥有 tree shaking 功能,目标就是替换babel,比如 Next.js 11.1 就用 SWC 替代 Babel 和 Terser。
2.7 esbuild
esbuild 是用 go 编写的下一代 web 打包工具,它拥有目前最快的打包记录和压缩记录,snowpack 和 vite 的也是使用它来做打包工具,为了追求卓越的性能,目前没有将 AST 进行暴露,也无法修改 AST,无法用作解析对应的 JavaScript。
--------------------------------------------------------
pascal/delphi 现在很弱势啊,上面的 20 语言中都没有它。好在有自己的实现。见
http://newbt.net/ms/vdisk/show_bbs.php?id=CEF55102DBE9988B97D8482F3AE0436D&pid=160
另外 lazarus 中也有 pas2js
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.