言語プロセッサ2013 No.11

ネットワークの準備
お願いします!
言語プロセッサ2013 No.11
東京工科大学
コンピュータサイエンス学部
亀田弘之
今日から演習
#include <stdio.h>
main(){
float kingaku = 0, teika = 100;
float shouhizei = 0.10;
kingaku = teika + teika*shouhizei;
printf("kingaku=%f\n", kingaku);
}
ソース言語
読み込み
字句解析
分析
構文解析
.file
"test2.c"
___main;
.scl
.type
32;
.section .rdata,"dr"LC3:
.text.globl _main
_main;
.scl
.type
32;
pushl
%ebp
%esp, %ebp
andl
subl
$32, %esp
___main
movl
movl
%eax, 28(%esp)
$0x42c80000, %eax movl
%eax, 24(%esp)
movl
movl
%eax, 20(%esp)
24(%esp)
fmuls
fadds
24(%esp)
28(%esp)
flds
fstpl
4(%esp)
$LC3, (%esp)
call
leave
ret
_printf;
.scl
.type
32;
.endef
.def
2;
.endef
.ascii "kingaku=%f\12\0"
.def
2;
.endef_main:
movl
$-16, %esp
call
$0x00000000, %eax
movl
$0x3dcccccd, %eax
flds
20(%esp)
fstps
28(%esp)
movl
_printf
.def
2;
中間語生成
合成
コード生成
目的言語
3
字句解析
1. メールアドレスを切り出す
メールアドレスを取り出す処理
• 仕様
• 入力: ホームページ
• 出力: メールアドレス(標準出力へ)
• ツール: Flexを使用
メールアドレスを取り出す処理
• 仕様
• 入力: ホームページ
• 出力: メールアドレス(標準出力へ)
• ツール: Flexを使用
• 設計
• パターンを正規表現で記述
数式を中間言語へ変換するプログラム
(配布資料を参照のこと)
補講のお知らせ
平成25年12月21日(土) 3限
・掲示板等で確認してください。
・他の補講と時間帯が重複している人は,事前に連絡お願いします。
・補講の時間も,演習をします。
・FlexとBisonを使って,簡単な電卓ソフトウェアを作成します。
(よく本に載っているものです。)