编译原理--实验报告1.doc_第1页
编译原理--实验报告1.doc_第2页
编译原理--实验报告1.doc_第3页
编译原理--实验报告1.doc_第4页
全文预览已结束

下载本文档

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

文档简介

大学计算机科学与技术学院实验报告 计算机基础实验教学中心编制 成绩 指导教师(签字) (存档) 实验课程名称:编译原理课程设计 实 验 项 目:词法分析程序开发 实 验 仪 器:机房计算机 实 验 要 求: 独立完成SNL语言的词法分析器 学会用直接转向法实现有限自动机 掌握各类单词的形式描述 实验步骤、分析设计与结果:实验步骤:一、 构造识别单词的自动机1.根据构成规则对程序语言的单词按类构造出相应的状态转换图。2. 对各类单词的状态转换图合并,构成一个能识别语言所有单词的状态转换图。合并步骤为:(1) 将各类单词的状态转换图的初始状态合并为一个唯一的初态; (2) 化简调整状态冲突和对冲突状态重新编号; (3) 如有必要,增加出错状态。下面是DFA,我们将所有的识别完成的状态之后就认为其变成完成状态。并且只有三种出错状态(1) 赋值 :=出错;(2) 字符引用 A出错;(3) 使用了未声明的字符如 & 等出错。二、 用直接转向法实现有限自动机,生成词法分析程序1、 定义SNL语言的Token结构:typedef struct tokenType int lineshow;/保存为第几行LexType Lex;/枚举类型char SemMaxoftoken+1;/语义信息 TokenType1;2、 主要函数(1)void printTokenlist(ChainNodeType *head)/输出token序列,比较详细(2)void ChainToFile (ChainNodeType *Chainhead)/这里没有详细的说明情况,枚举类型用的是数字(3)int getNextChar(void) /得到下一个单词(4)void ungetNextChar(void)/实现后退功能(5)LexType reservedLookup (char * s)/查找关键字(6)void getTokenlist(void)/词法分析主要的部分,最后得到链表(7)void COurCompilerDlg:OnWordanalyze( void)/可视化部分(8)void COurCompilerDlg:OnOpensource(void )3、分工部分首先,大家先对课本进行复习,集体进行讨论,研读附带的代码,之后进行分工编写,完成后进行整合调试。丁主要完成程序的可视化和图形文件接口方面的工作,最后将各个函数整合调试。张主要完成词法分析函数,主要是函数gettokenlist函数,及相关的小函数,最后编写报告。樊主要完成文件流方面的工作,显示保存源文件及显示结果。3、 实验结果以上是正确分析程序的结果。这里故意输入一个错误的程序,可以看到对错误字符&,x:3,都能提示错误。4、 心得体会:(1) 通过复习以前的课程和研读代码,自己亲自编写,更深入了解了词法分析方面的工作。(2) 加强了原来C的一些文件流,结构体和相关函数的应用熟悉,包括一些库函数的应用比如fgets,strcmp,isdigit,isalpha等。(3) 调试过程中,发现的一些不太容易发现的错误,比如MFC中已经有的关键字,我们重新进行了定义枚举名字ENDFILE1,ERROR1,CH

温馨提示

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

评论

0/150

提交评论