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

Slides:



Advertisements
Similar presentations
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
Advertisements

情報処理基礎 A ・ B 第 5 回 プログラミング入門 操作の自動化を実現する仕組み. 2004/11/16 ・ 17 情報処理基礎 A ・ B 2 本日の内容 処理の自動化~プログラムの概念 ハードウェアとソフトウェア プログラミング言語 Excel における処理の自動化 入力支援の機能 分析ツール.
コーパス言語学実践 2006 年度 2 学期 第 9 回. 2 本日の内容 これまでと同様の作業 – プログラムで処理するケースの紹介.
和田俊和 資料保存場所 /2/26 文法と言語 ー正規表現とオートマトンー 和田俊和 資料保存場所
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
言語処理系(1) 金子敬一.
東京工科大学 コンピュータサイエンス学部 亀田弘之
言語処理系(7) 金子敬一.
コンパイラ 2011年10月17日
情報アプリケーション1 2008年 11月 19日 第二回資料 担当 重定 如彦 .
Linux リテラシ 2006 第2回 基本コマンド2.
12.3,E,-15, 12.3,E5,+,=, >,<,…,
最短路問題をGurobiで解こう! 流通最適化工学 補助資料.
数値計算及び実習 第3回 プログラミングの基礎(1).
VBA H106077 寺沢友宏.
C言語 第2講 生物機能制御学講座 濱田 農学部7号館209室.
言語処理系(6) 金子敬一.
5.チューリングマシンと計算.
言語処理系(3) 金子敬一.
文法と言語 ー文脈自由文法とLR構文解析2ー
プログラミング言語論 第4回 手続きの引数機構 変数の有効範囲
言語処理系(5) 金子敬一.
言語処理系(8) 金子敬一.
言語処理系(9) 金子敬一.
問題 1 キーボードから入力した数の合計を計算するプログラムを 作成せよ。最初に、何個の数を入力するかその数を入力 するようにする。
コンパイラ 2012年10月15日
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
チューリング機械 状態の有限集合 ヘッドの方向を表す。 L:1コマ左へ R:1コマ右へ テープ記号の有限集合 入力記号の有限集合 動作関数
Cプログラミング演習 中間まとめ2.
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
FlexとBison+アルファ -実習編-
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
プログラミング言語論 第9回 Hoare論理の練習問題 手続きの引数機構 変数の有効範囲
最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章.
アルゴリズムとデータ構造1 2006年6月16日
コンピュータに計算させる命令を確かめよう!
前回の練習問題.
言語と文法 言語とは,ルールに従う記号列の無限集合である. 文法を与えることで言語が定義できる.
柔軟に変更可能な字句解析機構を持つ コードクローン検出ツールの開発
文法と言語 ー文脈自由文法とLR構文解析2ー
「入力」はInputBoxやテキストボックスに限らず、 セルからのデータの入力や、チェックボックス等からの入力全てを含める。
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
文法と言語 ー文脈自由文法とLR構文解析3ー
アルゴリズム論 (第12回) 佐々木研(情報システム構築学講座) 講師 山田敬三
プログラミング言語論 第5回 手続きの引数機構 変数の有効範囲
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
制御文の役割と種類 IF文 論理式と関係演算子 GO TO文
コンパイラ 2011年10月20日
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
B演習(言語処理系演習)第2回 田浦.
C言語 はじめに 2016年 吉田研究室.
JAVAバイトコードにおける データ依存解析手法の提案と実装
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
C++ 構文解析 構文解析器の状態保存と復元
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
文法と言語 ー文脈自由文法とLR構文解析ー
第6回レポート解説 条件1 条件2 条件3 月の入力 月、日、曜日の表示 日の入力 曜日の入力
4.プッシュダウンオートマトンと 文脈自由文法の等価性
統合開発環境のための プログラミング言語拡張 フレームワーク
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
コンパイラ 2012年10月11日
文法と言語 ー文脈自由文法とLR構文解析2ー
:: の扱い 長谷川啓.
第3回簡単なデータの入出力.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
第2章 数値の入力と変数 scanfと変数をやります.
計算技術研究会 C言語講座 第二回 制御構文 if , switch.
Presentation transcript:

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

練習問題 2.2 値呼び,参照呼び,複写復元連係,名前呼び,を用いたときの印字結果? proc PROC(X,Y,Z); begin 練習問題 2.2 値呼び,参照呼び,複写復元連係,名前呼び,を用いたときの印字結果? proc PROC(X,Y,Z); begin Y := Y + 1; Z := Z + X end PROC; begin A := 2; B := 3; PROC(A+B,A,A); print A end

2 練習問題 2.2 値呼び proc PROC(X,Y,Z); begin Y := Y + 1; Z := Z + X 練習問題 2.2 値呼び proc PROC(X,Y,Z); begin Y := Y + 1; Z := Z + X end PROC; A := 2; B := 3; PROC(A+B,A,A); print A end 出力結果は, 2

8 練習問題 2.2 参照呼び proc PROC(X,Y,Z); begin Y := Y + 1; Z := Z + X 練習問題 2.2 参照呼び proc PROC(X,Y,Z); begin Y := Y + 1; Z := Z + X end PROC; A := 2; B := 3; PROC(A+B,A,A); print A end 出力結果は, 8

3か7 練習問題 2.2 複写復元連係 proc PROC(X,Y,Z); begin Y := Y + 1; Z := Z + X 練習問題 2.2 複写復元連係 proc PROC(X,Y,Z); begin Y := Y + 1; Z := Z + X end PROC; A := 2; B := 3; PROC(A+B,A,A); print A end 出力結果は, 3か7

