用c语言实现词法分析器

用c语言实现词法分析器

ID:12569281

大小:50.50 KB

页数:8页

时间:2018-07-17

用c语言实现词法分析器_第1页
用c语言实现词法分析器_第2页
用c语言实现词法分析器_第3页
用c语言实现词法分析器_第4页
用c语言实现词法分析器_第5页
资源描述:

《用c语言实现词法分析器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、用C语言实现词法分析器#include#include#include#define_KEY_WORD_END"waitingforyourexpanding"typedefstruct{inttypenum;char*word;}WORD;charinput[255];chartoken[255]="";intp_input;intp_token;charch;char*rwtab[]={"main","if","then","while","do","static","int","double",

2、"struct","break","else","long","switch","case","typedef","char","return","const","float","short","continue","for","void","defult","sizeof","do","printf","include","scanf",_KEY_WORD_END};WORD*scaner();intmain(){intover=1;WORD*oneword=malloc(sizeof(WORD));printf("EnterYourwords(endwi

3、th$):");scanf("%[^$]s",input);p_input=0;printf("Yourwords:%s",input);while(over<1000&over!=-1){oneword=scaner();if(oneword->typenum<1000)printf("(%d,%s)",oneword->typenum,oneword->word);over=oneword->typenum;}//printf("press$toexit:");scanf("%[^$]s",input);system("pause");ret

4、urn0;}//**************************************************************************************************charm_getch(){ch=input[p_input];p_input=p_input+1;return(ch);}//得到字符voidgetbc(){while(ch==''

5、

6、ch==10){ch=input[p_input];p_input=p_input+1;}}//去空格voidconcat(){token[p_token]=ch;

7、p_token=p_token+1;token[p_token]='';}//连接单词intletter(){if(ch>='a'&&ch<='z'

8、

9、ch>='A'&&ch<='Z')return1;elsereturn0;}//判断字母intdigit(){if(ch>='0'&&ch<='9')return1;elsereturn0;}//判断数字intreserve(){inti=0;while(strcmp(rwtab[i],_KEY_WORD_END)){if(!strcmp(rwtab[i],token)){returni+1;}i++;}

10、return10;}//找关键字voidretract(){p_input=p_input-1;}//回退字符char*dtb(){}//********************************************************************************WORD*scaner(){WORD*myword=malloc(sizeof(WORD));myword->typenum=10;myword->word="";p_token=0;m_getch();getbc();if(letter()){while(lett

11、er()

12、

13、digit()){concat();m_getch();}retract();myword->typenum=reserve();myword->word=token;printf("");return(myword);}elseif(digit()){while(digit()){concat();m_getch();}retract();myword->typenum=20;myword->word=token;printf("");return(myword);}elseswitch(ch){case'=':m_getch();if

14、(ch=='='){myword->typenum=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。