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

下载本文档

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

文档简介

词法分析器词法分析器的设计姓名: 胥胜林学号: 24 班级: 2001级计算机教育班一、实验目的:编制一个简单的词法分析器,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字,标识符,常数,运算符,分隔符五大类。并依次输出各个单词的内部编码及单词符号。二、实验原理:词法分析器的基本原理三、设计思路1 单词符号以及内部表示单词符号种别编码 保留字(IF,WHILE,INT等)1标识符2常数(无符号整型数)3运算符(+,-,*,/,= 等)4分隔符( ,、;、 、(、) )52 状态转换图10空格字母或数字2字母 非字母与数字数字43数字 非数字5运算符6分隔符3 状态转换图的实现(1) 引进的全局变量与函数char listseparator8= ,;,(,),0;char keywordlist1010=if,for,do,while,break,continue,case,return,int,long;/用于判断输入的字符是不是英文字母(大写,小写)bool CEx09View:ischar(char ch) if( (ch=A & ch=a & ch=0 & ch=9)return true;elsereturn false;/用于判断输入的字符是不是运算符bool CEx09View:islistseparator(char ch)for(int i=0;i) | (ch=) | (ch=) | (ch=!) return true;elsereturn false;(2) 实现步骤:第一步:从屏幕上接收字符若干,并按行存放到一个字符型的二维数组中。第二步:从二维数组中一个一个地读字符,是空格,执行接收空格的循环;是字母,执行字母的循环,并累加到一个字符型的二维数组中。当遇到不是字母时,退出循环,将新的二维数组的行加1,其它类型的同上判断。第三步:根据新的字符数组的值,显示出相应的单词符号与种别编码。四、程序结构描述(1) 功能描述: 该程序是模拟一个词法分析器,根据用户所输入的小程序,分析出其中所有的单词符号与种别编码。(2) 流程图数组中的字符判断结束否?isdata()函数ischar()函数OnChar()函数,输入字符若干,并存放到数组中,OnWord进行判断开始isoperator()函数islistseparator()函数NO 结束显示出单词符号以及种别编码YES五、实验过程记录开始,在程序调试过程中,老是漏了一些单词符号,得不出预期的结果,后来,发现了问题的所在,我用变量i控制数组的行,变量j控制数组的列。原来,在退出循环时,在执行break语句前,要加一个j-;加了以后,我的程序运行后,得出了预期的结果。程序结果如下:六、实验总结本次实验,让我更进一步了解了词法分析器的原理,以及如何用程序去实现一个简单的词法分析器。我的程序还可以,在输入程序以后,单击工具栏按钮“词”时,将分析所得的单词符号与种

温馨提示

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

评论

0/150

提交评论