第五章语法分析—自下而上分析
- 格式:ppt
- 大小:1.42 MB
- 文档页数:171


编译原理实验三-自下而上语法分析及语义分析x 1 / 17
上海电力学院
编译原理
课程实验报告
实验名称: 实验三 自下而上语法剖析及语义剖析
院 系: 计算机科学与技术学院
专业年级:
学生姓名: 学号:
指导老师:
实验日期: 编译原理实验三-自下而上语法分析及语义分析x
2 / 17
实验三自上而下的语法剖析
一、实验目的:
经过本实验掌握 LR剖析器的结构过程,并依据语法制导
翻译,掌握属性文法的自下而上计算的过程。
二、实验学时:
4学时。
三、实验内容
依据给出的简单表达式的语法组成规则(见五),编制
LR剖析程序,要求能对用给定的语法例则书写的源程序进行
语法剖析和语义剖析。
关于正确的表达式,给出表达式的值。
关于错误的表达式,给出犯错地点。
四、实验方法
采纳 LR剖析法。
第一给出 S- 属性文法的定义(为简易起见,每个文法符
号只设置一个综合属性,即该文法符号所代表的表达式的
值。属性文法的定义可参照书 137页表 6.1 ),并将其改造成
用LR剖析实现时的语义剖析动作(可参照书 145页表
6.5 )。
接下来给出 LR剖析表。
而后程序的详细实现:
LR剖析表可用二维数组(或其余)实现。
增添一个 val 栈作为语义剖析实现的工具。 编译原理实验三-自下而上语法分析及语义分析x 3 / 17
编写总控程序,实现语法剖析和语义剖析的过程。
注:关于整数的辨别能够借助实验 1。
五、文法定义
简单的表达式文法以下:
(1)E->E+T
(2)E->E-T
(3)E->T
(4)T->T*F
(5)T->T/F
(6)T->F
(7)F->(E)
(8)F->i
状态 ACTION (动作) GOTO (变换)
i + - * / ( ) # E T F
0 S5 S4 1 2 3
第一章:编译系统概述
一.单选题
1.编译程序前三个阶段完成的工作是( C )。
A.词法分析、语法分析和代码优化
B.代码生成、代码优化和词法分析
C.词法分析、语法分析、语义分析和中间代码生成
D.词法分析、语法分析和代码优化
2.编译程序绝大多数时间花在( D )上。
A.出错处理 B.词法分析 C.目标代码生成 D.表格管理
3.编译程序是对( C )。
A.汇编程序的翻译 B.高级语言程序的解释执行
C.高级语言的翻译 D.机器语言的执行
4.在使用高级语言编程时,首先可通过编译程序发现源程序的全部( A )错误。
A.语法 B.语义 C.语用 D.运行
二.填空题
1.编译程序首先要识别出源程序中每个( 单词 ),然后再分析每个( 句子 )并翻译其意义。
2.通常把编译过程分为分析前端与后端两大阶段。词法、语法和语义分析是对源程序的( 分析 ),中间代码生成、代码优化与目标代码的生成则是对源程序的 (综合 )。
3.对编译程序而言,输入数据是( 源程序 ),输出结果是( 目标程序 )。
4.对下列错误信息,请指出可能是编译的哪个阶段(词法分析、语法分析、语义分析、
代码生成)报告的。
(1) else 没有匹配的if (语法分析)
(2) 数组下标越界 (语义分析)
(3) 使用的函数没有定义 (语法分析)
(4) 在数中出现非数字字符 (词法分析)
5.如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段: ( 编译阶段 ) 和( 运行阶段 )。如果编译程序生成的目标程序是汇编语言程序,则源程序的执行方式分成三个阶段:( 编译阶段 )( 汇编阶段 )和( 运行阶段 )。
6.编译程序在其工作过程使用最多的数据结构是( 表 ),它记录着源程序中各种信息,以便查询或修改,在这些( 表 )中,尤以( 符号表 )最重要,它的生存期最长,使用也最频繁。
`
Word文档
电力学院
编译原理
课程实验报告
实验名称: 实验三
自下而上语法分析及语义分析
院 系: 计算机科学与技术学院
专业年级:
学生: 学号:
指导老师:
实验日期:
`
Word文档 实验三自上而下的语法分析
一、实验目的:
通过本实验掌握LR分析器的构造过程,并根据语法制导翻译,掌握属性文法的自下而上计算的过程。
二、实验学时:
4学时。
三、实验容
根据给出的简单表达式的语法构成规则(见五),编制LR分析程序,要求能对用给定的语法规则书写的源程序进行语法分析和语义分析。
对于正确的表达式,给出表达式的值。
对于错误的表达式,给出出错位置。
四、实验方法
采用LR分析法。
首先给出S-属性文法的定义(为简便起见,每个文法符号只设置一个综合属性,即该文法符号所代表的表达式的值。属性文法的定义可参照书137页表6.1),并将其改造成用LR分析实现时的语义分析动作(可参照书145页表6.5)。
接下来给出LR分析表。
然后程序的具体实现:
LR分析表可用二维数组(或其他)实现。
添加一个val栈作为语义分析实现的工具。
`
Word文档 编写总控程序,实现语法分析和语义分析的过程。
注:对于整数的识别可以借助实验1。
五、文法定义
简单的表达式文法如下:
(1)E->E+T
(2)E->E-T
(3)E->T
(4)T->T*F
(5)T->T/F
(6)T->F
(7)F->(E)
(8)F->i
状态 ACTION(动作) GOTO(转换)
i + - * / ( ) # E T F
上海电力学院
编译原理
课程实验报告
实验名称: 实验三 自下而上语法分析及语义分析
院 系: 计算机科学与技术学院
专业年级:
学生姓名: 学号:
指导老师:
实验日期:
实验三自上而下的语法分析
一、实验目的:
通过本实验掌握LR分析器的构造过程,并根据语法制导翻译,掌握属性文法的自下而上计算的过程。
二、实验学时:
4学时。
三、实验内容
根据给出的简单表达式的语法构成规则(见五),编制LR分析程序,要求能对用给定的语法规则书写的源程序进行语法分析和语义分析。
对于正确的表达式,给出表达式的值。
对于错误的表达式,给出出错位置。
四、实验方法
采用LR分析法。
首先给出S-属性文法的定义(为简便起见,每个文法符号只设置一个综合属性,即该文法符号所代表的表达式的值。属性文法的定义可参照书137页表6.1),并将其改造成用LR分析实现时的语义分析动作(可参照书145页表6.5)。
接下来给出LR分析表。
然后程序的具体实现:
LR分析表可用二维数组(或其他)实现。
添加一个val栈作为语义分析实现的工具。 编写总控程序,实现语法分析和语义分析的过程。
注:对于整数的识别可以借助实验1。
五、文法定义
简单的表达式文法如下:
(1)E->E+T
(2)E->E-T
(3)E->T
(4)T->T*F
(5)T->T/F
(6)T->F
(7)F->(E)
(8)F->i
状态 ACTION(动作) GOTO(转换)
i + - * / ( ) # E T F
0 S5 S4 1 2 3
1 S6 S12 acc
2 R3 R3 S7 S13 R3 R3