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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(实现技术实验报告及源代码 北京交通大学Word文档下载推荐.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实现技术实验报告及源代码 北京交通大学Word文档下载推荐.docx

1、(4)设计两个测试用例(尽可能完备),并给出程序执行结果四元式序列。3. 主要数据结构描述:本程序采用的是算符优先文法,文法以及算符优先矩阵是根据第四次实验来修改的,所以主要的数据结构也跟第四次差不多,主要为文法的表示,FirstVT集和LastVT集以及算符优先矩阵:算符优先矩阵采用二维字符数组表示的:char mtr99; 算符优先矩阵4. 程序结构描述:本程序一共有8功能函数:void get(); 获取文法void print(); 打印文法void fun(); 求FirstVT 和 LastVTvoid matrix(); 求算符优先矩阵void test(); 测试文法int c

2、mp(char a,char b); 比较两个运算符的优先级 1 0 -1void out(char now,int avg1,int avg2); 打印四元式int ope(char op,int a,int b); 定义四元式计算方法5. 实验代码详见附件6. 程序测试6.1 功能测试程序运行显示如下功能菜单:选择打印文法:选择构造FirstVt集和LastVT集:选择构造算符优先矩阵:6.2 文法测试测试1:1+2*3测试2:2+3+4*5+(62)7. 学习总结本次实验完成了语义及中间代码生成的设计原理与实现,所采用的方法为算符优先分析方法, 首先根据文法求出此文法的FirstVT集和

3、LastVT集,然后根据他们求出此文法的算符优先矩阵。由于此文法和第四次文法基本相同,只是多了一条赋值语句,所以采用的规则和第四次基本相同。在分析阶段,每当遇到有规约的项目,判断一下,打印出此部运算的四元式,这样一步一步分析,知道输入的算术表达式计算分析完毕。由于本次实验部分代码和第四次实验的代码比较相似,只需增加一点四元式的分析计算打印过程,就能够顺利完成本次实验。通过这次实验,我对语义分析以及中间代码部分有了一定的提高,对以后的学习有了一定程度上的帮助。 lb6.cpp : 定义控制台应用程序的入口点。#include stdafx.();int main() int choose; wh

4、ile(1) cout * choose; if(choose = 0) break; switch(choose) case 1: get(); break; case 2: print(); case 3: fun(); case 4: matrix(); case 5: test(); default:break; return 0;void get() info temp,temp1,temp2; temp.left = E; temp.right.push_back(E+T);E-TTi temp1.left = T temp1.right.push_back(T*FTFF temp

5、2.left = F temp2.right.push_back(E) lang.push_back(temp); lang.push_back(temp1); lang.push_back(temp2); cout 文法获取完成void print() for(int i = 0;i lang.size();i +) for(int j = 0;j langi.right.size();j +) cout langi.left langi.rightj Z | temp0 = 2) 终结符 if(temp1 | temp1 ) & temp.length() = 1) 终结符 langi.l

6、ast.push_back(temp0);= 3) 终结符 langi.last.push_back(temp1); else if(temp2 | temp2 ) 终结符 langi.last.push_back(temp2); while(sign = 0) 迭代FirstVT sign = 1; for(i = 0; for(j = 0; string temp = langi.rightj; if(temp.length() = 1 & (temp0 )可以迭代 for(int k = 0;k k +) if(langk.left = temp0) 找到了,添加元素 for(int p = 0;p langk.first.size();p +) sign1 = 0; char ch = langk.firstp; for(int q = 0;q langi.first.size();q +) if(langi.firstq = ch) 包含了 sign1 = 1; if(sign1 = 0) langi.first.push_back(ch); sign = 0; sign = 0; while(sign = 0) 迭代LastVT langk.l

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1