没有合适的资源?快使用搜索试试~ 我知道了~
首页编译原理CP lab实验报告.doc
编译原理CP lab实验报告.doc
1.2k 浏览量
更新于2023-03-03
评论 3
收藏 1.75MB DOC 举报
在 Engintime CP lab上做的编译原理实验,这个平台做的实验设计的很好,这个实验报告里一共包括两个实验报告,一个是从正则表达式到NFA。另一个是使用Lex自动生成扫描程序
资源详情
资源评论
资源推荐

本科实验报告
课程名称: 编译原理
课程编号: 08060030
学生姓名:
学号:
学院: 信息科学技术学院
系: 计算机科学系
专业: 计算机科学与技术
指导教师: 黄穗
教师单位: 计算机科学系
开课时间:2019~ 2020 学年度第 2 学期
暨南大学教务处
2020 年 7 月 05 日

暨南大学本科实验报告专用纸(附页)
编译原理 项目目录
学生姓名: 学号: 2
序号
实验项目
编号
实验项目名称
*
实验项
目类型
成绩 指导教师
1
1
实验环境的使用
设计
黄穗
2
3
使用 Lex 自动生成扫描程序
设计
黄穗
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
*实验项目类型:演示性、验证性、综合性、设计性实验。
*此表由学生按顺序填写。

暨南大学本科实验报告专用纸(附页)

暨南大学本科实验报告专用纸(附页)
暨南大学本科实验报告专用纸
课程名称 编译原理 成绩评定
实验项目名称 实验环境的使用 指导教师 黄穗
实验项目编号 1 实验项目类型 设计 实验地点
学生姓名 学号
学院 信息学院 系 计算机系 专业 计算机科学与技术
实验时间 2020 年 6 月 日~ 月 日
一、实验主题
1. 熟悉编译原理集成实验环境 CP Lab 的基本使用方法。
2. 掌握正则表达式和 NFA 的含义。
3. 实现正则表达式到 NFA 的转换。
二、实验内容
3.1 从 CodeCode.net 平台领取任务
3.2 启动 CP Lab
3.3 主窗口布局
顶部的菜单栏、工具栏。
停靠在左侧和底部的各种工具窗口。
余下的区域用来放置“起始页”和“源代码编辑器”窗口。
3.4 将 将 t CodeCode.net 平台上的从正则表达式到 A NFA 项目克隆到本地
3.5 阅读实验源代码
该 实 验 包 含 了 三 个 头 文 件
“ RegexpToNFA.h” 、 “ RegexpToPost.h” 、 “ NFAFragmentStack.h” 和 三 个 C 源 文 件
“main.c”、“RegexpToPost.c”、“NFAFragmentStack.c”。
main.c 文件
1. 在 文 件 的 开 始 位 置 , 使 用 预 处 理 命 令 包 含 了 RegexpToNFA.h 、
RegexpToPost.h 和 NFAFragmentStack.h 文件。
2. 定义了 main 函数。在其中实现了栈的初始化。然后,调用了 re2post 函数,将正则
表达式转换到解析树的后序序列。最后,调用 post2nfa 函数,将解析树的后序序列转换到
NFA。
3. 在 main 函数的后面,定义了函数 CreateNFAState 和 MakeNFAFragment,这两个函
数分 别 是用 来 创 建一 个 新的 NFA 状 态 和构 造 一 个新 的 Fragment 。 接 着定 义 了函 数
post2nfa,关于此函数的功能、参数和返回值,可以参见其注释。
RegexpToPostc .c 文件
1. 在文件的开始位置,使用预处理命令包含了 RegexpToPost.h 文件。
2. 定义了 re2post 函数,此函数主要功能是将正则表达式转换成为解析树的后序序列形

暨南大学本科实验报告专用纸(附页)
式。
NFAFragmentStackc .c 文件
1. 在文件的开始位置,使用预处理命令包含了 NFAFragmentStack.h 文件。
2. 定义了与栈相关的操作函数。在构造 NFA 的过程中,这个栈主要用来放置 NFA 片
段。
RegexpToNFAh .h 文件
1. 包含用到的 C 标准库头文件。目前只包含了标准输入输出头文件“stdio.h”。
2. 包含其他模块的头文件。目前没有其他模块的头文件需要被包含。
3. 定 义 了 与 NFA 相 关 的 数 据 结 构 , 包 括 NFA 状 态 NFAState 和 NFA 片 段
NFAFragment。
4. 声明函数和全局变量。
RegexpToPosth .h 文件
1. 包含其他模块的头文件。目前只包含了头文件“RegexpToNFA.h”。
2. 声明函数。为了使程序模块化,所以将 re2post 函数声明包含在一个头文件中再将此
头文件包含到“main.c”中。
NFAFragmentStackh .h 文件
1. 包含其他模块的头文件。目前只包含了头文件“RegexpToNFA.h”。
2. 定义重要的数据结构。定义了与栈相关的数据结构。
3. 声明函数。声明了与栈相关的操作函数。
到解析树的后序序列。最后,调用 post2nfa 函数,将解析树的后序序列转换到 NFA。
3.6 生成项目
1. 在“生成”菜单中选择“生成项目”(快捷键是 F7)。
在项目生成过程中,“输出”窗口会实时显示生成的进度和结果。如果源代码中不包含语法
错误,会在生成的最后阶段提示生成成功,
3.7 解决语法错误
1. 在源代码文件中故意输入一些错误的代码(例如删除一个代码行结尾的分号)。
2. 生成项目。
3. 在“输出”窗口中双击错误信息来定位存在错误的代码行,并将代码修改正确。
4. 重复步骤 2、3,直到项目生成成功。
3.8 观察点和演示模式
3.9 在演示模式下调整项目
按照下面的步骤,练习在演示模式下调试项目(主要是调试观察点函数):
1. 保证工具栏上的“演示模式”按钮高亮显示。
2. 在“调试”菜单中选择“启动调试”(快捷键是 F5)。
同时,在“转储信息”窗口中(显示了观察点函数正在操作的数据信息主要包含了如下内容:
1. 函数调用信息。对本次观察点函数的调用信息进行了描述。
2. 函数返回信息。由于此时刚刚进入观察点函数,所以还无法显示其返回信息。当在
观察点函数结
束位置中断时,即可显示其返回信息。主要对观察点函数的返回值或者操作结果进行描述。
3. 重要的数据信息。包含了正则表达式和解析树的后序序列的描述,以及对栈中保存
剩余25页未读,继续阅读














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

评论0