【精品】实验三 词法分析实验.doc

【精品】实验三 词法分析实验.doc

ID:51078844

大小:201.50 KB

页数:10页

时间:2020-03-18

【精品】实验三 词法分析实验.doc_第1页
【精品】实验三 词法分析实验.doc_第2页
【精品】实验三 词法分析实验.doc_第3页
【精品】实验三 词法分析实验.doc_第4页
【精品】实验三 词法分析实验.doc_第5页
资源描述:

《【精品】实验三 词法分析实验.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验三词法分析一、目的要求通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程屮将其分解为各类单词的词法分析方法。二、实验分析本实验以用户指定的想编译的以C语言编写的文件作为词法分析程序的输入数据。在进行词法分析屮,先自文件头开始以行为单位扫描程序,将该行的字符读入预先设定的一个数组缓冲区屮,然后对该数组的字符逐词分割,进行词法分析,将每个词分割成关键字、标识符、常量和运算符四种词种,最终产生四个相对应的表,即关键字表、标识符表、常量表和运算符表,它们以文件的形式进行

2、存储。除此之外,还产生一个编译后的文件,它指定了每个词在四个表屮的位置。三、实验过程文件:cpile.ckey.txtoperation.txtid.txtconst,txtaftercom.txt主要变量:主程序文件关键字文件运算符文件标识符文件常暈文件编译后产生的文件FILE*sfp,*nfp,*ifp,*kfp,*cfp,*pfp;charib[50][20]charcb[50][10]charkb[44][10]charpb[36][5]主要的子函数名:标识符表(动态生成)常量表(动态生成)关键字表(预先定义好的

3、)运算符表(预先定义好的)字符处理出错报告标识符处理出错报告运算符处理出错报告打开所有文件将四个表写入文件intnumber(chars[],inti);数字处理函数intletter(chars[],inti);字符处理函数intoperation(chars[],inti);运算符处理函数voidseti(chars[]);标识符建立函数voidsetc(chars[]);常量建立函数voidcfile(charsi[],chars2[],intm);将词和词所在表中位置写入编译后文件voiderror1(chars

4、[]);voiderror2(chars[]);voiderror3(chars[]);voidopenall();voidwriteall();voidcloseall();关闭所有文件下面简要分析一下词法分析程序的运行流程:否#inc1ude^include#includc#include^defineSIZE256^definenull0intline=O,error二0,mark1=0,mark2=0;char*snamc;FILE*s

5、fp,*nfp,*ifp,*kfp,*cfp,*pfp;/**/charib[50][20];charcb[50][10];charkb[44][10]={"chat","short","int","unsigned","long","float","double",,zstruct","union,void,〃〃〃・」〃〃〃〃i」・1〃〃」」“〃〃〃〃・〃〃丄」・〃〃〃enum,signed,const,volatile,typedei,auto,register,static,extern,break,case,co

6、ntinue,detault,do,else、tor,goto,it,return,switch,while,sizeot,txt,printt,FILE,fopen,NULL,tclose,exit,r,read,close,w,tprmtt};charpb[36JLoJ={!,,#,$,%,&9〃〃「〃〃,〃"\","丨丨",">「,〃++〃,"一","血","/*〃,“*/"};/*定义了四个二元数组存放四个表*/intmain(intargo,char*argv[]){charsbuff[SIZE];ch

7、arnbuff[SIZE];inti;/**/intnumber(chars[],inti);intletter(chars[],inti);intoperation(cha:rs[],inti);voidseti(chats[]);voidsetc(chars[]);voidcfile(charsl[],chars2[],intm):voiderror2(chars[]);voiderror1(chars[]);voiderror3(chars[]);voidopenall();voidwriteall();voidc

8、loseall();/**/if(argc!=2)printf(,zPleaseinputthefileyouwanttocompile:,z);exit(1);}elsesname=argv[1];sfp=fopen(argv[1],":r");openall();i二0;while(i<50){strcpy(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。