编译原理词法分析实验一-词法分析扫描器的设计实现

上传人:aa****6 文档编号:33637064 上传时间:2018-02-16 格式:DOC 页数:14 大小:79KB
返回 下载 相关 举报
编译原理词法分析实验一-词法分析扫描器的设计实现_第1页
第1页 / 共14页
编译原理词法分析实验一-词法分析扫描器的设计实现_第2页
第2页 / 共14页
编译原理词法分析实验一-词法分析扫描器的设计实现_第3页
第3页 / 共14页
编译原理词法分析实验一-词法分析扫描器的设计实现_第4页
第4页 / 共14页
编译原理词法分析实验一-词法分析扫描器的设计实现_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《编译原理词法分析实验一-词法分析扫描器的设计实现》由会员分享,可在线阅读,更多相关《编译原理词法分析实验一-词法分析扫描器的设计实现(14页珍藏版)》请在金锄头文库上搜索。

1、编译原理程序设计实验报告实验题目班级:计算机 1306 姓名: 学号:289实验目标:词法分析扫描器的设计实现实验内容:1. 概要设计1) 主函数:每次从文件中读取一个字符,不是#,继续判断其是否是 09 数字,是进入 isnumber()函数,否继续判断其是否是az 或 AZ,是进入 isalpha()函数,否继续判断是否是空格或换行符,是继续读下一个字符,否进入 isother()函数。2) Isnumber():读字符,将数字(包括小数点)全部接收,并存入常数表。3) Isalpha():读字符,将 az 或 AZ(包括下划线)全部接收,与关键字表比较,匹配,输出序号,否则存入标识符表。

2、4) Isother():读字符,将符号都接受,与界符表比较,匹配输出序号,遇到”或分别存入字符表和字符串表。2. 流程图TFTFTFF3. 关键函数void IsNumber(); /读的是数字void IsAlpha(); /读的是关键字和标示符int IsOther();/读字符、字符串、界符从文件读一个字符09? 进入函数Isnumber()az 或 AZ? 进入函数isAlpha()#?空格或/n?进入isOther()结束开始源程序代码:(加入注释)#include#include#include #include using namespace std;/*定义结构体*/type

3、def struct Tokenchar name20;int state; /状态,为 0 是标识符,为 1 是字符,为 2 是字符串,为 3 是数字,为 4 是关键字,为 5 是界符 Token;typedef struct STR /char name20;int code;STR;STR iT10;STR cT20;STR sT20;STR CT20;STR KT10=int,4,main,5,void,6,if,7,else,8,char,9;STR PT30=,10,14,=0)&(ch=a)&(ch=A)&(ch=0)&(ch9)CurrentToken.namek+=ch;fl

4、ag=0;elsewhile(ch=0)&(ch;elsecout=a)&(ch=A)&(chn,CurrentToken.name,KTi.code);strcpy(tokenindex.name,CurrentToken.name);tokenindex+.state =4;printf( ,KTi.code);break;if(flag!=1)while(ch=a)&(ch=A)&(ch=0)&(chn,CurrentToken.name);printf( );strcpy(tokenindex.name,CurrentToken.name);tokenindex+.state =0;i

5、nt tag=0;for(int j=0;j: CurrentToken.name0=;flag=1;ch=fgetc(fp);if(ch =)CurrentToken.name1=;ch=fgetc(fp);break;elsebreak;case=a&ch=A&ch;strcpy(tokenindex.name,CurrentToken.name);tokenindex+.state =1;int tag=0; for(int j=0;j=a&ch=A&ch;strcpy(tokenindex.name,CurrentToken.name);tokenindex+.state =1;int

6、 tag=0;for(int j=0;jn,CurrentToken.name,PTi.code);printf( ,PTi.code);strcpy(tokenindex.name ,CurrentToken.name );tokenindex+.state =PTi.code;break;if(flag!=1)ch=fgetc(fp);/while(ch= |ch=n) ch=fgetc(fp);return 0;程序运行结果:(截屏)输入:Source.txt 文本int main (void)int a=1, d=2,c;if(a=d) c=a;a=d;d=c;char ch10=ok;char x,y=a;c=a+d;#输出:

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

当前位置:首页 > 学术论文 > 毕业论文

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