语义分析和中间代码生成

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

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

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

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

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

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

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

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

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

抽象语法树

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

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

逆波兰式

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

四元式

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

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

猜你喜欢

转载自blog.csdn.net/weixin_44522477/article/details/112155848