東京工科大学 コンピュータサイエンス学部 亀田弘之

Slides:



Advertisements
Similar presentations
自然言語処理 平成 24 年 11 月 5 日 (No5)- 東京工科大学 コンピュータサイエンス学部 亀田弘之.
Advertisements

コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
文法と言語 ー字句解析とオートマトンlexー
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
第2回ネットワークプログラミング 中村 修.
第13回 プログラミングⅡ 第13回
2006/10/19 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井英二郎
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
言語プロセッサ2015 第10回目 〜資料番号 H28NoA〜
言語プロセッサ2015 Language Processors 2015
情報基礎及び演習 プログラミング基礎① 電気・佐藤亮一.
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
ネットワークプログラミング 中村 修.
東京工科大学 コンピュータサイエンス学部 亀田弘之
形式言語とオートマトン Formal Languages and Automata 第4日目
言語プロセッサ2016 Language Processors 2016
言語プロセッサ2007 平成19年9月26日(水) (Ver.2 平成19年10月3日変更)
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
言語プロセッサ 第7回目 平成27年11月16日.
東京工科大学 コンピュータサイエンス学部 亀田弘之
文法と言語 ー字句解析とオートマトンlexー
文法と言語 ー字句解析とオートマトンlexー
FlexとBison+アルファ -実習編-
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング演習I 2003年5月7日(第4回) 木村巌.
東京工科大学 コンピュータサイエンス学部 亀田弘之
言語プロセッサ 第8回目 平成22年11月22日.
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
平成20年10月5日(月) 東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
B演習(言語処理系演習)第2回 田浦.
プログラミング序論演習.
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
コンパイラ 2012年10月1日
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
文法と言語 ー字句解析とオートマトンlexー
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
言語プロセッサ 第12日目 平成20年1月9日.
標準入出力、変数、演算子、エスケープシーケンス
東京工科大学 コンピュータサイエンス学部 亀田弘之
コンパイラ 2012年10月11日
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
形式言語とオートマトン Formal Languages and Automata 第5日目
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
情報処理Ⅱ 2005年11月25日(金).
第2章 数値の入力と変数 scanfと変数をやります.
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
第1章 文字の表示と計算 printfと演算子をやります.
Presentation transcript:

東京工科大学 コンピュータサイエンス学部 亀田弘之 ネットワークの準備お願いします! 言語プロセッサ2014 No.10 東京工科大学 コンピュータサイエンス学部 亀田弘之

今日から演習

分析 合成 ソース言語 読み込み 字句解析 構文解析 中間語生成 コード生成 目的言語 #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" .def ___main; .scl 2; .type 32; .endef .section .rdata,"dr"LC3: .ascii "kingaku=%f\12\0" .text.globl _main .def _main; .scl 2; .type 32; .endef_main: pushl %ebp movl %esp, %ebp andl $-16, %esp subl $32, %esp call ___main movl $0x00000000, %eax movl %eax, 28(%esp) movl $0x42c80000, %eax movl %eax, 24(%esp) movl $0x3dcccccd, %eax movl %eax, 20(%esp) flds 24(%esp) fmuls 20(%esp) fadds 24(%esp) fstps 28(%esp) flds 28(%esp) fstpl 4(%esp) movl $LC3, (%esp) call _printf leave ret .def _printf; .scl 2; .type 32; .endef 中間語生成 合成 コード生成 目的言語

Flexの復習(確認) (いくつか実例をやります。) 言語プロセッサ2014(東京工科大学CS学部)

Flexの復習 確認1 (いくつか実例をやります。) 言語プロセッサ2014(東京工科大学CS学部)

数式をトークンに分解する! 練習1 練習2 練習3 入力: teika + teika * zei 確認2 練習1 入力: teika + teika * zei 出力: var(teika) op(+) var(teika) op(*) var(zei) 練習2 入力: a123 * xyz + 120 * h 出力: var(a123) op(*) var(xyz) op(+) num(120) … 練習3 入力: x1 + x2 * ( y1 + y2) 出力: var(x1) op(+) var(x2) op(*) lpa(() var(y1) … 言語プロセッサ2014(東京工科大学CS学部)

手順 Flexのプログラムを書く。 Flexのプログラムをflexにかける。 確認3 Flexのプログラムを書く。 Flexのプログラムをflexにかける。 出力ファイルlex.yy.cをgccでコンパイルする。この際,ライブラリーを忘れずに! 出力a.exeを実行する。 さまざまな文字列を入力する。 言語プロセッサ2014(東京工科大学CS学部)

手順 確認4 ライブラリ(fl) Flex Lex.yy.c gcc Flex Program a.exe 文字列入力 出力 言語プロセッサ2014(東京工科大学CS学部)

実際の手順 C:\> flex sample01.l C:\> gcc lex.yy.c –lfl C:\> a.exe 確認5 実際の手順 C:\> flex sample01.l C:\> gcc lex.yy.c –lfl C:\> a.exe それでは、実際にやってみよう。 言語プロセッサ2014(東京工科大学CS学部)

数式をトークンに分解する!(再) 練習1 練習2 練習3 入力: teika + teika * zei 確認6 練習1 入力: teika + teika * zei 出力: var(teika) op(+) var(teika) op(*) var(zei) 練習2 入力: a123 * xyz + 120 * h 出力: var(a123) op(*) var(xyz) op(+) num(120) … 練習3 入力: x1 + x2 * ( y1 + y2) 出力: var(x1) op(+) var(x2) op(*) lpa(() var(y1) … 言語プロセッサ2014(東京工科大学CS学部)

今日の話題 字句解析 数式を中間言語へ変換するプログラム 言語プロセッサ2014(東京工科大学CS学部)

字句解析 メールアドレスを切り出す Do you know this e-mail address? tarouTanaka@stf.teu.ac.jp Tell me so, if you’d know. Thank you. Do you know this e-mail address? tarouTanaka@stf.teu.ac.jp Tell me so, if you’d know. Thank you.

メールアドレスを取り出す処理 仕様 入力: テキストファイル 出力: メールアドレス(標準出力へ) ツール: Flexを使用

メールアドレスを取り出す処理 仕様 設計 入力: ホームページ 出力: メールアドレス(標準出力へ) ツール: Flexを使用 入力: ホームページ 出力: メールアドレス(標準出力へ) ツール: Flexを使用 設計 パターンを正規表現で記述

2.数式を中間言語へ変換するプログラム (配布資料を参照のこと)

レポート課題 数式を中間言語へ変換するプログラムに対して、5種類の計算式を 入力し実行せよ。 レポートには、入力した式とその出力を記せ。下記に書き方の例を示 しておく。 入力 出力 ① a + b*c T1: ( *, b, c ) T2: ( +, a, T1 ) ② abc + xy T1: ( +, abc, xyz) 提出日は、平成26年12月22日(月)授業時間の時