サイトマップ


コラム
コラム

インタプリタと私

2012.02.07

皆様こんにちは。正月も終わり待ち遠しかった五月病の季節ももうすぐですがいかがお過ごしでしょうか。個人的には五月病というタームは割と好きな方でして、五月病という言い訳がもし年がら年中通用するのであれば、世界平和ももっと大幅に進展しているのではないかと思う次第であります。そんな訳ないか。

突然ですが著者の原体験はもちろんN80-BASICとZ80ニーモニックでして、中でも好きな予約語はLINE INPUTとLSET/RSETです。あと好きなニーモニックはRLCAとDJNZかなあ。JRとかも割と渋くて(opコードは短いくせにサイクル長い所とか)好きです。18 FEとか見るとなぜかほっこりしますよね☆

思い返すと20数年前、文字列処理に自信を持った筆者は「BASICインタプリタを書こう!」と思い立ったものの、フル機能を持つインタプリタなんてまだまだ全然書けず(LL文法もLR文法も、それどころか文脈自由文法すら知らなかったし)まずは行番号とステートメントだけ保持できるようなスクリーンエディタを作って非常に単純なステートメントに限って実行できるようにして、解釈できないステートメントは全部Syntax errorにしてしまえという素敵なインタプリタを作りました。

似たような話で、BASICプロンプトは出るんだけど実は偽プログラムで、入力内容によって微妙に(本来のBASICと)挙動を変えるような性悪なプログラムを作ったりしてました。今ならなんとか作成罪とかになってしまうのでしょうか。恐ろしいことです。

話がそれました。インタプリタの話。一応動作するようになったものの、それだけだとつまんないので、「スクリーンエディタ」を構成できる最小限の命令セットだけ実行できるようにしました。そうすると、なんとそのインタプリタ上で別のインタプリタを書くことができるのです。

このカーソルはインタプリタAのこのコマンドで表示されてるものだけど、実はこのコマンドはインタプリタBのこれらのコマンド群で構成されていて、いやしかしそのコマンド群は実は偽プログラムのこれらのコマンド群で、などと想像すると大量のドーパミンが放出されたものでした。今考えるとちゃちな話ではありますが、当時は楽しかったなあ。

何やら雨が大量に降っている割に気持ち悪いほど暖かいですが、インフルエンザなど流行しているようでございます。ご自愛くださいませ。ではまた次回お会いしましょう。さようなら。