Public PL/0開発の経緯

 Public PL/0の開発は、小生がNIFTY ServeのFPL(プログラム言語フォーラム)に以下のような投稿をしたことから始まっています。1992年4月6日のことです(古い)。


 ふと気が向いたので、yacc記述のPL/0を作ってみました。20番会議室に投稿しました。
 まあyaccの練習みたいなものです。電卓では単純すぎるが、Cmでは荷が重いという人には向いているかもしれません。できるだけオリジナルPL/0の仕様に忠実にインプリメントしたつもりですので、皆さんで機能拡張して遊んでやって下さい。インプリメント上は、つぎのような特徴があります。

  1. 再帰を使っていない
  2. 動的データ構造を使っていない
  3. 明示的なスタックを使っていない[*1]

 このため、極めて簡明な構造になった・・・と言いたいところですが、スタックを自前で用意しないことにこだわったため、かえって分かりにくくなっているかもしれません。

 N.Wirth の+=が名著であることは、ここに改めて記すまでもありませんが、 現代的な目で Wirth のソースを眺めると書法上の不備が目立ちます。それに代る お手本というほど大それたものではありませんが、現代的にアレンジしたPL/0 インプリメントというところでしょうか。

 このプログラムを書くためにあらためてPL/0のソースを眺めてみますと、 これまで完全に理解していたつもりだった部分にも新しい発見がありました。 やはりPL/0は奥が深いと言えますね(^_-)

質問等は、この会議室でどうぞ。

オケゲム


 このソースは、完全にパブリックドメイン宣言されていたことと、ほぼまったくオリジナルのPL/0の仕様に忠実(つまりそのままでは使い物にならない)だったことから、FPLのSYSOPである きだ あきら氏がPublic PL/0の機能拡張を試みられました。それからは一種の競作のような形で、8086ネイティブ・コード生成版、t-code生成版[*2]、並行版、オブジェクト指向版・・・と機能拡張を進めることになりました。

 準備が出来次第、随時これらのソースも公開していくことにします。


[*1] 当然のことながら、yaccの構文スタックは使っています。
   構文に含まれる再帰的な要素は、全て構文スタックに押込めたことになります。
[*2] t-codeとは、LSI C-86の採用している中間コードです。
   きだ あきら氏は独自の解析により、このt-codeの意味を解析され、
   PL/0の中間コードとして利用されました。その結果、LSI C-86を
   PL/0のバックエンドとして利用することになるわけです。当然、
   LSI C-86並みの良質なコードが期待できます。