AST是什么?

AST是什么?

在计算机科学中,抽象语法树(Abstract Syntax Tree,AST),或简称语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。之所以说语法是“抽象”的,是因为这里的语法并不会表示出真实语法中出现的每个细节。比如,嵌套括号被隐含在树的结构中,并没有以节点的形式呈现;而类似于 if-condition-then 这样的条件跳转语句,可以使用带有三个分支的节点来表示。

和抽象语法树相对的是具体语法树(通常称作分析树)。一般的,在源代码的翻译和编译过程中,语法分析器创建出分析树,然后从分析树生成AST。一旦AST被创建出来,在后续的处理过程中,比如语义分析阶段,会添加一些信息。---维基百科

最后

在一些开源或者商业的规则引擎中就是存在各种种样的一些AST,比如:Drools,还有的话在现代的react或vue底层就是通过AST来进行建设的,这块有兴趣的同学可以去了解一下。至于个人的理解:最接地气的说明抽象语法树,也可统称流程的规类,然后分解为各种动作或指令,当然这些是自定义,核心还是分析和解决问题,比如像前端的或一些引擎就将AST加入解析器和过滤器,那么解析器里面又有解析、转换、生成等,过滤则是规则和条件的匹配等,所以这块就可以不断衍生看最终业务场景再抽象聚类而以。

参考文章

https://zh.wikipedia.org/wiki/%E6%8A%BD%E8%B1%A1%E8%AA%9E%E6%B3%95%E6%A8%B9

https://zhuanlan.zhihu.com/p/26988179

https://www.sitepoint.com/understanding-asts-building-babel-plugin/

https://zhuanlan.zhihu.com/p/266697614

文章分享自微信公众号:
技术趋势

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:逍遥壮士
原始发表时间:2022-03-06
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • AST 实战

    最近突然对 AST 产生了兴趣,深入了解后发现它的使用场景还真的不少,很多我们日常开发使用的工具都跟它息息相关,如 Babel、ESLint 和 Prettie...

    Dickensl
  • AST 介绍

    AST (Abstract Syntax Tree(抽象语法树)) 是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构。它由一堆节点(Node...

    前端GoGoGo
  • AST in TypeScript 实践

      最近参与了一个 Node 项目脚手架的开发工作,为了提高编码效率,导师提议写一个 VSCode 的插件,功能上大体有点像 snippets 代码段,但比 s...

    JoviCheng
  • babel操作AST

    前一篇文章讲解了什么是AST,但是没有说明如何操作AST,下面来讲解下如何使用babel来操作AST,首先看一下流程图:

    挥刀北上
  • 什么是AST

    有了这棵树,我们就可以通过操纵这颗树,精准的定位到声明语句、赋值语句、运算语句等等,实现对代码的分析、优化、变更等操作。具体如下:

    挥刀北上
  • python ast模块

    首先第一个问题是, 这个ast模块有什么用呢? ast提供了访问和修改上述中抽象语法树的功能.可以做一些比如测试,代码生成,静态分析等等. 比如pylint, ...

    周小董
  • vue核心之AST

    hss
  • AST抽象语法树

    黄啊码
  • Python Ast介绍及应用

    Abstract Syntax Trees即抽象语法树。Ast是python源码到字节码的一种中间产物,借助ast模块可以从语法树的角度分析源码结构。此外,我们...

    py3study
  • 创建 AST 节点写法示例

    AST (Abstract Syntax Tree(抽象语法树)) 是源代码语法结构的一种抽象表示。不了解 AST 的,可以看这篇文章。

    前端GoGoGo
  • [第5期] AST 与前端工程化实战AST 与前端工程化实战

    AST 是一个非常基础但是同时非常重要的知识点,我们熟知的 TypeScript、babel、webpack、vue-cli 都是依赖 AST 进行开发的。本文...

    皮小蛋
  • Cobar源码分析之AST

    Cobar是阿里开源的数据库中间件,关于它的介绍这里不再赘述,可以参考之前的文章《Cobar SQL审计的设计与实现》

    龟仙老人
  • 【编译技术】:AST——基础的基础

    在计算机科学中,抽象语法树(abstract syntax tree 或者缩写为 *AST*),或者语法树(*syntax tree*),是源代码的抽象语法结构...

    WEBJ2EE
  • js解析为AST语法树

    在使用JavaScript开发过程中,虽然并不会直接与AST直接打交道,但许多打包相关的插件都会涉及到它,例如使用bable对代码进行转换,ts类型检查,语法高...

    西红柿炒番茄盖浇饭
  • 一文助你搞懂 AST

    抽象语法树(Abstract Syntax Tree)简称 AST,是源代码的抽象语法结构的树状表现形式。webpack、eslint 等很多工具库的核心都是通...

    coder_koala
  • Python随笔(四)抽象语法树AST 原

    在计算机科学中,抽象语法和抽象语法树其实是源代码的抽象语法结构的树状表现形式 我们可以用一个在线的AST编辑器来观察AST的构建 Python语言的执行过程就...

    Pulsar-V
  • Groovy 使用Builder AST 转换为流式API

    从Groovy 2.3开始,我们可以使用@Builder AST转换轻松地为我们的类创建一个流畅的API。 我们可以将注释应用于我们的类,结果类文件将具有支持流...

    白石
  • 【编译技术】:解读 Babel AST Format——03

    The Babel parser generates AST according to Babel AST format. It is based on EST...

    WEBJ2EE
  • 【编译技术】:解读 Babel AST Format——05

    The Babel parser generates AST according to Babel AST format. It is based on EST...

    WEBJ2EE

扫码关注腾讯云开发者

领取腾讯云代金券