美文网首页
AST抽象语法树(一)

AST抽象语法树(一)

作者: 机智的老刘明同志 | 来源:发表于2019-10-11 21:09 被阅读0次

    抽象语法树:

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

            我们常用的浏览器就是通过将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抽象语法树(一)

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