https://baijiahao.baidu.com/s?id=1626159656211187310&wfr=spider&for=pc
什么是语法树?
它是一种分层的程序表示,它根据编程语言的语法来表示源代码结构,每个AST节点对应于源代码的一个项。
如何从纯文本代码得到语法树?
第一步,词法分析
它读取我们的代码,然后把它们按照预定的规则合并成一个个的标识tokens。同时,它会移除空白符,注释,等。最后,整个代码将被分割进一个tokens列表(或者说一维数组)
🌰:
1 | const a = 5 |
当词法分析源代码的时候,它会一个一个字母地读取代码,所以很形象地称之为扫描-scans;当它遇到空格,操作符,或者特殊符号的时候,它会认为一个话已经完成了。
第二步,语法分析
它会将词法分析出来的数组转化成树形的表达形式。同时,验证语法,语法如果有错的话,抛出语法错误。
1 | const a = 5 |
当生成树的时候,解析器会删除一些没必要的标识tokens(比如不完整的括号),因此AST不是100%与源码匹配的,但是已经能让我们知道如何处理了