文脈自由文法
任意の ( α , β ) ∈ R {\displaystyle (\alpha ,\beta )\in R} について P α β ( u , v ) = ( u α v , u β v ) {\displaystyle P_{\alpha \beta }(u,\,v)=(u\alpha v,\,u\beta v)} となるような生成写像 P α β : ( V ∪ Σ ) ∗ × ( V ∪ Σ ) ∗ ⟶ ( V ∪ Σ ) ∗ × ( V ∪ Σ ) ∗ {\displaystyle P_{\alpha \beta }:(V\cup \Sigma )^{*}\times (V\cup \Sigma )^{*}\longrightarrow (V\cup \Sigma )^{*}\times (V\cup \Sigma )^{*}} が存在する。
順序対 ( u α v , u β v ) {\displaystyle (u\alpha v,\,u\beta v)} を G {\displaystyle G\,} のプロダクション(生成規則)と呼び、一般に u α v → u β v {\displaystyle u\alpha v\rightarrow u\beta v} のように表記する。
最初の例を示す。
S → aSb | ε
ここで、 | は「選択」を意味し、ε は空の文字列を意味する。この文法によって生成される言語は以下のようになる。
{ a n b n : n ≥ 0 } {\displaystyle \{a^{n}b^{n}:n\geq 0\}}
これは正規言語ではない例でもある。
また、「選択」は文脈自由文法の表現に必ずしも必須ではない。次の2つの規則でも、上の例と同様の言語を定義している。
S → aSb
S → ε