プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.

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 文法と言語 ー正規表現とオートマトンー 和田俊和 資料保存場所
文法と言語 ー字句解析とオートマトンlexー
計算の理論 I 文脈自由文法 月曜3校時 大月 美佳 平成15年6月30日 佐賀大学知能情報システム学科.
コンパイラ 2011年10月17日
言語体系とコンピュータ 第6回.
情報とコンピュータ 静岡大学工学部 安藤和敏
プログラミング言語論 第1回 情報工学科 篠埜 功.
プログラミング言語論 第1回 情報工学科 篠埜 功.
プログラミング言語論 第6回 型 情報工学科 篠埜 功.
文法と言語 ー文脈自由文法とLL構文解析ー
プログラミング言語論 第4回 式の構文、式の評価
計算の理論 II 文脈自由文法と プッシュダウンオートマトン
Q q システムソフトウェア 第2回:2007年10月10日(水) q q.
条件式 (Conditional Expressions)
言語処理系(5) 金子敬一.
プログラミング言語論 第1回 導入 情報工学科 篠埜 功.
コンパイラ 2012年10月15日
コンパイラ 2012年10月22日
10.通信路符号化手法2 (誤り検出と誤り訂正符号)
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
情報科学(10-11) 言語処理系と仮想機械.
コンパイラ 2011年10月24日
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング言語論 第2回 情報工学科 篠埜 功.
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
プログラミング言語論 第3回 BNF記法について(演習付き)
人工知能特論II 第2回 二宮 崇.
正則言語 2011/6/27.
文法と言語 ー字句解析とオートマトンlexー
文法と言語 ー字句解析とオートマトンlexー
暗黙的に型付けされる構造体の Java言語への導入
形式言語の理論 5. 文脈依存言語.
東京工科大学 コンピュータサイエンス学部 亀田弘之
言語と文法 言語とは,ルールに従う記号列の無限集合である. 文法を与えることで言語が定義できる.
文法と言語 ー文脈自由文法とLR構文解析2ー
プログラミング言語論 第10回 練習問題解答例 情報工学科 篠埜 功.
平成20年10月5日(月) 東京工科大学 コンピュータサイエンス学部 亀田弘之
文法と言語 ー文脈自由文法とLR構文解析3ー
計算の理論 I 文脈自由文法の標準形 月曜3校時 大月美佳.
計算の理論 II 前期の復習 -有限オートマトン-
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
文法と言語 ー文脈自由文法とLL構文解析ー
コンパイラ 2011年10月20日
形式言語とオートマトン 中間試験解答例 2016年11月15実施 中島毅.
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
文法と言語 ー文脈自由文法とLR構文解析ー
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
5.チューリングマシンと計算.
第14回 前半:ラムダ計算(演習付) 後半:小テスト
プログラミング言語論 第10回 情報工学科 篠埜 功.
文法と言語 ー字句解析とオートマトンlexー
4.プッシュダウンオートマトンと 文脈自由文法の等価性
計算の理論 I 文脈自由文法 月曜3校時 大月美佳.
プログラミング言語論 第2回 篠埜 功.
東京工科大学 コンピュータサイエンス学部 亀田弘之
第6回放送授業.
コンパイラ 2012年10月11日
情報とコンピュータ 静岡大学工学部 安藤和敏
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
PROGRAMMING IN HASKELL
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
文法と言語 ー文脈自由文法とLR構文解析2ー
PEG覚え書き.
1.2 言語処理の諸観点 (1)言語処理の利用分野
4.2 再帰下降解析 (1)再帰下降解析とは ■再帰下降解析(Recursive Descent Parsing)
Presentation transcript:

プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功

[参考] Chomskyの言語階層 Noam Chomskyの言語階層について Type 0 Type 1 Type 2 Type 3 (1年後期 形式言語とオートマトン)

先週の補足: 文法とは 文法とは、 (N, T, P, S) N は記号の有限集合。非終端記号(nonterminal symbol)と呼ぶ。 T はNとは重なりのない記号の有限集合。終端記号(terminal symbol)と呼ぶ。 Pは、(N  T)* N (N  T)*  (N  T)*の有限部分集合。生成規則(production)あるいは書き換え規則(rewriting rule)と呼ぶ。 SはNの要素で、開始記号(start symbol)と呼ぶ。

先週の補足: 文法とは u  v が生成規則で、uが文字列の部分文字列であるとき(  =  u  となる  ,   (N  T)* が存在)、 文字列の中のuをvに書き換えてよい( ’ =  v  が得られる)。 これを   ’ と書く。 { x  T* | S * x } が、 (N, T, P, S) によって生成される言語。

Type 3 右線形文法 (Right-linear grammar) すべての生成規則が X  xY または X  x の形をしている。ただし、 X, Y  N x  T * Type3は正規表現と同等。

Type 2 文脈自由文法 (Context free grammar) すべての生成規則が X   の形をしている。ただし、 X  N   (T  N)* Type 2はBNF記法と同等

