编译原理报告(7).doc_第1页
编译原理报告(7).doc_第2页
编译原理报告(7).doc_第3页
编译原理报告(7).doc_第4页
编译原理报告(7).doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课课 程程 实实 验验 报报 告告 课程名称:课程名称: 编译原理编译原理 专业班级:专业班级: 信息安全信息安全 1302 班班 学学 号:号: 姓姓 名:名: 指导教师:指导教师: 报告日期:报告日期: 2015.11.3 计算机科学与技术学院计算机科学与技术学院 一、原创性声明一、原创性声明 本人郑重声明:本报告的内容由本人独立完成,有关观点、方法、数据和文献等的引用 已经在文中指出。除文中已经注明引用的内容外,本报告不包含任何其他个人或集体已经 公开发表的作品或成果,不存在剽窃、抄袭行为。 特此声明! 学生签字: 日期: 二、评语与成绩评定二、评语与成绩评定 1.指导老师评语 2.实验成绩评定 实验完成质量得分(70 分) (实验步骤清晰详细深入, 实验记录真实完整等) 报告撰写质量得分(30 分) (报告规范、完整、通顺、 详实等) 总成绩(100 分) 指导教师签字: 日期: 目录目录 一、词法分析 .1 1.1 实验目的.1 1.2 实验要求.1 1.3 算法思想.2 1.4 代码实现.3 1.5 实验结果.4 二、词法分析 .5 2.1 实验目的5 2.2 实验要求5 2.3 算法思想.5 2.4 代码实现.8 2.5 实验结果.8 三、体会 10 四、参考文献 10 编编 译译 原原 理理 课课 程程 实实 验验 报报 告告 1 一、词法分析一、词法分析 1.1 实验目的实验目的 设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。 1.2 实验要求实验要求 1.待分析的简单语言的词法 (1)关键字: begin if thenwhiledo end 所有的关键字都是小写 (2)运算符和界符:=+-*/ = =;()# (3)其他单词是标识符(ID)和整型常数(NUM) ,通过以下正规式定义: ID=letter(letter|digit)* NUM=digit digit* (4)空格由空白、制表符和换行符组成。空格一般用来分隔 ID、NUM、运算符、 界符和关键字,词法分析阶段通常被忽略。 2 各种单词符号对应的种别码 表 1.1 各种单词符号对应的种别码 单词符号种别码单词符号种别码 begin1=24 Do5=25 End6;26 letter(letter|digit)*10(27 digit digit*11)28 +1329 -1430 *1531 /1632 :17,33 编编 译译 原原 理理 课课 程程 实实 验验 报报 告告 2 :=18!=34 =19#0 0 then x:=2*x+1/3; end# 的源文件,经词法分析后输出如下序列: (1, begin) (10, x) (25,:=) (11,9) (26, ;) (2,if) 1.3 算法思想算法思想 算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其 基本思想是根据扫描到单词符号的第一个字种类,拼出相应的单词符号。 1.主流程示意图 主程序示意图如图 1.1 所示。代码实现如图 1.4 所示。 图 1.1 词法分析主程序示意图 编编 译译 原原 理理 课课 程程 实实 验验 报报 告告 3 其中初值包括如下两个方面。 (1)关键字表的初值。 关键字作为特殊标识符处理,把它们预先安排在一张表格中(成为关键字表) , 当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字, 否则为一般标识符。关键字表为一个字符串数组,其描述如下: char *rwtab6=“begin”,”if”,”then”,”while”,”do”,”end”; (2) 程序中需要用到的主要变量为 syn,token 和 sum。 2. 扫描子程序的算法思想 首先设置 3 个变量:token 用来存放构成单词符号的字符串;sum 用来存放 整形单词;syn 用来存放单词符号的种别码。扫描子程序主要部分流程如图 1.2 所 示。 图 1.2 词法分析程序流程 1.4 代码实现代码实现 1.库、全局变量和函数 编编 译译 原原 理理 课课 程程 实实 验验 报报 告告 4 实验中需要的库和全局变量如下图 1.3 所示。 图 1.3 词法分析需要的库和全局变量 2.词法分析主程序 代码实现如下图 1.4 所示。 图 1.4 词法分析主程序 1.5 实验结果实验结果 支持多语句输入和换行输入,实验结果如下图 1.5 所示 图 1.5 词法分析实验结果 编编 译译 原原 理理 课课 程程 实实 验验 报报 告告 5 对照表 1 中的种别码,证明实验结果正确。 二、词法分析二、词法分析 2.1 实验目的实验目的 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检 查和结构分析。 2.2 实验要求实验要求 利用 C 语言编制递归下降分析程序,并对简单语言进行语法分析。 1.1.待分析的简单语言的语法待分析的简单语言的语法 用扩充的 BNF 表示如下: (1):=beginend (2):=; (3):= (4):=ID:= (5):=+|- (6):=*|/ (7):=ID|NUM|() 2.2.实验要求说明实验要求说明 输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印 “success” ,否则输出“error” 。 例如: 输入 begin a:=9;x:=2*3;b:=a+x end # 输出 success 输入 x:=a+b*c end # 输出 error 2.3 算法思想算法思想 (1)主程序示意图如图 2.1 所示。 (2)递归下降分析程序示意图如图 2.2 所示。 (3)语句串分析过程示意图如图 2.3 所示。 (4)赋值语句、表达式、项、因子的分析函数流程图分别如图 2.4、2.5、2.6、2.7 编编 译译 原原 理理 课课 程程 实实 验验 报报 告告 6 所示。 图 2.1 主程序示意图 图 2.2 递归下降分析程序示意图 图 2.3 语句串分析程序示意图 图 2.4 statement 赋值语句分析函数示意图 编编 译译 原原 理理 课课 程程 实实 验验 报报 告告 7 图 2.5 expression 表达式分析函数示意图 图 2.6 term 项分析函数示意图 编编 译译 原原 理理 课课 程程 实实 验验 报报 告告 8 图 2.7 factor 因子分析函数示意图 2.4 代码实现代码实现 1.递归下降分析过程函数 递归下降分析过程如图 2.2 所示,其代码如下图 2.8 所示。 图 2.8 递归下降分析过程函数 2.5 实验结果实验结果 支持多语句输入和换行输入,如果实验中输入的字符串是文法正确的句子,则输出成 功信息,打印“success” ,否则输出“error” ,并且要输出出错类型,例如:“缺 end 错误” 、 “begin 错误” 、 “赋值号错误” 、 “语句错误” 、 “输出错误” 、 “表达式错误” 等。实验测试结果如下。 1.输入串文法正确,测试结果如图 2.9 所示 图 2.9 输入串文法正确 2. begin 错误,测试结果如图 2.10 所示 编编 译译 原原 理理 课课 程程 实实 验验 报报 告告 9 图 2.10 begin 错误 3. 缺 end 错误,测试结果如图 2.11 所示 图 2.11 缺 end 错误 4. 赋值号错误,测试结果如图 2.12 所示 图 2.12 赋值号错误 5. 语句错误,测试结果如图 2.13 所示 图 2.13 语句错误 6. 输出)错误,测试结果如图 2.14 所示 图 2.14 输出)错误 7. 表达式错误,测试结果如图 2.15 所示 编编 译译 原原 理理 课课 程程 实实 验验 报报 告告 10 图 2.15 表达式错误 在实验过程中,若是输入的单词串中含有不止一个错误,如上图 2.15 所示,单词串既 有表达式错误,也有缺 end 错误,但是在本次实验中,我们因为已经判断出了表达式 错误,那么就会停止对单词串的继续扫描,所以输出结果只有第一个错误。 三、三、体会体会 通过上机,不仅提高了编程水平,更是加深了自己对课本知识的理解。 首先,我更加感受到实验前准备的意义。上机前准备越充分(如先制定好准备做 的一些步骤

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论