实验一词法分析.doc

上传人:s9****2 文档编号:543562229 上传时间:2023-12-23 格式:DOC 页数:5 大小:77KB
返回 下载 相关 举报
实验一词法分析.doc_第1页
第1页 / 共5页
实验一词法分析.doc_第2页
第2页 / 共5页
实验一词法分析.doc_第3页
第3页 / 共5页
实验一词法分析.doc_第4页
第4页 / 共5页
实验一词法分析.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《实验一词法分析.doc》由会员分享,可在线阅读,更多相关《实验一词法分析.doc(5页珍藏版)》请在金锄头文库上搜索。

1、 实验一 词法分析本节进行词法分析程序的编程与调试。1实验要求(1)从源程序文件中读取有效字符和并将其转换成二元组内部表示形式输出。(2)掌握词法分析的实现方法。(3)实验时间4学时。(4)实验完成后,要上交实验报告(包括源程序清单)。2实验内容2.1主程序设计考虑:主程序的说明部分为各种表格和变量安排空间(关键字和特殊符号表)。id 和ci 数组分别存放标识符和常数;还有一些为造表填表设置的变量。主程序的工作部分建议设计成便于调试的循环结构。每个循环处理一个单词;接收键盘上送来的一个单词;调用词法分析过程;输出每个单词的内部码(种别编码,属性值)。2.2词法分析过程考虑该过程根据输入单词的第

2、一个有效字符(有时还需读第二个字符),判断单词种别,产生种别编码。对于标识符和常数,需分别与标识符表和常数表中已登记的元素相比较,如表中已有该元素,则记录其在表中的位置,如未出现过,将标识符按顺序填入数组 id 中,将常数存入数组中 ci 中,并记录其在表中的位置。注:所有识别出的单词都用二元组表示。第一个表示单词的种别编码。例如:关键字的 t=1;标识符的 t=2;常数 t=3;运算符 t=4;界符 t=5。第二个为该单词在各自表中的指针或内部码值(常数表和标识符表是在编译过程中建立起来的。其 i 值是根据它们在源程序中出现的顺序确定的)。关键字和特殊符号如下:单词代码12345678910

3、名字intcharfloatvoidconstifelsedowhilescanf单词代码11121314151617181920名字printfreturnmainread+*/%=单词代码21222324252627282930名字= =&|!单词代码31323334353637383940名字();,“+-将词法分析程序设计成独立一遍扫描源程序的结构。其主流程图如下:图1 词法分析程序流程图三程序代码#include#includevoid main()char aa50;staticchar id10050,ci10020;char aa13020=int,char,float,voi

4、d,const,if,else,do,while,scanf,printf,return,main,read;id00=0;ci00=0;char aa43020=+,-,*,/,%,=,=,=,=,&,|,!,+,-;char aa53020=(,),;,;cout想要退出,请输escendl;cout请输入任意字符串表示程序开始aa;while(strcmp(esc,aa)!=0) cinaa;if(aa0=A& aa0=z)int i,m,j;for(i=0;i14;i+)if(strcmp(aa1i,aa)=0)cout种别编码:t=1,内部编码:i=i=14)for(i=0;i100

5、;i+)if(idi0=0)m=i;break; for(i=0;im;i+) if(strcmp(idi,aa)=0) cout种别编码:t=2,内部编码:i=i=m)strcpy(idm,aa); idm+10=0;cout种别编码:t=2,内部编码:i=m=0& aa0=9)int i,n;for(i=0;i100;i+)if(cii0=0)n=i;break; for(i=0;in;i+) if(strcmp(cii,aa)=0) cout种别编码:t=3,内部编码:i=i=n)strcpy(cin,aa);cin+10=0;cout种别编码:t=3,内部编码:i=iendl; elseint i;for(i=0;i20;i+)if(strcmp(aa4i,aa)=0) cout种别编码:t=4,内部编码:i=iendl;break;for(i=0;i20;i+)if(strcmp(aa5i,aa)=0)cout种别编码:t=5,内部编码:i=iendl; break;四实验结果五实验总结本次试验的主要困难是如何把词法分析的问题转化为才c+来实现,只要有了整体的框架,剩下的工作就好做了。做本次试验时,遇到的问题都是由于马虎而造成的细节性错误,通过仔细检查后,都解决了。通过本次实验,我彻底的理解了词法分析的过程,也学会了把这一过程通过高级编程语言来实现。收获良多!2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号