本実験のミニ言語としては、
以下に記載の構文をもつものと定める。
(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 リストの先頭要素を除去したリスト
亀山 幸義