• 検索結果がありません。

コンパイラとプログラミング⾔語

N/A
N/A
Protected

Academic year: 2021

シェア "コンパイラとプログラミング⾔語"

Copied!
18
0
0

読み込み中.... (全文を見る)

全文

(1)

コンパイラとプログラミング⾔語

1週 コンパイラの概要

2013年4⽉10⽇

⾦岡 晃

(2)

1

この授業について

講義科⽬名称

コンパイラとプログラミング⾔語

英⽂科⽬名称

– Compilers and Programming Languages

開講期間

春学期

配当年

– 3

学年

単位数

– 2

科⽬必選区分

選択

担当教員

⾦岡 晃

開講⽇時

⽔曜⽇・

1

時限

2013/4/10 コンパイラとプログラム⾔語

(3)

授業計画

2

1週 コンパイラの概要 第2週 コンパイラの構成

3週 プログラミング⾔語の形式的 な記述

4週 字句解析の概要と⾮決定性有 限オートマトン

5週 決定性有限オートマトン 第6週 字句解析プログラム

7中間試験

8週 構⽂解析の概要

9週 下向き構⽂解析

10週 構⽂解析プログラム 第11週 中間表現と意味解析

12Java仮想マシンとその機械語 第13週 条件分岐⽂と繰り返し⽂の

コード⽣成

14週 関数呼び出しのコード⽣成 第15週 期末試験

2013/4/10 コンパイラとプログラム⾔語

(4)

授業概要と教科書

授業概要

本授業では、

C

⾔語のサブセットのプログラミング⾔語を取り上 げ、字句解析、構⽂解析、意味解析を⾏い、機械語(

Java

仮想マ シンのバイトコード)を⽣成するコンパイラを

Java

⾔語で実装す る⽅法について解説する

教科書

「コンパイラとバーチャルマシン」

(今城哲⼆他著、オーム社)

参考書

「プログラミング⾔語処理系」

(佐々政孝著、岩間書店)

「コンパイラ第

2

版」

(エイホ・ラム・セシィ・ウルマン著、

サイエンス社)

3 2013/4/10 コンパイラとプログラム⾔語

(5)

評価⽅法とオフィスアワー

評価⽅法

期末試験・中間試験を

80

点、出席状況を

20

点とし、合計が

60

点 以上を合格とする。

オフィスアワー

オフィスアワーについてはメールで個別に時間を予約するもの とする

連絡先:

[email protected]‐u.ac.jp

4 2013/4/10 コンパイラとプログラム⾔語

(6)

1 週 コンパイラの概要

コンパイラとプログラミング⾔語

5 2013/4/10 コンパイラとプログラム⾔語

(7)

本⽇の到達⽬標と概要

到達⽬標

⾔語処理系におけるコンパイラの位置づけの理解

コンパイラとインタプリタの⻑所と短所の理解

概要

プログラムの形態

コンパイラの⼊出⼒

⾔語処理系の構成

トランスレータ

インタプリタ

コンパイラとインタプリタの⽐較

仮想計算機と

Java

6 2013/4/10 コンパイラとプログラム⾔語

(8)

プログラムの形態

2013/4/10 コンパイラとプログラム⾔語

7

プログラム 計算機上で特定の仕事を⾏うもの

ソースプログラム 計算機に与える動作指示を人間が読み書き可能な 人工言語(プログラム言語)で記述したもの。ソース コードと呼ぶこともある。

⽬的プログラム 人間が読み書きするのは困難な2進数の羅列である 機械語で構成されているが、そのままでは計算機で 実行できない。オブジェクトプログラム、オブジェクト コードまたは機械コードと呼ぶこともある。

実⾏プログラム 機械語で構成されており、計算機で実行可能である。

(9)

コンパイラ

2013/4/10 コンパイラとプログラム⾔語

8

ソースプログラム

⽬的プログラム コンパイラ

コンパイラ エラーメッセージ ソースリスト

⽂法上に誤りがないか チェック

この変換⾏為を

「コンパイル(compile)」

と⾔う。

(10)

様々なプログラ ムで共通する部

ライブラリとリンケージ

外部ライブラリの利⽤

組み込み関数や⼊出⼒機能は、機械語の量が⼤き くなる

⽬的プログラム(オブジェクトコード)には⼊れ ず、実⾏時ライブラリの中の個々の実⾏時ルーチ ンとして事前に⽤意していく

リンケージエディタ

複数の⽬的プログラムと実⾏時ライブラリ中の実

⾏時ルーチンをまとめて

1

つの実⾏プログラムと して結合する

リンカと呼ぶこともある

静的リンクと動的リンク

静的リンク:リンケージエディタにより必要なプ ログラムをすべて結合する⽅式

動的リンク:必要なプログラムをリンケージエ ディタで結合せずに実⾏し、サブプログラムや実

⾏時ルーチンを必要になったときに呼び出す⽅式

2013/4/10 コンパイラとプログラム⾔語

9

メインプログラム とサブプログラム、

など複数のプログ ラムにより1つの

⼤きなプログラム を構成することが

多い

(11)

エディタ

2013/4/10 コンパイラとプログラム⾔語

10

ソースプログラムの作成時に 利⽤するソフトウェア

JCpad Eclipse

秀丸エディタ 秀丸エディタ

