什么是抽象语法树和三地址表达(通俗理解版)

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

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);

形成抽象语法树的过程如下。

  1. 确定叶子节点。所有的变量,数字都为叶子。
i, 1, a, v
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值