C语言词法分析器 C语言 源代码.docx
《C语言词法分析器 C语言 源代码.docx》由会员分享,可在线阅读,更多相关《C语言词法分析器 C语言 源代码.docx(47页珍藏版)》请在三一办公上搜索。
1、C语言词法分析器 C语言 源代码#include <stdio.h>#include <string.h>#include <stdlib.h>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,typedef,_Complex,_Imaginary,union,unsigned,void,
2、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 loadint mm;for (mm=0;mm<=34;mm+)xx0mm=0;for
3、 (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;/*建立分隔符表文件:key1.
4、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)printf(Erro
5、r! 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;fclose (floa
6、ding);/*建立字符类型常量表文件: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);/*建立注释文件:defination.txt*/if (
7、floading=fopen(output.txt,w)=NULL)printf(Error! Cant create file : output.txt);return;fclose (floading);/*建立内部码文件:output.txt*/if (floading=fopen(temp_key1,w)=NULL)printf(Error! Cant create file : temp_key1);return;fclose (floading);/*建立保留字临时表文件:temp_key1*/if (floading=fopen(temp_key3,w)=NULL)printf(
8、Error! Cant create file : temp_key3);return;fclose (floading);/*建立标识符临时文件:temp_key3*/if (floading=fopen(temp_c40,w)=NULL)printf(Error! Cant create file : temp_c40);return;fclose (floading);/*建立整数类型常量临时文件:temp_c40*/if (floading=fopen(temp_c41,w)=NULL)printf(Error! Cant create file : temp_c41);return;
9、fclose (floading);/*建立浮点类型常量临时文件:temp_c41*/if (floading=fopen(temp_c42,w)=NULL)printf(Error! Cant create file : temp_c42);return;fclose (floading);/*建立字符类型常量临时文件:temp_c42*/if (floading=fopen(temp_c43,w)=NULL)printf(Error! Cant create file : temp_c43);return;fclose (floading);/*建立字符串类型常量临时文件:temp_c43
10、*/* 保留字及标识符判断函数 */void char_search(char *word)int m,line=0,csi=0;int value=0;int value2=0;char c,cs100;FILE *foutput,*finput;for (m=1;m<=34;m+)if (strcmp(word,key0m)=0)value=1;break;if (value=1)if (xx0m=0)foutput=fopen(key0.txt,a);fprintf(foutput,0t%dtt%sn,m,word);fclose(foutput);xx0m=1;foutput=fo
11、pen(output.txt,a);fprintf(foutput,0t%dtt%sn,m,word);fclose(foutput);elseif (temp_key3=0)foutput=fopen(temp_key3,a);fprintf(foutput,%sn,word);fclose(foutput);temp_key3+;foutput=fopen(key3.txt,a);fprintf(foutput,3t1tt%sn,word);fclose(foutput);finput=fopen(temp_key3,r);c=fgetc(finput);while (c!=EOF)whi
12、le (c!=n)cscsi+=c;c=fgetc(finput);cscsi=0;csi=0;line+;if (strcmp(cs,word)=0)value2=1;break;elsevalue2=0;c=fgetc(finput);fclose(finput);if (value2=1)foutput=fopen(output.txt,a);fprintf(foutput,3t%dtt%sn,line,word);fclose(foutput);elsefoutput=fopen(temp_key3,a);fprintf(foutput,%sn,word);fclose(foutput
13、);temp_key3+;foutput=fopen(output.txt,a);fprintf(foutput,3t%dtt%sn,temp_key3,word);fclose(foutput);foutput=fopen(key3.txt,a);fprintf(foutput,3t%dtt%sn,temp_key3,word);fclose(foutput);/* 整数类型判断函数 */void inta_search(char *word)FILE *foutput,*finput;char c;char cs100;int csi=0;int line=0;int value2=0;i
14、f (temp_c40=0)foutput=fopen(temp_c40,a);fprintf(foutput,%sn,word);fclose(foutput);temp_c40+;foutput=fopen(c40.txt,a);fprintf(foutput,4t0t1t%sn,word);fclose(foutput);finput=fopen(temp_c40,r);c=fgetc(finput);while (c!=EOF)while (c!=n)cscsi+=c;c=fgetc(finput);cscsi=0;csi=0;line+;if (strcmp(cs,word)=0)v
15、alue2=1;break;c=fgetc(finput);fclose(finput);if (value2=1)foutput=fopen(output.txt,a);fprintf(foutput,4t0t%dt%sn,line,word);fclose(foutput);elsefoutput=fopen(temp_c40,a);fprintf(foutput,%sn,word);fclose(foutput);temp_c40+;foutput=fopen(output.txt,a);fprintf(foutput,4t0t%dt%sn,temp_c40,word);fclose(f
16、output);foutput=fopen(c40.txt,a);fprintf(foutput,4t0t%dt%sn,temp_c40,word);fclose(foutput);/* 浮点类型判断函数 */void intb_search(char *word)FILE *foutput,*finput;char c;char cs100;int csi=0;int line=0;int value2=0;if (temp_c41=0)foutput=fopen(temp_c41,a);fprintf(foutput,%sn,word);fclose(foutput);temp_c41+;
17、foutput=fopen(c41.txt,a);fprintf(foutput,4t1t1t%sn,word);fclose(foutput);finput=fopen(temp_c41,r);c=fgetc(finput);while (c!=EOF)while (c!=n)cscsi+=c;c=fgetc(finput);cscsi=0;csi=0;line+;if (strcmp(cs,word)=0)value2=1;break;c=fgetc(finput);fclose(finput);if (value2=1)foutput=fopen(output.txt,a);fprint
18、f(foutput,4t1t%dt%sn,line,word);fclose(foutput);elsefoutput=fopen(temp_c41,a);fprintf(foutput,%sn,word);fclose(foutput);temp_c41+;foutput=fopen(output.txt,a);fprintf(foutput,4t1t%dt%sn,temp_c41,word);fclose(foutput);foutput=fopen(c40.txt,a);fprintf(foutput,4t1t%dt%sn,temp_c41,word);fclose(foutput);/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言词法分析器 C语言 源代码 语言 词法 分析器
链接地址:https://www.31ppt.com/p-3155439.html