收藏 分享(赏)

《C语言词法分析器》开发文档及源代码.doc

上传人:HR专家 文档编号:7521405 上传时间:2019-05-20 格式:DOC 页数:24 大小:89KB
下载 相关 举报
《C语言词法分析器》开发文档及源代码.doc_第1页
第1页 / 共24页
《C语言词法分析器》开发文档及源代码.doc_第2页
第2页 / 共24页
《C语言词法分析器》开发文档及源代码.doc_第3页
第3页 / 共24页
《C语言词法分析器》开发文档及源代码.doc_第4页
第4页 / 共24页
《C语言词法分析器》开发文档及源代码.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、C 语言词法分析器开发文档Powered By 萌萌的玉雪一、实验题目编制并调试 C 词法分析程序。二、实验目的全面深入理解高级语言程序设计知识,掌握应用技巧,提高应用与分析能力。三、主要函数void load ( ) void char_search(char *word)void main ( )void intb_search(char *word)void scan ( )void c_search(char *word)void inta_search(char *word)void cc_search(char *word)四、设计1.主函数 void main ( )2. 初始化

2、函数 void load ( )绘制程序界面调用初始化函数:void load ( ) 实现文件的建立调用主扫描函数:void scan ( ) 实现文件的扫描分析完成后指引用户查看相关文件,直到用户输入退出命令函数结束通过文件指针建立相关文件函数结束3. 保留字及标识符判断函数 void char_search(char *word)4. 整数类型判断函数 void inta_search(char *word)5. 浮点类型判断函数 void intb_search(char *word)6. 字符串常量判断函数 void cc_search(char *word)7. 字符常量判断函数

3、void c_search(char *word)同 4、5 函数图8.主扫描函数 void scan ( )接收数据是否为保留字是:写入输出文件 否:查标识符表找到:写入输出文件没找到:写入表文件写入输出文件接收数据查表找到:写入输出文件没找到:写入整数常量表文件写入输出文件接收数据查表找到:写入输出文件没找到:写入整数常量表文件写入输出文件五、关键代码#include #include #include char *key0=“ “,“auto“,“break“,“case“,“char“,“const“,“continue“,“default“,“do“,“double“,“else“,

4、“enum“,“extern“,“float“,“for“,“goto“,“if“,“int“,“long“,“register“,“return“,“short“,“signed“,“sizeof“,“static“,“struct“,“switch“,“typedef“,“_Complex“,“_Imaginary“,“union“,“unsigned“,“void“,“volatile“,“while“;/*保留字表*/char *key1=“ “,“(“,“)“,“,“,“,“,“,“,“;“,“;/*分隔符表*/函数开始读入源文件中的一个单词宏定义判断忽略无效字符 忽略字符串 调用保

5、留字及标识符函数 void char_search 进行处理字符常量 调用字符常量判断函数 void c_search 进行处理字符串常量 调用字符串常量判断函数 void cc_search 进行处理整数常量 调用整数类型判断函数 void inta_search 进行处理浮点数常量 调用浮点类型判断函数 void intb_search 进行处理注释限制符写入注释文件查运算符、分隔符表并写入输出文件char *key2=“ “,“+“,“-“,“*“,“/“,“%“,“,“=“,“=“,“,“,“|“,“,“/*运算符表*/int xx035,xx110,xx231;int temp_ke

6、y3=0,temp_c40=0,temp_c41=0,temp_c42=0,temp_c43=0;/* 初始化函数 */void load()int mm;for (mm=0;mm)chin=fgetc(fin);/*chin=fgetc(fin);*/*对空格符、水平制表符进行处理*/else if (chin= )|(chin=t);/*对回车符进行处理*/else if (chin=n);/*对单引号内的字符常量进行处理*/else if (chin=target0)if (xx19=0)fout=fopen(“key1.txt“,“a“);fprintf(fout,“1t9tt%cn“

7、,target0);fclose(fout);xx19=1;temp0=chin;chin=fgetc(fin);temp1=chin;chin=fgetc(fin);if (chin!=target0)temp2=chin;chin=fgetc(fin);temp3=chin;temp4=0;elsetemp2=chin;temp3=0;c_search(temp);/*对双引号内的字符串常量进行处理*/else if (chin=“)int i=0;tempi+=“;chin=fgetc(fin);while (chin!=“)tempi+=chin;chin=fgetc(fin);tem

