言語プロセッサ2005

Similar documents
言語プロセッサ2005 -No.6-

プログラミング実習I

プログラミング基礎

PowerPoint プレゼンテーション

Microsoft Word - Javacc.docx

計算機アーキテクチャ

C8

Microsoft PowerPoint ppt

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

Microsoft PowerPoint - Compiler03note.pptx

オートマトン 形式言語及び演習 1. 有限オートマトンとは 酒井正彦 形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110,

プログラミング言語処理系論 (4) Design and Implementation of Programming Language Processors

プログラミング実習I

Microsoft PowerPoint ppt

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

TopSE並行システム はじめに

Microsoft PowerPoint - Compiler01note.pptx

PowerPoint プレゼンテーション

Microsoft PowerPoint - pro-vm2.ppt

Microsoft PowerPoint - 計算機言語 第7回.ppt

XMLとXSLT

プログラミング言語処理系論 (6) Design and Implementation of Programming Language Processors 佐藤周行 ( 情報基盤センター / 電気系専攻融合情報学コース )

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

講義の進め方 第 1 回イントロダクション ( 第 1 章 ) 第 2 ~ 7 回第 2 章 ~ 第 5 章 第 8 回中間ミニテスト (11 月 15 日 ) 第 9 回第 6 章 ~ 第 回ローム記念館 2Fの実習室で UML によるロボット制御実習 定期試験 2

Microsoft PowerPoint - 01Intro.ppt [互換モード]

