言語処理系(5) 金子敬一.

Slides:



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

プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
システムソフトウェア 第3回:2007年10月17日(水)   . 2 本日学ぶこと 文法  文字と文字列  無限集合  文法とそのクラス  オートマトン.
和田俊和 資料保存場所 /2/26 文法と言語 ー正規表現とオートマトンー 和田俊和 資料保存場所
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
Problem J: いにしえの数式 問題作成・解説: 北村 解答作成協力: 八森.
文法と言語 ー字句解析とオートマトンlexー
計算の理論 I 文脈自由文法 月曜3校時 大月 美佳 平成15年6月30日 佐賀大学知能情報システム学科.
JavaScript プログラミング入門 2006/11/10 神津.
言語処理系(7) 金子敬一.
コンパイラ 2011年10月17日
言語処理系(4) 金子敬一.
12.3,E,-15, 12.3,E5,+,=, >,<,…,
言語体系とコンピュータ 第6回.
言語処理系(6) 金子敬一.
文法と言語 ー文脈自由文法とLR構文解析2ー
プログラミング言語論 第6回 型 情報工学科 篠埜 功.
文法と言語 ー文脈自由文法とLL構文解析ー
プログラミング言語論 第4回 式の構文、式の評価
計算の理論 II 文脈自由文法と プッシュダウンオートマトン
条件式 (Conditional Expressions)
模擬国内予選2014 Problem C 壊れた暗号生成器
言語処理系(8) 金子敬一.
言語処理系(9) 金子敬一.
コンパイラ 2012年10月15日
コンパイラ 2012年10月22日
情報科学(10-11) 言語処理系と仮想機械.
コンパイラ 2011年10月24日
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
言語プロセッサ 第7回目 平成27年11月16日.
プログラミング言語論 第3回 BNF記法について(演習付き)
人工知能特論II 第2回 二宮 崇.
正則言語 2011/6/27.
文法と言語 ー字句解析とオートマトンlexー
文法と言語 ー字句解析とオートマトンlexー
形式言語の理論 5. 文脈依存言語.
コンパイラ 第13回 上昇型構文解析(1) 38号館4階N-411 内線5459
国立情報学研究所 ソフトウェア研究系 助教授/
 型推論1(単相型) 2007.
言語と文法 言語とは,ルールに従う記号列の無限集合である. 文法を与えることで言語が定義できる.
文法と言語 ー文脈自由文法とLR構文解析2ー
言語プロセッサ ー第9回目ー 構文解析(続き).
平成20年10月5日(月) 東京工科大学 コンピュータサイエンス学部 亀田弘之
文法と言語 ー文脈自由文法とLR構文解析3ー
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
東京工科大学 コンピュータサイエンス学部 亀田弘之
制御文の役割と種類 IF文 論理式と関係演算子 GO TO文
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
文法と言語 ー文脈自由文法とLL構文解析ー
コンパイラ 2011年10月20日
文法と言語 ー文脈自由文法とLR構文解析ー
計算の理論 I -数学的概念と記法- 火曜 12:50~14:20 大月 美佳 2004年4月20日.
第14回 前半:ラムダ計算(演習付) 後半:小テスト
プログラミング言語論 第10回 情報工学科 篠埜 功.
計算の理論 I -数学的概念と記法- 月曜3校時 大月 美佳.
文法と言語 ー字句解析とオートマトンlexー
東京工科大学 コンピュータサイエンス学部 亀田 弘之
4.プッシュダウンオートマトンと 文脈自由文法の等価性
計算の理論 I 文脈自由文法 月曜3校時 大月美佳.
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
コンパイラ 2012年10月11日
言語プロセッサ ー第9回目ー 構文解析(続き).
言語プロセッサ ー第7回目ー 構文解析(続き).
東京工科大学 コンピュータサイエンス学部 亀田 弘之
東京工科大学 コンピュータサイエンス学部 亀田 弘之
PROGRAMMING IN HASKELL
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
文法と言語 ー文脈自由文法とLR構文解析2ー
PEG覚え書き.
4.2 再帰下降解析 (1)再帰下降解析とは ■再帰下降解析(Recursive Descent Parsing)
Presentation transcript:

言語処理系(5) 金子敬一

4 プログラミング言語の構文の定義 4.1 文脈自由文法 4.2 導出と解析木 4.3 文脈自由文法の能力

4.1 文脈自由文法 文脈自由文法 BNF記法 プログラミング言語の 構文を指定

