文件名称:中间表示-analysis i terence tao third edition
文件大小:4.28MB
文件格式:PDF
更新时间:2024-06-27 22:51:55
OpenMP
5.1 中间表示 中间表示应该具有以下两个重要性质:易于生成、易于翻译为目标语言。具体到不同问题 还会有具体的要求。比如在 OpenMP 编译原理的教学中,还需要便于将代码变换结果直观地 展示出来。下面简单地介绍两种中间表示形式,并分析为何选择 AST 作为中间表示形式。 5.1.1 两种中间表示形式 编译器中常用的两种中间表示形式是: 1. 树形结构,包括语法分析树和(抽象)语法树。 2. 线性表示形式,特别是“三地址码”。 语法树 设计源代码到源代码的翻译器时,抽象语法树(Abstract Syntax Tree, AST)的数据结构是 非常好的起点,因为它保留了源程序的层次化语法结构。在一个表达式的抽象语法树中,每个 内部节点代表一个运算符,该节点的子节点代表这个运算符的运算分量。对于更一般化的程序 设计语言任意一个语法构造,可以创建一个针对这个构造的运算符节点,并把这个构造的具有 语义信息的组成部分作为这个运算符的运算分量。这时候的“运算符”并不仅仅指通常意义上 的数学运算,所有语句构造都需要定义相应的“运算符”,比如定义 WHILE 作为语句 while 的 运算符,DOWHILE 作为 do{…} while…语句的运算符等等。对于语句“do i=i+1;while (i< 100);” 的抽象语法树可以表示成图 5.1-(a)所示。