C语言程序的词法分析,c语言编写的词法分析程序

《c语言编写的词法分析程序》由会员分享,可在线阅读,更多相关《c语言编写的词法分析程序(12页珍藏版)》请在人人文库网上搜索。

1、include #include #include #include #define SPACE 0x20 /空格键#define CHANGE c /转义字符#define STRING S /引号里的字符串#define BOUNDARY B /界符#define OPERATION O /运算符#define WORD I /标识符#define KEY_WORD K /关键字#define DIGIT n /数字,包括小数#define DOTH d /头文件,“.h”文件#define INT t#define VOID v#define IF f#define ELSE e#def。

2、ine WHILE w#define FOR r#define MAIN m#define PRINTF p#define INCLUDE u#define FLOAT l#define KEYNUM 10#define BOUNDNUM 8#define OPERNUM 7#define VALUENUM 100/*/* data type */*/struct bianliangint id;char name20;int value;struct changliangint data;char KeyWordKEYNUM8=int,void,if,else,while,for,main,。

3、printf,include,float;char BoundaryBOUNDNUM=,;,(,),#,;char OperationOPERNUM=+,-,*,/,=,; char LogogramKEYNUM=INT,VOID,IF,ELSE,WHILE,FOR,MAIN,PRINTF,INCLUDE,FLOAT;char ValueVALUENUM8;int Value_n=0;int ErrorLine=0;int QuotationCount=0; /计算引号的数量int QuotationFlag=0; /引号数量为奇数时为1,偶数时为0char LastOpera=0; /用于判。

4、断=号存前一个=号/*/* function describe */*/int isKeyWord(char* s) /是关键字返回1,否则返回0int i;for (i=0;i=l)return 1;elseif (.=si)i+;for (;i=l)return 1;else return 0;int isDotH(char *s) /是头文件int i,l=strlen(s);for (i=0;i=l)return 0;elseif (.=si)i+;if(si=h)return 1;else return 0;elsereturn 0; int isWord(char *s) /是标识。

5、符int i=0,l=strlen(s);if (isalpha(si)i+;for (;i=l)return 1;else return 0;void isWhat(int *i,char *str,FILE *fileOutput,FILE *fileOutput2) /判断字符串,并把相应类型存入文件int n;struct bianliang temp;struct changliang t;FILE *file=fopen(num.txt,ab);if(1!=*i)str-(*i)=0;if(n=isKeyWord(str)fputs(str,fileOutput);fputc(t,。

6、fileOutput);fputc(KEY_WORD,fileOutput);fputc(t,fileOutput);if(isKeyWord(str)9)fputc(isKeyWord(str)+a-10,fileOutput);elsefputc(isKeyWord(str)+0,fileOutput);fputc(t,fileOutput);fputc(Logogramn-1,fileOutput);fputc(n,fileOutput);else if(isWord(str)fputs(str,fileOutput);fputc(t,fileOutput);fputc(WORD,fil。

7、eOutput);fputc(t,fileOutput);for(n=0;n9)fputc(isBoundary(ch)+a-10,fileOutput); elsefputc(isBoundary(ch)+0,fileOutput);fputc(t,fileOutput);fputc(BoundaryisBoundary(ch)-1,fileOutput);fputc(n,fileOutput);i=0;else if(isOperation(ch) if(0=QuotationCount%2)isWhat(&i,str,fileOutput,fileOutput2);if (=ch)qte。

8、mp=fgetc(fileInput);if (=qtemp)fputc(=,fileOutput);fputc(=,fileOutput);flag=1; elsefputc(=,fileOutput);fseek(fileInput,-1,SEEK_CUR);flag=0;elsefputc(ch,fileOutput);fputc(t,fileOutput);fputc(OPERATION,fileOutput);fputc(t,fileOutput);if(isOperation(ch)9)fputc(isOperation(ch)+a-10,fileOutput);elsefputc。

9、(isOperation(ch)+0,fileOutput);fputc(t,fileOutput);if (flag)fputc(q,fileOutput);elsefputc(OperationisOperation(ch)-1,fileOutput);fputc(n,fileOutput);i=0;elsefputc(ch,fileOutput);fputc(t,fileOutput);fputc(t,fileOutput);fputc(t,fileOutput);fputc(c,fileOutput);fputc(n,fileOutput);i=0;else if(n=ch)isWhat(&i,str,fileOutput,fileOutput2);ErrorLine+;i=0;else if(SPACE=ch|t=ch)if(1void main ( )int i;int j;int m;m=1;for(i=0;i5;i=i+1)printf(t,i);for(j=0;ji;j=j+1)printf(b,i);for(j=0;jm;j=j+1) printf(*,i);printf(n,i);m=m+2。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值