4.1 文脈自由文法 書換え規則(生成規則) 文 → if 式 then 文 else 文 式 → 式 + 式 4.1 文脈自由文法 書換え規則(生成規則) 文 → if 式 then 文 else 文 式 → 式 + 式 文 → begin 文の並び end 文の並び → 文 | 文; 文の並び

4.1 文脈自由文法 書換え規則(生成規則) 終端記号:言語の文字列の基本記号.字句と同義 非終端記号:文,式,文の並び,などの構文上の分類 4.1 文脈自由文法 書換え規則(生成規則) 終端記号:言語の文字列の基本記号.字句と同義 非終端記号:文,式,文の並び,などの構文上の分類 出発記号:非終端記号の1つ.対象としている言語を表す. 生成規則:構文上の分類を他の分類や終端記号から生成する規則

4.1 文脈自由文法 書換え規則(生成規則) 文 → begin 文の並び end 文の並び → 文 | 文; 文の並び 文の並び → 文 4.1 文脈自由文法 書換え規則(生成規則) 文 → begin 文の並び end 文の並び → 文 | 文; 文の並び 文の並び → 文 文の並び → 文; 文の並び

4.1 文脈自由文法 生成規則例 非終端記号 式 → 式 演算子 式 式 → ( 式 ) 式 → - 式 式 → id 演算子 → + 4.1 文脈自由文法 生成規則例 非終端記号 式 → 式 演算子 式 式 → ( 式 ) 式 → - 式 式 → id 演算子 → + 演算子 → - 演算子 → * 演算子 → / 演算子 → ^

4.1 文脈自由文法 表記上の約束 次の記号は非終端記号 式,文,演算子のようなゴシック体の日本語による名前 4.1 文脈自由文法 表記上の約束 次の記号は非終端記号 式,文,演算子のようなゴシック体の日本語による名前 アルファベットの最初の方のイタリック体の大文字 文字S.これは出発記号

4.1 文脈自由文法 表記上の約束 次の記号は終端記号 1字の小文字a, b, c +, - のような演算子記号 4.1 文脈自由文法 表記上の約束 次の記号は終端記号 1字の小文字a, b, c +, - のような演算子記号 括弧やコンマのような区切り記号 数字0, 1, ..., 9

4.1 文脈自由文法 表記上の約束 アルファベットの終わりの方の大文字は文法記号(非終端記号または終端記号).主にX, Y, Z 4.1 文脈自由文法 表記上の約束 アルファベットの終わりの方の大文字は文法記号(非終端記号または終端記号).主にX, Y, Z アルファベットの終わりの方の小文字は終端記号列.主にu, v, ..., z

4.1 文脈自由文法 表記上の約束 Aを左辺に持つ生成規則全体をA生成規則.A → a1, A → a2, ..., A → akがA生成規則ならば,A→a1 | a2 | ... | akと書いても良い.a1, a2, ..., akを代替と呼ぶ.

4.1 文脈自由文法 表記上の約束 小文字のギリシャ文字,例えばa, b, g, は文法記号列を表す 最初の生成規則の左辺を出発記号

4.1 文脈自由文法 生成規則例 E → E A E | ( E ) | - E | id A → + | - | * | / | ^ 4.1 文脈自由文法 生成規則例 式 → 式 演算子 式 式 → ( 式 ) 式 → - 式 式 → id 演算子 → + 演算子 → - 演算子 → * 演算子 → / 演算子 → ^ E → E A E |  ( E ) |  - E | id A → + | - | * |  / | ^

4.2 導出と解析木 導出 A → g : 生成規則 a, b : 文法記号 a A b ⇒ a g b : 導出

4.2 導出と解析木 導出 a1 ⇒ a2 ⇒ ... ⇒ an a1はanを導出する. a1からanへの導出

4.2 導出と解析木 導出 ⇒*: 0回以上の導出 ⇒+: 1回以上の導出

4.2 導出と解析木 文と文形式 文脈自由文法G 出発記号S L(G) : Gが w : 終端記号のみからなる文字列 生成する言語 4.2 導出と解析木 文と文形式 文脈自由文法G 出発記号S w : 終端記号のみからなる文字列 S ⇒+ w ⇔ w ∈ L(G) L(G) : Gが 生成する言語 Gの文

4.2 導出と解析木 文と文形式 w : 終端記号のみからなる文字列 Gの文 S ⇒+ w ⇔ w ∈ L(G) 4.2 導出と解析木 文と文形式 w : 終端記号のみからなる文字列 S ⇒+ w ⇔ w ∈ L(G) S ⇒+ a, a : 非終端記号を含みうる Gの文 Gの文形式

