第二回 (2006年 4月21日)
形式言語の重要性、種類、定義
http://www.sw.it.aoyama.ac.jp/2006/Compiler/lecture2.html
© 2006 Martin J. Dürst 青山学院大学
理論 | コンパイラ | 他の応用 | |
---|---|---|---|
フロントエンド | 言語理論、オートマトン | 字句解析、構文解析 | 正規表現, XML |
バックエンド | 最適化、コード生成 |
自然言語 (natural language) の場合は文はある規則によって語から構成される
形式言語 (formal language) の場合は用語の使い方が違う:
ある語や言語はある記号の有限集合 Σ を元に定義される
Σ はアルファベット (alphabet) という
Σ 上の語 (word over Σ) は Σ に属する 0 以上の記号の列である
記号の数は語の長さ (length of the word) といって、語 w の長さは |w| で表す
例: |abcba| = 5; |ε| = 0
記号は長さ 1 の語である
二つの語を続いて並ぶと新しい語ができる
これは語の連結演算 (concatenation operation) という
連結演算は演算子なしで書く
例: 語 w と v の連結は wv と書く
応用例: w = abc で v = cba の時に wv = abccba である
同じ語 (や記号) の連結は乗数で書く: ww = w2、aaaaa = a5 等
結合法則: 語 w, v, u の時 (wv)u = w(vu)
単位元は ε: wε = εw = w
可換法則は成り立たない: wv ≠ vw
連結の語の長さは連結される語の長さの和
Σ 上の言語 (language over Σ) は Σ 上の語の集合である
例 (Σ ={a,b,c}):
言語の演算は集合の演算と語の演算の組み合わせ
語と同じく言語でも LL を L2 等で表す
L* と書く
例: L = { a, b } => L* = { ε, a, b, aa, ab, ba, bb, aaa, ... }
文法 | grammar | Type | 言語 | オートマトン |
句構造文法 | phrase structure grammar (psg) | 0 | 句構造言語 | チューリング機械 |
文脈依存文法 | context-sensitive grammar (csg) | 1 | 文脈依存言語 | 線形拘束オートマトン |
文脈自由文法 | context-free grammar (cfg) | 2 | 文脈自由言語 | プッシュダウンオートマトン |
正規文法 | regular grammar (rg) | 3 | 正規言語 | 有限オートマトン |
提出は A4 の紙一枚 (裏も使ってよい)