语法分析器(递归下降)

语法分析器(递归下降)

ID:14917922

大小:49.00 KB

页数:11页

时间:2018-07-31

语法分析器(递归下降)_第1页
语法分析器(递归下降)_第2页
语法分析器(递归下降)_第3页
语法分析器(递归下降)_第4页
语法分析器(递归下降)_第5页
资源描述:

《语法分析器(递归下降)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include#include#includeusingnamespacestd;//函数申明//变量长度#defineMAX_LENTH200//表长度#defineCON_LEN30//常量表#defineIDE_LEN30//标识符表#defineSTR_LEN30//字符串表//token#defineTOKEN_LEN30//编码#definec_identifier0#definec_char1#definec_string2#definec_constant3#definec_key_base40//其他编码在re

2、server数组中把索引加即可得到charreserve[][20]={"int","main","while","for","void","char","if","return","do","float"};chartoken[TOKEN_LEN]={''};typedefstructnode{intcode;intvalue;}Node;#defineNODE_LENTH120Noden[NODE_LENTH];intni=0;/*词法分析相关函数的声明*/intstate_machine(charch,intstate);intstate_to_code(intprestate);

3、intis_digit(charch);intis_char(charch);intis_key(char*);voidshow_table(char**t);voidshow_tokens(Node*n,intnum);/*语法分析的相关定义*/#definerule_row6#definerule_col4//stringexp0="2*(2*/4)#";intw;intpos=0;#defineend_file333/*语法分析相关函数的声明*/void_MAIN();void_E();void_T();void_F();void_P();void_Q();intis_d(int)

4、;intis_d(intch){if(ch==3

5、

6、ch==4

7、

8、ch==2)return1;elsereturn0;}voidmain(){//常数表char*con[CON_LEN];//标识符表char*ide[IDE_LEN];//符号串表char*str[STR_LEN];inti=0;intstate=1;intprestate;intf_read=1;intcode=0;charch='';intci=0,cj=0,ck=0;FILE*fp=NULL;charfilename[]="source.txt";//fopen_s(&fp,filename,"r");fp=fop

9、en(filename,"r");if(NULL==fp){cout<<"文件没有打开,程序退出"<

10、

11、ch==''

12、

13、ch=='t')&&state==1){f_read=1;continue;}prestate=state;state=state_machine(ch,

14、state);if(state){f_read=1;token[i++]=ch;}else{f_read=0;token[i]='';i=0;state=1;if(prestate==2)//变量{intcc=is_key(token);if(0==cc)//变量{char*ct=(char*)malloc(sizeof(char)*MAX_LENTH+1);//strcpy_s(ct,sizeof(ct),token);strcpy(ct,token);ct[MAX_LENTH]='';ide[ci++]=ct;if(ci>=IDE_LEN){//printf("变量表溢出!!

15、!!!!");//printf("%s__(%d,%d)",token,prestate,ci-1);n[ni].code=prestate;n[ni++].value=ci-1;cout<<"变量表溢出"<

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

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

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