8、pi=“;tempi+1=0;cc_search(temp);/*对保留字、标识符进行处理*/else if (chin=A)printf(“* 1 查看分隔符表文件 *n“);printf(“* 2 查看运算符表文件 *n“);printf(“* 3 查看标识符表文件 *n“);printf(“* 4 查看整数类型常量表 *n“);printf(“* 5 查看浮点类型常量表 *n“);printf(“* 6 查看字符类型常量表 *n“);printf(“* 7 查看字符串类型常量表 *n“);printf(“* 8 查看注释文件 *n“);printf(“* 9 查看内部码文件 *n“);p

9、rintf(“* - *n“);printf(“* Q 退出 *n“);printf(“*n“);printf(“n“);load();scan();printf(“n“);printf(“分析完成!n“);getchar();printf(“n“);printf(“请输入命令:“);command=getchar();while (command!=Q)printf(“n“);fread=fopen(“key0.txt“,“r“);charin=fgetc(fread);while (charin!=EOF)putchar(charin);charin=fgetc(fread);printf

10、(“n“);printf(“*n“);printf(“n“);printf(“请输入命令:“);break;case 1:printf(“*n“);printf(“n“);fread=fopen(“key1.txt“,“r“);charin=fgetc(fread);while (charin!=EOF)putchar(charin);charin=fgetc(fread);printf(“n“);printf(“*n“);printf(“n“);printf(“请输入命令:“);break;case 2:printf(“*n“);printf(“n“);fread=fopen(“key2.t

11、xt“,“r“);charin=fgetc(fread);while (charin!=EOF)putchar(charin);charin=fgetc(fread);printf(“n“);printf(“*n“);printf(“n“);printf(“请输入命令:“);break;case 3:printf(“*n“);printf(“n“);fread=fopen(“key3.txt“,“r“);charin=fgetc(fread);while (charin!=EOF)putchar(charin);charin=fgetc(fread);printf(“n“);printf(“*

12、n“);printf(“n“);printf(“请输入命令:“);break;case 4:printf(“*n“);printf(“n“);fread=fopen(“c40.txt“,“r“);charin=fgetc(fread);while (charin!=EOF)putchar(charin);charin=fgetc(fread);printf(“n“);printf(“*n“);printf(“n“);printf(“请输入命令:“);break;case 5:printf(“*n“);printf(“n“);fread=fopen(“c41.txt“,“r“);charin=f

13、getc(fread);while (charin!=EOF)putchar(charin);charin=fgetc(fread);printf(“n“);printf(“*n“);printf(“n“);printf(“请输入命令:“);break;case 6:printf(“*n“);printf(“n“);fread=fopen(“c42.txt“,“r“);charin=fgetc(fread);while (charin!=EOF)putchar(charin);charin=fgetc(fread);printf(“n“);printf(“*n“);printf(“n“);pr

14、intf(“请输入命令:“);break;case 7:printf(“*n“);printf(“n“);fread=fopen(“c43.txt“,“r“);charin=fgetc(fread);while (charin!=EOF)putchar(charin);charin=fgetc(fread);printf(“n“);printf(“*n“);printf(“n“);printf(“请输入命令:“);break;case 8:printf(“*n“);printf(“n“);fread=fopen(“defination.txt“,“r“);charin=fgetc(fread)

15、;while (charin!=EOF)putchar(charin);charin=fgetc(fread);printf(“n“);printf(“*n“);printf(“n“);printf(“请输入命令:“);break;case 9:printf(“*n“);printf(“n“);fread=fopen(“output.txt“,“r“);charin=fgetc(fread);while (charin!=EOF)putchar(charin);charin=fgetc(fread);printf(“n“);printf(“*n“);printf(“n“);printf(“请输入命令:“);break;command=getchar();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报