() () (parse tree) ( (( ) * 50) ) ( ( NUM 10 + NUM 30 ) * NUM 50 ) ( * ) ( + ) NUM 50 NUM NUM (abstract syntax tree, AST) ( (( ) * 5

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

プログラミング入門1

ポインタ変数

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

Microsoft PowerPoint - bp02.ppt

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

関東/関西/九州同時開催 女性エンジニア大集合!新春LT 座談会 スクリプト インタプリタを 作ってみた 1 スクリプトインタプリタを作ってみた

Microsoft PowerPoint - Compiler03.pptx

Microsoft PowerPoint - 01intro.ppt [互換モード]

第 1 回 C 言語講座 1. コンピュータって? だいたいは 演算装置 制御装置 記憶装置 入出力装置から構成されている 演算装置 CPU の一部で実際に計算を行う装置 制御装置 CPU の一部で演算装置や入出力装置 記憶装置の読み書きなどを制御する装置 記憶装置プログラムや情報 データを一時的

Microsoft PowerPoint - 集積回路工学_ ppt[読み取り専用]

Microsoft PowerPoint - 01_Vengineer.ppt

ex04_2012.ppt

Łñ“’‘‚2004

プリント


kiso2-03.key

Java言語 第1回

Agenda Intro & history LLVM overview Demo Pros & Cons LLVM Intermediate Language LLVM tools

Microsoft PowerPoint - 第3回目.ppt [互換モード]

VelilogHDL 回路を「言語」で記述する

コンピュータの仕組み(1)ハードウェア

Microsoft PowerPoint - アルデIII 02回目10月15日

2008 IIA (program) pro(before)+gram(write) (artificial language) (programming languege) (programming) (machine language) (assembly language) ( )

Microsoft PowerPoint - 講義10改.pptx

Microsoft Word 基_シラバス.doc

Microsoft Word - no01.doc

PowerPoint Presentation

Microsoft Word - no01.docx

8 / 0 1 i++ i 1 i-- i C !!! C 2

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

Microsoft PowerPoint - アルデIII 02回目10月14日

r1.dvi

論理と計算(2)

教室案内.pptx

PowerPoint プレゼンテーション

オートマトンと言語

Lab GPIO_35 GPIO

PowerPoint プレゼンテーション

PGRelief C/C++ 強化ポイント説明書

メソッドのまとめ

ガイダンス

論理と計算(2)

スライド 1

C言語入門

01_newsletter-22.indd

情報処理概論(第二日目)

Microsoft PowerPoint - 3.ppt [互換モード]

Verilog HDL による回路設計記述

ソフトウェア基礎技術研修

memo

プログラミングA

PowerPoint Presentation

講習No.1

ex05_2012.pptx

情報技術論 教養科目 4 群 / 選択 / 前期 / 講義 / 2 単位 / 1 年次司書資格科目 / 必修 ここ数年で急速に身近な生活の中に浸透してきた情報通信技術 (ICT) の基礎知識や概念を学ぶことにより 現代の社会基盤であるインターネットやコンピュータ システムの利点 欠点 それらをふまえ

memo

デジタル表現論・第4回

目次 研究目的 背景システム開発について実験および評価結論

Microsoft PowerPoint - BCCInstallation.ppt [互換モード]

PowerPoint Presentation

JAVA入門

Microsoft Word - Cプログラミング演習(1)_2012

講習No.8

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

JavaプログラミングⅠ

Microsoft PowerPoint - 07.ppt [互換モード]

スライド 1

TOPPERS活用アイデア・アプリケーション開発

1. 関数 scanf() 関数 printf() は変数の値を画面に表示しますが それに対し関数 scanf() はキーボードで入力した値を変数に代入します この関数を活用することで対話式 ( ユーザーの操作に応じて処理を行う ) プログラムを作ることができるようになります 整数の和

COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1

Microsoft PowerPoint - Lec24 [互換モード]

Microsoft PowerPoint - pc11.ppt

プログラミングA

Transcription:

url: kameken.clique.jp/lectures/lectures2014/compiler2014/ 言語プロセッサ 2014 Language Processors 2014 平成 26 年 9 月 22 日 ( 月 ) 東京工科大学コンピュータサイエンス学部亀田弘之

まずはイントロから なぜ言語プロセッサを学ぶのか? (Why do we study a course 言語プロセッサ?) 2

3

( 参考 ) これからは IoT の時代 1. IoT Japan 2014 (10 月 15 日 ~17 日開催 ) http://itpro.nikkeibp.co.jp/expo/2014/iot/ 2. IoT の概要図 ( 出典 )http://tocos-wireless.com/jp/tech/internet_of_things.html 4

情報システム 5

6

複雑だなぁ ネットワーク セキュリティ クラウドコンピューティング モバイル 7

Divide and Conquer ( 困難は分割し しかる後に統合せよ!) 8

何が基本な のかなぁ? 9

ディスプレイ 本体 キーボード 10

出力 (Output) 処理 入力 (Input) 11

本体内部が大切! 12

14

コンピュータの階層化モデル Application Software Operating System Instr. Set Architecture Micro Architecture Logic Module Digital Circuit Analog Circuit Devices (elements) Physics (Electron etc.) Examples Program Device Driver Instruction set & Register Data Bus, Controller Adder, Register AND Gate, OR Gate Amplifier, Filter Diode, Transistor Electron, Photon 15

16

17

18

高水準言語ー > 論理回路 main( ){ int a; a = 1; printf( %d,a); }? 高水準言語 論理回路 19

論理回路 20

言語プロセッサとは 高水準言語によるプログラム ( 処理手順の記述, 命令群 ) -> 論理回路制御指令群 ( 注 ) 命令 :command 指令 :instruction 21

言語プロセッサとは 高水準言語によるプログラム ( 処理手順の記述, 命令群 ) -> 論理回路制御指令群 言語プロセッサ ( 注 ) 命令 :command 指令 :instruction 22

C 言語 Java 言語 アセンブリ言語 23

main(){ } 24

$ cat p01.s.file "p01.c".def main;.scl 2;.type 32;.endef.text.globl _main.def _main;.scl 2;.type 32;.endef _main: pushl %ebp movl %esp, %ebp subl $8, %esp andl $-16, %esp movl $0, %eax movl %eax, -4(%ebp) movl -4(%ebp), %eax call alloca call main leave ret 25

main(){ int a; a = 20; a = a + 30; a = 100 - a; a = a*7; } 26

$ cat p01.s.file "p01.c".def main; 32;.endef.scl 2;.type.text.globl _main.def _main;.scl 32;.endef 2;.type _main: pushl %ebp movl %esp, %ebp subl $8, %esp andl $-16, %esp movl $0, %eax movl %eax, -8(%ebp) movl -8(%ebp), %eax call alloca call main movl $20, -4(%ebp) leal -4(%ebp), %eax addl $30, (%eax) movl $100, %eax subl -4(%ebp), %eax movl %eax, -4(%ebp) movl -4(%ebp), %edx movl %edx, %eax sall $3, %eax subl %edx, %eax movl %eax, -4(%ebp) leave ret 27

$ gcc -S filename.c $ ls $ cat filename.s 28

コンパイラの処理工程概要 ソース言語 読み込み 字句解析 構文解析 中間語生成 コード生成 目的言語 29

言語プロセッサの種類 1. インタープリタ (interpreter) 2. コンパイラ (compiler) 30

コンパイラの処理 ( 例 ) X = Y*3.14 + X/Y A = (A + B)*C + B 31

補足説明 ( 教科書第 1 章の 1.1 について ) 32

コンパイラとは Compiler とは high level language で記述されたプログラム ( 例えば C 言語のプログラム ) を 機械向き言語 ( 例えば 機械語 ) のプログラムに変換する ( 翻訳する ) ためのプログラムのこと 33

教科書 p.2~p.6 の図の話しは 自分で読んでおいてください この図はコンパイラの本で時々出てきます 34

参考文献 ( 一部 ) 1. コンパイラ原理 技法 ツール, 原田賢一 ( 訳 ), サイエンス社 (1990). 2. アルゴリズム + データ構造 = プログラム, 片山卓也 ( 訳 ), 日本コンピュータ協会 (1980). ( 一部誤りあり!) 3. 佐々政孝, プログラミング言語処理系, 岩波書店 (1989). 35

数式の例 A = B*3.14 + C/A Area = 2*3.14*R*R 36

数式の解析 kingaku = teika + teika * shouhizei 37

数式の解析 1. 読み込み ( 文字列として ) kingaku = teika + teika * shouhizei 2. 要素 (token) の切り出し kingaku, =, teika, +, *, shouhizei 3. 要素の相互関係の分析 = kingaku + teika * teika shouhizei 38

ソース言語 読み込み 字句解析 分析 構文解析 中間語生成 コード生成 合成 目的言語 39

数式の解析 1. 読み込み ( 文字列として ) kingaku = teika + teika * shouhizei 2. 要素 (token) の切り出し kingaku, =, teika, +, *, shouhizei 3. 要素の相互関係の分析 = kingaku + teika * teika shouhizei 40

数式の解析 1. 読み込み ( 文字列として ) kingaku = teika + teika * shouhizei 2. 要素 (token) の切り出し kingaku, =, teika, +, *, shouhizei 3. 要素の相互関係の分析 = kingaku + teika * teika shouhizei 41

数式の解析 1. 読み込み ( 文字列として ) kingaku = teika + teika * shouhizei 2. 要素 (token) の切り出し kingaku, =, teika, +, *, shouhizei 3. 要素の相互関係の分析 = kingaku + teika * teika shouhizei 42

数式の解析 1. 読み込み ( 文字列として ) 読み込み kingaku = teika + teika * shouhizei 2. 要素 (token) の切り出し字句解析 kingaku, =, teika, +, *, shouhizei 3. 要素の相互関係の分析構文解析 = kingaku + teika * teika shouhizei 43

1. 読み込み 数式の解析 ファイルからの入力技法 2. 字句解析 有限オートマトンの理論 正規文法 正規表現 3. 構文解析 スタックオートマトン理論 文脈自由文法 44

前提知識 言語理論とオートマトン 前期科目 言語理論とオートマトン 抽象的 論理的な思考への慣れ ( 特に 正規表現と有限オートマトン ) プログラミング技法 今までいろいろと習ってきましたよね! 基本的な知識があれば一応 OK ファイルの入出力が難しい人もいるかも 45

学んで得られるもの 言語理論とオートマトン 抽象的 論理的な思考への慣れ ソフトウェア分野における基本的概念 正規表現 etc. プログラミング言語へのより深い理解 プログラミング技法 プログラミング力 ( 知識 ) アップ 洗練されたアルゴリズムの理解などなど 46

言語プロセッサ関連は コンピュータサイエンスの英知が集積されている! この授業を取った人は先見の明がある! 47

受講者の行動指針 必ず復習をする 48

復習問題 1. コンピュータの階層化モデルを説明せよ 2. 命令 (command) と指令 (instruction) の使い分けは? 3. 言語プロセッサにはどんなものがあるか? 4. コンパイル処理の処理工程 ( 処理手順 ) はどうなっているか? 5. トークン (token) とは何か? 49

次回までの予習 1. 教科書の目次に目を通しておくこと 2. 第 1 章を読んでおくこと 50