0.はじめに

PL/0 シリーズの第・・・何段か、既に分からなくなってしまいましたが、PL/0にオブジェクト指向の要素を取り入れた言語および処理系です。名付けて Objctive PL/0。
この言語には次のような特徴があります。

 処理系は yacc と UNIX V7 準拠の C 言語で記述されています。
 組込のクラスとメソッドが少ないので、あまり楽しめないかもしれませんが、せいぜい遊んでやって下さい。

1.このアーカイブの内容

 このアーカイブには、PL/0 言語にオブジェクト指向の機能を持たせた言語、Objective PL/0 コンパイラのソースがおさめてあります。コンパイラは拡張PL/0 機械コード(P コードの一種)を生成し、Objective PL/0 仮想機械により実行されます。

アーカイブは圧縮率を高めるために、二重にアーカイブされています。その内容は以下の通りです。

    _SOU.LZH    Objective PL/0 コンパイラのソース(yacc+C)
    _PL0.LZH    初期化ファイルとサンプルプログラム集

2.Objective PL/0 で遊ぶために必要なもの

 コンパイラ本体をコンパイルするために、kmyacc が必要です。kmyacc は FPLのデータライブラリに登録してあります。
 コンパイラ本体は C 言語で記述されているので、使用にあたっては、C コンパイラが必要となります。テストに用いたコンパイラは、Borland C++ 3.1 と LSI C-86Ver3.30c、UNIX cc (SUN OS 4.1.3)です。その他のコンパイラに対する移植は容易であろうと思います。

3.言語仕様

 N.Wirth の名著+=[*1]に掲載されている PL/0 言語の仕様を参考にしていますが、オブジェクト指向の機能を全面的に採用したために文法は大幅に改変されています。言語仕様は、OPL0.DOC を参照して下さい。

[*1]

N.Wirth 著、片山訳、アルゴリズム+データ構造=プログラム、日本コンピュータ協会、1979、6000円

4.使用法

 適当なファイル名(拡張子は任意だが、.pl0 を標準とする)で Objective PL/0 ソースを作成して下さい。例えばソースファイルが foo.pl0 という名前だとすると、

    A>opl0 foo.pl0

という具合に起動します。
 起動時のオプションはありません。カレント・ディレクトリに _init.pl0 というファイルが必要です。このファイルは、アーカイブに同梱されています。

5.コンパイルの方法

 添付のメイクファイルは下記の開発ツールを前提としています。

        Borland C++ or Turbo C++ or LSI C-86 or pcc (unix)
        yacc (bison, kmyacc 2.0)
        make(Borland C++ 付属のものか LSI C 付属のもの, UNIX 付属のもの)

 全てのソースを作業ディレクトリに置き、make するだけです。コンパイル時には、yaccpar.c がカレントディレクトリになければなりません(kmyacc 2.0使用時)。このファイルは、kmyacc に同梱されています。

【コンパイルの手順】

(1) 全てのアーカイブを展開する

    A>lha e _*

(2)Objective PL/0 コンパイラをコンパイルする

    A>make

(3) サンプルをコンパイル・実行してみる

    A>opl0 fib.pl0

 ほぼ UNIX V7 準拠の C 言語、ないしは ANSI C の範囲で記述していますので、他のコンパイラ等に移植するのは容易だと思います。

6.著作権・免責等

 このプログラムは、N.Wirth の決めた PL/0 の仕様を元にオケゲムが作成しました。コードの一部に、きだあきら氏による拡張 PL/0 のコードを流用させていただいております。記して感謝の意を表します。
 このプログラムに関するオケゲムに属するべき著作権はすべて放棄します。また、きだあきら氏が作成した部分も Public Domain 宣言されています。このため、プログラム全体でも Public Domain です。
 勝手ながら、このプログラムを使用したことによる結果等については、作者は責任を負いかねますので、使用者の責任において利用して下さい。

 とくに現在のバージョンにはバグが多く含まれているかもしれないこと、機能仕様や実現方法を将来大幅に変更する可能性が高いことをお断りしておきます

 徳丸浩/ockeghem

htokumar@jun.email.ne.jp
QGB01521@niftyserve.or.jp
hiroshi_tokumaru@msn.com