AST抽象语法树(一)

抽象语法树:

        在计算机科学中,抽象语法树其实是源代码的抽象语法结构的树状表现形式

        我们常用的浏览器就是通过将js代码转化为抽象语法树来进行下一步的分析等其他操作。所以将js转化为抽象语法树更利于程序的分析。

以add函数为例:

        1.首先,我们拿到的这个语法块,是一个FunctionDeclaration(函数声明)对象。

        2.用力分成三块:

            一个id,就是它的名字,即add

            两个params,就是它的参数,即[a, b]

            一块body,也就是大括号内的一堆东西

        id:add没办法继续拆下去了,它是一个最基础Identifier(标志)对象,用来作为函数的唯一标志,就像人的姓名一样。

        params继续拆下去,其实是两个Identifier组成的数组。之后也没办法拆下去了。

        我们发现,body其实是一个BlockStatement(块状域)对象,用来表示是{return a + b}

        打开Blockstatement,里面藏着一个ReturnStatement(Return域)对象,用来表示return a + b

        继续打开ReturnStatement,里面是一个BinaryExpression(二项式)对象,用来表示a + b

        继续打开BinaryExpression,它成了三部分,left,operator,right

            operator 即+

            left 里面装的,是Identifier对象 a

            right 里面装的,是Identifer对象 b

        明哥偷了张图:


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容