编译原理实验三.doc

编译原理实验三.doc

ID:55413697

大小:103.00 KB

页数:9页

时间:2020-05-12

编译原理实验三.doc_第1页
编译原理实验三.doc_第2页
编译原理实验三.doc_第3页
编译原理实验三.doc_第4页
编译原理实验三.doc_第5页
资源描述:

《编译原理实验三.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、编译原理实验报告实验三语义分析班级:学号:姓名:任课教师:计算机科学与工程系2016年6月20日一、实验目的通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法。二、实验要求实验的输入和输出:输入是语法分析后提供的正确的单词串,输出为三地址指令形式的四元式序列。例如:对于语句串begina:=2+3*4;x:=(a+b)/cend#输出的三地址指令如下:(1)t1=3*4(4)t3=a+b(2)t2=2+t1(5)t4=t3/c(3)a=t2(6)x=t4三、实验内容采用递归下降语法制导翻译法,对算术表达式、赋值语句进行语义

2、分析并生成四元式序列。四、算法设计和源程序#include"stdio.h"#include"string.h"#include"stdlib.h"charprog[100],token[8],ch;char*rwtab[6]={"begin","if","then","while","do","end"};intsyn,p,m,n,sum,q;intkk;struct{charresult1[8];charag11[8];charop1[8];charag21[8];}quad[20];char*factor();char*expression();intyucu();c

3、har*term();intstatement();intlrparser();char*newtemp();scaner();emit(char*result,char*ag1,char*op,char*ag2);main(){intj;q=p=kk=0;printf("pleaseinputastring(endwith'#'):");do{scanf("%c",&ch);prog[p++]=ch;}while(ch!='#');p=0;scaner();lrparser();if(q>19)printf("tolongsentense!");elsefor(j

4、=0;j

5、1)printf("shortof'end'!");//输出‘缺end’错误kk=1;//getch();exit(0);}}else{printf("shortof'begin'!");//输出’begin’错误kk=1;//getch();exit(0);}return(schain);}intyucu(){intschain=0;schain=statement();//调用语句分析函数进行分析while(syn==26){scaner();//读下一个单词符号schain=statement();//调用语句分析函数进行分析}return(schain);}

6、intstatement(){chartt[8],eplace[8];intschain=0;if(syn==10){strcpy(tt,token);scaner();if(syn==18){scaner();//读下一个单词符号strcpy(eplace,expression());emit(tt,eplace,"","");schain=0;}else{printf("shortofsign':='!");//输出’缺少赋值号’的错误kk=1;//getch();exit(0);}return(schain);}}char*expression(){char*tp

7、,*ep2,*eplace,*tt;tp=(char*)malloc(12);//分配空间ep2=(char*)malloc(12);eplace=(char*)malloc(12);tt=(char*)malloc(12);strcpy(eplace,term());//调用term分析产生表达式计算的第一项eplacewhile((syn==13)

8、

9、(syn==14)){if(syn==13)strcpy(tt,"+");//操作符tt=‘+’或者‘—’elsestrcpy(tt,"-");scaner();

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

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

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