下载此文档

编译原理实验报告 编译原理实验报告.doc


文档分类:高等教育 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
编译原理实验报告 编译原理实验报告.doc编译原理实验报告编译原理实验报告实验题目:词法分析器姓名:XXX班级:XXX学号:XXX指导老师:XXX时间:2008-10-25一、 实验目的:设计、编制、调试一个词法分析子程序一识别单词,加深对词法分析原理的理解。二、 实验要求:对给定的程序通过词法分析器弄够识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示。而本程序则是通过对给定路径的文件的分析后以单词符号和文字提示显示。本程序口行规定:(1)关键字begin,end,if,then,else,while,write,read,do,call,const,char,until,procedure,repeat(2)运算符:〃 〃厂〃〃〃〃丁〃〃〃〃〃〃」,、、、、(3)界符:〃〃■(4) 其他标记如字符串,表示以字母开头的标识符。(5) 空格、回车、换行符跳过。在屏幕上显示如下:(1,无符号整数)(begin,关键字)(if,关键字)(+,运算符)(;,界符)(a,普通标识符)三、 使用环境:Windows下的visualc++;四、 调试程序:1•举例说明文件位置:f:、、:beginx:=9ifx>0thenx:二x+1;whilea:=0dob:二2*x/3;end;2•运行结果:五、程序源代码:ttinclude<iostream>#include<string>usingnamespacestd;ttdefineMAX22charch二':stringkeyLlo」二1begin,end,it,then,else,while,write,read'',〃」〃 〃 H1〃〃 亠〃〃 1 〃〃 ▲•=〃〃 1 〃〃 亠〃1do,call,const,char,until,procedure,repeatj;intIskey(stringc){ //关键字判断inti;for(i二0;i〈MAX;i++){if(key[i]・compare(c)==0)return1;1return0;}intIsLetter(charc){ //判断是否为字母if(((c〈二'z)&&(c〉二'a'))II((c〈二'Z')&&(c〉二'A')))return1;elsereturn0;!intIsDigit(charc){ //判断是否为数字if(c〉二'O'&&c〈二'9')return1:elsereturn0;voidanalyse(FILE*fpin){•〃〃stringarr=;while((ch=fgetc(fpin))!=E0F){arr=;if(ch二二, ||ch二二,\t,||ch二二,\n){}elseif(IsLetter(ch)){while(IsLetter(ch)|IIsDigit(ch)){if((ch〈二'Z')&&(ch>二'A'))chFch+32;arr二arr+ch;ch=fgetc(fpin);}fseek(fpin,-IL,SEEKCUR);if(Iskey(arr)){cout«arr«,z\t$关键字,,«endl;}elsewhile(IsDigit(ch)elsecout<<arr<<,,\t$普通标识符,,<<endl;if(IsDigit(ch)){Ich二二'.'&&IsDigit(fgetc(fpin))){arr=arr+ch;ch二fgetc(fpin);)fseek(fpin,-lL,SEEKCUR);cout<<arr<<,,\t$无符号实数z,<<endl;elseswitch(ch){case+:case'-'case,*,case5=case,/':cout<<ch<</z\t$运算符〃〈〈endl;break;case,(,case丿case'['case,]case';case'•case','case,『case"}':cout〈〈ch〈〈〃\t$界符,z«endl;break;case,:':{ch=fgetc(fpin);if(ch二二'二')cout〈〈〃:二运算符,z«endl;else{cout〈〈〃二运算符"〈〈endl;;fseek(fpin,-lL,SEEKCUR);}}break;case'〉':{ch=fgetc(fpin);if(ch二二'二')cout«z,>=,,«z,\t$运算符,z«endl;if(ch二二'〉')输入控制符,,«endl;else{cout«,,>,,«,,\t$运算符〃〈〈endl;fseek(fpin,-IL,SEEKCUR);}}break;case'〈':{ch=fgetc(fpin);if(ch二二'二')cout<<,,<=,,<<z/\t$运算符,z«endl;elseif(ch二二'〈‘)

编译原理实验报告 编译原理实验报告 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人sssmppp
  • 文件大小58 KB
  • 时间2020-09-28