实验二 语法分析
一、 实验目的
编制一个递归下降分析程序,加深对语法分析程序原理的理解。
二、 实验要求
1.待分析的简单语言的语法
用扩充的 EBNF 表示如下:
<程序块>::= begin <语句>{;<语句>} end.
<语句>::= <赋值语句>|<条件语句>|<循环语句>
<赋值语句>::= IDENT:=<表达式>
<条件语句>::= if <条件> then <语句>
<循环语句>::= while <条件> do <语句>
<表达式>::= [+|-]<项>{(+|-)<项>}
<项>::= <因子>{(*|/)<因子>}
<因子>::= IDENT | NUMBER |‘(’<表达式>‘)’
<条件>::= <表达式><关系运算符><表达式>
<关系运算符>::= <>|=|<|<=|>|>=
2. 实验要求说明
输入单词串,以“.”结束,如果是文法正确的句子,则输出成功信息,否则输出失败信
息,指出错误原因。需要系统地规划错误码。 例如:
输入 begin a:=2*3 end.
输出 syntax parses success!
输入 begin x=4 end.
输出 Error 11: 没有检测到赋值语句的:=符号
输入 begin x:=2;while x>0 do if x/2=0 then x:=(x/2) end.
输出 syntax parses success!
3. 语法分析设计说明
采用递归下降分析程序。为每个非终结符编写一个子过程。
实验结果: