美文网首页js css html
抽象语法树(AST)(Abstract Syntax Tree)

抽象语法树(AST)(Abstract Syntax Tree)

作者: Cherry丶小丸子 | 来源:发表于2023-03-04 16:47 被阅读0次

    定义: 在计算机科学中,抽象语法树 是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构

    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 来理解代码

    相关文章

      网友评论

        本文标题:抽象语法树(AST)(Abstract Syntax Tree)

        本文链接:https://www.haomeiwen.com/subject/neoqldtx.html