没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论











武汉理工大学
学 生 实 验 报 告 书
实验课程名称 编译原理
开 课 学 院 计算机科学与技术学院
指导老师姓名
学 生 姓 名
学生专业班级
20 — 20 学年 第 学期
学生学号 实验课成绩

实验课程名称: 编译原理
实验项目名称 计算机高级语言的词法分析程序设计 实验成绩
实验者 专业班级 组别
同组者 实验日期
第一部分:实验分析与设计(可加页)
一、 实验内容描述(问题域描述)
1.目的
通过设计、编制、调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握
在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。
2.要求
(1)选择常用高级程序设计语言(如 PL/0 语言)的源程序作为词法分析对象。
(2)根据教学要求和学生具体情况,从 PL/0 语言中选取它的一个适当大小的子集,可以选
取一类典型单词,也可以尽可能使各种类型的单词都能兼顾到。其基本要求是:设计出给定
程序设计语言的词法规则,以文本文件形式输入源程序,并对源程序从左到右进行扫描,对
组成源程序的字符串拼接成为单词;并把其转换成属性字输出到文件中。
(3)实习时间为 4 学时。
3. 实验内容
完成对某一种常用高级语言(如 PL/0 语言)的各类单词的词法分析程序设计。
二、 实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件
逻辑或者算法描述)
词法分析程序的主要任务:对构成源程序的字符串从左到右的扫描,逐个字符地读入源
程序字符并按照构词规则切分成一个一个具有独立意义的单词,并确定其属性(如保留字、
标识符、运算符、界限符和常量等),再把它们转换成长度统一的标准形式—属性字
(TOKEN)。
词法分析器所输出的单词符号常常表示成如下的二元式:
(单词种别,单词符号的属性值)
在此次实验过程中,从 PL/0 语言选择一个它的子集对其进行词法分析:
保留字:const,var,procedur,begin,end,odd,if,then,call,while,do,read,write,else
运算符:+,-,*,/,>,<,>=,<=,=,#,:=
界符:(、)、,、;、.
无符号整数和标识符
单词种别采用整数编码,其中保留字、运算符、界符三类单词数量和意义均是固定的,
此三类单词采用一词一种,而对于标识符、无符号数两类单词将其全体视为一种,并分别建
立标识符表和无符号整数表,存储每个标识符或无符号整数的具体信息。
定义如下结构体存储每个的单词信息:

typedef struct
{
int type;
int position;
}term;
type 存储单词种别,position 存储标识符或无符号整数在各自的具体信息表中对应的位
置。
在程序中,term table[MAXWORDNUM];存储所有单词信息,string idtable[MAXIDNUM];
存储标识符名,int numtable[MAXNUMNUM];存储无符号整数值。
词法分析总控程序如下:
图 1 词法分析总控程序
定义 bool PreTreat(ifstream* pin); 从源文件读入源代码并进行预处理,将源代码中多个相
邻的空格、换行、制表符替换为一个空格符,经过预处理后的代码存储在 string codestr ;中,并
以'”@”'结尾。
对标识符和无符号整数的识别采用正则式和有限自动机的方法。正则式是说明单词的模
式的一种重要的表示法,是定义正则集的数学工具,对标识符集和无符号整数集均可采用正
则式进行表示。有限自动机作为一种识别装置,可以准确地识别正则集,即识别正则文法所
定义的语言和正则式所表示的集合,表示标识符集和无符号整数集的正则式均可用有限自动
机进行识别。若对自动机的每一个状态赋予一定的功能,并把其边上的符号视为转移条件,
那么自动机就成为一个程序了。
三、主要仪器设备及耗材
PC 机:CPU Intel 酷睿 5/8G 内存/1000G 硬盘、分辨率 1920x1080 显示器。
Windows 10 家庭中文版
Visual Studio 2019 版
剩余11页未读,继续阅读
资源评论


@不只是码农
- 粉丝: 3
- 资源: 3
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
