言 語理論とコン パイラ

第 六回: 文脈自由言語と構文解析

2005 年 5月 27日

AGU

© 2005 Martin J. Dürst 青山学院大学

先週の試験: 第四問

次の表の左側の正規表現で定義されている言語に表の最上列の語が含ま れている場合に○、含まれていない場合に×を書け。

abc ac abccc acbc abcbc cba
a(b|c) × × × × ×
a(bc)* × × × ×
abc* × × × ×

正規表現の復習

正規表現の例

文法と正規表現の違い

文法:

正規表現:

正規表現の (簡単な) 規則は文法の (複雑な) 規則一つに相当する

コンパイラの段階

字句解析 (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 正規言語 有限オートマトン

字句解析と構文解析

字句解析 構文解析
解析対象 定数、識別子、予約語、演算子など 式、文、関数など
要点 速さ 能力
記述方法 正規表現 文脈自由文法
(自動) 解析手段 有限オートマトン プッシュダウンオートマトン

正規文法と文脈自由文法

正規文法:

文脈自由文法:

文脈自由文法の一例

S → aSa | bSb | c

生成する言語: 真ん中に c が一個、周りに a と b が 0 以上対照的に自由な順番に並ぶ

生成する語の例: c, aca, bcb, abaabcbaaba 等

こういう風な言語を受理するのはメモリがないため有限オートマトンで は不可能

オートマトンの機能拡張が必要

オートマトンにプッシュダウンスタックをつけよう

プッシュダウンスタック

A stack of trays at a cafeteria. Only the topmost tray is visible due to a built-in spring.

プッシュダウンオートマトン

プッシュダウンオートマトンの一例

三スライド前の文法に相当するプッシュダウンオートマトンの図

決定性と非決定性のプッシュダウンオートマトン