1.このアーカイブの内容 このアーカイブには、PL/0 言語に並行処理の機能を持たせた言語、Concurrent PL/0(以下、C.PL/0 と略す)のソースがおさめてあります。コンパイラは拡張 PL/0 機械コード(Pコードの一種)を生成し、PL/0 インタプリタにより実行さ れます。 アーカイブの圧縮率を高めるために、二重にアーカイブされています。その内 容は以下の通りです。 _PL0.LZH C.PL/0 コンパイラのソース(yacc+C) _SAMPLE.LZH サンプルプログラム集 2.C.PL/0 で遊ぶために必要なもの コンパイラ本体をコンパイルするために、kmyacc が必要です。kmyacc はFP Lのデータライブラリに登録してあります。 コンパイラ本体はC言語で記述されているので、Cコンパイラが必要となりま す。テストに用いたコンパイラは、Turbo C++ Ver1.01 のみです。LSI C-86 Ver3.3 では、interpreter が out of memory になり、コンパイルできません。 interpreter は巨大な(でもないと思うのだが)switch 文なので、分割も困難 です。LSI C-86 ユーザには申し訳ないと感じながらも、そのまま投稿すること にします。 3.言語仕様 N.Wirth の名著+=[*1]に掲載されているPL/0言語の仕様を大幅に拡張し ています。変更内容は、CPL0.DOC を参照して下さい。 [*1] N.Wirth 著、片山訳、アルゴリズム+データ構造=プログラム、日 本コンピュータ協会、1979、6000円 4.使用法 適当なファイル名(拡張子は任意だが、.pl0 を標準とする)で C.PL/0 ソー スを作成して下さい。例えばソースファイルが foo.pl0 という名前だとすると、 A>cpl0 foo.pl0 という具合に起動します。 起動時のオプションは3つあります。 -s 入力ソースを表示する。 -c コンパイル後のコードを表示する。 -x コンパイルが成功したら実行する。 旧版との互換性のため、なにも指定しなかった場合は、-s -c -x が全て指定さ れたものとみなします。オプションの指定は、きだあきら氏による拡張 PL/0 の 仕様に準じました。 5.コンパイルの方法 添付のメイクファイルは下記の開発ツールを前提としています。 Turbo C Ver2.0 または Turbo C++ Ver1.01 kmyacc make (LSI C 付属のもの ) 全てのソースを作業ディレクトリに置き、make するだけです。コンパイル時 には、yaccpar.c がカレントディレクトリになければなりません。このファイル は、kmyacc に同梱されています。 【コンパイルの手順】 (1)全てのアーカイブを展開する A>lha e _* (2)C.PL/0 コンパイラをコンパイルする A>make (3)サンプルをコンパイル・実行してみる A>cpl0 philo.pl0 ほぼANSI規格の範囲で記述していますので、他のコンパイラ等に移植する のは容易だと思います。 6.著作権・免責等 このプログラムは、N.Wirth の決めたPL/0の仕様を元にオケゲムが作成し ました。コードの一部に、きだあきら氏による拡張 PL/0 のコードを流用させて いただいております。記して感謝の意を表します。 このプログラムに関するオケゲムに属するべき著作権はすべて放棄します。ま だ、きだあきら氏が作成した部分も Public Domain 宣言されています。このた め、プログラム全体でも Public Domain です。 勝手ながら、このプログラムを使用したことによる結果等については、作者は 責任を負いかねますので、使用者の責任において利用して下さい。 とくに現在のバージョンにはバグが多く含まれているかもしれないことをお断 りしておきます ockeghem /松田晋 (MIX ockeghem) (Nifty QGB01521) (PC-VAN LFA60821) (ASCII net59329)