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();