2020.9.4
INASOFT
/トップ/いじくるつくーる/ダウンロード/WebHelp/ヘルプトップ/
本ソフトウェアの開発は終了しています。ヘルプに記載されている情報も古いものになっています。

連載(R-Script10周年 第3回) [ 3/ 5]
第3回 正規表現
公開日:2011/12/25
メリークリスマスでございます。
クリスマスでありますが、僕ができることと言えば、皆様に文章をお届けすることくらいかと思いますので、今日も相変わらず文章をお届けしようかと思います。
さて、R-Script開発において、開発を経て得ることのできた貴重なプレゼントの1つが「正規表現」と言っても過言ではありません。今思うと、正規表現を知っていた場合と、知らなかった場合では、人生の豊かさに、何段階かの差があったんじゃないかなぁと思うほど。
正規表現といえば、比較的最近、R-Scriptの関数としても正規表現を扱うための関数群が実装されましたが、今回の話はそれではなく。
ソースコードをダウンロードして展開すると出てくる、「token.l」とか「interprete.y」とかに記述した、R-Scriptの言語自体の定義のための正規表現です。それぞれ「lex」と「yacc」という、字句解析プログラム生成ソフト・構文解析器生成ソフト向けの定義ファイルになっています。
実は2002年頃、R-Scriptを作るにあたって、lex, yacc向けの定義ファイルを書くために初めて正規表現を知り、勉強しました。
それ以降、テキストエディタを扱うときや、ファイル検索ソフトを扱うとき、あちこちで正規表現が利用できることを知り、正規表現って便利だなぁと思い続けています。こんな便利な正規表現、世間の人たちはどうやって知り、使い始めることになるのかなぁ…なんて思っていたんですが、実は知らない人が多いんですよね。
僕はIT系な会社に勤めておりますが、IT系な会社の中でも、知らない人がけっこう多かったりするみたい。あんなに便利なのに。知らないことで、仕事時間を無駄に過ごしている部分もあるかも知れません。
そんな正規表現ですが、R-Script言語定義をする上では、
- 数字とは何か … 0[bB][01]+, 0[xX][0-9a-fA-F]+, 0|([1-9][0-9]*)
- シンボル(変数名や関数名などのキーワードとして使用可能なモノ)とは何か … [A-Za-z_][A-Za-z0-9_]*, [A-Za-z_][A-Za-z0-9_]*\$
- 文字列とは何か … @\"[^"]*[\"], @\'[^']*[\'], \"([^"\\]+|\\.)*[\"], \'([^'\\]+|\\.)*[\']
- :
- :
のような感じで、言語の要素定義のために使っていたり、「関数呼び出しとは何か」「足し算とは何か」のような要素羅列の定義のために使っていたりします。興味のある方は、「token.l」や「interprete.y」を覗いてみて下さい。
ところで interprete.y は、kmyaccというフリーソフトを用いてコンパイルしていたのですが、これ、MS-DOS用のプログラムなんですね。MS-DOS用のプログラムは16bitプロセスであり、Windows 7(x64)では16bitプロセスのサポートが打ち切られましたから、現在の僕の環境では、kmyacc が使えないんです。
まぁ、今更 R-Script の構文を変更することはありませんが、リビルドしたいときには困ってしまうわけで。
その場合は仕方なく、interprete.y を処理するときだけ、「Windows XPモード」を呼び出して処理させています。まさかこんなところでWindows XPモードを使うことになるとは。
戻る
前へ 次へ
※このページは、ソフトウェアに付属のヘルプファイルをWeb用に再構築したものです。大部分に自動変換を施しているため、一部は正しく変換しきれずに表示の乱れている箇所があるかもしれませんが、ご容赦下さい。また、本ドキュメントはアーカイブドキュメントであり、内容は「いじくるつくーる」最終公開時点、あるいは、それより古い時点のものとなっております。一部、内容が古くなっている箇所があるかと思いますが、あらかじめご了承下さい。
※このページへは、自由にリンクしていただいてかまいません。
このページに関するご意見の受け付けは終了しています。