语义分析实验报告(实验三).doc

语义分析实验报告(实验三).doc

ID:57429624

大小:102.50 KB

页数:13页

时间:2020-08-17

语义分析实验报告(实验三).doc_第1页
语义分析实验报告(实验三).doc_第2页
语义分析实验报告(实验三).doc_第3页
语义分析实验报告(实验三).doc_第4页
语义分析实验报告(实验三).doc_第5页
资源描述:

《语义分析实验报告(实验三).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理语义分析实验报告软工082班兰洁4一、实验内容二、实验目的三、实验要求四、程序流程图五、程序代码与主要过程说明六、测试用例七、输出结果八、实验心得一、实验内容定义模拟的简单语言的语义成分,将语义分析程序编制成一个子程序,在实验2分析出个语法单位后,分析其含义,并将可执行语句或表达式翻译成四元式输出,并将错误信息输出。二、实验目的通过上机实验,加深对语义制导翻译原理的理解,掌握将语法分析所识别的语法成分变换成为中间代码的语义翻译方法。三、实验要求采用递归下降语法制导翻译方法,对算术表达式、赋值语句进行语义分析并生成四元式序列。例如:对于语句串Functiona=2+3*4;x=

2、(a+b)/c;endfunc#输出的三地址指令如下lt1=3*4lt2=2+t1la=t2lt3=a+blt4=t3/clx=t4四、程序流程图由于语义分析的的方法就是在语法分析过程中,根据每个产生式所对应的语义子程序进行翻译,为每个产生式配上一个翻译子程序,并在语法分析的同时执行这些子程序。所有对应的流程图与语法分析流程图大同小异,关于各类函数的流程图我已经在词法分析报告与语法分析报告中详细画出,所以这里只说明程序主要流程。一、程序代码与主要过程说明/*语义分析源代码*/#include#include#include#in

3、clude#includestructquad//四元式表{charresult[12];charag1[12];charop[12];charag2[12];};structquadquad[30];intcount=0;char*expression(void);charprog[200],token[9];charch;intsyn,p,m,n,sum=0;intkk=0,k=0;char*rwtab[6]={"function","if","then","while","do","endfunc"};voidscaner(){m=0;f

4、or(n=0;n<8;n++)token[n]='';ch=prog[p++];while(ch=='')ch=prog[p++];if((ch>='a'&&ch<='z')

5、

6、(ch>='A'&&ch<='Z')){while((ch>='a'&&ch<='z')

7、

8、(ch>='A'&&ch<='Z')

9、

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

11、n+1;break;}}//endoffor}elseif(ch>='0'&&ch<='9'){sum=0;while(ch>='0'&&ch<='9'){sum=sum*10+ch-'0';ch=prog[p++];}p--;syn=11;}else{switch(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'>':m=0;token[m++]=ch;ch=prog[++p];if(ch=='='){s

12、yn=24;token[m++]=ch;}else{syn=23;ch=prog[--p];}break;case'=':m=0,token[m++]=ch;ch=prog[++p];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+1]=ch;}else{syn=-1;}break;case'+':syn=13;token[0]=ch;break;case'-':syn=

13、14;token[0]=ch;break;case'*':syn=15;token[0]=ch;break;case'/':syn=16;token[0]=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. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。