编译原理第七章语义分析和中间代码生成内容总结

一、学习内容

第七章我们主要学习语义分析和中间代码生成。语义分析的任务一是审查每一个语法结构的静态语义,即验证语法正确的结构是否有意义;二是在语义正确的基础上生成一种中间代码或目标代码。语义分析的范围主要有确定类型、类型检查、识别含义、控制流检查、一致性检查、相关名字检查等。重点学习几种常用的中间语言形式:逆波兰表示法、图表示法、三元式、四元式。图表示法有抽象语法树和无循环有向图(DAG),二者基本上一样,对表达式中的每个子表达式,DAG中都有一个结点,一个内部结点表示一个操作符,它的孩子表示操作数,两者所不同的是,在一个DAG中代表公共子表达式的结点具有多个父结点,而在一棵抽象语法树中公共子表达式被表示为重复的子树。三元式由三个部分组成:算符OP,第一运算分量ARG1,第二运算分量ARG2。在三元式的基础上附加一张指示器表─间接码表,按运算的先后顺序列出有关三元式在三元式表中的位置,这种表示方法称为间接三元式。四元式是一个带有四个域的记录结构:op,arg1,arg2及result,它实际上就是一条三地址的指令。再往下我们学习了几种语句的四元式及翻译:说明语句的翻译,程序语言中的说明语句都是给编译程序提供信息的,诸如类型、维数、每维的界种类等,因此一般不生成目标,只是在编译时把有关信息填入相应表格即可;赋值语句的翻译,需要类型转换,可以把类型信息反映到运算符中。有的程序设计语言允许混合运算,有的不允许,如果不允许,则发现有类型不相同的运算分量就应该报错,如果允许,就要进行类型转换;控制流语句的翻译可以仿照算术表达式的翻译来进行,此部分内容较多为具体应用,在下文知识运用具体写。

 

<

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值