【软考】递归下降分析法

1. 说明
  • 1.递归下降分析法(Recursive-Descent Parsing)是一种自顶向下语法分析方法,它直接对应于文法的最左推导。
  • 2.为文法中的每个非终结符编写一个过程(或函数),这些过程根据文法的产生式来递归地调用彼此,以尝试匹配输入符号串。
2. 工作原理
  • 1.起始过程:分析从与文法开始符号对应的过程(或函数)开始。
  • 2.匹配规则:每个过程都尝试根据对应的文法产生式来匹配输入。这通常涉及到读取输入符号,并与产生式中的终结符或非终结符进行比较。
  • 3.递归调用:如果产生式包含非终结符,则当前过程会递归地调用与该非终结符对应的过程。
  • 4.回溯:在某些情况下,如果当前产生式无法匹配输入,则可能需要回溯到之前的某个点,尝试另一条产生式。然而,在纯粹的递归下降分析中,通常通过设计无二义性的文法来避免回溯,如LL(1)文法。
3. 优点
  • 1.直观性:递归下降分析法的实现直观,与文法的结构紧密对应。
  • 2.灵活性:在解析过程中可以方便地插入语义动作,如类型检查、代码生成等。
  • 3.易于实现:对于简单的文法,递归下降分析法的实现相对简单。
4. 缺点
  • 1.回溯问题:虽然可以通过设计无二义性的文法来避免回溯,但在某些情况下,可能需要额外的机制来处理回溯。
  • 2.效率问题:对于复杂的文法或大型输入,递归调用可能会导致效率问题,如栈溢出或不必要的重复计算。
  • 3.文法限制:递归下降分析法通常要求文法是无二义性的,并且满足某些特定的条件(如LL(1)文法),这可能会限制文法的表达能力。
5. 例题
5.1 例题1
  • 1.题目
1.递归下降分析方法是一种(B)方法。
A.自底向上的语法分析
B.自上而下的语法分析
C.自底向上的词法分析
D.自上而下的词法分析
  • 2.分析
1.递归下降法(recursive descent method),是指对文法的每一非终结符号,都根据相应产生式各候选式的结构,
为其编写一个子程序(或函数),用来识别该非终结符号所表示的语法范畴。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王佑辉

老板,赏点吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值