Visual Studio

(12)

⾔語処理系

• コンパイラ、リンケージエディタ、エディタ、デバッガ、実⾏時ラ イブラリなど、プログラムの開発・翻訳(コンパイル)・実⾏に関 係するプログラム群の総称

• 処理系とも呼ぶ

2013/4/10 コンパイラとプログラム⾔語

11

エディタ

プログラムソース

プログラムソース

・・・

コンパイラ

コンパイラ

プログラム⽬的

プログラム⽬的

リンケージ エディタ ライブラリ実⾏時

プログラム実⾏

実⾏

デバッガ

(13)

クロスコンパイラ

2013/4/10 コンパイラとプログラム⾔語

12

エディタ

プログラムソース

プログラムソース

・・・

コンパイラ

コンパイラ

プログラム⽬的

プログラム⽬的

リンケージ

エディタ 実⾏

プログラム

通常は

コンパイルした環境と通常は

同じ計算機環境で実⾏するように コンパイルされる

プログラムソース

コンパイラC ⽬的 プログラム

計算機の種類が異なるコンパイラ

(クロスコンパイラ)

プログラム実⾏

Windows 組み込み

マイコン環境

(14)

トランスレータとインタプリタ

トランスレータ

⾼⽔準プログラム⾔語のプログラムを⼊⼒し、⾼⽔準プログラ ム⾔語のプログラムを出⼒する

プリプロセッサ:

コンパイラの前段階で特別の処理を⾏うもの

プログラム⾔語の⽂法を拡張した書き⽅に従うソースプ ログラムを、プログラム⾔語の⽂法範囲内に収める

インタプリタ

ソースプログラムを読んで直ちに実⾏する⽅式

⾔語処理系の⼀形態

2013/4/10 コンパイラとプログラム⾔語

13

(15)

コンパイラとインタプリタの⽐較

2013/4/10 コンパイラとプログラム⾔語

14

コンパイラ インタプリタ

出⼒ 機械語 中間語

翻訳(コンパイル)時間 ⽐較的⻑い ⽐較的短い

実⾏時間 速い 遅い

処理系開発 ⼤変 相対的に楽

(16)

コンパイラを各計算機の環境ごとにつくらないといけない

⽬的プログラムは各環境に応じたものを⽤意しなければならない

実⾏プログラムは各環境に応じたものになる

仮想計算機と Java

2013/4/10 コンパイラとプログラム⾔語

15

エディタ

ソース プログラムソース

ソース プログラムソース

・・・

コンパイラ

コンパイラ

⽬的 プログラム⽬的

⽬的 プログラム⽬的

リンケージ

エディタ 実⾏実⾏

プログラム

コンパイルした環境と同じ計算機環境で実⾏するようにコンパイルされる

環境に依存しない仮想的に考えられた計算機(バーチャルマシン、仮想計算機)と、

仮想計算機⽤のプログラムを実⾏可能なソフトを計算機とOSの組ごとに作成すれば、

プログラム作成者は1つのプログラムを作るだけで様々な環境でプログラムが実⾏できる

(17)

授業計画

16

1週 コンパイラの概要 第2週 コンパイラの構成

3週 プログラミング⾔語の形式的 な記述

4週 字句解析の概要と⾮決定性有 限オートマトン

5週 決定性有限オートマトン 第6週 字句解析プログラム

7中間試験

8週 構⽂解析の概要

9週 下向き構⽂解析

10週 構⽂解析プログラム 第11週 中間表現と意味解析

12Java仮想マシンとその機械語 第13週 条件分岐⽂と繰り返し⽂の

コード⽣成

14週 関数呼び出しのコード⽣成 第15週 期末試験

2013/4/10 コンパイラとプログラム⾔語

(18)

次回以降

コンパイラの内部へ

2週「コンパイラの構成」

3週「プログラミング⾔語の形式的な記述」

コンパイラ動作の詳細

ソースコードに対する最初のアクション「字句解析」

4週「字句解析の概要と⾮決定性有限オートマトン」

5週「決定性有限オートマトン」

6週「字句解析プログラム」

続いてのアクション「構⽂解析」

8週「構⽂解析の概要」

9週「下向き構⽂解析」

10週「構⽂解析プログラム」

出来上がった「中間表現」

11週「中間表現と意味解析」

最終フェーズ「コード⽣成」

12週「Java仮想マシンとその機械語」

13週「条件分岐⽂と繰り返し⽂のコード⽣成」

14週「関数呼び出しのコード⽣成」

2013/4/10 コンパイラとプログラム⾔語

17

参照

関連したドキュメント

人は何者なので︑これをみ心にとめられるのですか︒

かであろう。まさに UMIZ の活動がそれを担ってい るのである(幼児保育教育の “UMIZ for KIDS” による 3

 高齢者の性腺機能低下は,その症状が特異的で

明治33年8月,小学校令が改正され,それま で,国語科関係では,読書,作文,習字の三教

そればかりか,チューリング機械の能力を超える現実的な計算の仕組は,今日に至るま

テューリングは、数学者が紙と鉛筆を用いて計算を行う過程を極限まで抽象化することに よりテューリング機械の定義に到達した。

スキルに国境がないIT系の職種にお いては、英語力のある人材とない人 材の差が大きいので、一定レベル以

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,