欢迎来到天天文库
浏览记录
ID:14328893
大小:169.50 KB
页数:16页
时间:2018-07-28
《编译原理实验报告(设计和验证型)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、课程实验报告专业年级计算机科学与技术课程名称编译原理指导教师学生姓名学号实验日期实验地点实验成绩教务处制2010年月日实验报告专业班级姓名学号课程名称编译原理实验名称一个顺序栈的基本运算实验实验编号实验一实验形式设计性实验类型认识与验证型实验学时2学时[实验目的]1.了解掌握栈的相关知识。2.学习并使用栈,并能建立栈。[实验要求]1.建立一个字符栈。2.所建栈有进栈、出栈、初始化栈、判断栈空、判断栈满、清栈和取栈顶元素这几个函数。[实验内容]建立一个字符栈,并有相应的配套函数。把字符串uwdwe
2、oqei#入栈并输出。[实验步骤]#definewyochartypedefstruct{wyodata[50];inttop;}stack;voidInitStack(stack*s)//栈初始化{s->top=-1;}intStackEmpty(stack*s)//判栈空,空为{if(s->top==-1)return1;elsereturn0;}intStackFull(stack*s)//判栈满,满为{if(s->top==50)return1;elsereturn0;}voidClea
3、rStack(stack*s)//清栈{s->top=-1;}voidPush(stack*s,wyoe)//入栈{if(!StackFull(s))s->data[++s->top]=e;elsecout<<"栈满不能入栈。";}wyoPop(stack*s)//出栈{if(!StackEmpty(s))returns->data[s->top--];else{cout<<"栈空不能出栈。";return-1;}}wyoSeqtop(stack*s)//取栈顶元素{if(!StackEmpty
4、(s))returns->data[s->top];else{cout<<"栈空不能出栈。";return-1;}}voidmain(){stackx;chary=NULL;InitStack(&x);cout<<"输入进栈字符串,以#号结束:";while(y!='#'){cin>>y;Push(&x,y);}cout<5、输入栈内元素时的顺序进输入栈时的顺序相反。而且当栈满时不能在把元素放入栈内,当栈空时也不可能有出栈操作。[教师评语]成绩评定:指导教师签名:实验报告专业班级姓名学号课程名称编译原理实验名称一个优先关系矩阵(或算符优先关系表)实验编号实验二实验形式设计性实验类型认识与验证型实验学时2学时[实验目的]1.掌握LL(1)方法的定义.2.学会求FIRST和FOLLOW集合.3.学会建立预测分析表.[实验要求]设计一段程序验证一个字符串是否合法.[实验内容]LL(1)文法:A->BD,D->FD,D->ε6、,F->+B,F->-B,B->CE,E->GE,E->ε,G>*C,G->/C,C->(A),C->i分别验证字符串i+(i-i*i)/i-i和i+(i-i*i)/ii是否合法.[实验步骤]#definewyochartypedefstruct{wyodata[50];inttop;}stack;voidInitStack(stack*s)//栈初始化{s->top=-1;}intStackEmpty(stack*s)//判栈空,空为{if(s->top==-1)return1;elseret7、urn0;}intStackFull(stack*s)//判栈满,满为{if(s->top==50)return1;elsereturn0;}voidClearStack(stack*s)//清栈{s->top=-1;}voidPush(stack*s,wyoe)//入栈{if(!StackFull(s))s->data[++s->top]=e;elsecout<<"栈满不能入栈。";}wyoPop(stack*s)//出栈{if(!StackEmpty(s))returns->data[s->8、top--];else{cout<<"栈空不能出栈。";return-1;}}wyoSeqtop(stack*s)//取栈顶元素{if(!StackEmpty(s))returns->data[s->top];else{cout<<"栈空不能出栈。";return-1;}}intcha(charx){switch(x){case'+':return0;case'-':return1;case'*':return2;case'/':return3;case'(':return4;case')':r
5、输入栈内元素时的顺序进输入栈时的顺序相反。而且当栈满时不能在把元素放入栈内,当栈空时也不可能有出栈操作。[教师评语]成绩评定:指导教师签名:实验报告专业班级姓名学号课程名称编译原理实验名称一个优先关系矩阵(或算符优先关系表)实验编号实验二实验形式设计性实验类型认识与验证型实验学时2学时[实验目的]1.掌握LL(1)方法的定义.2.学会求FIRST和FOLLOW集合.3.学会建立预测分析表.[实验要求]设计一段程序验证一个字符串是否合法.[实验内容]LL(1)文法:A->BD,D->FD,D->ε
6、,F->+B,F->-B,B->CE,E->GE,E->ε,G>*C,G->/C,C->(A),C->i分别验证字符串i+(i-i*i)/i-i和i+(i-i*i)/ii是否合法.[实验步骤]#definewyochartypedefstruct{wyodata[50];inttop;}stack;voidInitStack(stack*s)//栈初始化{s->top=-1;}intStackEmpty(stack*s)//判栈空,空为{if(s->top==-1)return1;elseret
7、urn0;}intStackFull(stack*s)//判栈满,满为{if(s->top==50)return1;elsereturn0;}voidClearStack(stack*s)//清栈{s->top=-1;}voidPush(stack*s,wyoe)//入栈{if(!StackFull(s))s->data[++s->top]=e;elsecout<<"栈满不能入栈。";}wyoPop(stack*s)//出栈{if(!StackEmpty(s))returns->data[s->
8、top--];else{cout<<"栈空不能出栈。";return-1;}}wyoSeqtop(stack*s)//取栈顶元素{if(!StackEmpty(s))returns->data[s->top];else{cout<<"栈空不能出栈。";return-1;}}intcha(charx){switch(x){case'+':return0;case'-':return1;case'*':return2;case'/':return3;case'(':return4;case')':r
此文档下载收益归作者所有