形式言語
概要
あるオートマトンによって受理することのできる言語である。
自然言語は多くのあいまいな表現を含むことを許していて、どの品詞における語でも複数の意味や解釈を持ったまま使われている。原則として表現が目指すところは発信者の意図を受け取り手と共有することである。しかし現実的な人間の社会生活では 100% の正確さで伝わる必要性は薄く、重要でない部分は相手に解釈をゆだねたり、すでに特定の文脈を共有しているという前提を持つことで、ある程度の厳密さ以上では簡便性が優先されている。
Table of Contents
導入
形式言語を表現する最小単位を記号 (symbol) または文字 (letter) と呼び、すべての記号からなる有限集合をアルファベット
生成規則
ある記号列
形式言語はオートマトンと逆の操作でも生成することができる。内部状態
例1. 言語
を受理するオートマトンの一連の状態遷移は または の一連の導出と考えることができる。
生成規則において、それ以上に他の記号を導出できない記号 (つまりアルファベット
例えば以下の EBNF 構文では記号
DIGIT = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
HEX = "A" | "B" | "C" | "D" | "E" | "F";
HEXINT = "0x" {DIGIT | HEX};
この構文に 0x2C を入力すると Fig 1 のような一連の導出が行われ、結果的に HEXINT はこの文字列を受理できるため HEXINT 上の語とみなせる。
終端記号の集合
記号列
- 1例えば
に対して 。これは の要素を任意に連結して生成しうるすべての列を意味する。
言語
言語
初期記号
文法
句構造文法 (phrase structure grammar)- 生成規則に特に制約を持たない文法。
文脈依存文法 (context-sensitive grammar)-
、ここで , , となる生成規則を持つ文法。
文脈自由文法 (context-free grammar)-
、ここで , となるような生成規則を持つ文法。
正規文法 (regular grammar)-
または 、ここで , となるような生成規則を持つ文法。
自由文脈文法以外の生成規則
それぞれの文法から生成される言語の言語クラスは部分集合の関係にある。
例2. 言語
は非終端記号 、終端記号 、生成規則 、初期記号 で構成される文脈自由文法によって生成できることから文脈自由言語である。
例3. 言語
は非終端記号 、終端記号 、生成規則 、初期記号 で構成される文法 によって生成できる。 ここで
, は文脈自由文法の生成規則、 は句構造文法の生成規則、 は文脈依存文法の生成規則であることから、文法 は句構造文法、言語 は句構造言語と考えることができる。 しかし
の形をした規則は の文脈依存文法の生成規則に展開することができる。したがって文法 は文脈依存文法で、それから生成される言語 は文脈依存言語である。
それぞれの文法の表現力は、それを受理できる抽象機械と対応している。
| 文法 | 生成規則 | 抽象機械 | 適用例 |
|---|---|---|---|
| 句構造文法 | 制限なし | チューリングマシン | 自然言語 |
| 文脈依存文法 | |
線形拘束オートマトン | プログラミング言語 |
| 文脈自由文法 | |
プッシュダウンオートマトン | プログラミング言語 |
| 正規文法 | |
有限オートマトン | 正規表現 |
正規言語
正規文法は有限オートマトンで受理される文法、正規言語は正規文法によって生成される言語である。
正規言語
文脈自由文法
生成規則は
LL 構文
LL 構文 (LL parser) 再帰下降パーサー (recursive-decent parser) 列の前方の
参考文献
- オートマトン・言語理論の基礎 (2003) 近代科学社