算符优先分析器设计实验报告__宁剑

算符优先分析器设计实验报告__宁剑

ID:37963356

大小:623.31 KB

页数:9页

时间:2019-06-04

算符优先分析器设计实验报告__宁剑_第1页
算符优先分析器设计实验报告__宁剑_第2页
算符优先分析器设计实验报告__宁剑_第3页
算符优先分析器设计实验报告__宁剑_第4页
算符优先分析器设计实验报告__宁剑_第5页
资源描述:

《算符优先分析器设计实验报告__宁剑》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、word格式文档装订线编译原理实验报告题目:算符优先分析法分析器学院计算机科学与技术专业xxxxxxxxxxxxxxxx学号xxxxxxxxxxxx姓名宁剑指导教师xxxx2015年xx月xx日算符优先分析法分析器专业整理word格式文档一、实验目的 1.理解自底向上优先分析,比较和自顶向下优先分析的不同。2.理解算符优先分析的特点,体会其和简单优先分析方法的不同。3.加深对编译器语法分析的理解。二、实验原理 1.自底向上优先分析方法,也称移进-归约分析,粗略地说它的思想是对输入符号串自左向右进行扫描,并将输入符号逐个移入一个后进先出栈,边移入边分析

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

3、处于句型最左边的那个素短语。最左素短语是算符优先分析算法的可归约串。5.计算得到所给文法的算符优先矩阵6.算符优先分析的基本过程专业整理word格式文档三、实验要求使用算符优先分析算法分析下面的文法:E’→#E#E→E+T

4、TT→T*F

5、FF→P^F

6、PP→(E)

7、i其中i可以看作是一个终结符,无需作词法分析。具体要求如下:1.如果输入符号串为正确句子,显示分析步骤,包括分析栈中的内容、优先关系、输入符号串的变化情况;2.如果输入符号串不是正确句子,则指示出错位置。四、实验结果(程序)及分析#include#include

8、ing>#include#include专业整理word格式文档#defineMAX100usingnamespacestd;charS[MAX];charshuru[MAX],yu[MAX];voidscanner();intpanyouxian(charx);voidshengyuchuan();intk;charyouxian[7][7]={{'>','<','<','<','<','>','>'},{'>','>','<','<','<','>','>'},{'>','>','<','<','<','>'

9、,'>'},{'>','>','>','$','$','>','>'},{'<','<','<','<','<','=','$'},{'>','>','>','$','$','>','>'},{'<','<','<','<','<','$','='},};//优先关系表,其中>为大于,<为小于,=为等于,$为空格intmain(){intl,j;cout<<"请输入一个字符串:";cin.get(shuru,MAX);//将输入的字符串存到数组cout<<"步骤栈优先关系当前符号剩余输入串移进或归约"<

10、]='';l=strlen(shuru);//求输入字符串的长度for(j=0;j

11、+'

12、

13、S[k]=='*'

14、

15、S[k]=='^'

16、

17、S[k]=='i'

18、

19、S[k]=='('

20、

21、S[k]==')'

22、

23、S[k]=='#')j=k;elsej=k-1;h1=panyouxian(S[j]);//从优先关系表中查出S[j]和a的优先关系if(a=='+'

24、

25、a=='*'

26、

27、a=='^'

28、

29、a=='i'

30、

31、a=='('

32、

33、a==')'

34、

35、a=='#')l1=panyouxian(a);else//如果句子含有不是终结符集合里的其它字符,不合法{cout<<"错误!不合法的句子!"<

36、1];if(p1=='>'){loop:Q=S[j];if(S[j-1]=='+'

37、

38、S[j-1]=='*'

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

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

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