《编译原理》 实验报告 2008 年11 月20 日 姓名 孙丽君 班 级 06 行知计算机网络技术 学 号 06202135 课程 名称 编译原理 实验项目名 称 语法分析 指导教师 郑豪 一、实验目的: 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析
利用C 语言编制递归下降分析程序,并对简单语言进行语法分析
二、实验原理(可以流程图的形式出现,加以文字说明) 1.待分析的简单语言的语法 2.用扩充的BNF 表示如下: (1)::=beginend (2)::={;} (3)::= (4)::=ID:= (5)::={+ | —项>} (6)::={* | /} (7)::=ID | NUM | () 3.实验要求说明 输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“success”,否则输出“error”
例如: 置初值调用scaner读下一个单词符号调用lrParser结束 图c
3 语法分析主程序示意图 输入 begin a:=9;x:=2*3;b:=a+x end # 输出success 输入 x:=a+b*c end # 输出 error 4.语法分析程序的算法思想 (1) 主程序示意图如图C
(2) 递归下降分析程序示意图如图C
(3) 语句串分析过程示意图如图C
(4) statement 语句分析函数流程如图C
是否begin
是否调用scaner调用语句串分析函数是否end
调用scanersy n=0&&kk=0
打印分析成功否是出错处理是 图c
4 递归下降分析程序示意图 否是调用statement函数是否;
调用scaner调用statement函数出错处理 图c
5 语句串分析示意图 是 否 是 图c
6state