编译原理实验报告(语法分析器)Word格式文档下载.docx

上传人:b****1 文档编号:13099494 上传时间:2022-10-05 格式:DOCX 页数:13 大小:52.16KB
下载 相关 举报
编译原理实验报告(语法分析器)Word格式文档下载.docx_第1页
第1页 / 共13页
编译原理实验报告(语法分析器)Word格式文档下载.docx_第2页
第2页 / 共13页
编译原理实验报告(语法分析器)Word格式文档下载.docx_第3页
第3页 / 共13页
编译原理实验报告(语法分析器)Word格式文档下载.docx_第4页
第4页 / 共13页
编译原理实验报告(语法分析器)Word格式文档下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

编译原理实验报告(语法分析器)Word格式文档下载.docx

《编译原理实验报告(语法分析器)Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《编译原理实验报告(语法分析器)Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。

编译原理实验报告(语法分析器)Word格式文档下载.docx

E’->

+TE’|空

T->

FT’

T’->

*FT’|空F->

i|(E)

递归子程序法:

首先计算出五个非终结符的first集合follow集,然后根据五个产生式定义了五个函数。

定义字符数组vocabulary来存储输入的句子,字符指针ch指向vocabulary。

从非终结符E函数出发,如果首字符属于E的first集,则依次进入T函数和E’函数,开始递归调用。

在每个函数中,都要判断指针所指字符是否属于该非终结符的first集,属于则根据产生式进入下一个函数进行调用,若first集中有空字符,还要判断是否属于该非终结符的follow集。

以分号作为结束符。

二、实现代码

头文件shiyan3.h

#include<

iostream>

#include<

cstdio>

string>

usingnamespacestd;

#definenum100

charvocabulary[num];

char*ch;

voidjudge_E();

voidjudge_EE();

voidjudge_T();

voidjudge_TT();

voidjudge_F();

源文件#include"

shiyan3.h"

voidjudge_E()

{

if(*ch=='

;

'

cout<

<

"

该句子符合此文法!

endl;

inta=0;

按1结束程序"

cin>

>

a;

if(a==1)

exit(0);

}

else

('

||*ch=='

i'

judge_T();

judge_EE();

该句子不匹配此文法!

inta=0;

if(a==1)exit(0);

voidjudge_EE()

+'

ch++;

judge_T();

#'

)'

)return;

voidjudge_T()

judge_F();

judge_TT();

voidjudge_TT()

cin>

if(a==1)

*'

judge_F();

voidjudge_F()

judge_E();

if(*ch=='

//cout<

*ch;

voidmain()

//char*ch;

cout<

*******************欢**迎*

************************"



使用语法分析器

请输入一个句子:

cin.getline(vocabulary,15);

ch=vocabulary;

judge_E();

*********************结**束*使用,再见!

**************************"

三、运行结果

四、心得体会

此次实验使用的是递归子程序法,用这个方法最大的问题就是函数里的递归调用,一不小心就把人绕糊涂了。

所以在写的时候注意力需十分集中。

虽然在函数的实际调用过程中比较复杂,但是只要理清思路,在编写代码时,根据产生式来判断调用,每个部分都相对简单一点。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1