什么是抽象
抽象很好理解的,下面就是一个简单的抽象示例:
1 + 1 = 2
所有的数学符号都是一种抽象,数学符号,代表的是数学概念的自然语言表达 ---- 又被称为数学语言。当你看到上面的等式,你根据小时候学习到的数学知识,知道 1 的含义是数词,加号的含义是将两边的数字相加,等号的含义是右侧的符号能够完全表示左侧的操作结果。
等等,数词和操作是什么?
什么是语法
语法就是对语言组成部分以及组合方式的定义,比如加号、等号、数字的意义,以及数字和符号需要按照什么样的规则来进行组合。只有符合语法的语句才能够表达出意义。
上面提到的“数词”就是语法的一部分,它规定了如何表示数,而操作符则代表对数词的各种使用方法,加号是一种操作符,除此之外还有减号、乘号、除号等等。
那么,这些和抽象语法树有什么关系呢?
什么是语法树
在式子 1 + 1 = 2 中, “=” 将左右两侧连接起来,在左侧呢,加号又将两个1连接起来,这不就是一棵树吗?
上图是一棵语法树,我们可以看到,所有的叶子结点连起来,就是原始的式子,这是一棵完整的语法树,又叫“concrete sytax tree",它上面包含了每个词和符号的意义。
那这就是抽象语法树吗?no,这是语法树,抽象语法树比这个要简洁
什么是抽象语法树
相比于语法树,抽象语法树将冗余的信息去掉,只保留最能表示语句结构的信息
可以看到,抽象语法树将信息密度压缩到了极致,极大减小了数据的规模。