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

Slides:



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

コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
文法と言語 ー字句解析とオートマトンlexー
東京工科大学 コンピュータサイエンス学部 亀田弘之
コンパイラ 2011年10月17日
情報工学基礎(改訂版) 岡崎裕之.
東京工科大学 コンピュータサイエンス学部 亀田弘之
情報科学1(G1) 2016年度.
湘南工科大学 2013年12月10日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
東京工科大学 コンピュータサイエンス学部 亀田弘之
コンパイラ 2012年10月15日
東京工科大学 コンピュータサイエンス学部 亀田弘之
形式言語とオートマトン2013 ー有限オートマトンー 第5日目
東京工科大学 コンピュータサイエンス学部 亀田弘之
形式言語とオートマトン Formal Languages and Automata 第4日目
形式言語とオートマトン Formal Languages and Automata 第4日目
言語プロセッサ2007 平成19年9月26日(水) (Ver.2 平成19年10月3日変更)
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
言語プロセッサ 第7回目 平成27年11月16日.
文法と言語 ー字句解析とオートマトンlexー
文法と言語 ー字句解析とオートマトンlexー
FlexとBison+アルファ -実習編-
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
形式言語とオートマトン Formal Languages and Automata 第4日目
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
言語プロセッサ ー第9回目ー 構文解析(続き).
東京工科大学 コンピュータサイエンス学部 亀田弘之
平成20年10月5日(月) 東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
情報処理Ⅱ 第2回:2003年10月14日(火).
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
形式言語とオートマトン 中間試験解答例 2016年11月15実施 中島毅.
平成26年4月22日(火) 東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 I ー正則表現とFAの等価性 その1ー
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
コンパイラ 2012年10月1日
計算の理論 I ー正則表現とFAの等価性ー 月曜3校時 大月 美佳.
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
文法と言語 ー字句解析とオートマトンlexー
東京工科大学 コンピュータサイエンス学部 亀田 弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
コンパイラ 2012年10月11日
形式言語とオートマトン2016 ー有限オートマトンー 第4日目
言語プロセッサ ー第9回目ー 構文解析(続き).
東京工科大学 コンピュータサイエンス学部 亀田 弘之
東京工科大学 コンピュータサイエンス学部 亀田 弘之
形式言語とオートマトン Formal Languages and Automata 第5日目
計算の理論 I ー ε-動作を含むNFA ー 月曜3校時 大月 美佳.
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
第1章 文字の表示と計算 printfと演算子をやります.
Presentation transcript:

東京工科大学 コンピュータサイエンス学部 亀田弘之 言語プロセッサ2009 -No.6- 東京工科大学 コンピュータサイエンス学部 亀田弘之

今日の内容 前回の復習と演習 Lexの紹介 構文解析(重要) <=これは もう少し後で 正規表現のε-NFAへの変換方法 ε-NFAのDFAへの変換方法 Lexの紹介 構文解析(重要) <=これは                もう少し後で

前回の復習 処理対象を正規表現で記述 正規表現→ε-NFA ε-NFA →DFA <=ここまでやりました。 DFA→状態数最小DFA  例題:正規表現 (ab|bc)*a(b|c)

確認のための演習 教科書の73ページ問題1 (試験に出す予定ですので、各自練習しておいてください。)

演習 ただし、d = { 0, 1, 2, 3, …, 9 }, s = { +, - } 次の正規表現αについて答えよ。 簡単化せよ。 αを受理する状態数最少のDFNを作れ。 α = dd* | dd*.dd* | .dd* | | dd*E(s|ε)dd* |E(s|ε)dd* |.dd*E(s|ε)dd* ただし、d = { 0, 1, 2, 3, …, 9 }, s = { +, - }

発展課題 ー 字句解析プログラム ー 教科書p.72~p.73のソースコードを解析し、自分の言葉で説明しなさい。 (典型的なコードですので、一度ゆっくり  解読することをお勧めします。)  

ここから今日の話

正規表現認識プログラム 例: (a|b)*ab C言語の浮動小数点定数 など

方法 Java, C, Pascalなどで記述することはできるが、以下では、flexを用いる方法を紹介する。 まず、(a|b)*ab について説明する。

例1: (a|b)*ab

手順 Flexのプログラムを書く。 Flexのプログラムをflexにかける。 出力ファイルlex.yy.cをgccでコンパイルする。 出力a.exeを実行する。 さまざまな文字列を入力し、動作を確認する。

手順 ライブラリ(fl) Flex Lex.yy.c gcc Flex Program a.exe 文字列入力 出力

(1)flexのプログラムを書く %% [\t ] { } (a|b)*ab { printf(“OK %s\n”,yytext); } . { printf(“NG %s\n”,yytext); } <<注>> sample01.lに格納。

(2)&(3) flexとgccを使用 C:\> flex sample01.l C:\> gcc lex.yy.c –lfl C:\> a.exe それでは、実際にやってみよう。

例2:正負の整数 FIGURE [0-9] %% -{FIGURE}+ {printf("negative integer\n");} \+?{FIGURE}+ {printf("positive integer\n");}

(参考)正負の整数・実数 数 → 整数|実数 整数 → 正整数|負数 正整数 → 符号付正整数|符号なし正整数 負数 → 符号付負数 符号付正整数 → +(0|1|2|…|9)+ 符号なし正整数 → (0|1|2|…|9)+ 符号付負整数 → ー(0|1|2|…|9)+

例3: (C言語の)浮動小数点定数 . Numbers Numbers . f Numbers e + l Numbers Numbers - F L

例3: (C言語の)浮動小数点整数 正規表現は、… ((([0-9]*\.[0-9]+)|([0-9]+\.))|([0-9]+)) ([eE][+-]?[0-9]+)?[flFL]?

例4:学籍番号 学籍番号の構造: [0-9]{2,2}(A|B|C|D|P)[0-9]{3,3}

%% [0-9]{2,2}(A|B|C|D|P)[0-9]{3,3} printf(“%s(Student ID)”,yytext);