4.2 再帰下降解析 (1)再帰下降解析とは ■再帰下降解析(Recursive Descent Parsing)

Slides:



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

プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
和田俊和 資料保存場所 /2/26 文法と言語 ー正規表現とオートマトンー 和田俊和 資料保存場所
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
Problem J: いにしえの数式 問題作成・解説: 北村 解答作成協力: 八森.
文法と言語 ー字句解析とオートマトンlexー
計算の理論 I 文脈自由文法 月曜3校時 大月 美佳 平成15年6月30日 佐賀大学知能情報システム学科.
Problem by D. Mikurube Slides by Y. Izumi
言語処理系(7) 金子敬一.
コンパイラ 2011年10月17日
επιστημη さん 提供の VB.NETプログラムを丸裸にする!?
言語体系とコンピュータ 第6回.
言語処理系(6) 金子敬一.
文法と言語 ー文脈自由文法とLR構文解析2ー
コンパイラ 第9回 コード生成 ― スタックマシン ―
文法と言語 ー文脈自由文法とLL構文解析ー
プログラミング言語論 第4回 式の構文、式の評価
計算の理論 II 文脈自由文法と プッシュダウンオートマトン
原案: 矢藤(kohyatoh) 解答: 高原(rankalee, shimejitan), 矢藤 解説: 矢藤
言語処理系(5) 金子敬一.
言語処理系(8) 金子敬一.
コンパイラ 2012年10月15日
コンパイラ 2012年10月22日
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
情報科学(10-11) 言語処理系と仮想機械.
コンパイラ 2011年10月24日
コンパイラ 第14回 上昇型構文解析(2) 38号館4階N-411 内線5459
プログラムの制御構造 選択・繰り返し.
コンパイラ資料 3章 構文解析.
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング言語論 第3回 BNF記法について(演習付き)
人工知能特論II 第2回 二宮 崇.
正則言語 2011/6/27.
文法と言語 ー字句解析とオートマトンlexー
文法と言語 ー字句解析とオートマトンlexー
形式言語の理論 5. 文脈依存言語.
コンパイラ 第13回 上昇型構文解析(1) 38号館4階N-411 内線5459
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
言語と文法 言語とは,ルールに従う記号列の無限集合である. 文法を与えることで言語が定義できる.
文法と言語 ー文脈自由文法とLR構文解析2ー
東京工科大学 コンピュータサイエンス学部 亀田弘之
言語プロセッサ ー第9回目ー 構文解析(続き).
文法と言語 ー文脈自由文法とLR構文解析3ー
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
計算の理論 I 文脈自由文法の標準形 月曜3校時 大月美佳.
復習 一定回数を繰り返す反復処理の考え方 「ループ」と呼ぶ false i < 3 true i をループ変数あるいはカウンタと呼ぶ
プログラムの基本構造と 構造化チャート(PAD)
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
文法と言語 ー文脈自由文法とLL構文解析ー
コンパイラ 2011年10月20日
文法と言語 ー文脈自由文法とLR構文解析ー
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
文法と言語 ー字句解析とオートマトンlexー
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
東京工科大学 コンピュータサイエンス学部 亀田 弘之
4.プッシュダウンオートマトンと 文脈自由文法の等価性
プログラミング基礎演習 第4回.
コンパイラ 2012年10月11日
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
言語プロセッサ ー第9回目ー 構文解析(続き).
言語プロセッサ ー第7回目ー 構文解析(続き).
東京工科大学 コンピュータサイエンス学部 亀田 弘之
東京工科大学 コンピュータサイエンス学部 亀田 弘之
skill-net(MILESTONE CAI,笈川他,1982)[Fortranの課題選択など]
文法と言語 ー文脈自由文法とLR構文解析2ー
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
PEG覚え書き.
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 第8回:2003年12月9日(火).
Presentation transcript:

4.2 再帰下降解析 (1)再帰下降解析とは ■再帰下降解析(Recursive Descent Parsing) 4.2 再帰下降解析 (1)再帰下降解析とは ■再帰下降解析(Recursive Descent Parsing) ①各構文要素(非終端記号)に対して1つの解析ルーチンを用意する。 ②各解析ルーチンの実行部は、その構文要素を左辺とする構文規則の右辺に対応する。 ③規則の右辺に現れる非終端記号は、対応する解析ルーチンの呼出しに相当する。 ④終端記号は、入力された記号が対応する記号であることを示す。 C, Pascal等で用いられている。 解析ルーチンの構造と構文図の対応が取れている。

(2)再帰下降解析の例 While文::= while ( 式 ) 文 If (symbol == WHILE) { input_symbol(); if(symbol == LEFT_PARENTHESIS)input_symbol(); else error(); expression(); if(symbol == RIGHT_PARENTHESIS)input_symbol(); else error(); statement(); }

再帰下降解析の例(その2) OP10::= *|/|% term::= unary | unary OP10 term term() if(symbol==STAR || symbol=SLASH || (symbol == PERCENT) { input_symbol() term();  } } またはTail Recursion だから term() { unary(); while(symbol==STAR || symbol=SLASH || (symbol == PERCENT) { input_symbol() term();  } }

(3)再帰下降解析の特徴 ①構文規則の再帰的構造に対応して、お互いに再帰的に呼び出しあう。 ②解析における呼出し順序が解析木を表現する。 ③構文図と解析ルーチンが対応している。 ④文脈自由文法に対してのみ適用できる。 ⑤どの文脈の自由文法に対しても正しく働くとは限らないが、構文規則の改良によって対処できる。

再帰下降解析でうまくいかない例 【正しく働かない例】左再帰(Left Recursion) A::= Aa | b A → Aa → AAa → AAAa → (無限ループ) 【変更例】   A::= bA’ A’::= ε|aA’ A → bA’→ b A → bA’→ baA’→ ba  A → bA’→ baA’→ baaA’ → baa (bに続くn個のa)

二つ以上の可能性のある場合 ①先読みを行う(ただしうまくいかないこともある) ②左くくりだし(left factoring)を行う。 A::= B | C, B::=uD, C::=uE と書くことができるとき A::= uA’, A’::= D|E 【変更例】   if文::= if(式)文 | if(式)文 else 文 【変更例】   if文::= if(式)文 E   E::= ε | else 文