- 5
- 0
- 约2.4千字
- 约 10页
- 2018-12-05 发布于广东
- 举报
编译原理实验报告递归子程序.doc
姓名:尹莉
学号:专业:13级网络工程
语法分析器1
一、实现方法描述
所给文法为G [E];
E-TEZ
Eb+TE | 空
T-FTZ
r-〉*FT| 空 F-i|(E)
递归子程序法:
首先计算出五个非终结符的first集合follow集,然后根据五个产 生式定义了五个函数。定义字符数组vocabulary来存储输入的句子, 字符指针ch指向vocabulary。从非终结符E函数出发,如果首字符属 于E的first集,则依次进入T函数和E函数,开始递归调用。在每个 函数中,都要判断指针所指字符是否属于该非终结符的first集,属于 则根据产生式进入下一个函数进行调用,若first集中存空字符,还要 判断是否属于该非终结符的follow集。以分号作为结束符。
二、实现代码
头文件shiyan3.h
#includeiostream
#includecstdio
#includestring
using namespace std;
#define num 100
char vocabulary[num];
char *ch;
void judge_E(); void judge一EE(; void judge一T(); void judge_TT(); void judge_F();
源文件
#includeshiyan3.h
void judge_E()
{
if(*ch==;)
{
cout该句子符合此文法! ?endl; int a=0;
cout?按1结朿程序《endl;
cin?a;
if(a==l)
exit(O);
}
else
|{(*^==(| |*ch==T)
{
judge_T();
judge_EE();
}
else
{
cout该句子不匹配此文法! ?endl; int a=0;
void judge_EE()
{
if(*ch==;)
{
cout?该句子符合此文法! H?endl; int a=0;
cout按1结朿程序《endl;
cin?a;
if(a==l)
exit(O);
}
if(*ch==+,)
{
ch++;
judge_T();
judge_EE();
}
else
if(*ch==|#|||*ch==)|)
return;
else
{
cout该句子不匹配此文法! ?endl; int a=0;
cout按 1 结束程序endl;
cin?a;
if(a==l)
exit(O);
}
} void judge_T()
{
if(*ch==,;)
{
cout?该句子符合此文法! endl; int a=0;
cout按1结束程序《endl;
cin?a;
if(a==l)
exit(O);
}
if(*ch==,(,| |*ch==T)
judge_F();
judge_TT();
}
else
{
cout〈该句子不匹配此文法! ?endl; int a=0;
cout按1结束程序《endl;
cin?a;
if(a==l)
exit(O);
}
}
void judge_TT()
{
if(*ch==;)
{
cout该句子符合此文法! H?endl; int a=0;
cout?按1结束程序《endl;
cin?a;
if(a==l)
exit(O);
}
if(*ch==*)
{
ch++;
judge_F();
judge_TT();
}
else
if(*ch==T| |*ch==+,| |*ch==,#1) return;
else
{
cout〈该句子不匹配此文法! ?endl; int a=0;
void judge_F()
{
if(*ch==*;)
{
cout该句子符合此文法! ?endl; int a=0;
cout按1结束程序《endl;
cin?a;
if(a==l)
exit(O);
}
if(*ch==,(,)
{
ch++;
judge_E();
if(*ch==T)
{
ch++;
}
else
{
cout该句子不匹配此文法! *?endl; int a=0;
cout按 1 结束程序endl;
cin?a;
if(a==l)
exit(O);
}
}
else
if(*ch==i)
{
ch++;
//cout?*ch;
}
else
{
cout该句子不匹配此文法! endl; int a=0;
cout按1结束程序《endl;
cin?a;
if(a==l)
exit(O);
void main()
//char *ch;
cout?********************** 欢迎使用语法分析器
********木***木****木木木木木**^门」|*
cout话?输入一个句子:?endl;
cin.
您可能关注的文档
- 综合治疗促进腹部手术后胃肠功能恢复的临床研究.doc
- 综合电子系统实验收音机组装实验报告.doc
- 综合知识第4章(金融市场).doc
- 综合美狄亚形象的文学嬗变.doc
- 综合运用面向对象程序设计语言的相关知识高等程序设计实验报告.doc
- 综合通信解决方案互联网接入类B.doc
- 综治办述职报告.doc
- 综艺类谈话节目隐私话题尺度把握的研究.doc
- 综艺节目主持人明星化现象的研究.doc
- 综述IL33及其受体ST2与心力衰竭的研究进展.doc
- 浙江省宁波市2024-2025学年高三下学期高考模拟考试数学试卷(解析版).pdf
- 广东省汕头市潮阳一中明光学校2024-2025学年高二上学期期中考试政治试题(解析版).pdf
- 广东省汕头市潮阳一中明光学校2024-2025学年高三上学期第三阶段考试历史试题(解析版).pdf
- 广东省汕头市澄海区2024-2025学年八年级上学期期末考试英语试题(解析版).pdf
- 浙江省衢州、丽水、湖州三地市2025届高三下学期4月教学质量检测(二模)数学试题(解析版).pdf
- 浙江省绍兴市上虞区2025届高三下学期5月高考及选考适应性考试数学试卷(解析版).pdf
- 广东省汕尾市2023-2024学年三年级上学期英语期末试卷(解析版).docx
- 广东省汕头市澄海区2024-2025学年高二上学期1月期末地理试题(解析版).pdf
- 广东省汕头市澄海区2024-2025学年八年级上学期期末语文试题(解析版).pdf
- 湖北省恩施土家族苗族自治州来凤县2023-2024学年三年级上学期英语期末试卷(解析版).docx
最近下载
- 软件开发合同四.docx VIP
- 深入学习贯彻党的二十届四中全会精神.pptx VIP
- 2024年上海杉达学院单招综合素质考试试题及答案解析.docx VIP
- 2023年上海杉达学院单招综合素质考试试题及答案解析.docx VIP
- 2024 年向量数据库与 RAG 落地思考与实践.pdf VIP
- 2026年上海杉达学院单招综合素质考试备考题库及答案解析.docx VIP
- 2026年上海杉达学院单招综合素质考试模拟试题及答案解析.docx VIP
- 2021年整理《百合花》赏析.doc VIP
- SelfCookingCenter操作说明书原件-Rational.PDF VIP
- 2025人武专干考试历年真题及答案.doc VIP
原创力文档

文档评论(0)