语法分析 一、实验目的 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析
二、实验要求 利用C 语言编制递归下降分析程序,并对简单语言进行语法分析
1 待分析的简单语言的语法 用扩充的BNF 表示如下: ⑴::=beginend ⑵::={;} ⑶::= ⑷::=ID:= ⑸::={+ | -} ⑹::={* | / ⑺::=ID | NUM | () 2
2 实验要求说明 输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“success”,否则输出“error”
例如: 输入 begin a:=9; x:=2*3; b:=a+x end # 输出 success
输入 x:=a+b*c end # 输出 error 2
3 语法分析程序的酸法思想 (1)主程序示意图如图 2-1 所示
图 2-1 语法分析主程序示意图 置初值 调用scaner 读下一个单词符号 调用lrparser 结束 (2)递归下降分析程序示意图如图2-2 所示
(3)语句串分析过程示意图如图2-3 所示
否 是 否 是 否 是 否 图2-3 语句串分析示意图 是 图2-2 递归下降分析程序示意图 (4)statement 语句分析程序流程如图2-4、2-5、2-6、2-7 所示
否 否 否 是 是否begin
调用 scaner 调用语句串分析程序 是否end
调用 scaner sy n=0&&kk=0
打印分析成功 出错处理 调用 statement 函数 是否 ;
调用 scaner 调用 statement 函数 出错处理 是否标识符
调用 scaner 是否:=
调用 scaner 调用 ex pression 函数 出错处理 调用 term 函数 是否+ , -
调用 scaner 调用 term 函数