text: この言語は Parsing Expression Grammar (PEG) では生成できる。PEG は文脈自由文法と扱える範囲の文法が異なり文脈自由文法を全て扱えるわけではないがプログラミング言語に適した新たな定式化のひとつである。形式的定義  文脈自由文法 G は次の 4-タプル で表される。ここで は変数（非終端記号）の有限集合 は終端記号の有限集合で、 は開始記号（変数）は  から  への関係であり、 が成り立つ のメンバーを文法の規則と呼ぶ。追加定義1  任意の  について  となるような生成写像  が存在する。順序対  を  のプロダクション（生成規則）と呼び、一般に  のように表記する。追加定義2  任意の  について、 が  を生成することを  で表す。ただし、 かつ  で  が成り立たねばならない。追加定義3  任意の  について、（あるいは ）であるとは、 となるような  が成り立つ場合である。追加定義4  文法  の言語は次の集合で表される。追加定義5  言語  は、 となるような文脈自由文法  が存在するとき、文脈自由言語(CFL)であるという。例 例 1  最初の例を示す。ここで、 | は「選択」を意味し、ε は空の文字列を意味する。この文法によって生成される言語は以下のようになる。これは正規言語ではない例でもある。また、「選択」は文脈自由文法の表現に必ずしも必須ではない。次の2つの規則でも、上の例と同様の言語を定義している。例 2  次は三種類の変数 x, y, z を使った文法的に正しい四則演算の数式を生成する文脈自由文法である。ここで演算子は中置としている。この文法に従うと、例えば "( x + y ) * x - z * y / ( x + x )" といった式が生成可能である。この文法は、構造が異なる構文木から同じ文字列が生成されうるという意味で曖昧である。例 3  文字セット {a,b} について、異なる個数の a と b から構成される全ての文字列を生成する文脈自由文法は以下のようになる。ここで、T に関する生成規則は a と b が同数の文字列を生成するが、U は a の方が必ず多くなる文字列を生成し、V は b の方が必ず多くなる文字列を生成する。例 4  次の例は  である。これは正規言語ではなく文脈自由言語である。以下の生成規則で生成される（この生成規則は文脈自由文法にしたがっている）。その他の例  文脈自由文法は数学的な「形式的」言語だけで利用されるわけではない。例えば、タミル語の詩である Venpa は文脈自由文法で定式化できることが指摘されている。導出と構文木