You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译设计技术问询:表达式文法中产生式8的三阶递归解析

关于《Compiler Design in C》中产生式8的三阶递归解释

首先明确三阶递归的核心判定逻辑:若从某个非终结符X出发,经过3次产生式推导后,结果中再次出现X,就构成三阶递归(推导链长度为3,中间经过2个非终结符的替换)。

结合书中常见的简单表达式文法,产生式8通常是Factor → ( Expr ),再配合关联的另外两个产生式:

  • 产生式1:Expr → Term
  • 产生式7:Term → Factor * Term

我们可以通过具体推导步骤验证:

  1. 第一步推导:用产生式1,将Expr替换为Term → 得到Term
  2. 第二步推导:用产生式7,将Term替换为Factor * Term → 得到Factor * Term
  3. 第三步推导:用产生式8,将Factor替换为( Expr ) → 得到( Expr ) * Term

此时能看到,经过3步推导后,起始非终结符Expr再次出现在结果中。整个递归链以Expr为起点,经过Term、Factor两个中间非终结符过渡,最终通过产生式8回到Expr,这就是产生式8属于三阶递归的原因。

举个具象的例子,推导带括号的表达式(a+b)*c时,推导链的开头就是上述三阶递归过程:
Expr → Term → Factor * Term → ( Expr ) * Term → 后续继续展开Expr就能得到具体表达式。

内容的提问来源于stack exchange,提问作者yapkm01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:18:11