4.2 導出と解析木 文と文形式 E → E + E | E * E | ( E ) | - E | id 4.2 導出と解析木 文と文形式 E → E + E | E * E | ( E ) | - E | id E ⇒ - E ⇒ - ( E )   ⇒ - ( E + E )   ⇒ - ( id + E )   ⇒ - ( id + id ) 文形式 文

4.2 導出と解析木 文と文形式 E ⇒ - E ⇒ - ( E ) ⇒ - ( E + E ) ⇒ - ( id + E ) 4.2 導出と解析木 文と文形式 E ⇒ - E ⇒ - ( E )   ⇒ - ( E + E )   ⇒ - ( id + E )   ⇒ - ( id + id ) 最左導出:導出の過程で最も左の非終端記号を置換 cf.最右導出

4.2 導出と解析木 解析木 置換え順序によらない図表現 E ⇒ - E ⇒ - ( E ) ⇒ - ( E + E ) 4.2 導出と解析木 解析木 置換え順序によらない図表現 E E ⇒ - E ⇒ - ( E )   ⇒ - ( E + E )   ⇒ - ( id + E )   ⇒ - ( id + id ) E - ( E ) E + E id id

4.2 導出と解析木 a1 ⇒ a2 ⇒ ... ⇒ anから解析木を生成 a1の節点のみからなる木 4.2 導出と解析木 解析木 a1 ⇒ a2 ⇒ ... ⇒ anから解析木を生成 a1の節点のみからなる木 ai=X1X2...Xkなる解析木に対して,aiをai-1のXjをb=Y1Y2...Yrで置換して得るとき,ai-1を表す解析木のXjに対応する葉に,左からY1, Y2, ..., Yrと名前を付けた子を与える

4.2 導出と解析木 解析木 Eの節点のみからなる木 E

4.2 導出と解析木 解析木 E ⇒ - E ⇒ - ( E ) E E - E E - ( E )

4.2 導出と解析木 解析木 - ( E ) ⇒ - ( E + E ) E - E E - ( E ) ( E ) E +

4.2 導出と解析木 解析木 - ( E + E ) ⇒ - ( id + E ) E - E ( E ) E + E + id

4.2 導出と解析木 解析木 - ( id + E ) ⇒ - ( id + id ) E - E ( E ) E + id id id 4.2 導出と解析木 解析木 - ( id + E ) ⇒ - ( id + id ) E - E ( E ) E + id id id id

4.2 導出と解析木 解析木 E ⇒ E + E ⇒ id + E ⇒ id + E * E ⇒ id + id * E 4.2 導出と解析木 解析木 E ⇒ E + E ⇒ id + E ⇒ id + E * E ⇒ id + id * E ⇒ id + id * id E ⇒ E * E ⇒ E + E * E

4.2 導出と解析木 解析木 E ⇒ E + E ⇒ id + E ⇒ id + E * E ⇒ id + id * E 4.2 導出と解析木 解析木 E ⇒ E + E ⇒ id + E ⇒ id + E * E ⇒ id + id * E ⇒ id + id * id E E + E id E * E id id

4.2 導出と解析木 解析木 E ⇒ E * E ⇒ E + E * E ⇒ id + E * E ⇒ id + id * E 4.2 導出と解析木 解析木 E ⇒ E * E ⇒ E + E * E ⇒ id + E * E ⇒ id + id * E ⇒ id + id * id E E * E E + E id id id

4.2 導出と解析木 曖昧性 複数の解析木を生成する文法は曖昧 曖昧除去規則(結合性,優先順序)

優先順位:- > ^ > {* /} > {+ -} 4.2 導出と解析木 左結合 曖昧性 E → E + E | E - E | E * E | E / E | E ^ E | ( E ) | - E | id に対して曖昧性を除去するには, 右結合 優先順位:- > ^ > {* /} > {+ -}

4.2 導出と解析木 曖昧性 - 1次子 ^ 因子 * / 項 + - 式 式 → 式+項 | 式–項 | 項 4.2 導出と解析木 曖昧性 - 1次子 ^   因子 * / 項 + - 式 式 → 式+項 | 式–項 | 項 項 → 項*因子 | 項/因子 |      因子 因子 → 1次子^因子 | 1次子 1次子 → -1次子 | 要素 要素 → ( 式 ) | id

