- 35
- 0
- 约2.76千字
- 约 9页
- 2017-10-03 发布于重庆
- 举报
递归下降分析法实验
实验二 递归下降分析法
(1)掌握自上而下语法分析的要求与特点。
(2)掌握递归下降语法分析的基本原理和方法。
二、实验环境
Windows 7 操作系统
Microsoft Visual C++
三、实验内容
递归下降分析法是确定的自上而下分析法,它要求文法是LL(1)文法。它的基本思想是:对文法中的每个非终结符编写一个函数或子程序,每个函数或子程序的功能是识别由该非终结符所表示的语法成分。
1.递归下降分析法的功能
词法分析器的功能是利用函数之间的递归调用模拟语法树自上而下的构造过程。
2.递归下降分析法的前提
改造文法:消除二义性、消除左递归、提取左因子,判断是否为LL(1)文法,
3.递归下降分析法实验设计思想及算法
为G的每个非终结符号U构造一个递归过程。U的产生式的右边指出这个过程的代码结构:
(1)若是终结符号,则和向前看符号对照,若匹配则向前进一个符号;否则出错。
(2)若是非终结符号,则调用与此非终结符对应的过程。当A的右部有多个产生式时,可用选择结构实现。
四、实验步骤
1.阅读课本有关章节;
2.考虑好设计方案;
3.设计出模块结构、测试数据,初步编制好程序。
4.将源代码拷贝到机上调试,发现错误,再修改完善,直到调试通过为止。
5.系统流程图
6.程序代码
#include iostream
using namespace std;
char a[80]; // 字符串的存入
char sym; // 单个的判断字符
int i=0; // 字符串下标
void E(); // 功能识别函数
void E2(); // 功能识别函数
void E3(); // 功能识别函数
void T(); // 功能识别函数
void T2(); // 功能识别函数
void T3(); // 功能识别函数
void F(); // 功能识别函数
void input(); // 输入函数
void advance(); // 字符串小标进一函数
void main()
{
while(1)
{
input();
advance();
E(); // 从首个推导式E开始
if (sym==#)
couta为合法符号串endl;
else
cout非法的符号串!endl;
i=0; // 重新输入时,下标置0
}
}
void E()
{
T();
E2();
E3();
}
void E2()
{
if(sym==+)
{
advance();
T();
E2();
}
else if (sym!=) sym !=# sym!=-)
{
cout非法的符号串!endl;
exit(0);
}
}
void E3()
{
if(sym==-)
{
advance();
T();
E3();
}
else if (sym!=) sym!=# sym!=+)
{
cout非法的符号串!endl;
exit(0);
}
}
void T()
{
F();
T2();
T3();
}
void T2()
{
if(sym==*)
{
advance();
F();
T2();
}
else if(sym!=+sym!=)sym!=#sym!=-sym!=/)
{
cout非法的符号串!endl;
exit(0);
}
}
void T3()
{
if(sym==/)
{
advance();
F();
T3();
}
else if(sym!=+sym!=)sym!=#sym!=-sym!=*)
{
cout非法的符号串!endl;
exit(0);
}
}
void F()
{
if(sym==()
{
advance();
E();
if(sym==))
advance();
else
{
cout非法的符号串!endl;
exit(0);
}
}
else if(sym==i || sym==I)
{
advance();
}
else
{
cout非法的符号串!endl;
exit(0);
}
}
void input()
{
cout请输入一以#结束的符号串(包括+-*/()i#):endl;
cina;
您可能关注的文档
- 表格式总结会计(新制度)第19章 所得税.doc
- 表观反射率(反射率反照率)的计算.doc
- 补偿电容的设置.doc
- 表面等离子共振技术(surfaceplasmonresonancetechnology,SPR)综述.doc
- 袁洪桩基模拟方法.doc
- 表面贴装元器件管理.doc
- 袋式除尘系统运行规程试行.doc
- 裂解汽油加氢第一章工艺技术规程.doc
- 装修后80件后悔的事情.docx
- 裂缝性油藏深部复合调剖终结者毕业论文高景涛1.doc
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 2025年德州市中考数学试题卷(含答案及解析).docx
- ISO 15614-1-2012 金属材料焊接工艺规范和评定.pdf VIP
- 发那科fanuc维修手册 内部资料教材.pdf VIP
- 2026年节后复工开工第一课课件.ppt
- 蔬菜水果的收货验货标准.doc VIP
- 新部编人教版语文五年级上册生字字帖直接打印资料文档.pdf VIP
- 东北大学2024-2025学年第1学期《高等数学(上)》期末考试试卷(A卷)附参考答案.pdf
- T_DZJN 455-2025 冶金工业变频节能选型设计规范.docx VIP
- 北京邮电大学《机器学习》2024 - 2025 学年第一学期期末试卷.pdf VIP
- 新版2026春重庆大学版英语四年级下册单词表国标手写斜体描红字帖.pdf
原创力文档

文档评论(0)