定义: 在计算机科学中,
抽象语法树
是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构
AST 在线查看工具:https://astexplorer.net/
前端可以用来生成 AST 的库有 babylon、acorn、recast 等
https://github.com/CodeLittlePrince/blog/issues/19
https://zhuanlan.zhihu.com/p/563655593
https://blog.csdn.net/KlausLily/article/details/124486883
https://blog.csdn.net/qq_31595113/article/details/124639349
在我刚开始编程时,很长一段时间都认为电脑拿到代码后直接就能运行。后来接触到编译原理后,才渐渐了解到,可执行程序是有自己的格式,我写的代码只是一串字符串,需要编译器将代码转换为可执行程序
在编译阶段,编译器会经过 词法分析
将代码拆分成一个一个的单词,然后通过 语法分析
将单词转换为一个解析树。解析树里包含了所有语法信息,且能被编译器程序理解
词法分析,也叫做扫描 scanner。它读取我们的代码,然后把它们按照预定的规则合并成一个个的标识 tokens
语法分析,也叫解析器。它会将 词法分析 出来的数组转化成树形的表达形式。同时,验证语法,语法如果有错的话,抛出语法错误
当生成树的时候,解析器会删除一些没必要的标识 tokens(比如不完整的括号),因此 AST 不是 100% 与源码匹配的,但是已经能让我们知道如何处理了。说个题外话,解析器 100% 覆盖所有代码结构生成树叫做CST(具体语法树)
在前端开发中,通常会用到 babel 和 eslint 等工具,其内部就使用了 AST 来理解代码
网友评论