9 練習問題 2.2 名前呼び proc PROC(X,Y,Z); begin Y := Y + 1; Z := Z + X 練習問題 2.2 名前呼び proc PROC(X,Y,Z); begin Y := Y + 1; Z := Z + X end PROC; A := 2; B := 3; PROC(A+B,A,A); print A end 出力結果は, 9

3 字句解析 3.1 字句解析系の役割 3.2 字句解析系を設計するための簡単な方法

3.1 字句解析系の役割 字句解析系の設計 入力文字列 入力文字列 字句解析系 呼出し 構文解析系 字句解析系 字句 構文解析系 字句 3.1 字句解析系の役割 字句解析系の設計 入力文字列 入力文字列 字句解析系 呼出し 構文解析系 字句解析系 字句 構文解析系 字句 解析木 解析木

3.1 字句解析系の役割 字句解析の必要性 構文解析よりも簡単な作業 分離することで構文解析も単純化 字句解析時に実行可能なこと 3.1 字句解析系の役割 字句解析の必要性 構文解析よりも簡単な作業 分離することで構文解析も単純化 字句解析時に実行可能なこと 行番号の数え上げ 出力リストの作成 余白の除去 注釈の削除

3.1 字句解析系の役割 入力バッファリング ’i’ ’n’ ’t’ ’ ’ ’x’ ’1’ ’;’ ’ ’ ’i’ ’n’ ’t’ ’ ’ 3.1 字句解析系の役割 入力バッファリング ’i’ ’n’ ’t’ ’ ’ ’x’ ’1’ ’;’ ’ ’ ’i’ ’n’ ’t’ ’ ’ ”int”

3.1 字句解析系の役割 入力バッファリング ’i’ ’n’ ’t’ ’ ’ ’x’ ’1’ ’;’ ’ ’ ’i’ ’n’ ’t’ ’ ’ 3.1 字句解析系の役割 入力バッファリング ’i’ ’n’ ’t’ ’ ’ ’x’ ’1’ ’;’ ’ ’ ’i’ ’n’ ’t’ ’ ’ ”int” ”x1”

3.1 字句解析系の役割 入力バッファリング ’l’ ’o’ ’n’ ’g’ ’a’ ’m’ ’e’ ’;’ ’ ’ ’i’ ’x’ ’1’ 3.1 字句解析系の役割 入力バッファリング ’l’ ’o’ ’n’ ’g’ ’a’ ’m’ ’e’ ’;’ ’ ’ ’i’ ’x’ ’1’ ’;’ ’ ’ ’i’ ’n’ ’t’ ’ ’ ’v’ ’e’ ’r’ ’y’

3.1 字句解析系の役割 入力バッファリング ’x’ ’1’ ’;’ ’ ’ ’i’ ’n’ ’t’ ’ ’ ’v’ ’e’ ’r’ ’y’ 3.1 字句解析系の役割 入力バッファリング ’x’ ’1’ ’;’ ’ ’ ’i’ ’n’ ’t’ ’ ’ ’v’ ’e’ ’r’ ’y’ ’l’ ’o’ ’n’ ’g’ ’a’ ’m’ ’e’ ’;’ ’ ’ ’i’

3.1 字句解析系の役割 予備操作 注釈の除去 不要な空白の除去 行数の数え上げ

3.2 字句解析系を設計する ための簡単な方法 遷移図 字句の発見を表す 現れ得る入力文字 遷移 * 1 英字 状態 1文字戻す

3.2 字句解析系を設計する ための簡単な方法 識別子に対する遷移図 英字または数字 * 始め 英字 1 2 区切り記号

ちょっと休憩 (雑談)

CMの中の外国語 Volare, cantare... 飛ぶ,歌う... Что? Что? 何? 何? Что? Что? 何? 何? Il offre sa confiance et son amour. 信頼と愛情を提供する. 有烏龍茶嗎? ウーロン茶ありますか?

休憩おわり

3.2 字句解析系を設計する ための簡単な方法 遷移図からプログラムへ 入力バッファから次の文字を読み込む.(関数GETCHAR) 3.2 字句解析系を設計する ための簡単な方法 遷移図からプログラムへ 入力バッファから次の文字を読み込む.(関数GETCHAR) 対応する辺が出ていれば,対応する状態へ制御を移す. 2重丸の状態でなければ,失敗. すべての遷移図を試しても駄目ならば字句誤り.

3.2 字句解析系を設計する ための簡単な方法 状態0 state0: C := GETCHAR(); if LETTER(C) then 3.2 字句解析系を設計する ための簡単な方法 状態0 state0: C := GETCHAR(); if LETTER(C) then goto state1 else FAIL() 始め 英字

1 3.2 字句解析系を設計する ための簡単な方法 状態1 state1: C := GETCHAR(); if LETTER(C) or 3.2 字句解析系を設計する ための簡単な方法 状態1 state1: C := GETCHAR(); if LETTER(C) or DIGIT(C) then goto state1 else if DELIMIT(C) then goto state2 else FAIL() 英字または数字 1 区切り記号

* 2 3.2 字句解析系を設計する ための簡単な方法 状態2 state2: RETRACT(); return(id, 3.2 字句解析系を設計する ための簡単な方法 状態2 state2: RETRACT(); return(id, INSTALL()) * 2