文法と言語 ー文脈自由文法とLR構文解析3ー

Slides:



Advertisements
Similar presentations
プログラミング言語論 プログラミング言語の構 文 水野嘉明. 目次 1. プログラミング言語の構文 2. BNF 3. 文脈自由文法 4. 構文図式 2.
Advertisements

プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
平成 19 年度卒業研究 PASCAL コンパイラについ て 福永研究室 山川 武志 畑中 陽介 佐藤 遼.
0章 数学基礎.
和田俊和 資料保存場所 /2/26 文法と言語 ー正規表現とオートマトンー 和田俊和 資料保存場所
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
文法と言語 ー字句解析とオートマトンlexー
計算の理論 I 文脈自由文法 月曜3校時 大月 美佳 平成15年6月30日 佐賀大学知能情報システム学科.
Problem by D. Mikurube Slides by Y. Izumi
言語処理系(7) 金子敬一.
コンパイラ 2011年10月17日
東京工科大学 コンピュータサイエンス学部 亀田弘之
言語処理系(4) 金子敬一.
言語体系とコンピュータ 第6回.
言語処理系(6) 金子敬一.
文法と言語 ー文脈自由文法とLR構文解析2ー
文法と言語 ー文脈自由文法とLL構文解析ー
プログラミング言語論 第4回 式の構文、式の評価
計算の理論 II 文脈自由文法と プッシュダウンオートマトン
言語処理系(5) 金子敬一.
言語処理系(8) 金子敬一.
言語プロセッサ ー第8回目ー.
東京工科大学 コンピュータサイエンス学部 亀田弘之
コンパイラ 2012年10月15日
コンパイラ 2012年10月22日
言語プロセッサ2013 ー 第7回目 ー Tokyo University of Technology
コンパイラ 2011年10月24日
チューリング機械 状態の有限集合 ヘッドの方向を表す。 L:1コマ左へ R:1コマ右へ テープ記号の有限集合 入力記号の有限集合 動作関数
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
コンパイラ 第14回 上昇型構文解析(2) 38号館4階N-411 内線5459
形式言語とオートマトン Formal Languages and Automata 第4日目
プログラミング言語論 第3回 BNF記法について(演習付き)
正則言語 2011/6/27.
文法と言語 ー字句解析とオートマトンlexー
文法と言語 ー字句解析とオートマトンlexー
形式言語の理論 5. 文脈依存言語.
東京工科大学 コンピュータサイエンス学部 亀田弘之
コンパイラ 第13回 上昇型構文解析(1) 38号館4階N-411 内線5459
東京工科大学 コンピュータサイエンス学部 亀田弘之
言語プロセッサ2012 ー 第6回目 ー Tokyo University of technology
言語と文法 言語とは,ルールに従う記号列の無限集合である. 文法を与えることで言語が定義できる.
文法と言語 ー文脈自由文法とLR構文解析2ー
言語プロセッサ ー第9回目ー 構文解析(続き).
言語プロセッサ2016 ー 第5回目(10月31日) ー Tokyo University of Technology
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
文法と言語 ー文脈自由文法とLL構文解析ー
コンパイラ 2011年10月20日
C++ 構文解析 構文解析器の状態保存と復元
文法と言語 ー文脈自由文法とLR構文解析ー
言語プロセッサ2015 ー 第5回目(11月2日) ー Tokyo University of Technology
人工知能特論II 第8回 二宮 崇.
文法と言語 ー字句解析とオートマトンlexー
東京工科大学 コンピュータサイエンス学部 亀田 弘之
4.プッシュダウンオートマトンと 文脈自由文法の等価性
計算の理論 I 文脈自由文法 月曜3校時 大月美佳.
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
東京工科大学 コンピュータサイエンス学部 亀田弘之
コンパイラ 2012年10月11日
言語プロセッサ ー第9回目ー 構文解析(続き).
言語プロセッサ ー第7回目ー 構文解析(続き).
東京工科大学 コンピュータサイエンス学部 亀田 弘之
東京工科大学 コンピュータサイエンス学部 亀田 弘之
非決定性有限オートマトン 状態の有限集合 入力記号の有限集合 注意 動作関数 初期状態 受理状態の有限集合.
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
文法と言語 ー文脈自由文法とLR構文解析2ー
:: の扱い 長谷川啓.
PEG覚え書き.
4.2 再帰下降解析 (1)再帰下降解析とは ■再帰下降解析(Recursive Descent Parsing)
Presentation transcript:

文法と言語 ー文脈自由文法とLR構文解析3ー 2019/4/17 文法と言語 ー文脈自由文法とLR構文解析3ー 和田俊和 資料保存場所 http://vrl.sys.wakayama-u.ac.jp/~twada/syspro/

前回問題はLR(0)構文解析できないケースです. 2019/4/17 前回問題はLR(0)構文解析できないケースです. 以下詳細を説明します.

文法 (0)<S>→<E> (1) <E> →<E>+<B> (3) <B> →<B>*<T> (4) <B> →<T> (5) <T> → 0 (6) <T> → 1

