形式定义
上下文无关文法 G G G是一个四元组,即 G = ( V T , V N , P , S ) G=(V_T,V_N,P,S) G=(VT,VN,P,S):
- 终结符(Token)集合 V T V_T VT
- 非终结符集合 V N V_N VN(与 V T V_T VT不相交)
- 产生式或文法规则 A → α A\rightarrow \alpha A→α形成的集合 P P P,其中 A ∈ V N A\in V_N A∈VN, α ∈ ( V T ∪ V N ) ∗ \alpha \in (V_T\cup V_N)^* α∈(VT∪VN)∗
- 开始符号 S S S,其中 S ∈ V N S\in V_N S∈VN
注:终结符和非终结符可以用单个字符表示,也可以用字符串表示。
最左和最右推导
-
对于文法 G [ S ] G[S] G[S], S ⇒ ∗ γ S\Rightarrow {}^*\gamma S⇒∗γ是一个最左推导是指:在由 S S S推导 γ \gamma γ的过程中,任何一步直接推导 α ⇒ β \alpha \Rightarrow \beta α⇒β,都是用字符串 α \alpha α中的最左非终结符对应的产生式规则进行推导,其中 α \alpha α、 β \beta β是句型。
- 简单整型算术表达式文法:
e x p → e x p o p e x p ∣ ( e x p ) ∣ n u m b e r exp\rightarrow exp\; op\; exp|(exp)|number exp→expopexp∣(exp)∣number
o p → + ∣ − ∣ ∗ op\rightarrow +|-|* op→+∣−∣∗
算术表达式 ( 34 − 3 ) ∗ 42 (34-3)*42 (34−3)∗42的最左推导:
- 简单整型算术表达式文法:
-
S ⇒ ∗ γ S\Rightarrow {}^*\gamma S⇒∗γ是一个最右推导是指:在由 S S S推导 γ \gamma γ的过程中,任何一步直接推导 α ⇒ β \alpha \Rightarrow \beta α⇒β,都是用字符串 α \alpha α中的最右非终结符对应的产生式规则进行推导,其中 α \alpha α、 β \beta β是句型。 > 最右推导也被称为规范推导,由规范推导所得的句型称为规范句型。 - 简单整型算术表达式文法:
e x p → e x p o p e x p ∣ ( e x p ) ∣ n u m b e r exp\rightarrow exp\; op\; exp|(exp)|number exp→expopexp∣(exp)∣number
o p → + ∣ − ∣ ∗ op\rightarrow +|-|* op→+∣−∣∗
算术表达式 ( 34 − 3 ) ∗ 42 (34-3)*42 (34−3)∗42的最右推导: