




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学院(系)名称:计算机工程系姓名学号10070045专业计算机科学与技术专业班级2010级 班实验项目实验二:语法分析课程名称编译原理课程代码0310243实验时间 年 月 日 第 、 节 年 月 日 第 、 节实验地点第一教学楼1508批改意见成绩教师签字: 实验内容: 可选择LL1分析法、算符优先分析法、LR分析法之一,实现如下表达式文法的语法分析器:(1)EE+T | E-T | T(2)TT*F | T/F | F(3)FPF | P(4)P(E) | i实验目的:1掌握语法分析的基本概念和基本方法;2正确理解LL1分析法、算符优先分析法、LR分析法的设计与使用方法。实验要求:1按要求
2、设计实现能识别上述文法所表示语言的语法分析器,并要求输出全部分析过程;2要求详细描述所选分析方法针对上述文法的分析表构造过程;3完成对所设计语法分析器的功能测试,并给出测试数据和实验结果;4为增加程序可读性,请在程序中进行适当注释说明;5整理上机步骤,总结经验和体会;6认真完成并按时提交实验报告。实验环境:Windows XP实验分析:(1)定义部分:定义常量、变量、数据结构。(2)初始化:设立LL(1)分析表、初始化变量空间(包括堆栈、结构体、数组、临时变量等);(3)控制部分:从键盘输入一个表达式符号串;(4)利用LL(1)分析算法进行表达式处理:根据LL(1)分析表对表达式符号串进行堆栈
3、(或其他)操作,输出分实验分析表:i*()#EE->TE'E->TE'E'E'->+TE'E'->E'->TT->FT'T->FT'T'T'->T'->*FT'T'->T'->FF->iF->(E)实验程序:#include<iostream>#include<stack>using namespace std;stack<char> symbol;stack&l
4、t;int> state;char sen50;char sym126=/符号表 's','e','e','s','e','e', 'e','s','e','e','e','a', 'r','r','s','r','r','r', 'r','r','r',&
5、#39;r','r','r', 's','e','e','s','e','e', 'r','r','r','r','r','r', 's','e','e','s','e','e', 's','e','e','s
6、9;,'e','e', 'e','s','e','e','s','e', 'r','r','s','r','r','r', 'r','r','r','r','r','r', 'r','r','r','r','
7、r','r'char snum126=/数字表5,1,1,4,2,1,3,6,5,3,2,0,2,2,7,2,2,2,4,4,4,4,4,4,5,1,1,4,2,1,6,6,6,6,6,6,5,1,1,4,2,1,5,1,1,4,2,1,3,6,5,3,11,4,1,1,7,1,1,1,3,3,3,3,3,3,5,5,5,5,5,5;int go2123=/goto表1,2,3,0,0,0,0,0,0,0,0,0,8,2,3,0,0,0,0,9,3,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0;void action(int i,char *&a
8、,char &how,int &num,char &A,int &b)/action函数i,aint j;switch(*a)case 'i': j=0;break;case '+': j=1;break;case '*': j=2;break;case '(': j=3;break;case ')': j=4;break;case '#': j=5;break;default: j=-1;break;if(j!=-1) how=symij; num=snumij;
9、if(how='r') switch(num) case 1: A='E',b=3; cout<<"按E->E+T规约"<<endl; break; case 2: A='E',b=1; cout<<"按E->T规约"<<endl; break; case 3: A='T',b=3; cout<<"按T->T*F规约"<<endl; break; case 4: A='T
10、39;,b=1; cout<<"按T->F规约"<<endl; break; case 5: A='F',b=3; cout<<"按F->(E)规约"<<endl; break; case 6: A='F',b=1; cout<<"按F->id规约"<<endl; break; default: break; int go(int t,char A)/gotot,Aswitch(A)case 'E'
11、: return go2t0;break;case 'T': return go2t1;break;case 'F': return go2t2;break;void error(int i,int j,char *&a)/error处理函数cout<<"error"<<endl;switch(j)case 1:/期望输入id或左括号,但是碰到+,*,或$,就假设已经输入id了,转到状态5 state.push(5); symbol.push('i');/必须有这个,如果假设输入id的话,符号栈
12、里必须有. cout<<"缺少运算对象id"<<endl; break;case 2:/从输入中删除右括号 a+; cout<<"不配对的右括号"<<endl; break;case 3:/期望碰到+,但是输入id或左括号,假设已经输入算符+,转到状态6 state.push(6); symbol.push('+'); cout<<"缺少运算符"<<endl; break;case 4:/缺少右括号,假设已经输入右括号,转到状态11 state.p
13、ush(11); symbol.push(')'); cout<<"缺少右括号"<<endl; break;case 5: a+; cout<<"*号无效,应该输入+号!"<<endl;case 6: a+;int main()int s;char *a;char how;int num;int b;char A;while(1) cin>>sen; a=sen; state.push(0);/先输入0状态 while(*a!='0') b=0;num=0;how
14、='0'A='0' s=state.top(); action(s,a,how,num,A,b); if(how='s')/移进 cout<<"移进"<<endl; symbol.push(*a); state.push(num); / if(*a='i') / a+;/在这里忽略i后面的d a+; else if(how='r')/规约 for(int i=0;i<b;i+) if(!state.empty() state.pop(); if(!symbol.empty() symbol.pop(); int t=state.top(); symbol.push(A); state.push(go(t,A); else if(how='a')/接受 break; else error(s,num,a);/错误处理 cout<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 刀剪产品的品牌推广策略与执行计划考核试卷
- 猪的饲养智能化管理考核试卷
- 竹材加工过程中的质量控制考核试卷
- 皮革制品的消费心理与购买决策考核试卷
- 盾构机施工中的隧道工程地质环境保护策略考核试卷
- 厦门医学院《心理测量学》2023-2024学年第一学期期末试卷
- 无锡科技职业学院《人体工程学》2023-2024学年第二学期期末试卷
- 西昌民族幼儿师范高等专科学校《脑瘫儿童功能评估》2023-2024学年第一学期期末试卷
- 沈阳化工大学《语文》2023-2024学年第一学期期末试卷
- 沈阳职业技术学院《外国文学作品欣赏》2023-2024学年第二学期期末试卷
- 3.2工业区位因素及其变化以大疆无人机为例课件高一地理人教版
- 2024年陕西省中考数学试卷(A卷)附答案
- DL-T5190.1-2022电力建设施工技术规范第1部分:土建结构工程
- 财务预算分析表模板
- 中国高清荧光腹腔镜行业市场现状分析及竞争格局与投资发展研究报告2024-2034版
- 2024年高考体育单招考试政治重点知识点归纳总结(复习必背)
- MOOC 大数据技术原理与应用-厦门大学 中国大学慕课答案
- 国企管理人员招聘考试题库
- 高血压与青光眼的关系
- (2024版)小学二年级孩子如何高效复习语文知识点
- asme焊接工艺评定
评论
0/150
提交评论