diff options
Diffstat (limited to 'ocaml-binary-annot/camlp4/test/fixtures/pr4314gram2.ml')
| -rw-r--r-- | ocaml-binary-annot/camlp4/test/fixtures/pr4314gram2.ml | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/ocaml-binary-annot/camlp4/test/fixtures/pr4314gram2.ml b/ocaml-binary-annot/camlp4/test/fixtures/pr4314gram2.ml new file mode 100644 index 0000000000..38a5222e19 --- /dev/null +++ b/ocaml-binary-annot/camlp4/test/fixtures/pr4314gram2.ml @@ -0,0 +1,36 @@ +open Camlp4.PreCast ; +module G = Camlp4.PreCast.Gram ; + +value exp = G.Entry.mk "exp" ; +value prog = G.Entry.mk "prog" ; + +EXTEND G +exp: +[ "apply" + [ e1 = exp LEVEL "simple"; e2 = SELF -> + let p = Loc.dump in + let () = + Format.eprintf "e1: %a,@.e2: %a,@.e1-e2: %a,@._loc: %a@." + p e1 p e2 p (Loc.merge e1 e2) p _loc + in + _loc + ] +| "simple" + [ _ = LIDENT -> _loc ] +]; +prog: [[ e = exp; `EOI -> e ]]; +END ; + +(* and the following function: *) + +value parse_string entry s = +try + G.parse_string entry (Loc.mk "<string>") s +with [ Loc.Exc_located loc exn -> +begin + print_endline (Loc.to_string loc); + print_endline (Printexc.to_string exn); + failwith "Syntax Error" +end ] ; + +parse_string prog "f x"; |
