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";
|