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

Slides:



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

文法と言語 ー字句解析とオートマトンlexー
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
プログラミング論 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日変更)
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
言語プロセッサ 第7回目 平成27年11月16日.
東京工科大学 コンピュータサイエンス学部 亀田弘之
情報処理演習 (秋学期・樋口担当) 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回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
C言語ファミリー C# 高級言語(抽象的) Java オブジェクト指向 C++ C 機械語(原始的)
第1章 いよいよプログラミング!! ~文章の表示 printf~
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
文法と言語 ー字句解析とオートマトンlexー
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
さまざまなプログラミング言語, オンライン開発環境
東京工科大学 コンピュータサイエンス学部 亀田弘之
コンパイラ 2012年10月11日
第12章 乱数という業の深い存在 ~ランダムな値・他~
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
printf・scanf・変数・四則演算
第2章 数値の入力と変数 scanfと変数をやります.
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

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

言語プロセッサ2013 担当:亀田弘之(東京工科大学) 今日(11/4&9)の学習目標 Flexで簡単な処理が書ける 言語プロセッサ2013 担当:亀田弘之(東京工科大学)

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

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

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

参考 Flexによる処理手順 ライブラリ(fl) Flex Lex.yy.c gcc Flex Program a.exe 文字列入力 出力

言語プロセッサ2013 担当:亀田弘之(東京工科大学) 参考 Flexのインストールについて 言語プロセッサ2013 担当:亀田弘之(東京工科大学)

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

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

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

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

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

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

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

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

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

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

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

言語プロセッサ2013 担当:亀田弘之(東京工科大学) 宿題(提出の必要なし) 今日の練習問題を,自力でもう一度やってみる. 次回の授業でこの件に関して口頭で質問します. (次回は11月9日(土)です!) 言語プロセッサ2013 担当:亀田弘之(東京工科大学)

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

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

言語プロセッサ2013 担当:亀田弘之(東京工科大学) 例 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"); } 言語プロセッサ2013 担当:亀田弘之(東京工科大学)

プログラムを解析(字句解析)する プログラムの作成 練習6 プログラムを解析(字句解析)する プログラムの作成 例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; 言語プロセッサ2013 担当:亀田弘之(東京工科大学)