アイテム集合 集合0 S →・E +E →・E+B +E →・B +B →・B*T +B →・T +T → ・0 +T → ・1 集合1 集合5 E →B・ B →B・*T 集合7 B →B*・T +T → ・0 +T → ・1 集合2 T → 1・ 集合6 E →E+・B +B →・B*T +B →・T +T → ・0 +T → ・1 集合8 B →B*T・ 集合3 B →T・ 集合9 E →E+B・ B →B・*T 集合4 S →E・ E →E・+B

集合間の遷移 集合6 E →E+・B +B →・B*T +B →・T +T → ・0 +T → ・1 集合9 E →E+B・ B →B・*T 集合4 S →E・ E →E・+B B 集合0 S →・E +E →・E+B +E →・B +B →・B*T +B →・T +T → ・0 +T → ・1 + E 集合5 E →B・ B →B・*T * B T 集合7 B →B*・T +T → ・0 +T → ・1 集合8 B →B*T・ * T 集合3 B →T・ T 集合1 T → 0・ 1 集合2 T → 1・ 1 1

アイテム集合から状態遷移表 アイテム集合 * + 1 E B T 2 4 5 3 6 7 9 8

状態遷移表から,アクション・GOTO表 アクション GOTO 状態 * + 1 $ E B T s1 s2 4 5 3 r5 2 r6 r4 2019/4/17 状態遷移表から,アクション・GOTO表 アクション GOTO 状態 * + 1 $ E B T s1 s2 4 5 3 r5 2 r6 r4 s6 acc s7 r2 r2 6 9 7 8 r3 s7 r1 r1 アイテム集合 * + 1 E B T 2 4 5 3 6 7 9 8

Shift –Reduce Conflict(衝突) Shift-Reduce Conflict はShift をすればいいのか,Reduceをすればいいのか曖昧な状況が存在することを表す. (1) <E> → 1 <E> (2) <E> → 1 アイテム集合 E → 1 • E E → 1 • + E → • 1 E + E → • 1 この状態で1を読むと,shiftをすればいいか,還元をすればいいかが不明

Reduce –Reduce Conflict 2通りの還元の方法があり,どちらを行えばよいかがわからないケース. アイテム集合 1 A → 1 • B → 1 • (1) <E> → <A> 1 (2) <E> → <B> 2 (3) <A> → 1 (4) <B> → 1 この状態で1を読むと,AとBのいずれに還元していいかが決まらない.

これらの問題の解決法 Simple-LR (SLR)法 入力の次の記号が A の Follow Set に含まれる場合、規則 A → w を使い還元を行う. Look Ahead LR(LALR)法 入力の次の記号が AのLookahead Setに含まれる場合規則 A → w を適用する.

Follow-set と Lookahead-set 状態 S でのアイテム iの Follow-set (follow(i))は、文法上 iの左辺の非終端記号の直後に出現可能な全記号から成る. 状態 S でのアイテム iの Lookahead-set は、状態 S で構文解析を開始したとき i の右辺に出現可能な記号のみを含む. follow(i) は左辺が同じ i である全 LR(0)アイテムの Lookahead-set の和集合と等価であり、状態やアイテムの右辺は考慮されていない.

これ以上は難しくなりすぎるので略 詳しく知りたい人は,   コンパイラ(Principles of Compiler Design), A.V.Aho, J.D.Ullman著/土居範久監訳(培風館)   などを参考にして調べてみてください. 第3セメスタ開講科目,「データ構造とプログラミング技法」でも続きの説明を行います.

求めた表を使った構文解析例 1+1*0 2 3 5 4 6 9 s7 7 s1 1 r5 8 r3 r1 acc 1+1*0$ [0] s2 状態 入力 スタック 意味 1+1*0$ [0] s2 (1)+1*0 2 +1*0$ [2,0] r6 <T>+1*0 3 [3,0] r4 <B>+1*0 5 [5,0] r2 <E>+1*0 4 [4,0] s6 <E>(+)1*0 6 1*0$ [6,4,0] <E>(+)(1)*0 *0$ [2,6,4,0] <E>(+)<T>*0 [3,6,4,0] <E>(+)<B>*0 9 [9,6,4,0] s7 <E>(+)<B>(*)0 7 0$ [7,9,6,4,0] s1 <E>(+)<B>(*)(0) 1 $ [1,7,9,6,4,0] r5 <E>(+)<B>(*)<T> 8 [8,7,9,6,4,0] r3 <E>(+)<B> r1 <E> acc 終了 アクション GOTO 状態 * + 1 $ E B T s1 s2 4 5 3 r5 2 r6 r4 s6 acc s7 r2 r2 6 9 7 8 r3 s7 r1 r1

導出木 (1) <E> →<E>+<B> (2) <E> →<B> (3) <B> →<B>*<T> (4) <B> →<T> (5) <T> → 0 (6) <T> → 1 <E> <E> <B> <B> <T> <B> <T> <T> 1 + 1 *

まとめ 字句解析 構文解析 オートマトンの機械的な作成法 最左導出を前提とした下降型構文解析(LL) 構文解析表とスタックの利用 最右導出を前提とした上昇型構文解析(LR) アクション表とGOTO表とスタックの利用 Shift-reduce conflict, reduce-reduce conflict を回避する2つの方法SLR,LALR法