递归下降分析法

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

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   

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

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值