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

        明哥偷了张图:


你可能感兴趣的:(AST抽象语法树(一))