- 追加された行はこの色です。
- 削除された行はこの色です。
* camlp5 [#u6668308]
- http://pauillac.inria.fr/~ddr/camlp5/
- OCaml 3.09 までの camlp4 が名前をcamlp5と名前を変えて配布されている
-- OCaml 3.10 以降の camlp4 はそれまでの camlp4 と全く互換性がないため
-- Coq 等で使われている
-- 現行の camlp4 は undocumentedな部分が多いため camlp4 の代わりにこちらを使うのがよいかもしれない
** チュートリアル [#k7553218]
- [[古いcamlp4のチュートリアル:http://caml.inria.fr/pub/docs/tutorial-camlp4/index.html]] 和訳も誰かが書いてる
- [[Tutorial: How to customize the syntax of OCaml, using Camlp5:http://martin.jambon.free.fr/extend-ocaml-syntax.html]]
** とりあえず使ってみる [#ue166d23]
- hello.ml を構文解析して、そのままpretty printする
camlp5 pr_o.cmo pa_o.cmo hello.ml
-- pr_* は pretty printer, pa_* は パーザ
-- *_o は original syntax, *_r は revised syntax
** q_MLast.cmo [#pc10172c]
ML構文のquotationを有効にする構文拡張?
camlp5 q_MLast.cmo pr_o.cmo pa_o.cmo test.ml
* 疑問 [#o7bebed6]
** パス式の扱い [#bf88477f]
- 次の2つのパス式の表現が異なる
-- F.f;;
-- new C.c
- それぞれ次のようになる:
MLast.ExAcc (loc, MLast.ExUid (loc, "F"), MLast.ExLid (loc, "f"))
MLast.ExNew (loc, ["C"; "c"])