MiniC 言語処理系の使い方 2010/04/19 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 (control z )で 中断したままでは、メモリをたくさん消費するので、 なるべくきちんと抜けること。 4. MiniC プログラム例題 ======================== ~kam/minic/ex*.c (* は 1,2,3,...) というファイルが、 例題ファイルである。 5. 処理系の「モード」を変更したいとき ====================================== Main.mode n ;; とやるとよい(ただし、n は 0,1,2... である。n の最大値がいくつ であるかは、その時点での処理系の作りによる。) 「処理系のモードが 0とか 1というのは何を意味するのか?」という 疑問が当然置きるであろう。実は、「それを考えよ」というのが課題 であるので、ここでは説明しない。 6. MiniC 言語の構文 ==================== 1回目の講義時に配布した資料を参照してほしい。基本的には C言語の サブセットである。 7. MiniC のエラーメッセージ ============================ 現状の処理系は、最小限のエラーしか出さない。また、全てのエラー に対応していない可能性もある。もし、OCaml のプログラムを理解し てプログラムしたい人がいたら、ソースコードを見せるので、改良して ほしい。