现在的位置: 首页 > 综合 > 正文

递归下降分析法

2013年02月17日 ⁄ 综合 ⁄ 共 666字 ⁄ 字号 评论关闭

各类参看书都会给的一个例子:

LL(0)文法

 G[E]:            其中

E→TG           G为E’

G→+TG|∧    ∧为ε

T→FS           S为T’

S→*FS|∧

F→i|(E)

        递归向分析法为每一个非终结符建立相应的子程序,然后模拟语法树自动向下推倒,在推倒过程中遇到终结符则检查是否匹配,遇到非终结符则调用相应的子程序处理。

读入一个以#结尾的符号串s,指针k初始化指向s[0];

递归的框架:

E:调用T ; 调用G; return;

G:if (s[k]=='+')  {++k; 调用T ; 调用G; return;}

               else  return;    //推出空自动匹配

T:调用F; 调用S; return;

S:if (s[k]=='*')   {++k; 调用F; 调用S; return;}

               else  return;    //推出空自动匹配

F:if (s[k]=='i')    {++k; return;}

               else  if (s[k]=='(') { ++k;调用T;if (s[k]==')') {++k; return;}

                                                                                 else    error;

                                  else error   

  在递归过程中加上必要推导输出信息即可完成分析程序。

 

抱歉!评论已关闭.