《(完整word版)编译原理算符优先算法语法分析实验报告》由会员分享,可在线阅读,更多相关《(完整word版)编译原理算符优先算法语法分析实验报告(3页珍藏版)》请在金锄头文库上搜索。
1、数学与计算机学院编译原理实验报告年级专业_学号姓名 成绩 实验题目算符优先分析法分析器的设计实验日期_一、实验目的:设计一个算符优先分析器,理解优先分析方法的原理。二、实验要求:设计一个算符优先分析器三、实验内容:使用算符优先分析算法分析下面的文法:E t #E#E t E+T | TT t T*F | FF t Paf | PP t (E) | i其中i可以看作是一个终结符,无需作词法分析。具体要求如下:1、如果输入符号串为正确句子,显示分析步骤,包括分析栈中的内容、优先关系、输入符 号串的变化情况;2、如果输入符号串不是正确句子,则指示出错位置。四、实验结果及主要代码:1主要代码void
2、operatorp()char s100;char a,Q;int k,j,i,l;stri ng in put,temp;cinin put;cout步骤t栈t优先关 系t当前符号t剩 余输 入 串t移进或归约endl;k=1;sk=#;i=1;doa=i nput0;temp=;for(l=1;l)cout(i)t; / 步骤 temp=;for(l=1;lk+1;l+)temp+=sl;couttempt; / 栈 couttsetw(10); coutatsetw(15);coutinputtsetw(15);i+;for(;)Q=sj;if(svt(sj-1) j=j-1;else
3、j=j-2;if(search(sj,Q)=)cout 归约 endl;/ 归约 break;temp=;for(l=j+1;lk+1;l+)temp+=sl;for(l=0;l6;l+) if(temp=keyl) k=j+1;sk=vl;break;cout(i)t; / 步骤 temp=;for(l=1;lk+1;l+) temp+=sl;couttempt;/ 栈if(search(sj,a)=)/ 优先关系/ 当前符号/ 剩余输入串/ 优先关系/ 当前符号/ 剩余输入串couttsetw(10); coutatsetw(15); coutinputtsetw(15); cout 移进
4、 endl;i+;k=k+1;sk=a; /移进else if(search(sj,a)=Y)/优先关系/当前符号/剩余输入串cout=tsetw(10); coutatsetw(15); couti nputtsetw(15); cout接受endl;i+; else /优先关系/当前符号/剩余输入串cout?tsetw(10);coutatsetw(15);couti nputtsetw(15);cout出错endl;exit(0);/出错while(a!=#);2实验结果1 R201询译原理、偏谭原洼卖盟口perator_precedence_reductioroperator_precedence_red. I. = | 凹请输入需要分析的串,以,护结尾,回车结束: i-i# 步骤Press优先关系栈ttttian 1/ key to cont inue当前符号-1剩余输入串itt移曙约 F:2012涓译原理编谭原理实盟:operator_precedence_reducti0roperartor_precedence_recl.tJI请输入需要分析的串,以,护结尾,回车结束:i+i#步骤 m Press优先关系当前符号i#i#F#F+#F+F#F=ankey to continue剩余输入串+i# iff# itttt#ttaII