Small Basic Forum の今年の1月のチャレンジにクワインを作れという問題を出しました。クワインとは自分と同じプログラムを出力するプログラムのことです。新たな回答(10行)を作成し HLQ549 として発行しました。
最短のクワインを書くことが娯楽にもなっているようですが、一方で実用的なクワインも存在し得ます。プログラミング講座(87)で紹介したパーサジェネレータは BNF で表現された構文からそのパーサ(構文解析プログラム)を出力するものですが、BNF の構文を BNF で表現すれば、BNFパーサジェネレータが作れるはずで、うまく作れば BNFパーサジェネレータはクワインにできるはずです。
最終的に JavaScript で書かれた SGF のパーサジェネレータを作りたいのですが、Small Basic のパーサジェネレータからこれを生成しようと考えているところです。
BNF (バッカス・ナウア記法) : 言語の構文を表現する記法
SGF (スマート・ゲーム・フォーマット) : 囲碁などのゲームの棋譜を残すためのファイルフォーマット