编译原理实验报告4.doc
《编译原理实验报告4.doc》由会员分享,可在线阅读,更多相关《编译原理实验报告4.doc(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实 验 报 告课程名称: 编译原理 实验名称: 实验四 语法分析(一)预测分析技术 学 生 姓 名: 杨甜甜 班 级 计算机134 学 号 13416725 学 院(系): 信息数理学院 指 导 教 师: 张英丽 实验时间: 2016 年 5 月 10 日 实验成绩: 实验四 语法分析(一)预测分析技术实验目的:对给定的文法及其预测分析表,对输入的符号串进行识别,并给出符号串的识别过程,包括各步骤的栈内容,输入和输出。实验要求:首先应该详细掌握预测分析技术的原理,方法详细的分析步骤。其次要了解数据结构中栈部分的内容,包括栈的特点及在预测分析中的使用情况,预测分析其实可以看成是对两个基本的栈的操
2、作,因此,对栈的有关知识要求比较熟悉。在实验前可复习数据结构中栈的内容,这样可使本实验比较顺利的进行。下面以例说明最后所应实现的功能输入文法规则0:Z:=BA 1:A:=+BA 2:A:=3:B:=DC 4:C:=*DC 5:C:=6:D:=(Z) 7:D:=i输入预测分析表!0:Z:=BA 1:A:=+BA 2:A:= 3:B:=DC 4:C:=*DC 5:C:=6:D:=(Z) 7:D:=i依次输入PTableZ,+ PTableZ,* PTableZ,( PTableZ,) PTableZ,i PTableZ,#对应的规则编号:-1 -1 0 -1 0 -1依次输入PTableA,+ P
3、TableA,* PTableA,( PTableA,) PTableA,i PTableA,#对应的规则编号:1 -1 -1 2 -1 2依次输入PTableB,+ PTableB,* PTableB,( PTableB,) PTableB,i PTableB,#对应的规则编号:-1 -1 3 -1 3 -1依次输入PTableC,+ PTableC,* PTableC,( PTableC,) PTableC,i PTableC,#对应的规则编号:5 4 -1 5 -1 5依次输入PTableD,+ PTableD,* PTableD,( PTableD,) PTableD,i PTable
4、D,#对应的规则编号:-1 -1 6 -1 7 -1 + * ( ) i # Z Z:=BA Z:=BA A A:=+BA A:= A:= B B:=DC B:=DC C C:= C:=*DC C:= C:= D D:=(Z) D:=i请输入要识别的符号串:i+i*i步骤 栈 输入 输出0 #Z i+i*i# Z:=BA1 #AB i+i*i# B:=DC2 #ACD i+i*i# D:=i3 #ACi i+i*i#4 #AC +i*i# C:=5 #A +i*i# A:=+BA6 #AB+ +i*i#7 #AB i*i# B:=DC8 #ACD i*i# D:=i9 #ACi i*i#10
5、#AC *i# C:=*DC11 #ACD* *i#12 #ACD i# D:=i13 #ACi i#14 #AC # C:=15 #A # A:=16 # # Success!该符号串是该文法的句子!输入要识别的符号串:ii步骤 栈 输入 输出0 #Z ii# Z:=BA1 #AB ii# B:=DC2 #ACD ii# D:=i3 #ACi ii#4 #AC i# Failure!该符号串不是该文法的句子!实验心得:本次实验主要练习了预测分析技术,通过对给定的文法及其预测分析表,对输入的符号串进行识别,并给出符号串的识别过程,包括各步骤的栈内容,输入和输出。相比于之前的实验,本次的实验具有
6、一定的难度,在实验的过程中,要耐心的调试,确保实验的顺利完成。参考程序#include#include#include#includestruct Regularity /存放文法规则的数组结构char regular20;class Stack /定义一个栈类 public: Stack(int=10); Stack() deleteelements; void Push(const char& item); char Pop(); char GetTop(); void MakeEmpty()top=-1; int IsEmpty() const return top=-1; int Is
7、Full() const return top=maxSize-1; void display(); private: int top; char* elements; int maxSize;Stack:Stack(int s):top(-1),maxSize(s)elements=new charmaxSize;assert(elements!=0);void Stack:Push(const char& item)assert(!IsFull();elements+top=item;char Stack:Pop()assert(!IsEmpty();return elementstop-
8、;char Stack:GetTop()assert(!IsEmpty();return elementstop;void Stack:display()elementstop+1=0;coutelements;void FindVN(char VN,Regularity Array,int length) int i,j,size=0;for(i=0;ilength;i+) for(j=0;jsize;j+) if(VNj=Arrayi.regular0) break; if(j=size) VNsize=Arrayi.regular0; size+; VNsize=0;void FindV
9、T(char VT,Regularity Array,int length) int i,j,k,m,size=0;for(i=0;ilength;i+) for(j=4;jstrlen(Arrayi.regular);j+) for(k=0;klength;k+) if(Arrayk.regular0=Arrayi.regularj) break; if(k=length&Arrayi.regularj!=) for(m=0;msize;m+) if(VTm=Arrayi.regularj) break;if(m=size) VTsize=Arrayi.regularj; size+; VT
10、size=0; VTsize=#;VTsize+1=0;int FindRegularity(int PTable20,char VN,char VT,char temp1,char temp2)int i,j;int size1=strlen(VN);int size2=strlen(VT);for(i=0;isize1;i+)if(VNi=temp1) break;for(j=0;jsize2;j+)if(VTj=temp2) break;return PTableij;int CheckVT(char VT,char temp) int i;int size=strlen(VT); fo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 实验 报告
限制150内