版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
词法分析器设计词法分析器设计词法分析器设计V:1.0精细整理,仅供参考词法分析器设计日期:20xx年X月学号《编译原理》实验1:词法分析器设计学生姓名专业、班级指导教师成绩计算机与信息工程学院2018年11月20日一、实验目的理解词法分析程序的功能。熟悉词法分析程序的设计原理和构造方法。理解词法分析程序输出单词的形式。设计实现针对简单语言的一个词法分析程序。二、实验要求根据书P199给出的简单语言的词法和各单词符号种别码表,编写C或C++语言源程序,实现针对该简单语言的词法分析器;独立做实验,输入、调试所编程序;实验结束后,根据实验报告模板编写实验报告。三、实验内容和步骤用VisualC++作为实验开发环境,创建一个Win32ConsoleApplication工程,工程名为你的学号,添加三个文件:(1)存储结构定义:以为文件名;(2)基本操作和算法:以为文件名;(3)调用基本操作的主程序:以为文件名。编写程序:(1)文件定义单词符号的二元组结构、全局变量、关键字表的结束标志等。(2)文件实现词法扫描算法scanner及其所需的各种基本操作算法。(3)文件调用scanner算法,实现词法分析器的功能。源程序代码:==============================================================#define_KEY_WORD_END"waitingforyourexpanding"typedefstruct{ inttypenum; char*word;}WORD;=============================================================#include""charinput[50]="";chartoken[255]="";intp_input;intp_token;charch;char*rwtab[]={"begin","if","then","while","do","end",_KEY_WORD_END};程序示意图eq\o\ac(○,)关键字表的初值。关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下:Char*rwtab[6]={“begin”,“if”,“then”,“while”,“do”,“end”};置初值置初值调用扫描子程序调用扫描子程序输出单词二元组输出单词二元组输入串结束否输入串结束 是结束结束eq\o\ac(○,)程序需要用到的主要变量为syn,token和sum。2.扫描子程序的算法思想首先设置3个变量:(1)token用来存放构成单词符号的字符串;(2)sum用来存放整型单词(3)syn用来存放单词符号的种别码。(2)画出词法扫描算法scanner识别简单语言的状态转换图DFA(可手画再插入图片)(3)解释子程序reverse的每句代码含义reserve函数的作用是遍历关键字表格,判断当前存入token的字符串是否是关键字eq\o\ac(○,)首先先设定一个初值为0的变量i(存在于while外部,会因为循环内部的操作而进行改变)eq\o\ac(○,)while条件内部完整代码应为:while(strcmp(rwtab[i],_KEY_WORD_END)!=0),strcmp函数的作用是判断两个字符串是否相等:设两个字符串str1,str2,若str1==str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。已知关键字表格中最后一个元素为_KEY_WORD_END,所以这行代码的意思就是,从关键字表格中第一个字符串开始遍历(循环一次后i++),遍历到最后一个通过strcmp函数运算等于零不满足循环条件所以跳出循环。eq\o\ac(○,)循环体内部if当前字符串和遍历到的关键字进行比较,两者相等时满足条件(!0!=0),相等时返还i+1。eq\o\ac(○,)最后返还10(关键字的种别码)(4)针对文件中main函数的while(over<1000&&over!=-1)语句,解释over的含义及何时over==-1while(over<1000&&over!=-1)当while中的语句满足条件时继续循环,循环体内内容为:读取一个新单词,并输出他的(种别码,单词自身的值)的二元组,并把当前单词的种别码的值赋值给over;当出现了字符串的终结位置位1000,错误操作(输入了不可识别的单词符号)置为-1,输入‘#’与之对应的当scanner函数中出现这种情况时跳出循环,程序结束。五、实验结果针对输入的源程序,经词法分析后,给出实验结果截图。(1)源程序beginx:=9;ifx>0thenx:=2*x+1/3;end#实验结果截图:(2)输入一段此简单语言的源程序,要求每人不同,且包含单词符号while<>-源程序:beginx:=31;whilex>13thenx<-;end#实验结果截图:六、实验中遇到的问题及解决方法本次实验的任务是用C++编写一个词法分析器,词法分析的基本任务是从字符串表示的源
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年航空器制造销售合同
- 专业技术服务提供合同
- 中国铁路建设工程设计施工总承包合同
- 赔偿合同协议
- 车业出让合同范文
- 傣族民居出售合同范文
- 企业利润赠与合同(2024年版)
- 城市公共照明工程合同(2024年版)
- 影视剧出品合同(2024年版)
- 弱点工程合同依据
- 五年级上册英语人教PEP版课件书面表达
- 中国常用汉字大全
- PPT:增进民生福祉提高人民生活品质
- 开具红字发票情况说明
- 2022 年奥赛希望杯二年级培训 100题含答案
- 水利工程建设汇报材料(通用3篇)
- 10篇罪犯矫治个案
- 中央企业商业秘密安全保护技术指引2015版
- 艾草种植基地建设项目可行性研究报告
- 留守儿童一生一档、联系卡
- GB/T 2007.2-1987散装矿产品取样、制样通则手工制样方法
评论
0/150
提交评论