言語プロセッサ2006 -No.4平成19年10月24日 東京工科大学 コンピュータサイエンス学部 亀田弘之 内容 1. 前回の復習 • オートマトン(特に、有限オートマトン) • • 決定性有限オートマトン 非決定性有限オートマトン – 遷移先の曖昧性、ε遷移 2. 正規表現 3. 正規表現のε-NFAへの変換方法 4. ε-NFAのDFAへの変換方法 今日は2~4についてお話します。 正規表現 • 一般に字句は正規表現で記述できることが 多い。 • アルファベット:記号(文字)の有限集合 正規表現(定義) アルファベットVの上の正規表現とは以下の ものである。 1. 2. 3. 4. 5. 6. εは正規表現 a∈Vならば、aは正規表現 rとsが正規表現ならば rs は正規表現 rとsが正規表現ならば r | s は正規表現 rが正規表現ならば r* は正規表現 以上のものだけが正規表現 正規表現(例) • 識別子: 英字 ( 英字 | 数字 )* 字句解析プログラム(例) if( c >= ‘a’&& c <= ‘z’ || c >= ‘A’ && c <= ‘Z’|| c == ‘_’){ k = 0; while ( c >=‘a’&& c <= ‘z’|| c >= ‘A’ && c <= ‘Z’|| c >= ‘0’&& c <= ‘9’){ id[k++] = c; } cget( ); } 字句解析プログラムは、このように自 力で作成できるが、オートマトン理論 を知っていればもっとスマートに作成 できる。 正規表現(定義)(再) アルファベットVの上の正規表現とは以下の ものである。 1. 2. 3. 4. 5. 6. εは正規表現 a∈Vならば、aは正規表現 rとsが正規表現ならば rs は正規表現 rとsが正規表現ならば r | s は正規表現 rが正規表現ならば r* は正規表現 以上のものだけが正規表現 正規表現からのNFAの構成法 (参考)これからの話の流れ 正規表現 ー> εーNFA ー> DFA ー> 状態数最少DFA 正規表現からのNFAの構成法 • 正規表現の定義に対応して、次のようにすれ ばいい。 (以下、しばらく黒板で説明します。教科書の p.54 の4.3参照のこと。) 正規表現(定義) アルファベットVの上の正規表現とは以下の ものである。 1. 2. 3. 4. 5. 6. εは正規表現 a∈Vならば、aは正規表現 rとsが正規表現ならば rs は正規表現 rとsが正規表現ならば r | s は正規表現 rが正規表現ならば r* は正規表現 以上のものだけが正規表現 正規表現(定義)’ 1. ε 2. a 3. rs 4. r | s 5. r* ただし、a∈V, rとsは正規表現。 例 1. 英字 ( 英字 | 数字 )* => m ( m | s )* m ( m | s )* 正規表現 m m 正規表現 AB A B 正規表現 A|B A B 正規表現 A* ε A ε ε ε 練習問題 • 教科書 p.73 の問題1を練習しなさい。
© Copyright 2024 ExpyDoc