洛阳理工学院计算机与信息工程系
实 验 报 告
日期:
2011
年
5
月
10
日
学号 B08050 423 班级 B080504 姓名 陈志福
课程 编译原理 实验
成绩
实验名称 语法分析器
一 实验目的
编制一个递归下降分析程序 , 实现对词法分析程序所提供的单词序列的语法检查和结
构分析。
二 实验要求
利用 C 语言编制递归下降分析程序,并对简单语言进行语法分析。
待分析的简单语言的语法:
用扩充的 BNF 表示如下:
< 程序 >::=begin< 语言串 >end
< 语言串 >::=< 语句 >{;< 语句 >}
< 语句 >::=< 赋值语句 >
< 赋值语句 >::=ID:= < 表达式 >
< 表达式 >::=< 项 >{+< 项 >|-< 项 >}
< 项 >::=< 因子 >{*< 因子 >|/< 因子 >}
< 因子 >::=ID|NUM|(< 表达式 >)
实验要求说明:
输入单词串 , 以 ” # ” 结束 , 如果是正确的文法句子 , 则输出成功信息 , 打印 “ success ” ,
否则输出 “ error ” 。
三 实验内容
代码如下 :
#include<stdio.h>
#include<iostream.h>
#include<string.h>
#define MAX 150 // 词法分析表的最大容量
#define MAXBUF 255// 缓冲区的最大缓冲量
void term();
void lrparser();
void statement();
void yucu();
void expression();
void factor();
char prog[MAXBUF],token[MAX];
char ch;
int syn,p,m,n,sum,kk;
char *rwtab[6]={"begin","if","then","while","do","end"};
void scaner()
{
for(m=0;m<MAX;m++)