MiniC言語の使い方

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 のプログラムを
  理解してプログラムしたい人がいたら、ソースコードを見せるので、改良し
  てほしい。