4.2 導出と解析木 導出例: x + y * z 式 ⇒ 式+項 ⇒項+項 式 → 式+項 | 式–項 | 項 ⇒因子+項 4.2 導出と解析木 導出例: x + y * z 式 ⇒ 式+項 ⇒項+項 ⇒因子+項 ⇒1次子+項 ⇒要素+項 ⇒id+項 ⇒id+項*因子 ⇒id+因子*因子 ⇒…⇒id+id*因子⇒…⇒id+id*id 式 → 式+項 | 式–項 | 項 項 → 項*因子 | 項/因子 |      因子 因子 → 1次子^因子 | 1次子 1次子 → -1次子 | 要素 要素 → ( 式 ) | id

4.2 導出と解析木 導出例: x + y * z 式 ⇒ 式+項 ⇒項+項 ⇒因子+項 ⇒1次子+項 ⇒要素+項 ⇒id+項 4.2 導出と解析木 導出例: x + y * z 式 式 ⇒ 式+項 ⇒項+項 ⇒因子+項 ⇒1次子+項 ⇒要素+項 ⇒id+項 ⇒id+項*因子 ⇒id+因子*因子 ⇒…⇒id+id*因子⇒…⇒id+id*id 式 + 項 項 項 * 因 因 因 1 1 1 要 要 要 id id id

ちょっと休憩 (雑談)

言葉の語源 おくび ゲップのこと 江戸患い 脚気のこと 土左衛門 力士の名前から へちま (い)とうり→へちまうり おくび      ゲップのこと 江戸患い    脚気のこと 土左衛門    力士の名前から へちま     (い)とうり→へちまうり ろくでもない  ろく=陸=平坦

休憩おわり

4.3 文脈自由文法の能力 正規表現と文脈自由文法 正規表現で表現可能 ⇒ 文脈自由文法で表現可能 4.3 文脈自由文法の能力 正規表現と文脈自由文法 正規表現で表現可能 ⇒ 文脈自由文法で表現可能 正規表現の方が,理解しやすく,効率のよい処理系を生成しやすい

4.3 文脈自由文法の能力 文脈自由文法の例 S → ( S ) S | ε Sから導出される全ての文は,括弧の釣合がとれている 4.3 文脈自由文法の能力 文脈自由文法の例 S → ( S ) S | ε Sから導出される全ての文は,括弧の釣合がとれている 釣合のとれた括弧のみからなる文字列はすべて,Sから生成可能

4.3 文脈自由文法の能力 文脈自由文法の例 S → ( S ) S | ε Sから導出される全ての文は,括弧の釣合がとれている S ⇒ ε 4.3 文脈自由文法の能力 文脈自由文法の例 S → ( S ) S | ε Sから導出される全ての文は,括弧の釣合がとれている S ⇒ ε S ⇒ ( S ) S ⇒* ( x ) S ⇒* ( x ) y

4.3 文脈自由文法の能力 文脈自由文法の例 S → ( S ) S | ε 釣合のとれた括弧のみからなる文字列はすべて,Sから生成可能 4.3 文脈自由文法の能力 文脈自由文法の例 S → ( S ) S | ε 釣合のとれた括弧のみからなる文字列はすべて,Sから生成可能 長さ0の空列εはSから導出可能 長さ2nの釣合う括弧の列w=( x ) y S ⇒ ( S ) S ⇒* ( x ) S ⇒* ( x ) y

4.3 文脈自由文法の能力 文脈自由でない言語 L1 = {wcw | wは(a|b)*に属する} ただし,a, b, c: 終端記号 4.3 文脈自由文法の能力 文脈自由でない言語 L1 = {wcw | wは(a|b)*に属する} ただし,a, b, c: 終端記号      w: 終端記号列 L1’ = {wcwR | wは(a|b)*に属する} S → a S a | b S b | c

4.3 文脈自由文法の能力 文脈自由でない言語 L2 = {anbmcndm | n>0かつm>0} 4.3 文脈自由文法の能力 文脈自由でない言語 L2 = {anbmcndm | n>0かつm>0} ただし,a, b, c, d: 終端記号 L2’ = {anbmcmdn | n>0かつm>0} S → a S d | b A c A → b A c| bc

4.3 文脈自由文法の能力 文脈自由でない言語 L2 = {anbmcndm | n>0かつm>0} 4.3 文脈自由文法の能力 文脈自由でない言語 L2 = {anbmcndm | n>0かつm>0} ただし,a, b, c, d: 終端記号 L2” = {anbncmdm | n>0かつm>0} S → A B A → a A b| a b B → c B d | c d

4.3 文脈自由文法の能力 文脈自由でない言語 L3 = {anbncn | n>0} ただし,a, b, c: 終端記号 4.3 文脈自由文法の能力 文脈自由でない言語 L3 = {anbncn | n>0} ただし,a, b, c: 終端記号 L3’ = {anbn | n>0} S → a S b | a b