文脈自由言語
From Wikipedia, the free encyclopedia
文脈自由言語(ぶんみゃくじゆうげんご)とは、次のような再帰的な生成規則をもつ文脈自由文法によって、与えられた言語の長さ n に対して O(n3) の時間で認識される形式言語。プッシュダウン・オートマトンで受理可能な言語と等価である。
- S → E.
- E → T | E - T | E + T | (E).
- T → T * E | T / E | id | num.
ある言語が文脈自由言語でないことを証明するために文脈自由言語の反復補題が使われることがある。
基本的な文脈自由言語 は、偶数個の文字から成る文字列で構成され、各文字列の前半は a で、後半は b で構成される。L を生成する文法は であり、プッシュダウン・オートマトン に受容される。ここで は以下のように定義される。
ここで z は初期スタック記号、x はポップ動作を意味する。
例えば、数式など(プログラミング言語などにおける)の括弧の対応は というような規則になる。数式などはだいたい文脈自由言語である。