
- 自動機理論教程
- 自動機理論 - 首頁
- 自動機理論 - 入門
- 自動機理論 - 歷史
- 自動機理論 - 應用
- 自動機理論術語
- 自動機中字串的基礎知識
- 自動機的集合論
- 語言和文法
- 計算理論中的文法
- 由文法生成的語言
- 喬姆斯基文法分類
- 有限自動機
- 確定性有限自動機 (DFA)
- 非確定性有限自動機 (NFA)
- 從 NFA 到 DFA 的轉換
- DFA 的最小化
- 穆爾機與米利機
- DFA 的補集
- 正則表示式
- 自動機中的正則表示式
- 自動機中的 Arden 定理
- 將正則表示式轉換為有限自動機
- 正則文法的泵引理
- 計算理論中的正則集
- 上下文無關文法
- 上下文無關文法 (CFG)
- 上下文無關文法中的二義性
- 上下文無關語言的封閉性
- 簡化上下文無關文法
- 喬姆斯基正規化 (CNF)
- 格雷巴赫正規化 (GNF)
- 上下文無關文法的泵引理
- 下推自動機
- 下推自動機 (PDA)
- 下推自動機的接受
- 根據 CFG 構造 PDA
- 下推自動機和語法分析
- 圖靈機
- 圖靈機 (TM) 基礎
- 圖靈機接受的語言
- 多磁帶圖靈機
- 多軌跡圖靈機
- 非確定性圖靈機
- 半無限磁帶圖靈機
- 線性界限自動機 (LBA)
- 可計算性和不可判定性
- 圖靈語言的可判定性
- 不可判定語言
- 圖靈機停機問題
- 計算理論中的 Rice 定理
- Post 對應問題 (PCP)
- 自動機理論資源
- 自動機理論 - 快速指南
- 自動機理論 - 資源
- 自動機理論 - 討論
上下文無關文法簡介
定義 − 上下文無關文法 (CFG) 由一組有限的語法規則組成,是一個四元組 (N, T, P, S),其中
N 是一組非終結符。
T 是一組終結符,其中 N ∩ T = NULL。
P 是一組規則,P: N → (N ∪ T)*,即產生式規則 P 的左邊沒有任何右上下文或左上下文。
S 是起始符。
示例
- 文法 ({A}, {a, b, c}, P, A),P:A → aA,A → abc。
- 文法 ({S, a, b}, {a, b}, P, S),P:S → aSa,S → bSb,S → ε
- 文法 ({S, F}, {0, 1}, P, S),P:S → 00S | 11F,F → 00F | ε
生成推導樹
推導樹或語法分析樹是一個有序的根樹,它以圖形方式表示從上下文無關文法匯出的字串的語義資訊。
表示技術
根頂點 − 必須用起始符標記。
頂點 − 用非終結符標記。
葉子 − 用終結符或 ε 標記。
如果 S → x1x2 …… xn 是 CFG 中的產生式規則,則語法分析樹/推導樹如下所示:

有兩種不同的方法可以繪製推導樹:
自頂向下方法:
從起始符 S 開始
使用產生式向下到樹葉
自底向上方法:
從樹葉開始
向上進行到根,即起始符 S
樹的推導或結果
語法分析樹的推導或結果是從左到右連線樹葉的標籤而獲得的最終字串,忽略空值。但是,如果所有葉子都是空值,則推導為空值。
示例
設 CFG {N,T,P,S} 為
N = {S},T = {a, b},起始符 = S,P = S → SS | aSb | ε
來自上述 CFG 的一個推導是“abaabb”
S → SS → aSbS → abS → abaSb → abaaSbb → abaabb

句子形式和部分推導樹
部分推導樹是推導樹/語法分析樹的子樹,其所有子節點都在子樹中或都不在子樹中。
示例
如果在任何 CFG 中,產生式為:
S → AB,A → aaA | ε,B → Bb | ε
則部分推導樹可以是:

如果部分推導樹包含根 S,則稱為句子形式。上述子樹也處於句子形式。
字串的最左推導和最右推導
最左推導 − 最左推導是透過在每一步都應用產生式到最左邊的變數而獲得的。
最右推導 − 最右推導是透過在每一步都應用產生式到最右邊的變數而獲得的。
示例
設 CFG 中的任何一組產生式規則為
X → X+X | X*X |X| a
在字母表 {a} 上。
字串 "a+a*a" 的最左推導可能是:
X → X+X → a+X → a + X*X → a+a*X → a+a*a
上述字串的分步推導如下所示:

上述字串 "a+a*a" 的最右推導可能是:
X → X*X → X*a → X+X*a → X+a*a → a+a*a
上述字串的分步推導如下所示:

左遞迴文法和右遞迴文法
在上下文無關文法 G 中,如果存在形式為 X → Xa 的產生式,其中 X 是非終結符,而 ‘a’ 是終結符串,則稱為左遞迴產生式。具有左遞迴產生式的文法稱為左遞迴文法。
並且,如果在上下文無關文法 G 中,如果存在形式為 X → aX 的產生式,其中 X 是非終結符,而 ‘a’ 是終結符串,則稱為右遞迴產生式。具有右遞迴產生式的文法稱為右遞迴文法。