上下文无关文法——形式定义和推导办法

形式定义

上下文无关文法$G$是一个四元组,即$G=(V_T,V_N,P,S)$:

  • 终结符(Token)集合$V_T$
  • 非终结符集合$V_N$(与$V_T$不相交)
  • 产生式或文法规则$A\rightarrow \alpha$形成的集合$P$,其中$A\in V_N$,$\alpha \in (V_T\cup V_N)^*$
  • 开始符号$S$,其中$S\in V_N$
注:终结符和非终结符可以用单个字符表示,也可以用字符串表示。

最左和最右推导

  • 对于文法$G[S]$,$S\Rightarrow {}^*\gamma$是一个最左推导是指:在由$S$推导$\gamma$的过程中,任何一步直接推导$\alpha \Rightarrow \beta$,都是用字符串$\alpha$中的最左非终结符对应的产生式规则进行推导,其中$\alpha$、$\beta$是句型。

    • 简单整型算术表达式文法:
      $exp\rightarrow exp\; op\; exp|(exp)|number$
      $op\rightarrow +|-|*$
      算术表达式$(34-3)*42$的最左推导:
      上下文无关文法——形式定义和推导办法_第1张图片
  • $S\Rightarrow {}^*\gamma$是一个最右推导是指:在由$S$推导$\gamma$的过程中,任何一步直接推导$\alpha \Rightarrow \beta$,都是用字符串$\alpha$中的最右非终结符对应的产生式规则进行推导,其中$\alpha$、$\beta$是句型。

    最右推导也被称为规范推导,由规范推导所得的句型称为规范句型。
    • 简单整型算术表达式文法:
      $exp\rightarrow exp\; op\; exp|(exp)|number$
      $op\rightarrow +|-|*$
      算术表达式$(34-3)*42$的最右推导:
      上下文无关文法——形式定义和推导办法_第2张图片

你可能感兴趣的:(编译原理)