注:前言、目录见 https://blog.csdn.net/qq_44220418/article/details/108428971

文章目录

  • 三、文法和语言的分类
    • 1、Chomsky语言分类法
      • (1).0型文法
      • (2).1型文法
      • (3).2型文法
      • (4).3型文法
      • (5).举例
  • 四、语法树与句型分析
    • 1、语法树(语法分析树)
      • (1).语法树
      • (2).推导⟷语法树
      • (3).最左推导/最右推导
      • (4).二义性
    • 2、句型分析
      • (1).句型分析
      • (2).分析技术
    • 3、句型分析的基本问题
      • (1).基本问题
      • (2).句柄

三、文法和语言的分类

1、Chomsky语言分类法

(1).0型文法

对文法G\text{G}G,若 P\text{P}P 中规则都具有下列形式: α→βα→βα→β
其中,{α∈V∗,且至少含有一个非终结符(强调α不能为空串)β∈V∗其中,\begin{cases} α ∈ \text{V}^*,且至少含有一个非终结符\pmb{\color{AA66FF}(强调α不能为空串)} \\ β ∈ \text{V}^* \end{cases}其中,{α∈V∗,且至少含有一个非终结符(强调α不能为空串)(强调α不能为空串)(强调α不能为空串)β∈V∗​
则称该文法G\text{G}G 为 (Chomsky)0\pmb{(Chomsky) \; 0}(Chomsky)0​(Chomsky)0​​(Chomsky)0型文法短语结构文法,缩写为PSG\pmb{\text{PSG}}PSGPSGPSG

0\pmb{0}000型文法相应的语言称为0\pmb{0}000型语言短语结构语言,又称 递归可枚举集

(2).1型文法

对文法G\text{G}G,若 P\text{P}P 中规则都具有下列形式: xUy→xuyx\text{U}y → xuyxUy→xuy
其中,{U∈VNx,y∈V∗u∈V+其中,\begin{cases} \text{U} ∈ \text{V}_\text{N} \\ x, y ∈ \text{V}^* \\ u ∈ \text{V}^+ \end{cases}其中,⎩⎪⎨⎪⎧​U∈VN​x,y∈V∗u∈V+​
则称该文法G\text{G}G 为 (Chomsky)1\pmb{(Chomsky) \; 1}(Chomsky)1​(Chomsky)1​​(Chomsky)1型文法上下文有关文法(上下文敏感文法),缩写为CSG\pmb{\text{CSG}}CSGCSGCSG
其中的 x\pmb{x}xxx 即为上文, y\pmb{y}y​y​​y 即为下文

1\pmb{1}111型文法相应的语言称为1\pmb{1}111型语言上下文有关语言

(3).2型文法

对文法G\text{G}G,若 P\text{P}P 中规则都具有下列形式: α→βα→βα→β
其中,{α∈VNβ∈V∗其中,\begin{cases} α ∈ \text{V}_\text{N} \\ β ∈ \text{V}^* \\ \end{cases}其中,{α∈VN​β∈V∗​
则称该文法G\text{G}G 为 (Chomsky)2\pmb{(Chomsky) \; 2}(Chomsky)2​(Chomsky)2​​(Chomsky)2型文法上下文无关文法,缩写为CFG\pmb{\text{CFG}}CFGCFGCFG

2\pmb{2}222型文法相应的语言称为2\pmb{2}222型语言上下文无关语言

大多数程序设计语言的文法是上下文无关的

(4).3型文法

对文法G\text{G}G,若 P\text{P}P 中规则都具有下列形式: A→a或A→Ba‾(左线性)或A→a或A→aB‾(右线性)\begin{aligned} \text{A}→ a \; 或 \; & \underline{\text{A} → \text{B}a} \\ & (\pmb{左线性}) \end{aligned} \quad \pmb{或} \quad \begin{aligned} \text{A}→ a \; 或 \; & \underline{\text{A} → a\text{B}} \\ & (\pmb{右线性}) \end{aligned} A→a或​A→Ba​(左线性左线性左线性)​或或或A→a或​A→aB​(右线性右线性右线性)​
其中,{a∈VTA,B∈VN其中,\begin{cases} a ∈ \text{V}_\text{T} \\ \text{A}, \text{B} ∈ \text{V}_\text{N} \\ \end{cases}其中,{a∈VT​A,B∈VN​​
则称该文法G\text{G}G 为 (Chomsky)3\pmb{(Chomsky) \; 3}(Chomsky)3​(Chomsky)3​​(Chomsky)3型文法正则文法(正规文法),又称有穷状态文法,缩写为RG\pmb{\text{RG}}RGRGRG
正则文法按其定义的两种情况可分为左线性文法、右线性文法

3\pmb{3}333型文法相应的语言称为3\pmb{3}333型语言正则语言(正规语言)

Tips:正则文法是我们此后要学习的【词法分析】的基础,本笔记在以后的题目中将统一使用左线性文法(左线性与右线性的形状不一样,有些算法也完全不一样)

(5).举例

示例1\pmb{示例1}示例1示例1示例1
文法G1:=({S,A,B},{a,b,c},P1,S)\quad \quad 文法\text{G}_1 \; : \; = ( \{ \text{S}, \text{A}, \text{B} \}, \{ a, b, c \}, \text{P}_1, \text{S})文法G1​:=({S,A,B},{a,b,c},P1​,S)
其中P1:{S→Bc∣ScB→Ab∣BbA→Aa∣a\quad \quad 其中\text{P}_1 \; : \;\begin{cases} \text{S} → \text{B}c \; | \; \text{S}c \\ \text{B} → \text{A}b \; | \; \text{B}b \\ \text{A} → \text{A}a \; | \; a \\ \end{cases}其中P1​:⎩⎪⎨⎪⎧​S→Bc∣ScB→Ab∣BbA→Aa∣a​

显然,可以看出所有的规则都满足3型文法中左线性文法的定义“A→a或A→Ba”\quad \quad 显然,可以看出所有的规则都满足\pmb{3型文法}中\pmb{左线性文法}的定义“\text{A}→ a \; 或 \; \text{A} → \text{B}a”显然,可以看出所有的规则都满足3型文法3型文法3型文法中左线性文法左线性文法左线性文法的定义“A→a或A→Ba”
所以文法G1是一个3型文法\quad \quad 所以文法\text{G}_1是一个\pmb{3型文法}所以文法G1​是一个3型文法3型文法3型文法

另外,我们还可以推导、归纳出文法G1对应的语言为L1={aibjck∣i,j,k≥1}\quad \quad 另外,我们还可以推导、归纳出文法\text{G}_1对应的语言为\text{L}_1 = \{ a^i b^j c^k \; | \; i, j, k \ge 1 \}另外,我们还可以推导、归纳出文法G1​对应的语言为L1​={aibjck∣i,j,k≥1}


示例2\pmb{示例2}示例2示例2示例2
文法G2:=({S,A},{a,b,c},P2,S)\quad \quad 文法\text{G}_2 \; : \; = ( \{ \text{S}, \text{A} \}, \{ a, b, c \}, \text{P}_2, \text{S})文法G2​:=({S,A},{a,b,c},P2​,S)
其中P2:{S→Ac∣ScA→ab∣aAb\quad \quad 其中\text{P}_2 \; : \;\begin{cases} \text{S} → \text{A}c \; | \; \text{S}c \\ \text{A} → ab \; | \; a\text{A}b \\ \end{cases}其中P2​:{S→Ac∣ScA→ab∣aAb​

P2中规则“A→aAb”不满足3型文法的定义“A→a或A→Ba”或“A→a或A→aB”\quad \quad \text{P}_2中规则“\text{A} → a\text{A}b”不满足\pmb{3型文法}的定义“\text{A}→ a \; 或 \; \text{A} → \text{B}a”或“\text{A}→ a \; 或 \; \text{A} → a\text{B}”P2​中规则“A→aAb”不满足3型文法3型文法3型文法的定义“A→a或A→Ba”或“A→a或A→aB”
(右部aAb不符合定义中的三种格式之一:{a,Ba,aB})\quad \quad (右部a\text{A}b不符合定义中的三种格式之一:\{ a, \text{B}a, a\text{B} \})(右部aAb不符合定义中的三种格式之一:{a,Ba,aB})
所以文法G2不是一个3型文法\quad \quad 所以文法\text{G}_2不是一个\pmb{3型文法}所以文法G2​不是一个3型文法3型文法3型文法

可以看出所有的规则都满足2型文法的定义“α→β({α∈VNβ∈V∗)”\quad \quad 可以看出所有的规则都满足\pmb{2型文法}的定义“α→β \; \left( \begin{cases} α ∈ \text{V}_\text{N} \\ β ∈ \text{V}^* \\ \end{cases} \right)”可以看出所有的规则都满足2型文法2型文法2型文法的定义“α→β({α∈VN​β∈V∗​)”
所以文法G2是一个2型文法\quad \quad 所以文法\text{G}_2是一个\pmb{2型文法}所以文法G2​是一个2型文法2型文法2型文法

另外,我们还可以推导、归纳出文法G2对应的语言为L2={aibick∣i,k≥1}\quad \quad 另外,我们还可以推导、归纳出文法\text{G}_2对应的语言为\text{L}_2 = \{ a^i b^i c^k \; | \; i, k \ge 1 \}另外,我们还可以推导、归纳出文法G2​对应的语言为L2​={aibick∣i,k≥1}


示例3\pmb{示例3}示例3示例3示例3
文法G3:=({S,B,C,D},{a,b,c},P3,S)\quad \quad 文法\text{G}_3 \; : \; = ( \{ \text{S}, \text{B}, \text{C}, \text{D} \}, \{ \text{a}, \text{b}, \text{c} \}, \text{P}_3, \text{S})文法G3​:=({S,B,C,D},{a,b,c},P3​,S)
其中P3:{S→aSBC∣abcCB→CDCD→BDBD→BCbB→bbbC→bccC→cc\quad \quad 其中\text{P}_3 \; : \;\begin{cases} \text{S} → \text{aSBC} \; | \; \text{abc} \\ \text{CB} → \text{CD} \\ \text{CD} → \text{BD} \\ \text{BD} → \text{BC} \\ \text{bB} → \text{bb} \\ \text{bC} → \text{bc} \\ \text{cC} → \text{cc} \\ \end{cases}其中P3​:⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​S→aSBC∣abcCB→CDCD→BDBD→BCbB→bbbC→bccC→cc​

P3中规则“CB→CD”不满足3型文法的定义“A→a或A→Ba”或“A→a或A→aB”\quad \quad \text{P}_3中规则“\text{CB} → \text{CD}”不满足\pmb{3型文法}的定义“\text{A}→ a \; 或 \; \text{A} → \text{B}a”或“\text{A}→ a \; 或 \; \text{A} → a\text{B}”P3​中规则“CB→CD”不满足3型文法3型文法3型文法的定义“A→a或A→Ba”或“A→a或A→aB”
(3型文法的定义要求规则的右部必须包含终结符)\quad \quad (\pmb{3型文法}的定义要求规则的右部必须包含终结符)(3型文法3型文法3型文法的定义要求规则的右部必须包含终结符)
所以文法G3不是一个3型文法\quad \quad 所以文法\text{G}_3不是一个\pmb{3型文法}所以文法G3​不是一个3型文法3型文法3型文法

P3中规则“CB→CD”不满足2型文法的定义“α→β({α∈VNβ∈V∗)”\quad \quad \text{P}_3中规则“\text{CB} → \text{CD}”不满足\pmb{2型文法}的定义“α→β \; \left( \begin{cases} α ∈ \text{V}_\text{N} \\ β ∈ \text{V}^* \\ \end{cases} \right)”P3​中规则“CB→CD”不满足2型文法2型文法2型文法的定义“α→β({α∈VN​β∈V∗​)”

(2型文法的定义只允许规则的左部为单个非终结符)\quad \quad (\pmb{2型文法}的定义只允许规则的左部为单个非终结符)(2型文法2型文法2型文法的定义只允许规则的左部为单个非终结符)
所以文法G3不是一个2型文法\quad \quad 所以文法\text{G}_3不是一个\pmb{2型文法}所以文法G3​不是一个2型文法2型文法2型文法

可以看出所有的规则都满足1型文法的定义“xUy→xuy({U∈VNx,y∈V∗u∈V+)”\quad \quad 可以看出所有的规则都满足\pmb{1型文法}的定义“x\text{U}y → xuy \; \left( \begin{cases} \text{U} ∈ \text{V}_\text{N} \\ x, y ∈ \text{V}^* \\ u ∈ \text{V}^+ \end{cases} \right)”可以看出所有的规则都满足1型文法1型文法1型文法的定义“xUy→xuy⎝⎜⎛​⎩⎪⎨⎪⎧​U∈VN​x,y∈V∗u∈V+​⎠⎟⎞​”
(规则P3:{S→aSBCx=ε,y=ε,U=S,u=aSBCS→abcx=ε,y=ε,U=S,u=abcCB→CDx=C,y=ε,U=B,u=DCD→BDx=ε,y=D,U=C,u=BBD→BCx=ε,y=ε,U=D,u=CbB→bbx=b,y=ε,U=B,u=bbC→bcx=b,y=ε,U=C,u=ccC→ccx=c,y=ε,U=C,u=c)\quad \quad (规则\text{P}_3 \; : \;\begin{cases} \text{S} → \text{aSBC} & x = \text{ε}, y=\text{ε}, \text{U} = \text{S}, u = \text{aSBC} \\ \text{S} → \text{abc} & x = \text{ε}, y=\text{ε}, \text{U} = \text{S}, u = \text{abc} \\ \text{CB} → \text{CD} & x = \text{C}, y=\text{ε}, \text{U} = \text{B}, u = \text{D} \\ \text{CD} → \text{BD} & x = \text{ε}, y=\text{D}, \text{U} = \text{C}, u = \text{B} \\ \text{BD} → \text{BC} & x = \text{ε}, y=\text{ε}, \text{U} = \text{D}, u = \text{C} \\ \text{bB} → \text{bb} & x = \text{b}, y=\text{ε}, \text{U} = \text{B}, u = \text{b} \\ \text{bC} → \text{bc} & x = \text{b}, y=\text{ε}, \text{U} = \text{C}, u = \text{c} \\ \text{cC} → \text{cc} & x = \text{c}, y=\text{ε}, \text{U} = \text{C}, u = \text{c} \\ \end{cases})(规则P3​:⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​S→aSBCS→abcCB→CDCD→BDBD→BCbB→bbbC→bccC→cc​x=ε,y=ε,U=S,u=aSBCx=ε,y=ε,U=S,u=abcx=C,y=ε,U=B,u=Dx=ε,y=D,U=C,u=Bx=ε,y=ε,U=D,u=Cx=b,y=ε,U=B,u=bx=b,y=ε,U=C,u=cx=c,y=ε,U=C,u=c​)
所以文法G3是一个1型文法\quad \quad 所以文法\text{G}_3是一个\pmb{1型文法}所以文法G3​是一个1型文法1型文法1型文法

另外,我们还可以推导、归纳出文法G3对应的语言为L3={aibici∣i≥1}\quad \quad 另外,我们还可以推导、归纳出文法\text{G}_3对应的语言为\text{L}_3 = \{ a^i b^i c^i \; | \; i \ge 1 \}另外,我们还可以推导、归纳出文法G3​对应的语言为L3​={aibici∣i≥1}


示例4\pmb{示例4}示例4示例4示例4
文法G4:=({S,A,B,C,D,E},{a},P4,S)\quad \quad 文法\text{G}_4 \; : \; = ( \{ \text{S}, \text{A}, \text{B}, \text{C}, \text{D}, \text{E} \}, \{ \text{a} \}, \text{P}_4, \text{S})文法G4​:=({S,A,B,C,D,E},{a},P4​,S)
其中P4:{S→AcaBCa→aaCCB→DB∣EaD→DaAD→ACaE→EaAE→ε\quad \quad 其中\text{P}_4 \; : \;\begin{cases} \text{S} → \text{AcaB} \\ \text{Ca} → \text{aaC} \\ \text{CB} → \text{DB} \; | \; \text{E} \\ \text{aD} → \text{Da} \\ \text{AD} → \text{AC} \\ \text{aE} → \text{Ea} \\ \text{AE} → \text{ε} \\ \end{cases}其中P4​:⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​S→AcaBCa→aaCCB→DB∣EaD→DaAD→ACaE→EaAE→ε​

P4中规则“AE→ε”不满足3型文法和1型文法的定义\quad \quad \text{P}_4中规则“\text{AE} → \text{ε}”不满足\pmb{3型文法}和\pmb{1型文法}的定义P4​中规则“AE→ε”不满足3型文法3型文法3型文法和1型文法1型文法1型文法的定义
(3型文法和1型文法的定义不允许规则的右部为ε)\quad \quad (\pmb{3型文法}和\pmb{1型文法}的定义不允许规则的右部为\text{ε})(3型文法3型文法3型文法和1型文法1型文法1型文法的定义不允许规则的右部为ε)
所以文法G4不是一个3型文法和1型文法\quad \quad 所以文法\text{G}_4不是一个\pmb{3型文法}和\pmb{1型文法}所以文法G4​不是一个3型文法3型文法3型文法和1型文法1型文法1型文法

P4中规则“Ca→aaC”不满足2型文法的定义“α→β({α∈VNβ∈V∗)”\quad \quad \text{P}_4中规则“\text{Ca} → \text{aaC}”不满足\pmb{2型文法}的定义“α→β \; \left( \begin{cases} α ∈ \text{V}_\text{N} \\ β ∈ \text{V}^* \\ \end{cases} \right)”P4​中规则“Ca→aaC”不满足2型文法2型文法2型文法的定义“α→β({α∈VN​β∈V∗​)”

(2型文法的定义只允许规则的左部为单个非终结符)\quad \quad (\pmb{2型文法}的定义只允许规则的左部为单个非终结符)(2型文法2型文法2型文法的定义只允许规则的左部为单个非终结符)
所以文法G4不是一个2型文法\quad \quad 所以文法\text{G}_4不是一个\pmb{2型文法}所以文法G4​不是一个2型文法2型文法2型文法

可以看出所有的规则都满足0型文法的定义“α→β({α∈V∗且至少包含一个非终结符β∈V∗)”\quad \quad 可以看出所有的规则都满足\pmb{0型文法}的定义“α→β \; \left( \begin{cases} α ∈ \text{V}^*且至少包含一个非终结符 \\ β ∈ \text{V}^* \\ \end{cases} \right)”可以看出所有的规则都满足0型文法0型文法0型文法的定义“α→β({α∈V∗且至少包含一个非终结符β∈V∗​)”
所以文法G4是一个0型文法\quad \quad 所以文法\text{G}_4是一个\pmb{0型文法}所以文法G4​是一个0型文法0型文法0型文法

另外,我们还可以推导、归纳出文法G4对应的语言为L4={a2i∣i≥1}\quad \quad 另外,我们还可以推导、归纳出文法\text{G}_4对应的语言为\text{L}_4 = \{ a^{2^i} \; | \; i \ge 1 \}另外,我们还可以推导、归纳出文法G4​对应的语言为L4​={a2i∣i≥1}

四、语法树与句型分析

1、语法树(语法分析树)

(1).语法树

语法树
语法树就是按照某一规则进行推导时所形成的树
其具有如下性质:

  • 根结点是文法的开始符
  • 每个结点都是文法G\text{G}G的某一终结符或非终结符
  • 若某一结点有至少一个子结点,则该结点一定是非终结符
  • 若某一结点A\text{A}A有nnn个子结点B1,B2,…,Bn\text{B}_1, \text{B}_2, \dots, \text{B}_nB1​,B2​,…,Bn​,则必有规则A→B1B2⋯Bn\text{A} → \text{B}_1 \text{B}_2 \cdots \text{B}_nA→B1​B2​⋯Bn​
子树
子树就是某个结点连同它向下射出的部分
简单子树
简单子树就是只含有单层分支的子树
eg:\pmb{eg:}eg:​eg:​​eg:
设有文法G[S]:{S→aABA→Ba∣aB→bd设有文法 \text{G}[\text{S}] \; : \;\begin{cases} \text{S} → a\text{AB} \\ \text{A} → \text{B}a \; | \; a \\ \text{B} → bd \\ \end{cases}设有文法G[S]:⎩⎪⎨⎪⎧​S→aABA→Ba∣aB→bd​
根据推导序列S⇒aAB⇒aBaB⇒abdaB根据推导序列 \text{S} \Rightarrow a\text{AB} \Rightarrow a\text{B}a\text{B} \Rightarrow abda\text{B}根据推导序列S⇒aAB⇒aBaB⇒abdaB,可作出语法树如下:
#mermaid-svg-P4DfnAgy5BjBf736 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-P4DfnAgy5BjBf736 .label text{fill:#333}#mermaid-svg-P4DfnAgy5BjBf736 .node rect,#mermaid-svg-P4DfnAgy5BjBf736 .node circle,#mermaid-svg-P4DfnAgy5BjBf736 .node ellipse,#mermaid-svg-P4DfnAgy5BjBf736 .node polygon,#mermaid-svg-P4DfnAgy5BjBf736 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-P4DfnAgy5BjBf736 .node .label{text-align:center;fill:#333}#mermaid-svg-P4DfnAgy5BjBf736 .node.clickable{cursor:pointer}#mermaid-svg-P4DfnAgy5BjBf736 .arrowheadPath{fill:#333}#mermaid-svg-P4DfnAgy5BjBf736 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-P4DfnAgy5BjBf736 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-P4DfnAgy5BjBf736 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-P4DfnAgy5BjBf736 .edgeLabel rect{opacity:0.9}#mermaid-svg-P4DfnAgy5BjBf736 .edgeLabel span{color:#333}#mermaid-svg-P4DfnAgy5BjBf736 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-P4DfnAgy5BjBf736 .cluster text{fill:#333}#mermaid-svg-P4DfnAgy5BjBf736 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-P4DfnAgy5BjBf736 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-P4DfnAgy5BjBf736 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-P4DfnAgy5BjBf736 .actor-line{stroke:grey}#mermaid-svg-P4DfnAgy5BjBf736 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-P4DfnAgy5BjBf736 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-P4DfnAgy5BjBf736 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-P4DfnAgy5BjBf736 .sequenceNumber{fill:#fff}#mermaid-svg-P4DfnAgy5BjBf736 #sequencenumber{fill:#333}#mermaid-svg-P4DfnAgy5BjBf736 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-P4DfnAgy5BjBf736 .messageText{fill:#333;stroke:#333}#mermaid-svg-P4DfnAgy5BjBf736 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-P4DfnAgy5BjBf736 .labelText,#mermaid-svg-P4DfnAgy5BjBf736 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-P4DfnAgy5BjBf736 .loopText,#mermaid-svg-P4DfnAgy5BjBf736 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-P4DfnAgy5BjBf736 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-P4DfnAgy5BjBf736 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-P4DfnAgy5BjBf736 .noteText,#mermaid-svg-P4DfnAgy5BjBf736 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-P4DfnAgy5BjBf736 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-P4DfnAgy5BjBf736 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-P4DfnAgy5BjBf736 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-P4DfnAgy5BjBf736 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-P4DfnAgy5BjBf736 .section{stroke:none;opacity:0.2}#mermaid-svg-P4DfnAgy5BjBf736 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-P4DfnAgy5BjBf736 .section2{fill:#fff400}#mermaid-svg-P4DfnAgy5BjBf736 .section1,#mermaid-svg-P4DfnAgy5BjBf736 .section3{fill:#fff;opacity:0.2}#mermaid-svg-P4DfnAgy5BjBf736 .sectionTitle0{fill:#333}#mermaid-svg-P4DfnAgy5BjBf736 .sectionTitle1{fill:#333}#mermaid-svg-P4DfnAgy5BjBf736 .sectionTitle2{fill:#333}#mermaid-svg-P4DfnAgy5BjBf736 .sectionTitle3{fill:#333}#mermaid-svg-P4DfnAgy5BjBf736 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-P4DfnAgy5BjBf736 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-P4DfnAgy5BjBf736 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-P4DfnAgy5BjBf736 .grid path{stroke-width:0}#mermaid-svg-P4DfnAgy5BjBf736 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-P4DfnAgy5BjBf736 .task{stroke-width:2}#mermaid-svg-P4DfnAgy5BjBf736 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-P4DfnAgy5BjBf736 .taskText:not([font-size]){font-size:11px}#mermaid-svg-P4DfnAgy5BjBf736 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-P4DfnAgy5BjBf736 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-P4DfnAgy5BjBf736 .task.clickable{cursor:pointer}#mermaid-svg-P4DfnAgy5BjBf736 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-P4DfnAgy5BjBf736 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-P4DfnAgy5BjBf736 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-P4DfnAgy5BjBf736 .taskText0,#mermaid-svg-P4DfnAgy5BjBf736 .taskText1,#mermaid-svg-P4DfnAgy5BjBf736 .taskText2,#mermaid-svg-P4DfnAgy5BjBf736 .taskText3{fill:#fff}#mermaid-svg-P4DfnAgy5BjBf736 .task0,#mermaid-svg-P4DfnAgy5BjBf736 .task1,#mermaid-svg-P4DfnAgy5BjBf736 .task2,#mermaid-svg-P4DfnAgy5BjBf736 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-P4DfnAgy5BjBf736 .taskTextOutside0,#mermaid-svg-P4DfnAgy5BjBf736 .taskTextOutside2{fill:#000}#mermaid-svg-P4DfnAgy5BjBf736 .taskTextOutside1,#mermaid-svg-P4DfnAgy5BjBf736 .taskTextOutside3{fill:#000}#mermaid-svg-P4DfnAgy5BjBf736 .active0,#mermaid-svg-P4DfnAgy5BjBf736 .active1,#mermaid-svg-P4DfnAgy5BjBf736 .active2,#mermaid-svg-P4DfnAgy5BjBf736 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-P4DfnAgy5BjBf736 .activeText0,#mermaid-svg-P4DfnAgy5BjBf736 .activeText1,#mermaid-svg-P4DfnAgy5BjBf736 .activeText2,#mermaid-svg-P4DfnAgy5BjBf736 .activeText3{fill:#000 !important}#mermaid-svg-P4DfnAgy5BjBf736 .done0,#mermaid-svg-P4DfnAgy5BjBf736 .done1,#mermaid-svg-P4DfnAgy5BjBf736 .done2,#mermaid-svg-P4DfnAgy5BjBf736 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-P4DfnAgy5BjBf736 .doneText0,#mermaid-svg-P4DfnAgy5BjBf736 .doneText1,#mermaid-svg-P4DfnAgy5BjBf736 .doneText2,#mermaid-svg-P4DfnAgy5BjBf736 .doneText3{fill:#000 !important}#mermaid-svg-P4DfnAgy5BjBf736 .crit0,#mermaid-svg-P4DfnAgy5BjBf736 .crit1,#mermaid-svg-P4DfnAgy5BjBf736 .crit2,#mermaid-svg-P4DfnAgy5BjBf736 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-P4DfnAgy5BjBf736 .activeCrit0,#mermaid-svg-P4DfnAgy5BjBf736 .activeCrit1,#mermaid-svg-P4DfnAgy5BjBf736 .activeCrit2,#mermaid-svg-P4DfnAgy5BjBf736 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-P4DfnAgy5BjBf736 .doneCrit0,#mermaid-svg-P4DfnAgy5BjBf736 .doneCrit1,#mermaid-svg-P4DfnAgy5BjBf736 .doneCrit2,#mermaid-svg-P4DfnAgy5BjBf736 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-P4DfnAgy5BjBf736 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-P4DfnAgy5BjBf736 .milestoneText{font-style:italic}#mermaid-svg-P4DfnAgy5BjBf736 .doneCritText0,#mermaid-svg-P4DfnAgy5BjBf736 .doneCritText1,#mermaid-svg-P4DfnAgy5BjBf736 .doneCritText2,#mermaid-svg-P4DfnAgy5BjBf736 .doneCritText3{fill:#000 !important}#mermaid-svg-P4DfnAgy5BjBf736 .activeCritText0,#mermaid-svg-P4DfnAgy5BjBf736 .activeCritText1,#mermaid-svg-P4DfnAgy5BjBf736 .activeCritText2,#mermaid-svg-P4DfnAgy5BjBf736 .activeCritText3{fill:#000 !important}#mermaid-svg-P4DfnAgy5BjBf736 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-P4DfnAgy5BjBf736 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-P4DfnAgy5BjBf736 g.classGroup text .title{font-weight:bolder}#mermaid-svg-P4DfnAgy5BjBf736 g.clickable{cursor:pointer}#mermaid-svg-P4DfnAgy5BjBf736 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-P4DfnAgy5BjBf736 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-P4DfnAgy5BjBf736 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-P4DfnAgy5BjBf736 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-P4DfnAgy5BjBf736 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-P4DfnAgy5BjBf736 .dashed-line{stroke-dasharray:3}#mermaid-svg-P4DfnAgy5BjBf736 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-P4DfnAgy5BjBf736 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-P4DfnAgy5BjBf736 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-P4DfnAgy5BjBf736 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-P4DfnAgy5BjBf736 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-P4DfnAgy5BjBf736 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-P4DfnAgy5BjBf736 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-P4DfnAgy5BjBf736 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-P4DfnAgy5BjBf736 .commit-id,#mermaid-svg-P4DfnAgy5BjBf736 .commit-msg,#mermaid-svg-P4DfnAgy5BjBf736 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-P4DfnAgy5BjBf736 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-P4DfnAgy5BjBf736 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-P4DfnAgy5BjBf736 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-P4DfnAgy5BjBf736 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-P4DfnAgy5BjBf736 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-P4DfnAgy5BjBf736 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-P4DfnAgy5BjBf736 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-P4DfnAgy5BjBf736 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-P4DfnAgy5BjBf736 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-P4DfnAgy5BjBf736 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-P4DfnAgy5BjBf736 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-P4DfnAgy5BjBf736 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-P4DfnAgy5BjBf736 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-P4DfnAgy5BjBf736 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-P4DfnAgy5BjBf736 .edgeLabel text{fill:#333}#mermaid-svg-P4DfnAgy5BjBf736 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-P4DfnAgy5BjBf736 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-P4DfnAgy5BjBf736 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-P4DfnAgy5BjBf736 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-P4DfnAgy5BjBf736 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-P4DfnAgy5BjBf736 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-P4DfnAgy5BjBf736 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-P4DfnAgy5BjBf736 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-P4DfnAgy5BjBf736 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-P4DfnAgy5BjBf736 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-P4DfnAgy5BjBf736 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-P4DfnAgy5BjBf736 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-P4DfnAgy5BjBf736 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-P4DfnAgy5BjBf736 .note-edge{stroke-dasharray:5}#mermaid-svg-P4DfnAgy5BjBf736 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-P4DfnAgy5BjBf736 .error-icon{fill:#522}#mermaid-svg-P4DfnAgy5BjBf736 .error-text{fill:#522;stroke:#522}#mermaid-svg-P4DfnAgy5BjBf736 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-P4DfnAgy5BjBf736 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-P4DfnAgy5BjBf736 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-P4DfnAgy5BjBf736 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-P4DfnAgy5BjBf736 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-P4DfnAgy5BjBf736 .marker{fill:#333}#mermaid-svg-P4DfnAgy5BjBf736 .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-P4DfnAgy5BjBf736 .all > * { font-weight: bold !important; fill: transparent !important; stroke: transparent !important; } #mermaid-svg-P4DfnAgy5BjBf736 .all tspan { !important; }#mermaid-svg-P4DfnAgy5BjBf736 {color: rgba(0, 0, 0, 0.75);font: ;}

语法树(S⇒aAB⇒aBaB⇒abdaB)
S
a
A
B
B
a
b
d

该语法树有如下左图的子树,有如下右图的简单子树该语法树有如下左图的子树,有如下右图的简单子树该语法树有如下左图的子树,有如下右图的简单子树
#mermaid-svg-mjvwIaO0fkrTxvmr .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-mjvwIaO0fkrTxvmr .label text{fill:#333}#mermaid-svg-mjvwIaO0fkrTxvmr .node rect,#mermaid-svg-mjvwIaO0fkrTxvmr .node circle,#mermaid-svg-mjvwIaO0fkrTxvmr .node ellipse,#mermaid-svg-mjvwIaO0fkrTxvmr .node polygon,#mermaid-svg-mjvwIaO0fkrTxvmr .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-mjvwIaO0fkrTxvmr .node .label{text-align:center;fill:#333}#mermaid-svg-mjvwIaO0fkrTxvmr .node.clickable{cursor:pointer}#mermaid-svg-mjvwIaO0fkrTxvmr .arrowheadPath{fill:#333}#mermaid-svg-mjvwIaO0fkrTxvmr .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-mjvwIaO0fkrTxvmr .flowchart-link{stroke:#333;fill:none}#mermaid-svg-mjvwIaO0fkrTxvmr .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-mjvwIaO0fkrTxvmr .edgeLabel rect{opacity:0.9}#mermaid-svg-mjvwIaO0fkrTxvmr .edgeLabel span{color:#333}#mermaid-svg-mjvwIaO0fkrTxvmr .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-mjvwIaO0fkrTxvmr .cluster text{fill:#333}#mermaid-svg-mjvwIaO0fkrTxvmr div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-mjvwIaO0fkrTxvmr .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-mjvwIaO0fkrTxvmr text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-mjvwIaO0fkrTxvmr .actor-line{stroke:grey}#mermaid-svg-mjvwIaO0fkrTxvmr .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-mjvwIaO0fkrTxvmr .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-mjvwIaO0fkrTxvmr #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-mjvwIaO0fkrTxvmr .sequenceNumber{fill:#fff}#mermaid-svg-mjvwIaO0fkrTxvmr #sequencenumber{fill:#333}#mermaid-svg-mjvwIaO0fkrTxvmr #crosshead path{fill:#333;stroke:#333}#mermaid-svg-mjvwIaO0fkrTxvmr .messageText{fill:#333;stroke:#333}#mermaid-svg-mjvwIaO0fkrTxvmr .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-mjvwIaO0fkrTxvmr .labelText,#mermaid-svg-mjvwIaO0fkrTxvmr .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-mjvwIaO0fkrTxvmr .loopText,#mermaid-svg-mjvwIaO0fkrTxvmr .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-mjvwIaO0fkrTxvmr .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-mjvwIaO0fkrTxvmr .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-mjvwIaO0fkrTxvmr .noteText,#mermaid-svg-mjvwIaO0fkrTxvmr .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-mjvwIaO0fkrTxvmr .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-mjvwIaO0fkrTxvmr .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-mjvwIaO0fkrTxvmr .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-mjvwIaO0fkrTxvmr .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mjvwIaO0fkrTxvmr .section{stroke:none;opacity:0.2}#mermaid-svg-mjvwIaO0fkrTxvmr .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-mjvwIaO0fkrTxvmr .section2{fill:#fff400}#mermaid-svg-mjvwIaO0fkrTxvmr .section1,#mermaid-svg-mjvwIaO0fkrTxvmr .section3{fill:#fff;opacity:0.2}#mermaid-svg-mjvwIaO0fkrTxvmr .sectionTitle0{fill:#333}#mermaid-svg-mjvwIaO0fkrTxvmr .sectionTitle1{fill:#333}#mermaid-svg-mjvwIaO0fkrTxvmr .sectionTitle2{fill:#333}#mermaid-svg-mjvwIaO0fkrTxvmr .sectionTitle3{fill:#333}#mermaid-svg-mjvwIaO0fkrTxvmr .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mjvwIaO0fkrTxvmr .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-mjvwIaO0fkrTxvmr .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mjvwIaO0fkrTxvmr .grid path{stroke-width:0}#mermaid-svg-mjvwIaO0fkrTxvmr .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-mjvwIaO0fkrTxvmr .task{stroke-width:2}#mermaid-svg-mjvwIaO0fkrTxvmr .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mjvwIaO0fkrTxvmr .taskText:not([font-size]){font-size:11px}#mermaid-svg-mjvwIaO0fkrTxvmr .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mjvwIaO0fkrTxvmr .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-mjvwIaO0fkrTxvmr .task.clickable{cursor:pointer}#mermaid-svg-mjvwIaO0fkrTxvmr .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-mjvwIaO0fkrTxvmr .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-mjvwIaO0fkrTxvmr .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-mjvwIaO0fkrTxvmr .taskText0,#mermaid-svg-mjvwIaO0fkrTxvmr .taskText1,#mermaid-svg-mjvwIaO0fkrTxvmr .taskText2,#mermaid-svg-mjvwIaO0fkrTxvmr .taskText3{fill:#fff}#mermaid-svg-mjvwIaO0fkrTxvmr .task0,#mermaid-svg-mjvwIaO0fkrTxvmr .task1,#mermaid-svg-mjvwIaO0fkrTxvmr .task2,#mermaid-svg-mjvwIaO0fkrTxvmr .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-mjvwIaO0fkrTxvmr .taskTextOutside0,#mermaid-svg-mjvwIaO0fkrTxvmr .taskTextOutside2{fill:#000}#mermaid-svg-mjvwIaO0fkrTxvmr .taskTextOutside1,#mermaid-svg-mjvwIaO0fkrTxvmr .taskTextOutside3{fill:#000}#mermaid-svg-mjvwIaO0fkrTxvmr .active0,#mermaid-svg-mjvwIaO0fkrTxvmr .active1,#mermaid-svg-mjvwIaO0fkrTxvmr .active2,#mermaid-svg-mjvwIaO0fkrTxvmr .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-mjvwIaO0fkrTxvmr .activeText0,#mermaid-svg-mjvwIaO0fkrTxvmr .activeText1,#mermaid-svg-mjvwIaO0fkrTxvmr .activeText2,#mermaid-svg-mjvwIaO0fkrTxvmr .activeText3{fill:#000 !important}#mermaid-svg-mjvwIaO0fkrTxvmr .done0,#mermaid-svg-mjvwIaO0fkrTxvmr .done1,#mermaid-svg-mjvwIaO0fkrTxvmr .done2,#mermaid-svg-mjvwIaO0fkrTxvmr .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-mjvwIaO0fkrTxvmr .doneText0,#mermaid-svg-mjvwIaO0fkrTxvmr .doneText1,#mermaid-svg-mjvwIaO0fkrTxvmr .doneText2,#mermaid-svg-mjvwIaO0fkrTxvmr .doneText3{fill:#000 !important}#mermaid-svg-mjvwIaO0fkrTxvmr .crit0,#mermaid-svg-mjvwIaO0fkrTxvmr .crit1,#mermaid-svg-mjvwIaO0fkrTxvmr .crit2,#mermaid-svg-mjvwIaO0fkrTxvmr .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-mjvwIaO0fkrTxvmr .activeCrit0,#mermaid-svg-mjvwIaO0fkrTxvmr .activeCrit1,#mermaid-svg-mjvwIaO0fkrTxvmr .activeCrit2,#mermaid-svg-mjvwIaO0fkrTxvmr .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-mjvwIaO0fkrTxvmr .doneCrit0,#mermaid-svg-mjvwIaO0fkrTxvmr .doneCrit1,#mermaid-svg-mjvwIaO0fkrTxvmr .doneCrit2,#mermaid-svg-mjvwIaO0fkrTxvmr .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-mjvwIaO0fkrTxvmr .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-mjvwIaO0fkrTxvmr .milestoneText{font-style:italic}#mermaid-svg-mjvwIaO0fkrTxvmr .doneCritText0,#mermaid-svg-mjvwIaO0fkrTxvmr .doneCritText1,#mermaid-svg-mjvwIaO0fkrTxvmr .doneCritText2,#mermaid-svg-mjvwIaO0fkrTxvmr .doneCritText3{fill:#000 !important}#mermaid-svg-mjvwIaO0fkrTxvmr .activeCritText0,#mermaid-svg-mjvwIaO0fkrTxvmr .activeCritText1,#mermaid-svg-mjvwIaO0fkrTxvmr .activeCritText2,#mermaid-svg-mjvwIaO0fkrTxvmr .activeCritText3{fill:#000 !important}#mermaid-svg-mjvwIaO0fkrTxvmr .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mjvwIaO0fkrTxvmr g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-mjvwIaO0fkrTxvmr g.classGroup text .title{font-weight:bolder}#mermaid-svg-mjvwIaO0fkrTxvmr g.clickable{cursor:pointer}#mermaid-svg-mjvwIaO0fkrTxvmr g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-mjvwIaO0fkrTxvmr g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-mjvwIaO0fkrTxvmr .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-mjvwIaO0fkrTxvmr .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-mjvwIaO0fkrTxvmr .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-mjvwIaO0fkrTxvmr .dashed-line{stroke-dasharray:3}#mermaid-svg-mjvwIaO0fkrTxvmr #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mjvwIaO0fkrTxvmr #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mjvwIaO0fkrTxvmr #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-mjvwIaO0fkrTxvmr #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-mjvwIaO0fkrTxvmr #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mjvwIaO0fkrTxvmr #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mjvwIaO0fkrTxvmr #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mjvwIaO0fkrTxvmr #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mjvwIaO0fkrTxvmr .commit-id,#mermaid-svg-mjvwIaO0fkrTxvmr .commit-msg,#mermaid-svg-mjvwIaO0fkrTxvmr .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mjvwIaO0fkrTxvmr .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mjvwIaO0fkrTxvmr .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mjvwIaO0fkrTxvmr g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mjvwIaO0fkrTxvmr g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-mjvwIaO0fkrTxvmr g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-mjvwIaO0fkrTxvmr g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-mjvwIaO0fkrTxvmr g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-mjvwIaO0fkrTxvmr g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-mjvwIaO0fkrTxvmr .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-mjvwIaO0fkrTxvmr .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-mjvwIaO0fkrTxvmr .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-mjvwIaO0fkrTxvmr .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-mjvwIaO0fkrTxvmr .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-mjvwIaO0fkrTxvmr .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-mjvwIaO0fkrTxvmr .edgeLabel text{fill:#333}#mermaid-svg-mjvwIaO0fkrTxvmr .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mjvwIaO0fkrTxvmr .node circle.state-start{fill:black;stroke:black}#mermaid-svg-mjvwIaO0fkrTxvmr .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-mjvwIaO0fkrTxvmr #statediagram-barbEnd{fill:#9370db}#mermaid-svg-mjvwIaO0fkrTxvmr .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-mjvwIaO0fkrTxvmr .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-mjvwIaO0fkrTxvmr .statediagram-state .divider{stroke:#9370db}#mermaid-svg-mjvwIaO0fkrTxvmr .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-mjvwIaO0fkrTxvmr .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-mjvwIaO0fkrTxvmr .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-mjvwIaO0fkrTxvmr .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-mjvwIaO0fkrTxvmr .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-mjvwIaO0fkrTxvmr .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-mjvwIaO0fkrTxvmr .note-edge{stroke-dasharray:5}#mermaid-svg-mjvwIaO0fkrTxvmr .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-mjvwIaO0fkrTxvmr .error-icon{fill:#522}#mermaid-svg-mjvwIaO0fkrTxvmr .error-text{fill:#522;stroke:#522}#mermaid-svg-mjvwIaO0fkrTxvmr .edge-thickness-normal{stroke-width:2px}#mermaid-svg-mjvwIaO0fkrTxvmr .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-mjvwIaO0fkrTxvmr .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-mjvwIaO0fkrTxvmr .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-mjvwIaO0fkrTxvmr .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-mjvwIaO0fkrTxvmr .marker{fill:#333}#mermaid-svg-mjvwIaO0fkrTxvmr .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-mjvwIaO0fkrTxvmr .all > * { font-weight: bold !important; fill: transparent !important; stroke: transparent !important; } #mermaid-svg-mjvwIaO0fkrTxvmr .all tspan { !important; }#mermaid-svg-mjvwIaO0fkrTxvmr {color: rgba(0, 0, 0, 0.75);font: ;}

子树(A⇒Ba⇒bda)
简单子树(B⇒bd)
A
B
a
b
d
B
b
d

(2).推导⟷语法树

语法树并非与语法相对应,而是与推导相对应

更为准确地说,一个推导序列 确定 一个语法树,一个语法树 确定 一个广义推导

推导⟶语法树
eg:\pmb{eg:}eg:​eg:​​eg:
设有文法G[N]:{N→ND∣DD→0∣1∣2∣⋯∣9设有文法 \text{G}[\text{N}] \; : \;\begin{cases} \text{N} → \text{ND} \; | \; \text{D} \\ \text{D} → 0 \; | \; 1 \; | \; 2 \; | \cdots | \; 9 \\ \end{cases}设有文法G[N]:{N→ND∣DD→0∣1∣2∣⋯∣9​
对于推导序列N⇒ND⇒DD⇒2D⇒28,可构造以下推导树:对于推导序列\text{N} ⇒ \text{ND} ⇒ \text{DD} ⇒ \text{2D} ⇒ \text{28},可构造以下推导树:对于推导序列N⇒ND⇒DD⇒2D⇒28,可构造以下推导树:
#mermaid-svg-KrclD7Bmv7xoqkgC .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-KrclD7Bmv7xoqkgC .label text{fill:#333}#mermaid-svg-KrclD7Bmv7xoqkgC .node rect,#mermaid-svg-KrclD7Bmv7xoqkgC .node circle,#mermaid-svg-KrclD7Bmv7xoqkgC .node ellipse,#mermaid-svg-KrclD7Bmv7xoqkgC .node polygon,#mermaid-svg-KrclD7Bmv7xoqkgC .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-KrclD7Bmv7xoqkgC .node .label{text-align:center;fill:#333}#mermaid-svg-KrclD7Bmv7xoqkgC .node.clickable{cursor:pointer}#mermaid-svg-KrclD7Bmv7xoqkgC .arrowheadPath{fill:#333}#mermaid-svg-KrclD7Bmv7xoqkgC .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-KrclD7Bmv7xoqkgC .flowchart-link{stroke:#333;fill:none}#mermaid-svg-KrclD7Bmv7xoqkgC .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-KrclD7Bmv7xoqkgC .edgeLabel rect{opacity:0.9}#mermaid-svg-KrclD7Bmv7xoqkgC .edgeLabel span{color:#333}#mermaid-svg-KrclD7Bmv7xoqkgC .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-KrclD7Bmv7xoqkgC .cluster text{fill:#333}#mermaid-svg-KrclD7Bmv7xoqkgC div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-KrclD7Bmv7xoqkgC .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-KrclD7Bmv7xoqkgC text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-KrclD7Bmv7xoqkgC .actor-line{stroke:grey}#mermaid-svg-KrclD7Bmv7xoqkgC .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-KrclD7Bmv7xoqkgC .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-KrclD7Bmv7xoqkgC #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-KrclD7Bmv7xoqkgC .sequenceNumber{fill:#fff}#mermaid-svg-KrclD7Bmv7xoqkgC #sequencenumber{fill:#333}#mermaid-svg-KrclD7Bmv7xoqkgC #crosshead path{fill:#333;stroke:#333}#mermaid-svg-KrclD7Bmv7xoqkgC .messageText{fill:#333;stroke:#333}#mermaid-svg-KrclD7Bmv7xoqkgC .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-KrclD7Bmv7xoqkgC .labelText,#mermaid-svg-KrclD7Bmv7xoqkgC .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-KrclD7Bmv7xoqkgC .loopText,#mermaid-svg-KrclD7Bmv7xoqkgC .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-KrclD7Bmv7xoqkgC .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-KrclD7Bmv7xoqkgC .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-KrclD7Bmv7xoqkgC .noteText,#mermaid-svg-KrclD7Bmv7xoqkgC .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-KrclD7Bmv7xoqkgC .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-KrclD7Bmv7xoqkgC .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-KrclD7Bmv7xoqkgC .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-KrclD7Bmv7xoqkgC .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KrclD7Bmv7xoqkgC .section{stroke:none;opacity:0.2}#mermaid-svg-KrclD7Bmv7xoqkgC .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-KrclD7Bmv7xoqkgC .section2{fill:#fff400}#mermaid-svg-KrclD7Bmv7xoqkgC .section1,#mermaid-svg-KrclD7Bmv7xoqkgC .section3{fill:#fff;opacity:0.2}#mermaid-svg-KrclD7Bmv7xoqkgC .sectionTitle0{fill:#333}#mermaid-svg-KrclD7Bmv7xoqkgC .sectionTitle1{fill:#333}#mermaid-svg-KrclD7Bmv7xoqkgC .sectionTitle2{fill:#333}#mermaid-svg-KrclD7Bmv7xoqkgC .sectionTitle3{fill:#333}#mermaid-svg-KrclD7Bmv7xoqkgC .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KrclD7Bmv7xoqkgC .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-KrclD7Bmv7xoqkgC .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KrclD7Bmv7xoqkgC .grid path{stroke-width:0}#mermaid-svg-KrclD7Bmv7xoqkgC .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-KrclD7Bmv7xoqkgC .task{stroke-width:2}#mermaid-svg-KrclD7Bmv7xoqkgC .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KrclD7Bmv7xoqkgC .taskText:not([font-size]){font-size:11px}#mermaid-svg-KrclD7Bmv7xoqkgC .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KrclD7Bmv7xoqkgC .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-KrclD7Bmv7xoqkgC .task.clickable{cursor:pointer}#mermaid-svg-KrclD7Bmv7xoqkgC .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-KrclD7Bmv7xoqkgC .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-KrclD7Bmv7xoqkgC .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-KrclD7Bmv7xoqkgC .taskText0,#mermaid-svg-KrclD7Bmv7xoqkgC .taskText1,#mermaid-svg-KrclD7Bmv7xoqkgC .taskText2,#mermaid-svg-KrclD7Bmv7xoqkgC .taskText3{fill:#fff}#mermaid-svg-KrclD7Bmv7xoqkgC .task0,#mermaid-svg-KrclD7Bmv7xoqkgC .task1,#mermaid-svg-KrclD7Bmv7xoqkgC .task2,#mermaid-svg-KrclD7Bmv7xoqkgC .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-KrclD7Bmv7xoqkgC .taskTextOutside0,#mermaid-svg-KrclD7Bmv7xoqkgC .taskTextOutside2{fill:#000}#mermaid-svg-KrclD7Bmv7xoqkgC .taskTextOutside1,#mermaid-svg-KrclD7Bmv7xoqkgC .taskTextOutside3{fill:#000}#mermaid-svg-KrclD7Bmv7xoqkgC .active0,#mermaid-svg-KrclD7Bmv7xoqkgC .active1,#mermaid-svg-KrclD7Bmv7xoqkgC .active2,#mermaid-svg-KrclD7Bmv7xoqkgC .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-KrclD7Bmv7xoqkgC .activeText0,#mermaid-svg-KrclD7Bmv7xoqkgC .activeText1,#mermaid-svg-KrclD7Bmv7xoqkgC .activeText2,#mermaid-svg-KrclD7Bmv7xoqkgC .activeText3{fill:#000 !important}#mermaid-svg-KrclD7Bmv7xoqkgC .done0,#mermaid-svg-KrclD7Bmv7xoqkgC .done1,#mermaid-svg-KrclD7Bmv7xoqkgC .done2,#mermaid-svg-KrclD7Bmv7xoqkgC .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-KrclD7Bmv7xoqkgC .doneText0,#mermaid-svg-KrclD7Bmv7xoqkgC .doneText1,#mermaid-svg-KrclD7Bmv7xoqkgC .doneText2,#mermaid-svg-KrclD7Bmv7xoqkgC .doneText3{fill:#000 !important}#mermaid-svg-KrclD7Bmv7xoqkgC .crit0,#mermaid-svg-KrclD7Bmv7xoqkgC .crit1,#mermaid-svg-KrclD7Bmv7xoqkgC .crit2,#mermaid-svg-KrclD7Bmv7xoqkgC .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-KrclD7Bmv7xoqkgC .activeCrit0,#mermaid-svg-KrclD7Bmv7xoqkgC .activeCrit1,#mermaid-svg-KrclD7Bmv7xoqkgC .activeCrit2,#mermaid-svg-KrclD7Bmv7xoqkgC .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-KrclD7Bmv7xoqkgC .doneCrit0,#mermaid-svg-KrclD7Bmv7xoqkgC .doneCrit1,#mermaid-svg-KrclD7Bmv7xoqkgC .doneCrit2,#mermaid-svg-KrclD7Bmv7xoqkgC .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-KrclD7Bmv7xoqkgC .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-KrclD7Bmv7xoqkgC .milestoneText{font-style:italic}#mermaid-svg-KrclD7Bmv7xoqkgC .doneCritText0,#mermaid-svg-KrclD7Bmv7xoqkgC .doneCritText1,#mermaid-svg-KrclD7Bmv7xoqkgC .doneCritText2,#mermaid-svg-KrclD7Bmv7xoqkgC .doneCritText3{fill:#000 !important}#mermaid-svg-KrclD7Bmv7xoqkgC .activeCritText0,#mermaid-svg-KrclD7Bmv7xoqkgC .activeCritText1,#mermaid-svg-KrclD7Bmv7xoqkgC .activeCritText2,#mermaid-svg-KrclD7Bmv7xoqkgC .activeCritText3{fill:#000 !important}#mermaid-svg-KrclD7Bmv7xoqkgC .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KrclD7Bmv7xoqkgC g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-KrclD7Bmv7xoqkgC g.classGroup text .title{font-weight:bolder}#mermaid-svg-KrclD7Bmv7xoqkgC g.clickable{cursor:pointer}#mermaid-svg-KrclD7Bmv7xoqkgC g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-KrclD7Bmv7xoqkgC g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-KrclD7Bmv7xoqkgC .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-KrclD7Bmv7xoqkgC .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-KrclD7Bmv7xoqkgC .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-KrclD7Bmv7xoqkgC .dashed-line{stroke-dasharray:3}#mermaid-svg-KrclD7Bmv7xoqkgC #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KrclD7Bmv7xoqkgC #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KrclD7Bmv7xoqkgC #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-KrclD7Bmv7xoqkgC #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-KrclD7Bmv7xoqkgC #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KrclD7Bmv7xoqkgC #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KrclD7Bmv7xoqkgC #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KrclD7Bmv7xoqkgC #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KrclD7Bmv7xoqkgC .commit-id,#mermaid-svg-KrclD7Bmv7xoqkgC .commit-msg,#mermaid-svg-KrclD7Bmv7xoqkgC .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KrclD7Bmv7xoqkgC .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KrclD7Bmv7xoqkgC .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KrclD7Bmv7xoqkgC g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KrclD7Bmv7xoqkgC g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-KrclD7Bmv7xoqkgC g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-KrclD7Bmv7xoqkgC g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-KrclD7Bmv7xoqkgC g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-KrclD7Bmv7xoqkgC g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-KrclD7Bmv7xoqkgC .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-KrclD7Bmv7xoqkgC .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-KrclD7Bmv7xoqkgC .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-KrclD7Bmv7xoqkgC .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-KrclD7Bmv7xoqkgC .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-KrclD7Bmv7xoqkgC .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-KrclD7Bmv7xoqkgC .edgeLabel text{fill:#333}#mermaid-svg-KrclD7Bmv7xoqkgC .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KrclD7Bmv7xoqkgC .node circle.state-start{fill:black;stroke:black}#mermaid-svg-KrclD7Bmv7xoqkgC .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-KrclD7Bmv7xoqkgC #statediagram-barbEnd{fill:#9370db}#mermaid-svg-KrclD7Bmv7xoqkgC .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-KrclD7Bmv7xoqkgC .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-KrclD7Bmv7xoqkgC .statediagram-state .divider{stroke:#9370db}#mermaid-svg-KrclD7Bmv7xoqkgC .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-KrclD7Bmv7xoqkgC .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-KrclD7Bmv7xoqkgC .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-KrclD7Bmv7xoqkgC .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-KrclD7Bmv7xoqkgC .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-KrclD7Bmv7xoqkgC .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-KrclD7Bmv7xoqkgC .note-edge{stroke-dasharray:5}#mermaid-svg-KrclD7Bmv7xoqkgC .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-KrclD7Bmv7xoqkgC .error-icon{fill:#522}#mermaid-svg-KrclD7Bmv7xoqkgC .error-text{fill:#522;stroke:#522}#mermaid-svg-KrclD7Bmv7xoqkgC .edge-thickness-normal{stroke-width:2px}#mermaid-svg-KrclD7Bmv7xoqkgC .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-KrclD7Bmv7xoqkgC .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-KrclD7Bmv7xoqkgC .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-KrclD7Bmv7xoqkgC .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-KrclD7Bmv7xoqkgC .marker{fill:#333}#mermaid-svg-KrclD7Bmv7xoqkgC .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-KrclD7Bmv7xoqkgC .all > * { font-weight: bold !important; fill: transparent !important; stroke: transparent !important; } #mermaid-svg-KrclD7Bmv7xoqkgC .all tspan { !important; }#mermaid-svg-KrclD7Bmv7xoqkgC {color: rgba(0, 0, 0, 0.75);font: ;}

语法树
N
N
D
D
2
8

语法树⟶推导
eg:\pmb{eg:}eg:​eg:​​eg:
设有文法G[N]:{N→ND∣DD→0∣1∣2∣⋯∣9设有文法 \text{G}[\text{N}] \; : \;\begin{cases} \text{N} → \text{ND} \; | \; \text{D} \\ \text{D} → 0 \; | \; 1 \; | \; 2 \; | \cdots | \; 9 \\ \end{cases}设有文法G[N]:{N→ND∣DD→0∣1∣2∣⋯∣9​
有以下推导树:有以下推导树:有以下推导树:
#mermaid-svg-XLjhPLY1J8J0Ihal .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-XLjhPLY1J8J0Ihal .label text{fill:#333}#mermaid-svg-XLjhPLY1J8J0Ihal .node rect,#mermaid-svg-XLjhPLY1J8J0Ihal .node circle,#mermaid-svg-XLjhPLY1J8J0Ihal .node ellipse,#mermaid-svg-XLjhPLY1J8J0Ihal .node polygon,#mermaid-svg-XLjhPLY1J8J0Ihal .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-XLjhPLY1J8J0Ihal .node .label{text-align:center;fill:#333}#mermaid-svg-XLjhPLY1J8J0Ihal .node.clickable{cursor:pointer}#mermaid-svg-XLjhPLY1J8J0Ihal .arrowheadPath{fill:#333}#mermaid-svg-XLjhPLY1J8J0Ihal .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-XLjhPLY1J8J0Ihal .flowchart-link{stroke:#333;fill:none}#mermaid-svg-XLjhPLY1J8J0Ihal .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-XLjhPLY1J8J0Ihal .edgeLabel rect{opacity:0.9}#mermaid-svg-XLjhPLY1J8J0Ihal .edgeLabel span{color:#333}#mermaid-svg-XLjhPLY1J8J0Ihal .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-XLjhPLY1J8J0Ihal .cluster text{fill:#333}#mermaid-svg-XLjhPLY1J8J0Ihal div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-XLjhPLY1J8J0Ihal .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-XLjhPLY1J8J0Ihal text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-XLjhPLY1J8J0Ihal .actor-line{stroke:grey}#mermaid-svg-XLjhPLY1J8J0Ihal .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-XLjhPLY1J8J0Ihal .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-XLjhPLY1J8J0Ihal #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-XLjhPLY1J8J0Ihal .sequenceNumber{fill:#fff}#mermaid-svg-XLjhPLY1J8J0Ihal #sequencenumber{fill:#333}#mermaid-svg-XLjhPLY1J8J0Ihal #crosshead path{fill:#333;stroke:#333}#mermaid-svg-XLjhPLY1J8J0Ihal .messageText{fill:#333;stroke:#333}#mermaid-svg-XLjhPLY1J8J0Ihal .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-XLjhPLY1J8J0Ihal .labelText,#mermaid-svg-XLjhPLY1J8J0Ihal .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-XLjhPLY1J8J0Ihal .loopText,#mermaid-svg-XLjhPLY1J8J0Ihal .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-XLjhPLY1J8J0Ihal .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-XLjhPLY1J8J0Ihal .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-XLjhPLY1J8J0Ihal .noteText,#mermaid-svg-XLjhPLY1J8J0Ihal .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-XLjhPLY1J8J0Ihal .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-XLjhPLY1J8J0Ihal .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-XLjhPLY1J8J0Ihal .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-XLjhPLY1J8J0Ihal .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XLjhPLY1J8J0Ihal .section{stroke:none;opacity:0.2}#mermaid-svg-XLjhPLY1J8J0Ihal .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-XLjhPLY1J8J0Ihal .section2{fill:#fff400}#mermaid-svg-XLjhPLY1J8J0Ihal .section1,#mermaid-svg-XLjhPLY1J8J0Ihal .section3{fill:#fff;opacity:0.2}#mermaid-svg-XLjhPLY1J8J0Ihal .sectionTitle0{fill:#333}#mermaid-svg-XLjhPLY1J8J0Ihal .sectionTitle1{fill:#333}#mermaid-svg-XLjhPLY1J8J0Ihal .sectionTitle2{fill:#333}#mermaid-svg-XLjhPLY1J8J0Ihal .sectionTitle3{fill:#333}#mermaid-svg-XLjhPLY1J8J0Ihal .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XLjhPLY1J8J0Ihal .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-XLjhPLY1J8J0Ihal .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XLjhPLY1J8J0Ihal .grid path{stroke-width:0}#mermaid-svg-XLjhPLY1J8J0Ihal .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-XLjhPLY1J8J0Ihal .task{stroke-width:2}#mermaid-svg-XLjhPLY1J8J0Ihal .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XLjhPLY1J8J0Ihal .taskText:not([font-size]){font-size:11px}#mermaid-svg-XLjhPLY1J8J0Ihal .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XLjhPLY1J8J0Ihal .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-XLjhPLY1J8J0Ihal .task.clickable{cursor:pointer}#mermaid-svg-XLjhPLY1J8J0Ihal .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-XLjhPLY1J8J0Ihal .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-XLjhPLY1J8J0Ihal .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-XLjhPLY1J8J0Ihal .taskText0,#mermaid-svg-XLjhPLY1J8J0Ihal .taskText1,#mermaid-svg-XLjhPLY1J8J0Ihal .taskText2,#mermaid-svg-XLjhPLY1J8J0Ihal .taskText3{fill:#fff}#mermaid-svg-XLjhPLY1J8J0Ihal .task0,#mermaid-svg-XLjhPLY1J8J0Ihal .task1,#mermaid-svg-XLjhPLY1J8J0Ihal .task2,#mermaid-svg-XLjhPLY1J8J0Ihal .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-XLjhPLY1J8J0Ihal .taskTextOutside0,#mermaid-svg-XLjhPLY1J8J0Ihal .taskTextOutside2{fill:#000}#mermaid-svg-XLjhPLY1J8J0Ihal .taskTextOutside1,#mermaid-svg-XLjhPLY1J8J0Ihal .taskTextOutside3{fill:#000}#mermaid-svg-XLjhPLY1J8J0Ihal .active0,#mermaid-svg-XLjhPLY1J8J0Ihal .active1,#mermaid-svg-XLjhPLY1J8J0Ihal .active2,#mermaid-svg-XLjhPLY1J8J0Ihal .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-XLjhPLY1J8J0Ihal .activeText0,#mermaid-svg-XLjhPLY1J8J0Ihal .activeText1,#mermaid-svg-XLjhPLY1J8J0Ihal .activeText2,#mermaid-svg-XLjhPLY1J8J0Ihal .activeText3{fill:#000 !important}#mermaid-svg-XLjhPLY1J8J0Ihal .done0,#mermaid-svg-XLjhPLY1J8J0Ihal .done1,#mermaid-svg-XLjhPLY1J8J0Ihal .done2,#mermaid-svg-XLjhPLY1J8J0Ihal .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-XLjhPLY1J8J0Ihal .doneText0,#mermaid-svg-XLjhPLY1J8J0Ihal .doneText1,#mermaid-svg-XLjhPLY1J8J0Ihal .doneText2,#mermaid-svg-XLjhPLY1J8J0Ihal .doneText3{fill:#000 !important}#mermaid-svg-XLjhPLY1J8J0Ihal .crit0,#mermaid-svg-XLjhPLY1J8J0Ihal .crit1,#mermaid-svg-XLjhPLY1J8J0Ihal .crit2,#mermaid-svg-XLjhPLY1J8J0Ihal .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-XLjhPLY1J8J0Ihal .activeCrit0,#mermaid-svg-XLjhPLY1J8J0Ihal .activeCrit1,#mermaid-svg-XLjhPLY1J8J0Ihal .activeCrit2,#mermaid-svg-XLjhPLY1J8J0Ihal .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-XLjhPLY1J8J0Ihal .doneCrit0,#mermaid-svg-XLjhPLY1J8J0Ihal .doneCrit1,#mermaid-svg-XLjhPLY1J8J0Ihal .doneCrit2,#mermaid-svg-XLjhPLY1J8J0Ihal .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-XLjhPLY1J8J0Ihal .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-XLjhPLY1J8J0Ihal .milestoneText{font-style:italic}#mermaid-svg-XLjhPLY1J8J0Ihal .doneCritText0,#mermaid-svg-XLjhPLY1J8J0Ihal .doneCritText1,#mermaid-svg-XLjhPLY1J8J0Ihal .doneCritText2,#mermaid-svg-XLjhPLY1J8J0Ihal .doneCritText3{fill:#000 !important}#mermaid-svg-XLjhPLY1J8J0Ihal .activeCritText0,#mermaid-svg-XLjhPLY1J8J0Ihal .activeCritText1,#mermaid-svg-XLjhPLY1J8J0Ihal .activeCritText2,#mermaid-svg-XLjhPLY1J8J0Ihal .activeCritText3{fill:#000 !important}#mermaid-svg-XLjhPLY1J8J0Ihal .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XLjhPLY1J8J0Ihal g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-XLjhPLY1J8J0Ihal g.classGroup text .title{font-weight:bolder}#mermaid-svg-XLjhPLY1J8J0Ihal g.clickable{cursor:pointer}#mermaid-svg-XLjhPLY1J8J0Ihal g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-XLjhPLY1J8J0Ihal g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-XLjhPLY1J8J0Ihal .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-XLjhPLY1J8J0Ihal .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-XLjhPLY1J8J0Ihal .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-XLjhPLY1J8J0Ihal .dashed-line{stroke-dasharray:3}#mermaid-svg-XLjhPLY1J8J0Ihal #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-XLjhPLY1J8J0Ihal #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-XLjhPLY1J8J0Ihal #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-XLjhPLY1J8J0Ihal #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-XLjhPLY1J8J0Ihal #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-XLjhPLY1J8J0Ihal #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-XLjhPLY1J8J0Ihal #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-XLjhPLY1J8J0Ihal #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-XLjhPLY1J8J0Ihal .commit-id,#mermaid-svg-XLjhPLY1J8J0Ihal .commit-msg,#mermaid-svg-XLjhPLY1J8J0Ihal .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XLjhPLY1J8J0Ihal .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XLjhPLY1J8J0Ihal .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XLjhPLY1J8J0Ihal g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XLjhPLY1J8J0Ihal g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-XLjhPLY1J8J0Ihal g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-XLjhPLY1J8J0Ihal g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-XLjhPLY1J8J0Ihal g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-XLjhPLY1J8J0Ihal g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-XLjhPLY1J8J0Ihal .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-XLjhPLY1J8J0Ihal .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-XLjhPLY1J8J0Ihal .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-XLjhPLY1J8J0Ihal .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-XLjhPLY1J8J0Ihal .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-XLjhPLY1J8J0Ihal .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-XLjhPLY1J8J0Ihal .edgeLabel text{fill:#333}#mermaid-svg-XLjhPLY1J8J0Ihal .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XLjhPLY1J8J0Ihal .node circle.state-start{fill:black;stroke:black}#mermaid-svg-XLjhPLY1J8J0Ihal .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-XLjhPLY1J8J0Ihal #statediagram-barbEnd{fill:#9370db}#mermaid-svg-XLjhPLY1J8J0Ihal .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-XLjhPLY1J8J0Ihal .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-XLjhPLY1J8J0Ihal .statediagram-state .divider{stroke:#9370db}#mermaid-svg-XLjhPLY1J8J0Ihal .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-XLjhPLY1J8J0Ihal .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-XLjhPLY1J8J0Ihal .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-XLjhPLY1J8J0Ihal .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-XLjhPLY1J8J0Ihal .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-XLjhPLY1J8J0Ihal .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-XLjhPLY1J8J0Ihal .note-edge{stroke-dasharray:5}#mermaid-svg-XLjhPLY1J8J0Ihal .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-XLjhPLY1J8J0Ihal .error-icon{fill:#522}#mermaid-svg-XLjhPLY1J8J0Ihal .error-text{fill:#522;stroke:#522}#mermaid-svg-XLjhPLY1J8J0Ihal .edge-thickness-normal{stroke-width:2px}#mermaid-svg-XLjhPLY1J8J0Ihal .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-XLjhPLY1J8J0Ihal .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-XLjhPLY1J8J0Ihal .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-XLjhPLY1J8J0Ihal .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-XLjhPLY1J8J0Ihal .marker{fill:#333}#mermaid-svg-XLjhPLY1J8J0Ihal .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-XLjhPLY1J8J0Ihal .all > * { font-weight: bold !important; fill: transparent !important; stroke: transparent !important; } #mermaid-svg-XLjhPLY1J8J0Ihal .all tspan { !important; }#mermaid-svg-XLjhPLY1J8J0Ihal {color: rgba(0, 0, 0, 0.75);font: ;}

语法树
N
N
D
D
2
8

则可得到以下归约序列(不一定唯一):则可得到以下归约序列(不一定唯一):则可得到以下归约序列(不一定唯一): 28⇒△D8⇒△DD⇒△ND⇒△N28 \xRightarrow[△]{} \text{D8} \xRightarrow[△]{} \text{DD} \xRightarrow[△]{} \text{ND} \xRightarrow[△]{} \text{N}28△​D8△​DD△​ND△​N
对应以下推导序列:对应以下推导序列:对应以下推导序列: N⟹ND⟹DD⟹D8⟹28\text{N} ⟹ \text{ND} ⟹ \text{DD} ⟹ \text{D8} ⟹ 28N⟹ND⟹DD⟹D8⟹28

(3).最左推导/最右推导

最左推导
在一个推导中,如果每步直接推导所被替换的总是最左的非终结符号,则称这种推导为最左推导
最右推导(规范推导)
在一个推导中,如果每步直接推导所被替换的总是最右的非终结符号,则称这种推导为最右推导,又称规范推导
由规范推导所得的句型称为右句型规范句型
eg:eg:eg:
设有文法G[N]:{N→ND∣DD→0∣1∣2∣⋯∣9设有文法 \text{G}[\text{N}] \; : \;\begin{cases} \text{N} → \text{ND} \; | \; \text{D} \\ \text{D} → 0 \; | \; 1 \; | \; 2 \; | \cdots | \; 9 \\ \end{cases}设有文法G[N]:{N→ND∣DD→0∣1∣2∣⋯∣9​
有推导N⇒∗28有推导\text{N} \xRightarrow[]{*} 28有推导N∗​28
对于最左推导N⇒ND⇒DD⇒2D⇒28对于最左推导\text{N} ⇒ \text{ND} ⇒ \text{DD} ⇒ \text{2D} ⇒ 28对于最左推导N⇒ND⇒DD⇒2D⇒28
其语法树如下:其语法树如下:其语法树如下:
#mermaid-svg-FyKrT4UFhGds1Q5D .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-FyKrT4UFhGds1Q5D .label text{fill:#333}#mermaid-svg-FyKrT4UFhGds1Q5D .node rect,#mermaid-svg-FyKrT4UFhGds1Q5D .node circle,#mermaid-svg-FyKrT4UFhGds1Q5D .node ellipse,#mermaid-svg-FyKrT4UFhGds1Q5D .node polygon,#mermaid-svg-FyKrT4UFhGds1Q5D .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-FyKrT4UFhGds1Q5D .node .label{text-align:center;fill:#333}#mermaid-svg-FyKrT4UFhGds1Q5D .node.clickable{cursor:pointer}#mermaid-svg-FyKrT4UFhGds1Q5D .arrowheadPath{fill:#333}#mermaid-svg-FyKrT4UFhGds1Q5D .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-FyKrT4UFhGds1Q5D .flowchart-link{stroke:#333;fill:none}#mermaid-svg-FyKrT4UFhGds1Q5D .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-FyKrT4UFhGds1Q5D .edgeLabel rect{opacity:0.9}#mermaid-svg-FyKrT4UFhGds1Q5D .edgeLabel span{color:#333}#mermaid-svg-FyKrT4UFhGds1Q5D .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-FyKrT4UFhGds1Q5D .cluster text{fill:#333}#mermaid-svg-FyKrT4UFhGds1Q5D div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-FyKrT4UFhGds1Q5D .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-FyKrT4UFhGds1Q5D text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-FyKrT4UFhGds1Q5D .actor-line{stroke:grey}#mermaid-svg-FyKrT4UFhGds1Q5D .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-FyKrT4UFhGds1Q5D .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-FyKrT4UFhGds1Q5D #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-FyKrT4UFhGds1Q5D .sequenceNumber{fill:#fff}#mermaid-svg-FyKrT4UFhGds1Q5D #sequencenumber{fill:#333}#mermaid-svg-FyKrT4UFhGds1Q5D #crosshead path{fill:#333;stroke:#333}#mermaid-svg-FyKrT4UFhGds1Q5D .messageText{fill:#333;stroke:#333}#mermaid-svg-FyKrT4UFhGds1Q5D .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-FyKrT4UFhGds1Q5D .labelText,#mermaid-svg-FyKrT4UFhGds1Q5D .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-FyKrT4UFhGds1Q5D .loopText,#mermaid-svg-FyKrT4UFhGds1Q5D .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-FyKrT4UFhGds1Q5D .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-FyKrT4UFhGds1Q5D .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-FyKrT4UFhGds1Q5D .noteText,#mermaid-svg-FyKrT4UFhGds1Q5D .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-FyKrT4UFhGds1Q5D .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-FyKrT4UFhGds1Q5D .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-FyKrT4UFhGds1Q5D .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-FyKrT4UFhGds1Q5D .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-FyKrT4UFhGds1Q5D .section{stroke:none;opacity:0.2}#mermaid-svg-FyKrT4UFhGds1Q5D .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-FyKrT4UFhGds1Q5D .section2{fill:#fff400}#mermaid-svg-FyKrT4UFhGds1Q5D .section1,#mermaid-svg-FyKrT4UFhGds1Q5D .section3{fill:#fff;opacity:0.2}#mermaid-svg-FyKrT4UFhGds1Q5D .sectionTitle0{fill:#333}#mermaid-svg-FyKrT4UFhGds1Q5D .sectionTitle1{fill:#333}#mermaid-svg-FyKrT4UFhGds1Q5D .sectionTitle2{fill:#333}#mermaid-svg-FyKrT4UFhGds1Q5D .sectionTitle3{fill:#333}#mermaid-svg-FyKrT4UFhGds1Q5D .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-FyKrT4UFhGds1Q5D .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-FyKrT4UFhGds1Q5D .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-FyKrT4UFhGds1Q5D .grid path{stroke-width:0}#mermaid-svg-FyKrT4UFhGds1Q5D .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-FyKrT4UFhGds1Q5D .task{stroke-width:2}#mermaid-svg-FyKrT4UFhGds1Q5D .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-FyKrT4UFhGds1Q5D .taskText:not([font-size]){font-size:11px}#mermaid-svg-FyKrT4UFhGds1Q5D .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-FyKrT4UFhGds1Q5D .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-FyKrT4UFhGds1Q5D .task.clickable{cursor:pointer}#mermaid-svg-FyKrT4UFhGds1Q5D .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-FyKrT4UFhGds1Q5D .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-FyKrT4UFhGds1Q5D .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-FyKrT4UFhGds1Q5D .taskText0,#mermaid-svg-FyKrT4UFhGds1Q5D .taskText1,#mermaid-svg-FyKrT4UFhGds1Q5D .taskText2,#mermaid-svg-FyKrT4UFhGds1Q5D .taskText3{fill:#fff}#mermaid-svg-FyKrT4UFhGds1Q5D .task0,#mermaid-svg-FyKrT4UFhGds1Q5D .task1,#mermaid-svg-FyKrT4UFhGds1Q5D .task2,#mermaid-svg-FyKrT4UFhGds1Q5D .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-FyKrT4UFhGds1Q5D .taskTextOutside0,#mermaid-svg-FyKrT4UFhGds1Q5D .taskTextOutside2{fill:#000}#mermaid-svg-FyKrT4UFhGds1Q5D .taskTextOutside1,#mermaid-svg-FyKrT4UFhGds1Q5D .taskTextOutside3{fill:#000}#mermaid-svg-FyKrT4UFhGds1Q5D .active0,#mermaid-svg-FyKrT4UFhGds1Q5D .active1,#mermaid-svg-FyKrT4UFhGds1Q5D .active2,#mermaid-svg-FyKrT4UFhGds1Q5D .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-FyKrT4UFhGds1Q5D .activeText0,#mermaid-svg-FyKrT4UFhGds1Q5D .activeText1,#mermaid-svg-FyKrT4UFhGds1Q5D .activeText2,#mermaid-svg-FyKrT4UFhGds1Q5D .activeText3{fill:#000 !important}#mermaid-svg-FyKrT4UFhGds1Q5D .done0,#mermaid-svg-FyKrT4UFhGds1Q5D .done1,#mermaid-svg-FyKrT4UFhGds1Q5D .done2,#mermaid-svg-FyKrT4UFhGds1Q5D .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-FyKrT4UFhGds1Q5D .doneText0,#mermaid-svg-FyKrT4UFhGds1Q5D .doneText1,#mermaid-svg-FyKrT4UFhGds1Q5D .doneText2,#mermaid-svg-FyKrT4UFhGds1Q5D .doneText3{fill:#000 !important}#mermaid-svg-FyKrT4UFhGds1Q5D .crit0,#mermaid-svg-FyKrT4UFhGds1Q5D .crit1,#mermaid-svg-FyKrT4UFhGds1Q5D .crit2,#mermaid-svg-FyKrT4UFhGds1Q5D .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-FyKrT4UFhGds1Q5D .activeCrit0,#mermaid-svg-FyKrT4UFhGds1Q5D .activeCrit1,#mermaid-svg-FyKrT4UFhGds1Q5D .activeCrit2,#mermaid-svg-FyKrT4UFhGds1Q5D .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-FyKrT4UFhGds1Q5D .doneCrit0,#mermaid-svg-FyKrT4UFhGds1Q5D .doneCrit1,#mermaid-svg-FyKrT4UFhGds1Q5D .doneCrit2,#mermaid-svg-FyKrT4UFhGds1Q5D .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-FyKrT4UFhGds1Q5D .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-FyKrT4UFhGds1Q5D .milestoneText{font-style:italic}#mermaid-svg-FyKrT4UFhGds1Q5D .doneCritText0,#mermaid-svg-FyKrT4UFhGds1Q5D .doneCritText1,#mermaid-svg-FyKrT4UFhGds1Q5D .doneCritText2,#mermaid-svg-FyKrT4UFhGds1Q5D .doneCritText3{fill:#000 !important}#mermaid-svg-FyKrT4UFhGds1Q5D .activeCritText0,#mermaid-svg-FyKrT4UFhGds1Q5D .activeCritText1,#mermaid-svg-FyKrT4UFhGds1Q5D .activeCritText2,#mermaid-svg-FyKrT4UFhGds1Q5D .activeCritText3{fill:#000 !important}#mermaid-svg-FyKrT4UFhGds1Q5D .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-FyKrT4UFhGds1Q5D g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-FyKrT4UFhGds1Q5D g.classGroup text .title{font-weight:bolder}#mermaid-svg-FyKrT4UFhGds1Q5D g.clickable{cursor:pointer}#mermaid-svg-FyKrT4UFhGds1Q5D g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-FyKrT4UFhGds1Q5D g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-FyKrT4UFhGds1Q5D .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-FyKrT4UFhGds1Q5D .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-FyKrT4UFhGds1Q5D .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-FyKrT4UFhGds1Q5D .dashed-line{stroke-dasharray:3}#mermaid-svg-FyKrT4UFhGds1Q5D #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-FyKrT4UFhGds1Q5D #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-FyKrT4UFhGds1Q5D #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-FyKrT4UFhGds1Q5D #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-FyKrT4UFhGds1Q5D #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-FyKrT4UFhGds1Q5D #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-FyKrT4UFhGds1Q5D #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-FyKrT4UFhGds1Q5D #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-FyKrT4UFhGds1Q5D .commit-id,#mermaid-svg-FyKrT4UFhGds1Q5D .commit-msg,#mermaid-svg-FyKrT4UFhGds1Q5D .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-FyKrT4UFhGds1Q5D .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-FyKrT4UFhGds1Q5D .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-FyKrT4UFhGds1Q5D g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-FyKrT4UFhGds1Q5D g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-FyKrT4UFhGds1Q5D g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-FyKrT4UFhGds1Q5D g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-FyKrT4UFhGds1Q5D g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-FyKrT4UFhGds1Q5D g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-FyKrT4UFhGds1Q5D .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-FyKrT4UFhGds1Q5D .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-FyKrT4UFhGds1Q5D .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-FyKrT4UFhGds1Q5D .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-FyKrT4UFhGds1Q5D .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-FyKrT4UFhGds1Q5D .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-FyKrT4UFhGds1Q5D .edgeLabel text{fill:#333}#mermaid-svg-FyKrT4UFhGds1Q5D .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-FyKrT4UFhGds1Q5D .node circle.state-start{fill:black;stroke:black}#mermaid-svg-FyKrT4UFhGds1Q5D .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-FyKrT4UFhGds1Q5D #statediagram-barbEnd{fill:#9370db}#mermaid-svg-FyKrT4UFhGds1Q5D .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-FyKrT4UFhGds1Q5D .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-FyKrT4UFhGds1Q5D .statediagram-state .divider{stroke:#9370db}#mermaid-svg-FyKrT4UFhGds1Q5D .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-FyKrT4UFhGds1Q5D .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-FyKrT4UFhGds1Q5D .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-FyKrT4UFhGds1Q5D .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-FyKrT4UFhGds1Q5D .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-FyKrT4UFhGds1Q5D .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-FyKrT4UFhGds1Q5D .note-edge{stroke-dasharray:5}#mermaid-svg-FyKrT4UFhGds1Q5D .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-FyKrT4UFhGds1Q5D .error-icon{fill:#522}#mermaid-svg-FyKrT4UFhGds1Q5D .error-text{fill:#522;stroke:#522}#mermaid-svg-FyKrT4UFhGds1Q5D .edge-thickness-normal{stroke-width:2px}#mermaid-svg-FyKrT4UFhGds1Q5D .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-FyKrT4UFhGds1Q5D .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-FyKrT4UFhGds1Q5D .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-FyKrT4UFhGds1Q5D .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-FyKrT4UFhGds1Q5D .marker{fill:#333}#mermaid-svg-FyKrT4UFhGds1Q5D .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-FyKrT4UFhGds1Q5D .all > * { font-weight: bold !important; fill: transparent !important; stroke: transparent !important; } #mermaid-svg-FyKrT4UFhGds1Q5D .all tspan { !important; }#mermaid-svg-FyKrT4UFhGds1Q5D {color: rgba(0, 0, 0, 0.75);font: ;}

语法树
N
N
D
D
2
8

对于最右推导N⇒ND⇒N8⇒D8⇒28对于最右推导\text{N} ⇒ \text{ND} ⇒ \text{N8} ⇒ \text{D8} ⇒ 28对于最右推导N⇒ND⇒N8⇒D8⇒28
其语法树如下:其语法树如下:其语法树如下:
#mermaid-svg-3oNMK1dBmDHLNUUE .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-3oNMK1dBmDHLNUUE .label text{fill:#333}#mermaid-svg-3oNMK1dBmDHLNUUE .node rect,#mermaid-svg-3oNMK1dBmDHLNUUE .node circle,#mermaid-svg-3oNMK1dBmDHLNUUE .node ellipse,#mermaid-svg-3oNMK1dBmDHLNUUE .node polygon,#mermaid-svg-3oNMK1dBmDHLNUUE .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-3oNMK1dBmDHLNUUE .node .label{text-align:center;fill:#333}#mermaid-svg-3oNMK1dBmDHLNUUE .node.clickable{cursor:pointer}#mermaid-svg-3oNMK1dBmDHLNUUE .arrowheadPath{fill:#333}#mermaid-svg-3oNMK1dBmDHLNUUE .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-3oNMK1dBmDHLNUUE .flowchart-link{stroke:#333;fill:none}#mermaid-svg-3oNMK1dBmDHLNUUE .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-3oNMK1dBmDHLNUUE .edgeLabel rect{opacity:0.9}#mermaid-svg-3oNMK1dBmDHLNUUE .edgeLabel span{color:#333}#mermaid-svg-3oNMK1dBmDHLNUUE .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-3oNMK1dBmDHLNUUE .cluster text{fill:#333}#mermaid-svg-3oNMK1dBmDHLNUUE div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-3oNMK1dBmDHLNUUE .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-3oNMK1dBmDHLNUUE text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-3oNMK1dBmDHLNUUE .actor-line{stroke:grey}#mermaid-svg-3oNMK1dBmDHLNUUE .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-3oNMK1dBmDHLNUUE .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-3oNMK1dBmDHLNUUE #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-3oNMK1dBmDHLNUUE .sequenceNumber{fill:#fff}#mermaid-svg-3oNMK1dBmDHLNUUE #sequencenumber{fill:#333}#mermaid-svg-3oNMK1dBmDHLNUUE #crosshead path{fill:#333;stroke:#333}#mermaid-svg-3oNMK1dBmDHLNUUE .messageText{fill:#333;stroke:#333}#mermaid-svg-3oNMK1dBmDHLNUUE .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-3oNMK1dBmDHLNUUE .labelText,#mermaid-svg-3oNMK1dBmDHLNUUE .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-3oNMK1dBmDHLNUUE .loopText,#mermaid-svg-3oNMK1dBmDHLNUUE .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-3oNMK1dBmDHLNUUE .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-3oNMK1dBmDHLNUUE .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-3oNMK1dBmDHLNUUE .noteText,#mermaid-svg-3oNMK1dBmDHLNUUE .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-3oNMK1dBmDHLNUUE .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-3oNMK1dBmDHLNUUE .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-3oNMK1dBmDHLNUUE .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-3oNMK1dBmDHLNUUE .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3oNMK1dBmDHLNUUE .section{stroke:none;opacity:0.2}#mermaid-svg-3oNMK1dBmDHLNUUE .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-3oNMK1dBmDHLNUUE .section2{fill:#fff400}#mermaid-svg-3oNMK1dBmDHLNUUE .section1,#mermaid-svg-3oNMK1dBmDHLNUUE .section3{fill:#fff;opacity:0.2}#mermaid-svg-3oNMK1dBmDHLNUUE .sectionTitle0{fill:#333}#mermaid-svg-3oNMK1dBmDHLNUUE .sectionTitle1{fill:#333}#mermaid-svg-3oNMK1dBmDHLNUUE .sectionTitle2{fill:#333}#mermaid-svg-3oNMK1dBmDHLNUUE .sectionTitle3{fill:#333}#mermaid-svg-3oNMK1dBmDHLNUUE .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3oNMK1dBmDHLNUUE .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-3oNMK1dBmDHLNUUE .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3oNMK1dBmDHLNUUE .grid path{stroke-width:0}#mermaid-svg-3oNMK1dBmDHLNUUE .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-3oNMK1dBmDHLNUUE .task{stroke-width:2}#mermaid-svg-3oNMK1dBmDHLNUUE .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3oNMK1dBmDHLNUUE .taskText:not([font-size]){font-size:11px}#mermaid-svg-3oNMK1dBmDHLNUUE .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3oNMK1dBmDHLNUUE .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-3oNMK1dBmDHLNUUE .task.clickable{cursor:pointer}#mermaid-svg-3oNMK1dBmDHLNUUE .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-3oNMK1dBmDHLNUUE .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-3oNMK1dBmDHLNUUE .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-3oNMK1dBmDHLNUUE .taskText0,#mermaid-svg-3oNMK1dBmDHLNUUE .taskText1,#mermaid-svg-3oNMK1dBmDHLNUUE .taskText2,#mermaid-svg-3oNMK1dBmDHLNUUE .taskText3{fill:#fff}#mermaid-svg-3oNMK1dBmDHLNUUE .task0,#mermaid-svg-3oNMK1dBmDHLNUUE .task1,#mermaid-svg-3oNMK1dBmDHLNUUE .task2,#mermaid-svg-3oNMK1dBmDHLNUUE .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-3oNMK1dBmDHLNUUE .taskTextOutside0,#mermaid-svg-3oNMK1dBmDHLNUUE .taskTextOutside2{fill:#000}#mermaid-svg-3oNMK1dBmDHLNUUE .taskTextOutside1,#mermaid-svg-3oNMK1dBmDHLNUUE .taskTextOutside3{fill:#000}#mermaid-svg-3oNMK1dBmDHLNUUE .active0,#mermaid-svg-3oNMK1dBmDHLNUUE .active1,#mermaid-svg-3oNMK1dBmDHLNUUE .active2,#mermaid-svg-3oNMK1dBmDHLNUUE .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-3oNMK1dBmDHLNUUE .activeText0,#mermaid-svg-3oNMK1dBmDHLNUUE .activeText1,#mermaid-svg-3oNMK1dBmDHLNUUE .activeText2,#mermaid-svg-3oNMK1dBmDHLNUUE .activeText3{fill:#000 !important}#mermaid-svg-3oNMK1dBmDHLNUUE .done0,#mermaid-svg-3oNMK1dBmDHLNUUE .done1,#mermaid-svg-3oNMK1dBmDHLNUUE .done2,#mermaid-svg-3oNMK1dBmDHLNUUE .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-3oNMK1dBmDHLNUUE .doneText0,#mermaid-svg-3oNMK1dBmDHLNUUE .doneText1,#mermaid-svg-3oNMK1dBmDHLNUUE .doneText2,#mermaid-svg-3oNMK1dBmDHLNUUE .doneText3{fill:#000 !important}#mermaid-svg-3oNMK1dBmDHLNUUE .crit0,#mermaid-svg-3oNMK1dBmDHLNUUE .crit1,#mermaid-svg-3oNMK1dBmDHLNUUE .crit2,#mermaid-svg-3oNMK1dBmDHLNUUE .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-3oNMK1dBmDHLNUUE .activeCrit0,#mermaid-svg-3oNMK1dBmDHLNUUE .activeCrit1,#mermaid-svg-3oNMK1dBmDHLNUUE .activeCrit2,#mermaid-svg-3oNMK1dBmDHLNUUE .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-3oNMK1dBmDHLNUUE .doneCrit0,#mermaid-svg-3oNMK1dBmDHLNUUE .doneCrit1,#mermaid-svg-3oNMK1dBmDHLNUUE .doneCrit2,#mermaid-svg-3oNMK1dBmDHLNUUE .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-3oNMK1dBmDHLNUUE .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-3oNMK1dBmDHLNUUE .milestoneText{font-style:italic}#mermaid-svg-3oNMK1dBmDHLNUUE .doneCritText0,#mermaid-svg-3oNMK1dBmDHLNUUE .doneCritText1,#mermaid-svg-3oNMK1dBmDHLNUUE .doneCritText2,#mermaid-svg-3oNMK1dBmDHLNUUE .doneCritText3{fill:#000 !important}#mermaid-svg-3oNMK1dBmDHLNUUE .activeCritText0,#mermaid-svg-3oNMK1dBmDHLNUUE .activeCritText1,#mermaid-svg-3oNMK1dBmDHLNUUE .activeCritText2,#mermaid-svg-3oNMK1dBmDHLNUUE .activeCritText3{fill:#000 !important}#mermaid-svg-3oNMK1dBmDHLNUUE .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3oNMK1dBmDHLNUUE g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-3oNMK1dBmDHLNUUE g.classGroup text .title{font-weight:bolder}#mermaid-svg-3oNMK1dBmDHLNUUE g.clickable{cursor:pointer}#mermaid-svg-3oNMK1dBmDHLNUUE g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-3oNMK1dBmDHLNUUE g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-3oNMK1dBmDHLNUUE .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-3oNMK1dBmDHLNUUE .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-3oNMK1dBmDHLNUUE .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-3oNMK1dBmDHLNUUE .dashed-line{stroke-dasharray:3}#mermaid-svg-3oNMK1dBmDHLNUUE #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-3oNMK1dBmDHLNUUE #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-3oNMK1dBmDHLNUUE #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-3oNMK1dBmDHLNUUE #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-3oNMK1dBmDHLNUUE #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-3oNMK1dBmDHLNUUE #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-3oNMK1dBmDHLNUUE #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-3oNMK1dBmDHLNUUE #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-3oNMK1dBmDHLNUUE .commit-id,#mermaid-svg-3oNMK1dBmDHLNUUE .commit-msg,#mermaid-svg-3oNMK1dBmDHLNUUE .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3oNMK1dBmDHLNUUE .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3oNMK1dBmDHLNUUE .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3oNMK1dBmDHLNUUE g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3oNMK1dBmDHLNUUE g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-3oNMK1dBmDHLNUUE g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-3oNMK1dBmDHLNUUE g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-3oNMK1dBmDHLNUUE g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-3oNMK1dBmDHLNUUE g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-3oNMK1dBmDHLNUUE .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-3oNMK1dBmDHLNUUE .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-3oNMK1dBmDHLNUUE .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-3oNMK1dBmDHLNUUE .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-3oNMK1dBmDHLNUUE .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-3oNMK1dBmDHLNUUE .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-3oNMK1dBmDHLNUUE .edgeLabel text{fill:#333}#mermaid-svg-3oNMK1dBmDHLNUUE .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3oNMK1dBmDHLNUUE .node circle.state-start{fill:black;stroke:black}#mermaid-svg-3oNMK1dBmDHLNUUE .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-3oNMK1dBmDHLNUUE #statediagram-barbEnd{fill:#9370db}#mermaid-svg-3oNMK1dBmDHLNUUE .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-3oNMK1dBmDHLNUUE .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-3oNMK1dBmDHLNUUE .statediagram-state .divider{stroke:#9370db}#mermaid-svg-3oNMK1dBmDHLNUUE .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-3oNMK1dBmDHLNUUE .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-3oNMK1dBmDHLNUUE .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-3oNMK1dBmDHLNUUE .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-3oNMK1dBmDHLNUUE .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-3oNMK1dBmDHLNUUE .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-3oNMK1dBmDHLNUUE .note-edge{stroke-dasharray:5}#mermaid-svg-3oNMK1dBmDHLNUUE .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-3oNMK1dBmDHLNUUE .error-icon{fill:#522}#mermaid-svg-3oNMK1dBmDHLNUUE .error-text{fill:#522;stroke:#522}#mermaid-svg-3oNMK1dBmDHLNUUE .edge-thickness-normal{stroke-width:2px}#mermaid-svg-3oNMK1dBmDHLNUUE .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-3oNMK1dBmDHLNUUE .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-3oNMK1dBmDHLNUUE .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-3oNMK1dBmDHLNUUE .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-3oNMK1dBmDHLNUUE .marker{fill:#333}#mermaid-svg-3oNMK1dBmDHLNUUE .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-3oNMK1dBmDHLNUUE .all > * { font-weight: bold !important; fill: transparent !important; stroke: transparent !important; } #mermaid-svg-3oNMK1dBmDHLNUUE .all tspan { !important; }#mermaid-svg-3oNMK1dBmDHLNUUE {color: rgba(0, 0, 0, 0.75);font: ;}

语法树
N
N
D
D
2
8

可以看到,该文法的最左推导和最右推导所对应的语法树是相同的可以看到,该文法的最左推导和最右推导所对应的语法树是相同的可以看到,该文法的最左推导和最右推导所对应的语法树是相同的
但事实上同一推导的不同推导序列的语法树未必相同但事实上同一推导的不同推导序列的语法树未必相同但事实上同一推导的不同推导序列的语法树未必相同

(4).二义性

若对某文法的同一句子存在两个不同的语法树,则称该句子是二义性

包含有二义性句子的文法称为二义性文法,否则称为无二义性文法

若关于某语言不存在无二义性文法,则称该语言先天二义性

示例5\pmb{示例5}示例5示例5示例5
对同一语言L,有以下两种不同的文法:\quad \quad对同一语言\text{L},有以下两种不同的文法:对同一语言L,有以下两种不同的文法: G[E]:E→E+E∣E∗E∣i∣(E)G′[E]:{E→E+T∣TT→T∗F∣FF→i∣(E)\begin{aligned} & \text{G}[\text{E}] \; : \; \text{E} → \text{E} + \text{E} \; | \; \text{E} * \text{E} \; | \; i \; | \; (\text{E}) \\ \\ & \text{G}^{'}[\text{E}] \; : \; \begin{cases} \text{E} → \text{E} + \text{T} \; | \; \text{T} \\ \text{T} → \text{T} * \text{F} \; | \; \text{F} \\ \text{F} → i \; | \; (\text{E}) \\ \end{cases}\\ \end{aligned}​G[E]:E→E+E∣E∗E∣i∣(E)G′[E]:⎩⎪⎨⎪⎧​E→E+T∣TT→T∗F∣FF→i∣(E)​​
下面我们探讨一下,这两种文法在推导“E⇒∗i+i∗i”时,不同推导序列下的语法树:\quad \quad下面我们探讨一下,这两种文法在推导“\text{E} \xRightarrow[]{*} i + i * i”时,不同推导序列下的语法树:下面我们探讨一下,这两种文法在推导“E∗​i+i∗i”时,不同推导序列下的语法树:

文法G[E]\quad \quad \pmb{文法\text{G}[\text{E}]}文法G[E]​文法G[E]​​文法G[E]
其最右推导:\quad \quad \quad \quad \textbf{其最右推导:}其最右推导:
E⇒E+E⇒E+E∗E⇒E+E∗i⇒E+i∗i⇒i+i∗i\quad \quad \quad \quad \quad \quad \text{E} ⇒ \text{E} + \text{E} ⇒ \text{E} + \text{E} * \text{E} ⇒ \text{E} + \text{E} * i ⇒ \text{E} + i * i ⇒ i + i * iE⇒E+E⇒E+E∗E⇒E+E∗i⇒E+i∗i⇒i+i∗i
其语法树如下:\quad \quad \quad \quad 其语法树如下:其语法树如下:

#mermaid-svg-zxZdxQKCewHLfXIp .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-zxZdxQKCewHLfXIp .label text{fill:#333}#mermaid-svg-zxZdxQKCewHLfXIp .node rect,#mermaid-svg-zxZdxQKCewHLfXIp .node circle,#mermaid-svg-zxZdxQKCewHLfXIp .node ellipse,#mermaid-svg-zxZdxQKCewHLfXIp .node polygon,#mermaid-svg-zxZdxQKCewHLfXIp .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-zxZdxQKCewHLfXIp .node .label{text-align:center;fill:#333}#mermaid-svg-zxZdxQKCewHLfXIp .node.clickable{cursor:pointer}#mermaid-svg-zxZdxQKCewHLfXIp .arrowheadPath{fill:#333}#mermaid-svg-zxZdxQKCewHLfXIp .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-zxZdxQKCewHLfXIp .flowchart-link{stroke:#333;fill:none}#mermaid-svg-zxZdxQKCewHLfXIp .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-zxZdxQKCewHLfXIp .edgeLabel rect{opacity:0.9}#mermaid-svg-zxZdxQKCewHLfXIp .edgeLabel span{color:#333}#mermaid-svg-zxZdxQKCewHLfXIp .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-zxZdxQKCewHLfXIp .cluster text{fill:#333}#mermaid-svg-zxZdxQKCewHLfXIp div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-zxZdxQKCewHLfXIp .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-zxZdxQKCewHLfXIp text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-zxZdxQKCewHLfXIp .actor-line{stroke:grey}#mermaid-svg-zxZdxQKCewHLfXIp .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-zxZdxQKCewHLfXIp .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-zxZdxQKCewHLfXIp #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-zxZdxQKCewHLfXIp .sequenceNumber{fill:#fff}#mermaid-svg-zxZdxQKCewHLfXIp #sequencenumber{fill:#333}#mermaid-svg-zxZdxQKCewHLfXIp #crosshead path{fill:#333;stroke:#333}#mermaid-svg-zxZdxQKCewHLfXIp .messageText{fill:#333;stroke:#333}#mermaid-svg-zxZdxQKCewHLfXIp .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-zxZdxQKCewHLfXIp .labelText,#mermaid-svg-zxZdxQKCewHLfXIp .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-zxZdxQKCewHLfXIp .loopText,#mermaid-svg-zxZdxQKCewHLfXIp .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-zxZdxQKCewHLfXIp .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-zxZdxQKCewHLfXIp .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-zxZdxQKCewHLfXIp .noteText,#mermaid-svg-zxZdxQKCewHLfXIp .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-zxZdxQKCewHLfXIp .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-zxZdxQKCewHLfXIp .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-zxZdxQKCewHLfXIp .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-zxZdxQKCewHLfXIp .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zxZdxQKCewHLfXIp .section{stroke:none;opacity:0.2}#mermaid-svg-zxZdxQKCewHLfXIp .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-zxZdxQKCewHLfXIp .section2{fill:#fff400}#mermaid-svg-zxZdxQKCewHLfXIp .section1,#mermaid-svg-zxZdxQKCewHLfXIp .section3{fill:#fff;opacity:0.2}#mermaid-svg-zxZdxQKCewHLfXIp .sectionTitle0{fill:#333}#mermaid-svg-zxZdxQKCewHLfXIp .sectionTitle1{fill:#333}#mermaid-svg-zxZdxQKCewHLfXIp .sectionTitle2{fill:#333}#mermaid-svg-zxZdxQKCewHLfXIp .sectionTitle3{fill:#333}#mermaid-svg-zxZdxQKCewHLfXIp .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zxZdxQKCewHLfXIp .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-zxZdxQKCewHLfXIp .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zxZdxQKCewHLfXIp .grid path{stroke-width:0}#mermaid-svg-zxZdxQKCewHLfXIp .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-zxZdxQKCewHLfXIp .task{stroke-width:2}#mermaid-svg-zxZdxQKCewHLfXIp .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zxZdxQKCewHLfXIp .taskText:not([font-size]){font-size:11px}#mermaid-svg-zxZdxQKCewHLfXIp .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zxZdxQKCewHLfXIp .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-zxZdxQKCewHLfXIp .task.clickable{cursor:pointer}#mermaid-svg-zxZdxQKCewHLfXIp .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-zxZdxQKCewHLfXIp .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-zxZdxQKCewHLfXIp .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-zxZdxQKCewHLfXIp .taskText0,#mermaid-svg-zxZdxQKCewHLfXIp .taskText1,#mermaid-svg-zxZdxQKCewHLfXIp .taskText2,#mermaid-svg-zxZdxQKCewHLfXIp .taskText3{fill:#fff}#mermaid-svg-zxZdxQKCewHLfXIp .task0,#mermaid-svg-zxZdxQKCewHLfXIp .task1,#mermaid-svg-zxZdxQKCewHLfXIp .task2,#mermaid-svg-zxZdxQKCewHLfXIp .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-zxZdxQKCewHLfXIp .taskTextOutside0,#mermaid-svg-zxZdxQKCewHLfXIp .taskTextOutside2{fill:#000}#mermaid-svg-zxZdxQKCewHLfXIp .taskTextOutside1,#mermaid-svg-zxZdxQKCewHLfXIp .taskTextOutside3{fill:#000}#mermaid-svg-zxZdxQKCewHLfXIp .active0,#mermaid-svg-zxZdxQKCewHLfXIp .active1,#mermaid-svg-zxZdxQKCewHLfXIp .active2,#mermaid-svg-zxZdxQKCewHLfXIp .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-zxZdxQKCewHLfXIp .activeText0,#mermaid-svg-zxZdxQKCewHLfXIp .activeText1,#mermaid-svg-zxZdxQKCewHLfXIp .activeText2,#mermaid-svg-zxZdxQKCewHLfXIp .activeText3{fill:#000 !important}#mermaid-svg-zxZdxQKCewHLfXIp .done0,#mermaid-svg-zxZdxQKCewHLfXIp .done1,#mermaid-svg-zxZdxQKCewHLfXIp .done2,#mermaid-svg-zxZdxQKCewHLfXIp .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-zxZdxQKCewHLfXIp .doneText0,#mermaid-svg-zxZdxQKCewHLfXIp .doneText1,#mermaid-svg-zxZdxQKCewHLfXIp .doneText2,#mermaid-svg-zxZdxQKCewHLfXIp .doneText3{fill:#000 !important}#mermaid-svg-zxZdxQKCewHLfXIp .crit0,#mermaid-svg-zxZdxQKCewHLfXIp .crit1,#mermaid-svg-zxZdxQKCewHLfXIp .crit2,#mermaid-svg-zxZdxQKCewHLfXIp .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-zxZdxQKCewHLfXIp .activeCrit0,#mermaid-svg-zxZdxQKCewHLfXIp .activeCrit1,#mermaid-svg-zxZdxQKCewHLfXIp .activeCrit2,#mermaid-svg-zxZdxQKCewHLfXIp .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-zxZdxQKCewHLfXIp .doneCrit0,#mermaid-svg-zxZdxQKCewHLfXIp .doneCrit1,#mermaid-svg-zxZdxQKCewHLfXIp .doneCrit2,#mermaid-svg-zxZdxQKCewHLfXIp .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-zxZdxQKCewHLfXIp .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-zxZdxQKCewHLfXIp .milestoneText{font-style:italic}#mermaid-svg-zxZdxQKCewHLfXIp .doneCritText0,#mermaid-svg-zxZdxQKCewHLfXIp .doneCritText1,#mermaid-svg-zxZdxQKCewHLfXIp .doneCritText2,#mermaid-svg-zxZdxQKCewHLfXIp .doneCritText3{fill:#000 !important}#mermaid-svg-zxZdxQKCewHLfXIp .activeCritText0,#mermaid-svg-zxZdxQKCewHLfXIp .activeCritText1,#mermaid-svg-zxZdxQKCewHLfXIp .activeCritText2,#mermaid-svg-zxZdxQKCewHLfXIp .activeCritText3{fill:#000 !important}#mermaid-svg-zxZdxQKCewHLfXIp .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zxZdxQKCewHLfXIp g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-zxZdxQKCewHLfXIp g.classGroup text .title{font-weight:bolder}#mermaid-svg-zxZdxQKCewHLfXIp g.clickable{cursor:pointer}#mermaid-svg-zxZdxQKCewHLfXIp g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-zxZdxQKCewHLfXIp g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-zxZdxQKCewHLfXIp .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-zxZdxQKCewHLfXIp .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-zxZdxQKCewHLfXIp .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-zxZdxQKCewHLfXIp .dashed-line{stroke-dasharray:3}#mermaid-svg-zxZdxQKCewHLfXIp #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-zxZdxQKCewHLfXIp #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-zxZdxQKCewHLfXIp #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-zxZdxQKCewHLfXIp #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-zxZdxQKCewHLfXIp #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-zxZdxQKCewHLfXIp #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-zxZdxQKCewHLfXIp #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-zxZdxQKCewHLfXIp #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-zxZdxQKCewHLfXIp .commit-id,#mermaid-svg-zxZdxQKCewHLfXIp .commit-msg,#mermaid-svg-zxZdxQKCewHLfXIp .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zxZdxQKCewHLfXIp .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zxZdxQKCewHLfXIp .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zxZdxQKCewHLfXIp g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zxZdxQKCewHLfXIp g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-zxZdxQKCewHLfXIp g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-zxZdxQKCewHLfXIp g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-zxZdxQKCewHLfXIp g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-zxZdxQKCewHLfXIp g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-zxZdxQKCewHLfXIp .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-zxZdxQKCewHLfXIp .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-zxZdxQKCewHLfXIp .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-zxZdxQKCewHLfXIp .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-zxZdxQKCewHLfXIp .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-zxZdxQKCewHLfXIp .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-zxZdxQKCewHLfXIp .edgeLabel text{fill:#333}#mermaid-svg-zxZdxQKCewHLfXIp .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zxZdxQKCewHLfXIp .node circle.state-start{fill:black;stroke:black}#mermaid-svg-zxZdxQKCewHLfXIp .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-zxZdxQKCewHLfXIp #statediagram-barbEnd{fill:#9370db}#mermaid-svg-zxZdxQKCewHLfXIp .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-zxZdxQKCewHLfXIp .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-zxZdxQKCewHLfXIp .statediagram-state .divider{stroke:#9370db}#mermaid-svg-zxZdxQKCewHLfXIp .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-zxZdxQKCewHLfXIp .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-zxZdxQKCewHLfXIp .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-zxZdxQKCewHLfXIp .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-zxZdxQKCewHLfXIp .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-zxZdxQKCewHLfXIp .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-zxZdxQKCewHLfXIp .note-edge{stroke-dasharray:5}#mermaid-svg-zxZdxQKCewHLfXIp .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-zxZdxQKCewHLfXIp .error-icon{fill:#522}#mermaid-svg-zxZdxQKCewHLfXIp .error-text{fill:#522;stroke:#522}#mermaid-svg-zxZdxQKCewHLfXIp .edge-thickness-normal{stroke-width:2px}#mermaid-svg-zxZdxQKCewHLfXIp .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-zxZdxQKCewHLfXIp .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-zxZdxQKCewHLfXIp .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-zxZdxQKCewHLfXIp .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-zxZdxQKCewHLfXIp .marker{fill:#333}#mermaid-svg-zxZdxQKCewHLfXIp .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-zxZdxQKCewHLfXIp .all > * { font-weight: bold !important; fill: transparent !important; stroke: transparent !important; } #mermaid-svg-zxZdxQKCewHLfXIp .all tspan { !important; }#mermaid-svg-zxZdxQKCewHLfXIp {color: rgba(0, 0, 0, 0.75);font: ;}

语法树(最右推导)
E
E
+
E
i
E
*
E
i
i

其最左推导:\quad \quad \quad \quad \textbf{其最左推导:}其最左推导:
E⇒E+E⇒i+E⇒i+E∗E⇒i+i∗E⇒i+i∗i\quad \quad \quad \quad \quad \quad \text{E} ⇒ \text{E} + \text{E} ⇒ i + \text{E} ⇒ i + \text{E} * \text{E} ⇒ i + i * \text{E} ⇒ i + i * iE⇒E+E⇒i+E⇒i+E∗E⇒i+i∗E⇒i+i∗i
其语法树如下:\quad \quad \quad \quad 其语法树如下:其语法树如下:

#mermaid-svg-CtVjo1Ra0RgHDzqs .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs .label text{fill:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs .node rect,#mermaid-svg-CtVjo1Ra0RgHDzqs .node circle,#mermaid-svg-CtVjo1Ra0RgHDzqs .node ellipse,#mermaid-svg-CtVjo1Ra0RgHDzqs .node polygon,#mermaid-svg-CtVjo1Ra0RgHDzqs .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-CtVjo1Ra0RgHDzqs .node .label{text-align:center;fill:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs .node.clickable{cursor:pointer}#mermaid-svg-CtVjo1Ra0RgHDzqs .arrowheadPath{fill:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-CtVjo1Ra0RgHDzqs .flowchart-link{stroke:#333;fill:none}#mermaid-svg-CtVjo1Ra0RgHDzqs .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-CtVjo1Ra0RgHDzqs .edgeLabel rect{opacity:0.9}#mermaid-svg-CtVjo1Ra0RgHDzqs .edgeLabel span{color:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-CtVjo1Ra0RgHDzqs .cluster text{fill:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-CtVjo1Ra0RgHDzqs .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-CtVjo1Ra0RgHDzqs text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-CtVjo1Ra0RgHDzqs .actor-line{stroke:grey}#mermaid-svg-CtVjo1Ra0RgHDzqs .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs .sequenceNumber{fill:#fff}#mermaid-svg-CtVjo1Ra0RgHDzqs #sequencenumber{fill:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs #crosshead path{fill:#333;stroke:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs .messageText{fill:#333;stroke:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-CtVjo1Ra0RgHDzqs .labelText,#mermaid-svg-CtVjo1Ra0RgHDzqs .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-CtVjo1Ra0RgHDzqs .loopText,#mermaid-svg-CtVjo1Ra0RgHDzqs .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-CtVjo1Ra0RgHDzqs .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-CtVjo1Ra0RgHDzqs .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-CtVjo1Ra0RgHDzqs .noteText,#mermaid-svg-CtVjo1Ra0RgHDzqs .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-CtVjo1Ra0RgHDzqs .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-CtVjo1Ra0RgHDzqs .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-CtVjo1Ra0RgHDzqs .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-CtVjo1Ra0RgHDzqs .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-CtVjo1Ra0RgHDzqs .section{stroke:none;opacity:0.2}#mermaid-svg-CtVjo1Ra0RgHDzqs .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-CtVjo1Ra0RgHDzqs .section2{fill:#fff400}#mermaid-svg-CtVjo1Ra0RgHDzqs .section1,#mermaid-svg-CtVjo1Ra0RgHDzqs .section3{fill:#fff;opacity:0.2}#mermaid-svg-CtVjo1Ra0RgHDzqs .sectionTitle0{fill:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs .sectionTitle1{fill:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs .sectionTitle2{fill:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs .sectionTitle3{fill:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-CtVjo1Ra0RgHDzqs .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-CtVjo1Ra0RgHDzqs .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-CtVjo1Ra0RgHDzqs .grid path{stroke-width:0}#mermaid-svg-CtVjo1Ra0RgHDzqs .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-CtVjo1Ra0RgHDzqs .task{stroke-width:2}#mermaid-svg-CtVjo1Ra0RgHDzqs .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-CtVjo1Ra0RgHDzqs .taskText:not([font-size]){font-size:11px}#mermaid-svg-CtVjo1Ra0RgHDzqs .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-CtVjo1Ra0RgHDzqs .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-CtVjo1Ra0RgHDzqs .task.clickable{cursor:pointer}#mermaid-svg-CtVjo1Ra0RgHDzqs .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-CtVjo1Ra0RgHDzqs .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-CtVjo1Ra0RgHDzqs .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-CtVjo1Ra0RgHDzqs .taskText0,#mermaid-svg-CtVjo1Ra0RgHDzqs .taskText1,#mermaid-svg-CtVjo1Ra0RgHDzqs .taskText2,#mermaid-svg-CtVjo1Ra0RgHDzqs .taskText3{fill:#fff}#mermaid-svg-CtVjo1Ra0RgHDzqs .task0,#mermaid-svg-CtVjo1Ra0RgHDzqs .task1,#mermaid-svg-CtVjo1Ra0RgHDzqs .task2,#mermaid-svg-CtVjo1Ra0RgHDzqs .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-CtVjo1Ra0RgHDzqs .taskTextOutside0,#mermaid-svg-CtVjo1Ra0RgHDzqs .taskTextOutside2{fill:#000}#mermaid-svg-CtVjo1Ra0RgHDzqs .taskTextOutside1,#mermaid-svg-CtVjo1Ra0RgHDzqs .taskTextOutside3{fill:#000}#mermaid-svg-CtVjo1Ra0RgHDzqs .active0,#mermaid-svg-CtVjo1Ra0RgHDzqs .active1,#mermaid-svg-CtVjo1Ra0RgHDzqs .active2,#mermaid-svg-CtVjo1Ra0RgHDzqs .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-CtVjo1Ra0RgHDzqs .activeText0,#mermaid-svg-CtVjo1Ra0RgHDzqs .activeText1,#mermaid-svg-CtVjo1Ra0RgHDzqs .activeText2,#mermaid-svg-CtVjo1Ra0RgHDzqs .activeText3{fill:#000 !important}#mermaid-svg-CtVjo1Ra0RgHDzqs .done0,#mermaid-svg-CtVjo1Ra0RgHDzqs .done1,#mermaid-svg-CtVjo1Ra0RgHDzqs .done2,#mermaid-svg-CtVjo1Ra0RgHDzqs .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-CtVjo1Ra0RgHDzqs .doneText0,#mermaid-svg-CtVjo1Ra0RgHDzqs .doneText1,#mermaid-svg-CtVjo1Ra0RgHDzqs .doneText2,#mermaid-svg-CtVjo1Ra0RgHDzqs .doneText3{fill:#000 !important}#mermaid-svg-CtVjo1Ra0RgHDzqs .crit0,#mermaid-svg-CtVjo1Ra0RgHDzqs .crit1,#mermaid-svg-CtVjo1Ra0RgHDzqs .crit2,#mermaid-svg-CtVjo1Ra0RgHDzqs .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-CtVjo1Ra0RgHDzqs .activeCrit0,#mermaid-svg-CtVjo1Ra0RgHDzqs .activeCrit1,#mermaid-svg-CtVjo1Ra0RgHDzqs .activeCrit2,#mermaid-svg-CtVjo1Ra0RgHDzqs .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-CtVjo1Ra0RgHDzqs .doneCrit0,#mermaid-svg-CtVjo1Ra0RgHDzqs .doneCrit1,#mermaid-svg-CtVjo1Ra0RgHDzqs .doneCrit2,#mermaid-svg-CtVjo1Ra0RgHDzqs .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-CtVjo1Ra0RgHDzqs .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-CtVjo1Ra0RgHDzqs .milestoneText{font-style:italic}#mermaid-svg-CtVjo1Ra0RgHDzqs .doneCritText0,#mermaid-svg-CtVjo1Ra0RgHDzqs .doneCritText1,#mermaid-svg-CtVjo1Ra0RgHDzqs .doneCritText2,#mermaid-svg-CtVjo1Ra0RgHDzqs .doneCritText3{fill:#000 !important}#mermaid-svg-CtVjo1Ra0RgHDzqs .activeCritText0,#mermaid-svg-CtVjo1Ra0RgHDzqs .activeCritText1,#mermaid-svg-CtVjo1Ra0RgHDzqs .activeCritText2,#mermaid-svg-CtVjo1Ra0RgHDzqs .activeCritText3{fill:#000 !important}#mermaid-svg-CtVjo1Ra0RgHDzqs .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-CtVjo1Ra0RgHDzqs g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-CtVjo1Ra0RgHDzqs g.classGroup text .title{font-weight:bolder}#mermaid-svg-CtVjo1Ra0RgHDzqs g.clickable{cursor:pointer}#mermaid-svg-CtVjo1Ra0RgHDzqs g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-CtVjo1Ra0RgHDzqs g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-CtVjo1Ra0RgHDzqs .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-CtVjo1Ra0RgHDzqs .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-CtVjo1Ra0RgHDzqs .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-CtVjo1Ra0RgHDzqs .dashed-line{stroke-dasharray:3}#mermaid-svg-CtVjo1Ra0RgHDzqs #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-CtVjo1Ra0RgHDzqs #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-CtVjo1Ra0RgHDzqs #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-CtVjo1Ra0RgHDzqs #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-CtVjo1Ra0RgHDzqs #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-CtVjo1Ra0RgHDzqs #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-CtVjo1Ra0RgHDzqs #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-CtVjo1Ra0RgHDzqs #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-CtVjo1Ra0RgHDzqs .commit-id,#mermaid-svg-CtVjo1Ra0RgHDzqs .commit-msg,#mermaid-svg-CtVjo1Ra0RgHDzqs .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-CtVjo1Ra0RgHDzqs .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-CtVjo1Ra0RgHDzqs .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-CtVjo1Ra0RgHDzqs g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-CtVjo1Ra0RgHDzqs g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-CtVjo1Ra0RgHDzqs g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-CtVjo1Ra0RgHDzqs g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-CtVjo1Ra0RgHDzqs g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-CtVjo1Ra0RgHDzqs .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-CtVjo1Ra0RgHDzqs .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-CtVjo1Ra0RgHDzqs .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-CtVjo1Ra0RgHDzqs .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-CtVjo1Ra0RgHDzqs .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-CtVjo1Ra0RgHDzqs .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-CtVjo1Ra0RgHDzqs .edgeLabel text{fill:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-CtVjo1Ra0RgHDzqs .node circle.state-start{fill:black;stroke:black}#mermaid-svg-CtVjo1Ra0RgHDzqs .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-CtVjo1Ra0RgHDzqs #statediagram-barbEnd{fill:#9370db}#mermaid-svg-CtVjo1Ra0RgHDzqs .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-CtVjo1Ra0RgHDzqs .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-CtVjo1Ra0RgHDzqs .statediagram-state .divider{stroke:#9370db}#mermaid-svg-CtVjo1Ra0RgHDzqs .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-CtVjo1Ra0RgHDzqs .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-CtVjo1Ra0RgHDzqs .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-CtVjo1Ra0RgHDzqs .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-CtVjo1Ra0RgHDzqs .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-CtVjo1Ra0RgHDzqs .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-CtVjo1Ra0RgHDzqs .note-edge{stroke-dasharray:5}#mermaid-svg-CtVjo1Ra0RgHDzqs .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-CtVjo1Ra0RgHDzqs .error-icon{fill:#522}#mermaid-svg-CtVjo1Ra0RgHDzqs .error-text{fill:#522;stroke:#522}#mermaid-svg-CtVjo1Ra0RgHDzqs .edge-thickness-normal{stroke-width:2px}#mermaid-svg-CtVjo1Ra0RgHDzqs .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-CtVjo1Ra0RgHDzqs .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-CtVjo1Ra0RgHDzqs .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-CtVjo1Ra0RgHDzqs .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-CtVjo1Ra0RgHDzqs .marker{fill:#333}#mermaid-svg-CtVjo1Ra0RgHDzqs .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-CtVjo1Ra0RgHDzqs .all > * { font-weight: bold !important; fill: transparent !important; stroke: transparent !important; } #mermaid-svg-CtVjo1Ra0RgHDzqs .all tspan { !important; }#mermaid-svg-CtVjo1Ra0RgHDzqs {color: rgba(0, 0, 0, 0.75);font: ;}

语法树(最左推导)
E
E
+
E
i
E
*
E
i
i

其实还有另一种最左推导:\quad \quad \quad \quad \textbf{其实还有另一种最左推导:}其实还有另一种最左推导:
E⇒E∗E⇒E+E∗E⇒i+E∗E⇒i+i∗E⇒i+i∗i\quad \quad \quad \quad \quad \quad \text{E} ⇒ \text{E} * \text{E} ⇒ \text{E} + \text{E} * \text{E} ⇒ i + \text{E} * \text{E} ⇒ i + i * \text{E} ⇒ i + i * iE⇒E∗E⇒E+E∗E⇒i+E∗E⇒i+i∗E⇒i+i∗i
其语法树如下:\quad \quad \quad \quad 其语法树如下:其语法树如下:

#mermaid-svg-KfIS0HSO2Q0aLdEh .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh .label text{fill:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh .node rect,#mermaid-svg-KfIS0HSO2Q0aLdEh .node circle,#mermaid-svg-KfIS0HSO2Q0aLdEh .node ellipse,#mermaid-svg-KfIS0HSO2Q0aLdEh .node polygon,#mermaid-svg-KfIS0HSO2Q0aLdEh .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-KfIS0HSO2Q0aLdEh .node .label{text-align:center;fill:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh .node.clickable{cursor:pointer}#mermaid-svg-KfIS0HSO2Q0aLdEh .arrowheadPath{fill:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-KfIS0HSO2Q0aLdEh .flowchart-link{stroke:#333;fill:none}#mermaid-svg-KfIS0HSO2Q0aLdEh .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-KfIS0HSO2Q0aLdEh .edgeLabel rect{opacity:0.9}#mermaid-svg-KfIS0HSO2Q0aLdEh .edgeLabel span{color:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-KfIS0HSO2Q0aLdEh .cluster text{fill:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-KfIS0HSO2Q0aLdEh .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-KfIS0HSO2Q0aLdEh text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-KfIS0HSO2Q0aLdEh .actor-line{stroke:grey}#mermaid-svg-KfIS0HSO2Q0aLdEh .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh .sequenceNumber{fill:#fff}#mermaid-svg-KfIS0HSO2Q0aLdEh #sequencenumber{fill:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh #crosshead path{fill:#333;stroke:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh .messageText{fill:#333;stroke:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-KfIS0HSO2Q0aLdEh .labelText,#mermaid-svg-KfIS0HSO2Q0aLdEh .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-KfIS0HSO2Q0aLdEh .loopText,#mermaid-svg-KfIS0HSO2Q0aLdEh .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-KfIS0HSO2Q0aLdEh .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-KfIS0HSO2Q0aLdEh .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-KfIS0HSO2Q0aLdEh .noteText,#mermaid-svg-KfIS0HSO2Q0aLdEh .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-KfIS0HSO2Q0aLdEh .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-KfIS0HSO2Q0aLdEh .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-KfIS0HSO2Q0aLdEh .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-KfIS0HSO2Q0aLdEh .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KfIS0HSO2Q0aLdEh .section{stroke:none;opacity:0.2}#mermaid-svg-KfIS0HSO2Q0aLdEh .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-KfIS0HSO2Q0aLdEh .section2{fill:#fff400}#mermaid-svg-KfIS0HSO2Q0aLdEh .section1,#mermaid-svg-KfIS0HSO2Q0aLdEh .section3{fill:#fff;opacity:0.2}#mermaid-svg-KfIS0HSO2Q0aLdEh .sectionTitle0{fill:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh .sectionTitle1{fill:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh .sectionTitle2{fill:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh .sectionTitle3{fill:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KfIS0HSO2Q0aLdEh .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-KfIS0HSO2Q0aLdEh .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KfIS0HSO2Q0aLdEh .grid path{stroke-width:0}#mermaid-svg-KfIS0HSO2Q0aLdEh .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-KfIS0HSO2Q0aLdEh .task{stroke-width:2}#mermaid-svg-KfIS0HSO2Q0aLdEh .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KfIS0HSO2Q0aLdEh .taskText:not([font-size]){font-size:11px}#mermaid-svg-KfIS0HSO2Q0aLdEh .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KfIS0HSO2Q0aLdEh .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-KfIS0HSO2Q0aLdEh .task.clickable{cursor:pointer}#mermaid-svg-KfIS0HSO2Q0aLdEh .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-KfIS0HSO2Q0aLdEh .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-KfIS0HSO2Q0aLdEh .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-KfIS0HSO2Q0aLdEh .taskText0,#mermaid-svg-KfIS0HSO2Q0aLdEh .taskText1,#mermaid-svg-KfIS0HSO2Q0aLdEh .taskText2,#mermaid-svg-KfIS0HSO2Q0aLdEh .taskText3{fill:#fff}#mermaid-svg-KfIS0HSO2Q0aLdEh .task0,#mermaid-svg-KfIS0HSO2Q0aLdEh .task1,#mermaid-svg-KfIS0HSO2Q0aLdEh .task2,#mermaid-svg-KfIS0HSO2Q0aLdEh .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-KfIS0HSO2Q0aLdEh .taskTextOutside0,#mermaid-svg-KfIS0HSO2Q0aLdEh .taskTextOutside2{fill:#000}#mermaid-svg-KfIS0HSO2Q0aLdEh .taskTextOutside1,#mermaid-svg-KfIS0HSO2Q0aLdEh .taskTextOutside3{fill:#000}#mermaid-svg-KfIS0HSO2Q0aLdEh .active0,#mermaid-svg-KfIS0HSO2Q0aLdEh .active1,#mermaid-svg-KfIS0HSO2Q0aLdEh .active2,#mermaid-svg-KfIS0HSO2Q0aLdEh .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-KfIS0HSO2Q0aLdEh .activeText0,#mermaid-svg-KfIS0HSO2Q0aLdEh .activeText1,#mermaid-svg-KfIS0HSO2Q0aLdEh .activeText2,#mermaid-svg-KfIS0HSO2Q0aLdEh .activeText3{fill:#000 !important}#mermaid-svg-KfIS0HSO2Q0aLdEh .done0,#mermaid-svg-KfIS0HSO2Q0aLdEh .done1,#mermaid-svg-KfIS0HSO2Q0aLdEh .done2,#mermaid-svg-KfIS0HSO2Q0aLdEh .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-KfIS0HSO2Q0aLdEh .doneText0,#mermaid-svg-KfIS0HSO2Q0aLdEh .doneText1,#mermaid-svg-KfIS0HSO2Q0aLdEh .doneText2,#mermaid-svg-KfIS0HSO2Q0aLdEh .doneText3{fill:#000 !important}#mermaid-svg-KfIS0HSO2Q0aLdEh .crit0,#mermaid-svg-KfIS0HSO2Q0aLdEh .crit1,#mermaid-svg-KfIS0HSO2Q0aLdEh .crit2,#mermaid-svg-KfIS0HSO2Q0aLdEh .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-KfIS0HSO2Q0aLdEh .activeCrit0,#mermaid-svg-KfIS0HSO2Q0aLdEh .activeCrit1,#mermaid-svg-KfIS0HSO2Q0aLdEh .activeCrit2,#mermaid-svg-KfIS0HSO2Q0aLdEh .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-KfIS0HSO2Q0aLdEh .doneCrit0,#mermaid-svg-KfIS0HSO2Q0aLdEh .doneCrit1,#mermaid-svg-KfIS0HSO2Q0aLdEh .doneCrit2,#mermaid-svg-KfIS0HSO2Q0aLdEh .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-KfIS0HSO2Q0aLdEh .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-KfIS0HSO2Q0aLdEh .milestoneText{font-style:italic}#mermaid-svg-KfIS0HSO2Q0aLdEh .doneCritText0,#mermaid-svg-KfIS0HSO2Q0aLdEh .doneCritText1,#mermaid-svg-KfIS0HSO2Q0aLdEh .doneCritText2,#mermaid-svg-KfIS0HSO2Q0aLdEh .doneCritText3{fill:#000 !important}#mermaid-svg-KfIS0HSO2Q0aLdEh .activeCritText0,#mermaid-svg-KfIS0HSO2Q0aLdEh .activeCritText1,#mermaid-svg-KfIS0HSO2Q0aLdEh .activeCritText2,#mermaid-svg-KfIS0HSO2Q0aLdEh .activeCritText3{fill:#000 !important}#mermaid-svg-KfIS0HSO2Q0aLdEh .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KfIS0HSO2Q0aLdEh g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-KfIS0HSO2Q0aLdEh g.classGroup text .title{font-weight:bolder}#mermaid-svg-KfIS0HSO2Q0aLdEh g.clickable{cursor:pointer}#mermaid-svg-KfIS0HSO2Q0aLdEh g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-KfIS0HSO2Q0aLdEh g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-KfIS0HSO2Q0aLdEh .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-KfIS0HSO2Q0aLdEh .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-KfIS0HSO2Q0aLdEh .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-KfIS0HSO2Q0aLdEh .dashed-line{stroke-dasharray:3}#mermaid-svg-KfIS0HSO2Q0aLdEh #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KfIS0HSO2Q0aLdEh #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KfIS0HSO2Q0aLdEh #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-KfIS0HSO2Q0aLdEh #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-KfIS0HSO2Q0aLdEh #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KfIS0HSO2Q0aLdEh #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KfIS0HSO2Q0aLdEh #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KfIS0HSO2Q0aLdEh #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KfIS0HSO2Q0aLdEh .commit-id,#mermaid-svg-KfIS0HSO2Q0aLdEh .commit-msg,#mermaid-svg-KfIS0HSO2Q0aLdEh .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KfIS0HSO2Q0aLdEh .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KfIS0HSO2Q0aLdEh .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KfIS0HSO2Q0aLdEh g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KfIS0HSO2Q0aLdEh g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-KfIS0HSO2Q0aLdEh g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-KfIS0HSO2Q0aLdEh g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-KfIS0HSO2Q0aLdEh g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-KfIS0HSO2Q0aLdEh .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-KfIS0HSO2Q0aLdEh .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-KfIS0HSO2Q0aLdEh .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-KfIS0HSO2Q0aLdEh .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-KfIS0HSO2Q0aLdEh .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-KfIS0HSO2Q0aLdEh .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-KfIS0HSO2Q0aLdEh .edgeLabel text{fill:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KfIS0HSO2Q0aLdEh .node circle.state-start{fill:black;stroke:black}#mermaid-svg-KfIS0HSO2Q0aLdEh .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-KfIS0HSO2Q0aLdEh #statediagram-barbEnd{fill:#9370db}#mermaid-svg-KfIS0HSO2Q0aLdEh .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-KfIS0HSO2Q0aLdEh .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-KfIS0HSO2Q0aLdEh .statediagram-state .divider{stroke:#9370db}#mermaid-svg-KfIS0HSO2Q0aLdEh .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-KfIS0HSO2Q0aLdEh .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-KfIS0HSO2Q0aLdEh .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-KfIS0HSO2Q0aLdEh .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-KfIS0HSO2Q0aLdEh .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-KfIS0HSO2Q0aLdEh .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-KfIS0HSO2Q0aLdEh .note-edge{stroke-dasharray:5}#mermaid-svg-KfIS0HSO2Q0aLdEh .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-KfIS0HSO2Q0aLdEh .error-icon{fill:#522}#mermaid-svg-KfIS0HSO2Q0aLdEh .error-text{fill:#522;stroke:#522}#mermaid-svg-KfIS0HSO2Q0aLdEh .edge-thickness-normal{stroke-width:2px}#mermaid-svg-KfIS0HSO2Q0aLdEh .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-KfIS0HSO2Q0aLdEh .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-KfIS0HSO2Q0aLdEh .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-KfIS0HSO2Q0aLdEh .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-KfIS0HSO2Q0aLdEh .marker{fill:#333}#mermaid-svg-KfIS0HSO2Q0aLdEh .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-KfIS0HSO2Q0aLdEh .all > * { font-weight: bold !important; fill: transparent !important; stroke: transparent !important; } #mermaid-svg-KfIS0HSO2Q0aLdEh .all tspan { !important; }#mermaid-svg-KfIS0HSO2Q0aLdEh {color: rgba(0, 0, 0, 0.75);font: ;}

语法树(另一种最左推导)
E
E
*
E
E
+
E
i
i
i

显然,文法G[E]的句子“i+i∗i”有两种不同的语法树。\quad \quad \quad \quad 显然,文法\text{G}[\text{E}]的句子“i + i * i”有两种不同的语法树。显然,文法G[E]的句子“i+i∗i”有两种不同的语法树。
所以,文法G[E]是一种二义性文法。\quad \quad \quad \quad 所以,文法\text{G}[\text{E}]是一种二义性文法。所以,文法G[E]是一种二义性文法。

文法G′[E]\quad \quad \pmb{文法\text{G}^{'}[\text{E}]}文法G′[E]​文法G′[E]​​文法G′[E]
其最右推导:\quad \quad \quad \quad \textbf{其最右推导:}其最右推导:
E⇒E+T⇒E+T∗F⇒E+T∗i⇒E+F∗i⇒E+i∗i⇒T+i∗i⇒F+i∗i⇒i+i∗i\quad \quad \quad \quad \quad \quad \text{E} ⇒ \text{E} + \text{T} ⇒ \text{E} + \text{T} * \text{F} ⇒ \text{E} + \text{T} * i ⇒ \text{E} + \text{F} * i ⇒ \text{E} + i * i ⇒ \text{T} + i * i ⇒ \text{F} + i * i ⇒ i + i * iE⇒E+T⇒E+T∗F⇒E+T∗i⇒E+F∗i⇒E+i∗i⇒T+i∗i⇒F+i∗i⇒i+i∗i
其语法树如下:\quad \quad \quad \quad 其语法树如下:其语法树如下:

#mermaid-svg-xcd9MiksQSN05mIS .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-xcd9MiksQSN05mIS .label text{fill:#333}#mermaid-svg-xcd9MiksQSN05mIS .node rect,#mermaid-svg-xcd9MiksQSN05mIS .node circle,#mermaid-svg-xcd9MiksQSN05mIS .node ellipse,#mermaid-svg-xcd9MiksQSN05mIS .node polygon,#mermaid-svg-xcd9MiksQSN05mIS .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-xcd9MiksQSN05mIS .node .label{text-align:center;fill:#333}#mermaid-svg-xcd9MiksQSN05mIS .node.clickable{cursor:pointer}#mermaid-svg-xcd9MiksQSN05mIS .arrowheadPath{fill:#333}#mermaid-svg-xcd9MiksQSN05mIS .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-xcd9MiksQSN05mIS .flowchart-link{stroke:#333;fill:none}#mermaid-svg-xcd9MiksQSN05mIS .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-xcd9MiksQSN05mIS .edgeLabel rect{opacity:0.9}#mermaid-svg-xcd9MiksQSN05mIS .edgeLabel span{color:#333}#mermaid-svg-xcd9MiksQSN05mIS .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-xcd9MiksQSN05mIS .cluster text{fill:#333}#mermaid-svg-xcd9MiksQSN05mIS div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-xcd9MiksQSN05mIS .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-xcd9MiksQSN05mIS text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-xcd9MiksQSN05mIS .actor-line{stroke:grey}#mermaid-svg-xcd9MiksQSN05mIS .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-xcd9MiksQSN05mIS .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-xcd9MiksQSN05mIS #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-xcd9MiksQSN05mIS .sequenceNumber{fill:#fff}#mermaid-svg-xcd9MiksQSN05mIS #sequencenumber{fill:#333}#mermaid-svg-xcd9MiksQSN05mIS #crosshead path{fill:#333;stroke:#333}#mermaid-svg-xcd9MiksQSN05mIS .messageText{fill:#333;stroke:#333}#mermaid-svg-xcd9MiksQSN05mIS .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-xcd9MiksQSN05mIS .labelText,#mermaid-svg-xcd9MiksQSN05mIS .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-xcd9MiksQSN05mIS .loopText,#mermaid-svg-xcd9MiksQSN05mIS .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-xcd9MiksQSN05mIS .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-xcd9MiksQSN05mIS .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-xcd9MiksQSN05mIS .noteText,#mermaid-svg-xcd9MiksQSN05mIS .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-xcd9MiksQSN05mIS .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-xcd9MiksQSN05mIS .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-xcd9MiksQSN05mIS .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-xcd9MiksQSN05mIS .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcd9MiksQSN05mIS .section{stroke:none;opacity:0.2}#mermaid-svg-xcd9MiksQSN05mIS .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-xcd9MiksQSN05mIS .section2{fill:#fff400}#mermaid-svg-xcd9MiksQSN05mIS .section1,#mermaid-svg-xcd9MiksQSN05mIS .section3{fill:#fff;opacity:0.2}#mermaid-svg-xcd9MiksQSN05mIS .sectionTitle0{fill:#333}#mermaid-svg-xcd9MiksQSN05mIS .sectionTitle1{fill:#333}#mermaid-svg-xcd9MiksQSN05mIS .sectionTitle2{fill:#333}#mermaid-svg-xcd9MiksQSN05mIS .sectionTitle3{fill:#333}#mermaid-svg-xcd9MiksQSN05mIS .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcd9MiksQSN05mIS .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-xcd9MiksQSN05mIS .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcd9MiksQSN05mIS .grid path{stroke-width:0}#mermaid-svg-xcd9MiksQSN05mIS .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-xcd9MiksQSN05mIS .task{stroke-width:2}#mermaid-svg-xcd9MiksQSN05mIS .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcd9MiksQSN05mIS .taskText:not([font-size]){font-size:11px}#mermaid-svg-xcd9MiksQSN05mIS .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcd9MiksQSN05mIS .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-xcd9MiksQSN05mIS .task.clickable{cursor:pointer}#mermaid-svg-xcd9MiksQSN05mIS .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-xcd9MiksQSN05mIS .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-xcd9MiksQSN05mIS .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-xcd9MiksQSN05mIS .taskText0,#mermaid-svg-xcd9MiksQSN05mIS .taskText1,#mermaid-svg-xcd9MiksQSN05mIS .taskText2,#mermaid-svg-xcd9MiksQSN05mIS .taskText3{fill:#fff}#mermaid-svg-xcd9MiksQSN05mIS .task0,#mermaid-svg-xcd9MiksQSN05mIS .task1,#mermaid-svg-xcd9MiksQSN05mIS .task2,#mermaid-svg-xcd9MiksQSN05mIS .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-xcd9MiksQSN05mIS .taskTextOutside0,#mermaid-svg-xcd9MiksQSN05mIS .taskTextOutside2{fill:#000}#mermaid-svg-xcd9MiksQSN05mIS .taskTextOutside1,#mermaid-svg-xcd9MiksQSN05mIS .taskTextOutside3{fill:#000}#mermaid-svg-xcd9MiksQSN05mIS .active0,#mermaid-svg-xcd9MiksQSN05mIS .active1,#mermaid-svg-xcd9MiksQSN05mIS .active2,#mermaid-svg-xcd9MiksQSN05mIS .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-xcd9MiksQSN05mIS .activeText0,#mermaid-svg-xcd9MiksQSN05mIS .activeText1,#mermaid-svg-xcd9MiksQSN05mIS .activeText2,#mermaid-svg-xcd9MiksQSN05mIS .activeText3{fill:#000 !important}#mermaid-svg-xcd9MiksQSN05mIS .done0,#mermaid-svg-xcd9MiksQSN05mIS .done1,#mermaid-svg-xcd9MiksQSN05mIS .done2,#mermaid-svg-xcd9MiksQSN05mIS .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-xcd9MiksQSN05mIS .doneText0,#mermaid-svg-xcd9MiksQSN05mIS .doneText1,#mermaid-svg-xcd9MiksQSN05mIS .doneText2,#mermaid-svg-xcd9MiksQSN05mIS .doneText3{fill:#000 !important}#mermaid-svg-xcd9MiksQSN05mIS .crit0,#mermaid-svg-xcd9MiksQSN05mIS .crit1,#mermaid-svg-xcd9MiksQSN05mIS .crit2,#mermaid-svg-xcd9MiksQSN05mIS .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-xcd9MiksQSN05mIS .activeCrit0,#mermaid-svg-xcd9MiksQSN05mIS .activeCrit1,#mermaid-svg-xcd9MiksQSN05mIS .activeCrit2,#mermaid-svg-xcd9MiksQSN05mIS .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-xcd9MiksQSN05mIS .doneCrit0,#mermaid-svg-xcd9MiksQSN05mIS .doneCrit1,#mermaid-svg-xcd9MiksQSN05mIS .doneCrit2,#mermaid-svg-xcd9MiksQSN05mIS .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-xcd9MiksQSN05mIS .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-xcd9MiksQSN05mIS .milestoneText{font-style:italic}#mermaid-svg-xcd9MiksQSN05mIS .doneCritText0,#mermaid-svg-xcd9MiksQSN05mIS .doneCritText1,#mermaid-svg-xcd9MiksQSN05mIS .doneCritText2,#mermaid-svg-xcd9MiksQSN05mIS .doneCritText3{fill:#000 !important}#mermaid-svg-xcd9MiksQSN05mIS .activeCritText0,#mermaid-svg-xcd9MiksQSN05mIS .activeCritText1,#mermaid-svg-xcd9MiksQSN05mIS .activeCritText2,#mermaid-svg-xcd9MiksQSN05mIS .activeCritText3{fill:#000 !important}#mermaid-svg-xcd9MiksQSN05mIS .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcd9MiksQSN05mIS g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-xcd9MiksQSN05mIS g.classGroup text .title{font-weight:bolder}#mermaid-svg-xcd9MiksQSN05mIS g.clickable{cursor:pointer}#mermaid-svg-xcd9MiksQSN05mIS g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-xcd9MiksQSN05mIS g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-xcd9MiksQSN05mIS .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-xcd9MiksQSN05mIS .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-xcd9MiksQSN05mIS .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-xcd9MiksQSN05mIS .dashed-line{stroke-dasharray:3}#mermaid-svg-xcd9MiksQSN05mIS #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xcd9MiksQSN05mIS #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xcd9MiksQSN05mIS #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-xcd9MiksQSN05mIS #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-xcd9MiksQSN05mIS #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xcd9MiksQSN05mIS #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xcd9MiksQSN05mIS #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xcd9MiksQSN05mIS #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xcd9MiksQSN05mIS .commit-id,#mermaid-svg-xcd9MiksQSN05mIS .commit-msg,#mermaid-svg-xcd9MiksQSN05mIS .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcd9MiksQSN05mIS .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcd9MiksQSN05mIS .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcd9MiksQSN05mIS g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcd9MiksQSN05mIS g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-xcd9MiksQSN05mIS g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-xcd9MiksQSN05mIS g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-xcd9MiksQSN05mIS g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-xcd9MiksQSN05mIS g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-xcd9MiksQSN05mIS .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-xcd9MiksQSN05mIS .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-xcd9MiksQSN05mIS .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-xcd9MiksQSN05mIS .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-xcd9MiksQSN05mIS .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-xcd9MiksQSN05mIS .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-xcd9MiksQSN05mIS .edgeLabel text{fill:#333}#mermaid-svg-xcd9MiksQSN05mIS .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcd9MiksQSN05mIS .node circle.state-start{fill:black;stroke:black}#mermaid-svg-xcd9MiksQSN05mIS .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-xcd9MiksQSN05mIS #statediagram-barbEnd{fill:#9370db}#mermaid-svg-xcd9MiksQSN05mIS .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-xcd9MiksQSN05mIS .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-xcd9MiksQSN05mIS .statediagram-state .divider{stroke:#9370db}#mermaid-svg-xcd9MiksQSN05mIS .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-xcd9MiksQSN05mIS .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-xcd9MiksQSN05mIS .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-xcd9MiksQSN05mIS .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-xcd9MiksQSN05mIS .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-xcd9MiksQSN05mIS .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-xcd9MiksQSN05mIS .note-edge{stroke-dasharray:5}#mermaid-svg-xcd9MiksQSN05mIS .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-xcd9MiksQSN05mIS .error-icon{fill:#522}#mermaid-svg-xcd9MiksQSN05mIS .error-text{fill:#522;stroke:#522}#mermaid-svg-xcd9MiksQSN05mIS .edge-thickness-normal{stroke-width:2px}#mermaid-svg-xcd9MiksQSN05mIS .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-xcd9MiksQSN05mIS .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-xcd9MiksQSN05mIS .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-xcd9MiksQSN05mIS .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-xcd9MiksQSN05mIS .marker{fill:#333}#mermaid-svg-xcd9MiksQSN05mIS .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-xcd9MiksQSN05mIS .all > * { font-weight: bold !important; fill: transparent !important; stroke: transparent !important; } #mermaid-svg-xcd9MiksQSN05mIS .all tspan { !important; }#mermaid-svg-xcd9MiksQSN05mIS {color: rgba(0, 0, 0, 0.75);font: ;}

语法树(最左推导)
E
E
+
T
T
T
*
F
F
F
i
i
i

其最左推导:\quad \quad \quad \quad \textbf{其最左推导:}其最左推导:
E⇒E+T⇒T+T⇒F+T⇒i+T⇒i+T∗F⇒i+F∗F⇒i+i∗F⇒i+i∗i\quad \quad \quad \quad \quad \quad \text{E} ⇒ \text{E} + \text{T} ⇒ \text{T} + \text{T} ⇒ \text{F} + \text{T} ⇒ i + \text{T} ⇒ i + \text{T} * \text{F} ⇒ i + \text{F} * \text{F} ⇒ i + i * \text{F} ⇒ i + i * iE⇒E+T⇒T+T⇒F+T⇒i+T⇒i+T∗F⇒i+F∗F⇒i+i∗F⇒i+i∗i
其语法树如下:\quad \quad \quad \quad 其语法树如下:其语法树如下:

#mermaid-svg-A5O9RUhJnDnWvaQz .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-A5O9RUhJnDnWvaQz .label text{fill:#333}#mermaid-svg-A5O9RUhJnDnWvaQz .node rect,#mermaid-svg-A5O9RUhJnDnWvaQz .node circle,#mermaid-svg-A5O9RUhJnDnWvaQz .node ellipse,#mermaid-svg-A5O9RUhJnDnWvaQz .node polygon,#mermaid-svg-A5O9RUhJnDnWvaQz .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-A5O9RUhJnDnWvaQz .node .label{text-align:center;fill:#333}#mermaid-svg-A5O9RUhJnDnWvaQz .node.clickable{cursor:pointer}#mermaid-svg-A5O9RUhJnDnWvaQz .arrowheadPath{fill:#333}#mermaid-svg-A5O9RUhJnDnWvaQz .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-A5O9RUhJnDnWvaQz .flowchart-link{stroke:#333;fill:none}#mermaid-svg-A5O9RUhJnDnWvaQz .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-A5O9RUhJnDnWvaQz .edgeLabel rect{opacity:0.9}#mermaid-svg-A5O9RUhJnDnWvaQz .edgeLabel span{color:#333}#mermaid-svg-A5O9RUhJnDnWvaQz .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-A5O9RUhJnDnWvaQz .cluster text{fill:#333}#mermaid-svg-A5O9RUhJnDnWvaQz div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-A5O9RUhJnDnWvaQz .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-A5O9RUhJnDnWvaQz text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-A5O9RUhJnDnWvaQz .actor-line{stroke:grey}#mermaid-svg-A5O9RUhJnDnWvaQz .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-A5O9RUhJnDnWvaQz .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-A5O9RUhJnDnWvaQz #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-A5O9RUhJnDnWvaQz .sequenceNumber{fill:#fff}#mermaid-svg-A5O9RUhJnDnWvaQz #sequencenumber{fill:#333}#mermaid-svg-A5O9RUhJnDnWvaQz #crosshead path{fill:#333;stroke:#333}#mermaid-svg-A5O9RUhJnDnWvaQz .messageText{fill:#333;stroke:#333}#mermaid-svg-A5O9RUhJnDnWvaQz .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-A5O9RUhJnDnWvaQz .labelText,#mermaid-svg-A5O9RUhJnDnWvaQz .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-A5O9RUhJnDnWvaQz .loopText,#mermaid-svg-A5O9RUhJnDnWvaQz .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-A5O9RUhJnDnWvaQz .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-A5O9RUhJnDnWvaQz .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-A5O9RUhJnDnWvaQz .noteText,#mermaid-svg-A5O9RUhJnDnWvaQz .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-A5O9RUhJnDnWvaQz .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-A5O9RUhJnDnWvaQz .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-A5O9RUhJnDnWvaQz .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-A5O9RUhJnDnWvaQz .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-A5O9RUhJnDnWvaQz .section{stroke:none;opacity:0.2}#mermaid-svg-A5O9RUhJnDnWvaQz .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-A5O9RUhJnDnWvaQz .section2{fill:#fff400}#mermaid-svg-A5O9RUhJnDnWvaQz .section1,#mermaid-svg-A5O9RUhJnDnWvaQz .section3{fill:#fff;opacity:0.2}#mermaid-svg-A5O9RUhJnDnWvaQz .sectionTitle0{fill:#333}#mermaid-svg-A5O9RUhJnDnWvaQz .sectionTitle1{fill:#333}#mermaid-svg-A5O9RUhJnDnWvaQz .sectionTitle2{fill:#333}#mermaid-svg-A5O9RUhJnDnWvaQz .sectionTitle3{fill:#333}#mermaid-svg-A5O9RUhJnDnWvaQz .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-A5O9RUhJnDnWvaQz .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-A5O9RUhJnDnWvaQz .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-A5O9RUhJnDnWvaQz .grid path{stroke-width:0}#mermaid-svg-A5O9RUhJnDnWvaQz .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-A5O9RUhJnDnWvaQz .task{stroke-width:2}#mermaid-svg-A5O9RUhJnDnWvaQz .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-A5O9RUhJnDnWvaQz .taskText:not([font-size]){font-size:11px}#mermaid-svg-A5O9RUhJnDnWvaQz .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-A5O9RUhJnDnWvaQz .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-A5O9RUhJnDnWvaQz .task.clickable{cursor:pointer}#mermaid-svg-A5O9RUhJnDnWvaQz .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-A5O9RUhJnDnWvaQz .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-A5O9RUhJnDnWvaQz .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-A5O9RUhJnDnWvaQz .taskText0,#mermaid-svg-A5O9RUhJnDnWvaQz .taskText1,#mermaid-svg-A5O9RUhJnDnWvaQz .taskText2,#mermaid-svg-A5O9RUhJnDnWvaQz .taskText3{fill:#fff}#mermaid-svg-A5O9RUhJnDnWvaQz .task0,#mermaid-svg-A5O9RUhJnDnWvaQz .task1,#mermaid-svg-A5O9RUhJnDnWvaQz .task2,#mermaid-svg-A5O9RUhJnDnWvaQz .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-A5O9RUhJnDnWvaQz .taskTextOutside0,#mermaid-svg-A5O9RUhJnDnWvaQz .taskTextOutside2{fill:#000}#mermaid-svg-A5O9RUhJnDnWvaQz .taskTextOutside1,#mermaid-svg-A5O9RUhJnDnWvaQz .taskTextOutside3{fill:#000}#mermaid-svg-A5O9RUhJnDnWvaQz .active0,#mermaid-svg-A5O9RUhJnDnWvaQz .active1,#mermaid-svg-A5O9RUhJnDnWvaQz .active2,#mermaid-svg-A5O9RUhJnDnWvaQz .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-A5O9RUhJnDnWvaQz .activeText0,#mermaid-svg-A5O9RUhJnDnWvaQz .activeText1,#mermaid-svg-A5O9RUhJnDnWvaQz .activeText2,#mermaid-svg-A5O9RUhJnDnWvaQz .activeText3{fill:#000 !important}#mermaid-svg-A5O9RUhJnDnWvaQz .done0,#mermaid-svg-A5O9RUhJnDnWvaQz .done1,#mermaid-svg-A5O9RUhJnDnWvaQz .done2,#mermaid-svg-A5O9RUhJnDnWvaQz .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-A5O9RUhJnDnWvaQz .doneText0,#mermaid-svg-A5O9RUhJnDnWvaQz .doneText1,#mermaid-svg-A5O9RUhJnDnWvaQz .doneText2,#mermaid-svg-A5O9RUhJnDnWvaQz .doneText3{fill:#000 !important}#mermaid-svg-A5O9RUhJnDnWvaQz .crit0,#mermaid-svg-A5O9RUhJnDnWvaQz .crit1,#mermaid-svg-A5O9RUhJnDnWvaQz .crit2,#mermaid-svg-A5O9RUhJnDnWvaQz .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-A5O9RUhJnDnWvaQz .activeCrit0,#mermaid-svg-A5O9RUhJnDnWvaQz .activeCrit1,#mermaid-svg-A5O9RUhJnDnWvaQz .activeCrit2,#mermaid-svg-A5O9RUhJnDnWvaQz .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-A5O9RUhJnDnWvaQz .doneCrit0,#mermaid-svg-A5O9RUhJnDnWvaQz .doneCrit1,#mermaid-svg-A5O9RUhJnDnWvaQz .doneCrit2,#mermaid-svg-A5O9RUhJnDnWvaQz .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-A5O9RUhJnDnWvaQz .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-A5O9RUhJnDnWvaQz .milestoneText{font-style:italic}#mermaid-svg-A5O9RUhJnDnWvaQz .doneCritText0,#mermaid-svg-A5O9RUhJnDnWvaQz .doneCritText1,#mermaid-svg-A5O9RUhJnDnWvaQz .doneCritText2,#mermaid-svg-A5O9RUhJnDnWvaQz .doneCritText3{fill:#000 !important}#mermaid-svg-A5O9RUhJnDnWvaQz .activeCritText0,#mermaid-svg-A5O9RUhJnDnWvaQz .activeCritText1,#mermaid-svg-A5O9RUhJnDnWvaQz .activeCritText2,#mermaid-svg-A5O9RUhJnDnWvaQz .activeCritText3{fill:#000 !important}#mermaid-svg-A5O9RUhJnDnWvaQz .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-A5O9RUhJnDnWvaQz g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-A5O9RUhJnDnWvaQz g.classGroup text .title{font-weight:bolder}#mermaid-svg-A5O9RUhJnDnWvaQz g.clickable{cursor:pointer}#mermaid-svg-A5O9RUhJnDnWvaQz g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-A5O9RUhJnDnWvaQz g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-A5O9RUhJnDnWvaQz .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-A5O9RUhJnDnWvaQz .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-A5O9RUhJnDnWvaQz .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-A5O9RUhJnDnWvaQz .dashed-line{stroke-dasharray:3}#mermaid-svg-A5O9RUhJnDnWvaQz #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-A5O9RUhJnDnWvaQz #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-A5O9RUhJnDnWvaQz #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-A5O9RUhJnDnWvaQz #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-A5O9RUhJnDnWvaQz #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-A5O9RUhJnDnWvaQz #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-A5O9RUhJnDnWvaQz #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-A5O9RUhJnDnWvaQz #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-A5O9RUhJnDnWvaQz .commit-id,#mermaid-svg-A5O9RUhJnDnWvaQz .commit-msg,#mermaid-svg-A5O9RUhJnDnWvaQz .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-A5O9RUhJnDnWvaQz .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-A5O9RUhJnDnWvaQz .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-A5O9RUhJnDnWvaQz g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-A5O9RUhJnDnWvaQz g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-A5O9RUhJnDnWvaQz g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-A5O9RUhJnDnWvaQz g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-A5O9RUhJnDnWvaQz g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-A5O9RUhJnDnWvaQz g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-A5O9RUhJnDnWvaQz .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-A5O9RUhJnDnWvaQz .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-A5O9RUhJnDnWvaQz .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-A5O9RUhJnDnWvaQz .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-A5O9RUhJnDnWvaQz .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-A5O9RUhJnDnWvaQz .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-A5O9RUhJnDnWvaQz .edgeLabel text{fill:#333}#mermaid-svg-A5O9RUhJnDnWvaQz .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-A5O9RUhJnDnWvaQz .node circle.state-start{fill:black;stroke:black}#mermaid-svg-A5O9RUhJnDnWvaQz .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-A5O9RUhJnDnWvaQz #statediagram-barbEnd{fill:#9370db}#mermaid-svg-A5O9RUhJnDnWvaQz .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-A5O9RUhJnDnWvaQz .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-A5O9RUhJnDnWvaQz .statediagram-state .divider{stroke:#9370db}#mermaid-svg-A5O9RUhJnDnWvaQz .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-A5O9RUhJnDnWvaQz .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-A5O9RUhJnDnWvaQz .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-A5O9RUhJnDnWvaQz .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-A5O9RUhJnDnWvaQz .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-A5O9RUhJnDnWvaQz .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-A5O9RUhJnDnWvaQz .note-edge{stroke-dasharray:5}#mermaid-svg-A5O9RUhJnDnWvaQz .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-A5O9RUhJnDnWvaQz .error-icon{fill:#522}#mermaid-svg-A5O9RUhJnDnWvaQz .error-text{fill:#522;stroke:#522}#mermaid-svg-A5O9RUhJnDnWvaQz .edge-thickness-normal{stroke-width:2px}#mermaid-svg-A5O9RUhJnDnWvaQz .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-A5O9RUhJnDnWvaQz .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-A5O9RUhJnDnWvaQz .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-A5O9RUhJnDnWvaQz .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-A5O9RUhJnDnWvaQz .marker{fill:#333}#mermaid-svg-A5O9RUhJnDnWvaQz .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-A5O9RUhJnDnWvaQz .all > * { font-weight: bold !important; fill: transparent !important; stroke: transparent !important; } #mermaid-svg-A5O9RUhJnDnWvaQz .all tspan { !important; }#mermaid-svg-A5O9RUhJnDnWvaQz {color: rgba(0, 0, 0, 0.75);font: ;}

语法树(最左推导)
E
E
+
T
T
T
*
F
F
F
i
i
i

我们还可以举出很多文法G′[E]的句子“i+i∗i”的很多种语法树,并发现它们都相同。\quad \quad \quad \quad 我们还可以举出很多文法\text{G}^{'}[\text{E}]的句子“i + i * i”的很多种语法树,并发现它们都相同。我们还可以举出很多文法G′[E]的句子“i+i∗i”的很多种语法树,并发现它们都相同。
所以,文法G′[E]是无二义性的。\quad \quad \quad \quad 所以,文法\text{G}^{'}[\text{E}]是无二义性的。所以,文法G′[E]是无二义性的。

2、句型分析

(1).句型分析

识别一个符号串是否为某文法的句型,即句型分析

当给定某个符号串时,试图按照某文法的规则为该符号串构造推导/归约或语法树,从而识别出它是该文法的一个句型

目的:用某种分析技术,为程序设计语言构造一个识别程序

(2).分析技术

自顶向下分析技术
识别符号⟹⋯⟹输入字符串识别符号 ⟹ \cdots ⟹ 输入字符串识别符号⟹⋯⟹输入字符串
[ 从识别符号出发,由它推导出与输入符号串相同的终结符号串 ]
自底向上分析技术
输入字符串⇒△⋯⇒△识别符号输入字符串 \xRightarrow[△]{} \cdots \xRightarrow[△]{} 识别符号输入字符串△​⋯△​识别符号
[ 从输入符号触发,将其归约为识别符号 ]
Tips:现在主流的编译程序用的都是自底向上的分析
eg:\pmb{eg:}eg:​eg:​​eg:
设有文法G[N]:{E→E+T∣TT→T∗F∣FF→i∣(E)设有文法 \text{G}[\text{N}] \; : \; \begin{cases} \text{E} → \text{E} + \text{T} \; | \; \text{T} \\ \text{T} → \text{T} * \text{F} \; | \; \text{F} \\ \text{F} → i \; | \; (\text{E}) \\ \end{cases}设有文法G[N]:⎩⎪⎨⎪⎧​E→E+T∣TT→T∗F∣FF→i∣(E)​
\;
分析句子i+i:分析句子 \quad i + i \quad :分析句子i+i:
自顶向下:E⟹E+T⟹T+T⟹F+T⟹i+T⟹i+F⟹i+i\qquad 自顶向下:\text{E} ⟹ \text{E} + \text{T} ⟹ \text{T} + \text{T} ⟹ \text{F} + \text{T} ⟹ i + \text{T} ⟹ i + \text{F} ⟹ i + i自顶向下:E⟹E+T⟹T+T⟹F+T⟹i+T⟹i+F⟹i+i
自底向上:i+i⇒△F+i⇒△T+i⇒△E+i⇒△E+F⇒△E+T⇒△E\qquad 自底向上:i + i \xRightarrow[△]{} \text{F} + i \xRightarrow[△]{} \text{T} + i \xRightarrow[△]{} \text{E} + i \xRightarrow[△]{} \text{E} + \text{F} \xRightarrow[△]{} \text{E} + \text{T} \xRightarrow[△]{} \text{E}自底向上:i+i△​F+i△​T+i△​E+i△​E+F△​E+T△​E

3、句型分析的基本问题

(1).基本问题

句型分析面临以下两个基本问题
\qquad① 在自顶向下的分析过程中,有规则U→u1∣u2∣⋯∣un\text{U} → u_1 \; | \; u_2 \; | \; \cdots \; | \; u_nU→u1​∣u2​∣⋯∣un​,如何确定用哪个uiu_iui​替代U?\text{U} \; ?U?
\qquad② 在自底向上的分析过程中,有规则{A→xB→x\begin{cases} \text{A} → x \\ \text{B} → x \\ \end{cases}{A→xB→x​,应该把 xxx 归约到 A\text{A}A 还是 B?\text{B} \; ?B?

(2).句柄

设有文法G[Z],w=xuy是其一个句型,Z⇒∗xUy且U⇒+u({U∈VNu∈V+x,y∈V∗),则称u是句型w相对于U的短语设有文法\text{G}[\text{Z}],w = xuy是其一个句型,\text{Z} \xRightarrow[]{*} x\text{U}y \;且\; \text{U} \xRightarrow[]{+} u\left(\begin{cases} \text{U} \in \text{V}_\text{N} \\ u \in \text{V}^+\\ x, y \in \text{V}^* \end{cases}\right),则称 \pmb{u \; 是句型 \; w \; 相对于 \text{U} 的短语}设有文法G[Z],w=xuy是其一个句型,Z∗​xUy且U+​u⎝⎜⎛​⎩⎪⎨⎪⎧​U∈VN​u∈V+x,y∈V∗​⎠⎟⎞​,则称u是句型w相对于U的短语u是句型w相对于U的短语u是句型w相对于U的短语

当U⟹u时,称u是句型w相对于U的直接(简单)短语当 \text{U} ⟹ u 时,称 \pmb{u \; 是句型 \; w \; 相对于 \; \text{U} \; 的直接(简单)短语}当U⟹u时,称u是句型w相对于U的直接(简单)短语​u是句型w相对于U的直接(简单)短语​​u是句型w相对于U的直接(简单)短语

句型的最左简单短语称为该句型的句柄句型的\pmb{最左简单短语}称为该句型的\pmb{句柄}句型的最左简单短语最左简单短语最左简单短语称为该句型的句柄句柄句柄

eg:\pmb{eg:}eg:​eg:​​eg:
设有文法G[N]:{E→E+T∣TT→T∗F∣FF→i∣(E)\qquad设有文法 \text{G}[\text{N}] \; : \; \begin{cases} \text{E} → \text{E} + \text{T} \; | \; \text{T} \\ \text{T} → \text{T} * \text{F} \; | \; \text{F} \\ \text{F} → i \; | \; (\text{E}) \\ \end{cases}设有文法G[N]:⎩⎪⎨⎪⎧​E→E+T∣TT→T∗F∣FF→i∣(E)​

对句型T+i:\qquad 对句型 \; \text{T} + i \; :对句型T+i:
E⇒∗E⇒+T+i\qquad \qquad \text{E} \xRightarrow[]{*} \text{E} \xRightarrow[]{+} \text{T} + iE∗​E+​T+i
所以T+i是句型T+i相对于E的短语\qquad \qquad 所以 \; \text{T} + i \; 是句型 \; \text{T} + i \; 相对于 \; \text{E} \; 的短语所以T+i是句型T+i相对于E的短语

E⇒∗T+T⇒+T+i\qquad \qquad \text{E} \xRightarrow[]{*} \text{T} + \text{T} \xRightarrow[]{+} \text{T} + iE∗​T+T+​T+i
所以T是句型T+i相对于T的短语\qquad \qquad 所以 \; \text{T} \; 是句型 \; \text{T} + i \; 相对于 \; \text{T} \; 的短语所以T是句型T+i相对于T的短语

E⇒∗T+F⇒T+i\qquad \qquad \text{E} \xRightarrow[]{*} \text{T} + \text{F} \xRightarrow[]{} \text{T} + iE∗​T+F​T+i
所以i是句型T+i相对于T的短语、简单短语\qquad \qquad 所以 \; i \; 是句型 \; \text{T} + i \; 相对于 \; \text{T} \; 的短语、简单短语所以i是句型T+i相对于T的短语、简单短语

E⇒∗E+i⇒T+i\qquad \qquad \text{E} \xRightarrow[]{*} \text{E} + i \xRightarrow[]{} \text{T} + iE∗​E+i​T+i
所以T是句型T+i相对于E的短语、简单短语\qquad \qquad 所以 \; \text{T} \; 是句型 \; \text{T} + i \; 相对于 \; \text{E} \; 的短语、简单短语所以T是句型T+i相对于E的短语、简单短语
因为T出现在句型T+i的最左边,是句型T+i的最左简单短语\qquad \qquad 因为 \; \text{T} \; 出现在句型 \; \text{T} + i \; 的最左边,是句型 \; \text{T} + i \; 的最左简单短语因为T出现在句型T+i的最左边,是句型T+i的最左简单短语
所以T还是是句型T+i相对于E的句柄\qquad \qquad 所以 \; \text{T} \; 还是是句型 \; \text{T} + i \; 相对于 \; \text{E} \; 的句柄所以T还是是句型T+i相对于E的句柄

根据语法分析树,可以比较容易地找出某一句型的短语、简单短语、句柄
\qquad子树的末端节点组成的符号串是原树对应句型相对于子树根短语
\qquad简单子树的末端节点组成的符号串是原树对应句型相对于子树根简单短语
\qquad最左简单子树的末端节点组成的符号串是原树对应句型相对于子树根句柄

eg:\pmb{eg:}eg:​eg:​​eg:
设有文法G[N]:{E→E+T∣TT→T∗F∣FF→i∣(E)\qquad设有文法 \text{G}[\text{N}] \; : \; \begin{cases} \text{E} → \text{E} + \text{T} \; | \; \text{T} \\ \text{T} → \text{T} * \text{F} \; | \; \text{F} \\ \text{F} → i \; | \; (\text{E}) \\ \end{cases}设有文法G[N]:⎩⎪⎨⎪⎧​E→E+T∣TT→T∗F∣FF→i∣(E)​

对句型T+i,绘制出了如下图所示的语法树:\qquad 对句型 \; \text{T} + i \; ,绘制出了如下图所示的语法树:对句型T+i,绘制出了如下图所示的语法树:

#mermaid-svg-COf6yLw6nkEv8llq .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-COf6yLw6nkEv8llq .label text{fill:#333}#mermaid-svg-COf6yLw6nkEv8llq .node rect,#mermaid-svg-COf6yLw6nkEv8llq .node circle,#mermaid-svg-COf6yLw6nkEv8llq .node ellipse,#mermaid-svg-COf6yLw6nkEv8llq .node polygon,#mermaid-svg-COf6yLw6nkEv8llq .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-COf6yLw6nkEv8llq .node .label{text-align:center;fill:#333}#mermaid-svg-COf6yLw6nkEv8llq .node.clickable{cursor:pointer}#mermaid-svg-COf6yLw6nkEv8llq .arrowheadPath{fill:#333}#mermaid-svg-COf6yLw6nkEv8llq .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-COf6yLw6nkEv8llq .flowchart-link{stroke:#333;fill:none}#mermaid-svg-COf6yLw6nkEv8llq .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-COf6yLw6nkEv8llq .edgeLabel rect{opacity:0.9}#mermaid-svg-COf6yLw6nkEv8llq .edgeLabel span{color:#333}#mermaid-svg-COf6yLw6nkEv8llq .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-COf6yLw6nkEv8llq .cluster text{fill:#333}#mermaid-svg-COf6yLw6nkEv8llq div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-COf6yLw6nkEv8llq .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-COf6yLw6nkEv8llq text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-COf6yLw6nkEv8llq .actor-line{stroke:grey}#mermaid-svg-COf6yLw6nkEv8llq .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-COf6yLw6nkEv8llq .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-COf6yLw6nkEv8llq #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-COf6yLw6nkEv8llq .sequenceNumber{fill:#fff}#mermaid-svg-COf6yLw6nkEv8llq #sequencenumber{fill:#333}#mermaid-svg-COf6yLw6nkEv8llq #crosshead path{fill:#333;stroke:#333}#mermaid-svg-COf6yLw6nkEv8llq .messageText{fill:#333;stroke:#333}#mermaid-svg-COf6yLw6nkEv8llq .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-COf6yLw6nkEv8llq .labelText,#mermaid-svg-COf6yLw6nkEv8llq .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-COf6yLw6nkEv8llq .loopText,#mermaid-svg-COf6yLw6nkEv8llq .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-COf6yLw6nkEv8llq .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-COf6yLw6nkEv8llq .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-COf6yLw6nkEv8llq .noteText,#mermaid-svg-COf6yLw6nkEv8llq .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-COf6yLw6nkEv8llq .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-COf6yLw6nkEv8llq .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-COf6yLw6nkEv8llq .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-COf6yLw6nkEv8llq .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-COf6yLw6nkEv8llq .section{stroke:none;opacity:0.2}#mermaid-svg-COf6yLw6nkEv8llq .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-COf6yLw6nkEv8llq .section2{fill:#fff400}#mermaid-svg-COf6yLw6nkEv8llq .section1,#mermaid-svg-COf6yLw6nkEv8llq .section3{fill:#fff;opacity:0.2}#mermaid-svg-COf6yLw6nkEv8llq .sectionTitle0{fill:#333}#mermaid-svg-COf6yLw6nkEv8llq .sectionTitle1{fill:#333}#mermaid-svg-COf6yLw6nkEv8llq .sectionTitle2{fill:#333}#mermaid-svg-COf6yLw6nkEv8llq .sectionTitle3{fill:#333}#mermaid-svg-COf6yLw6nkEv8llq .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-COf6yLw6nkEv8llq .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-COf6yLw6nkEv8llq .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-COf6yLw6nkEv8llq .grid path{stroke-width:0}#mermaid-svg-COf6yLw6nkEv8llq .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-COf6yLw6nkEv8llq .task{stroke-width:2}#mermaid-svg-COf6yLw6nkEv8llq .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-COf6yLw6nkEv8llq .taskText:not([font-size]){font-size:11px}#mermaid-svg-COf6yLw6nkEv8llq .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-COf6yLw6nkEv8llq .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-COf6yLw6nkEv8llq .task.clickable{cursor:pointer}#mermaid-svg-COf6yLw6nkEv8llq .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-COf6yLw6nkEv8llq .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-COf6yLw6nkEv8llq .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-COf6yLw6nkEv8llq .taskText0,#mermaid-svg-COf6yLw6nkEv8llq .taskText1,#mermaid-svg-COf6yLw6nkEv8llq .taskText2,#mermaid-svg-COf6yLw6nkEv8llq .taskText3{fill:#fff}#mermaid-svg-COf6yLw6nkEv8llq .task0,#mermaid-svg-COf6yLw6nkEv8llq .task1,#mermaid-svg-COf6yLw6nkEv8llq .task2,#mermaid-svg-COf6yLw6nkEv8llq .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-COf6yLw6nkEv8llq .taskTextOutside0,#mermaid-svg-COf6yLw6nkEv8llq .taskTextOutside2{fill:#000}#mermaid-svg-COf6yLw6nkEv8llq .taskTextOutside1,#mermaid-svg-COf6yLw6nkEv8llq .taskTextOutside3{fill:#000}#mermaid-svg-COf6yLw6nkEv8llq .active0,#mermaid-svg-COf6yLw6nkEv8llq .active1,#mermaid-svg-COf6yLw6nkEv8llq .active2,#mermaid-svg-COf6yLw6nkEv8llq .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-COf6yLw6nkEv8llq .activeText0,#mermaid-svg-COf6yLw6nkEv8llq .activeText1,#mermaid-svg-COf6yLw6nkEv8llq .activeText2,#mermaid-svg-COf6yLw6nkEv8llq .activeText3{fill:#000 !important}#mermaid-svg-COf6yLw6nkEv8llq .done0,#mermaid-svg-COf6yLw6nkEv8llq .done1,#mermaid-svg-COf6yLw6nkEv8llq .done2,#mermaid-svg-COf6yLw6nkEv8llq .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-COf6yLw6nkEv8llq .doneText0,#mermaid-svg-COf6yLw6nkEv8llq .doneText1,#mermaid-svg-COf6yLw6nkEv8llq .doneText2,#mermaid-svg-COf6yLw6nkEv8llq .doneText3{fill:#000 !important}#mermaid-svg-COf6yLw6nkEv8llq .crit0,#mermaid-svg-COf6yLw6nkEv8llq .crit1,#mermaid-svg-COf6yLw6nkEv8llq .crit2,#mermaid-svg-COf6yLw6nkEv8llq .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-COf6yLw6nkEv8llq .activeCrit0,#mermaid-svg-COf6yLw6nkEv8llq .activeCrit1,#mermaid-svg-COf6yLw6nkEv8llq .activeCrit2,#mermaid-svg-COf6yLw6nkEv8llq .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-COf6yLw6nkEv8llq .doneCrit0,#mermaid-svg-COf6yLw6nkEv8llq .doneCrit1,#mermaid-svg-COf6yLw6nkEv8llq .doneCrit2,#mermaid-svg-COf6yLw6nkEv8llq .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-COf6yLw6nkEv8llq .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-COf6yLw6nkEv8llq .milestoneText{font-style:italic}#mermaid-svg-COf6yLw6nkEv8llq .doneCritText0,#mermaid-svg-COf6yLw6nkEv8llq .doneCritText1,#mermaid-svg-COf6yLw6nkEv8llq .doneCritText2,#mermaid-svg-COf6yLw6nkEv8llq .doneCritText3{fill:#000 !important}#mermaid-svg-COf6yLw6nkEv8llq .activeCritText0,#mermaid-svg-COf6yLw6nkEv8llq .activeCritText1,#mermaid-svg-COf6yLw6nkEv8llq .activeCritText2,#mermaid-svg-COf6yLw6nkEv8llq .activeCritText3{fill:#000 !important}#mermaid-svg-COf6yLw6nkEv8llq .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-COf6yLw6nkEv8llq g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-COf6yLw6nkEv8llq g.classGroup text .title{font-weight:bolder}#mermaid-svg-COf6yLw6nkEv8llq g.clickable{cursor:pointer}#mermaid-svg-COf6yLw6nkEv8llq g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-COf6yLw6nkEv8llq g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-COf6yLw6nkEv8llq .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-COf6yLw6nkEv8llq .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-COf6yLw6nkEv8llq .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-COf6yLw6nkEv8llq .dashed-line{stroke-dasharray:3}#mermaid-svg-COf6yLw6nkEv8llq #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-COf6yLw6nkEv8llq #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-COf6yLw6nkEv8llq #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-COf6yLw6nkEv8llq #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-COf6yLw6nkEv8llq #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-COf6yLw6nkEv8llq #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-COf6yLw6nkEv8llq #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-COf6yLw6nkEv8llq #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-COf6yLw6nkEv8llq .commit-id,#mermaid-svg-COf6yLw6nkEv8llq .commit-msg,#mermaid-svg-COf6yLw6nkEv8llq .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-COf6yLw6nkEv8llq .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-COf6yLw6nkEv8llq .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-COf6yLw6nkEv8llq g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-COf6yLw6nkEv8llq g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-COf6yLw6nkEv8llq g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-COf6yLw6nkEv8llq g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-COf6yLw6nkEv8llq g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-COf6yLw6nkEv8llq g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-COf6yLw6nkEv8llq .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-COf6yLw6nkEv8llq .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-COf6yLw6nkEv8llq .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-COf6yLw6nkEv8llq .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-COf6yLw6nkEv8llq .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-COf6yLw6nkEv8llq .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-COf6yLw6nkEv8llq .edgeLabel text{fill:#333}#mermaid-svg-COf6yLw6nkEv8llq .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-COf6yLw6nkEv8llq .node circle.state-start{fill:black;stroke:black}#mermaid-svg-COf6yLw6nkEv8llq .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-COf6yLw6nkEv8llq #statediagram-barbEnd{fill:#9370db}#mermaid-svg-COf6yLw6nkEv8llq .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-COf6yLw6nkEv8llq .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-COf6yLw6nkEv8llq .statediagram-state .divider{stroke:#9370db}#mermaid-svg-COf6yLw6nkEv8llq .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-COf6yLw6nkEv8llq .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-COf6yLw6nkEv8llq .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-COf6yLw6nkEv8llq .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-COf6yLw6nkEv8llq .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-COf6yLw6nkEv8llq .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-COf6yLw6nkEv8llq .note-edge{stroke-dasharray:5}#mermaid-svg-COf6yLw6nkEv8llq .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-COf6yLw6nkEv8llq .error-icon{fill:#522}#mermaid-svg-COf6yLw6nkEv8llq .error-text{fill:#522;stroke:#522}#mermaid-svg-COf6yLw6nkEv8llq .edge-thickness-normal{stroke-width:2px}#mermaid-svg-COf6yLw6nkEv8llq .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-COf6yLw6nkEv8llq .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-COf6yLw6nkEv8llq .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-COf6yLw6nkEv8llq .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-COf6yLw6nkEv8llq .marker{fill:#333}#mermaid-svg-COf6yLw6nkEv8llq .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-COf6yLw6nkEv8llq .all > * { font-weight: bold !important; fill: transparent !important; stroke: transparent !important; } #mermaid-svg-COf6yLw6nkEv8llq .all tspan { !important; }#mermaid-svg-COf6yLw6nkEv8llq {color: rgba(0, 0, 0, 0.75);font: ;}

(T + i) 的语法树
最左简单子树
子树
简单子树
E
+
T
F
i
E
T

从图中【语法树】中,可以分析出,T+i是句型T+i相对于E的短语\qquad 从图中【语法树】中,可以分析出,\text{T} + i \; 是句型 \; \text{T} + i \; 相对于 \; \text{E} \; 的短语从图中【语法树】中,可以分析出,T+i是句型T+i相对于E的短语
从图中【最左简单子树】中,可以分析出,T是句型T+i相对于E的短语、简单短语、句柄\qquad 从图中【最左简单子树】中,可以分析出,\text{T} \; 是句型 \; \text{T} + i \; 相对于 \; \text{E} \; 的短语、简单短语、句柄从图中【最左简单子树】中,可以分析出,T是句型T+i相对于E的短语、简单短语、句柄
从图中【子树】中,可以分析出,i是句型T+i相对于T的短语\qquad 从图中【子树】中,可以分析出,i \; 是句型 \; \text{T} + i \; 相对于 \; \text{T} \; 的短语从图中【子树】中,可以分析出,i是句型T+i相对于T的短语
从图中【简单子树】中,可以分析出,i是句型T+i相对于F的短语、简单短语\qquad 从图中【简单子树】中,可以分析出,i \; 是句型 \; \text{T} + i \; 相对于 \; \text{F} \; 的短语、简单短语从图中【简单子树】中,可以分析出,i是句型T+i相对于F的短语、简单短语

其实,有了语法分析树以后,对句型分析来说,就不用去找句柄什么的了其实,有了语法分析树以后,对句型分析来说,就不用去找句柄什么的了其实,有了语法分析树以后,对句型分析来说,就不用去找句柄什么的了

第五章会有另外的、更巧妙、更实用的方法去找句柄第五章会有另外的、更巧妙、更实用的方法去找句柄第五章会有另外的、更巧妙、更实用的方法去找句柄

《编译原理》学习笔记 ·003【第二章:文法和语言(形式语言理论)-2】相关推荐

  1. 【编译原理学习笔记】2:文法与语言描述,二义性,正规文法,左/右句型,句型分析

    已知语言描述写出文法 如某种语言中0和1的个数相同,文法可以是这样的: G[A]:A->0B|1CB->1|1A|0BBC->0|0A|1CC 还可以这样: G[S]:S->0 ...

  2. 编译原理学习笔记 5.1 翻译文法和语法制导翻译

    前言 参考课上PPT内容. 该学习笔记目前仅打算个人使用. 后续会进一步整理,包括添加笔记内容,标明参考资料. 更新中... 跳过目录 目录 导言 一.翻译文法和语法制导翻译 输入文法 翻译文法 活动 ...

  3. 编译原理学习笔记 3.3 正则文法的状态图

    前言 参考东南大学廖力老师的编译原理教程和课上PPT内容. 该学习笔记目前仅打算个人使用. 后续会进一步整理,包括添加笔记内容,标明参考资料. 更新中... 跳过目录 目录 状态图的画法(根据文法画出 ...

  4. 【编译原理·总复习】第二章||文法语言||语法树||最左最右推导归约||句柄直接短语||例题+知识点

    step by step. 目录 一. 程序设计语言的精确定义和描述 1.语法:语言结构的定义. 2.语义:描述语言的含义. 3.语用:从使用的角度描述语言. 二. 字母表与符号串 1. 字母表 例题 ...

  5. 【学习笔记】编译原理 第二章 文法和语言

    以下为参考课件与<编译技术>(张莉等著)的个人整理,若有错误欢迎指出 第二章 文法和语言 文章目录 第二章 文法和语言 一.文法的非形式讨论 二.文法的形式定义 1.文法的形式定义 2.推 ...

  6. 计算机网络学习笔记:第二章

    文章目录 计算机网络学习笔记:第二章 前言 2.1.应用层协议原理 2.1.1 网络应用程序体系结构 2.1.2 进程通信 2.1.3 可供应用程序使用的运输服务 2.1.4 因特网提供的传输层服务 ...

  7. [编译原理学习笔记2-2] 程序语言的语法描述

    [编译原理学习笔记2-2] 程序语言的语法描述 文章目录 [编译原理学习笔记2-2] 程序语言的语法描述 [2.3.1] 上下文无关文法 [2.3.2] 语法分析树与二义性 [2.3.3] 形式语言鸟 ...

  8. 2021-08-31《内网安全攻防》学习笔记,第二章-域内信息收集(转自PowerLiu)

    <内网安全攻防>学习笔记,第二章-域内信息收集 2020-07-212020-07-21 15:08:47阅读 1.1K0 2.1 内网信息搜集概述 当渗透测试人员进入内网后,面对的是一片 ...

  9. 编译原理学习笔记2——高级程序设计语言概述

    编译原理学习笔记2--高级程序设计语言概述 2.1常用的高级程序设计语言 2.2程序设计语言的定义 2.2.1语法 2.2.1语法 2.2.3程序语言的基本功能和层次机构 2.2.4程序语言成分的逻辑 ...

  10. 机器学习理论《统计学习方法》学习笔记:第二章 感知机

    <统计学习方法>学习笔记:第二章 感知机 2 感知机 2.1 感知机模型 2.2 感知机学习策略 2.2.1 数据的线性可分性 2.2.2 感知机学习策略 2.3 感知机学习算法 2.3. ...

最新文章

  1. 用Swift实现一款天气预报APP(三)
  2. vs2010 使用vs online账号 需要安装的插件
  3. P2473 [SCOI2008]奖励关
  4. 【风控场景】互利网上数字金融典型场景: 网络营销
  5. SAP Spartacus在某些屏幕尺寸下无法正常工作的原因分析
  6. 巧用css实现强制不换行、自动换行、强制换行(转)
  7. JavaScript 用typeof来判断是否是对象的弊端
  8. dede站怎么在首页调用单页的内容?
  9. c语言创建通讯录不用指针,用C语言做通讯录,只能用数组,不能用指针,急用啊,谢谢了...
  10. iOS之StatusBar详解
  11. 数据库建立索引的优缺点及适合建立索引的字段
  12. [Python从零到壹] 十六.文本挖掘之词云热点与LDA主题分布分析万字详解
  13. Python案例之Numpy + Pandas——北京房价分析、2018年北京积分落户数据分析
  14. 开源数据库全接触-MongoDB,Cassandra,Hypertable,CouchDB,Redis,HBase,Voldemort等35款数据库简介
  15. 在VMware上如何创建虚拟机并安装linux操作系统,以及虚拟机的账户密码破解
  16. Imperva常用的维护命令
  17. 互联网晚报| 8月18日|未婚已育女性办理生育津贴不需要结婚证;拼多多将上线跨境电商平台;小米汽车将采用宁德时代麒麟和比亚迪刀片...
  18. IOS推送功能的实现
  19. gvim 6.3 的确不错.
  20. android+汉王手写引擎,汉王推键盘输入引擎 从手写专家到输入法专家

热门文章

  1. FineReport新增多项目甘特图示例及操作
  2. android触摸滑动监听,Android 滑动监听的实例详解
  3. python定时器 是线程吗_定时器中断线程python
  4. springboot 不使用 thymeleaf_springboot 使用swagger 不显示basic-error-controller解决
  5. matlab makesurf,matlab制作GIF之hello world
  6. ios 动画 隐藏tabbar_iOS_自定义转场TabBar的隐藏动画
  7. pytorch学习笔记(四):线性回归从零开始实现
  8. 1-1 软件构造过程中的多维视图
  9. ##CSP 201812-2 小明放学(C语言)(100分)
  10. C语言编程规范(排版)