Camlp4を試す

30分プログラム、その222。Camlp4を試してみる。
前やろうとして放置していたので、再チャレンジ。チュートリアルを流し読みしていたら時間が来たので、今日はサンプルだけ。

使い方

$ ocamlc -pp "camlp4o pa_extend.cmo q_MLast.cmo" -I +camlp4 -c repeat.ml

$ cat foo.ml
let _ =
  let i = ref 0 in
    repeat print_int !i; incr i until !i = 10;
    print_newline()

$ ocamlc -pp "camlp4o ./repeat.cmo" foo.ml

$ ./a.out
0123456789

ソースコード

open Pcaml
EXTEND
expr: LEVEL "expr1"
[[ "repeat"; e1 = expr; "until"; e2 = expr ->
     <:expr< do { $e1$; while not $e2$ do { $e1$; } } >> ]];
END;;