2-1. ミニOCaml言語

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

本実験のミニ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            リストの先頭要素を除去したリスト

トップ, 前へ, 次へ.

亀山 幸義