ImageVerifierCode 换一换
格式:DOC , 页数:14 ,大小:95KB ,
资源ID:8187875      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-8187875.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译原理-实验3算符优先分析法.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

编译原理-实验3算符优先分析法.doc

1、编译原理实验报告项目名称 算符优先分析法设计与实现 专业班级 学 号 姓 名 实验成绩:批阅教师:年 月 日实验 3算符优先分析法设计与实现实验学时: 2 实验地点: 实验日期: 一、实验目的加深对语法分析器工作过程的理解;加强对算符优先分析法实现语法分析程序的掌握;能够采用一种编程语言实现简单的语法分析程序;能够使用自己编写的分析程序对简单的程序段进行语法翻译。二、实验内容在实验 1 的基础上,用算符优先分析法编制语法分析程序,语法分析程序的实现可以采用任何一种编程语言和工具。三、实验方法先在算符栈置“” ,然后开始顺序扫描表达式,若读来的单词符号是操作数,这直接进操作数栈,然后继续读下一个

2、单词符号。分析过程从头开始,并重复进行;若读来的是运算符 2 则将当前处于运算符栈顶的运算符 1 的入栈优先数 f 与 2 的比较优先函数 g进行比较。四、实验步骤1. 定义目标语言的语法规则;2. 求解预测分析方法需要的符号集和分析表;3. 依次读入实验一的分析结果,根据预测分析的方法进行语法分析,直到源程序结束;4. 对遇到的语法错误做出错误处理。五、实验结果六、实验结论#include “stdio.h“#include “stdlib.h“#include “iostream.h“char data2020; /算符优先关系char s100; /模拟符号栈 s char lable2

3、0; /文法终极符集char input100; /文法输入符号串char string2010; /用于输入串的分析int k; char a; int j; char q; int r; /文法规则个数int r1; int m,n,N; /转化后文法规则个数char st1030; /用来存储文法规则char first1010; /文法非终结符 FIRSTVT 集char last1010; /文法非终结符 LASTVT 集int fflag10=0; /标志第 i 个非终结符的 FIRSTVT 集是否已求出int lflag10=0; /标志第 i 个非终结符的 LASTVT 集是否

4、已求出int deal(); /对输入串的分析int zhongjie(char c); /判断字符 c 是否是终极符int xiabiao(char c); /求字符 c 在算符优先关系表中的下标void out(int j,int k,char *s); /打印 s 栈void firstvt(char c); /求非终结符 c 的 FIRSTVT 集void lastvt(char c); /求非终结符 c 的 LASTVT 集void table(); /创建文法优先关系表void main()int i,j,k=0;printf(“请输入文法规则数:“);scanf(“%d“,pri

5、ntf(“请输入文法规则:n“);for(i=0;iZ)printf(“不是算符文法!n“);exit(-1);if(stij=Alablek=#;lablek+1=0; table();printf(“每个非终结符的 FIRSTVT 集为:n“); /输出每个非终结符的 FIRSTVT 集for(i=0;i;elsetextxy=stij;y+;textxy=0;x+;y=0;r1=x;printf(“转化后的文法为:n“);for(i=0;i“后的转化文法,用于最后的规约)*/stringi0=texti0;for(j=3,l=1;textij!=0;j+,l+)stringil=text

6、ij;stringil=0;for(i=0;i;m=xiabiao(#);for(t=0;t;datann=;void firstvt(char c) /求 FIRSTVT 集int i,j,k,m,n;for(i=0;i)out(1,k,s);printf(“%c“,a);out(i+1,z,input);printf(“规约n“);doq=sj;if(zhongjie(sj-1)j=j-1;else j=j-2;x=xiabiao(sj);y=xiabiao(q);while(dataxy!=);int m,n,N;for(m=j+1;m=k;m+)for(N=0;Nr1;N+)for(n

7、=1;stringNn!=0;n+)if(!zhongjie(sm)break;elseif(zhongjie(sm)if(sm=stringNn)sj+1=stringN0;break;k=j+1;if(k=2printf(“%c“,a);out(i+1,z,input);printf(“结束n“);printf(“输入串符合文法的定义!n“);return 1; /输入串符合文法的定义elseif(dataxy=|dataxy=) /移进out(1,k,s);printf(“%c“,a);out(i+1,z,input);printf(“移进n“);k+;sk=a;i+;elseprint

8、f(“nflase“);return 0;printf(“nflase“);return 0;void out(int j,int k,char *s)int n=0;int i;for(i=j;i=k;i+)printf(“%c“,si);n+;for(;n15;n+)printf(“ “);int xiabiao(char c) /求字符 c 在算符优先关系表中的下标int i;for(i=0;lablei!=0;i+)if(c=lablei)return i;return -1;int zhongjie(char c) /判断字符 c 是否是终极符int i;for(i=0;lablei!=0;i+)if(c=lablei)return 1;return 0;七、实验小结通过本次试验我知道了算符文法的形式,对给定的算符文法能构造算符优先关系分析表,并判别所给文法是否为算符优先文法。同时,我也知道了算符优先文法的优缺点和实际应用中的局限性。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报