没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
山东大学软件学院
《编译原理》实验报告
班级:
学号:
姓名:
实验要求:
1. 实验共分为词法分析程序设计与实现、词法分析程序设计与实现、语义分析
与目标代码生成程序设计与实现三部分。
2. 实验报告按照报告模板书写,正文使用宋体小四。
3. 实验目的、硬件环境、软件环境如实填写即可。
4. 实验步骤与内容主要填写完成每一部分实验的编码过程并附代码。(实验步
骤讲清楚实验过程即可,形式不限;代码要与 IDE 中的编码格式与规范一致)
5. 实验结果主要填写每一部分实验的生成结果。(可以是截图,也可以是复制的
实验结果)
6. 实验总结与体会按照个人实际情况填写,主要填写实验的收获。
7. 请所有同学自己完成实验报告,严禁抄袭!
实验编号:实验一
实验题目:词法分析程序设计与实现
实验学时:5
实验日期:2023.10.14-2023.10.21
实验目的:
编译原理实践目的是让大家动手设计和实现某一规模适中的语言的编译
器,该编译器不仅涉及编译程序的各个阶段,而且也强调了编译的总体设计、
各个阶段的接口安排等等。 通过上机实践,来设计这个相对完整的编译器,
一方面可以使学生增加对编译程序的整体认识和了解——巩固《编译原理和技
术》课程所学知识,另一方面,通过上机练习,学生也可以学到很多程序调试
技巧和设计大型程序一般的原则,如模块接口的协调,数据结构的合理选择等
等。 实践分成三部分,首先阅读 PL/0 语言的语法及其编译程序的各个阶段,
对 PL/0 编译程序有个初步的印象。其次要认真阅读理解第三部分所给出的
PL/0 编译器源程序,使上一阶段的初步印象得以加深、具体化。最后按照第
二部分的实验要求扩充 PL/0 语言的功能并加以实现。
硬件环境:
设备名称 Xi-xi-Comp
处理器 11th Gen Intel(R) Core(TM) i7-11390H @ 3.40GHz 2.92 GHz
机带 RAM 16.0 GB (15.7 GB 可用)
设备 ID BF6105A7-3FEA-48BF-8F38-F6A0829E6E36
产品 ID 00342-36352-25948-AAOEM
系统类型 64 位操作系统, 基于 x64 的处理器
笔和触控 没有可用于此显示器的笔或触控输入
软件环境:
Visual Studio 2022
实验步骤与内容:
首先回顾课本内容,对于词法分析的功能深刻理解:输入源程序,输出单
词符号(词法单元)。词法单元的形式如下:
<单词种类,自身的值>
若一个种类仅一个单词符号,则种别编码就代表该单词符号,关键字、运
算符、界符都为一符一种,此时不需要填写自身的值这一部分。对于标识符、
常数这些一个种类对应多个单词符号的情况,对每个单词符号都给出种类+自
身的值。词法分析器通过单元名(即单词种类)即可确定词法单元序列的结构。
在学习的时候对于这些知识的理解都很模糊,直到完成这个实验之后再回看理
论知识,才感觉更加清晰、有所领悟了。例如:
有了上述的基本知识,我们接下来了解 PL/0 语言的词法,查询其关键字
有哪些、标识符规则、语法规则等。
CONST
VAR
PROCEDURE
BEGIN
END
ODD
IF
THEN
CALL
WHILE
DO
READ
WRITE
PL/0 的标识符由上下文无关文法生成。
<标识符> → <字母> {<字母>|<数字>}
<字母> → A|B|C…X|Y|Z
<数字> → 0|1|2…7|8|9
PL/0 的运算符:
=
:=
+
-
*
/
#
<
<=
>
>=
而后构思如何进行词语的识别,将其词语类别分为数字、关键字、标识符、
符号,其中包括分隔符“,”“;”“(”“)”,“.”和运算符(“<”“>”“=”“+”
“-”等)两部分。
对于关键字,运算符和界符,正确识别后直接输出其本身即可。此处需要
注意“:”,其后必须为一个“=”,否则为词法错误,而对于“<”“>”则可以
自己出现也可以在后面跟一个“=”出现。
对于数字,需要先输出一个单词 NUMBER,之后是一个空格,之后是数字
值。对于标识符,需要先输出一个单词 IDENTIFIER,之后是一个空格,之后
是标识符本身。如果程序包含词法错误,程序应当仅输出一行"Lexical Error"。
之后利用一个函数 judge 实现对数字、关键字、标识符的判定。在 main 函数
中对其余部分做判断。
定义结构体 tokenStruct,其中 type 代表单词种类,int 表示常数值,char
数组表示字符串:
struct tokenStruct
{
token_type tokenID;
int numberValue;
char name[StrLength];
剩余68页未读,继续阅读
资源评论
Tiny_xixi
- 粉丝: 68
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【教技·教育传播学】期末考试划重点
- SecureCRT8.5
- 船、无人机、汽车、人检测15-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rar
- 蓝凌OA系统 thirdimsyncforkkwebservice 任意文件读取漏洞分析及复现
- 基于Java语言校园快递代取系统的设计与实现+jsp(源码).rar
- 最全微信小程序开发100个案例
- 短视频创作工具,抖音黑科技,帮助短视频创作智能化、数据化、自动化,提升创作效能,让短视频创作更简单!
- 航空车辆检测8-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- AppleMusic微信小程序
- 识别纸质试卷上的表格,并通过OCR技术提取其中的内容-纸质试卷上表格识别与OCR技术提取内容-详细解释含代码解读
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功