Blame camlp4/unmaintained/etc/pa_ru.ml
|
Packit |
1f8b6b |
(* camlp4r pa_extend.cmo q_MLast.cmo *)
|
|
Packit |
1f8b6b |
(***********************************************************************)
|
|
Packit |
1f8b6b |
(* *)
|
|
Packit |
1f8b6b |
(* Camlp4 *)
|
|
Packit |
1f8b6b |
(* *)
|
|
Packit |
1f8b6b |
(* Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt *)
|
|
Packit |
1f8b6b |
(* *)
|
|
Packit |
1f8b6b |
(* Copyright 1998 Institut National de Recherche en Informatique et *)
|
|
Packit |
1f8b6b |
(* Automatique. Distributed only by permission. *)
|
|
Packit |
1f8b6b |
(* *)
|
|
Packit |
1f8b6b |
(***********************************************************************)
|
|
Packit |
1f8b6b |
|
|
Packit |
1f8b6b |
|
|
Packit |
1f8b6b |
|
|
Packit |
1f8b6b |
open Pcaml;
|
|
Packit |
1f8b6b |
|
|
Packit |
1f8b6b |
value o2b =
|
|
Packit |
1f8b6b |
fun
|
|
Packit |
1f8b6b |
[ Some _ -> True
|
|
Packit |
1f8b6b |
| None -> False ]
|
|
Packit |
1f8b6b |
;
|
|
Packit |
1f8b6b |
|
|
Packit |
1f8b6b |
EXTEND
|
|
Packit |
1f8b6b |
GLOBAL: expr;
|
|
Packit |
1f8b6b |
expr: LEVEL "top"
|
|
Packit |
1f8b6b |
[ [ "do"; "{"; seq = sequence; "}" ->
|
|
Packit |
1f8b6b |
match seq with
|
|
Packit |
1f8b6b |
[ [e] -> e
|
|
Packit |
1f8b6b |
| _ -> <:expr< do { $list:seq$ } >> ] ] ]
|
|
Packit |
1f8b6b |
;
|
|
Packit |
1f8b6b |
sequence:
|
|
Packit |
1f8b6b |
[ [ "let"; o = OPT "rec"; l = LIST1 let_binding SEP "and"; [ "in" | ";" ];
|
|
Packit |
1f8b6b |
el = SELF ->
|
|
Packit |
1f8b6b |
let e =
|
|
Packit |
1f8b6b |
match el with
|
|
Packit |
1f8b6b |
[ [e] -> e
|
|
Packit |
1f8b6b |
| _ -> <:expr< do { $list:el$ } >> ]
|
|
Packit |
1f8b6b |
in
|
|
Packit |
1f8b6b |
[ <:expr< let $opt:o2b o$ $list:l$ in $e$ >> ]
|
|
Packit |
1f8b6b |
| e = expr; ";"; el = SELF ->
|
|
Packit |
1f8b6b |
let e = let _loc = MLast.loc_of_expr e in <:expr< ($e$ : unit) >> in
|
|
Packit |
1f8b6b |
[e :: el]
|
|
Packit |
1f8b6b |
| e = expr; ";" -> [e]
|
|
Packit |
1f8b6b |
| e = expr -> [e] ] ]
|
|
Packit |
1f8b6b |
;
|
|
Packit |
1f8b6b |
END;
|