テキストファイルとして記述した仕様を CafeOBJ に読み込ませるには、in
コマンドを使用する。in
コマンドの構文は、次の通りである。
in
<filename>
<filename> には、CafeOBJ に読み込ませたいファイル名を指定する。拡張子 .mod
は省略してよい。
先ほど、 simple-nat.mod
と名前を付けて保存した自然数の仕様を読み込ませてみよう。次のように入力すると、CafeOBJ は simple-nat.mod
を読み込む。
CafeOBJ> in simple-nat processing input : simple-nat.mod -- defining module! SIMPLE-NAT..._* done. -- defining module! NAT+.._..* done. CafeOBJ>
CafeOBJ は進捗状況を表示しながらファイルを読み込み、読み込みが終了すると、再びプロンプトを表示する。
CafeOBJ は仕様に文法エラーが含まれるとき、文法エラーの位置をファイルの先頭からの文字数で表示する。この表示はエラーの位置を探すには少し不親切であるが、先頭からの文字数でカーソルを移動させる機能のあるエディタ (Emacs など) を用いるか、tail
コマンドを使えば表示できる。
例えば、sample.mod を読み込んだとき、1354 文字目にエラーがあることが分かったならば、シェルプロンプトから次のようにタイプする:
% tail -c 1354 sample.mod | head -10
sample.mod の 1354文字目から 10行表示されるはずである。
同じファイルを再度読み込ませると、CafeOBJ は次のように警告を表示する。
CafeOBJ> in simple-nat processing input : simple-nat.mod -- defining module! SIMPLE-NAT [Warning]: redefining module SIMPLE-NAT ..._* done. -- defining module! NAT+ [Warning]: redefining module NAT+ .._..* done. CafeOBJ>
既に定義済みのモジュールが再定義されたことを示す警告であり、この場合は無視してよい。
CafeOBJ はファイルの読み込み中に、eof
コマンドに出会うと、その位置で読み込みを停止する。例えば、次のように使用する:
mod! SIMPLE-NAT { [ Nat ] op 0 : -> Nat op s : Nat -> Nat } eof mod! NAT+ { pr(SIMPLE-NAT) op _+_ : Nat Nat -> Nat eq 0 + M:Nat = M . eq s (N:Nat) + M:Nat = s (N + M) . }
eof
は仕様のデバッグの際に有用である。
CafeOBJ では、Unix コマンドと同様のコマンドが存在する。以下では、そのようなコマンドの構文を紹介する。
ファイルの一覧
ls
<path>
カレントディレクトリの変更
cd
<path>
カレントディレクトリの表示
pwd
使い方は Unix の同名のコマンドと同じであるので、説明は割愛する。
Original Copyright © Takahiro Seino, all rights reserved.