语法、语义分析实验报告.doc

语法、语义分析实验报告.doc

ID:53700344

大小:92.50 KB

页数:14页

时间:2020-04-06

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

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

1、员华路-11-语法、语义分析实验报告河海大学物联网工程学院编译原理课程实践学年学期2015-2016实验名称作者刘云瞻组6282506专13级金永霞2016年6月目录1.引言1.1实验目的1.2实践内容2.算法设计・2.1语法分析2.1.1生成(非)终结符表・2.1.2木勾造FirstVT集2.1.42.2语义分析2.2.1・10・3-13-4.-2-心得体会-14-1.引言1.1实验冃的通过使用高级语言实现部分算法加强对编译技术和理论的理解。设计的题目要求具有一定的规模,应涵盖木课程内容和实际应用相关的主要技术。1.2实践内容分析”这两个任务点。其中,优先关系表,

2、完成一系列移进、归约的过程,归约串进行的解释以及中间代码的生成。具体来说,这里我通过Java求得FirstVT集和LastVT析总控程序,2•“语法分析”和“语义分析”两部分。其中,“语FirstVT集和LastVT集、生成算符优先“语义分析”是对实现“算术表达式和简,找到归约采用文法、输出赋值过程及四元式序列。这里,我使用的文法规则为:A->#S#S->d=EE->E+TE->TT->T*FT・>FF->-PF->PP・>;(E)P->i输入串为:d=i+i*i#赋值i=62.1语法分析2.1.1生成(非)

3、终结符表根据算符文法的定义简单判断文法是,具体通过BaseUtil.isLegal(grammars)终结符:文法规则的左部2.1.2构造FirstVT集和集FirstVT:<l>P->Qa?,则a属于FirstVT(P)<2>?,则FirstVT(Q)属于FirstVT(P)表P->;?a或者P->?aQ,则a属于FirstVT(P)<2>产生式P•>?Q,则LastVT(Q)属于LastVT(P)2.1.3生成算符优先关系publicstaticchar[]getFirstVt(String[]wfs,c

4、har[]vt,charC){StringfirstVtStr=,H,;for(inti=0;i<wfs.length;i++){讦(C==wfs[i].charAt(0)){char[]c=wfs[i].toCharArray();intj=3;//A->...012下标从3开始//A->a...if(isVt(c[j]zvt)){-4-讦(C==}}returnremoveRepeat(lastVtStr);}}StringlastVtStr=,H,;for(inti=0;i<wfs.length;i++){wfs[i].charAt(0

5、)){char[]c=wfs[iintj=c.length・1;//A->...aif(isVt(c[j],vtlastVtStrcjif(c.lengthlastVtStr+=String.valueOf(getLastVt(wfszvt,}else{//A->...B}returnremoveRepeat(firstVtStr);}}firstVtStr+=c[j];//A->B...if(c.length==4){firstVtStr+二String.vaIueOf(getFirstVt(wfs,vt,}else{c[j]));//求该非终结

6、符的头符}else{}firstVtStr+=c[j+1];publicstaticchar[]getLastVt(String[]wfs,char[]vt,charCc[j]));//求该非终结符的尾符else{//A■>...aB}lastVtStr+=c[j-1];lastVtStr+=String.valueOf(getLastVt(wfs,vt,c[j]));//求该非终结符的尾符根据FlrstVT、LastVT求出优先关系表<l>产生式右部aQ,贝Ua<FirstVT(Q)<2>产生式右部Qa,则LastVT(Q)&g

7、t;a注:文法中右部含冇?ab?或?aQb?吋,a=b{//A-*,则LastVT(B)>aif((j+1<c.length)&&!isVt(c[j],vt)&&isVt(c[j+1],vt))char[]last=getLastVt(wfs,vt,c[j]);for(intk=0;k<last.length;k++){}setOperator(last[k],c[j+1],table,'>');}}}}2丄4算符优先分析(1)移进归约的过程如下图所示。程序图(2a归约方法:(找2个大于)(

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

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

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