Type 1 文脈依存文法 (Context sensitive grammar) すべての生成規則が X     の形をしている。ただし、 X  N ,   (T  N)*   (T  N)+

Type 0 制限なし 生成規則は    の形であれば何でもよい。 ,  は、 ,   ( T  N )*

先週の補足: BNF記法 Backus Normal Form (Backus Naur Form) 文脈自由文法を簡潔に表現する記法 左辺が同じ非終端記号の規則を、縦棒 | を使って、まとめて表す。 (例) 文脈自由文法 G = (T, N, S, P) N = { S } T = { ( , ) } P = { S  ( ), S  (S), S  SS } は、BNF記法では、 <paren> ::= ( ) | (<paren>) | <paren> <paren> と表せる。

先週の復習: 拡張BNF記法 * + () { } [ ] などを使えるようにしたのが拡張BNF記法。

第1問 ビット列をBNF記法を利用して定義せよ. また拡張BNF記法で書くとどうなるか. 以下の非終端記号を利用せよ <ビット列> <ビット> 10010111001011100010100011011110……

第2問 aが偶数個(0個は除く)並んだ文字列をBNF記法、拡張BNF記法で定義せよ。 aa, aaaa, aaaaaa, aaaaaaaa, aaaaaaaaaa, ……

第3問 リストは、( )であるか、あるいはリストと自然数を(自然数 . リスト) のようにしてペアにしたものであるとする。これをBNF記法で表せ。ただし自然数は<nat>で既に定義されているものとする。

第4問 対応のとれた括弧からなる文字列をBNF記法で定義せよ。 (), (()), ()(), ()(()), ()((())) ……

第5問 (), (()), ()(), ()(()), …… 対応のとれた括弧で、3段階以上のネストは許さないような文字列をBNF記法で記述せよ。 (), (()), ()(), ()(()), …… ()((())) など、ネストが3段階以上のものは除く。

第6問 問5の文字列は正規表現で記述できるか。

構文図式 文脈自由文法の構文規則を表す際に用いられる(graphicalな)言語 = <数字> ::= ’0’ | ’1’ <式> ::= <数字> (’and’ | ’or’) <数字> ’=’ <数字> 数字 1 式 数字 and 数字 = 数字 or

第7問 次の構成図が与えられたとき,この構成図で表現できる文字列として正しいものを①~⑤から全て選べ.ただし,英字はa, b, ・・・,z, A, B, ・・・,Zのいずれか,数字は0,1,・・・,9のいずれかであるとする. ① A3 ② BB ③ A# ④ #9 ⑤ 99 英字 数字 ‘#’

第8問 あるプログラミング言語で使える変数名は,次の構文図で規定されているものとする。このとき,変数名として使えないものを選べ。ただし,英字はa, b , ・・・, z,A, B, ・・・, Zのどれか,数字は0, 1, ・・・, 9のどれかである。 ① A   ② name   ③ B740   ④ C6H6   ⑤ 11PM 数字 英字 英字

先週までの内容の復習、補足 デジタルコンピュータ --- 機械語で書かれたプログラムを実行する機械。 デジタルコンピュータ --- 機械語で書かれたプログラムを実行する機械。 コンピュータによる問題解決は、必要な情報をビット列で表現(コード化)し、それを機械語プログラムで処理することにより行われる。 大規模なプログラムでも原理的には機械語プログラムを書けるが、事実上不可能。

先週までの内容の復習、補足 プログラミング言語が持つべき性質 高水準の記述能力 プログラムの論理構造を簡潔に記述 厳密な意味の定義 その言語で記述可能なすべてのプログラムの意味(動作)を完全に規定 効率的実装 その言語で記述可能なすべてのプログラムを、効率のよい機械語に変換

先週までの内容の復習、補足 プログラミング言語の定義 構文の定義 Chomskyの文法の理論を基礎とする 曖昧さを許さない 文法構造がコンピュータで解析可能 意味の定義 その言語で記述可能なすべてのプログラムの意味(動作)を完全に規定 表示的意味論(denotational semantics) 公理的意味論(axiomatic semantics) 操作的意味論(operational semantics)

先週までの内容の復習、補足 構文の定義 文脈自由文法(の部分クラス)で定義。BNF記法で簡潔に記述できる。 ただ、プログラミング言語の構文を文脈自由文法のみで完全に規定するのは困難。 名前の定義と参照の関係の整合性 データ型の整合性 は文脈自由文法では記述できないか、あるいは、記述すると非常に複雑になる。 --- コンパイラでは、構文解析フェーズとは別のフェーズにおいて、これらの整合性の検査(意味解析(静的意味の解析))を行う。

先週までの内容の復習、補足 構文の定義 通常、構文の定義は、字句の定義(正規表現で定義)と構文の定義(文脈自由文法(のサブクラス)で定義)に分ける。コンパイラにおける構文解析も、これに対応して、字句解析と構文解析に分ける。 分けない場合 文法定義における終端記号はアルファベット 分ける場合 文法定義における終端記号は字句