2-1. ミニOCaml言語

本実験では、最終的に、 OCaml言語をもちいて、ミニOCaml言語の処理系を作成する。 ここで「ミニOCaml言語」というのは、OCaml言語のサブセット(一部)であり、 OCaml言語と同じ構文であるが、使える構文に制限があるものである。

本実験のミニ言語としては、 以下に記載の構文をもつものと定める。
(2011/10/11 注. 構文をわずかに変更しました。-10など負の数は、 これまでは「-10というリテラル」でしたが、今後は、 「「10というリテラル」に - という符号反転の演算子がついたもの」と なります。この変更により、「-(3+5)」といった式が書けるようになり、 実際の OCaml 処理系に近くなります。)

e ::= x                   変数
  | let x = e in e        let式
  | let rec f x = e in e  let-rec式
  | fun x -> e            関数
  | e e			  関数適用
  | true                  真理値リテラル(定数)
  | false                 真理値リテラル(定数)
  | if e then e else e    if式
  | n                     自然数リテラル (n は自然数 0, 1, 2, ...)
  | - e                   整数演算(符号の反転)
  | e + e                 整数演算(足し算)
  | e * e                 整数演算(かけ算)
  | e / e                 整数演算(割り算)
  | e = e                 等しさ(整数と真理値)
  | e > e                 大小比較(整数)
  | e < e                 大小比較(整数)
この他に、発展課題などのために、必要に応じて適当な構文を追加する。 たとえば、整数上の演算 e - e や、 リストを表記する以下の構文は上記には含まれていない。
  | []                   空リスト
  | e :: e               リストの先頭に要素を追加したリスト
  | List.hd e            リストの先頭要素
  | List.tl e            リストの先頭要素を除去したリスト

トップ, 前へ, 次へ.

亀山 幸義