编译原理之语义分析(semantic analysis of compiler principles)

编译原理之语义分析(semantic analysis of compiler principles)

ID:12500353

大小:19.56 KB

页数:23页

时间:2018-07-17

编译原理之语义分析(semantic analysis of compiler principles)_第1页
编译原理之语义分析(semantic analysis of compiler principles)_第2页
编译原理之语义分析(semantic analysis of compiler principles)_第3页
编译原理之语义分析(semantic analysis of compiler principles)_第4页
编译原理之语义分析(semantic analysis of compiler principles)_第5页
资源描述:

《编译原理之语义分析(semantic analysis of compiler principles)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理之语义分析(Semanticanalysisofcompilerprinciples)//语义分析源代码//functiona=2+3*4;x=(a+b)/c;endfunc##include#include#include#include#includestructquad{charresult[12];charag1[12];charop[12];charag2[12];};structquadquad[30];intcount=0;char

2、*expression(void);charprog[200],token[8];charch;intsyn,p,m,n,sum=0,y=0,mm=0;char*rwtab[6]={"function","if","then","while","do","endfunc"};fromscaner(){m=0;for(n=0;n<8;n++)token[n]='';ch=prog[p++];while((ch=='')ch=prog[p++];if((ch>='a'&&ch<='z')

3、

4、(ch<='z'&&ch>="a")){while((ch

5、>='a'&&ch<='z')

6、

7、(ch<='z'&&ch>="a"),

8、

9、(ch>='0'&&ch<="9")){token[m++]=ch;ch=prog[p++];}token[m++]='';p--------;syn=10;for(n=0;n<6;n++){if(strcmp(token,rwtab[n])==0){d=n+1;break;}}}elseif(ch>='0'&&ch<="9"){sum=0;while(ch>='0'&&ch<="9"){sum=sum*10+ch-'0');ch=prog[p++];}p-------

10、-;syn=11;}elseswitch(ch){case'<':m=0;token[m++]=ch;ch=prog[++p];if(ch=='='){syn=22;token[m+1]=ch;}else{syn=20;ch=prog[-p];}break;case'>'means:m=0;token[m++]=ch;ch=prog[++p];if(ch=='='){syn=24;token[m++]=ch;}else{syn=23;ch=prog[-p];}break;case'=':m=0;token[m++]=ch;ch=prog[++p];

11、if(ch=='='){syn=25;token[m++]=ch;}else{syn=18;ch=prog[-p];}break;case'!":m=0;token[m++]=ch;ch=prog[++p];if(ch=='='){syn=22;token[m++]=ch;}elsesyn=-1;break;case'+':syn=13;token[0]=ch;break;case'-':syn=14;token[0]=ch;break;case'*':syn=15;token[0]=ch;break;case"/":syn=16;token[0]

12、=ch;break;case';':syn=26;token[0]=ch;break;case'('):syn=27;token[0]=ch;break;case')':syn=28;token[0]=ch;break;case'#':syn=0;token[0]=ch;break;default:syn=-1;}//ch=prog[p++];}fromemit(char*result,char*ag1,char*op,char*ag2){strcpy(quad[count].result,result);strcpy(quad[count].ag

13、1,ag1);strcpy(quad[count].op,op);strcpy(quad[count].ag2,ag2);count++;return;}char*newtemp(){char*p;charm[8];p=(char*)malloc(8);c++;itoa(k,m,10);strcpy(p+1,m);p[0]='t';return(p);}char*factor(void){char*fplace;fplace=(char*)malloc(12);strcpy(fplace,"");if(syn==10){strcpy(fplace,

14、token);scaner();}elseif(syn==11){itoa(sum,fplace,10);scaner()

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

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

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