- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理-递归下降分析法
PAGE
PAGE 7
实验二 递归下降分析法
一 实验目的
递归下降分析法。
二 实验要求
(一)准备:
1.阅读课本有关章节;
2.考虑好设计方案;
3.设计出模块结构、测试数据,初步编制好程序。
(二)上课上机:
将源代码拷贝到机上调试,发现错误,再修改完善。第二次上机调试通过。
(三)程序要求:
程序输入/输出示例:
对下列文法,用递归下降分析法对任意输入的符号串进行分析:
(1)E-TG
(2)G-+TG|—TG
(3)G-ε
(4)T-FS
(5)S-*FS|/FS
(7)F-(E)
(8)F-i
输出的格式如下:
(1)递归下降分析程序,编制人:姓名,学号,班级
(2)输入一以#结束的符号串(包括+—*/()i#):在此位置输入符号串例如:i+i*i#
(3)输出结果:i+i*i# 为合法符号串
备注:输入一符号串如i+i*#,要求输出为“非法的符号串”。
注意:
(6)S-ε
1.表达式中允许使用运算符(+-*/)、分割符(括号)、字符I,结束符#;
2.如果遇到错误的表达式,应输出错误提示信息(该信息越详细越好);
3.对学有余力的同学,可以详细的输出推导的过程,即详细列出每一步使用的产生式。
三 实验内容
1.程序思路
(1)定义部分:定义常量、变量、数据结构。
(2)初始化:从文件将输入符号串输入到字符缓冲区中。
(3)利用递归下降分析法分析,对每个非终结符编写函数,在主函数中调用文法开始符号的函数。
(4)实验思路:
利用程序设计语言的知识和大量编程技巧,递归下降分析法是一种较实用的分析法,通过练习,掌握函数间相互调用的方法。
四 实验结果
(1)当输入“i-i”,不但输出推导过程,还会把栈内的状态显示出来;
(2)当输入“iii”,则直接输出“不符合该文法”;
五 实验总结
通过这次试验,让我更加熟悉掌握了自上而下语法分析法的特点。掌握了递归下降语法分析的基本原理和方法。运用递归下降分析法完成了本试验的语法分析构造,并且成功的分析出每种正确的句子和错误的句子。函数的构造是根据文法分析的递归过程,所编写每个函数的功能,以文法的右部为函数名,对应的左部为相应分析过程。此分析法简单,直观,易构造分析程序,但是实验要求不灵活,换另一套语法,就要重新写,但思路不变。
在试验的过程中,遇到了一些小问题,算法思路不清晰,导致代码编写比较乱,后通过借鉴其它资料,把代码改写的更加精炼。通过这次试验,也让自己更加对算法感兴趣。
源代码
#include iostream
#include iomanip
#include string
#include vector
using namespace std;
//stackStr : 模拟栈
string s, str, stackStr;
int i;
vectorstring v;
void E();
void G();
void T();
void S();
void F();
void err();
int check();
void err();
void push(string pre, string value);
void err(){
coutERRORendl;
exit(0);
}
//将字符串存入输出栈
void push(string pre, string value){
int idx = stackStr.find_first_of(pre[0],0);
if(value != ε) {
stackStr.replace( idx, 1, value);
}
else {
stackStr.erase(idx,1);
}
v.push_back((pre+value+,+stackStr));
}
//验证是否已经到栈底
int check(){
if(i = s.size()) {
return 1;
}
else if(s[i]==#) {
return 1;
}
return 0;
}
void E(){
push(E--,TG);
T();
G();
}
void G(){
if(s[i] == + || s[i] == -) {
str = s[i];
str += TG;
push(G--,str);
i++;
T();
G();
}
else {
push(G--,ε);
}
}
void T()
{
push(T--,FS);
F();
S();
}
void S(){
if(s[i]==* || s[i]==/) {
str = s[i];
str += FS;
您可能关注的文档
- 硅铬合金冶炼行业评估模型.doc
- 砌块成型机搅拌机配料机故障排除方法.doc
- 广东茂名市2011年第一次高考模拟考试语文试卷及答案.doc
- 碘与人类健康论文.doc
- 碘对人的作用8.doc
- 碳纳米管的石墨电弧法制备.doc
- 广西公务员笔试模拟题.doc
- 广西公务员事业单位考试历年精选真题.doc
- dsPIC33F正交编码器QEI应用手册.pdf
- 矿山井下供电系统分析.doc
- 实验室危废随意倾倒查处规范.ppt
- 实验室危废废液处理设施规范.ppt
- 实验室危废处置应急管理规范.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第20课时 中国的地理差异.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第21课时 北方地区.ppt
- 危险废物处置人员防护培训办法.ppt
- 危险废物处置隐患排查技术指南.ppt
- 2026部编版小学数学二年级下册期末综合学业能力测试试卷(3套含答案解析).docx
- 危险废物处置违法案例分析汇编.ppt
- 2026部编版小学数学一年级下册期末综合学业能力测试试卷3套精选(含答案解析).docx
原创力文档


文档评论(0)