2024年5月25日发(作者:)
信息商务学院实验报告
课 程: 编译原理
实验名称: 递归下降分析
学 号: ************
* 名: ***
指导老师: ***
日 期:2014年5月13日
实验二 递归下降分析法
一、实验目的和要求
1. 根据某一文法编制递归下降分析程序,以便对任意输入的符号串进行分
析。
2. 本次实验的目的是加深对递归下降分析法的理解。
二、实验内容
(1)功能描述
对下列文法,用递归下降分析法对任意输入的符号串进行分析,看是否能匹
配成功:
(1)E→TG
(2)G→+TG|-TG
(3)G→ε
(4)T→FS
(5)S→*FS|/FS
(6)S→ε
(7)F→(E)
(8)F→i
(2)程序结构描述
本程序的实现方法主要就是函数的递归调用,在程序前面先对文法中所涉及
到的非终结符对应的函数进行声明,以免在用到的时候提示函数无声明的错误提
示,程序从开始符E开始,根据文法,E可以推出T和G,就在函数E()中调用
T()和G(),其他的也是类似,这属于文法中只涉及到非终结符;遇到有终结符
的情况则不同,想函数G(),因为G可以推出+TG或者-TG,所以在函数G()中,
要分两种情况,先判断当前的字符是否是+,是则调用T()和G(),如果当前字符
为-,就调用T()和G(),否则就是ε字符;按照这种方法,把文法所涉及到的非
终结符都写成对应的函数,并正确调用其他函数。等所有的函数都描述之后就在
mian()里判断当前字符是否分析到结束符#,是则说明此字符串是合法字符,否
则说明此字符串为不合法字符。
(3)程序部分代码
#include
#include
#include
FILE *fp;
char ch;
#define N 20
char string[N];
char *p;
void E();
void T();


发布评论