我們要用上下文無關文法(Context-Free Grammar,CFG)來產生與正規表示式 a∗(ba∗ba∗)∗a^*(ba^*ba^*)^*a∗(ba∗ba∗)∗ 相同的語言。這個正規表示式可以解讀為任意數量的 a,後跟任意數量的 ba∗bba^*bba∗b 模式,後者也可以重複任意次。
以下是與該正規表示式對應的文法規則:
我們將用最右推導(rightmost derivation)推導出字串 babaaabb。
SSS
S→AS \rightarrow AS→A
A→BA \rightarrow BA→B
B→bCBB \rightarrow bCBB→bCB
C→bC \rightarrow bC→b
B→bbBB \rightarrow b b BB→bbB
B→bbbCBB \rightarrow b b bCBB→bbbCB
C→aCC \rightarrow aCC→aC
B→bbbaCBB \rightarrow b b b aCBB→bbbaCB
C→aCC \rightarrow aCC→aC
B→bbbaaCBB \rightarrow b b b a aCBB→bbbaaCB
C→bC \rightarrow bC→b
B→bbbaabBB \rightarrow b b b a a bBB→bbbaabB
B→ϵB \rightarrow \epsilonB→ϵ
B→bbbaabϵB \rightarrow b b b a a b \epsilonB→bbbaabϵ
最終推導結果:
S→A→B→bCB→bbB→bbbCB→bbbaCB→bbbaaCB→bbbaabB→babaaabbS \rightarrow A \rightarrow B \rightarrow bCB \rightarrow bbB \rightarrow bbbCB \rightarrow bbb aCB \rightarrow bbb aaCB \rightarrow bbb aabB \rightarrow babaaabbS→A→B→bCB→bbB→bbbCB→bbbaCB→bbbaaCB→bbbaabB→babaaabb
這樣,我們使用最右推導成功推導出字串 babaaabb。