没有合适的资源?快使用搜索试试~ 我知道了~
16281002-杜永坤-专题4实验报告1
需积分: 0 1 下载量 74 浏览量
2022-08-08
18:24:50
上传
评论
收藏 762KB DOCX 举报
温馨提示
试读
24页
(2)输入串应是词法分析的输出二元式序列,即某算术表达式“专题 1”的输出结果 (3)算符优先分析过程应能发现输入串出错 (4)设计两个测试用例(尽可能完备,正
资源详情
资源评论
资源推荐
编译原理专题训练4 计算机 1601 班 杜永坤 16281002
1
《编译原理》研究性学习专题实验报告
实验 4: 算符优先语法分析设计原理与实现技术
学 院:计算机与信息技术学院
专 业: 计算机科学与技术
学生姓名: 杜永坤
学 号: 16281002
班 级: 计算机 1601 班
指导教师: 于双元
北京交通大学
2019 年 06 月 02 日
编译原理专题训练4 计算机 1601 班 杜永坤 16281002
2
目录
实验要求:........................................................................................................................3
1.[实验项目]......................................................................................3
2.[设计说明]......................................................................................4
3.[设计要求]......................................................................................4
实验过程:........................................................................................................................4
1、算符优先分析程序设计说明..............................................................................4
1.1 设计要求:..................................................................................................4
1.2 设计说明:..................................................................................................5
3、程序功能描述......................................................................................................5
4、主要的数据结构描述..........................................................................................6
4.1 主要使用的 java 数据结构类型.................................................................6
4.1.1 List ....................................................................................................6
List 添加元素 ....................................................................................6
list 中是否包含某个元素..................................................................6
list 获取长度:..................................................................................7
list 中查看(判断)元素的索引......................................................7
根据元素索引位置进行的判断........................................................7
判断 list 是否为空.............................................................................8
4.1.2 Map ...................................................................................................8
HashMap ............................................................................................8
常用 API ............................................................................................8
Map 添加元素 ...................................................................................9
Map 的遍历 .......................................................................................9
Map 获取元素 .................................................................................10
4.2 二元式文件结构.......................................................................................11
4.5 FIRSTVT 集 .............................................................................................12
4.6 LASTVT 集 ..............................................................................................15
4.7 算符优先矩阵...........................................................................................17
5、程序结构描述....................................................................................................20
5.1Java 主类:OPGMain ................................................................................20
5.1.1 全局变量.........................................................................................20
5.1.2 函数.................................................................................................21
5.1.3 函数调用关系图.............................................................................22
6、程序测试............................................................................................................22
6.1 正确用例...................................................................................................22
6.2 错误用例...................................................................................................24
6.2.1 缺少操作符.....................................................................................24
6.2.2 缺少 ‘)’符号................................................................................25
编译原理专题训练4 计算机 1601 班 杜永坤 16281002
3
实验要求:
1.[实验项目]
实现 LL(1)分析中控制程序(表驱动程序);完成以下描述赋值语句的 LL(1)
文法的 LL(1)分析过程。
G[E]:
E →E+T∣E-T∣T
T→T*F∣T/F∣F
F→(E)∣i
2.[设计说明]
终结符号 i 为用户定义的简单变量,即标识符的定义。
3.[设计要求]
(1)构造该算符优先文法的优先关系矩阵或优先函数;
(2)输入串应是词法分析的输出二元式序列,即某算术表达式“专题 1”的输
出结果。输出为输入串是否为该文法定义的算术表达式的判断结果。
(3)算符优先分析过程应能发现输入串出错。
(4)设计两个测试用例(尽可能完备,正确和出错),并给出测试结果;
(5)考虑编写程序根据算符优先文法构造算符优先关系矩阵,并添加到你的
算符优先分析程序中。
编译原理专题训练4 计算机 1601 班 杜永坤 16281002
4
实验过程:
1、算符优先分析程序设计说明
1.1 设计要求:
(1)构造该算符优先文法的优先关系矩阵或优先函数;
(2)输入串应是词法分析的输出二元式序列,即某算术表达式“专题 1”的输
出结果。输出为输入串是否为该文法定义的算术表达式的判断结果。
(3)算符优先分析过程应能发现输入串出错。
(4)设计两个测试用例(尽可能完备,正确和出错),并给出测试结果;
(5)考虑编写程序根据算符优先文法构造算符优先关系矩阵,并添加到你的
算符优先分析程序中。
1.2 设计说明:
(1)该语言大小写不敏感;
(2)字母为 a-zA-Z,数字为 0-9;
(3)对文法进行扩充和改造;
(4)根据 FIRSTVT 集和 LASTVE 集的构造规则,构造出文法的 FIRSTVT 集
和 LASTVT 集
(5)根据 FIRSTVT 集和 LASTVT 集构造算符优先矩阵;
(6)根据分析规则,构造算符优先矩阵分析器。
编译原理专题训练4 计算机 1601 班 杜永坤 16281002
5
3、程序功能描述
(1)、能够录入一个.tys 文件中的二元式内容;二元式内容为表达式
(2)、根据.tys 文件内容进行算符优先分析,可识别
(3)、根据输入的二元式内容进行分析语法分析,并打印结果;
(4)、打印分析过程(分析栈和保留串)和错误提示;
(5)、根据文法构造 FIRSTVT 集和 LASTVT 集;
(6)、根据构造 FIRSTVT 集和 LASTVT 集,构造出算符优先矩阵分析表;
(7)、算符优先矩阵分析器。
4、主要的数据结构描述
4.1 主要使用的 java 数据结构类型
4.1.1 List
//终结符号集
private List<Character> Vt = new ArrayList<Character>();
//非终结符号集
private List<Character> Vn = new ArrayList<Character>();
使用 List 保存文法的非终结符号和终结符号,一旦文法给定,非终结符号
集合和终结符号集合也就确定,所以对 Vt、Vn 的操作一般是查找元素和遍历元
素。
List 添加元素
//设置非终结符号
Vn.add('S');
Vn.add('E');
Vn.add('T');
Vn.add('F');
剩余23页未读,继续阅读
臭人鹏
- 粉丝: 24
- 资源: 328
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0