编译原理C语言词法分析器.doc
《编译原理C语言词法分析器.doc》由会员分享,可在线阅读,更多相关《编译原理C语言词法分析器.doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除编译原理 C语言词法分析器一、实验题目编制并调试C词法分析程序。a. txt源代码: main() int sum=0 ,it=1;/* Variable declaration*/ if (sum=1) it+; else it=it+2; 设计其词法分析程序,能识别出所有的关键字、标识符、常数、运算符(包括复合运算符,如+)、界符;能过滤掉源程序中的注释、空格、制表符、换行符;并且能够对一些词法规则的错误进行必要的处理,如:标识符只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。实验要求:要给出所分析语言的词法说明,相应的状态转换
2、图,单词的种别编码方案,词法分析程序的主要算法思想等。 二、实验目的 1、理解词法分析在编译程序中的作用; 2、掌握词法分析程序的实现方法和技术; 3、加深对有穷自动机模型的理解。 三、主要函数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 ( )绘
3、制程序界面调用初始化函数:void load ( ) 实现文件的建立调用主扫描函数:void scan ( ) 实现文件的扫描分析完成后指引用户查看相关文件,直到用户输入退出命令函数结束2. 初始化函数 void load ( )通过文件指针建立相关文件函数结束3. 保留字及标识符判断函数 void char_search(char *word)接收数据是否为保留字否:查标识符表是:写入输出文件没找到:写入表文件找到:写入输出文件写入输出文件4. 整数类型判断函数 void inta_search(char *word)接收数据找到:写入输出文件写入输出文件查表没找到:写入整数常量表文件5.
4、浮点类型判断函数 void intb_search(char *word)没找到:写入整数常量表文件找到:写入输出文件查表接收数据写入输出文件6. 字符串常量判断函数 void cc_search(char *word)7. 字符常量判断函数 void c_search(char *word) 同4、5函数图8.主扫描函数 void scan ( )函数开始读入源文件中的一个单词判断宏定义忽略无效字符忽略调用保留字及标识符函数void char_search进行处理字符串字符常量调用字符常量判断函数void c_search进行处理调用字符串常量判断函数void cc_search进行处理字符
5、串常量整数常量调用整数类型判断函数void inta_search进行处理调用浮点类型判断函数void intb_search进行处理浮点数常量注释写入注释文件查运算符、分隔符表并写入输出文件限制符五、关键代码#include #include #include char *key0= ,auto,break,case,char,const,continue,default,do,double,else,enum,extern,float,for,goto,if,int,long,register,return,short,signed,sizeof,static,struct,switch,
6、typedef,_Complex,_Imaginary,union,unsigned,void,volatile,while;/*保留字表*/char *key1= ,(,),;,;/*分隔符表*/char *key2= ,+,-,*,/,%,=,=,=,!=,!,&,|,|,&,=,?:,-,+,-,.,+=,-=,*=,/=;/*运算符表*/int xx035,xx110,xx231;int temp_key3=0,temp_c40=0,temp_c41=0,temp_c42=0,temp_c43=0;/* 初始化函数 */void load()int mm;for (mm=0;mm=34
7、;mm+)xx0mm=0;for (mm=0;mm=9;mm+)xx1mm=0;for (mm=0;mm=30;mm+)xx2mm=0;FILE *floading;if (floading=fopen(key0.txt,w)=NULL)printf(Error! Cant create file : key0.txt);return;fclose (floading);/*建立保留字表文件:key0.txt*/if (floading=fopen(key1.txt,w)=NULL)printf(Error! Cant create file : key1.txt);return;/*建立分隔
8、符表文件:key1.txt*/if (floading=fopen(key2.txt,w)=NULL)printf(Error! Cant create file : key2.txt);return;fclose(floading);/*建立运算符表文件:key2.txt*/if (floading=fopen(key3.txt,w)=NULL)printf(Error! Cant create file : key3.txt);return;fclose (floading);/*建立标识符表文件:key3.txt*/if (floading=fopen(c40.txt,w)=NULL)p
9、rintf(Error! Cant create file : c40.txt);return;fclose (floading);/*建立整数类型常量表文件:c40.txt*/if (floading=fopen(c41.txt,w)=NULL)printf(Error! Cant create file : c41.txt);return;fclose (floading);/*建立浮点类型常量表文件:c41.txt*/if (floading=fopen(c42.txt,w)=NULL)printf(Error! Cant create file : c42.txt);return;fc
10、lose (floading);/*建立字符类型常量表文件:c42.txt*/if (floading=fopen(c43.txt,w)=NULL)printf(Error! Cant create file : c43.txt);return;fclose (floading);/*建立字符串类型常量表文件:c43.txt*/ if (floading=fopen(defination.txt,w)=NULL)printf(Error! Cant create file : defination.txt);return;fclose (floading);/*建立注释文件:definatio
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 语言 词法 分析器
限制150内