语义网实习报告

语义网实习报告

ID:30860809

大小:114.37 KB

页数:17页

时间:2019-01-04

语义网实习报告_第1页
语义网实习报告_第2页
语义网实习报告_第3页
语义网实习报告_第4页
语义网实习报告_第5页
资源描述:

《语义网实习报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、语义网实习报告编译原理实验报告姓名:闫梦丽班级:软件工程学号:日期:语义分析器09010908010101XX年4月1•题目要求:实验目的通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法。实验原理采用递归下降语法制导翻译法,对算术表达式、赋值语句进行语义分析并生成四元式序列。2.算法分析主程序示意图置初值调用scaner调用lrparser输出四元组结束图1设置语义过程emit该函数功能是生成一个三地址语句送到四元式表中。四元式表的结构如下:

2、struct{charresuIt[8];charagl[8];charop[8];charag2[8];}quad[20];char*newtemp该函数回送一个新的临时变量名,临时变量名产生的顺序为Tl,T2,•••・Char*newtemp{char*p;charm[8];p=malloc;k++;itoa;strcpy;p[0]二,t,:return;}函数lrparser在原来语法分析的基础上插入相应的语义动作:将输入串翻译成四元式序列。在实验中我们只对表达式、赋值语句进行翻译。3、实

3、验步骤ttinclude〃〃#include〃〃#include/z//charprog[100],token[8],ch;char*rwtab[6]={"begi〃〃•厂〃〃,n,if,therT,z/whil〃〃1〃〃e,do,end"};intsyn,p,m,n,sum,q;intkk;struct{charresult1[8];charagl1[8];charop1[8];charag21[8];}quad[20];char*factor;char*expression;intyucu;

4、char*term;intstatement;intirparser;char*newtemp;scaner;emit;inain{intj;q=p=kk=Ojprintf:〃);do{seanf:prog[p++]=ch;}while;p=0;scaner;lrparser;ifprintf;elseforprintf;//getch;}intlrparser{intschain=0;kk=0;if{seaner;//读下一个单词符号schain二yucu;//调用语句串分析函数进行分析if{

5、scaner;//读下一个单词符号if)printf;//输出}else{ifprintf;kk=l;//getch;exit;}}else{printf;//输岀,begin,错误kk=l://getch;exit;}return;}intyucu{intschain=O;schain=statement;//调用语句分析函数进行分析//输出while{seaner;//读下一个单词符号schain=statement;//调用语句分析函数进行分析}return:}intstatemerit{

6、chartt[8],eplace[8];intschain=O;if{strepy;seaner;if{seaner;//读下一个单词符号strepy);emit;schain二0;}eIse{printf;//输出,缺少赋值号'的错误kk=1;//getch;exit;}return;}}char*expression{char*tp,*ep2,*eplace,*tt;tp=malloc;//分配空间ep2=malloc:eplace=malloc;tt二malloc:strepy);//调用

7、term分析产生表达式计算的第一项eplacewhile

8、I){ifstrcpy;//操作符tt=,+'或者'一,elsestrcpy;scaner;//读下一个单词符号strepy);//调用term分析产生表达式计算的第二项ep2strcpy);//调用newtemp产生临时变量tp存储计算结果emit;//生成四元式送入四元式表strcpy;}return;}char*term//仿照函数expression编写{char*tp,*ep2,*eplace,*tt;tp=malloc;ep2

9、=mal1oc;eplace=malloc;tt=malloc;strcpy);while

10、

11、){ifstrcpy;elsestrcpy;scaner;//读下一个单词符号strcpy);strcpy);emit;strcpy;}return;}char*factor{char*fplacejfplace=malloc;strcpy;if{strcpy;scaner;//读下一个单词符号}elseif{itoa;scaner;//读下一个单词符号}elseif{scaner://读下一个单词符号

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

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

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