2.1 什么是抽象语法树和三地址表达(通俗理解版)
文献来源:《编译原理(第2版)》第二章
准备知识:术语
- 语法(Syntax)
规定了语言得表达形式。可以参考英语学习中的例子。英语句子的正常表达是按照主谓宾结构。例如
I love you.
当写成
I you love
就被认为是语法错误
- 语义(Semantics)
比如I love you是去爱,那么如果其行为为hate则为错。当然,计算机内部不会有爱与恨,但是有加减乘除等操作。如果是表达式是加法,而其行为是减法,则认为语义有错。
- 词法单元(Token)
词法分析器(一种对表达式进行分析的程序)处理多个字符组成的构造。比如词法分析器分析下列表达式
count + 1
假设词法分析器内部定义标识符为一个词法单元,那么count就是一个词法单元。
抽象语法树和语法树
语法树(syntax tree)是抽象语法树(abstract syntax tree)的简称。它表示了源程序的层次化语法结构。
假设C语言代码
do{
i = i + 1;
}while(a[i]<v);
形成抽象语法树的过程如下。
- 确定叶子节点。所有的变量,数字都为叶子。
i, 1, a, v

本文介绍了抽象语法树的概念,它是源程序的层次化语法结构,以及三地址表达在编译过程中的应用,通过将源代码转化为易于转换为机器码的形式,实现从高级语言到低级语言的编译过程。
最低0.47元/天 解锁文章
7632

被折叠的 条评论
为什么被折叠?



