实验一词法分析

实验一词法分析

ID:34292247

大小:77.00 KB

页数:5页

时间:2019-03-04

实验一词法分析_第1页
实验一词法分析_第2页
实验一词法分析_第3页
实验一词法分析_第4页
实验一词法分析_第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。第二个为该单词在各自表中

3、的指针或内部码值(常数表和标识符表是在编译过程中建立起来的。其i值是根据它们在源程序中出现的顺序确定的)。关键字和特殊符号如下:单词代码12345678910名字intcharfloatvoidconstifelsedowhilescanf单词代码11121314151617181920名字printfreturnmainread+–*/%=单词代码21222324252627282930名字==><!=>=<=&&

4、

5、!<>5单词代码31323334353637383940名字(){};,“‘++--

6、将词法分析程序设计成独立一遍扫描源程序的结构。其主流程图如下:图1词法分析程序流程图三.程序代码#include#includevoidmain(){charaa[50];staticcharid[100][50],ci[100][20];charaa1[30][20]={"int","char","float","void","const","if","else","do","while","scanf","printf","return","main","

7、read"};5id[0][0]='';ci[0][0]='';charaa4[30][20]={"+","-","*","/","%","=","==",">","<","!=",">=","<=","&&","

8、

9、","!","<>","++","--"};charaa5[30][20]={"(",")","{","}",";",",",",","'"};cout<<"想要退出,请输esc"<>aa;while(s

10、trcmp("esc",aa)!=0){cin>>aa;if(aa[0]>='A'&&aa[0]<='z'){inti,m,j;for(i=0;i<14;i++){if((strcmp(aa1[i],aa)==0)){cout<<"种别编码:t=1,内部编码:i="<=14){for(i=0;i<100;i++){if(id[i][0]==''){m=i;break;}}for(i=0;i

11、cout<<"种别编码:t=2,内部编码:i="<=m){strcpy(id[m],aa);id[m+1][0]='';cout<<"种别编码:t=2,内部编码:i="<='0'&&aa[0]<='9'){inti,n;for(i=0;i<100;i++)5{if(ci[i][0]==''){n=i;break;}}for(i=0;i

12、<"种别编码:t=3,内部编码:i="<=n){strcpy(ci[n],aa);ci[n+1][0]='';cout<<"种别编码:t=3,内部编码:i="<

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

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

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