MiniC言語の使い方
1. 処理系の起動方法
====================
自分のホームディレクトリの下に、「本演習用の作業ディレクトリ」を決め
て,そこに,いくつかのファイルをコピーする.(ここでは作業ディレクトリ
を ~/plm とする。)
cd ~
mkdir plm
cd plm
cp ~kam/minic/main.cmi . (システム実行の際に必要なファイル)
cp ~kam/minic/*.c . (*.c はMiniC言語のプログラムファイル)
そのあとで,
~kam/minic/minic
として起動する.あるいは、事前に、
cd ~/plm
ln -s ~kam/minic/minic (MiniC処理系へのリンク)
としておけば、
./minic
とするだけよい。
なお ~kam/minic/minic (処理系本体)も作業ディレクトリの下にコピーした
方がよいと思うかもしれないが、今後、処理系がバージョンアップされる可
能性があるので、上記のように、リンクにしておいてほしい。
上記で起動できない場合、ls -l ~kam/minic/minic とやって、
自分の権限で、ファイルが読めるかどうかチェックする。また、
ocaml コマンドがない場合も起動できないので、
ocaml というコマンドをたたいてみる。(ocamlから抜ける時は、
control-D を押す。)
2. MiniCプログラム実行方法
===========================
MiniC プログラムを、たとえば ex1.c という名前のファイルに書
ききこんで、# というシステムプロンプトの後に、
Main.run "ex1.c" ;;
と入力する。ここで 最後に ;; (セミコロンが2つ連続) が
必要である。なお、ファイルは、minic 処理系を起動した
場所に置かなければならない。上記のように実行したときに、
Error: Unbound value Main.run
というメッセージが出たら、「1」の作業で main.cmi をコピーし忘れ
たと思われる(あるいは、コピーした作業ディレクトリとは違う場所に
移動して MiniC を起動したものと思われる)。上記の作業を確認してほ
しい。
正しく設定されているとき、上記のように ex1.c を実行すれば、
以下の出力が得られるはずである。
miniC interpreter starts.
55
- : unit = ()
最後の行 (...unit..という行)は、無視してほしい、その前の行
が実行結果であり、この場合、55 である。
上記を実行したあとに、続けて別のファイルを実行できる。
Main.run "ex2.c" ;;
3. 処理系の終了方法
====================
C-d (control-d)を押せば、MiniC 処理系(OCaml処理系) から抜ける。
なお、C-zで中断したままでは、メモリをたくさん消費するので、きち
んと抜けること。
4. MiniC プログラム例題
========================
~kam/minic/ex*.c (* は 1,2,3,...) というファイルが、
例題ファイルである。
5. 処理系の「モード」を変更したいとき
======================================
Main.mode n ;;
とやると、それ以降は、モードn に移る(ただし、n は 0,1,2... である。n
の最大値がいくつであるかは、その時点での処理系の作りによる。)
「処理系のモードが 0とか 1というのは何を意味するのか?」という
疑問が当然置きるであろう。実は、「それを考えよ」というのが課題
であるので、ここでは説明しない。
6. MiniC 言語の構文
====================
講義時に配布した資料を参照してほしい。基本的には C言語の
サブセットである。(ただし、printとshow は C言語にはない。)
7. MiniC のエラーメッセージ
============================
現状の処理系は、最小限のエラーメッセージしか出さない。また、
全てのエラーに対応していない可能性もある。もし、OCaml のプログラムを
理解してプログラムしたい人がいたら、ソースコードを見せるので、改良し
てほしい。