




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数学与信息工程学院编译原理实验报告一实验名称:词法分析 实 验 室:6202班 级:09计算机3班姓 名:沈春晖学 号:0929210062词法分析器的设计一、 实验目的通过完成词法分析程序,了解词法分析的过程。编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。二、 实验环境操作系统:window xp编写环境:visual c+ 、c-free、turbo c编写语言:c语言分析语言:PL/0三、 实验内容对PL/0语言进行词法分析,把输入的字符串形式的源程序分割成一个个单词符号,其词法描述如下:(1) 关键字:begin,call,const,do,end,if,odd,procedure,read,then,var,while,write(2) 标识符:用来表示各种名字,必须以字母开头小于10位字符组成(3) 数字:以0-9组成小于14位的数字(4) 运算符:+,-,*,/,:=,=(5) 界符:,,.,;,#表1 各种单词符号对应类型表单词符号类型+plus-minus*times/slash(lparen)rparen=eql,comma.perio#neq;semicolonbeginbeginsymcallcallsymconstconstsymdodosymendendsymififsymoddoddsymprocedureproceduresymreadreadsymthenthensymvarvarsymwhilewhilesymwritewritesymNNYY开始调用GETSYM取单词输入要分析的文件文件是否存在文件是否结束结束打印分析结果图1 主流程图YNNNNNYYYYGETSYM滤空CH=空?GETCHCH是字母?K:=0K=、:=、=等单词,识别后将类别送SYM中(6) 输出源程序 为边读入字符边输出(可输出在文件中)NNGETCH缓冲区是否还有字符?源程序文件是否结束?打印出错信息停止编译读入一行源程序放入在LINE中并输出,置CC:=0CC:=CC+1CH:=LINECC返回YY图3 GETCH流程图四、 实验结果要分析的内容如下:const a=35;var c,d;procedure p;beginvar g;g:=465494366466564444;write(g);end;图4 实验结果图beginread(c,d);if c=d then c:=a;write(c,d);call p;end. 五、 实验小结(心得体会)刚开始的时候运行中报错,原因是函数的调用顺序出现错误,后经调试改正了。通过本实验的完成,更了解了此法分析的基本任务是从字符串表示的原程序中识别出具有独立意义的单词符号,其基本意思是根据少苗到单词符号的第一个字符的种类,拼出相应的单词符号。附录:源代码#include#include string.h#define al 10 /*符号的最大长度*/#define norw 13 /*关键字个数*/#define namx 14 /*数字允许的最长位数*/FILE *fin;FILE *fout;char fnameal,fwnameal,aal+1/*a50*/,idal+1,sym20;static char sword11=+,-,*,/,(,),=,.,#,;static char ssym11al=plus,minus,times,slash,lparen,rparen,eql,comma,period,neq,semicolon;static char word13al=begin,call,const,do,end,if,odd,procedure,read,then,var,while,write;/保留关键字static char wsym13al=beginsym,callsym,constsym,dosym,endsym,ifsym,oddsym,procsym,readsym,thensym,varsym,whilesym,writesym;/关键字类型int cc,ll,cx,linecount,num;char line81;char ch;void main()int getsym();printf(*编译原理实验PL/0语言词法分析*n);printf(请输入进行词法分析的文件名:);scanf(%s,fname);fin=fopen(fname,r);printf(请输入分析结果保存的文件名:);scanf(%s,fwname);fout=fopen(fwname,w);linecount=0;/记录文件的行数cc=ll=0;ch= ;if(fin)printf(n-开始词法分析-n);fprintf(fout,-开始词法分析-n);printf(单词自身的值 单词种别n);fprintf(fout,单词自身的值 单词种别n);while( getsym()!=-1 )printf(%-20s,a);fprintf(fout,%-20s,a);printf(%s,sym);/输出单词种别fprintf(fout,%s,sym);printf(n);fprintf(fout,n);printf(%-20s,a);fprintf(fout,%-20s,a);printf(%s,sym);/输出单词种别fprintf(fout,%s,sym);printf(n程序分析完毕);fprintf(fout,n程序分析完毕);elseprintf(你输入的文件不存在);fprintf(fout,你输入的文件不存在);void error(int rowcount,int wordcount)printf(!第%d行第%d个位置数字越界n,rowcount,wordcount);fprintf(fout,!第%d行第%d个位置数字越界n,rowcount,wordcount);int getch()if(cc=ll)/缓冲是否被读取完毕if(feof(fin)return -1; ll=0;cc=0;ch= ;while(ch!=10)if(EOF=fscanf(fin,%c,&ch)linell=0;break;linell=ch;ll+;linecount+;printf(开始分析程序的第%d行n,linecount);fprintf(fout,开始分析程序的第%d行n,linecount);ch=linecc;cc+;return 0;int getsym()int i,j,k;while(ch= | ch=10 | ch=9 )/*判断字符是否为空,空跳过取下一个字符*/if(-1=getch()return -1;if(ch=a & ch=z)/如果是字符或以字符开头int b=0;k=0;doif(k=a & ch=0 & ch=9);ak=0;strcpy(id,a);i=0;j=norw-1;dok=(i+j)/2;if(strcmp(id,wordk)=0)i=k+1;while(ij) strcpy(sym,wsymk);elsestrcpy(sym,ident);if(b=1) return -1;elseif(ch=0 & ch=0 & chnamx)error(linecount,cc);/错误处理,数字越界 else/如果是计算、比较符号a0=ch; if(ch=:)if(-1=getch()a1=0;return -1;if(ch=)strcpy(sym,becomes);a1=ch;a2=0;if(-1=getch() return -1;elsea1=0;strcpy(sym,nul);/不可识别符号 elseif(ch=)if(-1=getch() a1=0;return -1;if(ch=)a1=ch;a2=0;strcpy(sym,geq);if(-1=getch() return -1;elsea1=0;strcpy(sym,gtr);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人体解剖学消化腺课件
- 2025年预防气管导管非计划拔管护理标准指引试题(附答案)
- 2025年医疗器械冷链管理培训试题含答案
- 2025年冷链医疗器械管理考核试题及答案
- 2025年大气污染控制工程试题库答案加重点版
- 人体的组成课件
- 美术自主招生数学试卷
- 人体形态学结缔组织课件
- 南高冬令营初三数学试卷
- 洛阳八年级中考数学试卷
- 2025年初中语文八年级下册试讲稿(教师招聘面试)安塞腰鼓
- 2024年安全生产事故案例分析
- 2025-2030中国冷冻扫描电镜(CryoSEM)行业供需状况及发展痛点分析研究报告
- 网络技术基础知识单选题100道及答案
- 人力资源和社会保障局公务员考试真题及参考答案(满分必刷)
- 江苏无锡历年中考作文题与审题指导(2002-2024)
- 2025年上半年北京广播电视台招聘140人笔试易考易错模拟试题(共500题)试卷后附参考答案
- 《慢性阻塞性肺疾病与肺源性心脏病》课件
- 化工厂班组员工安全活动
- 酒店客房验收工程项目检查表
- RFID固定资产管理系统解决方案文档
评论
0/150
提交评论