2013 年 4 月 26 日
http://www.sw.it.aoyama.ac.jp/2013/Compiler/lecture3.html
© 2005-13 Martin J. Dürst 青山学院大学
問題: L = { a, cb, ac } の場合、L* の一番短い語 10個を列挙しなさい。
解答: [ 削除 ]
発展問題 (解答自由): L* の長さ4の語を全て列挙しなさい。
解答: [ 削除 ]
問題:「導出の例」で使われた文法を使って、4つの (例の S ⇒ aabbaaとお互いと) 異なる語の導出を書きなさい。この文法はどの様な言語を定義しているかを推測して、説明しなさい。
解答例 :
[ 削除 ]発展問題 (解答自由): 自分の推測を証明してみなさい。
解答例 :
[ 削除 ]
(提出なしだが、出来なかった人はノートパソコン持参)
自分のノートパソコンに cygwin をインストール (画像つき詳細)する。インストールの手順で必ず
gcc, flex, bisonと
make を選ぶ。
flex
、bison
、gcc
の動作確認flex -V
で flex のバージョン確認 (V
は大文字)bison -V
で bison のバージョン確認 (V
は大文字)gcc -v
で gcc のバージョン確認 (v
は小文字)make -v
で make のバージョン確認 (v
は小文字)文法 | Type | 言語 | オートマトン |
---|---|---|---|
句構造文法 | 0 | 句構造言語 | チューリング機械 |
文脈依存文法 | 1 | 文脈依存言語 | 線形拘束オートマトン |
文脈自由文法 | 2 | 文脈自由言語 | プッシュダウンオートマトン |
正規文法 | 3 | 正規言語 | 有限オートマトン |
正規言語は字句解析に使用
これらは全て同じ力を持って、正規言語を定義・受理する
状態遷移図 (state transition diagram)
丸は状態、ラベル付き矢印は遷移、外からの矢印は初期状態を示し、二重丸は受理状態
(automaton (αὐτόματον) はギリシア語で、複数は automata)
(state transition table)
a | b | |
---|---|---|
→A | B | A |
B | C | A |
*C | C | A |
表の左は状態、上は入力の記号、→は初期状態 (矢印がない場合、最初の状態が初期状態)、星は受理状態
有限オートマトンは (Q, Σ, δ, q0, F) の五字組で定義
決定性 (DFA) | 非決定性 (NFA) | |
同時に | 一つの状態 | 複数の状態 (状態の集合) |
受理条件 | 現在の状態が受理状態 | 現在の状態の一つ以上が受理状態 |
ε 遷移 | 不可 | 可能 |
動作関数の型 | δ: Q × Σ → Q | δ: Q × (Σ ∪ {ε}) → P(Q) |
(ε 遷移不可の非決定性有限オートマトンも存在)
ε | 0 | 1 | |
---|---|---|---|
→S | {A} | {} | {} |
A | {} | {A,C} | {B} |
B | {} | {} | {A} |
*C | {} | {} | {} |
(linear grammar)
規則の形 | 名称 |
A → aB | 右線形規則 (非終端記号が右) |
A → Ba | 左線形規則 (非終端記号が左) |
A → a | 定数規則 |
左線形文法 (left linear grammar): 左線形規則と定数規則しか含まない文法
右線形文法 (right linear grammar): 右線形規則と定数規則しか含まない文法
(両方で S → ε も特別に可)
左線形文法と右線形文法はともに正規文法と言う
(左線形規則も右線形規則も含む一般の線形文法は文脈自由文法の一種)
右線形文法と NFA の対応 (ε が考慮外):
左線形文法も同様 (語を右から読み込むと考えられる)
A → aB | bA
B → bA | a | aC
C → bA | a | aC
オートマトンから文法へ:
文法からオートマトンへ:
課題: NFA・DFA は遷移表、遷移図、文法で表現可能が、もっとコンパクトな表現が望ましい
提出期限と場所: 2013 年 5 月 9 日 (木) 19:00 まで O 棟 5 階の O-529 号室の前の箱に投入
形式: A4 一枚 (裏も使ってよい)
flex
, bison
, gcc
,
make
の動作確認 (提出なし;
ただし、不可能な場合、必ず次回にノートパソコンを持参すること)