Martin J. Dürst
O 棟 529 号室
第一回 (2009年 4月17日)
授業の概要
言語理論とコンパイラの応用分野
コンパイラ全体の仕組み
http://www.sw.it.aoyama.ac.jp/2009/Compiler/lecture1.html
© 2006-9 Martin J. Dürst 青山学院大学
ソフトからハードへの橋渡し
入力: 人間が分かるプログラム (高級プログラム言語、ソース (プログラム)、原始プログラム)
出力: 機械が分かるプログラム (目的プログラム、実行プログラム)
理論 | コンパイラ | 他の応用 | |
---|---|---|---|
フロントエンド | 言語理論、オートマトン | 字句解析、構文解析 | 正規表現, XML |
バックエンド | 最適化、コード生成 |
入力のプログラムの一部:
sum += price * 25;
出力:
LOAD R1, price ; R1 (レジスタ1) に price というアドレスからロード LOAD R2, 25 ; R2 (レジスタ2) に 25 の定数をロード MUL R1, R1, R2 ; R1 に R1 と R2 の掛け算の結果を入れる LOAD R2, sum ; R2 に sum というアドレスからロード ADD R2, R1, R2 ; R2 に R1 と R2 の合計を入れる STORE sum, R2 ; sum というアドレスに R2 を入れる
入力のプログラムの一分 (文字の列):
s | u | m | + | = | p | r | i | c | e | * | 2 | 5 | ; | \n |
出力 (記号の列):
id("sum"), plusequal, id("price"), asterisk, int(25), semicolon
入力 (記号の列):
id("sum"), plusequal, id("price"), asterisk, int(25), semicolon
出力 (構文木、syntax tree):
statement (+= (sum, * (price, 25)))
grade_average = english + math + physics/2;
自動販売機:
状態遷移図 (state transition diagram)
S → a S o
S → A
A → y a
文法から文の導出 (derivation) の一例:
S → a S o → a a S o o → a a A o o → a a y a o o
S ⇒ a a y a o o
提出期限と場所: 2009年4月23日 (木) 19:00 まで O棟5階のO529 号室の前の箱に投入
形式: A4 一枚
SUB
で) を、授業の例に習って書きなさい。price = pretax / 100 * (105 - discount);