实验2 语法分析
一、 实验目的
编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析。
二、 实验内容
利用C语言编制递归下降分析程序,并对简单语言进行语法分析。
1、 待分析的简单语言的语法
用扩充的BNF表示如下:
(1)::=beginend
(2)::={;}
(3)::=
(4)::=ID:=
(5)::={+|-}
(6)::={*|/}
(7)::=ID| NUM|()
2、实验要求说明
输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“success”,否则输出“error”。
三、 结果验证
1. 输入:begin_a:=9;_x:=2*3;_b:=a+x_end#
输出:success!
2. 分别验证其他错误(至少2个)
四、 语法分析程序的源程序代码
#include
#include
#include
char prog[80],token[8];
char ch;
int syn,p,m=0,n,sum=0,kk; //p是缓冲区prog的指针,m是token的指针
char *rwtab[6]={"begin","if","then","while","do","end"};
void scaner();
void factor();
void term();
void expression();
void statement();
#include
#include
#include
char prog[80],token[8];
char ch;
int syn,p,m=0,n,sum=0; //p是缓冲区prog的指针,m是token的指针
char *rwtab[6]={"begin","if","then","while","do","end"};
void scaner()
{
同实验一代码
}
void factor()
{
…完成函数代码
}
void term()
{
……完成函数代码
}
void expression()
{
……完成函数代码
}
void statement()
{//cout |