




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
XXX 大 学实 验 报 告课程名称:编译原理实验名称:文法的化简和改造姓 名:XXXX学 号:XXXX班 级:XXXX实验日期:XXXX一.实验目的1) 编写文法的化简和改造程序;二.实验环境1) 硬件环境:计算机;2) 软件环境:C/C+编译器;三.实验内容1. 用C/C+语言编写方法的化简和改造程序,实现以下功能之一(如实现两个功能,则满分为110分;如实现三个功能,则满分为120分):(1) 无用符号和无用产生式的删除,参考课本中算法2.1和算法2.2。(2) -产生式的消除,参考课本中算法2.3、2.4和2.5。(3) 单产生式的消除,参考课本中算法2.6。从文件或终端中读入文法,并将化简和改造后的文法输出到另一文件或终端中。文法的表示如下:S-aSS-WS-UU-aV-bVV-acW-aW用空字符表示用大写的拉丁字母表示文法的非终结符号,用小写的拉丁字母表示文法的终结符号,每个产生式占一行,第一个产生式的左部为开始符号。在下面写出代码,并用课本2.4节中相应的例子进行验证,提供相应的截图(对窗口截图时先同时按alt和prtscn键,再按ctrl+v粘贴)答::代码:/* 单产生式的消除 */#include #include using namespace std;typedef struct char left; char right10; chanshengshi;typedef struct head chanshengshi data; struct head* next; Head;struct vn char ch; vn *next; ;vn Vn; /the storage to store not-ending characterHead init; /the storage to store the chanshengshiHead solution; /the storage to store the solution of chanshengshibool isBigCase(char ch) / whether the character ch is big case or small case ? if(ch=A&ch=Z) return true;else return false;void getChanshengshi() /input chanshengshicoutinput the Chanshengshi : (end with double enter key) temp.left;cin.get(); cin.get();cintemp.right;if(isBigCase(temp.left)=false) /ensure the chanshengshi is not illegalcoutIm sorry to tell you thatendl;coutthe left of the chanshengshi must be BIG-CASE characterendl;coutplease input it again! next=new Head;p=p-next;p-data=temp;p-next=NULL;if(cin.get()=n)if(cin.peek()=n) break;while(true);bool belongToVn(char ch)vn *p=&Vn;while(p-next!=NULL) p=p-next; if(p-ch=ch) return true; return false;void getVn()Vn.next=NULL;vn *q=&Vn;Head *p=&init;while(p-next!=NULL)p=p-next;if(belongToVn(p-data.left) continue;q-next=new vn;q=q-next;q-ch=p-data.left;q-next=NULL;void displayInit()Head *p=&init;while(p-next!=NULL)p=p-next;coutdata).left);cout;coutdata.right;coutnext!=NULL)p=p-next;coutch;coutnext!=NULL) q=q-next; if(q-data.left=ch) /如果不是单产生式的话 if( strlen(q-data.right)1 | !isBigCase(q-data).right0) if(p=NULL) p=new Head; h=p; else p-next=new Head; p=p-next; p-data.left=q-data.left; strcpy(p-data.right,q-data.right); p-next=NULL; else /是单产生式的话 p-next=makeFrom(q-data.right0); while(p-next!=NULL) p=p-next; p-data.left=ch; return h;void operate() /generate the chanshengshi that answer with the conditionsHead *r=&solution;solution.next=NULL;vn *p=&Vn;coutendlsolution:next!=NULL)p=p-next; /not-ending characterr-next=makeFrom(p-ch);while(r-next!=NULL) r=r-next; r=&solution; do r=r-next; coutdata.leftdata.rightnext!=NULL);int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 阀门检修专业试题及答案
- 湖北省武汉市部分学校2026届高三上学期九月调研考试政治(含答案)
- 广告专业综合试题及答案
- 河南省许昌市禹州市2024-2025学年三年级下册期末英语试题(含答案无听力原文无听力音频)
- 茂名阳台花园施工方案
- Unit 1 Wish you were here单元检测(含解析) 译林版(2019) 选择性必修 第三册
- 物流运输合同协议
- 禁毒宣传进校园安全教育
- 2024-2025学年河南省驻马店市驿城区八年级(上)期末数学试卷(含答案)
- 2022年广西壮族自治区柳州市市铁路第一中学高一生物联考试题
- 药店药剂师专业劳动合同
- 小菜园租赁合同范本
- GB/T 44140-2024塔式太阳能光热发电站定日镜技术要求
- DL-T1342-2014电气接地工程用材料及连接件
- 个人资金转账合同模板
- 血管内超声在冠状动脉疾病中应用的中国专家共识(全文)
- 心理社交功能评估表
- 《征兵入伍应征公民体格检查标准条文释义》
- 20G520-1-2钢吊车梁(6m-9m)2020年合订本
- 电梯维护保养规则(TSG T5002-2017)
- 感染性膝关节炎的护理查房
评论
0/150
提交评论