1 / 12
文档名称:

语义分析实验报告.doc

格式:doc   大小:81KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

语义分析实验报告.doc

上传人:992006838 2021/10/26 文件大小:81 KB

下载得到文件列表

语义分析实验报告.doc

相关文档

文档介绍

文档介绍:如果您需要使用本文档,请点击下载按钮下载!
如果您需要使用本文档,请点击下载按钮下载!
如果您需要使用本文档,请点击下载按钮下载!
云南大学编译原理实验报告

实验题目: 语义分析
学 院: 信息学院
专 业: 计算机科学与技术
学 号: 20091060064
姓 名: 刘继远
如果您需要使用本文档,请点击下载按钮下载!
如果您需要使用本文档,请点击下载按钮下载!
如果您需要使用本文档,请点击下载按钮下载!
目录
一、实验目的 1
二、实验内容 1
三、源程序分析 2
1、程序采用的BNF 2
2、根据语义要求得到对应的翻译模式 3
3、实现原理 4
4、文法的属性分析 5
5、过程设计 5
6、子程序说明 6
四、设计的基本思想(包括修改之后的属性文法、属性类型分析、翻译模式) 7
1、增加除法运算 7
2、禁止同名重复声明 8
五、结果及分析 8
如果您需要使用本文档,请点击下载按钮下载!
如果您需要使用本文档,请点击下载按钮下载!
如果您需要使用本文档,请点击下载按钮下载!
一、实验目的
进一步理解递归下降分析原理和实现方法,理解语义分析的基本机制,掌握语义子程序的构造方法。
二、实验内容
将带变量声明的表达式翻译为四元式序列,其中包括以下要求:
非终结符号D实现定义两种类型int, real变量的声明;
非终结符号S实现变量之间的*,+,: =(赋值运算)
两个关键字 int 和real
变量之间的*,+,: =(赋值) 运算只能使用声明过的变量,所以要检查使用的变量是否声明过。
对每个*,+,: =(赋值) 运算生成一条四元式如(*,A,B,T1),其中T1是临时变量
*优先级别高于+,*满足左结合规则
如果您需要使用本文档,请点击下载按钮下载!
如果您需要使用本文档,请点击下载按钮下载!
如果您需要使用本文档,请点击下载按钮下载!
三、源程序分析
这是一个简单的包含词法、语法、语义分析的程序:。 实现的基本原理是自顶向下分析,单遍扫描,以语法分析为核心,调用词法分析,并实现语义分析。
1、程序采用的BNF
P→ DS.
D→B; D
D→ε
B→int L | real L
L→id | L,id
S→ V := E H
H→;S | ε
E→E+T | T
T→T*F|F
F→( E )
F→id
V→id
消除左递归之后的等价文法
start→ DS.
D→B; D
D→ε
B→int L | real L
L→id A
A→ ,idA
A→ε
如果您需要使用本文档,请点击下载按钮下载!
如果您需要使用本文档,请点击下载按钮下载!
如果您需要使用本文档,请点击下载按钮下载!
S→ V := E H
H→;S | ε
E→T R
R→+T R
R→ ε
T→F P
P→* F P
P→ε
F→( E )
F→id
V→id
2、根据语义要求得到对应的翻译模式
start→ DS.
D→ B; D
D→ε
B→ int L { := int } | real L { := real }
L→ id { := enter(, )}A
A→ ,idA { := enter(,)}
A→ε
S→ V := E { gen( ":=", ,0,) } H
H→;S | ε
E→T { :=} R {:=}
R→+T { := newtemp; gen( "+", , , ) } R {:= ; }
R→ ε {Rs=}
T→F { :=} P { :=}
P→* F { := newtemp; gen( "*