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

Slides:



Advertisements
Similar presentations
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
Advertisements

文法と言語 ー字句解析とオートマトンlexー
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
プログラミング論 II 電卓,逆ポーランド記法電卓
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月6日、H.16(‘04)] 今日のメニュー 1 前回の課題の復習
東京工科大学 コンピュータサイエンス学部 亀田弘之
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
東京工科大学 コンピュータサイエンス学部 亀田弘之
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
第10章 char 文字列; 文字列を入力させるよ!.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング論 ファイル入出力
形式言語とオートマトン Formal Languages and Automata 第4日目
言語プロセッサ2007 平成19年9月26日(水) (Ver.2 平成19年10月3日変更)
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
情報処理演習 (秋学期・樋口担当) 3回目 10/8 日本工業大学 コンピュータリテラシーII.
文法と言語 ー字句解析とオートマトンlexー
文法と言語 ー字句解析とオートマトンlexー
FlexとBison+アルファ -実習編-
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
情報リテラシー2014 part 5/5 (亀田担当分最終回)
東京工科大学 コンピュータサイエンス学部 亀田弘之
形式言語とオートマトン Formal Languages and Automata 第4日目
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
東京工科大学 コンピュータサイエンス学部 亀田弘之
高度プログラミング演習 (02).
プログラミング論 ファイル入出力
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
高度プログラミング演習 (05).
東京工科大学 コンピュータサイエンス学部 亀田弘之
平成20年10月5日(月) 東京工科大学 コンピュータサイエンス学部 亀田弘之
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
平成26年4月22日(火) 東京工科大学 コンピュータサイエンス学部 亀田弘之
第1章 いよいよプログラミング!! ~文章の表示 printf~
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
文法と言語 ー字句解析とオートマトンlexー
東京工科大学 コンピュータサイエンス学部 亀田弘之
さまざまなプログラミング言語, オンライン開発環境
東京工科大学 コンピュータサイエンス学部 亀田弘之
コンパイラ 2012年10月11日
湘南工科大学 2013年10月22日 情報理論2 湘南工科大学情報工学科 准教授 小林 学.
printf・scanf・変数・四則演算
第2章 数値の入力と変数 scanfと変数をやります.
計算技術研究会 C言語講座 第二回 制御構文 if , switch.
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

東京工科大学 コンピュータサイエンス学部 担当 亀田弘之 言語プロセッサ2014 第4回目 東京工科大学 コンピュータサイエンス学部 担当 亀田弘之

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 今日の学習目標 Flex(Fast LEXical analyzer generator)で 簡単な処理が書ける。 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 本資料の内容 復習 正規表現 Flexでのプログラミング 数式の字句解析 Flexによる実装 検証 その他 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) (復習)正規表現 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) (復習)Flex まずはやってみよう! 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 参考 Flexによる処理手順 ライブラリ(fl) Flex Lex.yy.c gcc Flex Program a.exe 文字列入力 出力 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 参考 Flexのインストールについて Adobe Flex と間違わないこと! Fast Lexical analyzer generator の Flex です。 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 仕様 入力:英文テキストファイル 出力:小文字 a をスペースに置き換える。 例: 入力 int main( ) { char x = ‘A’; printf(“x=%c\n”, x); } 出力 int m in( ) { ch r x = ‘A’; 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 練習1 数式字句解析器の作成ver1 まずは仕様から 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 数式字句解析器の仕様 CUI(コマンドライン入力) 加算(足し算)と減算(引き算)のみ 加算記号は + 減算記号は - 動作例 $ 15 + 85  キーボード入力 数字 加算記号 数字  計算結果(出力) $ 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 実装例(自分で書いてみよう!) 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 数式字句解析器の作成ver2 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 練習2 数式字句解析器ver2の仕様 CUI(コマンドライン入力) 加算,減算,乗法,除法,剰余 加算記号は +,  減算記号は - 乗法記号は *,   除法記号は /,  剰余記号は % 動作例 $ 15 + (85 * 7)  キーボード入力 数字 加算記号 左括弧, 数字 数字 乗法記号 数字 右括弧  計算結果(出力) $ 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 実装例(自分で書いてみよう!) 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 練習3 テキストファイルの行数を数える 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) テキストファイルの行数を数える CUI(コマンドライン入力) テキストファイルを読み込む (OSのリダイレクト機能を利用) 動作例 $ ./a.exe < infile.txt  キーボード入力 行数=48  計算結果(出力) $ 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 実装例 %{ int c = 0; /* 大域変数の定義 初期値 = 0 */ %} %% "\n" { c = c + 1; /* printf("c=%d\n", c);*/ } . { } main(){ yylex(); printf("C=%i\n", c); } 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 練習4 英文中の単語数を数える 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 英文中の単語数を数える CUI(コマンドライン入力) テキストファイルを読み込む (OSのリダイレクト機能を利用) 動作例 $ ./a.exe < infile.txt  キーボード入力 単語数=273  計算結果(出力) $ 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 実装例 %{ int wc = 0; %} %% [a-zA-Z][a-zA-Z0-9]* { wc++; } "\n" { } . { } int main(void){ yylex(); printf("wc=%i\n", wc); return 0; } 課題:左のプログラムに ついて説明せよ. 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 宿題(提出の必要なし) 今日の練習問題1~4を,自力でもう一度 やってみる。 次回の授業でこの件に関して口頭で質問します。 自分の言葉で説明できるように。 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

数式を解析(字句解析)する プログラムの作成 練習5 数式を解析(字句解析)する プログラムの作成 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

プログラムを解析(字句解析)する プログラムの作成 練習6 プログラムを解析(字句解析)する プログラムの作成 例えば,“Hello World” を出力するプログラムに対し て,字句解析するプログラムを作成する. 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) 入力例 Java言語 public class hello { public static void main( String[ ] args ){ System.out.println("Hello, Mr. Java!"); } C言語 #include <stdio.h> int main(void){ printf("Hello!\n"); } 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

プログラムを解析(字句解析)する プログラムの作成 練習7 プログラムを解析(字句解析)する プログラムの作成 入力例1 入力例2 #include <stdio.h> int main(void) { int S, i; S = 0; for(i = 1; i <= 10; i++){ S = S + i; } printf("%d\n", S); return 0; int max(int a, int b){ if(a >= b){ return a; } else { return b; 言語プロセッサ2014 担当:亀田弘之(東京工科大学)

言語プロセッサ2014 担当:亀田弘之(東京工科大学) お知らせ 平成26年11月17日(月)は休講。 平成26年12月20日(土)に補講の予定。 言語プロセッサ2014 担当:亀田弘之(東京工科大学)