第 六回: 字句解析と構文解析
2006 年 6月 2日
http://www.sw.it.aoyama.ac.jp/2006/Compiler/lecture6.html
© 2006 Martin J. Dürst 青山学院大学
演習 2
字句解析 (lexical analysis)
構文解析 (parsing; syntax analysis)
意味解析 (semantic analysis)
最適化 (optimization)
コード生成 (code generation)
文法 | grammar | Type | 言語 | オートマトン |
句構造文法 | phrase structure grammar (psg) | 0 | 句構造言語 | チューリング機械 |
文脈依存文法 | context-sensitive grammar (csg) | 1 | 文脈依存言語 | 線形拘束オートマトン |
文脈自由文法 | context-free grammar (cfg) | 2 | 文脈自由言語 | プッシュダウンオートマトン |
正規文法 | regular grammar (rg) | 3 | 正規言語 | 有限オートマトン |
次のような言語が正規表現などで表せるのか:
a
, b
, c
からなる左右対象の語の言語(
と )
からなる、式等のように入れ子になっている語の言語0
と 1
からなる、n
個の 0
の後 n 個の 1
の語の言語これらは全て有限オートマトンの有限のメモリの制約によって受理不可能である。
字句解析 | 構文解析 | |
解析対象 | 定数、識別子、予約語、演算子など | 式、文、関数など |
要点 | 速さ | 能力 |
記述方法 | 正規表現 | 文脈自由文法 |
(自動) 解析手段 | 有限オートマトン | プッシュダウンオートマトン |
正規文法 (regular grammar):
文脈自由文法 (context free grammar):
S → aSa | bSb | c
生成する言語: 真ん中に c が一個、周りに a と b が 0 以上対照的に自由な順番に並ぶ
生成する語の例: c, aca, bcb, abaabcbaaba 等
こういう風な言語を受理するのはメモリがないため有限オートマトンで は不可能
オートマトンの機能拡張が必要
オートマトンにプッシュダウンスタックをつけよう
文法:
正規表現:
正規表現の (簡単な) 規則は文法の (複雑な) 規則一つに相当する