编译原理--语法分析

编译原理--语法分析

ID:15642650

大小:40.00 KB

页数:16页

时间:2018-08-04

编译原理--语法分析_第1页
编译原理--语法分析_第2页
编译原理--语法分析_第3页
编译原理--语法分析_第4页
编译原理--语法分析_第5页
资源描述:

《编译原理--语法分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、编译原理--语法分析#include#include#include#includeusingnamespacestd;#defineMAXN20000intsyn,p,sum,kk,m,n,row,error;doubledsum,pos;charindex[800],len;//记录指数形式的浮点数charr[6][10]={"function","if","then","while","do","endfunc"};chartoken[MAXN],s[MAXN];charch;boolis_letter(ch

2、arc){returnc>='a'&&c<='z'

3、

4、c>='A'&&c<='Z';}boolis_digtial(charc){returnc>='0'&&c<='9';}boolis_dot(charc){returnc==','

5、

6、c==';';}voididentifier()//标示符的判断{m=0;while(ch>='a'&&ch<='z'

7、

8、ch>='0'&&ch<='9'){token[m++]=ch;ch=s[++p];}token[m]='';ch=s[--p];syn=10;for(n=0;n<6;n++)if(strcmp(token,r[n])==0

9、){syn=n+1;break;}}voiddigit(boolpositive)//数字的判断{len=sum=0;ch=s[p];while(ch>='0'&&ch<='9'){sum=sum*10+ch-'0';ch=s[++p];}if(ch=='.'){dsum=sum;syn=12;ch=s[++p];pos=0.1;while(ch>='0'&&ch<='9'){dsum=dsum+(ch-'0')*pos;pos=pos*0.1;ch=s[++p];}if(ch=='e'){index[len++]=ch;ch=s[++p];if(ch=='-'

10、

11、ch=='+')

12、{index[len++]=ch;ch=s[++p];}if(!(ch>='0'&&ch<='9')){//cout<<"Looooooooooook"<='0'&&ch<='9'){index[len++]=ch;ch=s[++p];}}}if(syn==-1

13、

14、(ch>='a'&&ch<='z')

15、

16、ch=='.'){syn=-1;//对数字开头的标识符进行判错。while(ch>='0'&&ch<='9'

17、

18、ch>='a'&&ch<='z'

19、

20、ch=='.')ch=s[++p];//找到下一次要判断的开头ch=s[--p

21、];}else{ch=s[--p];syn=12;if(!positive)dsum*=-1.0;}}else{if(ch>='a'&&ch<='z'){syn=-1;//对数字开头的标识符进行判错。while(ch>='0'&&ch<='9'

22、

23、ch>='a'&&ch<='z')ch=s[++p];//找到下一次要判断的开头ch=s[--p];}else{ch=s[--p];syn=11;if(!positive)sum*=-1;}}}voidTo_double(){inti;printf("(%d,%lf",syn,dsum);if(len){for(i=0;i

24、)printf("%c",index[i]);len=0;}printf(")");}boolcheck_behind_digit(){inti=p+1;while(s[i]!=''){if(s[i]>='0'&&s[i]<='9')returntrue;elseif(s[i]!=''&&s[i]!='t'&&s[i]!='')returnfalse;i++;}returnfalse;}boolcheck_pre_prog(){inti=p-1;while(i>=0){if(s[i]!=''&&s[i]!='t'&&s[i]!=''){if(s[i]>='0'&

25、&s[i]<='9'

26、

27、s[i]>='a'&&s[i]<='z')returnfalse;elsereturntrue;}i--;}returntrue;}voidpot(){while(1){ch=s[++p];if(ch=='')row++;if(!(ch==''

28、

29、ch=='t'

30、

31、ch==''))break;}}voidscaner(){memset(token,0,sizeof(token));pot();if(is_letter(ch)){syn

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

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

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