算符优先分析器设计实验报告--宁剑_第1页
算符优先分析器设计实验报告--宁剑_第2页
算符优先分析器设计实验报告--宁剑_第3页
算符优先分析器设计实验报告--宁剑_第4页
算符优先分析器设计实验报告--宁剑_第5页
免费预览已结束,剩余9页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、v1.0可编辑可修改编译原理实验报告题目:算符优先分析法分析器学院计算机科学与技术专业xxxxxxxxxxxxxxxx学 号 xxxxxxxxxxxx姓名宁剑指导教师 xxxx2015年xx月xx日算符优先分析法分析器、实验目的1 .理解自底向上优先分析,比较和自顶向下优先分析的不同。2 .理解算符优先分析的特点,体会其和简单优先分析方法的不同3 .加深对编译器语法分析的理解。二、实验原理1 .自底向上优先分析方法,也称移进-归约分析,粗略地说它的思想是对输入符号用自左向右进行扫描,并将输入符号逐个移入一个后进先出栈, 边移入边 分析,一旦栈顶符号用形成某个句型的句柄或可归约用时,就将该产生式

2、的左部 非终极符代替相应的右边文法符号用。2 .算符优先分析法的基本思想首先确定算符(确切地说是终结符)之间的优先关系和结合性质,然后借助 这种关系,比较相邻算符之间的优先级来确定句型的可归约用,并进行归约。注意:算符优先分析过程是自下而上的归约过程, 但它的可归约用未必是句 柄,也就是说,算符优先分析过程不是一种规范归约。3 .终结符号间优先关系的确定,用 FIRSTVT?口 LASTVT#算。4 .最左素短语所谓素短语是指这样一个短语,它至少含有一个终结符,并且除它自身之外 不再含有其它素短语。最左素短语是指处于句型最左边的那个素短语。最左素短 语是算符优先分析算法的可归约用05 .计算得

3、到所给文法的算符优先矩阵+11()TT><<< n>>.A<V>+1><<>>1>>>><<<<>>>>耳<<<6.算符优先分析的基本过程初值卜.=1,即口皿叮,当埔人冲读人SCk VtT地7<& VrSG+lZHSM归妁为N ki= j+1 Sk)=H除去丑Q三、实验要求使用算符优先分析算法分析下面的文法:E' 一#E#E+T|TT- T*F|FF 一 PAF|P4 (E)|i其中i可以看作是一个终结符,

4、无需作词法分析。具体要求如下:1 .如果输入符号用为正确句子,显示分析步骤,包括分析栈中的内容、优先 关系、输入符号用的变化情况;2 .如果输入符号用不是正确句子,则指示出错位置。四、实验结果(程序)及分析#include <>#include <cstring>#include <iostream>#include <iomanip>#define MAX 100using namespace std;char SMAX;char shuruMAX,yuMAX;void scanner();int panyouxian(char x);void

5、 shengyuchuan();int k;char youxian77='>','<','<','<','<','>','>','>','>','<','<','<','>','>','>','>','<','<

6、;','<','>','>','>','>','>',$,$,'>','>','<','<','<','<','<','=','$','>','>','>',$,$,'>','&

7、gt;','<','<','<','<','<','$','=',; /优先关系表,其中 为大于,为小于,=为等于,$为空格int main()int l,j;cout<<"请输入一个字符串:";(shuru,MAX); /将输入的字符串存到数组剩余输入用移cout<<”步骤 栈优先关系当前符号进或归约"<<endl;k=0;Sk='#';Sk+1='0&#

8、39;l=strlen(shuru); / 求输入字符串的长度for(j=0;j<l;j+)yuj=shuruj;yuj='0'scanner。;return 0;void scanner。/扫描分析输入申int i,j,l,h1,l1,h2,l2,h3,l3,y1,y2,r1,r2;int step=0;/分析步骤数char a; /存放正在分析的字符char p1,Q,p2;l=strlen(shuru); / 算出输入用长度for(i=0;i<l;i+)a=shurui;if(Sk='+'|Sk='*'|Sk='A

9、9;|Sk='i'|Sk='('|Sk=')'|Sk='#')j=k;elsej=k-1;h1=panyouxian(Sj);/ 从优先关系表中查出 Sj和a的优先关系if(a='+'|a='*'|a='A'|a='i'|a='('|a=')'|a='#')l1=panyouxian(a);else /如果句子含有不是终结符集合里的其它字符,不合法(cout<<"错误!不合法的句子!"&l

10、t;<endl;break;)p1=youxianh1l1;if(p1='>')(loop:Q=Sj;if(Sj-1='+'|Sj-1=*,|Sj-1='A'|Sj-1='i,|Sj-1='('|Sj-1=')'|Sj-1='#')j=j-1;elsej=j-2;h2=panyouxian(Sj);l2=panyouxian(Q);p1=youxianh2l2;if(p1='<')/Sj+1- k归约为 Fk=j+1;shengyuchuan();step+

11、;cout<<left<<"("<<step<<setw(6)<<")"<<setw(10)<<S<<setw(10)<<p1<<setw(10)<<a<<setw(5)<<right<<yu<<setw(15)<<" 归约"<<endl;i-;Sk='F'r1=strlen(S);for(r2=k+1;r2<r

12、2;r2+)Sr2='0'/多个字符归约,把栈顶后面的舍弃y1=strlen(yu);for(y2=0;y2<y1;y2+)yuy1-y2=yuy1-y2-1;yu0='i'elsegotoloop;elseif(p1='<') /移进如果上一步是不归约,剩余的字符串减少一个(shengyuchuan();shurul='0'step=step+1;cout<<left<<"("<<step<<setw(6)<<")"&

13、lt;<setw(10)<<S<<setw(10)<<p1<<setw(10)<<a<<setw(5)<<right<<yu<<setw(15)<<" 移近"<<endl;k=k+1;Sk=a;else(if(p1='=')(h3=panyouxian(Sj);l3=panyouxian('#');p2=youxianh3l3;if(p2='=')(shengyuchuan();step+;

14、cout<<left<<"("<<step<<setw(6)<<")"<<setw(10)<<S<<setw(10)<<p1<<setw(10)<<a<<setw(5)<<right<<yu<<setw(15)<<" 接受"<<endl;cout<<"合法的句子!"<<endl;break;

15、elsek=k+1;Sk=a;elsecout<<"出错!"<<endl;break;void shengyuchuan()int i,j;i=strlen(yu);for(j=0;j<i;j+)yuj=yuj+1;yui-1='0'int panyouxian(char x)int m;switch(x)case'+':m=0;break;case'*':m=1;break;case'A':m=2;break;case'i':m=3;break;case'

16、(':m=4;break;case')':m=5;break;case'#':m=6;break;return m;14输入的程序界面如图:H中a MN «tl>- <B .* 43M UB»j 二蠹".阳 =r» A /, UH 图5国|司U芭.ttn Mm 4-i* I. 咄(I 上,I !-飞d产一ll:J“HE:l»l-rLal-!iMi.I:c.'i.ri1,IJfe:»-l>.l.IEJI输入一个正确的句子,结果如下:x一, ,字符串二士*士*<1+上)#1栈优抚关系当前苻号果脍输入串C1)年 <iC2>41<+<3>UF<+C4>(IJ+<iC5>ftF+L<<£+iJ#EGKF+F<菁C7>#r*F*<<QMJ»F+F*<4iC9)UF+F*(i <+nitC1B)ttRMfP (+Cll>ftF*F*<F* <<.12 >AF+FMF+i <>C13)ttP+F*CP,F <>

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论