==============================================================================
== 単純な字句解析器・構文解析器・プリティプリンタ
==============================================================================

文献[1]p.150-151問11.7の解答例である．
「MLでプログラミングしてみることを勧める．」とあったのを受けてML系の言語の1つであるOCamlを用いてプログラミングされている．
字句解析器の生成にはocamllex，構文解析器の生成にはocamlyacc を用いる必要がある[2]．

コマンドラインから make とタイプすると lambda という実行ファイルが生成される．実行すると (vi)のような対話が可能である．

以下の式も構文解析可能である．

let factorial = (fix (fn x => (fn n => (case n of 1(x) => 1, 2(y) => (x (n - 1)))))) in (factorial 10) end;

[1] 大堀 淳, ジャック ガリグ, 西村 進: コンピュータサイエンス入門 アルゴリズムとプログラミング言語, 岩波書店 (1999)
[2] Xavier Leroy: The Objective Caml system release 3.06 Documentation and user's manual, Chapter 12, Lexer and parser generators (ocamllex, ocamlyacc), (2002). Available from https://ocaml.jp/archive/ocaml-manual-3.06-ja/manual026.html

2019/09/12 作成
2019/11/22 改訂 caseの構文解析やプリティプリンタを修正
2020/08/12 Readme.txtにocamllex, ocamlyaccのことを追記
