このページではJavaScriptを使用しています。

FLEX日本語活用編

(Windows10 WSL2版)

従来、Windows10上ではWindows版のFLEX(2.5.4)をインストールして使用していました。しかし、現在ではWindows10上でLinux(Ubuntu)OSを動作させるWSL(Windwos Subsystem for Linux)という便利な仕組みが使えるようになっています。これによってUbuntu OS上で動いているFLEXプログラムをそのままWindows10上で動かすことができます。

WSLのインストールについては、他のさまざまなサイトで紹介されていますので、そちらを参照してみてください。今回はWindwos10(バージョン20H2)上で、WSL2(Ubuntu20.04)をインストールして使っています。下図はWindows PowerShellからWSLのバージョンを確認した様子です。

WSL2を起動させてインストールしたFLEXのバージョンを確認してみます。

FLEX(version 2.6.4)の場合

FLEX-OLD(version 2.5.4)の場合

FLEXのプログラムは一度C言語に変換されます。それをC言語処理系によって翻訳することにより、プログラムを実行することができます。従ってFLEXのプログラムを動かすにはC言語の処理系(gcc)が必要となります。以下に今回使用したWSL2上のgccバージョンを示します。

Windows10のエクスプローラーからWSL2のUbuntuフォルダにアクセスする場合には、「\\wsl$」と入力します。

また、Windows10のメモ帳からUbuntuのファイルを編集することができます。ここで注意しないといけないのは、Ubuntuのテキストファイルは改行がLFコードですが、Windows10のみで取り扱うテキストファイルは改行がCR-LFコードとなっています。現在のメモ帳はどちらも取り扱い可能ですが、WSL2上でFLEX日本語活用プログラムを作成するときには、改行LFコード扱い(下図の赤丸部分)とします。

ここからは、FLEX日本語活用編(Ubuntu20.04版)でのプログラムがWSL2でも問題なく動作することを確認してみます。

例題FU─1 入力ファイルをそのまま出力する
例題FU─2 文字列を変換する(その一)
例題FU─3 文字列を変換する(その二)
例題FU─4 簡単なC言語風日本語プログラムの実行
例題FU─5 FLEX規則を利用してC言語を日本語で記述する
例題FU─6 文字クラスを使った日本語文字処理の基本練習
例題FU─7 FLEXを利用した送り仮名のチェック
例題FU─8 FLEXを利用した簡単な同音異義語のチェック
例題FU─9 FLEXでスタート状態を使った練習
例題FU─10 FLEXを利用した簡単な表記チェッカー
例題FU-13 自動番号の付いた規則をつくる
例題FU-14 FLEX規則を利用してC言語を日本語で記述する(続編)
例題FU-15 FLEXを利用して自動販売機のシミュレーションを行なう

例題FU─1 入力ファイルをそのまま出力する

Ubuntu版FLEX日本語活用編の例題FU─1 入力ファイルをそのまま出力するの内容をWSL2で出力した結果です。

例題FU─2 文字列を変換する(その一)

Ubuntu版FLEX日本語活用編の例題FU─2 文字列を変換する(その一)の内容を一部変更して「あいうえお」を「さしすせそ」に変換するようにするプログラムをコマンドプロンプトのリダイレクション機能を利用して出力した結果です。

また、exout.txtの内容をメモ帳で表示させた結果を以下に示します。

例題FU─3 文字列を変換する(その二)

Ubuntu版FLEX日本語活用編の例題FU─3 文字列を変換する(その二)の内容をWSL2で出力した結果です。

例題FU─4 簡単なC言語風日本語プログラムの実行

Ubuntu版FLEX日本語活用編の例題FU─4 簡単なC言語風日本語プログラムの実行の内容をWSL2で出力した結果です。

また、この結果をexout.cというファイルにして、C言語の処理系に通した結果

例題FU─5 FLEX規則を利用してC言語を日本語で記述する

Ubuntu版FLEX日本語活用編の例題FU─5 FLEX規則を利用してC言語を日本語で記述するの内容をWSL2で実行したときの結果です。

このとき読み込ませたテキストファイルを以下に示します。

例題FU─6 文字クラスを使った日本語文字処理の基本練習

Ubuntu版FLEX日本語活用編の例題FU─6 文字クラスを使った日本語文字処理の基本練習の内容をWSL2で実行したときの結果です。(すべての文字種を認識する場合)

このとき読み込ませたテキストファイルを以下に示します。

各文字種(半角カタカナ、全角カタカナ、ひらがな文字、日本語を含むUTF8のコード領域、半角アルファベット、半角数字)の認識については、個別に確認していますが、ここでは割愛させていただきます。

例題FU─7 FLEXを利用した送り仮名のチェック

Ubuntu版FLEX日本語活用編の例題FU─7 FLEXを利用した送り仮名のチェックの内容をWSL2で実行したときの結果です。

このとき読み込ませたテキストファイルを以下に示します。

例題FU─8 FLEXを利用した簡単な同音異義語のチェック

Ubuntu版FLEX日本語活用編の例題FU─8 FLEXを利用した簡単な同音異義語のチェックの内容をWSL2で実行したときの結果です。

このとき読み込ませたテキストファイルを以下に示します。

例題FU─9 FLEXでスタート状態を使った練習

Ubuntu版FLEX日本語活用編の例題FU─9 FLEXでスタート状態を使った練習の内容をWSL2で実行したときの結果です。

このとき読み込ませたテキストファイルを以下に示します。

例題FU─10 FLEXを利用した簡単な表記チェッカー

Ubuntu版FLEX日本語活用編の例題FU─10 FLEXを利用した簡単な表記チェッカーの内容をWSL2で実行したときの結果です。

このとき読み込ませたテキストファイルを以下に示します。

例題FU-13 自動番号の付いた規則をつくる

Ubuntu版FLEX日本語活用編の例題FU-13 自動番号の付いた規則をつくるの内容をWSL2で実行したときの結果です。

このとき読み込ませたテキストファイルを以下に示します。

例題FU-14 FLEX規則を利用してC言語を日本語で記述する(続編)

Ubuntu版FLEX日本語活用編の例題FU-14 FLEX規則を利用してC言語を日本語で記述する(続編)の内容をWSL2で実行したときの結果です。

このとき読み込ませたテキストファイルを以下に示します。

例題FU-15 FLEXを利用して自動販売機のシミュレーションを行なう

Ubuntu版FLEX日本語活用編の例題FU-15 FLEXを利用して自動販売機のシミュレーションを行なうの内容をWSL2で実行したときの結果です。

このとき読み込ませたテキストファイルを以下に示します。

参考図書
オートマトン・言語理論 本多波雄著 コロナ社 1972
UNIXプログラミング環境 Brian W.Kernighan Rob Pike 石田晴久監訳 アスキー出版局 1985
プログラミング言語C B.W. カーニハン D.M. リッチー 石田晴久訳 共立出版社 1981
UNIX 石田晴久著 共立出版社 1983
yacc/lex 五川女健治著 啓学出版社 1992
情報通信プロトコル 秋丸春夫 奥山徹共著 オーム社 2001
flex, version2.5 A Fast Scannar Generator ドキュメント University of California. Vern Paxsonほか多数のAuthor編著
Cプリプロセッサー・パワー 林晴比古著 日本ソフトバンク出版社 1988
HTMLハンドブック 渡辺竜生著 ソフトバンクパブリッシング 1999
Ubuntu6.10 システム utf-8 manual page
RFC3875 The Common Gateway Interface CGI Version 1.1