语义分析和中间代码生成

//1.程序语言的语义需要(上下文有关文法)用来描述

语义分析,审查每个语法成分的静态语义,如果静态语义正确,则生成与该语言成分等效的中间代码,或者直接生成目标代码。

动态语义检查需要生成相应的目标代码,它是在运行时进行的
静态语义检查是在编译时完成的

类检查
控制流检查
一致性检查

属性文法作为描述程序语言语义的工具
并采用语法制导翻译的方法完成对语法成分的翻译工作。

语法制导翻译分为自底向上语法制导翻译和自顶向下语法制导翻译。
自底向上是归约,自顶向下是匹配

扩大的分析栈可以存放三类信息
分析状态、文法符号及文法符号对应的语义值

文法符号的属性可以分为继承属性和综合属性两类
继承属性用于“自顶向下”传递信息。
综合属性属于“自底向上”传递信息。

属性文法:一种带有语义属性的上下文无关文法
属性文法也是一种翻译文法,属性有助于更详细地指定文法中的代码生成动作

抽象语法树

抽象语法树也称图表式
抽象语法展示了一个操作过程并同时描述了源程序的层次结构

抽象语法树的一个显著特点就是结构紧凑,容易构造且节点数较少。

逆波兰式

BL:转向某标号
BT:条件为真时转移
BF:条件为假时转移
BR:无条件时转移

四元式

操作数,左操作数,右操作数,结果
凡只需一个运算量的算符一律使用arg1.

四元式之间的练习是通过临时变量实现的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向上Claire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值