Blame camlp4/test/fixtures/pr4314gram3.ml

Packit 1f8b6b
open Camlp4.PreCast ;
Packit 1f8b6b
module G = Camlp4.PreCast.Gram ;
Packit 1f8b6b
Packit 1f8b6b
value exp = G.Entry.mk "exp" ;
Packit 1f8b6b
value prog = G.Entry.mk "prog" ;
Packit 1f8b6b
Packit 1f8b6b
EXTEND G
Packit 1f8b6b
exp:
Packit 1f8b6b
[ "apply"
Packit 1f8b6b
  [ e1 = SELF; e2 = exp LEVEL "simple" ->
Packit 1f8b6b
    let p = Loc.dump in
Packit 1f8b6b
    let () =
Packit 1f8b6b
    Format.eprintf "e1:    %a,@.e2:    %a,@.e1-e2: %a,@._loc:  %a@."
Packit 1f8b6b
      p e1 p e2 p (Loc.merge e1 e2) p _loc
Packit 1f8b6b
    in
Packit 1f8b6b
    _loc
Packit 1f8b6b
  ]
Packit 1f8b6b
| "simple"
Packit 1f8b6b
  [ _ = LIDENT -> _loc ]
Packit 1f8b6b
];
Packit 1f8b6b
prog: [[ e = exp; `EOI -> e ]];
Packit 1f8b6b
END ;
Packit 1f8b6b
Packit 1f8b6b
(* and the following function: *)
Packit 1f8b6b
Packit 1f8b6b
value parse_string entry s =
Packit 1f8b6b
try
Packit 1f8b6b
  G.parse_string entry (Loc.mk "<string>") s
Packit 1f8b6b
with [ Loc.Exc_located loc exn ->
Packit 1f8b6b
begin
Packit 1f8b6b
  print_endline (Loc.to_string loc);
Packit 1f8b6b
  print_endline (Printexc.to_string exn);
Packit 1f8b6b
  failwith "Syntax Error"
Packit 1f8b6b
end ] ;
Packit 1f8b6b
Packit 1f8b6b
parse_string prog "f x";