- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验报告
学院(系)名称:计算机与通信工程学院
姓名 学号 专业 班级 实验项目 实验二:语法分析 课程名称 编译原理 课程代码 实验时间 2016年4月21日 第1、2节
2016年4月26日 第3、4节
2016年4月28日 第1、2节 实验地点 计算机软件实验室7-220 批改意见 成绩
教师签字: 实验内容:
可选择LL1分析法、算符优先分析法、LR分析法之一,实现如下表达式文法的语法分析器:
(1)E→E+T | E-T | T
(2)T→T*F | T/F | F
(3)F→P^F | P
(4)P→(E) | i
实验目的:
1.掌握语法分析的基本概念和基本方法;
2.正确理解LL1分析法、算符优先分析法、LR分析法的设计与使用方法。
实验要求:
1.按要求设计实现能识别上述文法所表示语言的语法分析器,并要求输出全部分析过程;
2.要求详细描述所选分析方法针对上述文法的分析表构造过程;
3.完成对所设计语法分析器的功能测试,并给出测试数据和实验结果;
4.为增加程序可读性,请在程序中进行适当注释说明;
5.整理上机步骤,总结经验和体会;
6.认真完成并按时提交实验报告。
【实验过程记录(源程序、测试用例、测试结果及心得体会等)】
使用的是LL(1)分析法,其分析表的构造方法和构造过程如下:
实验源代码:
#includeiostream
#includecstring
#define size 1024
using namespace std;
int getLength(char str[size])
{
int i=0;
while(str[i]!=\0)
i++;
return i;
}
int getstringLength(string str)
{
int i=0;
while(str[i]!=\0)
i++;
return i;
}
char gettop(char stack[size],int top)
{
if(stack[top]!=\0)
return stack[top];
else
return #;
}
void popstack(char *stack,int *pointer)
{
int p=*pointer;
cout\tPopup stack[p] out!;
stack[p]=\0;
(*pointer)--;
}
void pushstack(char *stack,int *pointer,string str)
{
int i=0;
int length=getstringLength(str);
cout push str in stack reversed order.;
for(i=length-1;i=0;i--)
{
(*pointer)++;
stack[(*pointer)]=str[i];
}
}
int getcol(char top)
{
switch(top)
{
case +:
return 0;
case -:
return 1;
case *:
return 2;
case /:
return 3;
case ^:
return 4;
case ):
return 5;
case #:
return 6;
case (:
return 7;
case i:
return 8;
default:
coutError! This character string is not this grammer`s sentence.endl;
return -1;
}
}
void show(char str[size],int index)
{
int length=getLength(str);
if(index!=-1)
cout\t;
for(int i=index+1;ilength;i++)
coutstr[i];
}
int main()
{
char str[size];//接受字符串的数组
char stack[size];//进行比对的栈
int pointer=-1;//指向栈顶的指针
int length=0;//记录字符串长度
int index=0;//记录输入字符串
char top;
int i,j;//i表示行,j表示列
string production;
bool match=false;
st
您可能关注的文档
- 生产管理及质量控制.doc
- 生产管理看板描述.doc
- 生产计划执行管理制度.doc
- 施工调查报告(沈阳地铁二号线6标).doc
- 湿地科学及的研究趋势.doc
- 实时雨水情数据数据项说明.doc
- 实验指导书(空气沿横置圆管表面自然对流平均换热系数测定).doc
- 实验指导书综合实验台.doc
- 市场营销新课堂笔记.doc
- 手机外壳下盖注塑模设计.doc
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
文档评论(0)