From 5c3619e50d03c88ebe787d9b1602ed71c058d047 Mon Sep 17 00:00:00 2001 From: Stefano Zacchiroli Date: Wed, 13 Jun 2007 12:34:29 +0000 Subject: [PATCH] Imported Upstream version 3.10.0 --- Makefile | 11 +- Makefile.nt | 8 +- VERSION | 4 +- _tags | 2 + asmcomp/power/emit.mlp | 37 +- boot/myocamlbuild.boot | Bin 1662469 -> 1667336 bytes boot/ocamlc | Bin 1017170 -> 1017772 bytes boot/ocamldep | Bin 284189 -> 286256 bytes boot/ocamllex | Bin 161836 -> 161840 bytes build/boot-c-parts-windows.sh | 1 + build/boot-c-parts.sh | 1 + build/boot.sh | 19 +- build/buildbot | 2 + build/camlp4-bootstrap.sh | 6 + build/camlp4-byte-only.sh | 1 + build/camlp4-native-only.sh | 1 + build/camlp4-targets.sh | 7 +- build/distclean.sh | 1 + build/fastworld.sh | 1 + build/install.sh | 270 +- build/mkconfig.sh | 9 +- build/mkmyocamlbuild_config.sh | 1 + build/mkruntimedef.sh | 1 + build/myocamlbuild.sh | 1 + build/ocamlbuild-byte-only.sh | 1 + build/ocamlbuild-native-only.sh | 1 + build/otherlibs-targets.sh | 1 + build/partial-boot.sh | 1 + build/partial-install.sh | 49 +- build/targets.sh | 1 + build/world.all.sh | 1 + build/world.byte.sh | 1 + build/world.native.sh | 1 + build/world.sh | 1 + byterun/config.h | 4 +- byterun/globroots.c | 12 +- byterun/globroots.h | 6 +- camlp4/Camlp4/Camlp4Ast.partial.ml | 21 +- camlp4/Camlp4/ErrorHandler.ml | 4 +- camlp4/Camlp4/OCamlInitSyntax.ml | 86 +- camlp4/Camlp4/PreCast.ml | 5 +- camlp4/Camlp4/PreCast.mli | 13 +- camlp4/Camlp4/Printers/DumpCamlp4Ast.ml | 4 +- camlp4/Camlp4/Printers/DumpCamlp4Ast.mli | 3 +- camlp4/Camlp4/Printers/DumpOCamlAst.ml | 4 +- camlp4/Camlp4/Printers/DumpOCamlAst.mli | 3 +- camlp4/Camlp4/Printers/Null.mli | 2 +- camlp4/Camlp4/Printers/OCaml.ml | 97 +- camlp4/Camlp4/Printers/OCaml.mli | 13 +- camlp4/Camlp4/Printers/OCamlr.ml | 53 +- camlp4/Camlp4/Printers/OCamlr.mli | 10 +- camlp4/Camlp4/Register.ml | 27 +- camlp4/Camlp4/Register.mli | 17 +- camlp4/Camlp4/Sig.ml | 293 +- camlp4/Camlp4/Struct.mlpack | 2 +- camlp4/Camlp4/Struct/Camlp4Ast.mlast | 276 +- camlp4/Camlp4/Struct/Camlp4Ast2OCamlAst.ml | 64 +- camlp4/Camlp4/Struct/CleanAst.ml | 11 +- camlp4/Camlp4/Struct/CommentFilter.mli | 2 +- camlp4/Camlp4/Struct/DynAst.ml | 91 + camlp4/Camlp4/Struct/EmptyPrinter.ml | 2 - camlp4/Camlp4/Struct/EmptyPrinter.mli | 2 +- camlp4/Camlp4/Struct/FreeVars.ml | 5 +- camlp4/Camlp4/Struct/Grammar/Context.ml | 6 +- camlp4/Camlp4/Struct/Grammar/Parser.mli | 70 + camlp4/Camlp4/Struct/Grammar/Print.ml | 4 +- camlp4/Camlp4/Struct/Lexer.mll | 91 +- camlp4/Camlp4/Struct/Quotation.ml | 74 +- camlp4/Camlp4/Struct/Token.ml | 2 +- camlp4/Camlp4/Struct/Warning.ml | 26 - camlp4/Camlp4Bin.ml | 31 +- camlp4/Camlp4Filters/Camlp4FoldGenerator.ml | 41 +- .../Camlp4Filters/Camlp4LocationStripper.ml | 4 +- camlp4/Camlp4Filters/Camlp4MapGenerator.ml | 46 +- camlp4/Camlp4Filters/Camlp4Tracer.ml | 4 +- camlp4/Camlp4Filters/Camlp4TrashRemover.ml | 4 +- camlp4/Camlp4Parsers/Camlp4GrammarParser.ml | 9 +- camlp4/Camlp4Parsers/Camlp4MacroParser.ml | 188 +- .../Camlp4OCamlOriginalQuotationExpander.ml | 2 +- camlp4/Camlp4Parsers/Camlp4OCamlParser.ml | 336 +- .../Camlp4OCamlReloadedParser.ml | 94 + .../Camlp4Parsers/Camlp4OCamlRevisedParser.ml | 520 +- .../Camlp4OCamlRevisedParserParser.ml | 9 +- .../Camlp4OCamlRevisedQuotationExpander.ml | 2 +- camlp4/Camlp4Parsers/Camlp4QuotationCommon.ml | 34 +- camlp4/Camlp4Top/Rprint.ml | 4 +- camlp4/Camlp4Top/Top.ml | 6 +- camlp4/Camlp4_config.ml | 1 + camlp4/Camlp4_config.mli | 1 + camlp4/boot/Camlp4.ml | 15178 ++++++++-------- camlp4/boot/Camlp4.ml4 | 2 +- camlp4/boot/Camlp4Ast.ml | 9381 +++++----- camlp4/boot/camlp4boot.ml | 2909 ++- camlp4/boot/camlp4boot.ml4 | 1 + camlp4/camlp4fulllib.mllib | 42 + camlp4/examples/_tags | 8 + camlp4/examples/apply_operator.ml | 6 + camlp4/examples/apply_operator_test.ml | 1 + camlp4/examples/lambda_quot.ml | 38 + camlp4/examples/lambda_test.ml | 13 + camlp4/examples/macros.ml | 67 + camlp4/examples/parse_files.ml | 31 + camlp4/examples/test_macros.ml | 15 + camlp4/examples/test_type_quotation.ml | 3 + camlp4/examples/type_quotation.ml | 18 + config/Makefile.msvc | 20 +- configure | 4 +- man/ocaml.m | 2 +- myocamlbuild.ml | 6 +- ocamlbuild/ChangeLog | 83 + ocamlbuild/Makefile | 4 +- ocamlbuild/command.ml | 10 +- ocamlbuild/command.mli | 4 +- ocamlbuild/examples/example_with_C/_tags | 1 + ocamlbuild/examples/example_with_C/fib.ml | 5 + ocamlbuild/examples/example_with_C/fibwrap.c | 7 + ocamlbuild/examples/example_with_C/main.c | 10 + .../examples/example_with_C/myocamlbuild.ml | 35 + ocamlbuild/examples/example_with_C/x.ml | 1 + ocamlbuild/main.ml | 4 +- ocamlbuild/my_std.ml | 27 +- ocamlbuild/my_unix.ml | 4 +- ocamlbuild/ocaml_compiler.ml | 17 +- ocamlbuild/ocaml_specific.ml | 33 +- ocamlbuild/ocaml_tools.ml | 15 +- ocamlbuild/ocaml_utils.ml | 11 +- ocamlbuild/ocamldep.ml | 20 +- ocamlbuild/ocamldep.mli | 8 +- ocamlbuild/options.ml | 13 +- ocamlbuild/pathname.ml | 26 +- ocamlbuild/rule.ml | 17 +- ocamlbuild/rule.mli | 6 +- ocamlbuild/signatures.mli | 9 +- otherlibs/labltk/support/Makefile | 6 +- otherlibs/labltk/support/tkthread.ml | 6 +- otherlibs/labltk/support/tkthread.mli | 14 +- parsing/printast.ml | 17 +- stdlib/scanf.mli | 63 +- typing/oprint.ml | 10 +- typing/typecore.ml | 16 +- typing/typedecl.ml | 3 +- typing/typemod.ml | 47 +- typing/typetexp.ml | 5 +- win32caml/inria.h | 10 +- 144 files changed, 17314 insertions(+), 14181 deletions(-) create mode 100644 camlp4/Camlp4/Struct/DynAst.ml create mode 100644 camlp4/Camlp4/Struct/Grammar/Parser.mli delete mode 100644 camlp4/Camlp4/Struct/Warning.ml create mode 100644 camlp4/Camlp4Parsers/Camlp4OCamlReloadedParser.ml create mode 100644 camlp4/camlp4fulllib.mllib create mode 100644 camlp4/examples/_tags create mode 100644 camlp4/examples/apply_operator.ml create mode 100644 camlp4/examples/apply_operator_test.ml create mode 100644 camlp4/examples/lambda_quot.ml create mode 100644 camlp4/examples/lambda_test.ml create mode 100644 camlp4/examples/macros.ml create mode 100644 camlp4/examples/parse_files.ml create mode 100644 camlp4/examples/test_macros.ml create mode 100644 camlp4/examples/test_type_quotation.ml create mode 100644 camlp4/examples/type_quotation.ml create mode 100644 ocamlbuild/examples/example_with_C/_tags create mode 100644 ocamlbuild/examples/example_with_C/fib.ml create mode 100644 ocamlbuild/examples/example_with_C/fibwrap.c create mode 100644 ocamlbuild/examples/example_with_C/main.c create mode 100644 ocamlbuild/examples/example_with_C/myocamlbuild.ml create mode 100644 ocamlbuild/examples/example_with_C/x.ml diff --git a/Makefile b/Makefile index e9b30144..3f627404 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ # # ######################################################################### -# $Id: Makefile,v 1.207.4.1 2007/03/05 09:18:22 pouillar Exp $ +# $Id: Makefile,v 1.207.4.4 2007/04/16 16:01:59 pouillar Exp $ # The main Makefile @@ -145,7 +145,7 @@ coreboot: $(MAKE) promote-cross # Rebuild ocamlc and ocamllex (run on byterun/ocamlrun) $(MAKE) partialclean - $(MAKE) ocamlc ocamllex + $(MAKE) ocamlc ocamllex ocamltools # Rebuild the library (using byterun/ocamlrun ./ocamlc) $(MAKE) library-cross # Promote the new compiler and the new runtime @@ -189,7 +189,7 @@ backup: mkdir boot/Saved mv boot/Saved.prev boot/Saved/Saved.prev cp boot/ocamlrun$(EXE) boot/Saved - mv boot/ocamlc boot/ocamllex boot/ocamlyacc$(EXE) boot/Saved + mv boot/ocamlc boot/ocamllex boot/ocamlyacc$(EXE) boot/ocamldep boot/Saved cd boot; cp $(LIBFILES) Saved # Promote the newly compiled system to the rank of cross compiler @@ -198,6 +198,7 @@ promote-cross: cp ocamlc boot/ocamlc cp lex/ocamllex boot/ocamllex cp yacc/ocamlyacc$(EXE) boot/ocamlyacc$(EXE) + cp tools/ocamldep boot/ocamldep cd stdlib; cp $(LIBFILES) ../boot # Promote the newly compiled system to the rank of bootstrap compiler @@ -213,7 +214,7 @@ restore: # Check if fixpoint reached compare: - @if cmp boot/ocamlc ocamlc && cmp boot/ocamllex lex/ocamllex; \ + @if cmp boot/ocamlc ocamlc && cmp boot/ocamllex lex/ocamllex && cmp boot/ocamldep tools/ocamldep; \ then echo "Fixpoint reached, bootstrap succeeded."; \ else echo "Fixpoint not reached, try one more bootstrapping cycle."; \ fi @@ -261,7 +262,7 @@ install: FORCE if test -f debugger/ocamldebug; then (cd debugger; $(MAKE) install); \ else :; fi cp config/Makefile $(LIBDIR)/Makefile.config - ./build/partial-install.sh + BINDIR=$(BINDIR) LIBDIR=$(LIBDIR) PREFIX=$(PREFIX) ./build/partial-install.sh # Installation of the native-code compiler installopt: diff --git a/Makefile.nt b/Makefile.nt index 91e9ed8e..86907772 100644 --- a/Makefile.nt +++ b/Makefile.nt @@ -10,7 +10,7 @@ # # ######################################################################### -# $Id: Makefile.nt,v 1.102.4.1 2007/03/05 09:18:22 pouillar Exp $ +# $Id: Makefile.nt,v 1.102.4.3 2007/04/16 16:01:59 pouillar Exp $ # The main Makefile @@ -131,7 +131,7 @@ bootstrap: $(MAKEREC) promote-cross # Rebuild ocamlc and ocamllex (run on byterun/ocamlrun) $(MAKEREC) partialclean - $(MAKEREC) ocamlc ocamllex + $(MAKEREC) ocamlc ocamllex ocamltools # Rebuild the library (using byterun/ocamlrun ./ocamlc) $(MAKEREC) library-cross # Promote the new compiler and the new runtime @@ -166,7 +166,7 @@ backup: mkdir boot/Saved mv boot/Saved.prev boot/Saved/Saved.prev cp boot/ocamlrun.exe boot/Saved/ocamlrun.exe - cd boot ; mv ocamlc ocamllex ocamlyacc.exe Saved + cd boot ; mv ocamlc ocamllex ocamldep ocamlyacc.exe Saved cd boot ; cp $(LIBFILES) Saved # Promote the newly compiled system to the rank of cross compiler @@ -175,6 +175,7 @@ promote-cross: cp ocamlc boot/ocamlc cp lex/ocamllex boot/ocamllex cp yacc/ocamlyacc.exe boot/ocamlyacc.exe + cp tools/ocamldep boot/ocamldep cd stdlib ; cp $(LIBFILES) ../boot # Promote the newly compiled system to the rank of bootstrap compiler @@ -192,6 +193,7 @@ restore: compare: - cmp -i 4096 boot/ocamlc ocamlc - cmp -i 4096 boot/ocamllex lex/ocamllex + - cmp -i 4096 boot/ocamldep tools/ocamldep # Remove old bootstrap compilers cleanboot: diff --git a/VERSION b/VERSION index 7f012712..f0b88bc2 100644 --- a/VERSION +++ b/VERSION @@ -1,6 +1,6 @@ -3.10.0+beta +3.10.0 # The version string is the first line of this file. # It must be in the format described in stdlib/sys.mli -# $Id: VERSION,v 1.2.2.1 2007/03/05 15:45:05 xleroy Exp $ +# $Id: VERSION,v 1.2.2.4 2007/05/13 15:13:25 xleroy Exp $ diff --git a/_tags b/_tags index 1ab6035f..6dd67f0e 100644 --- a/_tags +++ b/_tags @@ -23,6 +23,7 @@ true: use_stdlib "toplevel/topstart.byte": linkall +: -debug : ocamldoc_sources : include_unix, include_str, include_dynlink "ocamldoc/odoc.byte": use_unix, use_str, use_dynlink @@ -36,6 +37,7 @@ true: use_stdlib : include_unix "camlp4/Camlp4/Struct/DynLoader.ml": include_dynlink : include_toplevel +: -debug : -warn_Alez, include_unix diff --git a/asmcomp/power/emit.mlp b/asmcomp/power/emit.mlp index da8b67a0..d1d397ec 100644 --- a/asmcomp/power/emit.mlp +++ b/asmcomp/power/emit.mlp @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: emit.mlp,v 1.23 2007/01/29 12:10:50 xleroy Exp $ *) +(* $Id: emit.mlp,v 1.23.4.1 2007/05/10 16:41:12 xleroy Exp $ *) (* Emission of PowerPC assembly code *) @@ -312,12 +312,6 @@ let tailrec_entry_point = ref 0 let defined_functions = ref StringSet.empty (* Label of glue code for calling the GC *) let call_gc_label = ref 0 -(* Label of jump table *) -let lbl_jumptbl = ref 0 -(* List of all labels in jumptable (reverse order) *) -let jumptbl_entries = ref [] -(* Number of jumptable entries *) -let num_jumptbl_entries = ref 0 (* Fixup conditional branches that exceed hardware allowed range *) @@ -746,19 +740,20 @@ let rec emit_instr i dslot = | Some lbl -> ` bgt {emit_label lbl}\n` end | Lswitch jumptbl -> - if !lbl_jumptbl = 0 then lbl_jumptbl := new_label(); - ` addis {emit_gpr 11}, 0, {emit_upper emit_label !lbl_jumptbl}\n`; - ` addi {emit_gpr 11}, {emit_gpr 11}, {emit_lower emit_label !lbl_jumptbl}\n`; - ` addi {emit_gpr 0}, {emit_reg i.arg.(0)}, {emit_int !num_jumptbl_entries}\n`; - ` {emit_string slgi} {emit_gpr 0}, {emit_gpr 0}, 2\n`; + let lbl = new_label() in + ` addis {emit_gpr 11}, 0, {emit_upper emit_label lbl}\n`; + ` addi {emit_gpr 11}, {emit_gpr 11}, {emit_lower emit_label lbl}\n`; + ` {emit_string slgi} {emit_gpr 0}, {emit_reg i.arg.(0)}, 2\n`; ` {emit_string lwa}x {emit_gpr 0}, {emit_gpr 11}, {emit_gpr 0}\n`; ` add {emit_gpr 0}, {emit_gpr 11}, {emit_gpr 0}\n`; ` mtctr {emit_gpr 0}\n`; ` bctr\n`; + emit_string rodata_space; + `{emit_label lbl}:`; for i = 0 to Array.length jumptbl - 1 do - jumptbl_entries := jumptbl.(i) :: !jumptbl_entries; - incr num_jumptbl_entries - done + ` .long {emit_label jumptbl.(i)} - {emit_label lbl}\n` + done; + emit_string code_space | Lsetuptrap lbl -> ` bl {emit_label lbl}\n` | Lpushtrap -> @@ -926,9 +921,6 @@ let data l = let begin_assembly() = defined_functions := StringSet.empty; external_functions := StringSet.empty; - num_jumptbl_entries := 0; - jumptbl_entries := []; - lbl_jumptbl := 0; (* Emit the beginning of the segments *) let lbl_begin = Compilenv.make_symbol (Some "data_begin") in emit_string data_space; @@ -940,15 +932,6 @@ let begin_assembly() = `{emit_symbol lbl_begin}:\n` let end_assembly() = - (* Emit the jump table *) - if !num_jumptbl_entries > 0 then begin - emit_string code_space; - `{emit_label !lbl_jumptbl}:\n`; - List.iter - (fun lbl -> ` .long {emit_label lbl} - {emit_label !lbl_jumptbl}\n`) - (List.rev !jumptbl_entries); - jumptbl_entries := [] - end; if pic_externals then (* Emit the pointers to external functions *) StringSet.iter emit_external !external_functions; diff --git a/boot/myocamlbuild.boot b/boot/myocamlbuild.boot index a0aae97d580f755393271e172cf3fb280e038ee0..3187433c9466bb17f1000eeeae1ca41232793dc0 100755 GIT binary patch delta 391428 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%0DKzLrIk)5!)^W(j0(Gv7o+ts!uX5%s- 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
  • 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�b%PBSX{ghYsAcFD*Jj>+`6 zOh0$V6vyiFp(ez~U?LDPLlRMEvnENtIjD>+ZlY|IeCsHi#!5N@CnyCqd8ko@7WbO} zit_M3KZWXQscs~<6gwm@T3Up<`6XRM4OIIG)$Rs>n}8Y=1X%+ z{h$-^$5Q!FOoUc(Mevxcr`lyyy9&T64QMN*08}H2Wj~QDV~dC>X7ua=;lZ~>h&?7l z@R+Ql+WA!5V^%Za)6Ei(EF44(2dLUa2m!2XsP^KMsP;5K8zlrlYjSWT;l2=ti|8YS z$b$9OMd+iuY8H0QmBU^pEd41y_o$uCpk6j`xsKDbMS9);%^UH~7+EY(h;+F49f zsTuGvGl+;DyoC(y;(!bs+58Ovk81!^n&f1l*?mgq-g_ax?>Gpv%&FrV?&yt$WGX1R+4}zw^??iZz zq$wQZp!L}alx_PSn&ydc8E6WZ5|vZU7OL3+piBcVYCi4KG_8{~{aVuWGH7xJ(zLvv zrY(}17Mad+o(;z8^MMOR_*6wxBSA)}d5LNceGg5Djc^9jbUM)>s(z5F9|Ld(M|rOq zM>VrFP5U)X?UE+g8e@nb22HnRy7~urXp_deCM;=bkZGN>EEKE1!s-*@ixfo{a#;SF z7OGkCU5YFOKA6T7H51vC`8#Ef0+_}T>#Ijl^?XgyG5xNglA?z76R`clX(i#_)a1E# z=7P0UJyE{DMy6?=`Zrd07RU{pBBczoRM+$~p6IHjRX;{tHPj{;cUhTcoMquyW7=9L z!Z$K;YcxIQ1Hk=Zinw{sbKzJ+9s{XL5(UnhHcxIQ%nb2sy-Y^|o+NW;VmiRjqt$=V zwd3{YV4gk8tSxx{_^jC?yuH_iqCUKhC`#1}sd_Cl?i}+Zj~H)Nh%jrO!av`^0rxXE zQ08Vp4{6{bmvcdgpLiiYEG&CBQRXY|OW#~@=T=W&h6ih|*pdM$nI@clcC4Y@GDP@U z)s@fiZ3LNzDf7&CyV8%>?_-MKI9*KXO_biozYzH;-A5U1*%7=#69h2<1nt3X#W*qs zLAN+FBe7Glgk?UK1k3p#jSfe@3~{zbz-xcE2!GaV)}Z1~5yy@)lPR-^NvRqzZ~7ZW z_z05%&*dUYpGj$)orV#QM*%n!#`@!bSQB!q#!a@ND6)F4lo34VY z+xMKH+dV5&F`Uv7-z$i6m4tt(!<3HA!K;Mt1wos^FP1!I(dE|z=CSad8gHI_%V3$ZJCGp6{T=oc<&fIBEEAW38G5Ahoaks-Nh8au<$q~=TdSB zfG!Q(<5CpT-(RLgQY6ofhYR}J)4Ae00n;WvgtM=uJno7}Zl&ZNW>gV^q>~pDUAB^6 zdOaCODOpF!kpNa|fJI$Vbf)kXd&@KkdkvRaO~w&QMk$#Buto!EXa#+pC^lO77Ef&2 z;{3SI}d)%)xM3*Z&m>-!AUB)L&$}&s9I-vI-rR!mSv`Xb4N;0y{t?G^&=D#&yDe zno0SyM!F5a(;C>sC7^xqmRKt6=in~~w7q0}LI`M=!0g;)R<7Pw8pGcp{0+um3I0m) zSBAeh{>t%J@x->$%Cbqm_YLRCS(V9Q&z>>$lJmzJhGmYMGH$A26m1+ocG^UvWLwO@ TkK=F~`KcpEj-1ih_~ZWvpP3w( delta 386165 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/N~P0~1z!%4bm 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 o>wSmx&AVBn2lc@c>ddsEX~X6#2i445+5i9m delta 58934 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 z z@4!EqwBFH82oqLx2>)a{c}Mr73pqw+d%pGzu~$XmX0Ej12FzFY8133GKnLSK=A9O8 z{ldM*o$U*em<5-29L(1o*MZkRTE~^5-5?-P;t>AHV!=D<3aY&qb>-G=ozm_xIYW)O z4*ZkHLGP4rAk2rXX#UCc^p1WDVTv8iKU?Qp-x96V)0tsLU%ZADJ>1At57^vpZ8G}U zu}Q2O4kq{now^Gjh8b>j!A|0!5ypD!1}Dyx*_?A=skV>yjWF^;m`)rNjgQO5QA?@+ zea2|;N!=*uR`vH8VIB6N9L&~?f&WJ1W3kpq7w$7Mg9jm+|2pGi45>6|q>&i>6UfDX zoQi`x(c+OtoWZ7c{&W$vZd$ukO^Od_~zLN9DpNniM4Ikx}ay<$={C?Ya zzmW&iV$cJ|+&`#y?E~mt`{>*QMqgv8gOoeir<61r-J_7k!inUfxB{FD>U}@dVU0Rv z2pkR@Z6v8jw5ors#__paBgo1y9>CoD{qb?aeUz1J#C5tB1q&Sz42QW!VozSMQ4qwV z9ut)Nog2ml{0xDNk;8EJ@lf9c;-?^$zftsqsM1j?eh{j}G1~l~QI7rFJs!gNjy<;z z89S8ENza4eK2AOIpevlfg*gyLUr;{#zO;OuP69hiu}pkD@OdA1XtF{6;RTY=3gjyr z=PA0(IKQ@i|D>dR`2J-lKkb#AspOr*85`sqFOaxaAm7?J&(Z@B0K)SR7`N2l{Bduke7j559)X2X7*vWtPO3sYPIdHe(=J~}2`S1S$ z@;?hiy`<42V~mc0--c7&=T{?7jlEl)yhk>Ds;UP)M}de`(u2PV-AhQ}`N!Y4Usd(pY^DD6#- zw>KWcgSU@^;bt!kEE2tQxy6C$>jlH4@y?~64b$;f2jXJT@dKRr zj84%7iciJUe2|YY=1nw)K@`SM!c-@=2=n8&D5nS_-#e(D8jFmPcFK&54PiGCK1XHOy zEl)=Zm}*1=WzclU;LPe$qc4?DH3lJM-&73ggAkIe-sP2$_Ldl7G-(=c&Ra`^4tqGR%6Ne6uNOI!4IP&5G#; zPL1T4D`yyiexS;RxyET_C{@fu;qEmz&oj2P35H=QsQq=zQR1FEf5s z^@QFx_DZ@jDPhdGvI4VYg|S@g)hBWKw9>@lDTM{aiNzDgB;v;-#qrtcX+yHI?iv{9 zxP7lcExO}*!@T49>t_t0y`NwImAUo!^<{p2Qj`1lioWUgt_58SdPNV2?piRnYk?Kk z^QPM$?HN75D?YxYbmEMHvT@Po=zmC*KZ{Q^6T>h{REvI$eh*7@F{1Z0_G zl)!O;%2(#Tpuk5B^MS~~&+o(i0XI(%ya6W=@}~#J4ErfHtuD3az}aQvQ1a4((uoC= z(-iHk)PZ%W@pkCsNeFnOu`#tSwFifk6ckP>7(cEQq4k{D3Y<2sux#R#$*gWoVnd`3Z8LFu>>r15}3 z9gj>bE1WWR90CS$Nn-DqJOfF$TaexEC@q~*$~hgR+8KfA*)6)%n2M- zUTP6;cxl1pX~l&WEj^d4V%k9#Da8t_nBDE5DPxL&Zu!aVm5v*iHcIg|xdd?>WMvjm$apOOloC|L(-~+oP%(x;Gx=<> ziO$}#akD@a{~)UlBPLIuHg0U*i~{hY&q}j!ZXj;gnlp=v7X?P)y0?l&fzkgDc$$)J diff --git a/boot/ocamldep b/boot/ocamldep index ef85504aa860ebcf64cc288cbe1e0d03e9879e4f..85d7bddff36c140355c0de8c0382363b5f290e7f 100755 GIT binary patch literal 286256 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 Lix;nVIv4#PpQr8> literal 284189 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

      H{(1 z7w}a~#A!|7%@!-MmIFF8b>_Y7XB(Yl#D)*{ZV7t-GF*6OH5=7cKji9QvWH_=UU2T` z0ekY`j`nj(-F!Me$WiO9abeTA_RP->>gV$_*5n6p*dC}E?Yr{#7mV%o%#$;I=`?50 zo;*6sKXvK-xg=1FX9VQfCfn~GI8`^cgw^wHcFZUV9!N9F_vU;mdaQRmbgF z6Qj=##Hah_)#*G=VnydQ0XvP|)ftN!|L}t4KwDn<{|EFxFJnI9teqR+gxhkU@#Xme zIegf)FAw$kxQzK_&H275Wbwy$58ngPuWRqf?#vNhmC>##@yS`{2Mo>)mJ$_&E*<1Hp+V*8*fA7C+>||KVRsapZ&6|-4lop z`{g9BjnfzpI>$NRweth<0~{9FIydX(Q!S4oa5*G+!$lF@LCSE>gOLFxYMo2 z#r-HR=g9DbE!^iaQJ8MlmmIIAm>(>OImw|ft^WfA#oB#I-{GHMDS?~VO zWqwBH|1GF*e6dfjf1emXI{(_t)mZ0m%v>%ye`V%-Gk^5Yf72I^c3zV8ael#U{+!I& z6<50CW&N~P-TynELbHeeFBr-#g~Mj6V2p9#pq@yBqy%)YGA_Uu!e|X#W1A zGu5ScR^Ri++XGzG-@nMe%p%=`bm8=-=o)?BJL#@3WWID-tFISiF3)oF--EqD!m$$T zO&Qz6yX(stYs)MD|2N+=#yC7>X5&BQ?|atAV{(pdT>izhF0OoB7uZ`9+%)Z#=M9;Q z8#&+atK&IYAJ@d_bEh>wr}g~rI_$K;6w6|^8yJ*@gpK)(%_C}jenq={%=P84p|C7HMH`eYS&*r~1oBzAn{9n)JKb|=o z&z)@W@jJ4HkM#{f<96G$ZcgsTnXcWLi&g7IOir4~JbpG`H=FkN*DT zZ2ldy`9GS?-#DAUHgmr9{_@dhkbcM1UpDoAR>Q;F{Dhp_n|?!}e^KCj+XaE92I<`% zhz-0uf2q)U?XUBPXSLhUjx|~T=(Jvce>(G{v)=jlX3n0XX79zuX-h%%8QW9;?w0tE zYwi}C)*chs=dUyD;Bj;8*t33GK(=pe=RMbX->}XK%2l%Y)S?{p5Glwew@VRk1muKjRpB>iKFn!j)cXs}3Cpk8IuX_KhxA(Vq zv3KoNIm7OrslRUOUp@8s*njQRzj5ksnfkX({adI0Yo`9|rv4r2@pc!VKJjc^ej$G; zm+qq{8L|DBSsUlym3e(QXOa_xcTRH7kLz#EdVM@^kiTitQ`>toZw%O@=fX+eJAK|v z{%M($d3vBW+?N*yO99@EZ{Jut<)U2bL*@ET-W3^o+g~}&ubTSZQ~%1TSEJ-_nEKaD z{p+Uw%cuSgQ$Nq&eEv@-xo@8OZ=L#YpZaf^`hPg<@0jN0{ngX_Yp4DltMqT5*4uym zG_Sq(@0r%WbL!ta>wk2b|M=8@VCv`RzI$4K-_(Ea)Zae!t>dqnt=GT$y>HsDpD&x{ zyQY3Vf5o(Z_0;#Cec3dB`K)iAyMFhy|Bt4Ap0_tm>u;X=Tc`dlQ(xZSIL-gb)X(#M zu=Dl%&gp!4ecd!~{+jP^nAxel_VfCB_ay%vQ{Q~GfB&@ped)b{;-L8spf;Wz{8eyC z@ViI;?cbqYmUXi3=#Id>l(Wwc_@+H7u)j0d5A}fC)F1Mn!Om^^p1}Ub z0H;saW>l=`@s1o9;7R{z=hDoN3N*g(Q4p6I1edupw3&U!S}(dVoWD(qTOECA%(Q?@0mO=L8zQYXW=xU>_H@7s)*< z>wG^u(5?vTE1uvS9@_(Y>Ho+Ae{o@tzuxiMt}cPC(b z9%bF|OOv(fW7QHEYQSGv;L^X(Vkq2ofwig=24uq%9VBOm<1a7a-dnGX2c(#4<`gm)#YDI z1Ei%=90lDF{qk4J>$xob2!F8uK7X+zrQxX@;r53R?5rvMSG4hNb7x~LyShh#PZ01?dmq^ zyjkqe4#Z5n)Pr%=P@Ow@+7@VHppNF%P3b-Lr#{^

      LR;h#vgWy*{(J&ozHBvwf$MQU!3Kma?gH#+&|bH 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 aO;5lBdT9k%MtksJIB)6FrDr*vOa32xGT7w+ diff --git a/boot/ocamllex b/boot/ocamllex index 57dfd4a2050dc09468b7877084ca65af7e11cf5f..ab895f363fdde8e1df2d7533cc25d7a7eaeb7e39 100755 GIT binary patch delta 79 zcmZ4UfpfzLPEln={nFwh{ha*d#2kGfk(*;|Xwb;h%EP#ohiQ=+?=%Jm#-j`jLiZUM ic*M8wHe+IBW>+)TGc?dM*nYy2$=Qx^)pVW;CItZITNaN1 delta 75 zcmV-R0JQ(G@CmH&2@E44FLiTrFKlmPVQhgFg%ts{6#}9*4VwS}0mT3S65s#;3>de> hHUa?y3@bA(F)%JLD`I7IVYkdV0z*Clua^*b0w8t}6~F)h diff --git a/build/boot-c-parts-windows.sh b/build/boot-c-parts-windows.sh index c8c06d42..fb9120fe 100755 --- a/build/boot-c-parts-windows.sh +++ b/build/boot-c-parts-windows.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: boot-c-parts-windows.sh,v 1.2.4.3 2007/03/12 11:58:48 pouillar Exp $ cd `dirname $0`/.. set -ex diff --git a/build/boot-c-parts.sh b/build/boot-c-parts.sh index 921f595a..eacb4488 100755 --- a/build/boot-c-parts.sh +++ b/build/boot-c-parts.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: boot-c-parts.sh,v 1.1.4.3 2007/03/12 11:58:48 pouillar Exp $ cd `dirname $0`/.. set -ex diff --git a/build/boot.sh b/build/boot.sh index 97509646..ffbfc336 100755 --- a/build/boot.sh +++ b/build/boot.sh @@ -1,12 +1,23 @@ #!/bin/sh +# $Id: boot.sh,v 1.1.4.3 2007/05/14 13:59:36 pouillar Exp $ cd `dirname $0`/.. set -ex -./boot/ocamlrun boot/myocamlbuild.boot boot/stdlib.cma boot/std_exit.cmo -boot/ocamlrun boot/myocamlbuild.boot -log _boot_log1 \ +TAGLINE='true: -use_stdlib' +./boot/ocamlrun boot/myocamlbuild.boot \ + -tag-line "$TAG_LINE" \ + boot/stdlib.cma boot/std_exit.cmo + +boot/ocamlrun boot/myocamlbuild.boot \ + -tag-line "$TAG_LINE" -log _boot_log1 \ ocamlbuild/ocamlbuildlightlib.cma ocamlbuild/ocamlbuildlight.byte + rm -f _build/myocamlbuild + boot/ocamlrun boot/myocamlbuild.boot \ -just-plugin -install-lib-dir _build/ocamlbuild -byte-plugin + cp _build/myocamlbuild boot/myocamlbuild -./boot/ocamlrun boot/myocamlbuild $@ -log _boot_log2 \ - boot/camlheader ocamlc + +./boot/ocamlrun boot/myocamlbuild \ + -tag-line "$TAG_LINE" \ + $@ -log _boot_log2 boot/camlheader ocamlc diff --git a/build/buildbot b/build/buildbot index af9b99d7..c755852f 100755 --- a/build/buildbot +++ b/build/buildbot @@ -104,4 +104,6 @@ case "$mode" in ;; esac +(cat _build/not_installed || bad) 2>&1 | log not_installed + finish diff --git a/build/camlp4-bootstrap.sh b/build/camlp4-bootstrap.sh index e1458475..f931f14a 100755 --- a/build/camlp4-bootstrap.sh +++ b/build/camlp4-bootstrap.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: camlp4-bootstrap.sh,v 1.2.2.2 2007/03/26 12:55:33 pouillar Exp $ set -e cd `dirname $0`/.. @@ -25,4 +26,9 @@ $OCAMLBUILD $TMPTARGETS $TARGETS for t in $TARGETS; do echo promote $t cp _build/$t camlp4/boot/`basename $t` + if cmp _build/$t camlp4/boot/`basename $t`.old; then + echo fixpoint for $t + else + echo $t is different, you should rebootstrap it by cleaning, building and call this script + fi done diff --git a/build/camlp4-byte-only.sh b/build/camlp4-byte-only.sh index ce307318..220e51bf 100755 --- a/build/camlp4-byte-only.sh +++ b/build/camlp4-byte-only.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: camlp4-byte-only.sh,v 1.2.4.3 2007/03/12 11:58:48 pouillar Exp $ set -e OCAMLBUILD_PARTIAL="true" export OCAMLBUILD_PARTIAL diff --git a/build/camlp4-native-only.sh b/build/camlp4-native-only.sh index b0865b3b..e3d49e9b 100755 --- a/build/camlp4-native-only.sh +++ b/build/camlp4-native-only.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: camlp4-native-only.sh,v 1.2.4.4 2007/03/12 11:58:48 pouillar Exp $ set -e OCAMLBUILD_PARTIAL="true" export OCAMLBUILD_PARTIAL diff --git a/build/camlp4-targets.sh b/build/camlp4-targets.sh index 32b55db6..53edde4a 100644 --- a/build/camlp4-targets.sh +++ b/build/camlp4-targets.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: camlp4-targets.sh,v 1.1.4.2 2007/03/12 11:58:48 pouillar Exp $ CAMLP4_COMMON="\ camlp4/Camlp4/Camlp4Ast.partial.ml \ camlp4/boot/camlp4boot.byte" @@ -7,13 +8,15 @@ CAMLP4_BYTE="$CAMLP4_COMMON \ camlp4/Camlp4Top.cmo \ camlp4/camlp4prof.byte$EXE \ camlp4/mkcamlp4.byte$EXE \ - camlp4/camlp4.byte$EXE" + camlp4/camlp4.byte$EXE \ + camlp4/camlp4fulllib.cma" CAMLP4_NATIVE="$CAMLP4_COMMON \ camlp4/Camlp4.cmx \ camlp4/Camlp4Top.cmx \ camlp4/camlp4prof.native$EXE \ camlp4/mkcamlp4.native$EXE \ - camlp4/camlp4.native$EXE" + camlp4/camlp4.native$EXE \ + camlp4/camlp4fulllib.cmxa" for i in camlp4boot camlp4r camlp4rf camlp4o camlp4of camlp4oof camlp4orf; do CAMLP4_BYTE="$CAMLP4_BYTE camlp4/$i.byte$EXE camlp4/$i.cma" diff --git a/build/distclean.sh b/build/distclean.sh index 302005c1..5f3551a2 100755 --- a/build/distclean.sh +++ b/build/distclean.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: distclean.sh,v 1.4.2.5 2007/03/12 11:58:48 pouillar Exp $ cd `dirname $0`/.. set -ex (cd byterun && make clean) || : diff --git a/build/fastworld.sh b/build/fastworld.sh index 1aae8f6f..7d1d7bd3 100755 --- a/build/fastworld.sh +++ b/build/fastworld.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: fastworld.sh,v 1.2.4.2 2007/03/12 11:58:48 pouillar Exp $ cd `dirname $0` set -e ./mkconfig.sh diff --git a/build/install.sh b/build/install.sh index 286e462e..13c4913b 100755 --- a/build/install.sh +++ b/build/install.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: install.sh,v 1.6.2.12 2007/04/05 08:12:39 pouillar Exp $ set -e cd `dirname $0`/.. @@ -8,9 +9,11 @@ cd `dirname $0`/.. not_installed=$PWD/_build/not_installed rm -f "$not_installed" +touch "$not_installed" wontinstall() { echo "$1" >> "$not_installed" + echo " don't install $1" } installbin() { @@ -44,7 +47,9 @@ installlib() { dest="$2/`basename $1`" echo " install library $dest" cp -f "$1" "$2" - ranlib "$dest" + if [ "$RANLIB" != "" ]; then + "$RANLIB" "$dest" + fi else wontinstall "$1" fi @@ -88,15 +93,14 @@ mkdir -p $LIBDIR/threads mkdir -p $LIBDIR/labltk mkdir -p $LIBDIR/ocamlbuild mkdir -p $LIBDIR/ocamldoc +mkdir -p $LIBDIR/ocamldoc/custom mkdir -p $STUBLIBDIR mkdir -p $MANDIR/man1 mkdir -p $MANDIR/man3 mkdir -p $MANDIR/man$MANEXT echo "Installing core libraries..." -installlibdir byterun/libcamlrun.$A byterun/libcamlrunp.$A \ - asmrun/libasmrun.$A asmrun/libasmrunp.$A \ - asmrun/libasmrunp.$A asmrun/libasmrunpp.$A \ +installlibdir byterun/libcamlrun.$A asmrun/libasmrun.$A asmrun/libasmrunp.$A \ $LIBDIR PUBLIC_INCLUDES="\ @@ -110,15 +114,21 @@ for i in $PUBLIC_INCLUDES; do done cd .. -installdir otherlibs/win32unix/unixsupport.h otherlibs/unix/unixsupport.h \ +WIN32="" +if [ "x$EXE" = "x.exe" ]; then + installbin win32caml/ocamlwin.exe $PREFIX/OCamlWin.exe + installdir byterun/ocamlrun.dll $BINDIR + WIN32=win32 +fi + +installdir otherlibs/"$WIN32"unix/unixsupport.h \ + otherlibs/bigarray/bigarray.h \ $LIBDIR/caml -installdir byterun/ocamlrun.dll yacc/ocamlyacc byterun/ocamlrun $BINDIR +installdir yacc/ocamlyacc byterun/ocamlrun $BINDIR installdir byterun/ld.conf $LIBDIR -installbin win32caml/ocamlwin.exe $PREFIX/OCamlWin.exe - cd _build echo "Installing the toplevel and compilers..." @@ -133,7 +143,7 @@ set=set # coloration workaround echo "Installing the standard library..." installdir \ stdlib/stdlib.cma \ - stdlib/stdlib.cmxa stdlib/stdlibp.cmxa \ + stdlib/stdlib.cmxa stdlib/stdlib.p.cmxa \ stdlib/camlheader \ stdlib/camlheader_ur \ stdlib/std_exit.cm[io] \ @@ -180,54 +190,54 @@ installdir \ stdlib/sys.cmi stdlib/sys.mli \ stdlib/weak.cmi stdlib/weak.mli \ stdlib/$set.cmi stdlib/$set.mli \ - stdlib/arg.cmx stdlib/argp.cmx stdlib/arg.$O stdlib/argp.$O \ - stdlib/array.cmx stdlib/arrayp.cmx stdlib/array.$O stdlib/arrayp.$O \ - stdlib/arrayLabels.cmx stdlib/arrayLabelsp.cmx stdlib/arrayLabels.$O stdlib/arrayLabelsp.$O \ - stdlib/buffer.cmx stdlib/bufferp.cmx stdlib/buffer.$O stdlib/bufferp.$O \ - stdlib/callback.cmx stdlib/callbackp.cmx stdlib/callback.$O stdlib/callbackp.$O \ - stdlib/camlinternalMod.cmx stdlib/camlinternalModp.cmx stdlib/camlinternalMod.$O stdlib/camlinternalModp.$O \ - stdlib/camlinternalOO.cmx stdlib/camlinternalOOp.cmx stdlib/camlinternalOO.$O stdlib/camlinternalOOp.$O \ - stdlib/char.cmx stdlib/charp.cmx stdlib/char.$O stdlib/charp.$O \ - stdlib/complex.cmx stdlib/complexp.cmx stdlib/complex.$O stdlib/complexp.$O \ - stdlib/digest.cmx stdlib/digestp.cmx stdlib/digest.$O stdlib/digestp.$O \ - stdlib/filename.cmx stdlib/filenamep.cmx stdlib/filename.$O stdlib/filenamep.$O \ - stdlib/format.cmx stdlib/formatp.cmx stdlib/format.$O stdlib/formatp.$O \ - stdlib/gc.cmx stdlib/gcp.cmx stdlib/gc.$O stdlib/gcp.$O \ - stdlib/genlex.cmx stdlib/genlexp.cmx stdlib/genlex.$O stdlib/genlexp.$O \ - stdlib/hashtbl.cmx stdlib/hashtblp.cmx stdlib/hashtbl.$O stdlib/hashtblp.$O \ - stdlib/int32.cmx stdlib/int32p.cmx stdlib/int32.$O stdlib/int32p.$O \ - stdlib/int64.cmx stdlib/int64p.cmx stdlib/int64.$O stdlib/int64p.$O \ - stdlib/lazy.cmx stdlib/lazyp.cmx stdlib/lazy.$O stdlib/lazyp.$O \ - stdlib/lexing.cmx stdlib/lexingp.cmx stdlib/lexing.$O stdlib/lexingp.$O \ - stdlib/list.cmx stdlib/listp.cmx stdlib/list.$O stdlib/listp.$O \ - stdlib/listLabels.cmx stdlib/listLabelsp.cmx stdlib/listLabels.$O stdlib/listLabelsp.$O \ - stdlib/map.cmx stdlib/mapp.cmx stdlib/map.$O stdlib/mapp.$O \ - stdlib/marshal.cmx stdlib/marshalp.cmx stdlib/marshal.$O stdlib/marshalp.$O \ - stdlib/moreLabels.cmx stdlib/moreLabelsp.cmx stdlib/moreLabels.$O stdlib/moreLabelsp.$O \ - stdlib/nativeint.cmx stdlib/nativeintp.cmx stdlib/nativeint.$O stdlib/nativeintp.$O \ - stdlib/obj.cmx stdlib/objp.cmx stdlib/obj.$O stdlib/objp.$O \ - stdlib/oo.cmx stdlib/oop.cmx stdlib/oo.$O stdlib/oop.$O \ - stdlib/parsing.cmx stdlib/parsingp.cmx stdlib/parsing.$O stdlib/parsingp.$O \ - stdlib/pervasives.cmx stdlib/pervasivesp.cmx stdlib/pervasives.$O stdlib/pervasivesp.$O \ - stdlib/printexc.cmx stdlib/printexcp.cmx stdlib/printexc.$O stdlib/printexcp.$O \ - stdlib/printf.cmx stdlib/printfp.cmx stdlib/printf.$O stdlib/printfp.$O \ - stdlib/queue.cmx stdlib/queuep.cmx stdlib/queue.$O stdlib/queuep.$O \ - stdlib/random.cmx stdlib/randomp.cmx stdlib/random.$O stdlib/randomp.$O \ - stdlib/scanf.cmx stdlib/scanfp.cmx stdlib/scanf.$O stdlib/scanfp.$O \ - stdlib/sort.cmx stdlib/sortp.cmx stdlib/sort.$O stdlib/sortp.$O \ - stdlib/stack.cmx stdlib/stackp.cmx stdlib/stack.$O stdlib/stackp.$O \ - stdlib/stdLabels.cmx stdlib/stdLabelsp.cmx stdlib/stdLabels.$O stdlib/stdLabelsp.$O \ - stdlib/std_exit.cmx stdlib/std_exitp.cmx stdlib/std_exit.$O stdlib/std_exitp.$O \ - stdlib/stream.cmx stdlib/streamp.cmx stdlib/stream.$O stdlib/streamp.$O \ - stdlib/string.cmx stdlib/stringp.cmx stdlib/string.$O stdlib/stringp.$O \ - stdlib/stringLabels.cmx stdlib/stringLabelsp.cmx stdlib/stringLabels.$O stdlib/stringLabelsp.$O \ - stdlib/sys.cmx stdlib/sysp.cmx stdlib/sys.$O stdlib/sysp.$O \ - stdlib/weak.cmx stdlib/weakp.cmx stdlib/weak.$O stdlib/weakp.$O \ - stdlib/$set.cmx stdlib/$setp.cmx stdlib/$set.$O stdlib/$setp.$O \ + stdlib/arg.cmx stdlib/arg.p.cmx stdlib/arg.$O stdlib/arg.p.$O \ + stdlib/array.cmx stdlib/array.p.cmx stdlib/array.$O stdlib/array.p.$O \ + stdlib/arrayLabels.cmx stdlib/arrayLabels.p.cmx stdlib/arrayLabels.$O stdlib/arrayLabels.p.$O \ + stdlib/buffer.cmx stdlib/buffer.p.cmx stdlib/buffer.$O stdlib/buffer.p.$O \ + stdlib/callback.cmx stdlib/callback.p.cmx stdlib/callback.$O stdlib/callback.p.$O \ + stdlib/camlinternalMod.cmx stdlib/camlinternalMod.p.cmx stdlib/camlinternalMod.$O stdlib/camlinternalMod.p.$O \ + stdlib/camlinternalOO.cmx stdlib/camlinternalOO.p.cmx stdlib/camlinternalOO.$O stdlib/camlinternalOO.p.$O \ + stdlib/char.cmx stdlib/char.p.cmx stdlib/char.$O stdlib/char.p.$O \ + stdlib/complex.cmx stdlib/complex.p.cmx stdlib/complex.$O stdlib/complex.p.$O \ + stdlib/digest.cmx stdlib/digest.p.cmx stdlib/digest.$O stdlib/digest.p.$O \ + stdlib/filename.cmx stdlib/filename.p.cmx stdlib/filename.$O stdlib/filename.p.$O \ + stdlib/format.cmx stdlib/format.p.cmx stdlib/format.$O stdlib/format.p.$O \ + stdlib/gc.cmx stdlib/gc.p.cmx stdlib/gc.$O stdlib/gc.p.$O \ + stdlib/genlex.cmx stdlib/genlex.p.cmx stdlib/genlex.$O stdlib/genlex.p.$O \ + stdlib/hashtbl.cmx stdlib/hashtbl.p.cmx stdlib/hashtbl.$O stdlib/hashtbl.p.$O \ + stdlib/int32.cmx stdlib/int32.p.cmx stdlib/int32.$O stdlib/int32.p.$O \ + stdlib/int64.cmx stdlib/int64.p.cmx stdlib/int64.$O stdlib/int64.p.$O \ + stdlib/lazy.cmx stdlib/lazy.p.cmx stdlib/lazy.$O stdlib/lazy.p.$O \ + stdlib/lexing.cmx stdlib/lexing.p.cmx stdlib/lexing.$O stdlib/lexing.p.$O \ + stdlib/list.cmx stdlib/list.p.cmx stdlib/list.$O stdlib/list.p.$O \ + stdlib/listLabels.cmx stdlib/listLabels.p.cmx stdlib/listLabels.$O stdlib/listLabels.p.$O \ + stdlib/map.cmx stdlib/map.p.cmx stdlib/map.$O stdlib/map.p.$O \ + stdlib/marshal.cmx stdlib/marshal.p.cmx stdlib/marshal.$O stdlib/marshal.p.$O \ + stdlib/moreLabels.cmx stdlib/moreLabels.p.cmx stdlib/moreLabels.$O stdlib/moreLabels.p.$O \ + stdlib/nativeint.cmx stdlib/nativeint.p.cmx stdlib/nativeint.$O stdlib/nativeint.p.$O \ + stdlib/obj.cmx stdlib/obj.p.cmx stdlib/obj.$O stdlib/obj.p.$O \ + stdlib/oo.cmx stdlib/oo.p.cmx stdlib/oo.$O stdlib/oo.p.$O \ + stdlib/parsing.cmx stdlib/parsing.p.cmx stdlib/parsing.$O stdlib/parsing.p.$O \ + stdlib/pervasives.cmx stdlib/pervasives.p.cmx stdlib/pervasives.$O stdlib/pervasives.p.$O \ + stdlib/printexc.cmx stdlib/printexc.p.cmx stdlib/printexc.$O stdlib/printexc.p.$O \ + stdlib/printf.cmx stdlib/printf.p.cmx stdlib/printf.$O stdlib/printf.p.$O \ + stdlib/queue.cmx stdlib/queue.p.cmx stdlib/queue.$O stdlib/queue.p.$O \ + stdlib/random.cmx stdlib/random.p.cmx stdlib/random.$O stdlib/random.p.$O \ + stdlib/scanf.cmx stdlib/scanf.p.cmx stdlib/scanf.$O stdlib/scanf.p.$O \ + stdlib/sort.cmx stdlib/sort.p.cmx stdlib/sort.$O stdlib/sort.p.$O \ + stdlib/stack.cmx stdlib/stack.p.cmx stdlib/stack.$O stdlib/stack.p.$O \ + stdlib/stdLabels.cmx stdlib/stdLabels.p.cmx stdlib/stdLabels.$O stdlib/stdLabels.p.$O \ + stdlib/std_exit.cmx stdlib/std_exit.p.cmx stdlib/std_exit.$O stdlib/std_exit.p.$O \ + stdlib/stream.cmx stdlib/stream.p.cmx stdlib/stream.$O stdlib/stream.p.$O \ + stdlib/string.cmx stdlib/string.p.cmx stdlib/string.$O stdlib/string.p.$O \ + stdlib/stringLabels.cmx stdlib/stringLabels.p.cmx stdlib/stringLabels.$O stdlib/stringLabels.p.$O \ + stdlib/sys.cmx stdlib/sys.p.cmx stdlib/sys.$O stdlib/sys.p.$O \ + stdlib/weak.cmx stdlib/weak.p.cmx stdlib/weak.$O stdlib/weak.p.$O \ + stdlib/$set.cmx stdlib/$set.p.cmx stdlib/$set.$O stdlib/$set.p.$O \ $LIBDIR installlibdir \ - stdlib/stdlib.$A stdlib/stdlibp.$A \ + stdlib/stdlib.$A stdlib/stdlib.p.$A \ $LIBDIR echo "Installing ocamllex, ocamldebug..." @@ -257,18 +267,16 @@ installdir \ otherlibs/bigarray/bigarray.cma \ otherlibs/dbm/dbm.cma \ otherlibs/dynlink/dynlink.cma \ - otherlibs/graph/graphics.cma otherlibs/win32/graph/graphics.cma \ + otherlibs/"$WIN32"graph/graphics.cma \ otherlibs/num/nums.cma \ otherlibs/str/str.cma \ - otherlibs/unix/unix.cma otherlibs/win32unix/unix.cma \ - otherlibs/bigarray/bigarray.cmxa otherlibs/bigarray/bigarray.p.cmxa \ - otherlibs/dbm/dbm.cmxa otherlibs/dbm/dbm.p.cmxa \ - otherlibs/graph/graphics.cmxa otherlibs/graph/graphics.p.cmxa \ - otherlibs/win32/graph/graphics.cmxa otherlibs/win32graph/graphics.p.cmxa \ - otherlibs/num/nums.cmxa otherlibs/num/nums.p.cmxa \ - otherlibs/str/str.cmxa otherlibs/str/str.p.cmxa \ - otherlibs/unix/unix.cmxa otherlibs/unix/unix.p.cmxa \ - otherlibs/win32unix/unix.cmxa otherlibs/win32unix/unix.p.cmxa \ + otherlibs/"$WIN32"unix/unix.cma \ + otherlibs/bigarray/bigarray.cmxa \ + otherlibs/dbm/dbm.cmxa \ + otherlibs/"$WIN32"graph/graphics.cmxa \ + otherlibs/num/nums.cmxa \ + otherlibs/str/str.cmxa \ + otherlibs/"$WIN32"unix/unix.cmxa \ toplevel/toplevellib.cma \ otherlibs/systhreads/thread.mli \ otherlibs/systhreads/mutex.mli \ @@ -327,7 +335,6 @@ installdir \ installdir \ otherlibs/systhreads/threads.cma \ otherlibs/systhreads/threads.cmxa \ - otherlibs/systhreads/threads.p.cmxa \ otherlibs/systhreads/thread.cmi \ otherlibs/systhreads/mutex.cmi \ otherlibs/systhreads/condition.cmi \ @@ -338,13 +345,11 @@ installdir \ installdir \ otherlibs/bigarray/dllbigarray$EXT_DLL \ otherlibs/dbm/dllmldbm$EXT_DLL \ - otherlibs/graph/dllgraphics$EXT_DLL \ - otherlibs/win32graph/dllgraphics$EXT_DLL \ + otherlibs/"$WIN32"graph/dllgraphics$EXT_DLL \ otherlibs/num/dllnums$EXT_DLL \ otherlibs/str/dllstr$EXT_DLL \ otherlibs/systhreads/dllthreads$EXT_DLL \ - otherlibs/unix/dllunix$EXT_DLL \ - otherlibs/win32unix/dllunix$EXT_DLL \ + otherlibs/"$WIN32"unix/dllunix$EXT_DLL \ otherlibs/threads/dllvmthreads$EXT_DLL \ otherlibs/labltk/support/dlllabltk$EXT_DLL \ otherlibs/labltk/tkanim/dlltkanim$EXT_DLL \ @@ -380,24 +385,14 @@ installlibdir \ $LIBDIR/labltk installlibdir \ - otherlibs/bigarray/libbigarray.$A otherlibs/bigarray/libbigarray.p.$A \ - otherlibs/dbm/libmldbm.$A otherlibs/dbm/libmldbm.p.$A \ - otherlibs/graph/libgraphics.$A \ - otherlibs/graph/libgraphics.p.$A \ - otherlibs/win32graph/libgraphics.$A \ - otherlibs/win32graph/libgraphics.p.$A \ + otherlibs/bigarray/libbigarray.$A \ + otherlibs/dbm/libmldbm.$A \ + otherlibs/"$WIN32"graph/libgraphics.$A \ otherlibs/num/libnums.$A \ - otherlibs/num/libnums.p.$A \ otherlibs/str/libstr.$A \ - otherlibs/str/libstr.p.$A \ otherlibs/systhreads/libthreads.$A \ - otherlibs/systhreads/libthreads.p.$A \ otherlibs/systhreads/libthreadsnat.$A \ - otherlibs/systhreads/libthreadsnat.p.$A \ - otherlibs/unix/libunix.$A \ - otherlibs/unix/libunix.p.$A \ - otherlibs/win32unix/libunix.$A \ - otherlibs/win32unix/libunix.p.$A \ + otherlibs/"$WIN32"unix/libunix.$A \ $LIBDIR echo "Installing object files and interfaces..." @@ -409,7 +404,6 @@ installdir \ toplevel/topmain.cmi \ typing/outcometree.cmi \ otherlibs/graph/graphicsX11.cmi \ - otherlibs/win32graph/graphicsX11.cmi \ otherlibs/dynlink/dynlink.cmi \ otherlibs/num/arith_status.cmi \ otherlibs/num/big_int.cmi \ @@ -418,103 +412,50 @@ installdir \ otherlibs/num/ratio.cmi \ otherlibs/bigarray/bigarray.cmi \ otherlibs/dbm/dbm.cmi \ - otherlibs/graph/graphics.cmi \ - otherlibs/win32graph/graphics.cmi \ + otherlibs/"$WIN32"graph/graphics.cmi \ otherlibs/str/str.cmi \ - otherlibs/unix/unix.cmi \ - otherlibs/win32unix/unix.cmi \ - otherlibs/unix/unixLabels.cmi \ - otherlibs/win32unix/unixLabels.cmi \ + otherlibs/"$WIN32"unix/unix.cmi \ + otherlibs/"$WIN32"unix/unixLabels.cmi \ otherlibs/num/arith_flags.cmx \ otherlibs/num/arith_flags.$O \ - otherlibs/num/arith_flags.p.cmx \ - otherlibs/num/arith_flags.p.$O \ otherlibs/num/int_misc.cmx \ - otherlibs/num/int_misc.p.$O \ - otherlibs/num/int_misc.cmx \ - otherlibs/num/int_misc.p.$O \ - otherlibs/num/arith_status.cmx \ - otherlibs/num/arith_status.p.$O \ + otherlibs/num/int_misc.$O \ otherlibs/num/arith_status.cmx \ - otherlibs/num/arith_status.p.$O \ - otherlibs/num/big_int.cmx \ - otherlibs/num/big_int.p.$O \ + otherlibs/num/arith_status.$O \ otherlibs/num/big_int.cmx \ - otherlibs/num/big_int.p.$O \ + otherlibs/num/big_int.$O \ otherlibs/num/nat.cmx \ - otherlibs/num/nat.p.$O \ - otherlibs/num/nat.cmx \ - otherlibs/num/nat.p.$O \ - otherlibs/num/num.cmx \ - otherlibs/num/num.p.$O \ + otherlibs/num/nat.$O \ otherlibs/num/num.cmx \ - otherlibs/num/num.p.$O \ - otherlibs/num/ratio.cmx \ - otherlibs/num/ratio.p.$O \ + otherlibs/num/num.$O \ otherlibs/num/ratio.cmx \ - otherlibs/num/ratio.p.$O \ + otherlibs/num/ratio.$O \ otherlibs/bigarray/bigarray.cmx \ - otherlibs/bigarray/bigarray.p.$O \ - otherlibs/bigarray/bigarray.cmx \ - otherlibs/bigarray/bigarray.p.$O \ - otherlibs/dbm/dbm.cmx \ - otherlibs/dbm/dbm.p.$O \ + otherlibs/bigarray/bigarray.$O \ otherlibs/dbm/dbm.cmx \ - otherlibs/dbm/dbm.p.$O \ - otherlibs/graph/graphics.cmx \ - otherlibs/graph/graphics.$O \ - otherlibs/graph/graphics.p.cmx \ - otherlibs/graph/graphics.p.$O \ - otherlibs/win32graph/graphics.cmx \ - otherlibs/win32graph/graphics.$O \ - otherlibs/win32graph/graphics.p.cmx \ - otherlibs/win32graph/graphics.p.$O \ - otherlibs/str/str.cmx \ - otherlibs/str/str.p.$O \ + otherlibs/dbm/dbm.$O \ + otherlibs/"$WIN32"graph/graphics.cmx \ + otherlibs/"$WIN32"graph/graphics.$O \ otherlibs/str/str.cmx \ - otherlibs/str/str.p.$O \ - otherlibs/unix/unix.cmx \ - otherlibs/unix/unix.$O \ - otherlibs/unix/unix.p.cmx \ - otherlibs/unix/unix.p.$O \ - otherlibs/win32unix/unix.cmx \ - otherlibs/win32unix/unix.$O \ - otherlibs/win32unix/unix.p.cmx \ - otherlibs/win32unix/unix.p.$O \ - otherlibs/unix/unixLabels.cmx \ - otherlibs/unix/unixLabels.$O \ - otherlibs/unix/unixLabels.p.cmx \ - otherlibs/unix/unixLabels.p.$O \ - otherlibs/win32unix/unixLabels.cmx \ - otherlibs/win32unix/unixLabels.$O \ - otherlibs/win32unix/unixLabels.p.cmx \ - otherlibs/win32unix/unixLabels.p.$O \ + otherlibs/str/str.$O \ + otherlibs/"$WIN32"unix/unix.cmx \ + otherlibs/"$WIN32"unix/unix.$O \ + otherlibs/"$WIN32"unix/unixLabels.cmx \ + otherlibs/"$WIN32"unix/unixLabels.$O \ $LIBDIR installlibdir \ otherlibs/bigarray/bigarray.$A \ - otherlibs/bigarray/bigarray.p.$A \ otherlibs/dbm/dbm.$A \ - otherlibs/dbm/dbm.p.$A \ - otherlibs/graph/graphics.$A \ - otherlibs/graph/graphics.p.$A \ - otherlibs/win32graph/graphics.$A \ - otherlibs/win32graph/graphics.p.$A \ + otherlibs/"$WIN32"graph/graphics.$A \ otherlibs/num/nums.$A \ - otherlibs/num/nums.p.$A \ otherlibs/str/str.$A \ - otherlibs/str/str.p.$A \ - otherlibs/unix/unix.$A \ - otherlibs/unix/unix.p.$A \ - otherlibs/win32unix/unix.$A \ - otherlibs/win32unix/unix.p.$A \ + otherlibs/"$WIN32"unix/unix.$A \ stdlib/stdlib.$A \ - stdlib/stdlib.p.$A \ $LIBDIR installlibdir \ otherlibs/systhreads/threads.$A \ - otherlibs/systhreads/threads.p.$A \ $LIBDIR/threads echo "Installing manuals..." @@ -527,7 +468,7 @@ installbin ocamldoc/ocamldoc.opt$EXE $BINDIR/ocamldoc.opt$EXE installdir \ ../ocamldoc/ocamldoc.hva \ ocamldoc/*.cmi \ - ocamldoc/odoc_info.mli ocamldoc/odoc_infor.cm[ia] ocamldoc/odoc_info.cmxa \ + ocamldoc/odoc_info.mli ocamldoc/odoc_info.cm[ia] ocamldoc/odoc_info.cmxa \ ocamldoc/odoc_info.$A \ $LIBDIR/ocamldoc @@ -561,16 +502,17 @@ for dir in Camlp4Parsers Camlp4Printers Camlp4Filters Camlp4Top; do installdir \ $dir/*.cm* \ $dir/*.$O \ - $dir/*.p.$O \ $CAMLP4DIR/$dir done installdir \ camlp4lib.cma camlp4lib.cmxa Camlp4.cmi \ + camlp4fulllib.cma camlp4fulllib.cmxa \ camlp4o.cma camlp4of.cma camlp4oof.cma \ camlp4orf.cma camlp4r.cma camlp4rf.cma \ - Camlp4Bin.cm[iox] Camlp4Bin.$O Camlp4Bin.p.$O Camlp4Top.cm[io] \ + Camlp4Bin.cm[iox] Camlp4Bin.$O Camlp4Top.cm[io] \ + Camlp4_config.cmi camlp4prof.cm[iox] camlp4prof.$O \ $CAMLP4DIR -installlibdir camlp4lib.$A camlp4lib.p.$A $CAMLP4DIR +installlibdir camlp4lib.$A camlp4fulllib.$A $CAMLP4DIR cd .. echo "Installing ocamlbuild..." @@ -580,19 +522,17 @@ installbin ocamlbuild/ocamlbuild.native$EXE $BINDIR/ocamlbuild.native$EXE installbestbin ocamlbuild/ocamlbuild.native$EXE ocamlbuild/ocamlbuild.byte$EXE $BINDIR/ocamlbuild$EXE installlibdir \ - ocamlbuild/ocamlbuildlib.$A ocamlbuild/ocamlbuildlib.p.$A \ + ocamlbuild/ocamlbuildlib.$A \ $LIBDIR/ocamlbuild installdir \ - ocamlbuild/ocamlbuildlib.cmxa ocamlbuild/ocamlbuildlib.p.cmxa \ + ocamlbuild/ocamlbuildlib.cmxa \ ocamlbuild/ocamlbuildlib.cma \ ocamlbuild/ocamlbuild_plugin.cmi \ ocamlbuild/ocamlbuild_pack.cmi \ ocamlbuild/ocamlbuild.cmo \ ocamlbuild/ocamlbuild.cmx \ ocamlbuild/ocamlbuild.$O \ - ocamlbuild/ocamlbuild.p.cmx \ - ocamlbuild/ocamlbuild.p.$O \ $LIBDIR/ocamlbuild installdir \ diff --git a/build/mkconfig.sh b/build/mkconfig.sh index 7d786d8a..00730de9 100755 --- a/build/mkconfig.sh +++ b/build/mkconfig.sh @@ -1,8 +1,11 @@ #!/bin/sh +# $Id: mkconfig.sh,v 1.1.4.4 2007/05/14 12:01:32 xleroy Exp $ cd `dirname $0`/.. -sed -e 's/\$(\([^)]*\))/${\1}/g' \ - -e 's/^\([^=]*\)=\([^"]*\)$/\1="\2"/' \ - -e 's/^\(.*\$([0-9]).*\)$/# \1/' \ +sed -e 's/^\(.*\$([0-9]).*\)$/# \1/' \ + -e 's/\$(\([^)]*\))/${\1}/g' \ + -e 's/^\([^#=]*\)=\([^"]*\)$/if [ "x$\1" = "x" ]; then \1="\2"; fi/' \ config/Makefile > config/config.sh + + diff --git a/build/mkmyocamlbuild_config.sh b/build/mkmyocamlbuild_config.sh index 0b8137f2..1156c83c 100755 --- a/build/mkmyocamlbuild_config.sh +++ b/build/mkmyocamlbuild_config.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: mkmyocamlbuild_config.sh,v 1.5.2.1 2007/03/12 11:58:48 pouillar Exp $ cd `dirname $0`/.. diff --git a/build/mkruntimedef.sh b/build/mkruntimedef.sh index 0324d786..3023dcbf 100755 --- a/build/mkruntimedef.sh +++ b/build/mkruntimedef.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: mkruntimedef.sh,v 1.1.2.2 2007/03/12 11:58:48 pouillar Exp $ echo 'let builtin_exceptions = [|'; \ sed -n -e 's|.*/\* \("[A-Za-z_]*"\) \*/$| \1;|p' byterun/fail.h | \ sed -e '$s/;$//'; \ diff --git a/build/myocamlbuild.sh b/build/myocamlbuild.sh index 2721d1b2..d8ba7728 100755 --- a/build/myocamlbuild.sh +++ b/build/myocamlbuild.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: myocamlbuild.sh,v 1.2.2.4 2007/03/12 11:58:48 pouillar Exp $ cd `dirname $0`/.. set -xe if [ ! -x _build/ocamlbuild/ocamlbuildlight.byte ]; then diff --git a/build/ocamlbuild-byte-only.sh b/build/ocamlbuild-byte-only.sh index a389342b..3e7a5bf9 100755 --- a/build/ocamlbuild-byte-only.sh +++ b/build/ocamlbuild-byte-only.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: ocamlbuild-byte-only.sh,v 1.2.4.3 2007/03/12 11:58:48 pouillar Exp $ set -e OCAMLBUILD_PARTIAL="true" export OCAMLBUILD_PARTIAL diff --git a/build/ocamlbuild-native-only.sh b/build/ocamlbuild-native-only.sh index 0a170958..17c0509f 100755 --- a/build/ocamlbuild-native-only.sh +++ b/build/ocamlbuild-native-only.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: ocamlbuild-native-only.sh,v 1.2.4.4 2007/03/12 11:58:48 pouillar Exp $ set -e OCAMLBUILD_PARTIAL="true" export OCAMLBUILD_PARTIAL diff --git a/build/otherlibs-targets.sh b/build/otherlibs-targets.sh index b71eb4b0..c2dc801a 100644 --- a/build/otherlibs-targets.sh +++ b/build/otherlibs-targets.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: otherlibs-targets.sh,v 1.2.4.1 2007/03/12 11:58:48 pouillar Exp $ OTHERLIBS_BYTE="" OTHERLIBS_NATIVE="" OTHERLIBS_UNIX_NATIVE="" diff --git a/build/partial-boot.sh b/build/partial-boot.sh index 9600b523..639284a2 100755 --- a/build/partial-boot.sh +++ b/build/partial-boot.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: partial-boot.sh,v 1.2.4.8 2007/03/12 11:58:48 pouillar Exp $ set -ex cd `dirname $0`/.. OCAMLBUILD_PARTIAL="true" diff --git a/build/partial-install.sh b/build/partial-install.sh index acd87281..03eddbb2 100755 --- a/build/partial-install.sh +++ b/build/partial-install.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: partial-install.sh,v 1.5.2.9 2007/04/05 08:12:39 pouillar Exp $ ###################################### ######### Copied from build/install.sh @@ -13,9 +14,11 @@ cd `dirname $0`/.. not_installed=$PWD/_build/not_installed rm -f "$not_installed" +touch "$not_installed" wontinstall() { echo "$1" >> "$not_installed" + echo " don't install $1" } installbin() { @@ -49,7 +52,9 @@ installlib() { dest="$2/`basename $1`" echo " install library $dest" cp -f "$1" "$2" - ranlib "$dest" + if [ "$RANLIB" != "" ]; then + "$RANLIB" "$dest" + fi else wontinstall "$1" fi @@ -121,43 +126,39 @@ for dir in Camlp4Parsers Camlp4Printers Camlp4Filters Camlp4Top; do installdir \ $dir/*.cm* \ $dir/*.$O \ - $dir/*.p.$O \ $CAMLP4DIR/$dir done installdir \ camlp4lib.cma camlp4lib.cmxa Camlp4.cmi \ - camlp4o.cma \ - camlp4of.cma \ - camlp4oof.cma \ - camlp4orf.cma \ - camlp4r.cma \ - camlp4rf.cma \ - Camlp4Bin.cm[iox] Camlp4Bin.$O Camlp4Bin.p.$O Camlp4Top.cm[io] \ + camlp4fulllib.cma camlp4fulllib.cmxa \ + camlp4o.cma camlp4of.cma camlp4oof.cma \ + camlp4orf.cma camlp4r.cma camlp4rf.cma \ + Camlp4Bin.cm[iox] Camlp4Bin.$O Camlp4Top.cm[io] \ + Camlp4_config.cmi camlp4prof.cm[iox] camlp4prof.$O \ $CAMLP4DIR -installlibdir camlp4lib.$A camlp4lib.p.$A $CAMLP4DIR +installlibdir camlp4lib.$A camlp4fulllib.$A $CAMLP4DIR cd .. echo "Installing ocamlbuild..." - -installbin ocamlbuild/ocamlbuild.byte$EXE $BINDIR/ocamlbuild.byte$EXE -installbin ocamlbuild/ocamlbuild.native$EXE $BINDIR/ocamlbuild.native$EXE -installbestbin ocamlbuild/ocamlbuild.native$EXE ocamlbuild/ocamlbuild.byte$EXE $BINDIR/ocamlbuild$EXE +cd ocamlbuild +installbin ocamlbuild.byte$EXE $BINDIR/ocamlbuild.byte$EXE +installbin ocamlbuild.native$EXE $BINDIR/ocamlbuild.native$EXE +installbestbin ocamlbuild.native$EXE ocamlbuild.byte$EXE $BINDIR/ocamlbuild$EXE installlibdir \ - ocamlbuild/ocamlbuildlib.$A ocamlbuild/ocamlbuildlib.p.$A \ + ocamlbuildlib.$A \ $LIBDIR/ocamlbuild installdir \ - ocamlbuild/ocamlbuildlib.cmxa ocamlbuild/ocamlbuildlibp.cmxa\ - ocamlbuild/ocamlbuildlib.cma \ - ocamlbuild/ocamlbuild_plugin.cmi \ - ocamlbuild/ocamlbuild_pack.cmi \ - ocamlbuild/ocamlbuild.cmo \ - ocamlbuild/ocamlbuild.cmx \ - ocamlbuild/ocamlbuild.$O \ - ocamlbuild/ocamlbuild.p.cmx \ - ocamlbuild/ocamlbuild.p.$O \ + ocamlbuildlib.cmxa \ + ocamlbuildlib.cma \ + ocamlbuild_plugin.cmi \ + ocamlbuild_pack.cmi \ + ocamlbuild.cmo \ + ocamlbuild.cmx \ + ocamlbuild.$O \ $LIBDIR/ocamlbuild +cd .. installdir \ ../ocamlbuild/man/ocamlbuild.1 \ diff --git a/build/targets.sh b/build/targets.sh index a6ac528a..1ef9f33a 100644 --- a/build/targets.sh +++ b/build/targets.sh @@ -1,3 +1,4 @@ +# $Id: targets.sh,v 1.2.4.6 2007/03/12 11:58:48 pouillar Exp $ . config/config.sh . build/otherlibs-targets.sh . build/camlp4-targets.sh diff --git a/build/world.all.sh b/build/world.all.sh index b84bf8a1..632e06b0 100755 --- a/build/world.all.sh +++ b/build/world.all.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: world.all.sh,v 1.2.4.1 2007/03/12 11:58:48 pouillar Exp $ set -e cd `dirname $0`/.. . build/targets.sh diff --git a/build/world.byte.sh b/build/world.byte.sh index 56b3de5f..61258e02 100755 --- a/build/world.byte.sh +++ b/build/world.byte.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: world.byte.sh,v 1.2.4.1 2007/03/12 11:58:48 pouillar Exp $ set -e cd `dirname $0`/.. . build/targets.sh diff --git a/build/world.native.sh b/build/world.native.sh index 88f74033..31e2a0a7 100755 --- a/build/world.native.sh +++ b/build/world.native.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: world.native.sh,v 1.2.4.1 2007/03/12 11:58:48 pouillar Exp $ set -e cd `dirname $0`/.. . build/targets.sh diff --git a/build/world.sh b/build/world.sh index bb0c813c..4f959ec2 100755 --- a/build/world.sh +++ b/build/world.sh @@ -1,4 +1,5 @@ #!/bin/sh +# $Id: world.sh,v 1.2.4.1 2007/03/12 11:58:48 pouillar Exp $ cd `dirname $0` set -ex ./mkconfig.sh diff --git a/byterun/config.h b/byterun/config.h index a2a5087b..53801d9c 100644 --- a/byterun/config.h +++ b/byterun/config.h @@ -11,7 +11,7 @@ /* */ /***********************************************************************/ -/* $Id: config.h,v 1.40 2006/09/19 12:40:29 xleroy Exp $ */ +/* $Id: config.h,v 1.40.6.1 2007/05/10 09:57:29 xleroy Exp $ */ #ifndef CAML_CONFIG_H #define CAML_CONFIG_H @@ -85,7 +85,7 @@ typedef struct { uint32 l, h; } uint64, int64; float is at byte offset [a], the next lsb at [b], ..., and the most significant byte at [h]. */ -#if defined(__arm__) +#if defined(__arm__) && !defined(__ARM_EABI__) #define ARCH_FLOAT_ENDIANNESS 0x45670123 #elif defined(ARCH_BIG_ENDIAN) #define ARCH_FLOAT_ENDIANNESS 0x76543210 diff --git a/byterun/globroots.c b/byterun/globroots.c index e7a88b3c..d2f0666b 100644 --- a/byterun/globroots.c +++ b/byterun/globroots.c @@ -11,7 +11,7 @@ /* */ /***********************************************************************/ -/* $Id: globroots.c,v 1.8 2005/09/22 14:21:50 xleroy Exp $ */ +/* $Id: globroots.c,v 1.8.10.1 2007/03/26 18:01:20 doligez Exp $ */ /* Registration of global memory roots */ @@ -28,7 +28,7 @@ 1 with probability 3/16, 2 with probability 3/64, etc. We use a simple linear congruential PRNG (see Knuth vol 2) instead of random(), because we need exactly 32 bits of pseudo-random data - (i.e. 2 * (MAX_LEVEL + 1)). Moreover, the congruential PRNG + (i.e. 2 * (NUM_LEVELS - 1)). Moreover, the congruential PRNG is faster and guaranteed to be deterministic (to reproduce bugs). */ static uint32 random_seed = 0; @@ -45,7 +45,7 @@ static int random_level(void) "less random" than the most significant bits with a modulus of 2^m, so consume most significant bits first */ while ((r & 0xC0000000U) == 0xC0000000U) { level++; r = r << 2; } - Assert(level <= MAX_LEVEL); + Assert(level < NUM_LEVELS); return level; } @@ -57,10 +57,10 @@ struct global_root_list caml_global_roots = { NULL, { NULL, }, 0 }; CAMLexport void caml_register_global_root(value *r) { - struct global_root * update[MAX_LEVEL]; + struct global_root * update[NUM_LEVELS]; struct global_root * e, * f; int i, new_level; - + Assert (((intnat) r & 3) == 0); /* compact.c demands this (for now) */ /* Init "cursor" to list head */ @@ -97,7 +97,7 @@ CAMLexport void caml_register_global_root(value *r) CAMLexport void caml_remove_global_root(value *r) { - struct global_root * update[MAX_LEVEL]; + struct global_root * update[NUM_LEVELS]; struct global_root * e, * f; int i; diff --git a/byterun/globroots.h b/byterun/globroots.h index b9b12d8e..f7e6cc18 100644 --- a/byterun/globroots.h +++ b/byterun/globroots.h @@ -11,7 +11,7 @@ /* */ /***********************************************************************/ -/* $Id: globroots.h,v 1.3 2003/12/15 18:10:47 doligez Exp $ */ +/* $Id: globroots.h,v 1.3.20.1 2007/03/26 18:01:20 doligez Exp $ */ /* Registration of global memory roots */ @@ -27,11 +27,11 @@ struct global_root { struct global_root * forward[1]; /* variable-length array */ }; -#define MAX_LEVEL 15 +#define NUM_LEVELS 17 struct global_root_list { value * root; /* dummy value for layout compatibility */ - struct global_root * forward[MAX_LEVEL]; /* forward chaining */ + struct global_root * forward[NUM_LEVELS]; /* forward chaining */ int level; /* max used level */ }; diff --git a/camlp4/Camlp4/Camlp4Ast.partial.ml b/camlp4/Camlp4/Camlp4Ast.partial.ml index d9356c8e..7a902376 100644 --- a/camlp4/Camlp4/Camlp4Ast.partial.ml +++ b/camlp4/Camlp4/Camlp4Ast.partial.ml @@ -84,7 +84,7 @@ | PaOrp of Loc.t and patt and patt (* p | p *) | PaRng of Loc.t and patt and patt (* p .. p *) | PaRec of Loc.t and patt (* { p } *) - | PaEq of Loc.t and patt and patt (* p = p *) + | PaEq of Loc.t and ident and patt (* i = p *) | PaStr of Loc.t and string (* s *) | PaTup of Loc.t and patt (* ( p ) *) | PaTyc of Loc.t and patt and ctyp (* (p : t) *) @@ -128,9 +128,9 @@ (* ?s or ?s:e *) | ExOlb of Loc.t and string and expr (* {< b >} *) - | ExOvr of Loc.t and binding + | ExOvr of Loc.t and rec_binding (* { b } or { (e) with b } *) - | ExRec of Loc.t and binding and expr + | ExRec of Loc.t and rec_binding and expr (* do { e } *) | ExSeq of Loc.t and expr (* e#s *) @@ -152,8 +152,9 @@ (* while e do { e } *) | ExWhi of Loc.t and expr and expr ] and module_type = + [ MtNil of Loc.t (* i *) (* A.B.C *) - [ MtId of Loc.t and ident + | MtId of Loc.t and ident (* functor (s : mt) -> mt *) | MtFun of Loc.t and string and module_type and module_type (* 's *) @@ -205,11 +206,16 @@ [ BiNil of Loc.t (* b and b *) (* let a = 42 and c = 43 *) | BiAnd of Loc.t and binding and binding - (* b ; b *) - | BiSem of Loc.t and binding and binding (* p = e *) (* let patt = expr *) | BiEq of Loc.t and patt and expr | BiAnt of Loc.t and string (* $s$ *) ] + and rec_binding = + [ RbNil of Loc.t + (* b ; b *) + | RbSem of Loc.t and rec_binding and rec_binding + (* i = e *) + | RbEq of Loc.t and ident and expr + | RbAnt of Loc.t and string (* $s$ *) ] and module_binding = [ MbNil of Loc.t (* mb and mb *) (* module rec (s : mt) = me and (s : mt) = me *) @@ -227,8 +233,9 @@ | McArr of Loc.t and patt and expr and expr | McAnt of Loc.t and string (* $s$ *) ] and module_expr = + [ MeNil of Loc.t (* i *) - [ MeId of Loc.t and ident + | MeId of Loc.t and ident (* me me *) | MeApp of Loc.t and module_expr and module_expr (* functor (s : mt) -> me *) diff --git a/camlp4/Camlp4/ErrorHandler.ml b/camlp4/Camlp4/ErrorHandler.ml index 7c68bd4f..231efed9 100644 --- a/camlp4/Camlp4/ErrorHandler.ml +++ b/camlp4/Camlp4/ErrorHandler.ml @@ -113,10 +113,10 @@ value default_handler ppf x = do { (Obj.obj (Obj.field (Obj.field x 0) 0) : string); if Obj.size x > 1 then do { pp_print_string ppf " ("; - for i = 1 to Obj.size x - 1 do { + for i = 1 to Obj.size x - 1 do if i > 1 then pp_print_string ppf ", " else (); ObjTools.print ppf (Obj.field x i); - }; + done; pp_print_char ppf ')' } else (); diff --git a/camlp4/Camlp4/OCamlInitSyntax.ml b/camlp4/Camlp4/OCamlInitSyntax.ml index b28c40e0..21862359 100644 --- a/camlp4/Camlp4/OCamlInitSyntax.ml +++ b/camlp4/Camlp4/OCamlInitSyntax.ml @@ -16,26 +16,30 @@ * - Nicolas Pouillard: initial version *) -module Make (Warning : Sig.Warning) - (Ast : Sig.Camlp4Ast with module Loc = Warning.Loc) - (Gram : Sig.Grammar.Static with module Loc = Warning.Loc +module Make (Ast : Sig.Camlp4Ast) + (Gram : Sig.Grammar.Static with module Loc = Ast.Loc with type Token.t = Sig.camlp4_token) (Quotation : Sig.Quotation with module Ast = Sig.Camlp4AstToAst Ast) -: Sig.Camlp4Syntax with module Loc = Ast.Loc - and module Ast = Ast - and module Token = Gram.Token - and module Gram = Gram - and module AntiquotSyntax.Ast = Sig.Camlp4AstToAst Ast - and module Quotation = Quotation +: Sig.Camlp4Syntax with module Loc = Ast.Loc + and module Ast = Ast + and module Token = Gram.Token + and module Gram = Gram + and module AntiquotSyntax.Ast = Sig.Camlp4AstToAst Ast + and module Quotation = Quotation = struct - module Warning = Warning; module Loc = Ast.Loc; module Ast = Ast; module Gram = Gram; module Token = Gram.Token; open Sig; + (* Warnings *) + type warning = Loc.t -> string -> unit; + value default_warning loc txt = Format.eprintf " %a: %s@." Loc.print loc txt; + value current_warning = ref default_warning; + value print_warning loc txt = current_warning.val loc txt; + value a_CHAR = Gram.Entry.mk "a_CHAR"; value a_FLOAT = Gram.Entry.mk "a_FLOAT"; value a_INT = Gram.Entry.mk "a_INT"; @@ -43,7 +47,6 @@ module Make (Warning : Sig.Warning) value a_INT64 = Gram.Entry.mk "a_INT64"; value a_LABEL = Gram.Entry.mk "a_LABEL"; value a_LIDENT = Gram.Entry.mk "a_LIDENT"; - value a_LIDENT_or_operator = Gram.Entry.mk "a_LIDENT_or_operator"; value a_NATIVEINT = Gram.Entry.mk "a_NATIVEINT"; value a_OPTLABEL = Gram.Entry.mk "a_OPTLABEL"; value a_STRING = Gram.Entry.mk "a_STRING"; @@ -90,7 +93,6 @@ module Make (Warning : Sig.Warning) value eq_expr = Gram.Entry.mk "eq_expr"; value expr = Gram.Entry.mk "expr"; value expr_eoi = Gram.Entry.mk "expr_eoi"; - value field = Gram.Entry.mk "field"; value field_expr = Gram.Entry.mk "field_expr"; value fun_binding = Gram.Entry.mk "fun_binding"; value fun_def = Gram.Entry.mk "fun_def"; @@ -141,16 +143,15 @@ module Make (Warning : Sig.Warning) value patt_eoi = Gram.Entry.mk "patt_eoi"; value patt_tcon = Gram.Entry.mk "patt_tcon"; value phrase = Gram.Entry.mk "phrase"; - value pipe_ctyp = Gram.Entry.mk "pipe_ctyp"; value poly_type = Gram.Entry.mk "poly_type"; value row_field = Gram.Entry.mk "row_field"; - value sem_ctyp = Gram.Entry.mk "sem_ctyp"; value sem_expr = Gram.Entry.mk "sem_expr"; value sem_expr_for_list = Gram.Entry.mk "sem_expr_for_list"; value sem_patt = Gram.Entry.mk "sem_patt"; value sem_patt_for_list = Gram.Entry.mk "sem_patt_for_list"; value semi = Gram.Entry.mk "semi"; value sequence = Gram.Entry.mk "sequence"; + value do_sequence = Gram.Entry.mk "do_sequence"; value sig_item = Gram.Entry.mk "sig_item"; value sig_items = Gram.Entry.mk "sig_items"; value star_ctyp = Gram.Entry.mk "star_ctyp"; @@ -184,10 +185,16 @@ module Make (Warning : Sig.Warning) value class_expr_quot = Gram.Entry.mk "quotation of class expression"; value with_constr_quot = Gram.Entry.mk "quotation of with constraint"; value binding_quot = Gram.Entry.mk "quotation of binding"; + value rec_binding_quot = Gram.Entry.mk "quotation of record binding"; value match_case_quot = Gram.Entry.mk "quotation of match_case (try/match/function case)"; value module_binding_quot = Gram.Entry.mk "quotation of module rec binding"; value ident_quot = Gram.Entry.mk "quotation of identifier"; - + value prefixop = Gram.Entry.mk "prefix operator (start with '!', '?', '~')"; + value infixop0 = Gram.Entry.mk "infix operator (level 0) (comparison operators, and some others)"; + value infixop1 = Gram.Entry.mk "infix operator (level 1) (start with '^', '@')"; + value infixop2 = Gram.Entry.mk "infix operator (level 2) (start with '+', '-')"; + value infixop3 = Gram.Entry.mk "infix operator (level 3) (start with '*', '/', '%')"; + value infixop4 = Gram.Entry.mk "infix operator (level 4) (start with \"**\") (right assoc)"; EXTEND Gram top_phrase: @@ -215,31 +222,30 @@ module Make (Warning : Sig.Warning) module Quotation = Quotation; - module Parser = struct - module Ast = Ast; - value wrap directive_handler pa init_loc cs = - let rec loop loc = - let (pl, stopped_at_directive) = pa loc cs in - match stopped_at_directive with - [ Some new_loc -> - let pl = - match List.rev pl with - [ [] -> assert False - | [x :: xs] -> - match directive_handler x with - [ None -> xs - | Some x -> [x :: xs] ] ] - in (List.rev pl) @ (loop new_loc) - | None -> pl ] - in loop init_loc; - value parse_implem ?(directive_handler = fun _ -> None) _loc cs = - let l = wrap directive_handler (Gram.parse implem) _loc cs in - <:str_item< $list:l$ >>; - value parse_interf ?(directive_handler = fun _ -> None) _loc cs = - let l = wrap directive_handler (Gram.parse interf) _loc cs in - <:sig_item< $list:l$ >>; - end; + value wrap directive_handler pa init_loc cs = + let rec loop loc = + let (pl, stopped_at_directive) = pa loc cs in + match stopped_at_directive with + [ Some new_loc -> + let pl = + match List.rev pl with + [ [] -> assert False + | [x :: xs] -> + match directive_handler x with + [ None -> xs + | Some x -> [x :: xs] ] ] + in (List.rev pl) @ (loop new_loc) + | None -> pl ] + in loop init_loc; + + value parse_implem ?(directive_handler = fun _ -> None) _loc cs = + let l = wrap directive_handler (Gram.parse implem) _loc cs in + <:str_item< $list:l$ >>; - module Printer = Struct.EmptyPrinter.Make Ast; + value parse_interf ?(directive_handler = fun _ -> None) _loc cs = + let l = wrap directive_handler (Gram.parse interf) _loc cs in + <:sig_item< $list:l$ >>; + value print_interf ?input_file:(_) ?output_file:(_) _ = failwith "No interface printer"; + value print_implem ?input_file:(_) ?output_file:(_) _ = failwith "No implementation printer"; end; diff --git a/camlp4/Camlp4/PreCast.ml b/camlp4/Camlp4/PreCast.ml index ebb52e14..69f494e2 100644 --- a/camlp4/Camlp4/PreCast.ml +++ b/camlp4/Camlp4/PreCast.ml @@ -19,7 +19,7 @@ module Id = struct value name = "Camlp4.PreCast"; - value version = "$Id: PreCast.ml,v 1.4 2007/02/07 10:09:21 ertai Exp $"; + value version = "$Id: PreCast.ml,v 1.4.4.1 2007/03/30 15:50:12 pouillar Exp $"; end; type camlp4_token = Sig.camlp4_token == @@ -46,14 +46,13 @@ type camlp4_token = Sig.camlp4_token == | EOI ]; module Loc = Struct.Loc; -module Warning = Struct.Warning.Make Loc; module Ast = Struct.Camlp4Ast.Make Loc; module Token = Struct.Token.Make Loc; module Lexer = Struct.Lexer.Make Token; module Gram = Struct.Grammar.Static.Make Lexer; module DynLoader = Struct.DynLoader; module Quotation = Struct.Quotation.Make Ast; -module MakeSyntax (U : sig end) = OCamlInitSyntax.Make Warning Ast Gram Quotation; +module MakeSyntax (U : sig end) = OCamlInitSyntax.Make Ast Gram Quotation; module Syntax = MakeSyntax (struct end); module AstFilters = Struct.AstFilters.Make Ast; module MakeGram = Struct.Grammar.Static.Make; diff --git a/camlp4/Camlp4/PreCast.mli b/camlp4/Camlp4/PreCast.mli index fd64e6d1..1c6eb2e9 100644 --- a/camlp4/Camlp4/PreCast.mli +++ b/camlp4/Camlp4/PreCast.mli @@ -42,7 +42,6 @@ type camlp4_token = Sig.camlp4_token == module Id : Sig.Id; module Loc : Sig.Loc; -module Warning : Sig.Warning with module Loc = Loc; module Ast : Sig.Camlp4Ast with module Loc = Loc; module Token : Sig.Token with module Loc = Loc @@ -58,19 +57,17 @@ module DynLoader : Sig.DynLoader; module AstFilters : Sig.AstFilters with module Ast = Ast; module Syntax : Sig.Camlp4Syntax with module Loc = Loc - and module Warning = Warning and module Token = Token and module Ast = Ast and module Gram = Gram and module Quotation = Quotation; module Printers : sig - module OCaml : Sig.Printer with module Ast = Sig.Camlp4AstToAst Ast; - module OCamlr : Sig.Printer with module Ast = Sig.Camlp4AstToAst Ast; - (* module OCamlrr : Sig.Printer with module Ast = Sig.Camlp4AstToAst Ast; *) - module DumpOCamlAst : Sig.Printer with module Ast = Sig.Camlp4AstToAst Ast; - module DumpCamlp4Ast : Sig.Printer with module Ast = Sig.Camlp4AstToAst Ast; - module Null : Sig.Printer with module Ast = Sig.Camlp4AstToAst Ast; + module OCaml : (Sig.Printer Ast).S; + module OCamlr : (Sig.Printer Ast).S; + module DumpOCamlAst : (Sig.Printer Ast).S; + module DumpCamlp4Ast : (Sig.Printer Ast).S; + module Null : (Sig.Printer Ast).S; end; module MakeGram (Lexer : Sig.Lexer with module Loc = Loc) diff --git a/camlp4/Camlp4/Printers/DumpCamlp4Ast.ml b/camlp4/Camlp4/Printers/DumpCamlp4Ast.ml index 8fcd6ab0..629f8e05 100644 --- a/camlp4/Camlp4/Printers/DumpCamlp4Ast.ml +++ b/camlp4/Camlp4/Printers/DumpCamlp4Ast.ml @@ -19,11 +19,11 @@ module Id = struct value name = "Camlp4Printers.DumpCamlp4Ast"; - value version = "$Id: DumpCamlp4Ast.ml,v 1.5 2007/02/07 10:09:21 ertai Exp $"; + value version = "$Id: DumpCamlp4Ast.ml,v 1.5.4.1 2007/03/30 15:50:12 pouillar Exp $"; end; module Make (Syntax : Sig.Syntax) -: Sig.Printer with module Ast = Syntax.Ast +: (Sig.Printer Syntax.Ast).S = struct include Syntax; diff --git a/camlp4/Camlp4/Printers/DumpCamlp4Ast.mli b/camlp4/Camlp4/Printers/DumpCamlp4Ast.mli index 0af1fa1a..d35642ab 100644 --- a/camlp4/Camlp4/Printers/DumpCamlp4Ast.mli +++ b/camlp4/Camlp4/Printers/DumpCamlp4Ast.mli @@ -18,5 +18,4 @@ module Id : Sig.Id; -module Make (Syntax : Sig.Syntax) : Sig.Printer - with module Ast = Syntax.Ast; +module Make (Syntax : Sig.Syntax) : (Sig.Printer Syntax.Ast).S; diff --git a/camlp4/Camlp4/Printers/DumpOCamlAst.ml b/camlp4/Camlp4/Printers/DumpOCamlAst.ml index 52ec2d76..e32cb77e 100644 --- a/camlp4/Camlp4/Printers/DumpOCamlAst.ml +++ b/camlp4/Camlp4/Printers/DumpOCamlAst.ml @@ -19,11 +19,11 @@ module Id : Sig.Id = struct value name = "Camlp4Printers.DumpOCamlAst"; - value version = "$Id: DumpOCamlAst.ml,v 1.5 2007/02/07 10:09:21 ertai Exp $"; + value version = "$Id: DumpOCamlAst.ml,v 1.5.4.1 2007/03/30 15:50:12 pouillar Exp $"; end; module Make (Syntax : Sig.Camlp4Syntax) -: Sig.Printer with module Ast = Syntax.Ast +: (Sig.Printer Syntax.Ast).S = struct include Syntax; module Ast2pt = Struct.Camlp4Ast2OCamlAst.Make Ast; diff --git a/camlp4/Camlp4/Printers/DumpOCamlAst.mli b/camlp4/Camlp4/Printers/DumpOCamlAst.mli index b97898b1..3233557d 100644 --- a/camlp4/Camlp4/Printers/DumpOCamlAst.mli +++ b/camlp4/Camlp4/Printers/DumpOCamlAst.mli @@ -18,5 +18,4 @@ module Id : Sig.Id; -module Make (Syntax : Sig.Camlp4Syntax) : Sig.Printer - with module Ast = Syntax.Ast; +module Make (Syntax : Sig.Camlp4Syntax) : (Sig.Printer Syntax.Ast).S; diff --git a/camlp4/Camlp4/Printers/Null.mli b/camlp4/Camlp4/Printers/Null.mli index 562c2c02..d7715117 100644 --- a/camlp4/Camlp4/Printers/Null.mli +++ b/camlp4/Camlp4/Printers/Null.mli @@ -19,4 +19,4 @@ module Id : Sig.Id; -module Make (Syntax : Sig.Syntax) : Sig.Printer with module Ast = Syntax.Ast; +module Make (Syntax : Sig.Syntax) : (Sig.Printer Syntax.Ast).S; diff --git a/camlp4/Camlp4/Printers/OCaml.ml b/camlp4/Camlp4/Printers/OCaml.ml index 08507539..6b372129 100644 --- a/camlp4/Camlp4/Printers/OCaml.ml +++ b/camlp4/Camlp4/Printers/OCaml.ml @@ -20,7 +20,7 @@ open Format; module Id = struct value name = "Camlp4.Printers.OCaml"; - value version = "$Id: OCaml.ml,v 1.21 2007/02/26 16:32:46 ertai Exp $"; + value version = "$Id: OCaml.ml,v 1.21.2.9 2007/05/12 22:44:55 pouillar Exp $"; end; module Make (Syntax : Sig.Camlp4Syntax) = struct @@ -66,13 +66,12 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct module StringSet = Set.Make String; value is_infix = - let infixes = + let first_chars = ['='; '<'; '>'; '|'; '&'; '$'; '@'; '^'; '+'; '-'; '*'; '/'; '%'; '\\'] + and infixes = List.fold_right StringSet.add -(* "**."; "=."; "<>."; "<."; ">."; "<=."; ">=."; "~-"; "~-." *) - ["=="; "!="; "+"; "-"; "+."; "-."; "*"; "*."; "/"; "/."; "**"; - "="; "<>"; "<"; ">"; "<="; ">="; "^"; "^^"; "@"; "&&"; "||"; - "asr"; "land"; "lor"; "lsl"; "lsr"; "lxor"; "mod"; "or" ] StringSet.empty - in fun s -> StringSet.mem s infixes; + ["asr"; "land"; "lor"; "lsl"; "lsr"; "lxor"; "mod"; "or"] StringSet.empty + in fun s -> (StringSet.mem s infixes + || (s <> "" && List.mem s.[0] first_chars)); value is_keyword = let keywords = @@ -251,7 +250,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct method match_case f = fun [ <:match_case@_loc<>> -> - pp f "@[<2>_@ ->@ %a@]" o#raise_match_failure _loc + pp f "@[<2>@ _ ->@ %a@]" o#raise_match_failure _loc | a -> o#match_case_aux f a ]; method match_case_aux f = @@ -283,20 +282,18 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct (list o#simple_patt "@ ") [p::pl] o#ctyp t o#expr e | _ -> pp f "%a @[<0>%a=@]@ %a" o#simple_patt p (list' o#simple_patt "" "@ ") pl o#expr e ] - | <:binding< $_$ ; $_$ >> -> assert False | <:binding< $anti:s$ >> -> o#anti f s ]; method record_binding f bi = - let () = o#node f bi Ast.loc_of_binding in + let () = o#node f bi Ast.loc_of_rec_binding in match bi with - [ <:binding<>> -> () - | <:binding< $p$ = $e$ >> -> - pp f "@ @[<2>%a =@ %a@];" o#simple_patt p o#expr e - | <:binding< $b1$ ; $b2$ >> -> + [ <:rec_binding<>> -> () + | <:rec_binding< $i$ = $e$ >> -> + pp f "@ @[<2>%a =@ %a@];" o#var_ident i o#expr e + | <:rec_binding< $b1$ ; $b2$ >> -> do { o#under_semi#record_binding f b1; o#under_semi#record_binding f b2 } - | <:binding< $_$ and $_$ >> -> assert False - | <:binding< $anti:s$ >> -> o#anti f s ]; + | <:rec_binding< $anti:s$ >> -> o#anti f s ]; method object_dup f = list (fun f (s, e) -> pp f "@[<2>%a =@ %a@]" o#var s o#expr e) ";@ " f; @@ -421,18 +418,18 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct pp f "@[<2>-.@,%a@]" o#expr x | <:expr< [$_$ :: $_$] >> -> o#expr_list_cons False f e | <:expr@_loc< $lid:n$ $x$ $y$ >> when is_infix n -> - pp f "@[<2>%a@ %s@ %a@]" o#dot_expr x n o#dot_expr y + pp f "@[<2>%a@ %s@ %a@]" o#apply_expr x n o#apply_expr y | <:expr< $x$ $y$ >> -> let (a, al) = get_expr_args x [y] in if (not curry_constr) && Ast.is_expr_constructor a then match al with [ [ <:expr< ($tup:_$) >> ] -> - pp f "@[<2>%a@ (%a)@]" o#dot_expr x o#expr y - | [_] -> pp f "@[<2>%a@ %a@]" o#dot_expr x o#dot_expr y + pp f "@[<2>%a@ (%a)@]" o#apply_expr x o#expr y + | [_] -> pp f "@[<2>%a@ %a@]" o#apply_expr x o#apply_expr y | al -> - pp f "@[<2>%a@ (%a)@]" o#dot_expr a + pp f "@[<2>%a@ (%a)@]" o#apply_expr a (list o#under_pipe#expr ",@ ") al ] - else pp f "@[<2>%a@]" (list o#dot_expr "@ ") [a::al] + else pp f "@[<2>%a@]" (list o#apply_expr "@ ") [a::al] | <:expr< $e1$.val := $e2$ >> -> pp f "@[<2>%a :=@ %a@]" o#expr e1 o#expr e2 | <:expr< $e1$ := $e2$ >> -> @@ -462,9 +459,15 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct pp f "@[<0>@[try@ %a@]@ @[<0>with%a@]@]" o#expr e o#match_case a | <:expr< assert False >> -> pp f "@[<2>assert@ false@]" - | <:expr< assert $e$ >> -> pp f "@[<2>assert@ %a@]" o#expr e + | <:expr< assert $e$ >> -> pp f "@[<2>assert@ %a@]" o#dot_expr e | <:expr< let module $s$ = $me$ in $e$ >> -> pp f "@[<2>let module %a =@ %a@]@ @[<2>in@ %a@]" o#var s o#module_expr me o#expr e + | e -> o#apply_expr f e ]; + + method apply_expr f e = + let () = o#node f e Ast.loc_of_expr in + match e with + [ <:expr< new $i$ >> -> pp f "@[<2>new@ %a@]" o#ident i | e -> o#dot_expr f e ]; method dot_expr f e = @@ -508,9 +511,9 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct | <:expr< $chr:s$ >> -> pp f "'%s'" (ocaml_char s) | <:expr< $id:i$ >> -> o#var_ident f i | <:expr< { $b$ } >> -> - pp f "@[@[{@ %a@]@ }@]" o#record_binding b + pp f "@[@[{%a@]@ }@]" o#record_binding b | <:expr< { ($e$) with $b$ } >> -> - pp f "@[@[{@ (%a)@ with@ %a@]@ }@]" + pp f "@[@[{@ (%a)@ with%a@]@ }@]" o#expr e o#record_binding b | <:expr< $str:s$ >> -> pp f "\"%s\"" s | <:expr< while $e1$ do { $e2$ } >> -> @@ -521,7 +524,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct | <:expr< ? $s$ : $e$ >> -> pp f "@[<2>?%s:@ %a@]" s o#dot_expr e | <:expr< ` $lid:s$ >> -> pp f "`%a" o#var s | <:expr< {< $b$ >} >> -> - pp f "@[@[{<@ %a@]@ >}@]" o#record_binding b + pp f "@[@[{<%a@]@ >}@]" o#record_binding b | <:expr< object $cst$ end >> -> pp f "@[@[object@ %a@]@ end@]" o#class_str_item cst | <:expr< object ($p$ : $t$) $cst$ end >> -> @@ -530,7 +533,6 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct | <:expr< object ($p$) $cst$ end >> -> pp f "@[@[object @[<2>(%a)@]@ %a@]@ end@]" o#patt p o#class_str_item cst - | <:expr< new $i$ >> -> pp f "@[<2>new@ %a@]" o#ident i | <:expr< $e1$, $e2$ >> -> pp f "%a,@ %a" o#simple_expr e1 o#simple_expr e2 | <:expr< $e1$; $e2$ >> -> @@ -543,9 +545,8 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct <:expr< if $_$ then $_$ else $_$ >> | <:expr< let $rec:_$ $_$ in $_$ >> | <:expr< let module $_$ = $_$ in $_$ >> | - (* Note: `new' is treated differently in pa_o and in pa_r, - and should not occur at this level *) - <:expr< assert $_$ >> | <:expr< assert False >> | <:expr< lazy $_$ >> -> + <:expr< assert $_$ >> | <:expr< assert False >> | + <:expr< lazy $_$ >> | <:expr< new $_$ >> -> pp f "(%a)" o#reset#expr e ]; method direction_flag f b = @@ -557,7 +558,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct method patt f p = let () = o#node f p Ast.loc_of_patt in match p with [ <:patt< ( $p1$ as $p2$ ) >> -> pp f "@[<1>(%a@ as@ %a)@]" o#patt p1 o#patt p2 - | <:patt< $p1$ = $p2$ >> -> pp f "@[<2>%a =@ %a@]" o#patt p1 o#patt p2 + | <:patt< $i$ = $p$ >> -> pp f "@[<2>%a =@ %a@]" o#var_ident i o#patt p | <:patt< $p1$; $p2$ >> -> pp f "%a;@ %a" o#patt p1 o#patt p2 | p -> o#patt1 f p ]; @@ -643,7 +644,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct | <:ctyp< ? $s$ : $t$ >> -> pp f "@[<2>?%s:@ %a@]" s o#simple_ctyp t | <:ctyp< < > >> -> pp f "< >" | <:ctyp< < .. > >> -> pp f "< .. >" - | <:ctyp< < $t$ .. > >> -> pp f "@[<0>@[<2><@ %a@ ..@]@ >@]" o#ctyp t + | <:ctyp< < $t$ .. > >> -> pp f "@[<0>@[<2><@ %a;@ ..@]@ >@]" o#ctyp t | <:ctyp< < $t$ > >> -> pp f "@[<0>@[<2><@ %a@]@ >@]" o#ctyp t | <:ctyp< '$s$ >> -> pp f "'%a" o#var s | <:ctyp< { $t$ } >> -> pp f "@[<2>{@ %a@]@ }" o#ctyp t @@ -684,9 +685,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct | Ast.TyDcl _ tn tp te cl -> do { pp f "@[<2>%a%a@]" o#type_params tp o#var tn; match te with - [ <:ctyp< '$s$ >> - when not (List.exists (fun [ <:ctyp< '$s'$ >> -> s = s' - | _ -> False ]) tp) -> () + [ <:ctyp<>> -> () | _ -> pp f " =@ %a" o#ctyp te ]; if cl <> [] then pp f "@ %a" (list o#constrain "@ ") cl else (); } @@ -738,6 +737,8 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct | <:sig_item< module $s$ : $mt$ >> -> pp f "@[<2>module %a :@ %a%s@]" o#var s o#module_type mt semisep + | <:sig_item< module type $s$ = $ <:module_type<>> $ >> -> + pp f "@[<2>module type %a%s@]" o#var s semisep | <:sig_item< module type $s$ = $mt$ >> -> pp f "@[<2>module type %a =@ %a%s@]" o#var s o#module_type mt semisep @@ -817,7 +818,8 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct method module_type f mt = let () = o#node f mt Ast.loc_of_module_type in match mt with - [ <:module_type< $id:i$ >> -> o#ident f i + [ <:module_type<>> -> assert False + | <:module_type< $id:i$ >> -> o#ident f i | <:module_type< $anti:s$ >> -> o#anti f s | <:module_type< functor ( $s$ : $mt1$ ) -> $mt2$ >> -> pp f "@[<2>functor@ @[<1>(%a :@ %a)@]@ ->@ %a@]" @@ -843,7 +845,8 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct method module_expr f me = let () = o#node f me Ast.loc_of_module_expr in match me with - [ <:module_expr< $id:i$ >> -> o#ident f i + [ <:module_expr<>> -> assert False + | <:module_expr< $id:i$ >> -> o#ident f i | <:module_expr< $anti:s$ >> -> o#anti f s | <:module_expr< $me1$ $me2$ >> -> pp f "@[<2>%a@,(%a)@]" o#module_expr me1 o#module_expr me2 @@ -866,12 +869,10 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct pp f "@[<2>%a@]" o#ident i | <:class_expr< $id:i$ [ $t$ ] >> -> pp f "@[<2>@[<1>[%a]@]@ %a@]" o#class_params t o#ident i - (* | <:class_expr< virtual $id:i$ >> -> *) - | Ast.CeCon _ Ast.BTrue i <:ctyp<>> -> - pp f "@[<2>virtual@ %a@]" o#ident i - | Ast.CeCon _ Ast.BTrue i t -> - (* | <:class_expr< virtual $id:i$ [ $t$ ] >> -> *) - pp f "@[<2>virtual@ @[<1>[%a]@]@ %a@]" o#class_params t o#ident i + | <:class_expr< virtual $lid:i$ >> -> + pp f "@[<2>virtual@ %a@]" o#var i + | <:class_expr< virtual $lid:i$ [ $t$ ] >> -> + pp f "@[<2>virtual@ @[<1>[%a]@]@ %a@]" o#class_params t o#var i | <:class_expr< fun $p$ -> $ce$ >> -> pp f "@[<2>fun@ %a@ ->@ %a@]" o#patt p o#class_expr ce | <:class_expr< let $rec:r$ $bi$ in $ce$ >> -> @@ -901,12 +902,10 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct pp f "@[<2>%a@]" o#ident i | <:class_type< $id:i$ [ $t$ ] >> -> pp f "@[<2>[@,%a@]@,]@ %a" o#class_params t o#ident i - (* | <:class_type< virtual $id:i$ >> -> *) - | Ast.CtCon _ Ast.BTrue i <:ctyp<>> -> - pp f "@[<2>virtual@ %a@]" o#ident i - (* | <:class_type< virtual $id:i$ [ $t$ ] >> -> *) - | Ast.CtCon _ Ast.BTrue i t -> - pp f "@[<2>virtual@ [@,%a@]@,]@ %a" o#class_params t o#ident i + | <:class_type< virtual $lid:i$ >> -> + pp f "@[<2>virtual@ %a@]" o#var i + | <:class_type< virtual $lid:i$ [ $t$ ] >> -> + pp f "@[<2>virtual@ [@,%a@]@,]@ %a" o#class_params t o#var i | <:class_type< [ $t$ ] -> $ct$ >> -> pp f "@[<2>%a@ ->@ %a@]" o#simple_ctyp t o#class_type ct | <:class_type< object $csg$ end >> -> @@ -1017,7 +1016,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct end; module MakeMore (Syntax : Sig.Camlp4Syntax) -: Sig.Printer with module Ast = Syntax.Ast +: (Sig.Printer Syntax.Ast).S = struct include Make Syntax; diff --git a/camlp4/Camlp4/Printers/OCaml.mli b/camlp4/Camlp4/Printers/OCaml.mli index ba930cf9..a856529d 100644 --- a/camlp4/Camlp4/Printers/OCaml.mli +++ b/camlp4/Camlp4/Printers/OCaml.mli @@ -22,7 +22,6 @@ module Make (Syntax : Sig.Camlp4Syntax) : sig open Format; include Sig.Camlp4Syntax with module Loc = Syntax.Loc - and module Warning = Syntax.Warning and module Token = Syntax.Token and module Ast = Syntax.Ast and module Gram = Syntax.Gram; @@ -83,6 +82,7 @@ module Make (Syntax : Sig.Camlp4Syntax) : sig method ctyp1 : formatter -> Ast.ctyp -> unit; method constructor_type : formatter -> Ast.ctyp -> unit; method dot_expr : formatter -> Ast.expr -> unit; + method apply_expr : formatter -> Ast.expr -> unit; method expr : formatter -> Ast.expr -> unit; method expr_list : formatter -> list Ast.expr -> unit; method expr_list_cons : bool -> formatter -> Ast.expr -> unit; @@ -94,7 +94,7 @@ module Make (Syntax : Sig.Camlp4Syntax) : sig method ident : formatter -> Ast.ident -> unit; method intlike : formatter -> string -> unit; method binding : formatter -> Ast.binding -> unit; - method record_binding : formatter -> Ast.binding -> unit; + method record_binding : formatter -> Ast.rec_binding -> unit; method match_case : formatter -> Ast.match_case -> unit; method match_case_aux : formatter -> Ast.match_case -> unit; method mk_expr_list : Ast.expr -> (list Ast.expr * option Ast.expr); @@ -156,13 +156,6 @@ module Make (Syntax : Sig.Camlp4Syntax) : sig value print : option string -> (printer -> formatter -> 'a -> unit) -> 'a -> unit; - - value print_interf : - ?input_file: string -> ?output_file: string -> Ast.sig_item -> unit; - - value print_implem : - ?input_file: string -> ?output_file: string -> Ast.str_item -> unit; end; -module MakeMore (Syntax : Sig.Camlp4Syntax) -: Sig.Printer with module Ast = Syntax.Ast; +module MakeMore (Syntax : Sig.Camlp4Syntax) : (Sig.Printer Syntax.Ast).S; diff --git a/camlp4/Camlp4/Printers/OCamlr.ml b/camlp4/Camlp4/Printers/OCamlr.ml index cf2df598..cd2638e5 100644 --- a/camlp4/Camlp4/Printers/OCamlr.ml +++ b/camlp4/Camlp4/Printers/OCamlr.ml @@ -20,7 +20,7 @@ open Format; module Id = struct value name = "Camlp4.Printers.OCamlr"; - value version = "$Id: OCamlr.ml,v 1.17 2007/02/07 10:09:21 ertai Exp $"; + value version = "$Id: OCamlr.ml,v 1.17.4.4 2007/05/10 22:43:18 pouillar Exp $"; end; module Make (Syntax : Sig.Camlp4Syntax) = struct @@ -33,6 +33,12 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct value pp = fprintf; + value is_keyword = + let keywords = ["where"] + and not_keywords = ["false"; "function"; "true"; "val"] + in fun s -> not (List.mem s not_keywords) + && (is_keyword s || List.mem s keywords); + class printer ?curry_constr:(init_curry_constr = True) ?(comments = True) () = object (o) inherit PP_o.printer ~curry_constr:init_curry_constr ~comments () as super; @@ -83,9 +89,9 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct | v -> match lex_string v with [ (LIDENT s | UIDENT s | ESCAPED_IDENT s) when is_keyword s -> - pp f "\\%s" s + pp f "%s__" s | SYMBOL s -> - pp f "\\%s" s + pp f "( %s )" s | LIDENT s | UIDENT s | ESCAPED_IDENT s -> pp_print_string f s | tok -> failwith (sprintf @@ -165,30 +171,13 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct [ <:expr< $e$.val >> -> pp f "@[<2>%a.@,val@]" o#simple_expr e | e -> super#dot_expr f e ]; - method simple_expr f e = - let () = o#node f e Ast.loc_of_expr in - match e with - [ <:expr< for $s$ = $e1$ to $e2$ do { $e3$ } >> -> - pp f "@[@[@[<2>for %a@ =@ %a@ to@ %a@ do {@]@ %a@]@ }@]" - o#var s o#expr e1 o#expr e2 o#seq e3 - | <:expr< for $s$ = $e1$ downto $e2$ do { $e3$ } >> -> - pp f "@[@[@[<2>for %a@ =@ %a@ downto@ %a@ do {@]@ %a@]@ }@]" - o#var s o#expr e1 o#expr e2 o#seq e3 - | <:expr< while $e1$ do { $e2$ } >> -> - pp f "@[<2>while@ %a@ do {@ %a@ }@]" o#expr e1 o#seq e2 - | <:expr< do { $e$ } >> -> - pp f "@[@[do {@ %a@]@ }@]" o#seq e - | e -> super#simple_expr f e ]; - method ctyp f t = let () = o#node f t Ast.loc_of_ctyp in match t with [ Ast.TyDcl _ tn tp te cl -> do { pp f "@[<2>%a%a@]" o#var tn o#type_params tp; match te with - [ <:ctyp< '$s$ >> - when not (List.exists (fun [ <:ctyp< '$s'$ >> -> s = s' - | _ -> False ]) tp) -> () + [ <:ctyp<>> -> () | _ -> pp f " =@ %a" o#ctyp te ]; if cl <> [] then pp f "@ %a" (list o#constrain "@ ") cl else (); } @@ -249,12 +238,10 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct pp f "@[<2>%a@]" o#ident i | <:class_type< $id:i$ [ $t$ ] >> -> pp f "@[<2>%a [@,%a@]@,]" o#ident i o#class_params t - (* | <:class_type< virtual $id:i$ >> -> *) - | Ast.CtCon _ Ast.BTrue i <:ctyp<>> -> - pp f "@[<2>virtual@ %a@]" o#ident i - (* | <:class_type< virtual $id:i$ [ $t$ ] >> -> *) - | Ast.CtCon _ Ast.BTrue i t -> - pp f "@[<2>virtual@ %a@ [@,%a@]@,]" o#ident i o#class_params t + | <:class_type< virtual $lid:i$ >> -> + pp f "@[<2>virtual@ %a@]" o#var i + | <:class_type< virtual $lid:i$ [ $t$ ] >> -> + pp f "@[<2>virtual@ %a@ [@,%a@]@,]" o#var i o#class_params t | ct -> super#class_type f ct ]; method class_expr f ce = @@ -264,12 +251,10 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct pp f "@[<2>%a@]" o#ident i | <:class_expr< $id:i$ [ $t$ ] >> -> pp f "@[<2>%a@ @[<1>[%a]@]@]" o#ident i o#class_params t - (* | <:class_expr< virtual $id:i$ >> -> *) - | Ast.CeCon _ Ast.BTrue i <:ctyp<>> -> - pp f "@[<2>virtual@ %a@]" o#ident i - | Ast.CeCon _ Ast.BTrue i t -> - (* | <:class_expr< virtual $id:i$ [ $t$ ] >> -> *) - pp f "@[<2>virtual@ %a@ @[<1>[%a]@]@]" o#ident i o#ctyp t + | <:class_expr< virtual $lid:i$ >> -> + pp f "@[<2>virtual@ %a@]" o#var i + | <:class_expr< virtual $lid:i$ [ $t$ ] >> -> + pp f "@[<2>virtual@ %a@ @[<1>[%a]@]@]" o#var i o#ctyp t | ce -> super#class_expr f ce ]; end; @@ -281,7 +266,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct end; module MakeMore (Syntax : Sig.Camlp4Syntax) -: Sig.Printer with module Ast = Syntax.Ast +: (Sig.Printer Syntax.Ast).S = struct include Make Syntax; diff --git a/camlp4/Camlp4/Printers/OCamlr.mli b/camlp4/Camlp4/Printers/OCamlr.mli index c09bf6eb..f1db176a 100644 --- a/camlp4/Camlp4/Printers/OCamlr.mli +++ b/camlp4/Camlp4/Printers/OCamlr.mli @@ -22,7 +22,6 @@ module Make (Syntax : Sig.Camlp4Syntax) : sig open Format; include Sig.Camlp4Syntax with module Loc = Syntax.Loc - and module Warning = Syntax.Warning and module Token = Syntax.Token and module Ast = Syntax.Ast and module Gram = Syntax.Gram; @@ -43,13 +42,6 @@ module Make (Syntax : Sig.Camlp4Syntax) : sig value print : option string -> (printer -> formatter -> 'a -> unit) -> 'a -> unit; - - value print_interf : - ?input_file: string -> ?output_file: string -> Ast.sig_item -> unit; - - value print_implem : - ?input_file: string -> ?output_file: string -> Ast.str_item -> unit; end; -module MakeMore (Syntax : Sig.Camlp4Syntax) -: Sig.Printer with module Ast = Syntax.Ast; +module MakeMore (Syntax : Sig.Camlp4Syntax) : (Sig.Printer Syntax.Ast).S; diff --git a/camlp4/Camlp4/Register.ml b/camlp4/Camlp4/Register.ml index e491f4c1..6044b0d9 100644 --- a/camlp4/Camlp4/Register.ml +++ b/camlp4/Camlp4/Register.ml @@ -34,13 +34,18 @@ value str_item_printer = ref (fun ?input_file:(_) ?output_file:(_) _ -> failwith value callbacks = Queue.create (); +value loaded_modules = ref []; + value iter_and_take_callbacks f = let rec loop () = loop (f (Queue.take callbacks)) in try loop () with [ Queue.Empty -> () ]; value declare_dyn_module m f = - (* let () = Format.eprintf "declare_dyn_module: %s@." m in *) - Queue.add (m, f) callbacks; + begin + (* let () = Format.eprintf "declare_dyn_module: %s@." m in *) + loaded_modules.val := [ m :: loaded_modules.val ]; + Queue.add (m, f) callbacks; + end; value register_str_item_parser f = str_item_parser.val := f; value register_sig_item_parser f = sig_item_parser.val := f; @@ -72,7 +77,7 @@ end; module Printer (Id : Sig.Id) (Maker : functor (Syn : Sig.Syntax) - -> Sig.Printer with module Ast = Syn.Ast) = + -> (Sig.Printer Syn.Ast).S) = struct declare_dyn_module Id.name (fun _ -> let module M = Maker Syntax in @@ -81,7 +86,7 @@ end; module OCamlPrinter (Id : Sig.Id) (Maker : functor (Syn : Sig.Camlp4Syntax) - -> Sig.Printer with module Ast = Syn.Ast) = + -> (Sig.Printer Syn.Ast).S) = struct declare_dyn_module Id.name (fun _ -> let module M = Maker Syntax in @@ -89,7 +94,7 @@ struct end; module OCamlPreCastPrinter - (Id : Sig.Id) (P : Sig.Printer with module Ast = PreCast.Ast) = + (Id : Sig.Id) (P : (Sig.Printer PreCast.Ast).S) = struct declare_dyn_module Id.name (fun _ -> register_printer P.print_implem P.print_interf); @@ -97,7 +102,7 @@ end; module Parser (Id : Sig.Id) (Maker : functor (Ast : Sig.Ast) - -> Sig.Parser with module Ast = Ast) = + -> (Sig.Parser Ast).S) = struct declare_dyn_module Id.name (fun _ -> let module M = Maker PreCast.Ast in @@ -106,7 +111,7 @@ end; module OCamlParser (Id : Sig.Id) (Maker : functor (Ast : Sig.Camlp4Ast) - -> Sig.Parser with module Ast = Ast) = + -> (Sig.Parser Ast).S) = struct declare_dyn_module Id.name (fun _ -> let module M = Maker PreCast.Ast in @@ -114,7 +119,7 @@ struct end; module OCamlPreCastParser - (Id : Sig.Id) (P : Sig.Parser with module Ast = PreCast.Ast) = + (Id : Sig.Id) (P : (Sig.Parser PreCast.Ast).S) = struct declare_dyn_module Id.name (fun _ -> register_parser P.parse_implem P.parse_interf); @@ -126,10 +131,8 @@ struct declare_dyn_module Id.name (fun _ -> let module M = Maker AstFilters in ()); end; -let module M = Syntax.Parser in do { - sig_item_parser.val := M.parse_interf; - str_item_parser.val := M.parse_implem; -}; +sig_item_parser.val := Syntax.parse_interf; +str_item_parser.val := Syntax.parse_implem; module CurrentParser = struct module Ast = Ast; diff --git a/camlp4/Camlp4/Register.mli b/camlp4/Camlp4/Register.mli index 337ca55d..df1180ff 100644 --- a/camlp4/Camlp4/Register.mli +++ b/camlp4/Camlp4/Register.mli @@ -42,13 +42,13 @@ value register_sig_item_parser : parser_fun PreCast.Ast.sig_item -> unit; value register_parser : parser_fun PreCast.Ast.str_item -> parser_fun PreCast.Ast.sig_item -> unit; module Parser - (Id : Sig.Id) (Maker : functor (Ast : Sig.Ast) -> Sig.Parser with module Ast = Ast) : sig end; + (Id : Sig.Id) (Maker : functor (Ast : Sig.Ast) -> (Sig.Parser Ast).S) : sig end; module OCamlParser - (Id : Sig.Id) (Maker : functor (Ast : Sig.Camlp4Ast) -> Sig.Parser with module Ast = Ast) : sig end; + (Id : Sig.Id) (Maker : functor (Ast : Sig.Camlp4Ast) -> (Sig.Parser Ast).S) : sig end; module OCamlPreCastParser - (Id : Sig.Id) (Parser : Sig.Parser with module Ast = PreCast.Ast) : sig end; + (Id : Sig.Id) (Parser : (Sig.Parser PreCast.Ast).S) : sig end; (** {6 Registering Printers} *) @@ -61,16 +61,16 @@ value register_printer : printer_fun PreCast.Ast.str_item -> printer_fun PreCast module Printer (Id : Sig.Id) - (Maker : functor (Syn : Sig.Syntax) -> Sig.Printer with module Ast = Syn.Ast) : + (Maker : functor (Syn : Sig.Syntax) -> (Sig.Printer Syn.Ast).S) : sig end; module OCamlPrinter (Id : Sig.Id) - (Maker : functor (Syn : Sig.Camlp4Syntax) -> Sig.Printer with module Ast = Syn.Ast) : + (Maker : functor (Syn : Sig.Camlp4Syntax) -> (Sig.Printer Syn.Ast).S) : sig end; module OCamlPreCastPrinter - (Id : Sig.Id) (Printer : Sig.Printer with module Ast = PreCast.Ast) : + (Id : Sig.Id) (Printer : (Sig.Printer PreCast.Ast).S) : sig end; (** {6 Registering Filters} *) @@ -80,9 +80,10 @@ module AstFilter value declare_dyn_module : string -> (unit -> unit) -> unit; value iter_and_take_callbacks : ((string * (unit -> unit)) -> unit) -> unit; +value loaded_modules : ref (list string); -module CurrentParser : Sig.Parser with module Ast = PreCast.Ast; -module CurrentPrinter : Sig.Printer with module Ast = PreCast.Ast; +module CurrentParser : (Sig.Parser PreCast.Ast).S; +module CurrentPrinter : (Sig.Printer PreCast.Ast).S; value enable_ocaml_printer : unit -> unit; value enable_ocamlr_printer : unit -> unit; diff --git a/camlp4/Camlp4/Sig.ml b/camlp4/Camlp4/Sig.ml index a3f80057..989ca93b 100644 --- a/camlp4/Camlp4/Sig.ml +++ b/camlp4/Camlp4/Sig.ml @@ -19,13 +19,13 @@ *) module type Type = sig - type t = 'abstract; + type t; end; (** Signature for errors modules, an Error modules can be registred with the {!ErrorHandler.Register} functor in order to be well printed. *) module type Error = sig - type t = 'abstract; + type t; exception E of t; value to_string : t -> string; value print : Format.formatter -> t -> unit; @@ -37,14 +37,14 @@ module type Id = sig (** The name of the extension, typically the module name. *) value name : string; - (** The version of the extension, typically $Id: Sig.ml,v 1.2 2007/02/26 16:32:46 ertai Exp $ with a versionning system. *) + (** The version of the extension, typically $Id: Sig.ml,v 1.2.2.10 2007/05/10 22:43:18 pouillar Exp $ with a versionning system. *) value version : string; end; module type Loc = sig - type t = 'a; + type t; (** Return a start location for the given file name. This location starts at the begining of the file. *) @@ -174,12 +174,13 @@ module type Loc = sig end; -module type Warning = sig - module Loc : Loc; - type t = Loc.t -> string -> unit; - value default : t; - value current : ref t; - value print : t; +module Warning (Loc : Loc) = struct + module type S = sig + type warning = Loc.t -> string -> unit; + value default_warning : warning; + value current_warning : ref warning; + value print_warning : warning; + end; end; (** Base class for map traversal, it includes some builtin types. *) @@ -214,25 +215,26 @@ module type Ast = sig module Loc : Loc; - type meta_bool = 'abstract; - type meta_option 'a = 'abstract; - type meta_list 'a = 'abstract; - type ctyp = 'abstract; - type patt = 'abstract; - type expr = 'abstract; - type module_type = 'abstract; - type sig_item = 'abstract; - type with_constr = 'abstract; - type module_expr = 'abstract; - type str_item = 'abstract; - type class_type = 'abstract; - type class_sig_item = 'abstract; - type class_expr = 'abstract; - type class_str_item = 'abstract; - type match_case = 'abstract; - type ident = 'abstract; - type binding = 'abstract; - type module_binding = 'abstract; + type meta_bool; + type meta_option 'a; + type meta_list 'a; + type ctyp; + type patt; + type expr; + type module_type; + type sig_item; + type with_constr; + type module_expr; + type str_item; + type class_type; + type class_sig_item; + type class_expr; + type class_str_item; + type match_case; + type ident; + type binding; + type rec_binding; + type module_binding; value loc_of_ctyp : ctyp -> Loc.t; value loc_of_patt : patt -> Loc.t; @@ -247,6 +249,7 @@ module type Ast = sig value loc_of_class_str_item : class_str_item -> Loc.t; value loc_of_with_constr : with_constr -> Loc.t; value loc_of_binding : binding -> Loc.t; + value loc_of_rec_binding : rec_binding -> Loc.t; value loc_of_module_binding : module_binding -> Loc.t; value loc_of_match_case : match_case -> Loc.t; value loc_of_ident : ident -> Loc.t; @@ -287,6 +290,7 @@ module type Ast = sig method class_str_item : class_str_item -> class_str_item; method with_constr : with_constr -> with_constr; method binding : binding -> binding; + method rec_binding : rec_binding -> rec_binding; method module_binding : module_binding -> module_binding; method match_case : match_case -> match_case; method ident : ident -> ident; @@ -318,6 +322,7 @@ module type Ast = sig method class_str_item : class_str_item -> 'self_type; method with_constr : with_constr -> 'self_type; method binding : binding -> 'self_type; + method rec_binding : rec_binding -> 'self_type; method module_binding : module_binding -> 'self_type; method match_case : match_case -> 'self_type; method ident : ident -> 'self_type; @@ -345,7 +350,31 @@ end; It provides: - Types for all kinds of structure. - Map: A base class for map traversals. - - Map classes and functions for common kinds. *) + - Map classes and functions for common kinds. + + (* Core language *) + ctyp (* Representaion of types *) + patt (* The type of patterns *) + expr (* The type of expressions *) + match_case (* The type of cases for match/function/try constructions *) + ident (* The type of identifiers (including path like Foo(X).Bar.y) *) + binding (* The type of let bindings *) + rec_binding (* The type of record definitions *) + + (* Modules *) + module_type (* The type of module types *) + sig_item (* The type of signature items *) + str_item (* The type of structure items *) + module_expr (* The type of module expressions *) + module_binding (* The type of recursive module definitions *) + with_constr (* The type of `with' constraints *) + + (* Classes *) + class_type (* The type of class types *) + class_sig_item (* The type of class signature items *) + class_expr (* The type of class expressions *) + class_str_item (* The type of class structure items *) + *) module type Camlp4Ast = sig module Loc : Loc; @@ -365,6 +394,7 @@ module type Camlp4Ast = sig value loc_of_class_str_item : class_str_item -> Loc.t; value loc_of_with_constr : with_constr -> Loc.t; value loc_of_binding : binding -> Loc.t; + value loc_of_rec_binding : rec_binding -> Loc.t; value loc_of_module_binding : module_binding -> Loc.t; value loc_of_match_case : match_case -> Loc.t; value loc_of_ident : ident -> Loc.t; @@ -401,6 +431,7 @@ module type Camlp4Ast = sig value meta_bool : Loc.t -> bool -> expr; value meta_list : (Loc.t -> 'a -> expr) -> Loc.t -> list 'a -> expr; value meta_binding : Loc.t -> binding -> expr; + value meta_rec_binding : Loc.t -> rec_binding -> expr; value meta_class_expr : Loc.t -> class_expr -> expr; value meta_class_sig_item : Loc.t -> class_sig_item -> expr; value meta_class_str_item : Loc.t -> class_str_item -> expr; @@ -425,6 +456,7 @@ module type Camlp4Ast = sig value meta_bool : Loc.t -> bool -> patt; value meta_list : (Loc.t -> 'a -> patt) -> Loc.t -> list 'a -> patt; value meta_binding : Loc.t -> binding -> patt; + value meta_rec_binding : Loc.t -> rec_binding -> patt; value meta_class_expr : Loc.t -> class_expr -> patt; value meta_class_sig_item : Loc.t -> class_sig_item -> patt; value meta_class_str_item : Loc.t -> class_str_item -> patt; @@ -465,6 +497,7 @@ module type Camlp4Ast = sig method class_str_item : class_str_item -> class_str_item; method with_constr : with_constr -> with_constr; method binding : binding -> binding; + method rec_binding : rec_binding -> rec_binding; method module_binding : module_binding -> module_binding; method match_case : match_case -> match_case; method ident : ident -> ident; @@ -497,38 +530,33 @@ module type Camlp4Ast = sig method class_str_item : class_str_item -> 'self_type; method with_constr : with_constr -> 'self_type; method binding : binding -> 'self_type; + method rec_binding : rec_binding -> 'self_type; method module_binding : module_binding -> 'self_type; method match_case : match_case -> 'self_type; method ident : ident -> 'self_type; end; - (** See {!Ast.remove_antiquots}. *) - (* class remove_antiquots : object inherit map; end; *) - - class c_expr : [expr -> expr] -> object inherit map; end; - class c_patt : [patt -> patt] -> object inherit map; end; - class c_ctyp : [ctyp -> ctyp] -> object inherit map; end; - class c_str_item : [str_item -> str_item] -> object inherit map; end; - class c_sig_item : [sig_item -> sig_item] -> object inherit map; end; - class c_loc : [Loc.t -> Loc.t] -> object inherit map; end; - - value map_expr : (expr -> expr) -> expr -> expr; - value map_patt : (patt -> patt) -> patt -> patt; - value map_ctyp : (ctyp -> ctyp) -> ctyp -> ctyp; - value map_str_item : (str_item -> str_item) -> str_item -> str_item; - value map_sig_item : (sig_item -> sig_item) -> sig_item -> sig_item; - value map_loc : (Loc.t -> Loc.t) -> Loc.t -> Loc.t; + value map_expr : (expr -> expr) -> map; + value map_patt : (patt -> patt) -> map; + value map_ctyp : (ctyp -> ctyp) -> map; + value map_str_item : (str_item -> str_item) -> map; + value map_sig_item : (sig_item -> sig_item) -> map; + value map_loc : (Loc.t -> Loc.t) -> map; value ident_of_expr : expr -> ident; + value ident_of_patt : patt -> ident; value ident_of_ctyp : ctyp -> ident; value biAnd_of_list : list binding -> binding; - value biSem_of_list : list binding -> binding; + value rbSem_of_list : list rec_binding -> rec_binding; value paSem_of_list : list patt -> patt; value paCom_of_list : list patt -> patt; value tyOr_of_list : list ctyp -> ctyp; value tyAnd_of_list : list ctyp -> ctyp; + value tyAmp_of_list : list ctyp -> ctyp; value tySem_of_list : list ctyp -> ctyp; + value tyCom_of_list : list ctyp -> ctyp; + value tySta_of_list : list ctyp -> ctyp; value stSem_of_list : list str_item -> str_item; value sgSem_of_list : list sig_item -> sig_item; value crSem_of_list : list class_str_item -> class_str_item; @@ -546,6 +574,7 @@ module type Camlp4Ast = sig value list_of_ctyp : ctyp -> list ctyp -> list ctyp; value list_of_binding : binding -> list binding -> list binding; + value list_of_rec_binding : rec_binding -> list rec_binding -> list rec_binding; value list_of_with_constr : with_constr -> list with_constr -> list with_constr; value list_of_patt : patt -> list patt -> list patt; value list_of_expr : expr -> list expr -> list expr; @@ -602,6 +631,7 @@ module Camlp4AstToAst (M : Camlp4Ast) : Ast and type class_expr = M.class_expr and type class_str_item = M.class_str_item and type binding = M.binding + and type rec_binding = M.rec_binding and type module_binding = M.module_binding and type match_case = M.match_case and type ident = M.ident @@ -635,6 +665,41 @@ module type AstFilters = sig end; +(** Ast as one single type *) + +module type DynAst = sig + module Ast : Ast; + type tag 'a; + + value ctyp_tag : tag Ast.ctyp; + value patt_tag : tag Ast.patt; + value expr_tag : tag Ast.expr; + value module_type_tag : tag Ast.module_type; + value sig_item_tag : tag Ast.sig_item; + value with_constr_tag : tag Ast.with_constr; + value module_expr_tag : tag Ast.module_expr; + value str_item_tag : tag Ast.str_item; + value class_type_tag : tag Ast.class_type; + value class_sig_item_tag : tag Ast.class_sig_item; + value class_expr_tag : tag Ast.class_expr; + value class_str_item_tag : tag Ast.class_str_item; + value match_case_tag : tag Ast.match_case; + value ident_tag : tag Ast.ident; + value binding_tag : tag Ast.binding; + value rec_binding_tag : tag Ast.rec_binding; + value module_binding_tag : tag Ast.module_binding; + + value string_of_tag : tag 'a -> string; + + module Pack (X : sig type t 'a; end) : sig + type pack; + value pack : tag 'a -> X.t 'a -> pack; + value unpack : tag 'a -> pack -> X.t 'a; + value print_tag : Format.formatter -> pack -> unit; + end; +end; + + (** Quotation operations. *) type quotation = @@ -645,45 +710,32 @@ type quotation = module type Quotation = sig module Ast : Ast; + module DynAst : DynAst with module Ast = Ast; open Ast; (** The Loc.t is the initial location. The option string is the optional name for the location variable. The string is the quotation contents. *) type expand_fun 'a = Loc.t -> option string -> string -> 'a; - (** The type for quotation expanders kind: - - [ExStr exp] for an expander [exp] returning a string which - can be parsed to create a syntax tree. Its boolean parameter - tells whether the quotation is in position of an expression - (True) or in position of a pattern (False). Quotations expanders - created with this way may work for some particular language syntax, - and not for another one (e.g. may work when used with Revised - syntax and not when used with Ocaml syntax, and conversely). - - [ExAst (expr_exp, patt_exp)] for expanders returning directly - syntax trees, therefore not necessiting to be parsed afterwards. - The function [expr_exp] is called when the quotation is in - position of an expression, and [patt_exp] when the quotation is - in position of a pattern. Quotation expanders created with this - way are independant from the language syntax. *) - type expander = - [ ExStr of bool -> expand_fun string - | ExAst of (expand_fun Ast.expr) and (expand_fun Ast.patt) ]; - (** [add name exp] adds the quotation [name] associated with the expander [exp]. *) - value add : string -> expander -> unit; + value add : string -> DynAst.tag 'a -> expand_fun 'a -> unit; (** [find name] returns the expander of the given quotation name. *) - value find : string -> expander; + value find : string -> DynAst.tag 'a -> expand_fun 'a; (** [default] holds the default quotation name. *) value default : ref string; + (** [parse_quotation_result parse_function loc position_tag quotation quotation_result] + It's a parser wrapper, this function handles the error reporting for you. *) + value parse_quotation_result : + (Loc.t -> string -> 'a) -> Loc.t -> quotation -> string -> string -> 'a; + (** function translating quotation names; default = identity *) value translate : ref (string -> string); - value expand_expr : (Loc.t -> string -> Ast.expr) -> Loc.t -> quotation -> Ast.expr; - value expand_patt : (Loc.t -> string -> Ast.patt) -> Loc.t -> quotation -> Ast.patt; + value expand : Loc.t -> quotation -> DynAst.tag 'a -> 'a; (** [dump_file] optionally tells Camlp4 to dump the result of an expander if this result is syntactically incorrect. @@ -701,7 +753,7 @@ module type Token = sig module Loc : Loc; - type t = 'abstract; + type t; value to_string : t -> string; @@ -718,7 +770,7 @@ module type Token = sig (** The type for this filter chain. A basic implementation just store the [is_keyword] function given by [mk] and use it in the [filter] function. *) - type t = 'abstract; + type t; (** The given predicate function returns true if the given string is a keyword. This function can be used in filters to translate @@ -802,7 +854,7 @@ type camlp4_token = module type Camlp4Token = Token with type t = camlp4_token; module type DynLoader = sig - type t = 'abstract; + type t; exception Error of string and string; (** [mk ?ocaml_stdlib ?camlp4_stdlib] @@ -831,7 +883,7 @@ module Grammar = struct (** Internal signature for sematantic actions of grammars, not for the casual user. These functions are unsafe. *) module type Action = sig - type t = 'abstract; + type t ; value mk : 'a -> t; value get : t -> 'a; @@ -857,9 +909,9 @@ module Grammar = struct module Action : Action; module Token : Token with module Loc = Loc; - type gram = 'abstract; - type internal_entry = 'abstract; - type tree = 'abstract; + type gram; + type internal_entry; + type tree; type token_pattern = ((Token.t -> bool) * string); @@ -907,7 +959,7 @@ module Grammar = struct module Entry : sig (** The abstract type of grammar entries. The type parameter is the type of the semantic actions that are associated with this entry. *) - type t 'a = 'abstract; + type t 'a; (** Make a new entry from the given name. *) value mk : gram -> string -> t 'a; @@ -937,7 +989,7 @@ module Grammar = struct (** [get_filter g] Get the {!Token.Filter} associated to the [g]. *) value get_filter : gram -> Token.Filter.t; - type not_filtered 'a = 'abstract; + type not_filtered 'a; (** This function is called by the EXTEND ... END syntax. *) value extend : Entry.t 'a -> extend_statment -> unit; @@ -988,7 +1040,7 @@ module Grammar = struct module Entry : sig (** The abstract type of grammar entries. The type parameter is the type of the semantic actions that are associated with this entry. *) - type t 'a = 'abstract; + type t 'a; (** Make a new entry from the given name. *) value mk : string -> t 'a; @@ -1018,7 +1070,7 @@ module Grammar = struct (** Get the {!Token.Filter} associated to the grammar module. *) value get_filter : unit -> Token.Filter.t; - type not_filtered 'a = 'abstract; + type not_filtered 'a; (** This function is called by the EXTEND ... END syntax. *) value extend : Entry.t 'a -> extend_statment -> unit; @@ -1075,37 +1127,35 @@ end; (** {6 Parser} *) -module type Parser = sig - - module Ast : Ast; - open Ast; - - (** Called when parsing an implementation (ml file) to build the syntax - tree; the returned list contains the phrases (structure items) as a - single "declare" node (a list of structure items); if the parser - encounter a directive it stops (since the directive may change the - syntax), the given [directive_handler] function evaluates it and - the parsing starts again. *) - value parse_implem : ?directive_handler:(str_item -> option str_item) -> - Loc.t -> Stream.t char -> Ast.str_item; - - (** Same as {!parse_implem} but for interface (mli file). *) - value parse_interf : ?directive_handler:(sig_item -> option sig_item) -> - Loc.t -> Stream.t char -> Ast.sig_item; - +module Parser (Ast : Ast) = struct + module type S = sig + + (** Called when parsing an implementation (ml file) to build the syntax + tree; the returned list contains the phrases (structure items) as a + single "declare" node (a list of structure items); if the parser + encounter a directive it stops (since the directive may change the + syntax), the given [directive_handler] function evaluates it and + the parsing starts again. *) + value parse_implem : ?directive_handler:(Ast.str_item -> option Ast.str_item) -> + Ast.Loc.t -> Stream.t char -> Ast.str_item; + + (** Same as {!parse_implem} but for interface (mli file). *) + value parse_interf : ?directive_handler:(Ast.sig_item -> option Ast.sig_item) -> + Ast.Loc.t -> Stream.t char -> Ast.sig_item; + end; end; (** {6 Printer} *) -module type Printer = sig - - module Ast : Ast; +module Printer (Ast : Ast) = struct + module type S = sig - value print_interf : ?input_file:string -> ?output_file:string -> - Ast.sig_item -> unit; - value print_implem : ?input_file:string -> ?output_file:string -> - Ast.str_item -> unit; + value print_interf : ?input_file:string -> ?output_file:string -> + Ast.sig_item -> unit; + value print_implem : ?input_file:string -> ?output_file:string -> + Ast.str_item -> unit; + end; end; (** A syntax module is a sort of constistent bunch of modules and values. @@ -1114,15 +1164,16 @@ end; There is also the main grammar entries. *) module type Syntax = sig module Loc : Loc; - module Warning : Warning with module Loc = Loc; module Ast : Ast with module Loc = Loc; module Token : Token with module Loc = Loc; module Gram : Grammar.Static with module Loc = Loc and module Token = Token; module AntiquotSyntax : AntiquotSyntax with module Ast = Ast; (* Gram is not constrained here for flexibility *) module Quotation : Quotation with module Ast = Ast; - module Parser : Parser with module Ast = Ast; - module Printer : Printer with module Ast = Ast; + + include (Warning Loc).S; + include (Parser Ast).S; + include (Printer Ast).S; end; (** A syntax module is a sort of constistent bunch of modules and values. @@ -1131,7 +1182,6 @@ end; There is also the main grammar entries. *) module type Camlp4Syntax = sig module Loc : Loc; - module Warning : Warning with module Loc = Loc; module Ast : Camlp4Ast with module Loc = Loc; module Token : Camlp4Token with module Loc = Loc; @@ -1140,8 +1190,10 @@ module type Camlp4Syntax = sig module AntiquotSyntax : AntiquotSyntax with module Ast = Camlp4AstToAst Ast; (* Gram is not constrained here for flexibility *) module Quotation : Quotation with module Ast = Camlp4AstToAst Ast; - module Parser : Parser with module Ast = Camlp4AstToAst Ast; - module Printer : Printer with module Ast = Camlp4AstToAst Ast; + + include (Warning Loc).S; + include (Parser Ast).S; + include (Printer Ast).S; value interf : Gram.Entry.t (list Ast.sig_item * option Loc.t); value implem : Gram.Entry.t (list Ast.str_item * option Loc.t); @@ -1154,7 +1206,6 @@ module type Camlp4Syntax = sig value a_INT64 : Gram.Entry.t string; value a_LABEL : Gram.Entry.t string; value a_LIDENT : Gram.Entry.t string; - value a_LIDENT_or_operator : Gram.Entry.t string; value a_NATIVEINT : Gram.Entry.t string; value a_OPTLABEL : Gram.Entry.t string; value a_STRING : Gram.Entry.t string; @@ -1167,6 +1218,7 @@ module type Camlp4Syntax = sig value match_case_quot : Gram.Entry.t Ast.match_case; value binding : Gram.Entry.t Ast.binding; value binding_quot : Gram.Entry.t Ast.binding; + value rec_binding_quot : Gram.Entry.t Ast.rec_binding; value class_declaration : Gram.Entry.t Ast.class_expr; value class_description : Gram.Entry.t Ast.class_type; value class_expr : Gram.Entry.t Ast.class_expr; @@ -1208,8 +1260,7 @@ module type Camlp4Syntax = sig value expr : Gram.Entry.t Ast.expr; value expr_eoi : Gram.Entry.t Ast.expr; value expr_quot : Gram.Entry.t Ast.expr; - value field : Gram.Entry.t Ast.ctyp; - value field_expr : Gram.Entry.t Ast.binding; + value field_expr : Gram.Entry.t Ast.rec_binding; value fun_binding : Gram.Entry.t Ast.expr; value fun_def : Gram.Entry.t Ast.expr; value ident : Gram.Entry.t Ast.ident; @@ -1218,7 +1269,7 @@ module type Camlp4Syntax = sig value ipatt_tcon : Gram.Entry.t Ast.patt; value label : Gram.Entry.t string; value label_declaration : Gram.Entry.t Ast.ctyp; - value label_expr : Gram.Entry.t Ast.binding; + value label_expr : Gram.Entry.t Ast.rec_binding; value label_ipatt : Gram.Entry.t Ast.patt; value label_longident : Gram.Entry.t Ast.ident; value label_patt : Gram.Entry.t Ast.patt; @@ -1243,7 +1294,7 @@ module type Camlp4Syntax = sig value opt_class_self_type : Gram.Entry.t Ast.ctyp; value opt_comma_ctyp : Gram.Entry.t Ast.ctyp; value opt_dot_dot : Gram.Entry.t Ast.meta_bool; - value opt_eq_ctyp : Gram.Entry.t (list Ast.ctyp -> Ast.ctyp); + value opt_eq_ctyp : Gram.Entry.t Ast.ctyp; value opt_expr : Gram.Entry.t Ast.expr; value opt_meth_list : Gram.Entry.t Ast.ctyp; value opt_mutable : Gram.Entry.t Ast.meta_bool; @@ -1258,16 +1309,15 @@ module type Camlp4Syntax = sig value patt_quot : Gram.Entry.t Ast.patt; value patt_tcon : Gram.Entry.t Ast.patt; value phrase : Gram.Entry.t Ast.str_item; - value pipe_ctyp : Gram.Entry.t Ast.ctyp; value poly_type : Gram.Entry.t Ast.ctyp; value row_field : Gram.Entry.t Ast.ctyp; - value sem_ctyp : Gram.Entry.t Ast.ctyp; value sem_expr : Gram.Entry.t Ast.expr; value sem_expr_for_list : Gram.Entry.t (Ast.expr -> Ast.expr); value sem_patt : Gram.Entry.t Ast.patt; value sem_patt_for_list : Gram.Entry.t (Ast.patt -> Ast.patt); value semi : Gram.Entry.t unit; value sequence : Gram.Entry.t Ast.expr; + value do_sequence : Gram.Entry.t Ast.expr; value sig_item : Gram.Entry.t Ast.sig_item; value sig_item_quot : Gram.Entry.t Ast.sig_item; value sig_items : Gram.Entry.t Ast.sig_item; @@ -1289,11 +1339,16 @@ module type Camlp4Syntax = sig value value_val : Gram.Entry.t unit; value with_constr : Gram.Entry.t Ast.with_constr; value with_constr_quot : Gram.Entry.t Ast.with_constr; + value prefixop : Gram.Entry.t Ast.expr; + value infixop0 : Gram.Entry.t Ast.expr; + value infixop1 : Gram.Entry.t Ast.expr; + value infixop2 : Gram.Entry.t Ast.expr; + value infixop3 : Gram.Entry.t Ast.expr; + value infixop4 : Gram.Entry.t Ast.expr; end; module type SyntaxExtension = functor (Syn : Syntax) -> (Syntax with module Loc = Syn.Loc - and module Warning = Syn.Warning and module Ast = Syn.Ast and module Token = Syn.Token and module Gram = Syn.Gram diff --git a/camlp4/Camlp4/Struct.mlpack b/camlp4/Camlp4/Struct.mlpack index bd8c40a1..a939fe77 100644 --- a/camlp4/Camlp4/Struct.mlpack +++ b/camlp4/Camlp4/Struct.mlpack @@ -11,5 +11,5 @@ Lexer Loc Quotation Token -Warning Grammar +DynAst diff --git a/camlp4/Camlp4/Struct/Camlp4Ast.mlast b/camlp4/Camlp4/Struct/Camlp4Ast.mlast index 95bccdb5..b7a8b4ff 100644 --- a/camlp4/Camlp4/Struct/Camlp4Ast.mlast +++ b/camlp4/Camlp4/Struct/Camlp4Ast.mlast @@ -45,93 +45,11 @@ module Make (Loc : Sig.Loc) external loc_of_class_str_item : class_str_item -> Loc.t = "%field0"; external loc_of_with_constr : with_constr -> Loc.t = "%field0"; external loc_of_binding : binding -> Loc.t = "%field0"; + external loc_of_rec_binding : rec_binding -> Loc.t = "%field0"; external loc_of_module_binding : module_binding -> Loc.t = "%field0"; external loc_of_match_case : match_case -> Loc.t = "%field0"; external loc_of_ident : ident -> Loc.t = "%field0"; - module Meta = struct - - module type META_LOC = sig - (** The first location is where to put the returned pattern. - Generally it's _loc to match with <:patt< ... >> quotations. - The second location is the one to treat. *) - value meta_loc_patt : Loc.t -> Loc.t -> Ast.patt; - (** The first location is where to put the returned expression. - Generally it's _loc to match with <:expr< ... >> quotations. - The second location is the one to treat. *) - value meta_loc_expr : Loc.t -> Loc.t -> Ast.expr; - end; - - module MetaLoc = struct - value meta_loc_patt _loc location = - let (a, b, c, d, e, f, g, h) = Loc.to_tuple location in - <:patt< Loc.of_tuple - ($`str:a$, $`int:b$, $`int:c$, $`int:d$, - $`int:e$, $`int:f$, $`int:g$, - $if h then <:patt< True >> else <:patt< False >> $) >>; - value meta_loc_expr _loc location = - let (a, b, c, d, e, f, g, h) = Loc.to_tuple location in - <:expr< Loc.of_tuple - ($`str:a$, $`int:b$, $`int:c$, $`int:d$, - $`int:e$, $`int:f$, $`int:g$, - $if h then <:expr< True >> else <:expr< False >> $) >>; - end; - - module MetaGhostLoc = struct - value meta_loc_patt _loc _ = <:patt< Loc.ghost >>; - value meta_loc_expr _loc _ = <:expr< Loc.ghost >>; - end; - - module MetaLocVar = struct - value meta_loc_patt _loc _ = <:patt< $lid:Loc.name.val$ >>; - value meta_loc_expr _loc _ = <:expr< $lid:Loc.name.val$ >>; - end; - - module Make (MetaLoc : META_LOC) = struct - open MetaLoc; - - value meta_acc_Loc_t = meta_loc_expr; - module Expr = Camlp4Filters.MetaGeneratorExpr Ast; - value meta_acc_Loc_t = meta_loc_patt; - module Patt = Camlp4Filters.MetaGeneratorPatt Ast; - end; - - end; - - class map = Camlp4Filters.GenerateMap.generated; - - class fold = Camlp4Filters.GenerateFold.generated; - - class c_expr f = object - inherit map as super; - method expr x = f (super#expr x); - end; - class c_patt f = object - inherit map as super; - method patt x = f (super#patt x); - end; - class c_ctyp f = object - inherit map as super; - method ctyp x = f (super#ctyp x); - end; - class c_str_item f = object - inherit map as super; - method str_item x = f (super#str_item x); - end; - class c_sig_item f = object - inherit map as super; - method sig_item x = f (super#sig_item x); - end; - class c_loc f = object - inherit map as super; - method _Loc_t x = f (super#_Loc_t x); - end; - value map_patt f ast = (new c_patt f)#patt ast; - value map_loc f ast = (new c_loc f)#_Loc_t ast; - value map_sig_item f ast = (new c_sig_item f)#sig_item ast; - value map_str_item f ast = (new c_str_item f)#str_item ast; - value map_ctyp f ast = (new c_ctyp f)#ctyp ast; - value map_expr f ast = (new c_expr f)#expr ast; value ghost = Loc.ghost; value rec is_module_longident = @@ -142,6 +60,47 @@ module Make (Loc : Sig.Loc) | <:ident< $uid:_$ >> -> True | _ -> False ]; + value ident_of_expr = + let error () = + invalid_arg "ident_of_expr: this expression is not an identifier" in + let rec self = + fun + [ <:expr@_loc< $e1$ $e2$ >> -> <:ident< $self e1$ $self e2$ >> + | <:expr@_loc< $e1$.$e2$ >> -> <:ident< $self e1$.$self e2$ >> + | <:expr< $lid:_$ >> -> error () + | <:expr< $id:i$ >> -> if is_module_longident i then i else error () + | _ -> error () ] in + fun + [ <:expr< $id:i$ >> -> i + | <:expr< $_$ $_$ >> -> error () + | t -> self t ]; + + value ident_of_ctyp = + let error () = + invalid_arg "ident_of_ctyp: this type is not an identifier" in + let rec self = + fun + [ <:ctyp@_loc< $t1$ $t2$ >> -> <:ident< $self t1$ $self t2$ >> + | <:ctyp< $lid:_$ >> -> error () + | <:ctyp< $id:i$ >> -> if is_module_longident i then i else error () + | _ -> error () ] in + fun + [ <:ctyp< $id:i$ >> -> i + | t -> self t ]; + + value ident_of_patt = + let error () = + invalid_arg "ident_of_patt: this pattern is not an identifier" in + let rec self = + fun + [ <:patt@_loc< $p1$ $p2$ >> -> <:ident< $self p1$ $self p2$ >> + | <:patt< $lid:_$ >> -> error () + | <:patt< $id:i$ >> -> if is_module_longident i then i else error () + | _ -> error () ] in + fun + [ <:patt< $id:i$ >> -> i + | p -> self p ]; + value rec is_irrefut_patt = fun [ <:patt< $lid:_$ >> -> True @@ -181,34 +140,6 @@ module Make (Loc : Sig.Loc) | <:expr< `$_$ >> -> True | _ -> False ]; - value ident_of_expr = - let error () = - invalid_arg "ident_of_expr: this expression is not an identifier" in - let rec self = - fun - [ <:expr@_loc< $e1$ $e2$ >> -> <:ident< $self e1$ $self e2$ >> - | <:expr@_loc< $e1$.$e2$ >> -> <:ident< $self e1$.$self e2$ >> - | <:expr< $lid:_$ >> -> error () - | <:expr< $id:i$ >> -> if is_module_longident i then i else error () - | <:expr< $_$ >> -> error () ] in - fun - [ <:expr< $id:i$ >> -> i - | <:expr< $_$ $_$ >> -> error () - | t -> self t ]; - - value ident_of_ctyp = - let error () = - invalid_arg "ident_of_ctyp: this type is not an identifier" in - let rec self = - fun - [ <:ctyp@_loc< $t1$ $t2$ >> -> <:ident< $self t1$ $self t2$ >> - | <:ctyp< $lid:_$ >> -> error () - | <:ctyp< $id:i$ >> -> if is_module_longident i then i else error () - | <:ctyp< $_$ >> -> error () ] in - fun - [ <:ctyp< $id:i$ >> -> i - | t -> self t ]; - value rec tyOr_of_list = fun [ [] -> <:ctyp@ghost<>> @@ -230,6 +161,27 @@ module Make (Loc : Sig.Loc) | [t::ts] -> let _loc = loc_of_ctyp t in <:ctyp< $t$ ; $tySem_of_list ts$ >> ]; + value rec tyCom_of_list = + fun + [ [] -> <:ctyp@ghost<>> + | [t] -> t + | [t::ts] -> + let _loc = loc_of_ctyp t in <:ctyp< $t$, $tyCom_of_list ts$ >> ]; + + value rec tyAmp_of_list = + fun + [ [] -> <:ctyp@ghost<>> + | [t] -> t + | [t::ts] -> + let _loc = loc_of_ctyp t in <:ctyp< $t$ & $tyAmp_of_list ts$ >> ]; + + value rec tySta_of_list = + fun + [ [] -> <:ctyp@ghost<>> + | [t] -> t + | [t::ts] -> + let _loc = loc_of_ctyp t in <:ctyp< $t$ * $tySta_of_list ts$ >> ]; + value rec stSem_of_list = fun [ [] -> <:str_item@ghost<>> @@ -251,6 +203,14 @@ module Make (Loc : Sig.Loc) | [b::bs] -> let _loc = loc_of_binding b in <:binding< $b$ and $biAnd_of_list bs$ >> ]; + value rec rbSem_of_list = + fun + [ [] -> <:rec_binding@ghost<>> + | [b] -> b + | [b::bs] -> + let _loc = loc_of_rec_binding b in + <:rec_binding< $b$; $rbSem_of_list bs$ >> ]; + value rec wcAnd_of_list = fun [ [] -> <:with_constr@ghost<>> @@ -347,14 +307,6 @@ module Make (Loc : Sig.Loc) let _loc = loc_of_patt x in <:patt< $x$, $paCom_of_list xs$ >> ]; - value rec biSem_of_list = - fun - [ [] -> <:binding@ghost<>> - | [x] -> x - | [x::xs] -> - let _loc = loc_of_binding x in - <:binding< $x$; $biSem_of_list xs$ >> ]; - value rec exSem_of_list = fun [ [] -> <:expr@ghost<>> @@ -390,15 +342,20 @@ module Make (Loc : Sig.Loc) fun [ <:binding< $b1$ and $b2$ >> -> pel_of_binding b1 @ pel_of_binding b2 | <:binding< $p$ = $e$ >> -> [(p, e)] - | <:binding< $b1$ ; $b2$ >> -> pel_of_binding b1 @ pel_of_binding b2 | _ -> assert False ]; value rec list_of_binding x acc = match x with - [ <:binding< $b1$ and $b2$ >> | <:binding< $b1$; $b2$ >> -> + [ <:binding< $b1$ and $b2$ >> -> list_of_binding b1 (list_of_binding b2 acc) | t -> [t :: acc] ]; + value rec list_of_rec_binding x acc = + match x with + [ <:rec_binding< $b1$; $b2$ >> -> + list_of_rec_binding b1 (list_of_rec_binding b2 acc) + | t -> [t :: acc] ]; + value rec list_of_with_constr x acc = match x with [ <:with_constr< $w1$ and $w2$ >> -> @@ -493,6 +450,83 @@ module Make (Loc : Sig.Loc) list_of_module_binding x (list_of_module_binding y acc) | x -> [x :: acc] ]; + module Meta = struct + + module type META_LOC = sig + (** The first location is where to put the returned pattern. + Generally it's _loc to match with <:patt< ... >> quotations. + The second location is the one to treat. *) + value meta_loc_patt : Loc.t -> Loc.t -> Ast.patt; + (** The first location is where to put the returned expression. + Generally it's _loc to match with <:expr< ... >> quotations. + The second location is the one to treat. *) + value meta_loc_expr : Loc.t -> Loc.t -> Ast.expr; + end; + + module MetaLoc = struct + value meta_loc_patt _loc location = + let (a, b, c, d, e, f, g, h) = Loc.to_tuple location in + <:patt< Loc.of_tuple + ($`str:a$, $`int:b$, $`int:c$, $`int:d$, + $`int:e$, $`int:f$, $`int:g$, + $if h then <:patt< True >> else <:patt< False >> $) >>; + value meta_loc_expr _loc location = + let (a, b, c, d, e, f, g, h) = Loc.to_tuple location in + <:expr< Loc.of_tuple + ($`str:a$, $`int:b$, $`int:c$, $`int:d$, + $`int:e$, $`int:f$, $`int:g$, + $if h then <:expr< True >> else <:expr< False >> $) >>; + end; + + module MetaGhostLoc = struct + value meta_loc_patt _loc _ = <:patt< Loc.ghost >>; + value meta_loc_expr _loc _ = <:expr< Loc.ghost >>; + end; + + module MetaLocVar = struct + value meta_loc_patt _loc _ = <:patt< $lid:Loc.name.val$ >>; + value meta_loc_expr _loc _ = <:expr< $lid:Loc.name.val$ >>; + end; + + module Make (MetaLoc : META_LOC) = struct + open MetaLoc; + + value meta_acc_Loc_t = meta_loc_expr; + module Expr = Camlp4Filters.MetaGeneratorExpr Ast; + value meta_acc_Loc_t = meta_loc_patt; + module Patt = Camlp4Filters.MetaGeneratorPatt Ast; + end; + + end; + + class map = Camlp4Filters.GenerateMap.generated; + + class fold = Camlp4Filters.GenerateFold.generated; + + value map_expr f = object + inherit map as super; + method expr x = f (super#expr x); + end; + value map_patt f = object + inherit map as super; + method patt x = f (super#patt x); + end; + value map_ctyp f = object + inherit map as super; + method ctyp x = f (super#ctyp x); + end; + value map_str_item f = object + inherit map as super; + method str_item x = f (super#str_item x); + end; + value map_sig_item f = object + inherit map as super; + method sig_item x = f (super#sig_item x); + end; + value map_loc f = object + inherit map as super; + method _Loc_t x = f (super#_Loc_t x); + end; end; module Camlp4Trash = struct diff --git a/camlp4/Camlp4/Struct/Camlp4Ast2OCamlAst.ml b/camlp4/Camlp4/Struct/Camlp4Ast2OCamlAst.ml index 9957beba..fd2c38a7 100644 --- a/camlp4/Camlp4/Struct/Camlp4Ast2OCamlAst.ml +++ b/camlp4/Camlp4/Struct/Camlp4Ast2OCamlAst.ml @@ -18,7 +18,7 @@ * - Nicolas Pouillard: refactoring *) -(* $Id: Camlp4Ast2OCamlAst.ml,v 1.15 2007/02/26 16:32:46 ertai Exp $ *) +(* $Id: Camlp4Ast2OCamlAst.ml,v 1.15.2.4 2007/05/10 13:31:20 pouillar Exp $ *) module Make (Ast : Sig.Camlp4Ast) = struct open Format; @@ -42,6 +42,18 @@ module Make (Ast : Sig.Camlp4Ast) = struct with [ Failure _ as exn -> Loc.raise loc exn ] ; + value remove_underscores s = + let l = String.length s in + let rec remove src dst = + if src >= l then + if dst >= l then s else String.sub s 0 dst + else + match s.[src] with + [ '_' -> remove (src + 1) dst + | c -> do { s.[dst] := c; remove (src + 1) (dst + 1) } ] + in remove 0 0 + ; + value mkloc = Loc.to_ocaml_location; value mkghloc loc = Loc.to_ocaml_location (Loc.ghostify loc); @@ -288,14 +300,14 @@ module Make (Ast : Sig.Camlp4Ast) = struct | _ -> assert False (*FIXME*) ]; value rec type_decl tl cl loc m pflag = fun - [ TyMan _ t1 t2 -> + [ <:ctyp< $t1$ == $t2$ >> -> type_decl tl cl loc (Some (ctyp t1)) pflag t2 - | TyPrv _ t -> + | <:ctyp< private $t$ >> -> type_decl tl cl loc m True t - | TyRec _ t -> + | <:ctyp< { $t$ } >> -> mktype loc tl cl (Ptype_record (List.map mktrecord (list_of_ctyp t [])) (mkprivate' pflag)) m - | TySum _ t -> + | <:ctyp< [ $t$ ] >> -> mktype loc tl cl (Ptype_variant (List.map mkvariant (list_of_ctyp t [])) (mkprivate' pflag)) m | t -> @@ -303,7 +315,7 @@ module Make (Ast : Sig.Camlp4Ast) = struct error loc "only one manifest type allowed by definition" else let m = match t with - [ TyQuo _ s -> if List.mem_assoc s tl then Some (ctyp t) else None + [ <:ctyp<>> -> None | _ -> Some (ctyp t) ] in let k = if pflag then Ptype_private else Ptype_abstract in @@ -465,7 +477,7 @@ module Make (Ast : Sig.Camlp4Ast) = struct let nati = try Nativeint.of_string s with [ Failure _ -> error loc "Integer literal exceeds the range of representable integers of type nativeint" ] in mkpat loc (Ppat_constant (Const_nativeint nati)) - | PaFlo loc s -> mkpat loc (Ppat_constant (Const_float s)) + | PaFlo loc s -> mkpat loc (Ppat_constant (Const_float (remove_underscores s))) | PaLab loc _ _ -> error loc "labeled pattern not allowed here" | PaOlb loc _ _ | PaOlbi loc _ _ _ -> error loc "labeled pattern not allowed here" | PaOrp loc p1 p2 -> mkpat loc (Ppat_or (patt p1) (patt p2)) @@ -491,7 +503,7 @@ module Make (Ast : Sig.Camlp4Ast) = struct error (loc_of_patt p) "invalid pattern" ] and mklabpat = fun - [ <:patt< $id:i$ = $p$ >> -> (ident ~conv_lid:conv_lab i, patt p) + [ <:patt< $i$ = $p$ >> -> (ident ~conv_lid:conv_lab i, patt p) | p -> error (loc_of_patt p) "invalid pattern" ]; value rec expr_fa al = @@ -622,7 +634,7 @@ module Make (Ast : Sig.Camlp4Ast) = struct [ <:ctyp<>> -> None | t -> Some (ctyp t) ] in mkexp loc (Pexp_constraint (expr e) t1 (Some (ctyp t2))) - | ExFlo loc s -> mkexp loc (Pexp_constant (Const_float s)) + | ExFlo loc s -> mkexp loc (Pexp_constant (Const_float (remove_underscores s))) | ExFor loc i e1 e2 df el -> let e3 = ExSeq loc el in let df = if mb2b df then Upto else Downto in @@ -677,7 +689,7 @@ module Make (Ast : Sig.Camlp4Ast) = struct | ExOvr loc iel -> mkexp loc (Pexp_override (mkideexp iel [])) | ExRec loc lel eo -> match lel with - [ <:binding<>> -> error loc "empty record" + [ <:rec_binding<>> -> error loc "empty record" | _ -> let eo = match eo with @@ -736,7 +748,7 @@ module Make (Ast : Sig.Camlp4Ast) = struct | e -> ("", expr e) ] and binding x acc = match x with - [ <:binding< $x$ and $y$ >> | <:binding< $x$; $y$ >> -> + [ <:binding< $x$ and $y$ >> -> binding x (binding y acc) | <:binding< $p$ = $e$ >> -> [(patt p, expr e) :: acc] | <:binding<>> -> acc @@ -754,15 +766,15 @@ module Make (Ast : Sig.Camlp4Ast) = struct | w -> mkexp (loc_of_expr w) (Pexp_when (expr w) (expr e)) ] and mklabexp x acc = match x with - [ <:binding< $x$ and $y$ >> | <:binding< $x$; $y$ >> -> + [ <:rec_binding< $x$; $y$ >> -> mklabexp x (mklabexp y acc) - | <:binding< $id:i$ = $e$ >> -> [(ident ~conv_lid:conv_lab i, expr e) :: acc] + | <:rec_binding< $i$ = $e$ >> -> [(ident ~conv_lid:conv_lab i, expr e) :: acc] | _ -> assert False ] and mkideexp x acc = match x with - [ <:binding< $x$ and $y$ >> | <:binding< $x$; $y$ >> -> + [ <:rec_binding< $x$; $y$ >> -> mkideexp x (mkideexp y acc) - | <:binding< $lid:s$ = $e$ >> -> [(s, expr e) :: acc] + | <:rec_binding< $lid:s$ = $e$ >> -> [(s, expr e) :: acc] | _ -> assert False ] and mktype_decl x acc = match x with @@ -780,13 +792,14 @@ module Make (Ast : Sig.Camlp4Ast) = struct | _ -> assert False ] and module_type = fun - [ MtId loc i -> mkmty loc (Pmty_ident (long_uident i)) - | MtFun loc n nt mt -> + [ <:module_type@loc<>> -> error loc "abstract/nil module type not allowed here" + | <:module_type@loc< $id:i$ >> -> mkmty loc (Pmty_ident (long_uident i)) + | <:module_type@loc< functor ($n$ : $nt$) -> $mt$ >> -> mkmty loc (Pmty_functor n (module_type nt) (module_type mt)) - | MtQuo loc _ -> error loc "abstract module type not allowed here" - | MtSig loc sl -> + | <:module_type@loc< '$_$ >> -> error loc "module type variable not allowed here" + | <:module_type@loc< sig $sl$ end >> -> mkmty loc (Pmty_signature (sig_item sl [])) - | MtWit loc mt wc -> + | <:module_type@loc< $mt$ with $wc$ >> -> mkmty loc (Pmty_with (module_type mt) (mkwithc wc [])) | <:module_type< $anti:_$ >> -> assert False ] and sig_item s l = @@ -839,14 +852,15 @@ module Make (Ast : Sig.Camlp4Ast) = struct | _ -> assert False ] and module_expr = fun - [ MeId loc i -> mkmod loc (Pmod_ident (long_uident i)) - | MeApp loc me1 me2 -> + [ <:module_expr@loc<>> -> error loc "nil module expression" + | <:module_expr@loc< $id:i$ >> -> mkmod loc (Pmod_ident (long_uident i)) + | <:module_expr@loc< $me1$ $me2$ >> -> mkmod loc (Pmod_apply (module_expr me1) (module_expr me2)) - | MeFun loc n mt me -> + | <:module_expr@loc< functor ($n$ : $mt$) -> $me$ >> -> mkmod loc (Pmod_functor n (module_type mt) (module_expr me)) - | MeStr loc sl -> + | <:module_expr@loc< struct $sl$ end >> -> mkmod loc (Pmod_structure (str_item sl [])) - | MeTyc loc me mt -> + | <:module_expr@loc< ($me$ : $mt$) >> -> mkmod loc (Pmod_constraint (module_expr me) (module_type mt)) | <:module_expr@loc< $anti:_$ >> -> error loc "antiquotation in module_expr" ] and str_item s l = diff --git a/camlp4/Camlp4/Struct/CleanAst.ml b/camlp4/Camlp4/Struct/CleanAst.ml index 0374ae28..bd1cac2f 100644 --- a/camlp4/Camlp4/Struct/CleanAst.ml +++ b/camlp4/Camlp4/Struct/CleanAst.ml @@ -30,7 +30,7 @@ module Make (Ast : Sig.Camlp4Ast) = struct method expr = fun [ <:expr< let $rec:_$ $ <:binding<>> $ in $e$ >> | - <:expr< { ($e$) with $ <:binding<>> $ } >> | + <:expr< { ($e$) with $ <:rec_binding<>> $ } >> | <:expr< $ <:expr<>> $, $e$ >> | <:expr< $e$, $ <:expr<>> $ >> | <:expr< $ <:expr<>> $; $e$ >> | @@ -54,11 +54,14 @@ module Make (Ast : Sig.Camlp4Ast) = struct method binding = fun [ <:binding< $ <:binding<>> $ and $bi$ >> | - <:binding< $bi$ and $ <:binding<>> $ >> | - <:binding< $ <:binding<>> $ ; $bi$ >> | - <:binding< $bi$ ; $ <:binding<>> $ >> -> self#binding bi + <:binding< $bi$ and $ <:binding<>> $ >> -> self#binding bi | bi -> super#binding bi ]; + method rec_binding = fun + [ <:rec_binding< $ <:rec_binding<>> $ ; $bi$ >> | + <:rec_binding< $bi$ ; $ <:rec_binding<>> $ >> -> self#rec_binding bi + | bi -> super#rec_binding bi ]; + method module_binding = fun [ <:module_binding< $ <:module_binding<>> $ and $mb$ >> | <:module_binding< $mb$ and $ <:module_binding<>> $ >> -> diff --git a/camlp4/Camlp4/Struct/CommentFilter.mli b/camlp4/Camlp4/Struct/CommentFilter.mli index c1789c6c..79ece6a4 100644 --- a/camlp4/Camlp4/Struct/CommentFilter.mli +++ b/camlp4/Camlp4/Struct/CommentFilter.mli @@ -19,7 +19,7 @@ module Make (Token : Sig.Camlp4Token) : sig open Token; - type t = 'abstract; + type t; value mk : unit -> t; diff --git a/camlp4/Camlp4/Struct/DynAst.ml b/camlp4/Camlp4/Struct/DynAst.ml new file mode 100644 index 00000000..2161e1c9 --- /dev/null +++ b/camlp4/Camlp4/Struct/DynAst.ml @@ -0,0 +1,91 @@ +(* camlp4r *) +(****************************************************************************) +(* *) +(* Objective Caml *) +(* *) +(* INRIA Rocquencourt *) +(* *) +(* Copyright 2007 Institut National de Recherche en Informatique et *) +(* en Automatique. All rights reserved. This file is distributed under *) +(* the terms of the GNU Library General Public License, with the special *) +(* exception on linking described in LICENSE at the top of the Objective *) +(* Caml source tree. *) +(* *) +(****************************************************************************) + +(* Authors: + * - Nicolas Pouillard: initial version + *) + +module Make (Ast : Sig.Ast) : Sig.DynAst with module Ast = Ast = struct + module Ast = Ast; + type tag 'a = + [ Tag_ctyp + | Tag_patt + | Tag_expr + | Tag_module_type + | Tag_sig_item + | Tag_with_constr + | Tag_module_expr + | Tag_str_item + | Tag_class_type + | Tag_class_sig_item + | Tag_class_expr + | Tag_class_str_item + | Tag_match_case + | Tag_ident + | Tag_binding + | Tag_rec_binding + | Tag_module_binding ]; + + value string_of_tag = + fun + [ Tag_ctyp -> "ctyp" + | Tag_patt -> "patt" + | Tag_expr -> "expr" + | Tag_module_type -> "module_type" + | Tag_sig_item -> "sig_item" + | Tag_with_constr -> "with_constr" + | Tag_module_expr -> "module_expr" + | Tag_str_item -> "str_item" + | Tag_class_type -> "class_type" + | Tag_class_sig_item -> "class_sig_item" + | Tag_class_expr -> "class_expr" + | Tag_class_str_item -> "class_str_item" + | Tag_match_case -> "match_case" + | Tag_ident -> "ident" + | Tag_binding -> "binding" + | Tag_rec_binding -> "rec_binding" + | Tag_module_binding -> "module_binding" ]; + + value ctyp_tag = Tag_ctyp; + value patt_tag = Tag_patt; + value expr_tag = Tag_expr; + value module_type_tag = Tag_module_type; + value sig_item_tag = Tag_sig_item; + value with_constr_tag = Tag_with_constr; + value module_expr_tag = Tag_module_expr; + value str_item_tag = Tag_str_item; + value class_type_tag = Tag_class_type; + value class_sig_item_tag = Tag_class_sig_item; + value class_expr_tag = Tag_class_expr; + value class_str_item_tag = Tag_class_str_item; + value match_case_tag = Tag_match_case; + value ident_tag = Tag_ident; + value binding_tag = Tag_binding; + value rec_binding_tag = Tag_rec_binding; + value module_binding_tag = Tag_module_binding; + + type dyn; + external dyn_tag : tag 'a -> tag dyn = "%identity"; + + module Pack(X : sig type t 'a; end) = struct + (* These Obj.* hacks should be avoided with GADTs *) + type pack = (tag dyn * Obj.t); + exception Pack_error; + value pack tag v = (dyn_tag tag, Obj.repr v); + value unpack (tag : tag 'a) (tag', obj) = + if dyn_tag tag = tag' then (Obj.obj obj : X.t 'a) else raise Pack_error; + value print_tag f (tag, _) = Format.pp_print_string f (string_of_tag tag); + end; +end; diff --git a/camlp4/Camlp4/Struct/EmptyPrinter.ml b/camlp4/Camlp4/Struct/EmptyPrinter.ml index 2cde4dde..5886809b 100644 --- a/camlp4/Camlp4/Struct/EmptyPrinter.ml +++ b/camlp4/Camlp4/Struct/EmptyPrinter.ml @@ -17,8 +17,6 @@ *) module Make (Ast : Sig.Ast) = struct - module Ast = Ast; - value print_interf ?input_file:(_) ?output_file:(_) _ = failwith "No interface printer"; value print_implem ?input_file:(_) ?output_file:(_) _ = failwith "No implementation printer"; end; diff --git a/camlp4/Camlp4/Struct/EmptyPrinter.mli b/camlp4/Camlp4/Struct/EmptyPrinter.mli index 186d9301..f8bf907a 100644 --- a/camlp4/Camlp4/Struct/EmptyPrinter.mli +++ b/camlp4/Camlp4/Struct/EmptyPrinter.mli @@ -16,4 +16,4 @@ * - Nicolas Pouillard: initial version *) -module Make (Ast : Sig.Ast) : Sig.Printer with module Ast = Ast; +module Make (Ast : Sig.Ast) : (Sig.Printer Ast).S; diff --git a/camlp4/Camlp4/Struct/FreeVars.ml b/camlp4/Camlp4/Struct/FreeVars.ml index ffeae02f..78c33ef4 100644 --- a/camlp4/Camlp4/Struct/FreeVars.ml +++ b/camlp4/Camlp4/Struct/FreeVars.ml @@ -23,13 +23,13 @@ module Make (Ast : Sig.Camlp4Ast) = struct value rec fold_binding_vars f bi acc = match bi with - [ <:binding< $bi1$ and $bi2$ >> | <:binding< $bi1$; $bi2$ >> -> + [ <:binding< $bi1$ and $bi2$ >> -> fold_binding_vars f bi1 (fold_binding_vars f bi2 acc) | <:binding< $lid:i$ = $_$ >> -> f i acc | _ -> assert False ]; class c_fold_pattern_vars ['accu] f init = - object (o) + object inherit Ast.fold as super; value acc = init; method acc : 'accu = acc; @@ -37,7 +37,6 @@ module Make (Ast : Sig.Camlp4Ast) = struct fun [ <:patt< $lid:s$ >> | <:patt< ~ $s$ >> | <:patt< ? $s$ >> -> {< acc = f s acc >} - | <:patt< $lid:_$ = $p$ >> -> o#patt p | p -> super#patt p ]; end; diff --git a/camlp4/Camlp4/Struct/Grammar/Context.ml b/camlp4/Camlp4/Struct/Grammar/Context.ml index fbd24134..75d731c6 100644 --- a/camlp4/Camlp4/Struct/Grammar/Context.ml +++ b/camlp4/Camlp4/Struct/Grammar/Context.ml @@ -20,7 +20,7 @@ module type S = sig module Token : Sig.Token; open Token; - type t = 'abstract; + type t; value call_with_ctx : Stream.t (Token.t * Loc.t) -> (t -> 'a) -> 'a; value loc_bp : t -> Loc.t; value loc_ep : t -> Loc.t; @@ -68,8 +68,8 @@ module Make (Token : Sig.Token) : S with module Token = Token = struct loop list n; value njunk c n = - do { for i = 1 to n do { Stream.junk c.strm }; - set_loc c }; + (for i = 1 to n do Stream.junk c.strm done; + set_loc c); value streams = ref []; value mk strm = diff --git a/camlp4/Camlp4/Struct/Grammar/Parser.mli b/camlp4/Camlp4/Struct/Grammar/Parser.mli new file mode 100644 index 00000000..df0340e8 --- /dev/null +++ b/camlp4/Camlp4/Struct/Grammar/Parser.mli @@ -0,0 +1,70 @@ +(* camlp4r *) +(****************************************************************************) +(* *) +(* Objective Caml *) +(* *) +(* INRIA Rocquencourt *) +(* *) +(* Copyright 2007 Institut National de Recherche en Informatique et *) +(* en Automatique. All rights reserved. This file is distributed under *) +(* the terms of the GNU Library General Public License, with the special *) +(* exception on linking described in LICENSE at the top of the Objective *) +(* Caml source tree. *) +(* *) +(****************************************************************************) + +(* $Id: Parser.mli,v 1.1.2.1 2007/03/22 21:46:09 pouillar Exp $ *) + +(* Authors: + * - Daniel de Rauglaudre: initial version + * - Nicolas Pouillard: refactoring + *) + +module Make (Structure : Structure.S) : sig + open Structure; + open Context; + value add_loc : + Context.t -> Loc.t -> (Context.t -> 'a -> 'b) -> 'a -> ('b * Loc.t); + value level_number : internal_entry -> string -> int; + value strict_parsing : ref bool; + value strict_parsing_warning : ref bool; + value top_symb : + internal_entry -> symbol -> symbol; + value top_tree : + internal_entry -> tree -> tree; + value entry_of_symb : + internal_entry -> symbol -> internal_entry; + value continue : + internal_entry -> Loc.t -> Action.t -> symbol -> Context.t -> tree -> + (Stream.t (Token.t * Loc.t) -> Action.t) -> Stream.t (Token.t * Loc.t) -> Action.t; + value skip_if_empty : + Context.t -> Loc.t -> ('a -> 'b) -> 'a -> Action.t; + value do_recover : + (internal_entry -> 'a -> 'b -> tree -> Context.t -> Stream.t (Token.t * Loc.t) -> Action.t) -> internal_entry -> + 'a -> 'b -> Loc.t -> Action.t -> symbol -> Context.t -> tree -> Stream.t (Token.t * Loc.t) -> Action.t; + value recover : + (internal_entry -> 'a -> 'b -> tree -> Context.t -> Stream.t (Token.t * Loc.t) -> Action.t) -> internal_entry -> + 'a -> 'b -> Loc.t -> Action.t -> symbol -> Context.t -> tree -> Stream.t (Token.t * Loc.t) -> Action.t; + value parser_of_tree : + internal_entry -> int -> int -> tree -> Context.t -> Stream.t (Token.t * Loc.t) -> Action.t; + value parser_cont : + (Context.t -> Stream.t (Token.t * Loc.t) -> Action.t) -> internal_entry -> int -> int -> symbol -> tree -> + Context.t -> Loc.t -> Action.t -> Stream.t (Token.t * Loc.t) -> Action.t; + value parser_of_token_list : + (Context.t -> Loc.t -> Action.t -> Stream.t (Token.t * Loc.t) -> Action.t) -> list symbol -> Context.t -> Stream.t (Token.t * Loc.t) -> Action.t; + value parser_of_symbol : + internal_entry -> int -> symbol -> Context.t -> Stream.t (Token.t * Loc.t) -> Action.t; + value parse_top_symb' : + internal_entry -> symbol -> Context.t -> Stream.t (Token.t * Loc.t) -> Action.t; + value parse_top_symb : + internal_entry -> symbol -> Stream.t (Token.t * Loc.t) -> Action.t; + value start_parser_of_levels : + internal_entry -> int -> list level -> int -> Context.t -> Stream.t (Token.t * Loc.t) -> Action.t; + value start_parser_of_entry : + internal_entry -> int -> Context.t -> Stream.t (Token.t * Loc.t) -> Action.t; + value continue_parser_of_levels : + internal_entry -> int -> list level -> Context.t -> int -> Loc.t -> 'a -> Stream.t (Token.t * Loc.t) -> Action.t; + value continue_parser_of_entry : + internal_entry -> int -> Loc.t -> Action.t -> Context.t -> Stream.t (Token.t * Loc.t) -> Action.t; +end; + diff --git a/camlp4/Camlp4/Struct/Grammar/Print.ml b/camlp4/Camlp4/Struct/Grammar/Print.ml index dadf4aed..f5a97230 100644 --- a/camlp4/Camlp4/Struct/Grammar/Print.ml +++ b/camlp4/Camlp4/Struct/Grammar/Print.ml @@ -27,7 +27,7 @@ module Make (Structure : Structure.S) = struct [ DeadEnd -> [] | LocAct _ _ -> [[]] | Node {node = n; brother = b; son = s} -> - List.map (fun l -> [n :: l]) (flatten_tree s) @ flatten_tree b ]; + [ [n :: l] | l <- flatten_tree s ] @ flatten_tree b ]; value rec print_symbol ppf = fun @@ -101,7 +101,7 @@ module Make (Structure : Structure.S) = struct List.fold_left (fun sep lev -> let rules = - List.map (fun t -> [Sself :: t]) (flatten_tree lev.lsuffix) @ + [ [Sself :: t] | t <- flatten_tree lev.lsuffix ] @ flatten_tree lev.lprefix in do { diff --git a/camlp4/Camlp4/Struct/Lexer.mll b/camlp4/Camlp4/Struct/Lexer.mll index 0a471b3f..3844ff56 100644 --- a/camlp4/Camlp4/Struct/Lexer.mll +++ b/camlp4/Camlp4/Struct/Lexer.mll @@ -18,7 +18,7 @@ *) -(* $Id: Lexer.mll,v 1.6 2007/02/07 10:09:21 ertai Exp $ *) +(* $Id: Lexer.mll,v 1.6.4.7 2007/05/10 22:43:18 pouillar Exp $ *) (* The lexer definition *) @@ -110,15 +110,16 @@ module Make (Token : Sig.Camlp4Token) (* To store some context information: * loc : position of the beginning of a string, quotation and comment * in_comment: are we in a comment? - * quotations: shall we lex quotation? (antiquotations are lexed if - * quotations are). + * quotations: shall we lex quotation? * If quotations is false it's a SYMBOL token. + * antiquots : shall we lex antiquotations. *) type context = { loc : Loc.t ; in_comment : bool ; quotations : bool ; + antiquots : bool ; lexbuf : lexbuf ; buffer : Buffer.t } @@ -126,6 +127,7 @@ module Make (Token : Sig.Camlp4Token) { loc = Loc.ghost ; in_comment = false ; quotations = true ; + antiquots = false ; lexbuf = lb ; buffer = Buffer.create 256 } @@ -139,6 +141,7 @@ module Make (Token : Sig.Camlp4Token) let loc c = Loc.merge c.loc (Loc.of_lexbuf c.lexbuf) let quotations c = c.quotations + let antiquots c = c.antiquots let is_in_comment c = c.in_comment let in_comment c = { (c) with in_comment = true } let set_start_p c = c.lexbuf.lex_start_p <- Loc.start_pos c.loc @@ -146,7 +149,8 @@ module Make (Token : Sig.Camlp4Token) let p = c.lexbuf.lex_start_p in c.lexbuf.lex_start_p <- { (p) with pos_cnum = p.pos_cnum + shift } - let with_curr_loc f c = f { (c) with loc = Loc.of_lexbuf c.lexbuf } c.lexbuf + let update_loc c = { (c) with loc = Loc.of_lexbuf c.lexbuf } + let with_curr_loc f c = f (update_loc c) c.lexbuf let parse_nested f c = with_curr_loc f c; set_start_p c; @@ -155,7 +159,7 @@ module Make (Token : Sig.Camlp4Token) let store_parse f c = store c ; f c c.lexbuf let parse f c = f c c.lexbuf let mk_quotation quotation c name loc shift = - let s = parse_nested quotation c in + let s = parse_nested quotation (update_loc c) in let contents = String.sub s 0 (String.length s - 2) in QUOTATION { q_name = name ; q_loc = loc ; @@ -193,8 +197,10 @@ module Make (Token : Sig.Camlp4Token) let identchar = ['A'-'Z' 'a'-'z' '_' '\192'-'\214' '\216'-'\246' '\248'-'\255' '\'' '0'-'9'] let ident = (lowercase|uppercase) identchar* - let symbolchar = - ['$' '!' '%' '&' '*' '+' '-' '.' '/' ':' '<' '=' '>' '?' '@' '^' '|' '~'] + let locname = ident + let not_star_symbolchar = + ['$' '!' '%' '&' '+' '-' '.' '/' ':' '<' '=' '>' '?' '@' '^' '|' '~' '\\'] + let symbolchar = '*' | not_star_symbolchar let hexa_char = ['0'-'9' 'A'-'F' 'a'-'f'] let decimal_literal = ['0'-'9'] ['0'-'9' '_']* @@ -211,6 +217,43 @@ module Make (Token : Sig.Camlp4Token) ('.' ['0'-'9' '_']* )? (['e' 'E'] ['+' '-']? ['0'-'9'] ['0'-'9' '_']*)? + (* Delimitors are extended (from 3.09) in a conservative way *) + + (* These chars that can't start an expression or a pattern: *) + let safe_delimchars = ['%' '&' '.' '/' '@' '^'] + + (* These symbols are unsafe since "[<", "[|", etc. exsist. *) + let delimchars = safe_delimchars | ['|' '<' '>' ':' '='] + + let left_delims = ['(' '[' '{'] + let right_delims = [')' ']' '}'] + + let left_delimitor = + (* At least a safe_delimchars *) + left_delims (delimchars|left_delims)* safe_delimchars (delimchars|left_delims)* + + (* A '(' or a new super '(' without "(<" *) + | '(' (['|' ':'] delimchars*)? + (* Old brackets, no new brackets starting with "[|" or "[:" *) + | '[' ['|' ':']? + (* Old "[<","{<" and new ones *) + | ['[' '{'] delimchars* '<' + (* Old brace and new ones *) + | '{' (['|' ':'] delimchars*)? + + let right_delimitor = + (* At least a safe_delimchars *) + (delimchars|right_delims)* safe_delimchars (delimchars|right_delims)* right_delims + (* A ')' or a new super ')' without ">)" *) + | (delimchars* ['|' ':'])? ')' + (* Old brackets, no new brackets ending with "|]" or ":]" *) + | ['|' ':']? ']' + (* Old ">]",">}" and new ones *) + | '>' delimchars* [']' '}'] + (* Old brace and new ones *) + | (delimchars* ['|' ':'])? '}' + + rule token c = parse | newline { update_loc c None 1 false 0; NEWLINE } | blank + as x { BLANKS x } @@ -272,16 +315,24 @@ module Make (Token : Sig.Camlp4Token) [^ '\010' '\013'] * newline { let inum = int_of_string num in update_loc c name inum true 0; LINE_DIRECTIVE(inum, name) } - | ( "#" | "`" | "'" | "(" | ")" | "," | "." | ".." | ":" | "::" - | ":=" | ":>" | ":]" | ";" | ";;" | "[" | "[|" | "[<" | "[:" - | "]" | "{" | "{<" | "|]" | ">]" | "}" | ">}" | "_" ) as x { SYMBOL x } - - | '$' { if quotations c + | '(' (not_star_symbolchar as op) ')' + { ESCAPED_IDENT (String.make 1 op) } + | '(' (not_star_symbolchar symbolchar* not_star_symbolchar as op) ')' + { ESCAPED_IDENT op } + | '(' (not_star_symbolchar symbolchar* as op) blank+ ')' + { ESCAPED_IDENT op } + | '(' blank+ (symbolchar* not_star_symbolchar as op) ')' + { ESCAPED_IDENT op } + | '(' blank+ (symbolchar+ as op) blank+ ')' + { ESCAPED_IDENT op } + | ( "#" | "`" | "'" | "," | "." | ".." | ":" | "::" + | ":=" | ":>" | ";" | ";;" | "_" + | left_delimitor | right_delimitor ) as x { SYMBOL x } + | '$' { if antiquots c then with_curr_loc dollar (shift 1 c) else parse (symbolchar_star "$") c } - | ['~' '?' '!' '=' '<' '>' '|' '&' '@' '^' '+' '-' '*' '/' '%'] symbolchar * + | ['~' '?' '!' '=' '<' '>' '|' '&' '@' '^' '+' '-' '*' '/' '%' '\\'] symbolchar * as x { SYMBOL x } - | '\\' ((symbolchar | identchar)+ as x) { ESCAPED_IDENT x } | eof { let pos = lexbuf.lex_curr_p in lexbuf.lex_curr_p <- { pos with pos_bol = pos.pos_bol + 1 ; @@ -292,7 +343,7 @@ module Make (Token : Sig.Camlp4Token) "(*" { store c; with_curr_loc comment c; parse comment c } | "*)" { store c } - | '<' (':' ident)? ('@' ident)? '<' + | '<' (':' ident)? ('@' locname)? '<' { store c; if quotations c then with_curr_loc quotation c; parse comment c } | ident { store_parse comment c } @@ -350,13 +401,13 @@ module Make (Token : Sig.Camlp4Token) and maybe_quotation_colon c = parse | (ident as name) '<' { mk_quotation quotation c name "" (3 + String.length name) } - | (ident as name) '@' (ident as loc) '<' + | (ident as name) '@' (locname as loc) '<' { mk_quotation quotation c name loc (4 + String.length loc + String.length name) } | symbolchar* as tok { SYMBOL("<:" ^ tok) } and quotation c = parse - | '<' (':' ident)? ('@' ident)? '<' { store c ; + | '<' (':' ident)? ('@' locname)? '<' { store c ; with_curr_loc quotation c ; parse quotation c } | ">>" { store c } @@ -367,19 +418,16 @@ module Make (Token : Sig.Camlp4Token) and dollar c = parse | '$' { set_start_p c; ANTIQUOT("", "") } - (* Removed because it breaks escapings like: <:expr< $str: "\n"$ >> - * | '\\' _ { istore_char c 1; parse (antiquot "") c } *) | ('`'? (identchar*|'.'+) as name) ':' { with_curr_loc (antiquot name) (shift (1 + String.length name) c) } | _ { store_parse (antiquot "") c } and antiquot name c = parse | '$' { set_start_p c; ANTIQUOT(name, buff_contents c) } - (* Idem: | '\\' _ { istore_char c 1; parse (antiquot name) c } *) | eof { err Unterminated_antiquot (loc c) } | newline { update_loc c None 1 false 0; store_parse (antiquot name) c } - | '<' (':' ident)? ('@' ident)? '<' + | '<' (':' ident)? ('@' locname)? '<' { store c; with_curr_loc quotation c; parse (antiquot name) c } | _ { store_parse (antiquot name) c } @@ -408,6 +456,7 @@ module Make (Token : Sig.Camlp4Token) let from_lexbuf ?(quotations = true) lb = let c = { (default_context lb) with loc = Loc.of_lexbuf lb; + antiquots = !Camlp4_config.antiquotations; quotations = quotations } in from_context c diff --git a/camlp4/Camlp4/Struct/Quotation.ml b/camlp4/Camlp4/Struct/Quotation.ml index ea461a98..d150b951 100644 --- a/camlp4/Camlp4/Struct/Quotation.ml +++ b/camlp4/Camlp4/Struct/Quotation.ml @@ -18,24 +18,29 @@ * - Nicolas Pouillard: refactoring *) - -(* $Id: Quotation.ml,v 1.4 2007/02/07 10:09:21 ertai Exp $ *) +(* $Id: Quotation.ml,v 1.4.4.1 2007/03/29 14:31:04 pouillar Exp $ *) module Make (Ast : Sig.Ast) : Sig.Quotation with module Ast = Ast = struct module Ast = Ast; + module DynAst = DynAst.Make Ast; module Loc = Ast.Loc; open Format; open Sig; type expand_fun 'a = Loc.t -> option string -> string -> 'a; - type expander = - [ ExStr of bool -> expand_fun string - | ExAst of (expand_fun Ast.expr) and (expand_fun Ast.patt) ]; + module Exp_key = DynAst.Pack(struct + type t 'a = unit; + end); + + module Exp_fun = DynAst.Pack(struct + type t 'a = expand_fun 'a; + end); - value expanders_table = ref []; + value expanders_table = + (ref [] : ref (list ((string * Exp_key.pack) * Exp_fun.pack))); value default = ref ""; value translate = ref (fun x -> x); @@ -45,9 +50,13 @@ module Make (Ast : Sig.Ast) [ "" -> default.val | name -> name ]; - value find name = List.assoc (expander_name name) expanders_table.val; + value find name tag = + let key = (expander_name name, Exp_key.pack tag ()) in + Exp_fun.unpack tag (List.assoc key expanders_table.val); - value add name f = expanders_table.val := [(name, f) :: expanders_table.val]; + value add name tag f = + let elt = ((name, Exp_key.pack tag ()), Exp_fun.pack tag f) in + expanders_table.val := [elt :: expanders_table.val]; value dump_file = ref None; @@ -57,18 +66,21 @@ module Make (Ast : Sig.Ast) | Expanding | ParsingResult of Loc.t and string | Locating ]; - type t = (string * error * exn); + type t = (string * string * error * exn); exception E of t; - value print ppf (name, ctx, exn) = + value print ppf (name, position, ctx, exn) = let name = if name = "" then default.val else name in - let pp x = fprintf ppf "@?@[<2>While %s %S:" x name in + let pp x = fprintf ppf "@?@[<2>While %s %S in a position of %S:" x name position in let () = match ctx with [ Finding -> do { pp "finding quotation"; - fprintf ppf " available quotations are:\n@[<2>"; - List.iter (fun (s,_) -> fprintf ppf "%s@ " s) expanders_table.val; + fprintf ppf "@ @[Available quotations are:@\n"; + List.iter begin fun ((s,t),_) -> + fprintf ppf "@[<2>%s@ (in@ a@ position@ of %a)@]@ " + s Exp_key.print_tag t + end expanders_table.val; fprintf ppf "@]" } | Expanding -> pp "expanding quotation" @@ -105,56 +117,46 @@ module Make (Ast : Sig.Ast) let module M = ErrorHandler.Register Error in (); open Error; - value expand_quotation loc expander quot = + value expand_quotation loc expander pos_tag quot = debug quot "expand_quotation: name: %s, str: %S@." quot.q_name quot.q_contents in let loc_name_opt = if quot.q_loc = "" then None else Some quot.q_loc in try expander loc loc_name_opt quot.q_contents with [ Loc.Exc_located _ (Error.E _) as exc -> raise exc | Loc.Exc_located iloc exc -> - let exc1 = Error.E (quot.q_name, Expanding, exc) in + let exc1 = Error.E (quot.q_name, pos_tag, Expanding, exc) in raise (Loc.Exc_located iloc exc1) | exc -> - let exc1 = Error.E (quot.q_name, Expanding, exc) in + let exc1 = Error.E (quot.q_name, pos_tag, Expanding, exc) in raise (Loc.Exc_located loc exc1) ]; - value parse_quotation_result parse loc quot str = + value parse_quotation_result parse loc quot pos_tag str = try parse loc str with - [ Loc.Exc_located iloc (Error.E (n, Expanding, exc)) -> + [ Loc.Exc_located iloc (Error.E (n, pos_tag, Expanding, exc)) -> let ctx = ParsingResult iloc quot.q_contents in - let exc1 = Error.E (n, ctx, exc) in + let exc1 = Error.E (n, pos_tag, ctx, exc) in raise (Loc.Exc_located iloc exc1) | Loc.Exc_located iloc (Error.E _ as exc) -> raise (Loc.Exc_located iloc exc) | Loc.Exc_located iloc exc -> let ctx = ParsingResult iloc quot.q_contents in - let exc1 = Error.E (quot.q_name, ctx, exc) in + let exc1 = Error.E (quot.q_name, pos_tag, ctx, exc) in raise (Loc.Exc_located iloc exc1) ]; - value handle_quotation loc proj in_expr parse quotation = + value expand loc quotation tag = + let pos_tag = DynAst.string_of_tag tag in let name = quotation.q_name in debug quot "handle_quotation: name: %s, str: %S@." name quotation.q_contents in let expander = - try find name + try find name tag with [ Loc.Exc_located _ (Error.E _) as exc -> raise exc | Loc.Exc_located qloc exc -> - raise (Loc.Exc_located qloc (Error.E (name, Finding, exc))) + raise (Loc.Exc_located qloc (Error.E (name, pos_tag, Finding, exc))) | exc -> - raise (Loc.Exc_located loc (Error.E (name, Finding, exc))) ] + raise (Loc.Exc_located loc (Error.E (name, pos_tag, Finding, exc))) ] in let loc = Loc.join (Loc.move `start quotation.q_shift loc) in - match expander with - [ ExStr f -> - let new_str = expand_quotation loc (f in_expr) quotation in - parse_quotation_result parse loc quotation new_str - | ExAst fe fp -> - expand_quotation loc (proj (fe, fp)) quotation ]; - - value expand_expr parse loc x = - handle_quotation loc fst True parse x; - - value expand_patt parse loc x = - handle_quotation loc snd False parse x; + expand_quotation loc expander pos_tag quotation; end; diff --git a/camlp4/Camlp4/Struct/Token.ml b/camlp4/Camlp4/Struct/Token.ml index 7037888a..4dbdacac 100644 --- a/camlp4/Camlp4/Struct/Token.ml +++ b/camlp4/Camlp4/Struct/Token.ml @@ -66,7 +66,7 @@ module Make (Loc : Sig.Loc) INT64 _ s | NATIVEINT _ s | FLOAT _ s | CHAR _ s | STRING _ s | LABEL s | OPTLABEL s | COMMENT s | BLANKS s | ESCAPED_IDENT s -> s | tok -> - invalid_arg ("Cannot extract a string from a this token: "^ + invalid_arg ("Cannot extract a string from this token: "^ to_string tok) ]; module Error = struct diff --git a/camlp4/Camlp4/Struct/Warning.ml b/camlp4/Camlp4/Struct/Warning.ml deleted file mode 100644 index dbb04008..00000000 --- a/camlp4/Camlp4/Struct/Warning.ml +++ /dev/null @@ -1,26 +0,0 @@ -(****************************************************************************) -(* *) -(* Objective Caml *) -(* *) -(* INRIA Rocquencourt *) -(* *) -(* Copyright 2006 Institut National de Recherche en Informatique et *) -(* en Automatique. All rights reserved. This file is distributed under *) -(* the terms of the GNU Library General Public License, with the special *) -(* exception on linking described in LICENSE at the top of the Objective *) -(* Caml source tree. *) -(* *) -(****************************************************************************) - -(* Authors: - * - Daniel de Rauglaudre: initial version - * - Nicolas Pouillard: refactoring - *) -module Make (Loc : Sig.Loc) : Sig.Warning with module Loc = Loc = struct - module Loc = Loc; - open Format; - type t = Loc.t -> string -> unit; - value default loc txt = eprintf " %a: %s@." Loc.print loc txt; - value current = ref default; - value print loc txt = current.val loc txt; -end; diff --git a/camlp4/Camlp4Bin.ml b/camlp4/Camlp4Bin.ml index 12fb0e2e..a31c62ad 100644 --- a/camlp4/Camlp4Bin.ml +++ b/camlp4/Camlp4Bin.ml @@ -18,7 +18,7 @@ * - Nicolas Pouillard: refactoring *) -(* $Id: Camlp4Bin.ml,v 1.14 2007/02/27 15:48:22 pouillar Exp $ *) +(* $Id: Camlp4Bin.ml,v 1.14.2.3 2007/03/30 15:50:12 pouillar Exp $ *) open Camlp4; open PreCast.Syntax; @@ -28,7 +28,7 @@ module CleanAst = Camlp4.Struct.CleanAst.Make Ast; module SSet = Set.Make String; value pa_r = "Camlp4OCamlRevisedParser"; -(* value pa_rr = "Camlp4OCamlrrParser"; *) +value pa_rr = "Camlp4OCamlReloadedParser"; value pa_o = "Camlp4OCamlParser"; value pa_rp = "Camlp4OCamlRevisedParserParser"; value pa_op = "Camlp4OCamlParserParser"; @@ -40,6 +40,8 @@ value pa_rq = "Camlp4OCamlRevisedQuotationExpander"; value pa_oq = "Camlp4OCamlOriginalQuotationExpander"; value pa_l = "Camlp4ListComprehension"; +open Register; + value dyn_loader = ref (fun []); value rcall_callback = ref (fun () -> ()); value loaded_modules = ref SSet.empty; @@ -53,23 +55,24 @@ value rewrite_and_load n x = add_to_loaded_modules name; DynLoader.load dyn_loader name } in - let load = List.iter (fun n -> - if SSet.mem n loaded_modules.val then () - else do { + let load = List.iter begin fun n -> + if SSet.mem n loaded_modules.val || List.mem n Register.loaded_modules.val then () + else begin add_to_loaded_modules n; DynLoader.load dyn_loader (n ^ ".cmo"); - }) in + end + end in do { match (n, String.lowercase x) with [ ("Parsers"|"", "pa_r.cmo" | "r" | "ocamlr" | "ocamlrevised" | "camlp4ocamlrevisedparser.cmo") -> load [pa_r] - (* | ("Parsers"|"", "rr" | "OCamlrr") -> load [pa_r; pa_rr] *) + | ("Parsers"|"", "rr" | "reloaded" | "ocamlreloaded" | "camlp4ocamlreloadedparser.cmo") -> load [pa_rr] | ("Parsers"|"", "pa_o.cmo" | "o" | "ocaml" | "camlp4ocamlparser.cmo") -> load [pa_r; pa_o] | ("Parsers"|"", "pa_rp.cmo" | "rp" | "rparser" | "camlp4ocamlrevisedparserparser.cmo") -> load [pa_r; pa_o; pa_rp] | ("Parsers"|"", "pa_op.cmo" | "op" | "parser" | "camlp4ocamlparserparser.cmo") -> load [pa_r; pa_o; pa_rp; pa_op] - | ("Parsers"|"", "pa_extend.cmo" | "pa_extend_m.cmo" | "g" | "grammar" | "camlp4grammarparser.cmo") -> load [pa_r; pa_g] - | ("Parsers"|"", "pa_macro.cmo" | "m" | "macro" | "camlp4macroparser.cmo") -> load [pa_r; pa_m] - | ("Parsers"|"", "q" | "camlp4quotationexpander.cmo") -> load [pa_r; pa_qb; pa_q] - | ("Parsers"|"", "q_MLast.cmo" | "rq" | "camlp4ocamlrevisedquotationexpander.cmo") -> load [pa_r; pa_qb; pa_rq] + | ("Parsers"|"", "pa_extend.cmo" | "pa_extend_m.cmo" | "g" | "grammar" | "camlp4grammarparser.cmo") -> load [pa_g] + | ("Parsers"|"", "pa_macro.cmo" | "m" | "macro" | "camlp4macroparser.cmo") -> load [pa_m] + | ("Parsers"|"", "q" | "camlp4quotationexpander.cmo") -> load [pa_qb; pa_q] + | ("Parsers"|"", "q_mlast.cmo" | "rq" | "camlp4ocamlrevisedquotationexpander.cmo") -> load [pa_qb; pa_rq] | ("Parsers"|"", "oq" | "camlp4ocamloriginalquotationexpander.cmo") -> load [pa_r; pa_o; pa_qb; pa_oq] | ("Parsers"|"", "rf") -> load [pa_r; pa_rp; pa_qb; pa_q; pa_g; pa_l; pa_m] | ("Parsers"|"", "of") -> load [pa_r; pa_o; pa_rp; pa_op; pa_qb; pa_rq; pa_g; pa_l; pa_m] @@ -85,8 +88,6 @@ value rewrite_and_load n x = | ("Filters"|"", "tracer" | "camlp4tracer.cmo") -> load ["Camlp4Tracer"] | ("Printers"|"", "pr_r.cmo" | "r" | "ocamlr" | "camlp4ocamlrevisedprinter.cmo") -> Register.enable_ocamlr_printer () - (* | ("Printers"|"", "rr" | "OCamlrr" | "Camlp4Printers/OCamlrr.cmo") -> *) - (* Register.enable_ocamlrr_printer () *) | ("Printers"|"", "pr_o.cmo" | "o" | "ocaml" | "camlp4ocamlprinter.cmo") -> Register.enable_ocaml_printer () | ("Printers"|"", "pr_dump.cmo" | "p" | "dumpocaml" | "camlp4ocamlastdumper.cmo") -> @@ -116,7 +117,7 @@ value rec parse_file dyn_loader name pa getdir = | None -> None ]) in let loc = Loc.mk name in do { - Warning.current.val := print_warning; + current_warning.val := print_warning; let ic = if name = "-" then stdin else open_in_bin name in let cs = Stream.of_channel ic in let clear () = if name = "-" then () else close_in ic in @@ -146,8 +147,6 @@ value gimd = [ <:str_item@loc< # $n$ $str:s$ >> -> Some (loc, n, s) | _ -> None ]; -open Register; - value process_intf dyn_loader name = process dyn_loader name CurrentParser.parse_interf CurrentPrinter.print_interf (new CleanAst.clean_ast)#sig_item diff --git a/camlp4/Camlp4Filters/Camlp4FoldGenerator.ml b/camlp4/Camlp4Filters/Camlp4FoldGenerator.ml index 573e42f5..6819b9d1 100644 --- a/camlp4/Camlp4Filters/Camlp4FoldGenerator.ml +++ b/camlp4/Camlp4Filters/Camlp4FoldGenerator.ml @@ -22,7 +22,7 @@ open Camlp4; module Id = struct value name = "Camlp4FoldGenerator"; - value version = "$Id: Camlp4FoldGenerator.ml,v 1.1 2007/02/07 10:09:22 ertai Exp $"; + value version = "$Id: Camlp4FoldGenerator.ml,v 1.1.4.4 2007/05/01 07:24:06 pouillar Exp $"; end; module Make (AstFilters : Camlp4.Sig.AstFilters) = struct @@ -191,6 +191,16 @@ module Make (AstFilters : Camlp4.Sig.AstFilters) = struct <:match_case< $uid:s$ -> o >> | _ -> assert False ] + and match_case_of_poly_sum_type = + fun + [ <:ctyp< $t1$ | $t2$ >> -> + <:match_case< $match_case_of_poly_sum_type t1$ | $match_case_of_poly_sum_type t2$ >> + | <:ctyp< `$i$ of $t$ >> -> + <:match_case< `$i$ x -> $expr_of_ty ~obj:<:expr< o >> (Some <:expr< x >>) t$ >> + | <:ctyp< `$i$ >> -> + <:match_case< `$i$ -> o >> + | _ -> assert False ] + and record_patt_of_type = fun [ <:ctyp< $lid:s$ : $_$ >> -> @@ -202,19 +212,30 @@ module Make (AstFilters : Camlp4.Sig.AstFilters) = struct and record_binding_of_type = fun [ <:ctyp< $lid:s$ : mutable $t$ >> | <:ctyp< $lid:s$ : $t$ >> -> - <:binding< $lid:s$ = $expr_of_ty (Some <:expr< $lid:xs s$ >>) t$ >> + <:rec_binding< $lid:s$ = $expr_of_ty (Some <:expr< $lid:xs s$ >>) t$ >> | <:ctyp< $t1$ ; $t2$ >> -> - <:binding< $record_binding_of_type t1$; $record_binding_of_type t2$ >> + <:rec_binding< $record_binding_of_type t1$; $record_binding_of_type t2$ >> | _ -> assert False ] - and fun_of_ctyp = + and fun_of_ctyp tyid = fun [ <:ctyp< [ $t$ ] >> -> <:expr< fun [ $match_case_of_sum_type t$ ] >> | <:ctyp< { $t$ } >> -> <:expr< fun { $record_patt_of_type t$ } -> { $record_binding_of_type t$ } >> | <:ctyp< ( $tup:t$ ) >> -> mk_tuple expr_of_ty t - | _ -> <:expr< fun _ -> o >> ] + | <:ctyp< $_$ $_$ >> | <:ctyp< $_$ -> $_$ >> | <:ctyp< '$_$ >> as t -> + expr_of_ty None t + | <:ctyp< $lid:i$ >> when i = tyid -> <:expr< fun _ -> o >> + | <:ctyp< $id:i$ >> as t -> + let id1 = "_" ^ lid_of_ident "_" i in + if id1 = tyid then <:expr< fun _ -> o >> + else expr_of_ty None t + | <:ctyp< [ = $t$ ] >> | <:ctyp< [ < $t$ ] >> | <:ctyp< private [ < $t$ ] >> -> + <:expr< fun [ $match_case_of_poly_sum_type t$ ] >> + | <:ctyp< [ > $t$ ] >> | <:ctyp< private [ > $t$ ] >> -> + <:expr< fun [ $match_case_of_poly_sum_type t$ | x -> x ] >> + | _ -> assert False ] and string_of_type_param t = match t with @@ -227,7 +248,7 @@ module Make (AstFilters : Camlp4.Sig.AstFilters) = struct [ [] -> acc | [ x :: xs ] -> lambda <:expr< fun $lid:"_f_" ^ x$ -> $acc$ >> xs ] in let params' = List.map string_of_type_param params in - let funs = lambda (fun_of_ctyp ctyp) params' in + let funs = lambda (fun_of_ctyp id1 ctyp) params' in let ty = method_type_of_type_decl type_decl in <:class_str_item< method $lid:id1$ : $ty$ = $funs$ >> @@ -289,20 +310,20 @@ module Make (AstFilters : Camlp4.Sig.AstFilters) = struct StringMap.fold class_sig_item_of_type_decl tyMap <:class_sig_item<>> and inject_structure_drop_trash generated = - Ast.map_str_item + (Ast.map_str_item (fun [ <:str_item@_loc< class $lid:c$ = Camlp4Filters.GenerateFold.generated >> -> (* FIXME <:str_item< class $lid:c$ = object (o) $builtins$; $generated$ end >> *) let x = <:class_str_item< $builtins$; $generated$ >> in <:str_item< class $lid:c$ = object (o : 'self_type) $x$ end >> - | s -> s ]) + | s -> s ]))#str_item and inject_signature generated = - Ast.map_sig_item + (Ast.map_sig_item (fun [ <:sig_item@_loc< class $lid:c$ : Camlp4Filters.GenerateFold.generated >> -> <:sig_item< class $lid:c$ : object $generated$ end >> - | s -> s ]) + | s -> s ]))#sig_item and process_str_item str_item = let tyMap = collect_types_in_str_item str_item in diff --git a/camlp4/Camlp4Filters/Camlp4LocationStripper.ml b/camlp4/Camlp4Filters/Camlp4LocationStripper.ml index 7c7ce772..820ff889 100644 --- a/camlp4/Camlp4Filters/Camlp4LocationStripper.ml +++ b/camlp4/Camlp4Filters/Camlp4LocationStripper.ml @@ -22,14 +22,14 @@ open Camlp4; module Id = struct value name = "Camlp4LocationStripper"; - value version = "$Id: Camlp4LocationStripper.ml,v 1.1 2007/02/07 10:09:22 ertai Exp $"; + value version = "$Id: Camlp4LocationStripper.ml,v 1.1.4.1 2007/03/10 16:58:39 pouillar Exp $"; end; module Make (AstFilters : Camlp4.Sig.AstFilters) = struct open AstFilters; open Ast; - register_str_item_filter (new Ast.c_loc (fun _ -> Loc.ghost))#str_item; + register_str_item_filter (Ast.map_loc (fun _ -> Loc.ghost))#str_item; end; diff --git a/camlp4/Camlp4Filters/Camlp4MapGenerator.ml b/camlp4/Camlp4Filters/Camlp4MapGenerator.ml index 0c391dd6..4dd9b5d7 100644 --- a/camlp4/Camlp4Filters/Camlp4MapGenerator.ml +++ b/camlp4/Camlp4Filters/Camlp4MapGenerator.ml @@ -22,7 +22,7 @@ open Camlp4; module Id = struct value name = "Camlp4MapGenerator"; - value version = "$Id: Camlp4MapGenerator.ml,v 1.1 2007/02/07 10:09:22 ertai Exp $"; + value version = "$Id: Camlp4MapGenerator.ml,v 1.1.4.4 2007/05/01 07:24:06 pouillar Exp $"; end; module Make (AstFilters : Camlp4.Sig.AstFilters) = struct @@ -196,6 +196,16 @@ module Make (AstFilters : Camlp4.Sig.AstFilters) = struct <:match_case< $uid:s$ -> $uid:s$ >> | _ -> assert False ] + and match_case_of_poly_sum_type = + fun + [ <:ctyp< $t1$ | $t2$ >> -> + <:match_case< $match_case_of_poly_sum_type t1$ | $match_case_of_poly_sum_type t2$ >> + | <:ctyp< `$i$ of $t$ >> -> + <:match_case< `$i$ x -> `$i$ $expr_of_ty (Some <:expr< x >>) t$ >> + | <:ctyp< `$i$ >> -> + <:match_case< `$i$ -> `$i$ >> + | _ -> assert False ] + and record_patt_of_type = fun [ <:ctyp< $lid:s$ : $_$ >> -> @@ -207,19 +217,30 @@ module Make (AstFilters : Camlp4.Sig.AstFilters) = struct and record_binding_of_type = fun [ <:ctyp< $lid:s$ : mutable $t$ >> | <:ctyp< $lid:s$ : $t$ >> -> - <:binding< $lid:s$ = $expr_of_ty (Some <:expr< $lid:xs s$ >>) t$ >> + <:rec_binding< $lid:s$ = $expr_of_ty (Some <:expr< $lid:xs s$ >>) t$ >> | <:ctyp< $t1$ ; $t2$ >> -> - <:binding< $record_binding_of_type t1$; $record_binding_of_type t2$ >> + <:rec_binding< $record_binding_of_type t1$; $record_binding_of_type t2$ >> | _ -> assert False ] - and fun_of_ctyp = + and fun_of_ctyp tyid = fun [ <:ctyp< [ $t$ ] >> -> <:expr< fun [ $match_case_of_sum_type t$ ] >> | <:ctyp< { $t$ } >> -> <:expr< fun { $record_patt_of_type t$ } -> { $record_binding_of_type t$ } >> | <:ctyp< ( $tup:t$ ) >> -> mk_tuple expr_of_ty t - | _ -> <:expr< fun x -> x >> ] + | <:ctyp< $_$ $_$ >> | <:ctyp< $_$ -> $_$ >> | <:ctyp< '$_$ >> as t -> + expr_of_ty None t + | <:ctyp< $lid:i$ >> when i = tyid -> <:expr< fun x -> x >> + | <:ctyp< $id:i$ >> as t -> + let id1 = "_" ^ lid_of_ident "_" i in + if id1 = tyid then <:expr< fun x -> x >> + else expr_of_ty None t + | <:ctyp< [ = $t$ ] >> | <:ctyp< [ < $t$ ] >> | <:ctyp< private [ < $t$ ] >> -> + <:expr< fun [ $match_case_of_poly_sum_type t$ ] >> + | <:ctyp< [ > $t$ ] >> | <:ctyp< private [ > $t$ ] >> -> + <:expr< fun [ $match_case_of_poly_sum_type t$ | x -> x ] >> + | _ -> assert False ] and string_of_type_param t = match t with @@ -232,7 +253,7 @@ module Make (AstFilters : Camlp4.Sig.AstFilters) = struct [ [] -> acc | [ x :: xs ] -> lambda <:expr< fun $lid:"_f_" ^ x$ -> $acc$ >> xs ] in let params' = List.map string_of_type_param params in - let funs = lambda (fun_of_ctyp ctyp) params' in + let funs = lambda (fun_of_ctyp id1 ctyp) params' in let ty = method_type_of_type_decl type_decl in <:class_str_item< method $lid:id1$ : $ty$ = $funs$ >> @@ -294,20 +315,25 @@ module Make (AstFilters : Camlp4.Sig.AstFilters) = struct StringMap.fold class_sig_item_of_type_decl tyMap <:class_sig_item<>> and inject_structure_drop_trash generated = - Ast.map_str_item + (Ast.map_str_item (fun [ <:str_item@_loc< class $lid:c$ = Camlp4Filters.GenerateMap.generated >> -> + let x = <:class_str_item< $builtins$; $generated$ >> in + <:str_item< class $lid:c$ = object (o) $x$ end >> + | <:str_item@_loc< class $lid:c$ = Camlp4Filters.Camlp4MapGenerator.generated >> -> (* FIXME <:str_item< class $lid:c$ = object (o) $builtins$; $generated$ end >> *) let x = <:class_str_item< $builtins$; $generated$ >> in <:str_item< class $lid:c$ = object (o) $x$ end >> - | s -> s ]) + | s -> s ]))#str_item and inject_signature generated = - Ast.map_sig_item + (Ast.map_sig_item (fun [ <:sig_item@_loc< class $lid:c$ : Camlp4Filters.GenerateMap.generated >> -> <:sig_item< class $lid:c$ : object $generated$ end >> - | s -> s ]) + | <:sig_item@_loc< class $lid:c$ : Camlp4Filters.Camlp4MapGenerator.generated >> -> + <:sig_item< class $lid:c$ : object $generated$ end >> + | s -> s ]))#sig_item and process_str_item str_item = let tyMap = collect_types_in_str_item str_item in diff --git a/camlp4/Camlp4Filters/Camlp4Tracer.ml b/camlp4/Camlp4Filters/Camlp4Tracer.ml index 9a24b4c0..afb87b7c 100644 --- a/camlp4/Camlp4Filters/Camlp4Tracer.ml +++ b/camlp4/Camlp4Filters/Camlp4Tracer.ml @@ -22,7 +22,7 @@ open Camlp4; module Id = struct value name = "Camlp4Tracer"; - value version = "$Id: Camlp4Tracer.ml,v 1.1 2007/02/07 10:09:22 ertai Exp $"; + value version = "$Id: Camlp4Tracer.ml,v 1.1.4.1 2007/03/10 16:58:39 pouillar Exp $"; end; module Make (AstFilters : Camlp4.Sig.AstFilters) = struct @@ -51,7 +51,7 @@ module Make (AstFilters : Camlp4.Sig.AstFilters) = struct [ <:expr@_loc< fun [ $m$ ] >> -> <:expr< fun [ $map_match_case m$ ] >> | x -> x ]; - register_str_item_filter (new Ast.c_expr map_expr)#str_item; + register_str_item_filter (Ast.map_expr map_expr)#str_item; end; diff --git a/camlp4/Camlp4Filters/Camlp4TrashRemover.ml b/camlp4/Camlp4Filters/Camlp4TrashRemover.ml index 207143a8..e9cad22b 100644 --- a/camlp4/Camlp4Filters/Camlp4TrashRemover.ml +++ b/camlp4/Camlp4Filters/Camlp4TrashRemover.ml @@ -22,7 +22,7 @@ open Camlp4; module Id = struct value name = "Camlp4TrashRemover"; - value version = "$Id: Camlp4TrashRemover.ml,v 1.1 2007/02/07 10:09:22 ertai Exp $"; + value version = "$Id: Camlp4TrashRemover.ml,v 1.1.4.1 2007/03/10 16:58:39 pouillar Exp $"; end; module Make (AstFilters : Camlp4.Sig.AstFilters) = struct @@ -30,7 +30,7 @@ module Make (AstFilters : Camlp4.Sig.AstFilters) = struct open Ast; register_str_item_filter - (new Ast.c_str_item + (Ast.map_str_item (fun [ <:str_item@_loc< module Camlp4Trash = $_$ >> -> <:str_item<>> diff --git a/camlp4/Camlp4Parsers/Camlp4GrammarParser.ml b/camlp4/Camlp4Parsers/Camlp4GrammarParser.ml index f5382967..4ad5d252 100644 --- a/camlp4/Camlp4Parsers/Camlp4GrammarParser.ml +++ b/camlp4/Camlp4Parsers/Camlp4GrammarParser.ml @@ -21,7 +21,7 @@ open Camlp4; (* -*- camlp4r -*- *) module Id = struct value name = "Camlp4GrammarParser"; - value version = "$Id: Camlp4GrammarParser.ml,v 1.1 2007/02/07 10:09:22 ertai Exp $"; + value version = "$Id: Camlp4GrammarParser.ml,v 1.1.4.4 2007/04/20 14:57:28 pouillar Exp $"; end; module Make (Syntax : Sig.Camlp4Syntax) = struct @@ -147,7 +147,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct Hashtbl.iter (fun s (r, e) -> if r.val = Unused then - Warning.print e.name.loc ("Unused local entry \"" ^ s ^ "\"") + print_warning e.name.loc ("Unused local entry \"" ^ s ^ "\"") else ()) ht; } @@ -309,7 +309,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct value srules loc t rl tvar = List.map (fun r -> - let sl = List.map (fun s -> s.text) r.prod in + let sl = [ s.text | s <- r.prod ] in let ac = text_of_action loc r.prod t r.action tvar in (sl, ac)) rl @@ -600,7 +600,6 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct fun [ <:patt@_loc< $lid:_$ >> -> <:patt< _ >> | <:patt< ($p$ as $_$) >> -> self#patt p - | <:patt@_loc< $p1$ = $p2$ >> -> <:patt@_loc< $p1$ = $self#patt p2$ >> | p -> super#patt p ]; end; @@ -625,6 +624,8 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct "LIST0 STRING becomes LIST0 [ x = STRING -> x ]")) | _ -> () ]; + Camlp4_config.antiquotations.val := True; + EXTEND Gram GLOBAL: expr symbol; expr: AFTER "top" diff --git a/camlp4/Camlp4Parsers/Camlp4MacroParser.ml b/camlp4/Camlp4Parsers/Camlp4MacroParser.ml index 73d9a63b..a18ad89d 100644 --- a/camlp4/Camlp4Parsers/Camlp4MacroParser.ml +++ b/camlp4/Camlp4Parsers/Camlp4MacroParser.ml @@ -16,11 +16,13 @@ open Camlp4; (* -*- camlp4r -*- *) (* Authors: * - Daniel de Rauglaudre: initial version * - Nicolas Pouillard: refactoring + * - Aleksey Nogin: extra features and bug fixes. + * - Christopher Conway: extra feature (-D=) *) module Id = struct value name = "Camlp4MacroParser"; - value version = "$Id: Camlp4MacroParser.ml,v 1.1 2007/02/07 10:09:22 ertai Exp $"; + value version = "$Id: Camlp4MacroParser.ml,v 1.1.4.5 2007/04/26 19:51:49 pouillar Exp $"; end; (* @@ -31,16 +33,22 @@ Added statements: DEFINE DEFINE = DEFINE () = - IFDEF THEN (END | ENDIF) - IFDEF THEN ELSE (END | ENDIF) - IFNDEF THEN (END | ENDIF) - IFNDEF THEN ELSE (END | ENDIF) + IFDEF THEN [ ELSE ] (END | ENDIF) + IFNDEF THEN [ ELSE ] (END | ENDIF) + INCLUDE + + At toplevel (signature item): + + DEFINE + IFDEF THEN [ ELSE ] (END | ENDIF) + IFNDEF THEN [ ELSE ] (END | ENDIF) INCLUDE In expressions: - IFDEF THEN ELSE (END | ENDIF) - IFNDEF THEN ELSE (END | ENDIF) + IFDEF THEN [ ELSE ] (END | ENDIF) + IFNDEF THEN [ ELSE ] (END | ENDIF) + DEFINE = IN __FILE__ __LOCATION__ @@ -51,7 +59,7 @@ Added statements: As Camlp4 options: - -D define + -D or -D=expr define with optional value -U undefine it -I add to the search path for INCLUDE'd files @@ -60,7 +68,13 @@ Added statements: the macro cannot be used as a pattern, there is an error message if it is used in a pattern. + You can also define a local macro in an expression usigng the DEFINE ... IN form. + Note that local macros have lowercase names and can not take parameters. + If a macro is defined to = NOTHING, and then used as an argument to a function, + this will be equivalent to function taking one less argument. Similarly, + passing NOTHING as an argument to a macro is equivalent to "erasing" the + corresponding parameter from the macro body. The toplevel statement INCLUDE can be used to include a file containing macro definitions and also any other toplevel items. @@ -82,8 +96,8 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct [ SdStr of 'a | SdDef of string and option (list string * Ast.expr) | SdUnd of string - | SdITE of string and 'a and 'a - | SdInc of string ]; + | SdITE of string and list (item_or_def 'a) and list (item_or_def 'a) + | SdLazy of Lazy.t 'a ]; value rec list_remove x = fun @@ -95,29 +109,16 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct value is_defined i = List.mem_assoc i defined.val; - class reloc _loc = object - inherit Ast.map as super; - method _Loc_t _ = _loc; - end; - - class subst _loc env = object - inherit reloc _loc as super; - method expr = - fun - [ <:expr< $lid:x$ >> | <:expr< $uid:x$ >> as e -> - try List.assoc x env with - [ Not_found -> e ] - | e -> super#expr e ]; - end; - - value bad_patt _loc = + value bad_patt _loc = Loc.raise _loc (Failure "this macro cannot be used in a pattern (see its definition)"); + value substp _loc env = loop where rec loop = fun [ <:expr< $e1$ $e2$ >> -> <:patt< $loop e1$ $loop e2$ >> + | <:expr< >> -> <:patt< >> | <:expr< $lid:x$ >> -> try List.assoc x env with [ Not_found -> <:patt< $lid:x$ >> ] @@ -130,12 +131,34 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct | <:expr< $x1$, $x2$ >> -> <:patt< $loop x1$, $loop x2$ >> | <:expr< { $bi$ } >> -> let rec substbi = fun - [ <:binding< $b1$; $b2$ >> -> <:patt< $substbi b1$; $substbi b2$ >> - | <:binding< $p$ = $e$ >> -> <:patt< $p$ = $loop e$ >> + [ <:rec_binding< $b1$; $b2$ >> -> <:patt< $substbi b1$; $substbi b2$ >> + | <:rec_binding< $i$ = $e$ >> -> <:patt< $i$ = $loop e$ >> | _ -> bad_patt _loc ] in <:patt< { $substbi bi$ } >> | _ -> bad_patt _loc ]; + class reloc _loc = object + inherit Ast.map as super; + method _Loc_t _ = _loc; + end; + + class subst _loc env = object + inherit reloc _loc as super; + method expr = + fun + [ <:expr< $lid:x$ >> | <:expr< $uid:x$ >> as e -> + try List.assoc x env with + [ Not_found -> super#expr e ] + | e -> super#expr e ]; + + method patt = + fun + [ <:patt< $lid:x$ >> | <:patt< $uid:x$ >> as p -> + try substp _loc [] (List.assoc x env) with + [ Not_found -> super#patt p ] + | p -> super#patt p ]; + end; + value incorrect_number loc l1 l2 = Loc.raise loc (Failure @@ -211,6 +234,12 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct with [ Not_found -> () ]; + value parse_def s = + match Gram.parse_string expr (Loc.mk "") s with + [ <:expr< $uid:n$ >> -> define None n + | <:expr< $uid:n$ = $e$ >> -> define (Some ([],e)) n + | _ -> invalid_arg s ]; + (* This is a list of directories to search for INCLUDE statements. *) value include_dirs = ref []; @@ -234,27 +263,69 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct let st = Stream.of_channel ch in Gram.parse rule (Loc.mk file) st; + value rec execute_macro nil cons = + fun + [ SdStr i -> i + | SdDef x eo -> do { define eo x; nil } + | SdUnd x -> do { undef x; nil } + | SdITE i l1 l2 -> execute_macro_list nil cons (if is_defined i then l1 else l2) + | SdLazy l -> Lazy.force l ] + + and execute_macro_list nil cons = fun + [ [] -> nil + | [hd::tl] -> (* The evaluation order is important here *) + let il1 = execute_macro nil cons hd in + let il2 = execute_macro_list nil cons tl in + cons il1 il2 ] + ; + EXTEND Gram GLOBAL: expr patt str_item sig_item; str_item: FIRST - [ [ "DEFINE"; i = uident; def = opt_macro_value -> - do { define def i; <:str_item<>> } - | "UNDEF"; i = uident -> - do { undef i; <:str_item<>> } - | "IFDEF"; i = uident; "THEN"; st = str_items; _ = endif -> - if is_defined i then st else <:str_item<>> - | "IFDEF"; i = uident; "THEN"; st1 = str_items; "ELSE"; st2 = str_items; _ = endif -> - if is_defined i then st1 else st2 - | "IFNDEF"; i = uident; "THEN"; st = str_items; _ = endif -> - if is_defined i then <:str_item<>> else st - | "IFNDEF"; i = uident; "THEN"; st1 = str_items; "ELSE"; st2 = str_items; _ = endif -> - if is_defined i then st2 else st1 - | "INCLUDE"; fname = STRING -> - parse_include_file str_items fname ] ] + [ [ x = macro_def -> + execute_macro <:str_item<>> (fun a b -> <:str_item< $a$; $b$ >>) x ] ] ; sig_item: FIRST - [ [ "INCLUDE"; fname = STRING -> - parse_include_file sig_items fname ] ] + [ [ x = macro_def_sig -> + execute_macro <:sig_item<>> (fun a b -> <:sig_item< $a$; $b$ >>) x ] ] + ; + macro_def: + [ [ "DEFINE"; i = uident; def = opt_macro_value -> SdDef i def + | "UNDEF"; i = uident -> SdUnd i + | "IFDEF"; i = uident; "THEN"; st1 = smlist; st2 = else_macro_def -> + SdITE i st1 st2 + | "IFNDEF"; i = uident; "THEN"; st2 = smlist; st1 = else_macro_def -> + SdITE i st1 st2 + | "INCLUDE"; fname = STRING -> + SdLazy (lazy (parse_include_file str_items fname)) ] ] + ; + macro_def_sig: + [ [ "DEFINE"; i = uident -> SdDef i None + | "UNDEF"; i = uident -> SdUnd i + | "IFDEF"; i = uident; "THEN"; sg1 = sglist; sg2 = else_macro_def_sig -> + SdITE i sg1 sg2 + | "IFNDEF"; i = uident; "THEN"; sg2 = sglist; sg1 = else_macro_def_sig -> + SdITE i sg1 sg2 + | "INCLUDE"; fname = STRING -> + SdLazy (lazy (parse_include_file sig_items fname)) ] ] + ; + else_macro_def: + [ [ "ELSE"; st = smlist; endif -> st + | endif -> [] ] ] + ; + else_macro_def_sig: + [ [ "ELSE"; st = sglist; endif -> st + | endif -> [] ] ] + ; + else_expr: + [ [ "ELSE"; e = expr; endif -> e + | endif -> <:expr< () >> ] ] + ; + smlist: + [ [ sml = LIST1 [ d = macro_def; semi -> d | si = str_item; semi -> SdStr si ] -> sml ] ] + ; + sglist: + [ [ sgl = LIST1 [ d = macro_def_sig; semi -> d | si = sig_item; semi -> SdStr si ] -> sgl ] ] ; endif: [ [ "END" -> () @@ -266,10 +337,12 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct | -> None ] ] ; expr: LEVEL "top" - [ [ "IFDEF"; i = uident; "THEN"; e1 = expr; "ELSE"; e2 = expr; _ = endif -> + [ [ "IFDEF"; i = uident; "THEN"; e1 = expr; e2 = else_expr -> if is_defined i then e1 else e2 - | "IFNDEF"; i = uident; "THEN"; e1 = expr; "ELSE"; e2 = expr; _ = endif -> - if is_defined i then e2 else e1 ] ] + | "IFNDEF"; i = uident; "THEN"; e1 = expr; e2 = else_expr -> + if is_defined i then e2 else e1 + | "DEFINE"; i = LIDENT; "="; def = expr; "IN"; body = expr -> + (new subst _loc [(i, def)])#expr body ] ] ; expr: LEVEL "simple" [ [ LIDENT "__FILE__" -> <:expr< $`str:Loc.file_name _loc$ >> @@ -281,9 +354,9 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct $if h then <:expr< True >> else <:expr< False >> $) >> ] ] ; patt: - [ [ "IFDEF"; i = uident; "THEN"; p1 = patt; "ELSE"; p2 = patt; _ = endif -> + [ [ "IFDEF"; i = uident; "THEN"; p1 = patt; "ELSE"; p2 = patt; endif -> if is_defined i then p1 else p2 - | "IFNDEF"; i = uident; "THEN"; p1 = patt; "ELSE"; p2 = patt; _ = endif -> + | "IFNDEF"; i = uident; "THEN"; p1 = patt; "ELSE"; p2 = patt; endif -> if is_defined i then p2 else p1 ] ] ; uident: @@ -291,7 +364,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct ; END; - Options.add "-D" (Arg.String (define None)) + Options.add "-D" (Arg.String parse_def) " Define for IFDEF instruction."; Options.add "-U" (Arg.String undef) " Undefine for IFDEF instruction."; @@ -301,3 +374,18 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct end; let module M = Register.OCamlSyntaxExtension Id Make in (); + +module MakeNothing (AstFilters : Camlp4.Sig.AstFilters) = struct + open AstFilters; + open Ast; + + value remove_nothings = + fun + [ <:expr< $e$ NOTHING >> | <:expr< fun $ <:patt< NOTHING >> $ -> $e$ >> -> e + | e -> e]; + + register_str_item_filter (Ast.map_expr remove_nothings)#str_item; + +end; + +let module M = Camlp4.Register.AstFilter Id MakeNothing in (); diff --git a/camlp4/Camlp4Parsers/Camlp4OCamlOriginalQuotationExpander.ml b/camlp4/Camlp4Parsers/Camlp4OCamlOriginalQuotationExpander.ml index b5b120ba..c033a22c 100644 --- a/camlp4/Camlp4Parsers/Camlp4OCamlOriginalQuotationExpander.ml +++ b/camlp4/Camlp4Parsers/Camlp4OCamlOriginalQuotationExpander.ml @@ -19,7 +19,7 @@ open Camlp4; (* -*- camlp4r -*- *) open PreCast; let module Gram = MakeGram Lexer in -let module M1 = OCamlInitSyntax.Make Warning Ast Gram Quotation in +let module M1 = OCamlInitSyntax.Make Ast Gram Quotation in let module M2 = Camlp4OCamlRevisedParser.Make M1 in let module M3 = Camlp4OCamlParser.Make M2 in let module M3 = Camlp4QuotationCommon.Make M3 Syntax.AntiquotSyntax in (); diff --git a/camlp4/Camlp4Parsers/Camlp4OCamlParser.ml b/camlp4/Camlp4Parsers/Camlp4OCamlParser.ml index 5c07876c..a3e4a4f5 100644 --- a/camlp4/Camlp4Parsers/Camlp4OCamlParser.ml +++ b/camlp4/Camlp4Parsers/Camlp4OCamlParser.ml @@ -21,7 +21,7 @@ open Camlp4; (* -*- camlp4r -*- *) module Id : Sig.Id = struct value name = "Camlp4OCamlParser"; - value version = "$Id: Camlp4OCamlParser.ml,v 1.3.2.1 2007/03/03 09:21:36 pouillar Exp $"; + value version = "$Id: Camlp4OCamlParser.ml,v 1.3.2.11 2007/05/10 22:43:18 pouillar Exp $"; end; module Make (Syntax : Sig.Camlp4Syntax) = struct @@ -31,21 +31,6 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct Camlp4_config.constructors_arity.val := False; (*FIXME remove this and use OCaml ones *) - value bigarray_get _loc arr arg = - let coords = - match arg with - [ <:expr< ($e1$, $e2$) >> | <:expr< $e1$, $e2$ >> -> - Ast.list_of_expr e1 (Ast.list_of_expr e2 []) - | _ -> [arg] ] - in - match coords with - [ [c1] -> <:expr< Bigarray.Array1.get $arr$ $c1$ >> - | [c1; c2] -> <:expr< Bigarray.Array2.get $arr$ $c1$ $c2$ >> - | [c1; c2; c3] -> <:expr< Bigarray.Array3.get $arr$ $c1$ $c2$ $c3$ >> - (* | coords -> <:expr< Bigarray.Genarray.get $arr$ [| $`list:coords$ |] >> ] *) - | coords -> - <:expr< Bigarray.Genarray.get $arr$ [| $Ast.exSem_of_list coords$ |] >> ]; - value bigarray_set _loc var newval = match var with [ <:expr< Bigarray.Array1.get $arr$ $c1$ >> -> @@ -57,22 +42,6 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct | <:expr< Bigarray.Genarray.get $arr$ [| $coords$ |] >> -> Some <:expr< Bigarray.Genarray.set $arr$ [| $coords$ |] $newval$ >> | _ -> None ]; - value mkumin _loc f arg = - match (f, arg) with - [ ("-", <:expr< $int:n$ >>) when int_of_string n > 0 -> - <:expr< $int:"-" ^ n$ >> - | ("-", <:expr< $int32:n$ >>) when (Int32.of_string n) > 0l -> - <:expr< $int32:"-" ^ n$ >> - | ("-", <:expr< $int64:n$ >>) when (Int64.of_string n) > 0L -> - <:expr< $int64:"-" ^ n$ >> - | ("-", <:expr< $nativeint:n$ >>) when (Nativeint.of_string n) > 0n -> - <:expr< $nativeint:"-" ^ n$ >> - | (_, <:expr< $flo:n$ >>) when float_of_string n > 0.0 -> - <:expr< $flo:"-" ^ n$ >> - | _ -> - let f = "~" ^ f in - <:expr< $lid:f$ $arg$ >> ] - ; value mk_anti ?(c = "") n s = "\\$"^n^c^":"^s; (*FIXME*) @@ -90,11 +59,6 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct (Ast.loc_of_expr e2) in <:expr< do { $e1$; $e2$ } >> ]; - value get_seq = - fun - [ <:expr< do { $e$ } >> -> e - | e -> e ]; - value is_operator = let ht = Hashtbl.create 73 in let ct = Hashtbl.create 73 in @@ -110,97 +74,6 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct } ; - value operator_rparen = - Gram.Entry.of_parser "operator_rparen" - (fun strm -> - match Stream.npeek 2 strm with - [ [(KEYWORD s | SYMBOL s, _); (KEYWORD ")", _)] when is_operator s -> - do { Stream.junk strm; Stream.junk strm; s } - | _ -> raise Stream.Failure ]) - ; - - value symbolchar = - let list = - ['!'; '$'; '%'; '&'; '*'; '+'; '-'; '.'; '/'; ':'; '<'; '='; '>'; '?'; - '@'; '^'; '|'; '~'] - in - let rec loop s i = - if i == String.length s then True - else if List.mem s.[i] list then loop s (i + 1) - else False - in - loop - ; - - value prefixop = - let list = ['!'; '?'; '~'] in - let excl = ["!="; "??"] in - Gram.Entry.of_parser "prefixop" - (parser - [: `(KEYWORD x | SYMBOL x, _loc) - when - not (List.mem x excl) && String.length x >= 2 && - List.mem x.[0] list && symbolchar x 1 :] -> - <:expr< $lid:x$ >>) - ; - - value infixop0 = - let list_ok = ["<"; ">"; "<="; ">="; "="; "<>"; "=="; "!="; "$"] in - let list_first_char_ok = ['='; '<'; '>'; '|'; '&'; '$'; '!'] in - let excl = ["<-"; "||"; "&&"] in - Gram.Entry.of_parser "infixop0" - (parser - [: `(KEYWORD x | SYMBOL x, _loc) - when - (List.mem x list_ok) || - (not (List.mem x excl) && String.length x >= 2 && - List.mem x.[0] list_first_char_ok && symbolchar x 1) :] -> - <:expr< $lid:x$ >>) - ; - - value infixop1 = - let list = ['@'; '^'] in - Gram.Entry.of_parser "infixop1" - (parser - [: `(KEYWORD x | SYMBOL x, _loc) - when - String.length x >= 1 && List.mem x.[0] list && - symbolchar x 1 :] -> - <:expr< $lid:x$ >>) - ; - - value infixop2 = - let list = ['+'; '-'] in - Gram.Entry.of_parser "infixop2" - (parser - [: `(KEYWORD x | SYMBOL x, _loc) - when - x <> "->" && String.length x >= 1 && List.mem x.[0] list && - symbolchar x 1 :] -> - <:expr< $lid:x$ >>) - ; - - value infixop3 = - let list = ['*'; '/'; '%'] in - Gram.Entry.of_parser "infixop3" - (parser - [: `(KEYWORD x | SYMBOL x, _loc) - when - String.length x >= 1 && List.mem x.[0] list && - symbolchar x 1 :] -> - <:expr< $lid:x$ >>) - ; - - value infixop4 = - Gram.Entry.of_parser "infixop4" - (parser - [: `(KEYWORD x | SYMBOL x, _loc) - when - String.length x >= 3 && x.[0] == '*' && x.[1] == '*' && - symbolchar x 2 :] -> - <:expr< $lid:x$ >>) - ; - value test_constr_decl = Gram.Entry.of_parser "test_constr_decl" (fun strm -> @@ -325,19 +198,35 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct DELETE_RULE Gram value_val: "value" END; DELETE_RULE Gram str_item: value_let; opt_rec; binding END; DELETE_RULE Gram module_type: "'"; a_ident END; + DELETE_RULE Gram module_type: SELF; SELF END; + DELETE_RULE Gram module_type: SELF; "."; SELF END; DELETE_RULE Gram label_expr: label_longident; fun_binding END; + DELETE_RULE Gram expr: "let"; opt_rec; binding; "in"; SELF END; + DELETE_RULE Gram expr: "let"; "module"; a_UIDENT; module_binding0; "in"; SELF END; + DELETE_RULE Gram expr: "fun"; "["; LIST0 match_case0 SEP "|"; "]" END; + DELETE_RULE Gram expr: "if"; SELF; "then"; SELF; "else"; SELF END; + DELETE_RULE Gram expr: "do"; do_sequence END; + DELETE_RULE Gram expr: SELF; SELF END; + DELETE_RULE Gram expr: "new"; class_longident END; + DELETE_RULE Gram expr: "["; sem_expr_for_list; "::"; expr; "]" END; + DELETE_RULE Gram expr: "{"; label_expr; "}" END; + DELETE_RULE Gram expr: "{"; "("; SELF; ")"; "with"; label_expr; "}" END; + DELETE_RULE Gram expr: "("; SELF; ","; comma_expr; ")" END; + DELETE_RULE Gram expr: SELF; ":="; SELF; dummy END; + DELETE_RULE Gram expr: "~"; a_LIDENT; ":"; SELF END; + DELETE_RULE Gram expr: "?"; a_LIDENT; ":"; SELF END; + (* Some other DELETE_RULE are after the grammar *) value clear = Gram.Entry.clear; clear ctyp; - clear expr; clear patt; - clear a_LIDENT_or_operator; clear a_UIDENT; clear type_longident_and_parameters; clear type_parameters; clear ipatt; clear labeled_ipatt; clear semi; + clear do_sequence; clear let_binding; clear type_kind; clear constructor_arg_list; @@ -347,7 +236,6 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct clear class_type_longident_and_param; clear class_type_plus; clear type_constraint; - clear comma_expr; clear comma_patt; clear sequence; clear sem_expr_for_list; @@ -360,7 +248,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct EXTEND Gram GLOBAL: a_CHAR a_FLOAT a_INT a_INT32 a_INT64 a_LABEL a_LIDENT - a_LIDENT_or_operator a_NATIVEINT a_OPTLABEL a_STRING a_UIDENT a_ident + a_NATIVEINT a_OPTLABEL a_STRING a_UIDENT a_ident amp_ctyp and_ctyp match_case match_case0 match_case_quot binding binding_quot class_declaration class_description class_expr class_expr_quot class_fun_binding class_fun_def class_info_for_class_expr @@ -372,7 +260,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct comma_ctyp comma_expr comma_ipatt comma_patt comma_type_parameter constrain constructor_arg_list constructor_declaration constructor_declarations ctyp ctyp_quot cvalue_binding direction_flag - dummy eq_expr expr expr_eoi expr_quot field field_expr fun_binding + dummy eq_expr expr expr_eoi expr_quot field_expr fun_binding fun_def ident ident_quot implem interf ipatt ipatt_tcon label label_declaration label_expr label_ipatt label_longident label_patt labeled_ipatt let_binding meth_list module_binding module_binding0 @@ -383,15 +271,14 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct opt_comma_ctyp opt_dot_dot opt_eq_ctyp opt_expr opt_meth_list opt_mutable opt_polyt opt_private opt_rec opt_virtual opt_when_expr patt patt_as_patt_opt patt_eoi - patt_quot patt_tcon phrase pipe_ctyp poly_type row_field sem_ctyp + patt_quot patt_tcon phrase poly_type row_field sem_expr sem_expr_for_list sem_patt sem_patt_for_list semi sequence sig_item sig_item_quot sig_items star_ctyp str_item str_item_quot str_items top_phrase type_constraint type_declaration type_ident_and_parameters type_kind type_longident type_longident_and_parameters type_parameter type_parameters typevars use_file val_longident value_let value_val with_constr with_constr_quot - - infixop0 infixop1 infixop2 infixop3 infixop4 + infixop0 infixop1 infixop2 infixop3 infixop4 do_sequence ; sem_expr: [ [ e1 = expr LEVEL "top"; ";"; e2 = SELF -> <:expr< $e1$; $e2$ >> @@ -401,6 +288,10 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct sequence: [ [ e = sem_expr -> e ] ] ; + do_sequence: + [ [ seq = sequence; "done" -> seq + ] ] + ; sem_expr_for_list: [ [ e = expr LEVEL "top"; ";"; el = SELF -> fun acc -> <:expr< [ $e$ :: $el acc$ ] >> | e = expr LEVEL "top"; ";" -> fun acc -> <:expr< [ $e$ :: $acc$ ] >> @@ -419,39 +310,29 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct <:str_item< let module $m$ = $mb$ in $e$ >> ] ] ; - expr: + expr: BEFORE "top" [ ";" RIGHTA [ e1 = SELF; ";"; e2 = SELF -> conc_seq e1 e2 - | e1 = SELF; ";" -> e1 ] - | "top" - [ "let"; r = opt_rec; bi = binding; "in"; + | e1 = SELF; ";" -> e1 ] ]; + expr: LEVEL "top" + [ [ "let"; r = opt_rec; bi = binding; "in"; x = expr LEVEL ";" -> <:expr< let $rec:r$ $bi$ in $x$ >> | "let"; "module"; m = a_UIDENT; mb = module_binding0; "in"; e = expr LEVEL ";" -> <:expr< let module $m$ = $mb$ in $e$ >> - | "function"; OPT "|"; a = match_case -> + | "function"; a = match_case -> <:expr< fun [ $a$ ] >> - | "fun"; p = labeled_ipatt; e = fun_def -> - <:expr< fun $p$ -> $e$ >> - | "match"; e = SELF; "with"; OPT "|"; a = match_case -> - <:expr< match $e$ with [ $a$ ] >> - | "try"; e = SELF; "with"; OPT "|"; a = match_case -> - <:expr< try $e$ with [ $a$ ] >> | "if"; e1 = SELF; "then"; e2 = expr LEVEL "top"; "else"; e3 = expr LEVEL "top" -> <:expr< if $e1$ then $e2$ else $e3$ >> | "if"; e1 = SELF; "then"; e2 = expr LEVEL "top" -> <:expr< if $e1$ then $e2$ else () >> - | "for"; i = a_LIDENT; "="; e1 = SELF; df = direction_flag; e2 = SELF; - "do"; el = SELF; "done" -> - <:expr< for $i$ = $e1$ $to:df$ $e2$ do { $get_seq el$ } >> - | "while"; e1 = SELF; "do"; e2 = SELF; "done" -> - <:expr< while $e1$ do { $get_seq e2$ } >> - | "object"; csp = opt_class_self_patt; cst = class_structure; "end" -> - <:expr< object ($csp$) $cst$ end >> ] - | [ e = SELF; ","; el = (*FIXME comma_expr*)LIST1 NEXT SEP "," -> + ] ]; + expr: BEFORE "||" + [ "," + [ e = SELF; ","; el = (*FIXME comma_expr*)LIST1 NEXT SEP "," -> <:expr< ( $e$, $Ast.exCom_of_list el$ ) >> ] | ":=" NONA [ e1 = SELF; ":="; e2 = expr LEVEL "top" -> @@ -459,105 +340,28 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct | e1 = SELF; "<-"; e2 = expr LEVEL "top" -> match bigarray_set _loc e1 e2 with [ Some e -> e - | None -> <:expr< $e1$ := $e2$ >> ] ] - | "||" RIGHTA - [ e1 = SELF; op = infixop6; e2 = SELF -> <:expr< $op$ $e1$ $e2$ >> ] - | "&&" RIGHTA - [ e1 = SELF; op = infixop5; e2 = SELF -> <:expr< $op$ $e1$ $e2$ >> ] - | "<" LEFTA - [ e1 = SELF; op = infixop0; e2 = SELF -> <:expr< $op$ $e1$ $e2$ >> ] - | "^" RIGHTA - [ e1 = SELF; op = infixop1; e2 = SELF -> <:expr< $op$ $e1$ $e2$ >> ] - | RIGHTA + | None -> <:expr< $e1$ := $e2$ >> ] + ] ]; + expr: AFTER "^" + [ "::" RIGHTA [ e1 = SELF; "::"; e2 = SELF -> <:expr< [$e1$ :: $e2$] >> ] - | "+" LEFTA - [ e1 = SELF; op = infixop2; e2 = SELF -> <:expr< $op$ $e1$ $e2$ >> ] - | "*" LEFTA - [ e1 = SELF; "*"; e2 = SELF -> <:expr< $e1$ * $e2$ >> - | e1 = SELF; "/"; e2 = SELF -> <:expr< $e1$ / $e2$ >> - | e1 = SELF; "%"; e2 = SELF -> <:expr< $lid:"%"$ $e1$ $e2$ >> - | e1 = SELF; "land"; e2 = SELF -> <:expr< $e1$ land $e2$ >> - | e1 = SELF; "lor"; e2 = SELF -> <:expr< $e1$ lor $e2$ >> - | e1 = SELF; "lxor"; e2 = SELF -> <:expr< $e1$ lxor $e2$ >> - | e1 = SELF; "mod"; e2 = SELF -> <:expr< $e1$ mod $e2$ >> - | e1 = SELF; op = infixop3; e2 = SELF -> <:expr< $op$ $e1$ $e2$ >> ] - | "**" RIGHTA - [ e1 = SELF; "**"; e2 = SELF -> <:expr< $e1$ ** $e2$ >> - | e1 = SELF; "asr"; e2 = SELF -> <:expr< $e1$ asr $e2$ >> - | e1 = SELF; "lsl"; e2 = SELF -> <:expr< $e1$ lsl $e2$ >> - | e1 = SELF; "lsr"; e2 = SELF -> <:expr< $e1$ lsr $e2$ >> - | e1 = SELF; op = infixop4; e2 = SELF -> <:expr< $op$ $e1$ $e2$ >> ] - | "unary minus" NONA - [ "-"; e = SELF -> <:expr< $mkumin _loc "-" e$ >> - | "-."; e = SELF -> <:expr< $mkumin _loc "-." e$ >> ] - | "apply" LEFTA - [ e1 = SELF; e2 = SELF -> + ]; + expr: LEVEL "apply" (* LEFTA *) + [ [ e1 = SELF; e2 = SELF -> match (is_expr_constr_call e1, e2) with [ (True, <:expr< ( $tup:e$ ) >>) -> List.fold_left (fun e1 e2 -> <:expr< $e1$ $e2$ >>) e1 (Ast.list_of_expr e []) | _ -> <:expr< $e1$ $e2$ >> ] - | "assert"; e = SELF -> - match e with - [ <:expr< False >> -> <:expr< assert False >> - | _ -> <:expr< assert $e$ >> ] - | "lazy"; e = SELF -> - <:expr< lazy $e$ >> ] - | "label" - [ i = LABEL; e = SELF -> <:expr< ~ $i$ : $e$ >> (* Here it's LABEL and not - tilde_label since ~a:b - is different than ~a : b *) - | "~"; i = a_LIDENT -> <:expr< ~ $i$ >> - | i = OPTLABEL; e = SELF -> <:expr< ? $i$ : $e$ >> (* Same remark for ?a:b *) - | "?"; i = a_LIDENT -> <:expr< ? $i$ >> ] - | "." LEFTA - [ e1 = SELF; "."; "("; e2 = SELF; ")" -> <:expr< $e1$ .( $e2$ ) >> - | e1 = SELF; "."; "["; e2 = SELF; "]" -> <:expr< $e1$ .[ $e2$ ] >> - | e1 = SELF; "."; "{"; e2 = SELF; "}" -> bigarray_get _loc e1 e2 - | e1 = SELF; "."; e2 = SELF -> <:expr< $e1$ . $e2$ >> - | e = SELF; "#"; lab = label -> <:expr< $e$ # $lab$ >> ] - | "~-" NONA - [ "!"; e = SELF -> <:expr< $e$ . val>> - | "~-"; e = SELF -> <:expr< ~- $e$ >> - | "~-."; e = SELF -> <:expr< ~-. $e$ >> - | f = prefixop; e = SELF -> <:expr< $f$ $e$ >> ] - | "simple" LEFTA - [ `QUOTATION x -> Quotation.expand_expr (Gram.parse_string expr) _loc x - | `ANTIQUOT ("exp"|""|"anti" as n) s -> - <:expr< $anti:mk_anti ~c:"expr" n s$ >> - | `ANTIQUOT ("tup" as n) s -> - <:expr< ($tup: <:expr< $anti:mk_anti ~c:"expr" n s$ >>$) >> - | s = a_INT -> <:expr< $int:s$ >> - | s = a_INT32 -> <:expr< $int32:s$ >> - | s = a_INT64 -> <:expr< $int64:s$ >> - | s = a_NATIVEINT -> <:expr< $nativeint:s$ >> - | s = a_FLOAT -> <:expr< $flo:s$ >> - | s = a_STRING -> <:expr< $str:s$ >> - | c = a_CHAR -> <:expr< $chr:c$ >> - | i = val_longident -> <:expr< $id:i$ >> - | "false" -> <:expr< False >> + ] ]; + expr: LEVEL "simple" (* LEFTA *) + [ [ "false" -> <:expr< False >> | "true" -> <:expr< True >> - | "["; "]" -> <:expr< [] >> - | "["; mk = sem_expr_for_list; "]" -> mk <:expr< [] >> - | "[|"; "|]" -> <:expr< [| |] >> - | "[|"; el = sem_expr; "|]" -> <:expr< [| $el$ |] >> | "{"; test_label_eq; lel = label_expr; "}" -> <:expr< { $lel$ } >> | "{"; e = expr LEVEL "."; "with"; lel = label_expr; "}" -> <:expr< { ($e$) with $lel$ } >> - | "{<"; ">}" -> <:expr< {< >} >> - | "{<"; fel = field_expr; ">}" -> <:expr< {< $fel$ >} >> - | "("; ")" -> <:expr< () >> - | "("; op = operator_rparen -> <:expr< $lid:op$ >> - | "("; e = SELF; ":"; t = ctyp; ")" -> <:expr< ($e$ : $t$) >> - | "("; e = SELF; ":"; t = ctyp; ":>"; t2 = ctyp; ")" -> - <:expr< ($e$ : $t$ :> $t2$) >> - | "("; e = SELF; ":>"; t = ctyp; ")" -> <:expr< ($e$ :> $t$) >> - | "("; e = SELF; ")" -> <:expr< $e$ >> - | "begin"; e = SELF; "end" -> <:expr< $e$ >> - | "begin"; "end" -> <:expr< () >> | "new"; i = class_longident -> <:expr< new $i$ >> - | "`"; s = a_ident -> <:expr< ` $s$ >> ] ] ; val_longident: @@ -567,12 +371,10 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct | i = a_LIDENT -> <:ident< $lid:i$ >> | `ANTIQUOT (""|"id"|"anti"|"list" as n) s; "."; i = SELF -> <:ident< $anti:mk_anti ~c:"ident" n s$.$i$ >> - | i = a_UIDENT; "."; "("; j = operator_rparen -> - <:ident< $uid:i$.$lid:j$ >> | i = a_UIDENT; "."; j = SELF -> <:ident< $uid:i$.$j$ >> ] ] ; match_case: - [ [ l = LIST1 match_case0 SEP "|" -> Ast.mcOr_of_list l ] ] + [ [ OPT "|"; l = LIST1 match_case0 SEP "|" -> Ast.mcOr_of_list l ] ] ; patt_constr: [ [ i = module_longident -> <:patt< $id:i$ >> @@ -596,11 +398,14 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct List.fold_left (fun p1 p2 -> <:patt< $p1$ $p2$ >>) p1 (Ast.list_of_patt p []) | _ -> <:patt< $p1$ $p2$ >> ] + | `ANTIQUOT (""|"pat"|"anti" as n) s -> + <:patt< $anti:mk_anti ~c:"patt" n s$ >> | p = patt_constr -> p ] | "simple" [ `ANTIQUOT (""|"pat"|"anti" as n) s -> <:patt< $anti:mk_anti ~c:"patt" n s$ >> | `ANTIQUOT ("tup" as n) s -> <:patt< ($tup:<:patt< $anti:mk_anti ~c:"patt" n s$ >>$) >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.patt_tag | i = ident -> <:patt< $id:i$ >> | s = a_INT -> <:patt< $int:s$ >> | s = a_INT32 -> <:patt< $int32:s$ >> @@ -626,27 +431,18 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct | "[|"; pl = sem_patt; "|]" -> <:patt< [| $pl$ |] >> | "{"; pl = label_patt; "}" -> <:patt< { $pl$ } >> | "("; ")" -> <:patt< () >> - | "("; op = operator_rparen -> <:patt< $lid:op$ >> | "("; p = patt; ":"; t = ctyp; ")" -> <:patt< ($p$ : $t$) >> | "("; p = patt; ")" -> <:patt< $p$ >> | "_" -> <:patt< _ >> | "`"; s = a_ident -> <:patt< ` $s$ >> - | "#"; i = type_longident -> <:patt< # $i$ >> - | `QUOTATION x -> - Quotation.expand_patt (Gram.parse_string patt) _loc x ] ] - ; - infixop5: - [ [ x = [ "&" | "&&" ] -> <:expr< $lid:x$ >> ] ] - ; - infixop6: - [ [ x = [ "or" | "||" ] -> <:expr< $lid:x$ >> ] ] + | "#"; i = type_longident -> <:patt< # $i$ >> ] ] ; (* comma_expr: [ [ e1 = SELF; ","; e2 = SELF -> <:expr< $e1$, $e2$ >> | e = expr LEVEL ":=" -> e ] ] ; *) let_binding: - [ [ test_just_a_lident_or_patt; s = a_LIDENT_or_operator; e = fun_binding -> + [ [ test_just_a_lident_or_patt; s = a_LIDENT; e = fun_binding -> <:binding< $lid:s$ = $e$ >> | p = patt; "="; e = expr -> <:binding< $p$ = $e$ >> ] ] @@ -663,6 +459,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct [ wc1 = SELF; "and"; wc2 = SELF -> <:with_constr< $wc1$ and $wc2$ >> | `ANTIQUOT (""|"with_constr"|"anti"|"list" as n) s -> <:with_constr< $anti:mk_anti ~c:"with_constr" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.with_constr_tag | "type"; `ANTIQUOT (""|"typ"|"anti" as n) s; "="; t = opt_private_ctyp -> <:with_constr< type $anti:mk_anti ~c:"ctyp" n s$ = $t$ >> | "type"; t1 = type_longident_and_parameters; "="; t2 = opt_private_ctyp -> @@ -735,6 +532,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct <:ctyp< ($tup:<:ctyp< $anti:mk_anti ~c:"ctyp" n s$ >>$) >> | `ANTIQUOT ("id" as n) s -> <:ctyp< $id:<:ident< $anti:mk_anti ~c:"ident" n s$ >>$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.ctyp_tag | "("; t = SELF; ","; mk = comma_ctyp_app; ")"; i = ctyp LEVEL "ctyp2" -> mk <:ctyp< $i$ $t$ >> @@ -759,7 +557,12 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct ] ] ; star_ctyp: - [ [ t1 = ctyp LEVEL "ctyp1"; "*"; t2 = SELF -> <:ctyp< $t1$ * $t2$ >> + [ [ `ANTIQUOT (""|"typ" as n) s -> + <:ctyp< $anti:mk_anti ~c:"ctyp" n s$ >> + | `ANTIQUOT ("list" as n) s -> + <:ctyp< $anti:mk_anti ~c:"ctyp*" n s$ >> + | t1 = ctyp LEVEL "ctyp1"; "*"; t2 = SELF -> + <:ctyp< $t1$ * $t2$ >> | t = ctyp LEVEL "ctyp1" -> t ] ] ; @@ -804,6 +607,12 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct | "{"; t = label_declaration; "}" -> <:ctyp< { $t$ } >> ] ] ; + module_longident_with_app: LEVEL "apply" + [ [ i = SELF; "("; j = SELF; ")" -> <:ident< $i$ $j$ >> ] ] + ; + type_longident: LEVEL "apply" + [ [ i = SELF; "("; j = SELF; ")" -> <:ident< $i$ $j$ >> ] ] + ; constructor_arg_list: [ [ t1 = SELF; "*"; t2 = SELF -> <:ctyp< $t1$ and $t2$ >> | t = ctyp LEVEL "ctyp1" -> t @@ -815,15 +624,12 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct value_val: [ [ "val" -> () ] ] ; - a_LIDENT_or_operator: - [ [ x = a_LIDENT -> x - | "("; x = operator_rparen -> x ] ] - ; label_declaration: [ LEFTA [ t1 = SELF; ";"; t2 = SELF -> <:ctyp< $t1$; $t2$ >> | `ANTIQUOT (""|"typ" as n) s -> <:ctyp< $anti:mk_anti ~c:"ctyp" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.ctyp_tag | s = a_LIDENT; ":"; t = poly_type -> <:ctyp< $lid:s$ : $t$ >> | "mutable"; s = a_LIDENT; ":"; t = poly_type -> <:ctyp< $lid:s$ : mutable $t$ >> @@ -866,8 +672,8 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct ] ] ; label_expr: - [ [ p = label_longident; "="; e = expr LEVEL "top" -> - <:binding< $id:p$ = $e$ >> ] ] + [ [ i = label_longident; "="; e = expr LEVEL "top" -> + <:rec_binding< $i$ = $e$ >> ] ] ; a_UIDENT: [ [ `ANTIQUOT (""|"uid" as n) s -> mk_anti n s @@ -877,5 +683,9 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct ] ] ; END; + + (* Some other DELETE_RULE are before the grammar *) + DELETE_RULE Gram module_longident_with_app: SELF; SELF END; + DELETE_RULE Gram type_longident: SELF; SELF END; end; let module M = Register.OCamlSyntaxExtension Id Make in (); diff --git a/camlp4/Camlp4Parsers/Camlp4OCamlReloadedParser.ml b/camlp4/Camlp4Parsers/Camlp4OCamlReloadedParser.ml new file mode 100644 index 00000000..3f2d7b79 --- /dev/null +++ b/camlp4/Camlp4Parsers/Camlp4OCamlReloadedParser.ml @@ -0,0 +1,94 @@ +open Camlp4; (* -*- camlp4r -*- *) +(****************************************************************************) +(* *) +(* Objective Caml *) +(* *) +(* INRIA Rocquencourt *) +(* *) +(* Copyright 2007 Institut National de Recherche en Informatique et *) +(* en Automatique. All rights reserved. This file is distributed under *) +(* the terms of the GNU Library General Public License, with the special *) +(* exception on linking described in LICENSE at the top of the Objective *) +(* Caml source tree. *) +(* *) +(****************************************************************************) + +(* Authors: + * - Nicolas Pouillard: Original version + *) + +module Id = struct + value name = "Camlp4Reloaded"; + value version = "$Id: Camlp4OCamlReloadedParser.ml,v 1.1.2.3 2007/04/05 18:06:36 pouillar Exp $"; +end; + +module Make (Syntax : Sig.Camlp4Syntax) = struct + open Sig; + include Syntax; + + Gram.Entry.clear match_case; + Gram.Entry.clear semi; + + value mkseq _loc = + fun + [ <:expr< $_$; $_$ >> as e -> <:expr< do { $e$ } >> + | e -> e ] + ; + + DELETE_RULE Gram match_case0: patt_as_patt_opt; opt_when_expr; "->"; expr END; + + value revised = + try + (DELETE_RULE Gram expr: "if"; SELF; "then"; SELF; "else"; SELF END; True) + with [ Not_found -> begin + DELETE_RULE Gram expr: "if"; SELF; "then"; expr LEVEL "top"; "else"; expr LEVEL "top" END; + DELETE_RULE Gram expr: "if"; SELF; "then"; expr LEVEL "top" END; False + end ]; + + if revised then begin + DELETE_RULE Gram expr: "fun"; "["; LIST0 match_case0 SEP "|"; "]" END; + EXTEND Gram + expr: LEVEL "top" + [ [ "function"; a = match_case -> <:expr< fun [ $a$ ] >> ] ]; + END; + DELETE_RULE Gram value_let: "value" END; + DELETE_RULE Gram value_val: "value" END; + end else begin + DELETE_RULE Gram value_let: "let" END; + DELETE_RULE Gram value_val: "val" END; + end; + + EXTEND Gram + GLOBAL: match_case match_case0 expr value_let value_val semi; + + match_case: + [ [ OPT "|"; l = LIST1 match_case0 SEP "|"; "end" -> Ast.mcOr_of_list l + | "end" -> <:match_case<>> ] ] + ; + + match_case0: + [ [ p = patt_as_patt_opt; w = opt_when_expr; "->"; e = sequence -> + <:match_case< $p$ when $w$ -> $mkseq _loc e$ >> ] ] + ; + + expr: LEVEL "top" + [ [ "if"; e1 = sequence; "then"; e2 = sequence; "else"; e3 = sequence; "end" -> + <:expr< if $mkseq _loc e1$ then $mkseq _loc e2$ else $mkseq _loc e3$ >> + | "if"; e1 = sequence; "then"; e2 = sequence; "end" -> + <:expr< if $mkseq _loc e1$ then $mkseq _loc e2$ else () >> ] ] + ; + + value_let: + [ [ "val" -> () ] ] + ; + value_val: + [ [ "val" -> () ] ] + ; + semi: + [ [ ";;" -> () | ";" -> () | -> () ] ] + ; + END; + +end; + +let module M = Register.OCamlSyntaxExtension Id Make in (); diff --git a/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParser.ml b/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParser.ml index d5f550fd..8323760f 100644 --- a/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParser.ml +++ b/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParser.ml @@ -20,7 +20,7 @@ open Camlp4; (* -*- camlp4r -*- *) module Id = struct value name = "Camlp4RevisedParserParser"; - value version = "$Id: Camlp4OCamlRevisedParser.ml,v 1.2.2.1 2007/03/03 09:21:36 pouillar Exp $"; + value version = "$Id: Camlp4OCamlRevisedParser.ml,v 1.2.2.19 2007/05/12 22:48:16 pouillar Exp $"; end; module Make (Syntax : Sig.Camlp4Syntax) = struct @@ -34,10 +34,14 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct do { Printf.eprintf "\ New syntax: + (e1; e2; ... ; en) OR begin e1; e2; ... ; en end + while e do e1; e2; ... ; en done + for v = v1 to/downto v2 do e1; e2; ... ; en done +Old syntax (still supported): do {e1; e2; ... ; en} while e do {e1; e2; ... ; en} for v = v1 to/downto v2 do {e1; e2; ... ; en} -Old (no more supported) syntax: +Very old (no more supported) syntax: do e1; e2; ... ; en-1; return en while e do e1; e2; ... ; en; done for v = v1 to/downto v2 do e1; e2; ... ; en; done @@ -56,7 +60,6 @@ Old (no more supported) syntax: Gram.Entry.clear a_INT64; Gram.Entry.clear a_LABEL; Gram.Entry.clear a_LIDENT; - Gram.Entry.clear a_LIDENT_or_operator; Gram.Entry.clear a_NATIVEINT; Gram.Entry.clear a_OPTLABEL; Gram.Entry.clear a_STRING; @@ -69,6 +72,7 @@ Old (no more supported) syntax: Gram.Entry.clear match_case_quot; Gram.Entry.clear binding; Gram.Entry.clear binding_quot; + Gram.Entry.clear rec_binding_quot; Gram.Entry.clear class_declaration; Gram.Entry.clear class_description; Gram.Entry.clear class_expr; @@ -110,7 +114,6 @@ Old (no more supported) syntax: Gram.Entry.clear expr; Gram.Entry.clear expr_eoi; Gram.Entry.clear expr_quot; - Gram.Entry.clear field; Gram.Entry.clear field_expr; Gram.Entry.clear fun_binding; Gram.Entry.clear fun_def; @@ -162,10 +165,8 @@ Old (no more supported) syntax: Gram.Entry.clear patt_quot; Gram.Entry.clear patt_tcon; Gram.Entry.clear phrase; - Gram.Entry.clear pipe_ctyp; Gram.Entry.clear poly_type; Gram.Entry.clear row_field; - Gram.Entry.clear sem_ctyp; Gram.Entry.clear sem_expr; Gram.Entry.clear sem_expr_for_list; Gram.Entry.clear sem_patt; @@ -228,8 +229,8 @@ Old (no more supported) syntax: value mkassert _loc = fun [ <:expr< False >> -> - <:expr< assert False >> (* this case take care about - the special assert false node *) + <:expr< assert False >> (* this case takes care about + the special assert false node *) | e -> <:expr< assert $e$ >> ] ; @@ -242,6 +243,24 @@ Old (no more supported) syntax: | e -> e ] ; + value mksequence' _loc = + fun + [ <:expr< $_$; $_$ >> as e -> <:expr< do { $e$ } >> + | e -> e ] + ; + + value module_type_app mt1 mt2 = + match (mt1, mt2) with + [ (<:module_type@_loc< $id:i1$ >>, <:module_type< $id:i2$ >>) -> + <:module_type< $id:<:ident< $i1$ $i2$ >>$ >> + | _ -> raise Stream.Failure ]; + + value module_type_acc mt1 mt2 = + match (mt1, mt2) with + [ (<:module_type@_loc< $id:i1$ >>, <:module_type< $id:i2$ >>) -> + <:module_type< $id:<:ident< $i1$.$i2$ >>$ >> + | _ -> raise Stream.Failure ]; + value bigarray_get _loc arr arg = let coords = match arg with @@ -253,7 +272,7 @@ Old (no more supported) syntax: [ [c1] -> <:expr< Bigarray.Array1.get $arr$ $c1$ >> | [c1; c2] -> <:expr< Bigarray.Array2.get $arr$ $c1$ $c2$ >> | [c1; c2; c3] -> <:expr< Bigarray.Array3.get $arr$ $c1$ $c2$ $c3$ >> - (* | coords -> <:expr< Bigarray.Genarray.get $arr$ [| $`list:coords$ |] >> ] *) + (* | coords -> <:expr< Bigarray.Genarray.get $arr$ [| $list:coords$ |] >> ] *) | coords -> <:expr< Bigarray.Genarray.get $arr$ [| $Ast.exSem_of_list coords$ |] >> ]; @@ -269,58 +288,114 @@ Old (no more supported) syntax: Some <:expr< Bigarray.Genarray.set $arr$ [| $coords$ |] $newval$ >> | _ -> None ]; - value choose_tvar tpl = - let abs = "abstract" in - let rec find_alpha n = - let ns = if n = 0 then "" else string_of_int n in - let s' = abs ^ ns in - let rec mem = - fun - [ [ <:ctyp< '$s$ >> | <:ctyp< +'$s$ >> | <:ctyp< -'$s$ >> :: xs ] -> - (s = s') || mem xs - | [] -> False - | _ -> assert False ] in - if mem tpl then find_alpha (succ n) - else s' - in find_alpha 0; + value test_not_left_brace_nor_do = + Gram.Entry.of_parser "test_not_left_brace_nor_do" + (fun strm -> + match Stream.peek strm with + [ Some(KEYWORD "{" | KEYWORD "do", _) -> raise Stream.Failure + | _ -> () ]); value stopped_at _loc = Some (Loc.move_line 1 _loc) (* FIXME be more precise *); - (* value list1sep symb sep one cons = - let rec kont al = - parser - [ [: v = sep; a = symb; s :] -> kont (cons al (one a)) s - | [: :] -> al ] + value symbolchar = + let list = + ['$'; '!'; '%'; '&'; '*'; '+'; '-'; '.'; '/'; ':'; '<'; '='; '>'; '?'; + '@'; '^'; '|'; '~'; '\\'] in - parser [: a = symb; s :] -> kont (one a) s; + let rec loop s i = + if i == String.length s then True + else if List.mem s.[i] list then loop s (i + 1) + else False + in + loop + ; + + let list = ['!'; '?'; '~'] in + let excl = ["!="; "??"] in + Gram.Entry.setup_parser prefixop + (parser + [: `(KEYWORD x | SYMBOL x, _loc) + when + not (List.mem x excl) && String.length x >= 2 && + List.mem x.[0] list && symbolchar x 1 :] -> + <:expr< $lid:x$ >>) + ; + + let list_ok = ["<"; ">"; "<="; ">="; "="; "<>"; "=="; "!="; "$"] in + let list_first_char_ok = ['='; '<'; '>'; '|'; '&'; '$'; '!'] in + let excl = ["<-"; "||"; "&&"] in + Gram.Entry.setup_parser infixop0 + (parser + [: `(KEYWORD x | SYMBOL x, _loc) + when + (List.mem x list_ok) || + (not (List.mem x excl) && String.length x >= 2 && + List.mem x.[0] list_first_char_ok && symbolchar x 1) :] -> + <:expr< $lid:x$ >>) + ; + + let list = ['@'; '^'] in + Gram.Entry.setup_parser infixop1 + (parser + [: `(KEYWORD x | SYMBOL x, _loc) + when + String.length x >= 1 && List.mem x.[0] list && + symbolchar x 1 :] -> + <:expr< $lid:x$ >>) + ; + + let list = ['+'; '-'] in + Gram.Entry.setup_parser infixop2 + (parser + [: `(KEYWORD x | SYMBOL x, _loc) + when + x <> "->" && String.length x >= 1 && List.mem x.[0] list && + symbolchar x 1 :] -> + <:expr< $lid:x$ >>) + ; + + let list = ['*'; '/'; '%'; '\\'] in + Gram.Entry.setup_parser infixop3 + (parser + [: `(KEYWORD x | SYMBOL x, _loc) + when + String.length x >= 1 && List.mem x.[0] list && + (x.[0] <> '*' || String.length x < 2 || x.[1] <> '*') && + symbolchar x 1 :] -> + <:expr< $lid:x$ >>) + ; + + Gram.Entry.setup_parser infixop4 + (parser + [: `(KEYWORD x | SYMBOL x, _loc) + when + String.length x >= 2 && x.[0] == '*' && x.[1] == '*' && + symbolchar x 2 :] -> + <:expr< $lid:x$ >>) + ; - value sem_expr = - list1sep expr ";" (fun x -> x) (fun e1 e2 -> <:expr< $e1$; $e2$ >>) *) (* transmit the context *) - Gram.Entry.setup_parser sem_expr - (let symb = Gram.parse_tokens_after_filter expr in + Gram.Entry.setup_parser sem_expr begin + let symb1 = Gram.parse_tokens_after_filter expr in + let symb = + parser + [ [: `(ANTIQUOT ("list" as n) s, _loc) :] -> <:expr< $anti:mk_anti ~c:"expr;" n s$ >> + | [: a = symb1 :] -> a ] + in let rec kont al = parser [ [: `(KEYWORD ";", _loc); a = symb; s :] -> kont <:expr< $al$; $a$ >> s | [: :] -> al ] in - parser [: a = symb; s :] -> kont a s); - (* sem_expr_for_list: - [ [ e = expr; ";"; el = SELF -> fun acc -> <:expr< [ $e$ :: $el acc$ ] >> - | e = expr -> fun acc -> <:expr< [ $e$ :: $acc$ ] >> - ] ] - ; - comma_expr: - [ [ e1 = SELF; ","; e2 = SELF -> <:expr< $e1$, $e2$ >> - | e = expr -> e ] ] - ; *) + parser [: a = symb; s :] -> kont a s + end; EXTEND Gram GLOBAL: - a_CHAR a_FLOAT a_INT a_INT32 a_INT64 a_LABEL a_LIDENT - a_LIDENT_or_operator a_NATIVEINT a_OPTLABEL a_STRING a_UIDENT a_ident + a_CHAR a_FLOAT a_INT a_INT32 a_INT64 a_LABEL a_LIDENT rec_binding_quot + a_NATIVEINT a_OPTLABEL a_STRING a_UIDENT a_ident amp_ctyp and_ctyp match_case match_case0 match_case_quot binding binding_quot class_declaration class_description class_expr class_expr_quot class_fun_binding class_fun_def class_info_for_class_expr @@ -332,7 +407,7 @@ Old (no more supported) syntax: comma_ctyp comma_expr comma_ipatt comma_patt comma_type_parameter constrain constructor_arg_list constructor_declaration constructor_declarations ctyp ctyp_quot cvalue_binding direction_flag - dummy eq_expr expr expr_eoi expr_quot field field_expr fun_binding + dummy eq_expr expr expr_eoi expr_quot field_expr fun_binding fun_def ident ident_quot implem interf ipatt ipatt_tcon label label_declaration label_expr label_ipatt label_longident label_patt labeled_ipatt let_binding meth_list module_binding module_binding0 @@ -342,13 +417,14 @@ Old (no more supported) syntax: opt_class_self_patt opt_class_self_type opt_comma_ctyp opt_dot_dot opt_eq_ctyp opt_expr opt_meth_list opt_mutable opt_polyt opt_private opt_rec opt_virtual opt_when_expr patt patt_as_patt_opt patt_eoi - patt_quot patt_tcon phrase pipe_ctyp poly_type row_field sem_ctyp + patt_quot patt_tcon phrase poly_type row_field sem_expr sem_expr_for_list sem_patt sem_patt_for_list semi sequence sig_item sig_item_quot sig_items star_ctyp str_item str_item_quot str_items top_phrase type_constraint type_declaration type_ident_and_parameters type_kind type_longident type_longident_and_parameters type_parameter type_parameters typevars - use_file val_longident value_let value_val with_constr with_constr_quot; + use_file val_longident value_let value_val with_constr with_constr_quot + infixop0 infixop1 infixop2 infixop3 infixop4 do_sequence; module_expr: [ [ "functor"; "("; i = a_UIDENT; ":"; t = module_type; ")"; "->"; me = SELF -> @@ -359,6 +435,7 @@ Old (no more supported) syntax: | "simple" [ `ANTIQUOT (""|"mexp"|"anti"|"list" as n) s -> <:module_expr< $anti:mk_anti ~c:"module_expr" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.module_expr_tag | i = module_longident -> <:module_expr< $id:i$ >> | "("; me = SELF; ":"; mt = module_type; ")" -> <:module_expr< ( $me$ : $mt$ ) >> @@ -390,6 +467,7 @@ Old (no more supported) syntax: <:str_item< class type $ctd$ >> | `ANTIQUOT (""|"stri"|"anti"|"list" as n) s -> <:str_item< $anti:mk_anti ~c:"str_item" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.str_item_tag | e = expr -> <:str_item< $exp:e$ >> ] ] ; module_binding0: @@ -410,6 +488,7 @@ Old (no more supported) syntax: <:module_binding< $anti:mk_anti ~c:"module_binding" n s$ >> | `ANTIQUOT ("" as n) m; ":"; mt = module_type; "="; me = module_expr -> <:module_binding< $mk_anti n m$ : $mt$ = $me$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.module_binding_tag | m = a_UIDENT; ":"; mt = module_type; "="; me = module_expr -> <:module_binding< $m$ : $mt$ = $me$ >> ] ] ; @@ -418,11 +497,14 @@ Old (no more supported) syntax: <:module_type< functor ( $i$ : $t$ ) -> $mt$ >> ] | [ mt = SELF; "with"; wc = with_constr -> <:module_type< $mt$ with $wc$ >> ] + | [ mt1 = SELF; mt2 = SELF -> module_type_app mt1 mt2 ] + | [ mt1 = SELF; "."; mt2 = SELF -> module_type_acc mt1 mt2 ] | [ "sig"; sg = sig_items; "end" -> <:module_type< sig $sg$ end >> ] | "simple" [ `ANTIQUOT (""|"mtyp"|"anti"|"list" as n) s -> <:module_type< $anti:mk_anti ~c:"module_type" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.module_type_tag | i = module_longident_with_app -> <:module_type< $id:i$ >> | "'"; i = a_ident -> <:module_type< ' $i$ >> | "("; mt = SELF; ")" -> <:module_type< $mt$ >> ] ] @@ -431,6 +513,7 @@ Old (no more supported) syntax: [ "top" [ `ANTIQUOT (""|"sigi"|"anti"|"list" as n) s -> <:sig_item< $anti:mk_anti ~c:"sig_item" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.sig_item_tag | "exception"; t = constructor_declaration -> <:sig_item< exception $t$ >> | "external"; i = a_LIDENT; ":"; t = ctyp; "="; sl = string_list -> @@ -442,10 +525,12 @@ Old (no more supported) syntax: <:sig_item< module rec $mb$ >> | "module"; "type"; i = a_UIDENT; "="; mt = module_type -> <:sig_item< module type $i$ = $mt$ >> + | "module"; "type"; i = a_UIDENT -> + <:sig_item< module type $i$ >> | "open"; i = module_longident -> <:sig_item< open $i$ >> | "type"; t = type_declaration -> <:sig_item< type $t$ >> - | value_val; i = a_LIDENT_or_operator; ":"; t = ctyp -> + | value_val; i = a_LIDENT; ":"; t = ctyp -> <:sig_item< value $i$ : $t$ >> | "class"; cd = class_description -> <:sig_item< class $cd$ >> @@ -463,6 +548,7 @@ Old (no more supported) syntax: [ m1 = SELF; "and"; m2 = SELF -> <:module_binding< $m1$ and $m2$ >> | `ANTIQUOT (""|"module_binding"|"anti"|"list" as n) s -> <:module_binding< $anti:mk_anti ~c:"module_binding" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.module_binding_tag | m = a_UIDENT; ":"; mt = module_type -> <:module_binding< $m$ : $mt$ >> ] ] ; @@ -471,6 +557,7 @@ Old (no more supported) syntax: [ wc1 = SELF; "and"; wc2 = SELF -> <:with_constr< $wc1$ and $wc2$ >> | `ANTIQUOT (""|"with_constr"|"anti"|"list" as n) s -> <:with_constr< $anti:mk_anti ~c:"with_constr" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.with_constr_tag | "type"; `ANTIQUOT (""|"typ"|"anti" as n) s; "="; t = ctyp -> <:with_constr< type $anti:mk_anti ~c:"ctyp" n s$ = $t$ >> | "type"; t1 = type_longident_and_parameters; "="; t2 = ctyp -> @@ -480,31 +567,26 @@ Old (no more supported) syntax: ; expr: [ "top" RIGHTA - [ "let"; r = opt_rec; bi = binding; "in"; - x = SELF -> + [ "let"; r = opt_rec; bi = binding; "in"; x = SELF -> <:expr< let $rec:r$ $bi$ in $x$ >> | "let"; "module"; m = a_UIDENT; mb = module_binding0; "in"; e = SELF -> <:expr< let module $m$ = $mb$ in $e$ >> - | "fun"; "["; a = match_case; "]" -> - <:expr< fun [ $a$ ] >> + | "fun"; "["; a = LIST0 match_case0 SEP "|"; "]" -> + <:expr< fun [ $list:a$ ] >> | "fun"; p = labeled_ipatt; e = fun_def -> <:expr< fun $p$ -> $e$ >> - | "match"; e = SELF; "with"; "["; a = match_case; "]" -> - <:expr< match $e$ with [ $a$ ] >> - | "match"; e1 = SELF; "with"; p = ipatt; "->"; e2 = SELF -> - <:expr< match $e1$ with $p$ -> $e2$ >> - | "try"; e = SELF; "with"; "["; a = match_case; "]" -> - <:expr< try $e$ with [ $a$ ] >> - | "try"; e1 = SELF; "with"; p = ipatt; "->"; e2 = SELF -> - <:expr< try $e1$ with $p$ -> $e2$ >> + | "match"; e = sequence; "with"; a = match_case -> + <:expr< match $mksequence' _loc e$ with [ $a$ ] >> + | "try"; e = sequence; "with"; a = match_case -> + <:expr< try $mksequence' _loc e$ with [ $a$ ] >> | "if"; e1 = SELF; "then"; e2 = SELF; "else"; e3 = SELF -> <:expr< if $e1$ then $e2$ else $e3$ >> - | "do"; "{"; seq = sequence; "}" -> mksequence _loc seq - | "for"; i = a_LIDENT; "="; e1 = SELF; df = direction_flag; e2 = SELF; - "do"; "{"; seq = sequence; "}" -> - <:expr< for $i$ = $e1$ $to:df$ $e2$ do { $seq$ } >> - | "while"; e = SELF; "do"; "{"; seq = sequence; "}" -> - <:expr< while $e$ do { $seq$ } >> + | "do"; seq = do_sequence -> mksequence _loc seq + | "for"; i = a_LIDENT; "="; e1 = sequence; df = direction_flag; + e2 = sequence; "do"; seq = do_sequence -> + <:expr< for $i$ = $mksequence' _loc e1$ $to:df$ $mksequence' _loc e2$ do { $seq$ } >> + | "while"; e = sequence; "do"; seq = do_sequence -> + <:expr< while $mksequence' _loc e$ do { $seq$ } >> | "object"; csp = opt_class_self_patt; cst = class_structure; "end" -> <:expr< object ($csp$) $cst$ end >> ] | "where" @@ -516,41 +598,26 @@ Old (no more supported) syntax: [ Some e -> e | None -> <:expr< $e1$ := $e2$ >> ] ] | "||" RIGHTA - [ e1 = SELF; "||"; e2 = SELF -> <:expr< $e1$ || $e2$ >> ] + [ e1 = SELF; op = infixop6; e2 = SELF -> <:expr< $op$ $e1$ $e2$ >> ] | "&&" RIGHTA - [ e1 = SELF; "&&"; e2 = SELF -> <:expr< $e1$ && $e2$ >> ] + [ e1 = SELF; op = infixop5; e2 = SELF -> <:expr< $op$ $e1$ $e2$ >> ] | "<" LEFTA - [ e1 = SELF; "<"; e2 = SELF -> <:expr< $e1$ < $e2$ >> - | e1 = SELF; ">"; e2 = SELF -> <:expr< $e1$ > $e2$ >> - | e1 = SELF; "<="; e2 = SELF -> <:expr< $e1$ <= $e2$ >> - | e1 = SELF; ">="; e2 = SELF -> <:expr< $e1$ >= $e2$ >> - | e1 = SELF; "="; e2 = SELF -> <:expr< $e1$ = $e2$ >> - | e1 = SELF; "<>"; e2 = SELF -> <:expr< $e1$ <> $e2$ >> - | e1 = SELF; "=="; e2 = SELF -> <:expr< $e1$ == $e2$ >> - | e1 = SELF; "!="; e2 = SELF -> <:expr< $e1$ != $e2$ >> ] + [ e1 = SELF; op = infixop0; e2 = SELF -> <:expr< $op$ $e1$ $e2$ >> ] | "^" RIGHTA - [ e1 = SELF; "^"; e2 = SELF -> <:expr< $e1$ ^ $e2$ >> - | e1 = SELF; "^^"; e2 = SELF -> <:expr< $lid:"^^"$ $e1$ $e2$ >> - | e1 = SELF; "@"; e2 = SELF -> <:expr< $e1$ @ $e2$ >> ] + [ e1 = SELF; op = infixop1; e2 = SELF -> <:expr< $op$ $e1$ $e2$ >> ] | "+" LEFTA - [ e1 = SELF; "+"; e2 = SELF -> <:expr< $e1$ + $e2$ >> - | e1 = SELF; "-"; e2 = SELF -> <:expr< $e1$ - $e2$ >> - | e1 = SELF; "+."; e2 = SELF -> <:expr< $e1$ +. $e2$ >> - | e1 = SELF; "-."; e2 = SELF -> <:expr< $e1$ -. $e2$ >> ] + [ e1 = SELF; op = infixop2; e2 = SELF -> <:expr< $op$ $e1$ $e2$ >> ] | "*" LEFTA - [ e1 = SELF; "*"; e2 = SELF -> <:expr< $e1$ * $e2$ >> - | e1 = SELF; "/"; e2 = SELF -> <:expr< $e1$ / $e2$ >> - | e1 = SELF; "*."; e2 = SELF -> <:expr< $e1$ *. $e2$ >> - | e1 = SELF; "/."; e2 = SELF -> <:expr< $e1$ /. $e2$ >> - | e1 = SELF; "land"; e2 = SELF -> <:expr< $e1$ land $e2$ >> + [ e1 = SELF; "land"; e2 = SELF -> <:expr< $e1$ land $e2$ >> | e1 = SELF; "lor"; e2 = SELF -> <:expr< $e1$ lor $e2$ >> | e1 = SELF; "lxor"; e2 = SELF -> <:expr< $e1$ lxor $e2$ >> - | e1 = SELF; "mod"; e2 = SELF -> <:expr< $e1$ mod $e2$ >> ] + | e1 = SELF; "mod"; e2 = SELF -> <:expr< $e1$ mod $e2$ >> + | e1 = SELF; op = infixop3; e2 = SELF -> <:expr< $op$ $e1$ $e2$ >> ] | "**" RIGHTA - [ e1 = SELF; "**"; e2 = SELF -> <:expr< $e1$ ** $e2$ >> - | e1 = SELF; "asr"; e2 = SELF -> <:expr< $e1$ asr $e2$ >> + [ e1 = SELF; "asr"; e2 = SELF -> <:expr< $e1$ asr $e2$ >> | e1 = SELF; "lsl"; e2 = SELF -> <:expr< $e1$ lsl $e2$ >> - | e1 = SELF; "lsr"; e2 = SELF -> <:expr< $e1$ lsr $e2$ >> ] + | e1 = SELF; "lsr"; e2 = SELF -> <:expr< $e1$ lsr $e2$ >> + | e1 = SELF; op = infixop4; e2 = SELF -> <:expr< $op$ $e1$ $e2$ >> ] | "unary minus" NONA [ "-"; e = SELF -> mkumin _loc "-" e | "-."; e = SELF -> mkumin _loc "-." e ] @@ -561,9 +628,14 @@ Old (no more supported) syntax: | "lazy"; e = SELF -> <:expr< lazy $e$ >> ] | "label" NONA [ "~"; i = a_LIDENT; ":"; e = SELF -> <:expr< ~ $i$ : $e$ >> - | `LABEL i; e = SELF -> <:expr< ~ $i$ : $e$ >> | "~"; i = a_LIDENT -> <:expr< ~ $i$ >> + + (* Here it's LABEL and not tilde_label since ~a:b is different than ~a : b *) + | `LABEL i; e = SELF -> <:expr< ~ $i$ : $e$ >> + + (* Same remark for ?a:b *) | `OPTLABEL i; e = SELF -> <:expr< ? $i$ : $e$ >> + | "?"; i = a_LIDENT; ":"; e = SELF -> <:expr< ? $i$ : $e$ >> | "?"; i = a_LIDENT -> <:expr< ? $i$ >> ] | "." LEFTA @@ -573,14 +645,18 @@ Old (no more supported) syntax: | e1 = SELF; "."; e2 = SELF -> <:expr< $e1$ . $e2$ >> | e = SELF; "#"; lab = label -> <:expr< $e$ # $lab$ >> ] | "~-" NONA - [ "~-"; e = SELF -> <:expr< ~- $e$ >> - | "~-."; e = SELF -> <:expr< ~-. $e$ >> ] + [ "!"; e = SELF -> <:expr< $e$.val >> + | f = prefixop; e = SELF -> <:expr< $f$ $e$ >> ] | "simple" - [ `QUOTATION x -> Quotation.expand_expr (Gram.parse_string expr) _loc x + [ `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.expr_tag | `ANTIQUOT ("exp"|""|"anti" as n) s -> <:expr< $anti:mk_anti ~c:"expr" n s$ >> + | `ANTIQUOT ("`bool" as n) s -> + <:expr< $anti:mk_anti n s$ >> | `ANTIQUOT ("tup" as n) s -> - <:expr< ($tup: <:expr< $anti:mk_anti ~c:"expr" n s$ >>$) >> + <:expr< $tup: <:expr< $anti:mk_anti ~c:"expr" n s$ >>$ >> + | `ANTIQUOT ("seq" as n) s -> + <:expr< do $anti:mk_anti ~c:"expr" n s$ done >> | s = a_INT -> <:expr< $int:s$ >> | s = a_INT32 -> <:expr< $int32:s$ >> | s = a_INT64 -> <:expr< $int64:s$ >> @@ -605,15 +681,25 @@ Old (no more supported) syntax: | "("; ")" -> <:expr< () >> | "("; e = SELF; ":"; t = ctyp; ")" -> <:expr< ($e$ : $t$) >> | "("; e = SELF; ","; el = comma_expr; ")" -> <:expr< ( $e$, $el$ ) >> + | "("; e = SELF; ";"; seq = sequence; ")" -> mksequence _loc <:expr< $e$; $seq$ >> | "("; e = SELF; ":"; t = ctyp; ":>"; t2 = ctyp; ")" -> <:expr< ($e$ : $t$ :> $t2$ ) >> | "("; e = SELF; ":>"; t = ctyp; ")" -> <:expr< ($e$ :> $t$) >> - | "("; e = SELF; ")" -> e ] ] + | "("; e = SELF; ")" -> e + | "begin"; seq = sequence; "end" -> mksequence _loc seq + | "begin"; "end" -> <:expr< () >> ] ] + ; + do_sequence: + [ [ "{"; seq = sequence; "}" -> seq + | test_not_left_brace_nor_do; seq = sequence; "done" -> seq + ] ] + ; + infixop5: + [ [ x = [ "&" | "&&" ] -> <:expr< $lid:x$ >> ] ] + ; + infixop6: + [ [ x = [ "or" | "||" ] -> <:expr< $lid:x$ >> ] ] ; - (* sem_expr: - [ [ e1 = SELF; ";"; e2 = SELF -> <:expr< $e1$; $e2$ >> - | e = expr -> e ] ] - ; *) sem_expr_for_list: [ [ e = expr; ";"; el = SELF -> fun acc -> <:expr< [ $e$ :: $el acc$ ] >> | e = expr -> fun acc -> <:expr< [ $e$ :: $acc$ ] >> @@ -621,6 +707,7 @@ Old (no more supported) syntax: ; comma_expr: [ [ e1 = SELF; ","; e2 = SELF -> <:expr< $e1$, $e2$ >> + | `ANTIQUOT ("list" as n) s -> <:expr< $anti:mk_anti ~c:"expr," n s$ >> | e = expr -> e ] ] ; dummy: @@ -629,6 +716,7 @@ Old (no more supported) syntax: sequence: [ [ "let"; rf = opt_rec; bi = binding; [ "in" | ";" ]; el = SELF -> <:expr< let $rec:rf$ $bi$ in $mksequence _loc el$ >> + | `ANTIQUOT ("list" as n) s -> <:expr< $anti:mk_anti ~c:"expr;" n s$ >> | e = expr; ";"; el = SELF -> <:expr< $e$; $el$ >> | e = expr; ";" -> e | e = expr -> e ] ] @@ -656,7 +744,8 @@ Old (no more supported) syntax: | ":>"; t = ctyp; "="; e = expr -> <:expr< ($e$ :> $t$) >> ] ] ; match_case: - [ [ l = LIST0 match_case0 SEP "|" -> Ast.mcOr_of_list l ] ] + [ [ "["; l = LIST0 match_case0 SEP "|"; "]" -> Ast.mcOr_of_list l + | p = ipatt; "->"; e = expr -> <:match_case< $p$ -> $e$ >> ] ] ; match_case0: [ [ `ANTIQUOT ("match_case"|"list" as n) s -> @@ -681,13 +770,16 @@ Old (no more supported) syntax: ] ] ; label_expr: - [ LEFTA - [ b1 = SELF; ";"; b2 = SELF -> <:binding< $b1$ ; $b2$ >> - | `ANTIQUOT (""|"binding"|"anti" as n) s -> - <:binding< $anti:mk_anti ~c:"binding" n s$ >> + [ [ b1 = SELF; ";"; b2 = SELF -> <:rec_binding< $b1$ ; $b2$ >> + | `ANTIQUOT ("rec_binding" as n) s -> + <:rec_binding< $anti:mk_anti ~c:"rec_binding" n s$ >> + | `ANTIQUOT (""|"anti" as n) s -> + <:rec_binding< $anti:mk_anti ~c:"rec_binding" n s$ >> + | `ANTIQUOT (""|"anti" as n) s; "="; e = expr -> + <:rec_binding< $anti:mk_anti ~c:"ident" n s$ = $e$ >> | `ANTIQUOT ("list" as n) s -> - <:binding< $anti:mk_anti ~c:"binding;" n s$ >> - | p = label_longident; e = fun_binding -> <:binding< $id:p$ = $e$ >> ] ] + <:rec_binding< $anti:mk_anti ~c:"rec_binding" n s$ >> + | i = label_longident; e = fun_binding -> <:rec_binding< $i$ = $e$ >> ] ] ; fun_def: [ RIGHTA @@ -732,7 +824,7 @@ Old (no more supported) syntax: | "("; p = SELF; "as"; p2 = SELF; ")" -> <:patt< ($p$ as $p2$) >> | "("; p = SELF; ","; pl = comma_patt; ")" -> <:patt< ($p$, $pl$) >> | "_" -> <:patt< _ >> - | `QUOTATION x -> Quotation.expand_patt (Gram.parse_string patt) _loc x + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.patt_tag | "`"; s = a_ident -> <:patt< ` $s$ >> | "#"; i = type_longident -> <:patt< # $i$ >> | `LABEL i; p = SELF -> <:patt< ~ $i$ : $p$ >> @@ -754,11 +846,13 @@ Old (no more supported) syntax: ; comma_patt: [ [ p1 = SELF; ","; p2 = SELF -> <:patt< $p1$, $p2$ >> + | `ANTIQUOT ("list" as n) s -> <:patt< $anti:mk_anti ~c:"patt," n s$ >> | p = patt -> p ] ] ; sem_patt: [ LEFTA [ p1 = SELF; ";"; p2 = SELF -> <:patt< $p1$; $p2$ >> + | `ANTIQUOT ("list" as n) s -> <:patt< $anti:mk_anti ~c:"patt;" n s$ >> | p = patt -> p ] ] ; sem_patt_for_list: @@ -771,9 +865,10 @@ Old (no more supported) syntax: [ p1 = SELF; ";"; p2 = SELF -> <:patt< $p1$; $p2$ >> | `ANTIQUOT (""|"pat"|"anti" as n) s -> <:patt< $anti:mk_anti ~c:"patt" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.patt_tag | `ANTIQUOT ("list" as n) s -> <:patt< $anti:mk_anti ~c:"patt;" n s$ >> - | i = label_longident; "="; p = patt -> <:patt< $id:i$ = $p$ >> + | i = label_longident; "="; p = patt -> <:patt< $i$ = $p$ >> ] ] ; ipatt: @@ -782,6 +877,7 @@ Old (no more supported) syntax: <:patt< $anti:mk_anti ~c:"patt" n s$ >> | `ANTIQUOT ("tup" as n) s -> <:patt< ($tup:<:patt< $anti:mk_anti ~c:"patt" n s$ >>$) >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.patt_tag | "("; ")" -> <:patt< () >> | "("; p = SELF; ")" -> p | "("; p = SELF; ":"; t = ctyp; ")" -> <:patt< ($p$ : $t$) >> @@ -796,6 +892,7 @@ Old (no more supported) syntax: comma_ipatt: [ LEFTA [ p1 = SELF; ","; p2 = SELF -> <:patt< $p1$, $p2$ >> + | `ANTIQUOT ("list" as n) s -> <:patt< $anti:mk_anti ~c:"patt," n s$ >> | p = ipatt -> p ] ] ; label_ipatt: @@ -803,7 +900,9 @@ Old (no more supported) syntax: [ p1 = SELF; ";"; p2 = SELF -> <:patt< $p1$; $p2$ >> | `ANTIQUOT (""|"pat"|"anti" as n) s -> <:patt< $anti:mk_anti ~c:"patt" n s$ >> - | i = label_longident; "="; p = ipatt -> <:patt< $id:i$ = $p$ >> + | `ANTIQUOT ("list" as n) s -> <:patt< $anti:mk_anti ~c:"patt;" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.patt_tag + | i = label_longident; "="; p = ipatt -> <:patt< $i$ = $p$ >> ] ] ; type_declaration: @@ -812,16 +911,17 @@ Old (no more supported) syntax: <:ctyp< $anti:mk_anti ~c:"ctyp" n s$ >> | `ANTIQUOT ("list" as n) s -> <:ctyp< $anti:mk_anti ~c:"ctypand" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.ctyp_tag | t1 = SELF; "and"; t2 = SELF -> <:ctyp< $t1$ and $t2$ >> | (n, tpl) = type_ident_and_parameters; tk = opt_eq_ctyp; - cl = LIST0 constrain -> Ast.TyDcl _loc n tpl (tk tpl) cl ] ] + cl = LIST0 constrain -> Ast.TyDcl _loc n tpl tk cl ] ] ; constrain: [ [ "constraint"; t1 = ctyp; "="; t2 = ctyp -> (t1, t2) ] ] ; opt_eq_ctyp: - [ [ "="; tk = type_kind -> fun _ -> tk - | -> fun tpl -> <:ctyp< '$choose_tvar tpl$ >> ] ] + [ [ "="; tk = type_kind -> tk + | -> <:ctyp<>> ] ] ; type_kind: [ [ t = ctyp -> t ] ] @@ -842,6 +942,7 @@ Old (no more supported) syntax: ; type_parameter: [ [ `ANTIQUOT (""|"typ"|"anti" as n) s -> <:ctyp< $anti:mk_anti n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.ctyp_tag | "'"; i = a_ident -> <:ctyp< '$lid:i$ >> | "+"; "'"; i = a_ident -> <:ctyp< +'$lid:i$ >> | "-"; "'"; i = a_ident -> <:ctyp< -'$lid:i$ >> ] ] @@ -880,6 +981,7 @@ Old (no more supported) syntax: <:ctyp< ($tup:<:ctyp< $anti:mk_anti ~c:"ctyp" n s$ >>$) >> | `ANTIQUOT ("id" as n) s -> <:ctyp< $id:<:ident< $anti:mk_anti ~c:"ident" n s$ >>$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.ctyp_tag | i = a_LIDENT -> <:ctyp< $lid:i$ >> | i = a_UIDENT -> <:ctyp< $uid:i$ >> | "("; t = SELF; "*"; tl = star_ctyp; ")" -> @@ -906,19 +1008,37 @@ Old (no more supported) syntax: ] ] ; star_ctyp: - [ [ t1 = SELF; "*"; t2 = SELF -> <:ctyp< $t1$ * $t2$ >> + [ [ `ANTIQUOT (""|"typ" as n) s -> + <:ctyp< $anti:mk_anti ~c:"ctyp" n s$ >> + | `ANTIQUOT ("list" as n) s -> + <:ctyp< $anti:mk_anti ~c:"ctyp*" n s$ >> + | t1 = SELF; "*"; t2 = SELF -> + <:ctyp< $t1$ * $t2$ >> | t = ctyp -> t ] ] ; constructor_declarations: - [ [ l = LIST1 constructor_declaration SEP "|" -> Ast.tyOr_of_list l ] ] + [ [ `ANTIQUOT (""|"typ" as n) s -> + <:ctyp< $anti:mk_anti ~c:"ctyp" n s$ >> + | `ANTIQUOT ("list" as n) s -> + <:ctyp< $anti:mk_anti ~c:"ctyp|" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.ctyp_tag + | t1 = SELF; "|"; t2 = SELF -> + <:ctyp< $t1$ | $t2$ >> + | s = a_UIDENT; "of"; t = constructor_arg_list -> + <:ctyp< $uid:s$ of $t$ >> + | s = a_UIDENT -> + <:ctyp< $uid:s$ >> + ] ] ; constructor_declaration: [ [ `ANTIQUOT (""|"typ" as n) s -> <:ctyp< $anti:mk_anti ~c:"ctyp" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.ctyp_tag | s = a_UIDENT; "of"; t = constructor_arg_list -> <:ctyp< $uid:s$ of $t$ >> - | s = a_UIDENT -> <:ctyp< $uid:s$ >> + | s = a_UIDENT -> + <:ctyp< $uid:s$ >> ] ] ; constructor_arg_list: @@ -933,6 +1053,9 @@ Old (no more supported) syntax: [ t1 = SELF; ";"; t2 = SELF -> <:ctyp< $t1$; $t2$ >> | `ANTIQUOT (""|"typ" as n) s -> <:ctyp< $anti:mk_anti ~c:"ctyp" n s$ >> + | `ANTIQUOT ("list" as n) s -> + <:ctyp< $anti:mk_anti ~c:"ctyp;" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.ctyp_tag | s = a_LIDENT; ":"; t = poly_type -> <:ctyp< $lid:s$ : $t$ >> | s = a_LIDENT; ":"; "mutable"; t = poly_type -> <:ctyp< $lid:s$ : mutable $t$ >> @@ -958,17 +1081,23 @@ Old (no more supported) syntax: | i = a_UIDENT -> <:ident< $uid:i$ >> ] ] ; module_longident_with_app: - [ [ i = SELF; j = SELF -> <:ident< $i$ $j$ >> ] - | [ i = SELF; "."; j = SELF -> <:ident< $i$.$j$ >> ] - | [ `ANTIQUOT (""|"id"|"anti"|"list" as n) s -> + [ "apply" + [ i = SELF; j = SELF -> <:ident< $i$ $j$ >> ] + | "." + [ i = SELF; "."; j = SELF -> <:ident< $i$.$j$ >> ] + | "simple" + [ `ANTIQUOT (""|"id"|"anti"|"list" as n) s -> <:ident< $anti:mk_anti ~c:"ident" n s$ >> | i = a_UIDENT -> <:ident< $uid:i$ >> | "("; i = SELF; ")" -> i ] ] ; type_longident: - [ [ i = SELF; j = SELF -> <:ident< $i$ $j$ >> ] - | [ i = SELF; "."; j = SELF -> <:ident< $i$.$j$ >> ] - | [ `ANTIQUOT (""|"id"|"anti"|"list" as n) s -> + [ "apply" + [ i = SELF; j = SELF -> <:ident< $i$ $j$ >> ] + | "." + [ i = SELF; "."; j = SELF -> <:ident< $i$.$j$ >> ] + | "simple" + [ `ANTIQUOT (""|"id"|"anti"|"list" as n) s -> <:ident< $anti:mk_anti ~c:"ident" n s$ >> | i = a_LIDENT -> <:ident< $lid:i$ >> | i = a_UIDENT -> <:ident< $uid:i$ >> @@ -995,6 +1124,7 @@ Old (no more supported) syntax: <:class_expr< $c1$ and $c2$ >> | `ANTIQUOT (""|"cdcl"|"anti"|"list" as n) s -> <:class_expr< $anti:mk_anti ~c:"class_expr" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.class_expr_tag | ci = class_info_for_class_expr; ce = class_fun_binding -> <:class_expr< $ci$ = $ce$ >> ] ] @@ -1009,38 +1139,12 @@ Old (no more supported) syntax: ; class_info_for_class_type: [ [ mv = opt_virtual; (i, ot) = class_name_and_param -> - Ast.CtCon _loc mv (Ast.IdLid _loc i) ot - (* <:class_type< $virtual:mv$ $lid:i$ [ $t$ ] >> *) - - (* | mv = opt_virtual; i = a_LIDENT -> *) - (* Ast.CeCon (_loc, mv, Ast.IdLid (_loc, i), Ast.ONone) *) - (* <:class_type< $lid:i$ >> *) + <:class_type< $virtual:mv$ $lid:i$ [ $ot$ ] >> ] ] ; - (* [ [ "virtual"; i = a_LIDENT; "["; t = comma_type_parameter; "]" -> - <:class_type< virtual $lid:i$ [ $t$ ] >> - | "virtual"; i = a_LIDENT -> - <:class_type< virtual $lid:i$ >> - | i = a_LIDENT; "["; t = comma_type_parameter; "]" -> - <:class_type< $lid:i$ [ $t$ ] >> - | i = a_LIDENT -> <:class_type< $lid:i$ >> - ] ] - ; *) class_info_for_class_expr: - [ [ - (* "virtual"; i = a_LIDENT; "["; t = comma_type_parameter; "]" -> *) - (* <:class_expr< virtual $lid:i$ [ $t$ ] >> *) - (* | "virtual"; i = a_LIDENT -> *) - (* <:class_expr< virtual $lid:i$ >> *) - (* | *) - mv = opt_virtual; (i, ot) = class_name_and_param -> - Ast.CeCon _loc mv (Ast.IdLid _loc i) ot - (* <:class_expr< $virtual:mv$ $lid:i$ [ $t$ ] >> *) - - (* <:class_expr< $lid:i$ [ $t$ ] >> *) - (* | mv = opt_virtual; i = a_LIDENT -> *) - (* Ast.CeCon (_loc, mv, Ast.IdLid (_loc, i), Ast.ONone) *) - (* <:class_expr< $lid:i$ >> *) + [ [ mv = opt_virtual; (i, ot) = class_name_and_param -> + <:class_expr< $virtual:mv$ $lid:i$ [ $ot$ ] >> ] ] ; class_name_and_param: @@ -1049,8 +1153,8 @@ Old (no more supported) syntax: ] ] ; comma_type_parameter: - [ LEFTA - [ t1 = SELF; ","; t2 = SELF -> <:ctyp< $t1$, $t2$ >> + [ [ t1 = SELF; ","; t2 = SELF -> <:ctyp< $t1$, $t2$ >> + | `ANTIQUOT ("list" as n) s -> <:ctyp< $anti:mk_anti ~c:"ctyp," n s$ >> | t = type_parameter -> t ] ] ; @@ -1061,6 +1165,7 @@ Old (no more supported) syntax: ; comma_ctyp: [ [ t1 = SELF; ","; t2 = SELF -> <:ctyp< $t1$, $t2$ >> + | `ANTIQUOT ("list" as n) s -> <:ctyp< $anti:mk_anti ~c:"ctyp," n s$ >> | t = ctyp -> t ] ] ; @@ -1080,6 +1185,7 @@ Old (no more supported) syntax: | "simple" [ `ANTIQUOT (""|"cexp"|"anti" as n) s -> <:class_expr< $anti:mk_anti ~c:"class_expr" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.class_expr_tag | ce = class_longident_and_param -> ce | "object"; csp = opt_class_self_patt; cst = class_structure; "end" -> <:class_expr< object ($csp$) $cst$ end >> @@ -1096,6 +1202,8 @@ Old (no more supported) syntax: class_structure: [ [ `ANTIQUOT (""|"cst"|"anti"|"list" as n) s -> <:class_str_item< $anti:mk_anti ~c:"class_str_item" n s$ >> + | `ANTIQUOT (""|"cst"|"anti"|"list" as n) s; semi; cst = SELF -> + <:class_str_item< $anti:mk_anti ~c:"class_str_item" n s$; $cst$ >> | l = LIST0 [ cst = class_str_item; semi -> cst ] -> Ast.crSem_of_list l ] ] ; @@ -1108,6 +1216,7 @@ Old (no more supported) syntax: [ LEFTA [ `ANTIQUOT (""|"cst"|"anti"|"list" as n) s -> <:class_str_item< $anti:mk_anti ~c:"class_str_item" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.class_str_item_tag | "inherit"; ce = class_expr; pb = opt_as_lident -> <:class_str_item< inherit $ce$ as $pb$ >> | value_val; mf = opt_mutable; lab = label; e = cvalue_binding -> @@ -1116,6 +1225,8 @@ Old (no more supported) syntax: <:class_str_item< value virtual $mutable:mf$ $l$ : $t$ >> | "method"; "virtual"; pf = opt_private; l = label; ":"; t = poly_type -> <:class_str_item< method virtual $private:pf$ $l$ : $t$ >> + | "method"; pf = opt_private; "virtual"; l = label; ":"; t = poly_type -> + <:class_str_item< method virtual $private:pf$ $l$ : $t$ >> | "method"; pf = opt_private; l = label; topt = opt_polyt; e = fun_binding -> <:class_str_item< method $private:pf$ $l$ : $topt$ = $e$ >> @@ -1145,6 +1256,7 @@ Old (no more supported) syntax: class_type: [ [ `ANTIQUOT (""|"ctyp"|"anti" as n) s -> <:class_type< $anti:mk_anti ~c:"class_type" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.class_type_tag | ct = class_type_longident_and_param -> ct | "object"; cst = opt_class_self_type; csg = class_signature; "end" -> <:class_type< object ($cst$) $csg$ end >> ] ] @@ -1165,12 +1277,15 @@ Old (no more supported) syntax: class_signature: [ [ `ANTIQUOT (""|"csg"|"anti"|"list" as n) s -> <:class_sig_item< $anti:mk_anti ~c:"class_sig_item" n s$ >> + | `ANTIQUOT (""|"csg"|"anti"|"list" as n) s; semi; csg = SELF -> + <:class_sig_item< $anti:mk_anti ~c:"class_sig_item" n s$; $csg$ >> | l = LIST0 [ csg = class_sig_item; semi -> csg ] -> Ast.cgSem_of_list l ] ] ; class_sig_item: [ [ `ANTIQUOT (""|"csg"|"anti"|"list" as n) s -> <:class_sig_item< $anti:mk_anti ~c:"class_sig_item" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.class_sig_item_tag | "inherit"; cs = class_type -> <:class_sig_item< inherit $cs$ >> | value_val; mf = opt_mutable; mv = opt_virtual; l = label; ":"; t = ctyp -> @@ -1179,16 +1294,19 @@ Old (no more supported) syntax: <:class_sig_item< method virtual $private:pf$ $l$ : $t$ >> | "method"; pf = opt_private; l = label; ":"; t = poly_type -> <:class_sig_item< method $private:pf$ $l$ : $t$ >> + | "method"; pf = opt_private; "virtual"; l = label; ":"; t = poly_type -> + <:class_sig_item< method virtual $private:pf$ $l$ : $t$ >> | type_constraint; t1 = ctyp; "="; t2 = ctyp -> <:class_sig_item< type $t1$ = $t2$ >> ] ] ; type_constraint: - [ [ "type" -> () ] ] + [ [ "type" | "constraint" -> () ] ] ; class_description: [ [ cd1 = SELF; "and"; cd2 = SELF -> <:class_type< $cd1$ and $cd2$ >> | `ANTIQUOT (""|"typ"|"anti"|"list" as n) s -> <:class_type< $anti:mk_anti ~c:"class_type" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.class_type_tag | ci = class_info_for_class_type; ":"; ct = class_type_plus -> <:class_type< $ci$ : $ct$ >> ] ] ; @@ -1197,32 +1315,32 @@ Old (no more supported) syntax: [ cd1 = SELF; "and"; cd2 = SELF -> <:class_type< $cd1$ and $cd2$ >> | `ANTIQUOT (""|"typ"|"anti"|"list" as n) s -> <:class_type< $anti:mk_anti ~c:"class_type" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.class_type_tag | ci = class_info_for_class_type; "="; ct = class_type -> <:class_type< $ci$ = $ct$ >> ] ] ; field_expr: [ LEFTA - [ b1 = SELF; ";"; b2 = SELF -> <:binding< $b1$ ; $b2$ >> + [ b1 = SELF; ";"; b2 = SELF -> <:rec_binding< $b1$ ; $b2$ >> | `ANTIQUOT (""|"bi"|"anti" as n) s -> - <:binding< $anti:mk_anti ~c:"binding" n s$ >> + <:rec_binding< $anti:mk_anti ~c:"rec_binding" n s$ >> | `ANTIQUOT ("list" as n) s -> - <:binding< $anti:mk_anti ~c:"binding;" n s$ >> - | l = label; "="; e = expr -> <:binding< $lid:l$ = $e$ >> ] ] + <:rec_binding< $anti:mk_anti ~c:"rec_binding" n s$ >> + | l = label; "="; e = expr -> <:rec_binding< $lid:l$ = $e$ >> ] ] ; meth_list: - [ [ f = field; ";"; ml = SELF -> <:ctyp< $f$; $ml$ >> - | f = field; OPT ";" -> f ] ] + [ LEFTA + [ ml1 = SELF; ";"; ml2 = SELF -> <:ctyp< $ml1$; $ml2$ >> + | `ANTIQUOT (""|"typ" as n) s -> <:ctyp< $anti:mk_anti ~c:"ctyp" n s$ >> + | `ANTIQUOT ("list" as n) s -> <:ctyp< $anti:mk_anti ~c:"ctyp;" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.ctyp_tag + | lab = a_LIDENT; ":"; t = poly_type -> <:ctyp< $lid:lab$ : $t$ >> ] ] ; opt_meth_list: - [ [ ml = meth_list -> ml + [ [ ml = meth_list; OPT ";" -> ml | -> <:ctyp<>> ] ] ; - field: - [ [ `ANTIQUOT (""|"typ" as n) s -> - <:ctyp< $anti:mk_anti ~c:"ctyp" n s$ >> - | lab = a_LIDENT; ":"; t = poly_type -> <:ctyp< $lid:lab$ : $t$ >> ] ] - ; poly_type: [ [ t = ctyp -> t ] ] ; @@ -1231,30 +1349,24 @@ Old (no more supported) syntax: [ t1 = SELF; t2 = SELF -> <:ctyp< $t1$ $t2$ >> | `ANTIQUOT (""|"typ" as n) s -> <:ctyp< $anti:mk_anti ~c:"ctyp" n s$ >> + | `QUOTATION x -> Quotation.expand _loc x Quotation.DynAst.ctyp_tag | "'"; i = a_ident -> <:ctyp< '$lid:i$ >> ] ] ; row_field: [ [ `ANTIQUOT (""|"typ" as n) s -> <:ctyp< $anti:mk_anti ~c:"ctyp" n s$ >> + | `ANTIQUOT ("list" as n) s -> + <:ctyp< $anti:mk_anti ~c:"ctyp|" n s$ >> | t1 = SELF; "|"; t2 = SELF -> <:ctyp< $t1$ | $t2$ >> | "`"; i = a_ident -> <:ctyp< `$i$ >> | "`"; i = a_ident; "of"; "&"; t = amp_ctyp -> <:ctyp< `$i$ of & $t$ >> | "`"; i = a_ident; "of"; t = amp_ctyp -> <:ctyp< `$i$ of $t$ >> | t = ctyp -> t ] ] ; - sem_ctyp: - [ [ t1 = SELF; ";"; t2 = SELF -> <:ctyp< $t1$ ; $t2$ >> - | t = ctyp -> t - ] ] - ; - pipe_ctyp: - [ [ t1 = SELF; "|"; t2 = SELF -> <:ctyp< $t1$ | $t2$ >> - | t = ctyp -> t - ] ] - ; amp_ctyp: [ [ t1 = SELF; "&"; t2 = SELF -> <:ctyp< $t1$ & $t2$ >> + | `ANTIQUOT ("list" as n) s -> <:ctyp< $anti:mk_anti ~c:"ctyp&" n s$ >> | t = ctyp -> t ] ] ; @@ -1346,6 +1458,8 @@ Old (no more supported) syntax: sig_items: [ [ `ANTIQUOT (""|"sigi"|"anti"|"list" as n) s -> <:sig_item< $anti:mk_anti n ~c:"sig_item" s$ >> + | `ANTIQUOT (""|"sigi"|"anti"|"list" as n) s; semi; sg = SELF -> + <:sig_item< $anti:mk_anti n ~c:"sig_item" s$; $sg$ >> | l = LIST0 [ sg = sig_item; semi -> sg ] -> Ast.sgSem_of_list l ] ] ; @@ -1359,6 +1473,8 @@ Old (no more supported) syntax: str_items: [ [ `ANTIQUOT (""|"stri"|"anti"|"list" as n) s -> <:str_item< $anti:mk_anti n ~c:"str_item" s$ >> + | `ANTIQUOT (""|"stri"|"anti"|"list" as n) s; semi; st = SELF -> + <:str_item< $anti:mk_anti n ~c:"str_item" s$; $st$ >> | l = LIST0 [ st = str_item; semi -> st ] -> Ast.stSem_of_list l ] ] ; @@ -1412,9 +1528,6 @@ Old (no more supported) syntax: [ [ `ANTIQUOT (""|"lid" as n) s -> mk_anti n s | `LIDENT s -> s ] ] ; - a_LIDENT_or_operator: - [ [ x = a_LIDENT -> x ] ] - ; a_LABEL: [ [ "~"; `ANTIQUOT ("" as n) s; ":" -> mk_anti n s | `LABEL s -> s ] ] @@ -1451,18 +1564,30 @@ Old (no more supported) syntax: patt_quot: [ [ x = patt; ","; y = comma_patt -> <:patt< $x$, $y$ >> | x = patt; ";"; y = sem_patt -> <:patt< $x$; $y$ >> - | x = patt; "="; y = patt -> <:patt< $x$ = $y$ >> + | x = patt; "="; y = patt -> + let i = + match x with + [ <:patt@loc< $anti:s$ >> -> <:ident@loc< $anti:s$ >> + | p -> Ast.ident_of_patt p ] + in + <:patt< $i$ = $y$ >> | x = patt -> x | -> <:patt<>> ] ] ; ctyp_quot: [ [ x = more_ctyp; ","; y = comma_ctyp -> <:ctyp< $x$, $y$ >> - | x = more_ctyp; ";"; y = sem_ctyp -> <:ctyp< $x$; $y$ >> - | x = more_ctyp; "|"; y = pipe_ctyp -> <:ctyp< $x$ | $y$ >> + | x = more_ctyp; ";"; y = label_declaration -> <:ctyp< $x$; $y$ >> + | x = more_ctyp; "|"; y = constructor_declarations -> <:ctyp< $x$ | $y$ >> | x = more_ctyp; "of"; y = constructor_arg_list -> <:ctyp< $x$ of $y$ >> + | x = more_ctyp; "of"; y = constructor_arg_list; "|"; z = constructor_declarations -> + <:ctyp< $ <:ctyp< $x$ of $y$ >> $ | $z$ >> | x = more_ctyp; "of"; "&"; y = amp_ctyp -> <:ctyp< $x$ of & $y$ >> + | x = more_ctyp; "of"; "&"; y = amp_ctyp; "|"; z = row_field -> + <:ctyp< $ <:ctyp< $x$ of & $y$ >> $ | $z$ >> | x = more_ctyp; ":"; y = more_ctyp -> <:ctyp< $x$ : $y$ >> + | x = more_ctyp; ":"; y = more_ctyp; ";"; z = label_declaration -> + <:ctyp< $ <:ctyp< $x$ : $y$ >> $ ; $z$ >> | x = more_ctyp; "*"; y = star_ctyp -> <:ctyp< $x$ * $y$ >> | x = more_ctyp; "&"; y = amp_ctyp -> <:ctyp< $x$ & $y$ >> | x = more_ctyp; "and"; y = constructor_arg_list -> <:ctyp< $x$ and $y$ >> @@ -1473,7 +1598,7 @@ Old (no more supported) syntax: more_ctyp: [ [ "mutable"; x = SELF -> <:ctyp< mutable $x$ >> | "`"; x = a_LIDENT -> <:ctyp< `$x$ >> - | x = ctyp -> x + | x = type_kind -> x | x = type_parameter -> x ] ] ; @@ -1491,24 +1616,27 @@ Old (no more supported) syntax: ; module_type_quot: [ [ x = module_type -> x + | -> <:module_type<>> ] ] ; module_expr_quot: [ [ x = module_expr -> x + | -> <:module_expr<>> ] ] ; match_case_quot: - [ [ x = match_case -> x + [ [ x = LIST0 match_case0 SEP "|" -> <:match_case< $list:x$ >> | -> <:match_case<>> ] ] ; binding_quot: - [ [ b1 = SELF; "and"; b2 = SELF -> <:binding< $b1$ and $b2$ >> - | b1 = SELF; ";"; b2 = SELF -> <:binding< $b1$ ; $b2$ >> - | x = binding -> x - | x = label_expr -> x + [ [ x = binding -> x | -> <:binding<>> ] ] ; + rec_binding_quot: + [ [ x = label_expr -> x + | -> <:rec_binding<>> ] ] + ; module_binding_quot: [ [ b1 = SELF; "and"; b2 = SELF -> <:module_binding< $b1$ and $b2$ >> @@ -1541,9 +1669,10 @@ Old (no more supported) syntax: [ [ ce1 = SELF; "and"; ce2 = SELF -> <:class_expr< $ce1$ and $ce2$ >> | ce1 = SELF; "="; ce2 = SELF -> <:class_expr< $ce1$ = $ce2$ >> | "virtual"; (i, ot) = class_name_and_param -> - Ast.CeCon _loc Ast.BTrue (Ast.IdLid _loc i) ot + <:class_expr< virtual $lid:i$ [ $ot$ ] >> | `ANTIQUOT ("virtual" as n) s; i = ident; ot = opt_comma_ctyp -> - Ast.CeCon _loc (Ast.BAnt (mk_anti ~c:"class_expr" n s)) i ot + let anti = Ast.BAnt (mk_anti ~c:"class_expr" n s) in + <:class_expr< $virtual:anti$ $id:i$ [ $ot$ ] >> | x = class_expr -> x | -> <:class_expr<>> ] ] @@ -1553,9 +1682,10 @@ Old (no more supported) syntax: | ct1 = SELF; "="; ct2 = SELF -> <:class_type< $ct1$ = $ct2$ >> | ct1 = SELF; ":"; ct2 = SELF -> <:class_type< $ct1$ : $ct2$ >> | "virtual"; (i, ot) = class_name_and_param -> - Ast.CtCon _loc Ast.BTrue (Ast.IdLid _loc i) ot + <:class_type< virtual $lid:i$ [ $ot$ ] >> | `ANTIQUOT ("virtual" as n) s; i = ident; ot = opt_comma_ctyp -> - Ast.CtCon _loc (Ast.BAnt (mk_anti ~c:"class_type" n s)) i ot + let anti = Ast.BAnt (mk_anti ~c:"class_type" n s) in + <:class_type< $virtual:anti$ $id:i$ [ $ot$ ] >> | x = class_type_plus -> x | -> <:class_type<>> ] ] diff --git a/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParserParser.ml b/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParserParser.ml index ccc9ef11..b0a42d47 100644 --- a/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParserParser.ml +++ b/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParserParser.ml @@ -21,7 +21,7 @@ open Camlp4; (* -*- camlp4r -*- *) module Id : Sig.Id = struct value name = "Camlp4OCamlRevisedParserParser"; - value version = "$Id: Camlp4OCamlRevisedParserParser.ml,v 1.1 2007/02/07 10:09:22 ertai Exp $"; + value version = "$Id: Camlp4OCamlRevisedParserParser.ml,v 1.1.4.2 2007/04/05 18:06:36 pouillar Exp $"; end; module Make (Syntax : Sig.Camlp4Syntax) = struct @@ -263,6 +263,11 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct [ Some bp -> <:expr< let $bp$ = Stream.count $lid:strm_n$ in $pc$ >> | None -> pc ] in + let me = + match me with + [ <:expr@_loc< $_$; $_$ >> as e -> <:expr< do { $e$ } >> + | e -> e ] + in match me with [ <:expr< $lid:x$ >> when x = strm_n -> e | _ -> <:expr< let ($lid:strm_n$ : Stream.t _) = $me$ in $e$ >> ] @@ -316,7 +321,7 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct expr: LEVEL "top" [ [ "parser"; po = OPT parser_ipatt; pcl = parser_case_list -> <:expr< $cparser _loc po pcl$ >> - | "match"; e = SELF; "with"; "parser"; po = OPT parser_ipatt; + | "match"; e = sequence; "with"; "parser"; po = OPT parser_ipatt; pcl = parser_case_list -> <:expr< $cparser_match _loc e po pcl$ >> ] ] diff --git a/camlp4/Camlp4Parsers/Camlp4OCamlRevisedQuotationExpander.ml b/camlp4/Camlp4Parsers/Camlp4OCamlRevisedQuotationExpander.ml index b013be25..07d2a01e 100644 --- a/camlp4/Camlp4Parsers/Camlp4OCamlRevisedQuotationExpander.ml +++ b/camlp4/Camlp4Parsers/Camlp4OCamlRevisedQuotationExpander.ml @@ -19,6 +19,6 @@ open Camlp4; (* -*- camlp4r -*- *) open PreCast; let module Gram = MakeGram Lexer in -let module M1 = OCamlInitSyntax.Make Warning Ast Gram Quotation in +let module M1 = OCamlInitSyntax.Make Ast Gram Quotation in let module M2 = Camlp4OCamlRevisedParser.Make M1 in let module M3 = Camlp4QuotationCommon.Make M2 Syntax.AntiquotSyntax in (); diff --git a/camlp4/Camlp4Parsers/Camlp4QuotationCommon.ml b/camlp4/Camlp4Parsers/Camlp4QuotationCommon.ml index 6a1dafca..42835f38 100644 --- a/camlp4/Camlp4Parsers/Camlp4QuotationCommon.ml +++ b/camlp4/Camlp4Parsers/Camlp4QuotationCommon.ml @@ -19,7 +19,7 @@ open Camlp4; (* -*- camlp4r -*- *) module Id = struct value name = "Camlp4QuotationCommon"; - value version = "$Id: Camlp4QuotationCommon.ml,v 1.1 2007/02/07 10:09:22 ertai Exp $"; + value version = "$Id: Camlp4QuotationCommon.ml,v 1.1.4.5 2007/05/10 14:24:22 pouillar Exp $"; end; module Make (Syntax : Sig.Camlp4Syntax) @@ -76,6 +76,7 @@ module Make (Syntax : Sig.Camlp4Syntax) | "anticlass_str_item" -> <:patt< Ast.CrAnt $mloc _loc$ $p$ >> | "antiwith_constr" -> <:patt< Ast.WcAnt $mloc _loc$ $p$ >> | "antibinding" -> <:patt< Ast.BiAnt $mloc _loc$ $p$ >> + | "antirec_binding" -> <:patt< Ast.RbAnt $mloc _loc$ $p$ >> | "antimatch_case" -> <:patt< Ast.McAnt $mloc _loc$ $p$ >> | "antimodule_binding" -> <:patt< Ast.MbAnt $mloc _loc$ $p$ >> | "antiident" -> <:patt< Ast.IdAnt $mloc _loc$ $p$ >> @@ -93,6 +94,9 @@ module Make (Syntax : Sig.Camlp4Syntax) | "`flo" -> <:expr< string_of_float $e$ >> | "`str" -> <:expr< Ast.safe_string_escaped $e$ >> | "`chr" -> <:expr< Char.escaped $e$ >> + | "`bool" -> + <:expr< if $e$ then $ME.meta_expr _loc <:expr>$ + else $ME.meta_expr _loc <:expr>$ >> | "liststr_item" -> <:expr< Ast.stSem_of_list $e$ >> | "listsig_item" -> <:expr< Ast.sgSem_of_list $e$ >> | "listclass_sig_item" -> <:expr< Ast.cgSem_of_list $e$ >> @@ -102,13 +106,22 @@ module Make (Syntax : Sig.Camlp4Syntax) | "listmodule_binding" -> <:expr< Ast.mbAnd_of_list $e$ >> | "listbinding" -> <:expr< Ast.biAnd_of_list $e$ >> | "listbinding;" -> <:expr< Ast.biSem_of_list $e$ >> + | "listrec_binding" -> <:expr< Ast.rbSem_of_list $e$ >> | "listclass_type" -> <:expr< Ast.ctAnd_of_list $e$ >> | "listclass_expr" -> <:expr< Ast.ceAnd_of_list $e$ >> | "listident" -> <:expr< Ast.idAcc_of_list $e$ >> | "listctypand" -> <:expr< Ast.tyAnd_of_list $e$ >> + | "listctyp;" -> <:expr< Ast.tySem_of_list $e$ >> + | "listctyp*" -> <:expr< Ast.tySta_of_list $e$ >> + | "listctyp|" -> <:expr< Ast.tyOr_of_list $e$ >> + | "listctyp," -> <:expr< Ast.tyCom_of_list $e$ >> + | "listctyp&" -> <:expr< Ast.tyAmp_of_list $e$ >> | "listwith_constr" -> <:expr< Ast.wcAnd_of_list $e$ >> | "listmatch_case" -> <:expr< Ast.mcOr_of_list $e$ >> + | "listpatt," -> <:expr< Ast.paCom_of_list $e$ >> | "listpatt;" -> <:expr< Ast.paSem_of_list $e$ >> + | "listexpr," -> <:expr< Ast.exCom_of_list $e$ >> + | "listexpr;" -> <:expr< Ast.exSem_of_list $e$ >> | "antisig_item" -> <:expr< Ast.SgAnt $mloc _loc$ $e$ >> | "antistr_item" -> <:expr< Ast.StAnt $mloc _loc$ $e$ >> | "antictyp" -> <:expr< Ast.TyAnt $mloc _loc$ $e$ >> @@ -122,6 +135,7 @@ module Make (Syntax : Sig.Camlp4Syntax) | "anticlass_str_item" -> <:expr< Ast.CrAnt $mloc _loc$ $e$ >> | "antiwith_constr" -> <:expr< Ast.WcAnt $mloc _loc$ $e$ >> | "antibinding" -> <:expr< Ast.BiAnt $mloc _loc$ $e$ >> + | "antirec_binding" -> <:expr< Ast.RbAnt $mloc _loc$ $e$ >> | "antimatch_case" -> <:expr< Ast.McAnt $mloc _loc$ $e$ >> | "antimodule_binding" -> <:expr< Ast.MbAnt $mloc _loc$ $e$ >> | "antiident" -> <:expr< Ast.IdAnt $mloc _loc$ $e$ >> @@ -131,14 +145,23 @@ module Make (Syntax : Sig.Camlp4Syntax) value add_quotation name entry mexpr mpatt = let entry_eoi = Gram.Entry.mk (Gram.Entry.name entry) in + let parse_quot_string entry loc s = + let q = Camlp4_config.antiquotations.val in + let () = Camlp4_config.antiquotations.val := True in + let res = Gram.parse_string entry loc s in + let () = Camlp4_config.antiquotations.val := q in + res in let expand_expr loc loc_name_opt s = - let ast = Gram.parse_string entry_eoi loc s in + let ast = parse_quot_string entry_eoi loc s in let () = MetaLoc.loc_name.val := loc_name_opt in let meta_ast = mexpr loc ast in let exp_ast = antiquot_expander#expr meta_ast in exp_ast in + let expand_str_item loc loc_name_opt s = + let exp_ast = expand_expr loc loc_name_opt s in + <:str_item@loc< $exp:exp_ast$ >> in let expand_patt _loc loc_name_opt s = - let ast = Gram.parse_string entry_eoi _loc s in + let ast = parse_quot_string entry_eoi _loc s in let meta_ast = mpatt _loc ast in let exp_ast = antiquot_expander#patt meta_ast in match loc_name_opt with @@ -156,7 +179,9 @@ module Make (Syntax : Sig.Camlp4Syntax) [ [ x = entry; `EOI -> x ] ] ; END; - Quotation.add name (Quotation.ExAst (expand_expr, expand_patt)) + Quotation.add name Quotation.DynAst.expr_tag expand_expr; + Quotation.add name Quotation.DynAst.patt_tag expand_patt; + Quotation.add name Quotation.DynAst.str_item_tag expand_str_item; }; add_quotation "sig_item" sig_item_quot ME.meta_sig_item MP.meta_sig_item; @@ -174,6 +199,7 @@ module Make (Syntax : Sig.Camlp4Syntax) class_str_item_quot ME.meta_class_str_item MP.meta_class_str_item; add_quotation "with_constr" with_constr_quot ME.meta_with_constr MP.meta_with_constr; add_quotation "binding" binding_quot ME.meta_binding MP.meta_binding; + add_quotation "rec_binding" rec_binding_quot ME.meta_rec_binding MP.meta_rec_binding; add_quotation "match_case" match_case_quot ME.meta_match_case MP.meta_match_case; add_quotation "module_binding" module_binding_quot ME.meta_module_binding MP.meta_module_binding; diff --git a/camlp4/Camlp4Top/Rprint.ml b/camlp4/Camlp4Top/Rprint.ml index c4f932d3..fe769e99 100644 --- a/camlp4/Camlp4Top/Rprint.ml +++ b/camlp4/Camlp4Top/Rprint.ml @@ -19,7 +19,7 @@ *) -(* $Id: Rprint.ml,v 1.2 2006/07/08 17:21:32 pouillar Exp $ *) +(* $Id: Rprint.ml,v 1.2.6.1 2007/05/10 13:31:21 pouillar Exp $ *) (* This file originally come from typing/oprint.ml *) @@ -198,7 +198,7 @@ and print_simple_out_type ppf = | Otyp_record lbls -> fprintf ppf "@[{ %a }@]" (print_list print_out_label (fun ppf -> fprintf ppf ";@ ")) lbls - | Otyp_abstract -> fprintf ppf "'abstract" + | Otyp_abstract -> fprintf ppf "" | Otyp_alias _ _ | Otyp_poly _ _ | Otyp_arrow _ _ _ | Otyp_constr _ [_ :: _] as ty -> fprintf ppf "@[<1>(%a)@]" print_out_type ty ] diff --git a/camlp4/Camlp4Top/Top.ml b/camlp4/Camlp4Top/Top.ml index 3767d1ee..924a09eb 100644 --- a/camlp4/Camlp4Top/Top.ml +++ b/camlp4/Camlp4Top/Top.ml @@ -18,7 +18,7 @@ * - Nicolas Pouillard: refactoring *) -(* $Id: Top.ml,v 1.1 2007/02/07 10:09:23 ertai Exp $ *) +(* $Id: Top.ml,v 1.1.4.2 2007/04/10 13:54:03 pouillar Exp $ *) open Parsetree; open Lexing; @@ -101,7 +101,9 @@ Toploop.parse_toplevel_phrase.val := wrap toplevel_phrase; Toploop.parse_use_file.val := wrap use_file; -Warning.current.val := +current_warning.val := fun loc txt -> Toploop.print_warning (Loc.to_ocaml_location loc) Format.err_formatter (Warnings.Camlp4 txt); + +Register.iter_and_take_callbacks (fun (_, f) -> f ()); diff --git a/camlp4/Camlp4_config.ml b/camlp4/Camlp4_config.ml index 36284849..03fa1f7c 100644 --- a/camlp4/Camlp4_config.ml +++ b/camlp4/Camlp4_config.ml @@ -30,6 +30,7 @@ let program_name = ref "camlp4";; let constructors_arity = ref true;; let unsafe = ref false;; let verbose = ref false;; +let antiquotations = ref false;; let quotations = ref true;; let inter_phrases = ref None;; let camlp4_ast_impl_magic_number = "Camlp42006M001";; diff --git a/camlp4/Camlp4_config.mli b/camlp4/Camlp4_config.mli index c2647b89..17592084 100644 --- a/camlp4/Camlp4_config.mli +++ b/camlp4/Camlp4_config.mli @@ -28,6 +28,7 @@ val program_name : string ref;; val unsafe : bool ref;; val verbose : bool ref;; val quotations : bool ref;; +val antiquotations : bool ref;; val constructors_arity : bool ref;; val inter_phrases : (string option) ref;; val current_input_file : string ref;; diff --git a/camlp4/boot/Camlp4.ml b/camlp4/boot/Camlp4.ml index ef4b7686..067a0993 100644 --- a/camlp4/boot/Camlp4.ml +++ b/camlp4/boot/Camlp4.ml @@ -350,7 +350,7 @@ module Sig = sig (** The name of the extension, typically the module name. *) val name : string - (** The version of the extension, typically $Id: Camlp4.ml,v 1.3 2007/02/26 16:43:01 ertai Exp $ with a versionning system. *) + (** The version of the extension, typically $Id: Sig.ml,v 1.2.2.9 2007/05/10 13:31:20 pouillar Exp $ with a versionning system. *) val version : string end module type Loc = @@ -450,13 +450,15 @@ module Sig = the predefined quotations for OCaml syntax trees. Default: [_loc]. *) val name : string ref end - module type Warning = - sig - module Loc : Loc - type t = Loc.t -> string -> unit - val default : t - val current : t ref - val print : t + module Warning (Loc : Loc) = + struct + module type S = + sig + type warning = Loc.t -> string -> unit + val default_warning : warning + val current_warning : warning ref + val print_warning : warning + end end (** Base class for map traversal, it includes some builtin types. *) class mapper = @@ -469,7 +471,7 @@ module Sig = fun f -> function | None -> None | Some x -> Some (f x) method array : 'a 'b. ('a -> 'b) -> 'a array -> 'b array = Array.map method ref : 'a 'b. ('a -> 'b) -> 'a ref -> 'b ref = - fun f { contents = x } -> { contents = f x; } + fun f { contents = x } -> { contents = f x; } end : object method string : string -> string @@ -505,6 +507,7 @@ module Sig = type match_case type ident type binding + type rec_binding type module_binding val loc_of_ctyp : ctyp -> Loc.t val loc_of_patt : patt -> Loc.t @@ -519,6 +522,7 @@ module Sig = val loc_of_class_str_item : class_str_item -> Loc.t val loc_of_with_constr : with_constr -> Loc.t val loc_of_binding : binding -> Loc.t + val loc_of_rec_binding : rec_binding -> Loc.t val loc_of_module_binding : module_binding -> Loc.t val loc_of_match_case : match_case -> Loc.t val loc_of_ident : ident -> Loc.t @@ -560,6 +564,7 @@ module Sig = method class_str_item : class_str_item -> class_str_item method with_constr : with_constr -> with_constr method binding : binding -> binding + method rec_binding : rec_binding -> rec_binding method module_binding : module_binding -> module_binding method match_case : match_case -> match_case method ident : ident -> ident @@ -601,6 +606,7 @@ module Sig = method class_str_item : class_str_item -> 'self_type method with_constr : with_constr -> 'self_type method binding : binding -> 'self_type + method rec_binding : rec_binding -> 'self_type method module_binding : module_binding -> 'self_type method match_case : match_case -> 'self_type method ident : ident -> 'self_type @@ -623,7 +629,31 @@ module Sig = It provides: - Types for all kinds of structure. - Map: A base class for map traversals. - - Map classes and functions for common kinds. *) + - Map classes and functions for common kinds. + + (* Core language *) + ctyp (* Representaion of types *) + patt (* The type of patterns *) + expr (* The type of expressions *) + match_case (* The type of cases for match/function/try constructions *) + ident (* The type of identifiers (including path like Foo(X).Bar.y) *) + binding (* The type of let bindings *) + rec_binding (* The type of record definitions *) + + (* Modules *) + module_type (* The type of module types *) + sig_item (* The type of signature items *) + str_item (* The type of structure items *) + module_expr (* The type of module expressions *) + module_binding (* The type of recursive module definitions *) + with_constr (* The type of `with' constraints *) + + (* Classes *) + class_type (* The type of class types *) + class_sig_item (* The type of class signature items *) + class_expr (* The type of class expressions *) + class_str_item (* The type of class structure items *) + *) module type Camlp4Ast = sig module Loc : Loc @@ -632,46 +662,44 @@ module Sig = type 'a meta_list = | LNil | LCons of 'a * 'a meta_list | LAnt of string type ident = - | IdAcc of Loc.t * ident * ident | (* i . i *) - IdApp of Loc.t * ident * ident | (* i i *) IdLid of Loc.t * string - | (* foo *) IdUid of Loc.t * string | (* Bar *) - IdAnt of Loc.t * string + | (* i . i *) (* i i *) (* foo *) (* Bar *) + IdAcc of Loc.t * ident * ident | IdApp of Loc.t * ident * ident + | IdLid of Loc.t * string | IdUid of Loc.t * string + | IdAnt of Loc.t * string (* $s$ *) type ctyp = - | TyNil of Loc.t | TyAli of Loc.t * ctyp * ctyp | (* t as t *) - (* list 'a as 'a *) TyAny of Loc.t | (* _ *) - TyApp of Loc.t * ctyp * ctyp | (* t t *) (* list 'a *) - TyArr of Loc.t * ctyp * ctyp | (* t -> t *) (* int -> string *) - TyCls of Loc.t * ident | (* #i *) (* #point *) - TyLab of Loc.t * string * ctyp | (* ~s *) TyId of Loc.t * ident - | (* i *) (* Lazy.t *) TyMan of Loc.t * ctyp * ctyp | (* t == t *) - (* type t = [ A | B ] == Foo.t *) + | (* t as t *) (* list 'a as 'a *) (* _ *) (* t t *) (* list 'a *) + (* t -> t *) (* int -> string *) (* #i *) (* #point *) (* ~s *) + (* i *) (* Lazy.t *) (* t == t *) (* type t = [ A | B ] == Foo.t *) (* type t 'a 'b 'c = t constraint t = t constraint t = t *) - TyDcl of Loc.t * string * ctyp list * ctyp * (ctyp * ctyp) list - | (* < (t)? (..)? > *) (* < move : int -> 'a .. > as 'a *) - TyObj of Loc.t * ctyp * meta_bool | TyOlb of Loc.t * string * ctyp - | (* ?s *) TyPol of Loc.t * ctyp * ctyp | (* ! t . t *) - (* ! 'a . list 'a -> 'a *) TyQuo of Loc.t * string | (* 's *) - TyQuP of Loc.t * string | (* +'s *) TyQuM of Loc.t * string - | (* -'s *) TyVrn of Loc.t * string | (* `s *) - TyRec of Loc.t * ctyp | (* { t } *) - (* { foo : int ; bar : mutable string } *) - TyCol of Loc.t * ctyp * ctyp | (* t : t *) - TySem of Loc.t * ctyp * ctyp | (* t; t *) - TyCom of Loc.t * ctyp * ctyp | (* t, t *) TySum of Loc.t * ctyp - | (* [ t ] *) (* [ A of int and string | B ] *) - TyOf of Loc.t * ctyp * ctyp | (* t of t *) (* A of int *) - TyAnd of Loc.t * ctyp * ctyp | (* t and t *) - TyOr of Loc.t * ctyp * ctyp | (* t | t *) TyPrv of Loc.t * ctyp - | (* private t *) TyMut of Loc.t * ctyp | (* mutable t *) - TyTup of Loc.t * ctyp | (* ( t ) *) (* (int * string) *) - TySta of Loc.t * ctyp * ctyp | (* t * t *) TyVrnEq of Loc.t * ctyp - | (* [ = t ] *) TyVrnSup of Loc.t * ctyp | (* [ > t ] *) - TyVrnInf of Loc.t * ctyp | (* [ < t ] *) - TyVrnInfSup of Loc.t * ctyp * ctyp | (* [ < t > t ] *) - TyAmp of Loc.t * ctyp * ctyp | (* t & t *) - TyOfAmp of Loc.t * ctyp * ctyp | (* t of & t *) - TyAnt of Loc.t * string + (* < (t)? (..)? > *) (* < move : int -> 'a .. > as 'a *) (* ?s *) + (* ! t . t *) (* ! 'a . list 'a -> 'a *) (* 's *) (* +'s *) + (* -'s *) (* `s *) (* { t } *) + (* { foo : int ; bar : mutable string } *) (* t : t *) (* t; t *) + (* t, t *) (* [ t ] *) (* [ A of int and string | B ] *) + (* t of t *) (* A of int *) (* t and t *) (* t | t *) + (* private t *) (* mutable t *) (* ( t ) *) (* (int * string) *) + (* t * t *) (* [ = t ] *) (* [ > t ] *) (* [ < t ] *) + (* [ < t > t ] *) (* t & t *) (* t of & t *) TyNil of Loc.t + | TyAli of Loc.t * ctyp * ctyp | TyAny of Loc.t + | TyApp of Loc.t * ctyp * ctyp | TyArr of Loc.t * ctyp * ctyp + | TyCls of Loc.t * ident | TyLab of Loc.t * string * ctyp + | TyId of Loc.t * ident | TyMan of Loc.t * ctyp * ctyp + | TyDcl of Loc.t * string * ctyp list * ctyp * (ctyp * ctyp) list + | TyObj of Loc.t * ctyp * meta_bool + | TyOlb of Loc.t * string * ctyp | TyPol of Loc.t * ctyp * ctyp + | TyQuo of Loc.t * string | TyQuP of Loc.t * string + | TyQuM of Loc.t * string | TyVrn of Loc.t * string + | TyRec of Loc.t * ctyp | TyCol of Loc.t * ctyp * ctyp + | TySem of Loc.t * ctyp * ctyp | TyCom of Loc.t * ctyp * ctyp + | TySum of Loc.t * ctyp | TyOf of Loc.t * ctyp * ctyp + | TyAnd of Loc.t * ctyp * ctyp | TyOr of Loc.t * ctyp * ctyp + | TyPrv of Loc.t * ctyp | TyMut of Loc.t * ctyp + | TyTup of Loc.t * ctyp | TySta of Loc.t * ctyp * ctyp + | TyVrnEq of Loc.t * ctyp | TyVrnSup of Loc.t * ctyp + | TyVrnInf of Loc.t * ctyp | TyVrnInfSup of Loc.t * ctyp * ctyp + | TyAmp of Loc.t * ctyp * ctyp | TyOfAmp of Loc.t * ctyp * ctyp + | TyAnt of Loc.t * string (* $s$ *) type (* i *) (* p as p *) @@ -693,7 +721,7 @@ module Sig = (* p | p *) (* p .. p *) (* { p } *) - (* p = p *) + (* i = p *) (* s *) (* ( p ) *) (* (p : t) *) @@ -764,10 +792,12 @@ module Sig = (* $s$ *) (* b and b *) (* let a = 42 and c = 43 *) - (* b ; b *) (* p = e *) (* let patt = expr *) (* $s$ *) + (* b ; b *) + (* i = e *) + (* $s$ *) (* mb and mb *) (* module rec (s : mt) = me and (s : mt) = me *) (* s : mt = me *) @@ -833,7 +863,7 @@ module Sig = | PaOlb of Loc.t * string * patt | PaOlbi of Loc.t * string * patt * expr | PaOrp of Loc.t * patt * patt | PaRng of Loc.t * patt * patt - | PaRec of Loc.t * patt | PaEq of Loc.t * patt * patt + | PaRec of Loc.t * patt | PaEq of Loc.t * ident * patt | PaStr of Loc.t * string | PaTup of Loc.t * patt | PaTyc of Loc.t * patt * ctyp | PaTyp of Loc.t * ident | PaVrn of Loc.t * string @@ -854,15 +884,15 @@ module Sig = | ExLmd of Loc.t * string * module_expr * expr | ExMat of Loc.t * expr * match_case | ExNew of Loc.t * ident | ExObj of Loc.t * patt * class_str_item - | ExOlb of Loc.t * string * expr | ExOvr of Loc.t * binding - | ExRec of Loc.t * binding * expr | ExSeq of Loc.t * expr + | ExOlb of Loc.t * string * expr | ExOvr of Loc.t * rec_binding + | ExRec of Loc.t * rec_binding * expr | ExSeq of Loc.t * expr | ExSnd of Loc.t * expr * string | ExSte of Loc.t * expr * expr | ExStr of Loc.t * string | ExTry of Loc.t * expr * match_case | ExTup of Loc.t * expr | ExCom of Loc.t * expr * expr | ExTyc of Loc.t * expr * ctyp | ExVrn of Loc.t * string | ExWhi of Loc.t * expr * expr and module_type = - | MtId of Loc.t * ident + | MtNil of Loc.t | MtId of Loc.t * ident | MtFun of Loc.t * string * module_type * module_type | MtQuo of Loc.t * string | MtSig of Loc.t * sig_item | MtWit of Loc.t * module_type * with_constr @@ -886,8 +916,10 @@ module Sig = | WcAnt of Loc.t * string and binding = | BiNil of Loc.t | BiAnd of Loc.t * binding * binding - | BiSem of Loc.t * binding * binding | BiEq of Loc.t * patt * expr - | BiAnt of Loc.t * string + | BiEq of Loc.t * patt * expr | BiAnt of Loc.t * string + and rec_binding = + | RbNil of Loc.t | RbSem of Loc.t * rec_binding * rec_binding + | RbEq of Loc.t * ident * expr | RbAnt of Loc.t * string and module_binding = | MbNil of Loc.t | MbAnd of Loc.t * module_binding * module_binding | MbColEq of Loc.t * string * module_type * module_expr @@ -896,7 +928,7 @@ module Sig = | McNil of Loc.t | McOr of Loc.t * match_case * match_case | McArr of Loc.t * patt * expr * expr | McAnt of Loc.t * string and module_expr = - | MeId of Loc.t * ident + | MeNil of Loc.t | MeId of Loc.t * ident | MeApp of Loc.t * module_expr * module_expr | MeFun of Loc.t * string * module_type * module_expr | MeStr of Loc.t * str_item @@ -940,19 +972,18 @@ module Sig = | CeAnd of Loc.t * class_expr * class_expr | CeEq of Loc.t * class_expr * class_expr | CeAnt of Loc.t * string and class_str_item = - | CrNil of Loc.t | (* cst ; cst *) - CrSem of Loc.t * class_str_item * class_str_item | (* type t = t *) - CrCtr of Loc.t * ctyp * ctyp | (* inherit ce or inherit ce as s *) - CrInh of Loc.t * class_expr * string | (* initializer e *) - CrIni of Loc.t * expr - | (* method (private)? s : t = e or method (private)? s = e *) - CrMth of Loc.t * string * meta_bool * expr * ctyp - | (* value (mutable)? s = e *) - CrVal of Loc.t * string * meta_bool * expr - | (* method virtual (private)? s : t *) - CrVir of Loc.t * string * meta_bool * ctyp - | (* value virtual (private)? s : t *) - CrVvr of Loc.t * string * meta_bool * ctyp + | (* cst ; cst *) (* type t = t *) + (* inherit ce or inherit ce as s *) (* initializer e *) + (* method (private)? s : t = e or method (private)? s = e *) + (* value (mutable)? s = e *) (* method virtual (private)? s : t *) + (* value virtual (private)? s : t *) CrNil of Loc.t + | CrSem of Loc.t * class_str_item * class_str_item + | CrCtr of Loc.t * ctyp * ctyp + | CrInh of Loc.t * class_expr * string | CrIni of Loc.t * expr + | CrMth of Loc.t * string * meta_bool * expr * ctyp + | CrVal of Loc.t * string * meta_bool * expr + | CrVir of Loc.t * string * meta_bool * ctyp + | CrVvr of Loc.t * string * meta_bool * ctyp | CrAnt of Loc.t * string val loc_of_ctyp : ctyp -> Loc.t val loc_of_patt : patt -> Loc.t @@ -967,6 +998,7 @@ module Sig = val loc_of_class_str_item : class_str_item -> Loc.t val loc_of_with_constr : with_constr -> Loc.t val loc_of_binding : binding -> Loc.t + val loc_of_rec_binding : rec_binding -> Loc.t val loc_of_module_binding : module_binding -> Loc.t val loc_of_match_case : match_case -> Loc.t val loc_of_ident : ident -> Loc.t @@ -1004,6 +1036,7 @@ module Sig = val meta_list : (Loc.t -> 'a -> expr) -> Loc.t -> 'a list -> expr val meta_binding : Loc.t -> binding -> expr + val meta_rec_binding : Loc.t -> rec_binding -> expr val meta_class_expr : Loc.t -> class_expr -> expr val meta_class_sig_item : Loc.t -> class_sig_item -> expr val meta_class_str_item : Loc.t -> class_str_item -> expr @@ -1030,6 +1063,7 @@ module Sig = val meta_list : (Loc.t -> 'a -> patt) -> Loc.t -> 'a list -> patt val meta_binding : Loc.t -> binding -> patt + val meta_rec_binding : Loc.t -> rec_binding -> patt val meta_class_expr : Loc.t -> class_expr -> patt val meta_class_sig_item : Loc.t -> class_sig_item -> patt val meta_class_str_item : Loc.t -> class_str_item -> patt @@ -1070,6 +1104,7 @@ module Sig = method class_str_item : class_str_item -> class_str_item method with_constr : with_constr -> with_constr method binding : binding -> binding + method rec_binding : rec_binding -> rec_binding method module_binding : module_binding -> module_binding method match_case : match_case -> match_case method ident : ident -> ident @@ -1111,31 +1146,30 @@ module Sig = method class_str_item : class_str_item -> 'self_type method with_constr : with_constr -> 'self_type method binding : binding -> 'self_type + method rec_binding : rec_binding -> 'self_type method module_binding : module_binding -> 'self_type method match_case : match_case -> 'self_type method ident : ident -> 'self_type end - class c_expr : (expr -> expr) -> object inherit map end - class c_patt : (patt -> patt) -> object inherit map end - class c_ctyp : (ctyp -> ctyp) -> object inherit map end - class c_str_item : (str_item -> str_item) -> object inherit map end - class c_sig_item : (sig_item -> sig_item) -> object inherit map end - class c_loc : (Loc.t -> Loc.t) -> object inherit map end - val map_expr : (expr -> expr) -> expr -> expr - val map_patt : (patt -> patt) -> patt -> patt - val map_ctyp : (ctyp -> ctyp) -> ctyp -> ctyp - val map_str_item : (str_item -> str_item) -> str_item -> str_item - val map_sig_item : (sig_item -> sig_item) -> sig_item -> sig_item - val map_loc : (Loc.t -> Loc.t) -> Loc.t -> Loc.t + val map_expr : (expr -> expr) -> map + val map_patt : (patt -> patt) -> map + val map_ctyp : (ctyp -> ctyp) -> map + val map_str_item : (str_item -> str_item) -> map + val map_sig_item : (sig_item -> sig_item) -> map + val map_loc : (Loc.t -> Loc.t) -> map val ident_of_expr : expr -> ident + val ident_of_patt : patt -> ident val ident_of_ctyp : ctyp -> ident val biAnd_of_list : binding list -> binding - val biSem_of_list : binding list -> binding + val rbSem_of_list : rec_binding list -> rec_binding val paSem_of_list : patt list -> patt val paCom_of_list : patt list -> patt val tyOr_of_list : ctyp list -> ctyp val tyAnd_of_list : ctyp list -> ctyp + val tyAmp_of_list : ctyp list -> ctyp val tySem_of_list : ctyp list -> ctyp + val tyCom_of_list : ctyp list -> ctyp + val tySta_of_list : ctyp list -> ctyp val stSem_of_list : str_item list -> str_item val sgSem_of_list : sig_item list -> sig_item val crSem_of_list : class_str_item list -> class_str_item @@ -1152,6 +1186,8 @@ module Sig = val exCom_of_list : expr list -> expr val list_of_ctyp : ctyp -> ctyp list -> ctyp list val list_of_binding : binding -> binding list -> binding list + val list_of_rec_binding : + rec_binding -> rec_binding list -> rec_binding list val list_of_with_constr : with_constr -> with_constr list -> with_constr list val list_of_patt : patt -> patt list -> patt list @@ -1198,6 +1234,7 @@ module Sig = and type class_sig_item = M.class_sig_item and type class_expr = M.class_expr and type class_str_item = M.class_str_item and type binding = M.binding + and type rec_binding = M.rec_binding and type module_binding = M.module_binding and type match_case = M.match_case and type ident = M.ident = M module MakeCamlp4Ast (Loc : Type) = @@ -1242,7 +1279,7 @@ module Sig = | PaOlb of Loc.t * string * patt | PaOlbi of Loc.t * string * patt * expr | PaOrp of Loc.t * patt * patt | PaRng of Loc.t * patt * patt - | PaRec of Loc.t * patt | PaEq of Loc.t * patt * patt + | PaRec of Loc.t * patt | PaEq of Loc.t * ident * patt | PaStr of Loc.t * string | PaTup of Loc.t * patt | PaTyc of Loc.t * patt * ctyp | PaTyp of Loc.t * ident | PaVrn of Loc.t * string @@ -1263,15 +1300,15 @@ module Sig = | ExLmd of Loc.t * string * module_expr * expr | ExMat of Loc.t * expr * match_case | ExNew of Loc.t * ident | ExObj of Loc.t * patt * class_str_item - | ExOlb of Loc.t * string * expr | ExOvr of Loc.t * binding - | ExRec of Loc.t * binding * expr | ExSeq of Loc.t * expr + | ExOlb of Loc.t * string * expr | ExOvr of Loc.t * rec_binding + | ExRec of Loc.t * rec_binding * expr | ExSeq of Loc.t * expr | ExSnd of Loc.t * expr * string | ExSte of Loc.t * expr * expr | ExStr of Loc.t * string | ExTry of Loc.t * expr * match_case | ExTup of Loc.t * expr | ExCom of Loc.t * expr * expr | ExTyc of Loc.t * expr * ctyp | ExVrn of Loc.t * string | ExWhi of Loc.t * expr * expr and module_type = - | MtId of Loc.t * ident + | MtNil of Loc.t | MtId of Loc.t * ident | MtFun of Loc.t * string * module_type * module_type | MtQuo of Loc.t * string | MtSig of Loc.t * sig_item | MtWit of Loc.t * module_type * with_constr @@ -1295,8 +1332,10 @@ module Sig = | WcAnt of Loc.t * string and binding = | BiNil of Loc.t | BiAnd of Loc.t * binding * binding - | BiSem of Loc.t * binding * binding | BiEq of Loc.t * patt * expr - | BiAnt of Loc.t * string + | BiEq of Loc.t * patt * expr | BiAnt of Loc.t * string + and rec_binding = + | RbNil of Loc.t | RbSem of Loc.t * rec_binding * rec_binding + | RbEq of Loc.t * ident * expr | RbAnt of Loc.t * string and module_binding = | MbNil of Loc.t | MbAnd of Loc.t * module_binding * module_binding | MbColEq of Loc.t * string * module_type * module_expr @@ -1305,7 +1344,7 @@ module Sig = | McNil of Loc.t | McOr of Loc.t * match_case * match_case | McArr of Loc.t * patt * expr * expr | McAnt of Loc.t * string and module_expr = - | MeId of Loc.t * ident + | MeNil of Loc.t | MeId of Loc.t * ident | MeApp of Loc.t * module_expr * module_expr | MeFun of Loc.t * string * module_type * module_expr | MeStr of Loc.t * str_item @@ -1369,25 +1408,53 @@ module Sig = val fold_implem_filters : ('a -> Ast.str_item filter -> 'a) -> 'a -> 'a end + module type DynAst = + sig + module Ast : Ast + type 'a tag + val ctyp_tag : Ast.ctyp tag + val patt_tag : Ast.patt tag + val expr_tag : Ast.expr tag + val module_type_tag : Ast.module_type tag + val sig_item_tag : Ast.sig_item tag + val with_constr_tag : Ast.with_constr tag + val module_expr_tag : Ast.module_expr tag + val str_item_tag : Ast.str_item tag + val class_type_tag : Ast.class_type tag + val class_sig_item_tag : Ast.class_sig_item tag + val class_expr_tag : Ast.class_expr tag + val class_str_item_tag : Ast.class_str_item tag + val match_case_tag : Ast.match_case tag + val ident_tag : Ast.ident tag + val binding_tag : Ast.binding tag + val rec_binding_tag : Ast.rec_binding tag + val module_binding_tag : Ast.module_binding tag + val string_of_tag : 'a tag -> string + module Pack (X : sig type 'a t end) : + sig + type pack + val pack : 'a tag -> 'a X.t -> pack + val unpack : 'a tag -> pack -> 'a X.t + val print_tag : Format.formatter -> pack -> unit + end + end type quotation = { q_name : string; q_loc : string; q_shift : int; q_contents : string } module type Quotation = sig module Ast : Ast + module DynAst : DynAst with module Ast = Ast open Ast type 'a expand_fun = Loc.t -> string option -> string -> 'a - type expander = - | ExStr of (bool -> string expand_fun) - | ExAst of Ast.expr expand_fun * Ast.patt expand_fun - val add : string -> expander -> unit - val find : string -> expander + val add : string -> 'a DynAst.tag -> 'a expand_fun -> unit + val find : string -> 'a DynAst.tag -> 'a expand_fun val default : string ref + val parse_quotation_result : + (Loc.t -> string -> 'a) -> + Loc.t -> quotation -> string -> string -> 'a val translate : (string -> string) ref - val expand_expr : - (Loc.t -> string -> Ast.expr) -> Loc.t -> quotation -> Ast.expr - val expand_patt : - (Loc.t -> string -> Ast.patt) -> Loc.t -> quotation -> Ast.patt + val expand : Loc.t -> quotation -> 'a DynAst.tag -> 'a val dump_file : (string option) ref module Error : Error end @@ -1573,42 +1640,46 @@ module Sig = module Error : Error val mk : unit -> Loc.t -> char Stream.t -> (Token.t * Loc.t) Stream.t end - module type Parser = - sig - module Ast : Ast - open Ast - val parse_implem : - ?directive_handler: (str_item -> str_item option) -> - Loc.t -> char Stream.t -> Ast.str_item - val parse_interf : - ?directive_handler: (sig_item -> sig_item option) -> - Loc.t -> char Stream.t -> Ast.sig_item + module Parser (Ast : Ast) = + struct + module type S = + sig + val parse_implem : + ?directive_handler: (Ast.str_item -> Ast.str_item option) -> + Ast.Loc.t -> char Stream.t -> Ast.str_item + val parse_interf : + ?directive_handler: (Ast.sig_item -> Ast.sig_item option) -> + Ast.Loc.t -> char Stream.t -> Ast.sig_item + end end - module type Printer = - sig - module Ast : Ast - val print_interf : - ?input_file: string -> ?output_file: string -> Ast.sig_item -> unit - val print_implem : - ?input_file: string -> ?output_file: string -> Ast.str_item -> unit + module Printer (Ast : Ast) = + struct + module type S = + sig + val print_interf : + ?input_file: string -> + ?output_file: string -> Ast.sig_item -> unit + val print_implem : + ?input_file: string -> + ?output_file: string -> Ast.str_item -> unit + end end module type Syntax = sig module Loc : Loc - module Warning : Warning with module Loc = Loc module Ast : Ast with module Loc = Loc module Token : Token with module Loc = Loc module Gram : Grammar.Static with module Loc = Loc and module Token = Token module AntiquotSyntax : AntiquotSyntax with module Ast = Ast module Quotation : Quotation with module Ast = Ast - module Parser : Parser with module Ast = Ast - module Printer : Printer with module Ast = Ast + include Warning(Loc).S + include Parser(Ast).S + include Printer(Ast).S end module type Camlp4Syntax = sig module Loc : Loc - module Warning : Warning with module Loc = Loc module Ast : Camlp4Ast with module Loc = Loc module Token : Camlp4Token with module Loc = Loc module Gram : Grammar.Static with module Loc = Loc @@ -1616,8 +1687,9 @@ module Sig = module AntiquotSyntax : AntiquotSyntax with module Ast = Camlp4AstToAst(Ast) module Quotation : Quotation with module Ast = Camlp4AstToAst(Ast) - module Parser : Parser with module Ast = Camlp4AstToAst(Ast) - module Printer : Printer with module Ast = Camlp4AstToAst(Ast) + include Warning(Loc).S + include Parser(Ast).S + include Printer(Ast).S val interf : ((Ast.sig_item list) * (Loc.t option)) Gram.Entry.t val implem : ((Ast.str_item list) * (Loc.t option)) Gram.Entry.t val top_phrase : (Ast.str_item option) Gram.Entry.t @@ -1629,7 +1701,6 @@ module Sig = val a_INT64 : string Gram.Entry.t val a_LABEL : string Gram.Entry.t val a_LIDENT : string Gram.Entry.t - val a_LIDENT_or_operator : string Gram.Entry.t val a_NATIVEINT : string Gram.Entry.t val a_OPTLABEL : string Gram.Entry.t val a_STRING : string Gram.Entry.t @@ -1642,6 +1713,7 @@ module Sig = val match_case_quot : Ast.match_case Gram.Entry.t val binding : Ast.binding Gram.Entry.t val binding_quot : Ast.binding Gram.Entry.t + val rec_binding_quot : Ast.rec_binding Gram.Entry.t val class_declaration : Ast.class_expr Gram.Entry.t val class_description : Ast.class_type Gram.Entry.t val class_expr : Ast.class_expr Gram.Entry.t @@ -1683,8 +1755,7 @@ module Sig = val expr : Ast.expr Gram.Entry.t val expr_eoi : Ast.expr Gram.Entry.t val expr_quot : Ast.expr Gram.Entry.t - val field : Ast.ctyp Gram.Entry.t - val field_expr : Ast.binding Gram.Entry.t + val field_expr : Ast.rec_binding Gram.Entry.t val fun_binding : Ast.expr Gram.Entry.t val fun_def : Ast.expr Gram.Entry.t val ident : Ast.ident Gram.Entry.t @@ -1693,7 +1764,7 @@ module Sig = val ipatt_tcon : Ast.patt Gram.Entry.t val label : string Gram.Entry.t val label_declaration : Ast.ctyp Gram.Entry.t - val label_expr : Ast.binding Gram.Entry.t + val label_expr : Ast.rec_binding Gram.Entry.t val label_ipatt : Ast.patt Gram.Entry.t val label_longident : Ast.ident Gram.Entry.t val label_patt : Ast.patt Gram.Entry.t @@ -1718,7 +1789,7 @@ module Sig = val opt_class_self_type : Ast.ctyp Gram.Entry.t val opt_comma_ctyp : Ast.ctyp Gram.Entry.t val opt_dot_dot : Ast.meta_bool Gram.Entry.t - val opt_eq_ctyp : (Ast.ctyp list -> Ast.ctyp) Gram.Entry.t + val opt_eq_ctyp : Ast.ctyp Gram.Entry.t val opt_expr : Ast.expr Gram.Entry.t val opt_meth_list : Ast.ctyp Gram.Entry.t val opt_mutable : Ast.meta_bool Gram.Entry.t @@ -1733,16 +1804,15 @@ module Sig = val patt_quot : Ast.patt Gram.Entry.t val patt_tcon : Ast.patt Gram.Entry.t val phrase : Ast.str_item Gram.Entry.t - val pipe_ctyp : Ast.ctyp Gram.Entry.t val poly_type : Ast.ctyp Gram.Entry.t val row_field : Ast.ctyp Gram.Entry.t - val sem_ctyp : Ast.ctyp Gram.Entry.t val sem_expr : Ast.expr Gram.Entry.t val sem_expr_for_list : (Ast.expr -> Ast.expr) Gram.Entry.t val sem_patt : Ast.patt Gram.Entry.t val sem_patt_for_list : (Ast.patt -> Ast.patt) Gram.Entry.t val semi : unit Gram.Entry.t val sequence : Ast.expr Gram.Entry.t + val do_sequence : Ast.expr Gram.Entry.t val sig_item : Ast.sig_item Gram.Entry.t val sig_item_quot : Ast.sig_item Gram.Entry.t val sig_items : Ast.sig_item Gram.Entry.t @@ -1765,11 +1835,17 @@ module Sig = val value_val : unit Gram.Entry.t val with_constr : Ast.with_constr Gram.Entry.t val with_constr_quot : Ast.with_constr Gram.Entry.t + val prefixop : Ast.expr Gram.Entry.t + val infixop0 : Ast.expr Gram.Entry.t + val infixop1 : Ast.expr Gram.Entry.t + val infixop2 : Ast.expr Gram.Entry.t + val infixop3 : Ast.expr Gram.Entry.t + val infixop4 : Ast.expr Gram.Entry.t end module type SyntaxExtension = functor (Syn : Syntax) -> Syntax with module Loc = Syn.Loc - and module Warning = Syn.Warning and module Ast = Syn.Ast - and module Token = Syn.Token and module Gram = Syn.Gram + and module Ast = Syn.Ast and module Token = Syn.Token + and module Gram = Syn.Gram and module AntiquotSyntax = Syn.AntiquotSyntax and module Quotation = Syn.Quotation end @@ -1966,10 +2042,9 @@ module Struct = (x.start.off - x.start.bol) (x.stop.off - x.start.bol) x.stop.line (x.stop.off - x.stop.bol) (fun o -> if x.ghost then fprintf o " (ghost)" else ()) - let start_pos = { line = 1; bol = 0; off = 0; } + let start_pos = { line = 1; bol = 0; off = 0; } let ghost = { - file_name = "ghost-location"; start = start_pos; stop = start_pos; @@ -1977,7 +2052,6 @@ module Struct = } let mk file_name = { - file_name = file_name; start = start_pos; stop = start_pos; @@ -1987,10 +2061,9 @@ module Struct = stop_bol, stop_off, ghost) = { - file_name = file_name; - start = { line = start_line; bol = start_bol; off = start_off; }; - stop = { line = stop_line; bol = stop_bol; off = stop_off; }; + start = { line = start_line; bol = start_bol; off = start_off; }; + stop = { line = stop_line; bol = stop_bol; off = stop_off; }; ghost = ghost; } let to_tuple { @@ -2010,7 +2083,6 @@ module Struct = let pos_of_lexing_position p = let pos = { - line = p.Lexing.pos_lnum; bol = p.Lexing.pos_bol; off = p.Lexing.pos_cnum; @@ -2018,7 +2090,6 @@ module Struct = in pos let pos_to_lexing_position p file_name = { - Lexing.pos_fname = file_name; pos_lnum = p.line; pos_bol = p.bol; @@ -2037,7 +2108,6 @@ module Struct = and stop = Lexing.lexeme_end_p lb in let loc = { - file_name = better_file_name start.Lexing.pos_fname stop.Lexing.pos_fname; start = pos_of_lexing_position start; @@ -2048,7 +2118,6 @@ module Struct = let of_lexing_position pos = let loc = { - file_name = pos.Lexing.pos_fname; start = pos_of_lexing_position pos; stop = pos_of_lexing_position pos; @@ -2057,7 +2126,6 @@ module Struct = in loc let to_ocaml_location x = { - Location.loc_start = pos_to_lexing_position x.start x.file_name; loc_end = pos_to_lexing_position x.stop x.file_name; loc_ghost = x.ghost; @@ -2066,7 +2134,6 @@ module Struct = let (a, b) = ((x.Location.loc_start), (x.Location.loc_end)) in let res = { - file_name = better_file_name a.Lexing.pos_fname b.Lexing.pos_fname; start = pos_of_lexing_position a; @@ -2082,25 +2149,25 @@ module Struct = else (let r = match ((a.ghost), (b.ghost)) with - | (false, false) -> { (a) with stop = b.stop; } - | (true, true) -> { (a) with stop = b.stop; } - | (true, _) -> { (a) with stop = b.stop; } - | (_, true) -> { (b) with start = a.start; } + | (false, false) -> { (a) with stop = b.stop; } + | (true, true) -> { (a) with stop = b.stop; } + | (true, _) -> { (a) with stop = b.stop; } + | (_, true) -> { (b) with start = a.start; } in r) - let join x = { (x) with stop = x.start; } + let join x = { (x) with stop = x.start; } let map f start_stop_both x = match start_stop_both with - | `start -> { (x) with start = f x.start; } - | `stop -> { (x) with stop = f x.stop; } - | `both -> { (x) with start = f x.start; stop = f x.stop; } - let move_pos chars x = { (x) with off = x.off + chars; } + | `start -> { (x) with start = f x.start; } + | `stop -> { (x) with stop = f x.stop; } + | `both -> { (x) with start = f x.start; stop = f x.stop; } + let move_pos chars x = { (x) with off = x.off + chars; } let move s chars x = map (move_pos chars) s x let move_line lines x = let move_line_pos x = - { (x) with line = x.line + lines; bol = x.off; } + { (x) with line = x.line + lines; bol = x.off; } in map move_line_pos `both x let shift width x = - { (x) with start = x.stop; stop = move_pos width x.stop; } + { (x) with start = x.stop; stop = move_pos width x.stop; } let file_name x = x.file_name let start_line x = x.start.line let stop_line x = x.stop.line @@ -2109,13 +2176,13 @@ module Struct = let start_off x = x.start.off let stop_off x = x.stop.off let is_ghost x = x.ghost - let set_file_name s x = { (x) with file_name = s; } - let ghostify x = { (x) with ghost = true; } + let set_file_name s x = { (x) with file_name = s; } + let ghostify x = { (x) with ghost = true; } let make_absolute x = let pwd = Sys.getcwd () in if Filename.is_relative x.file_name - then { (x) with file_name = Filename.concat pwd x.file_name; } + then { (x) with file_name = Filename.concat pwd x.file_name; } else x let strictly_before x y = let b = (x.stop.off < y.start.off) && (x.file_name = y.file_name) @@ -2161,18 +2228,6 @@ module Struct = | Exc_located (_, _) -> raise exc | _ -> raise (Exc_located (loc, exc)) end - module Warning = - struct - module Make (Loc : Sig.Loc) : Sig.Warning with module Loc = Loc = - struct - module Loc = Loc - open Format - type t = Loc.t -> string -> unit - let default loc txt = eprintf " %a: %s@." Loc.print loc txt - let current = ref default - let print loc txt = !current loc txt - end - end module Token : sig module Make (Loc : Sig.Loc) : Sig.Camlp4Token with module Loc = Loc @@ -2229,7 +2284,7 @@ module Struct = OPTLABEL s | COMMENT s | BLANKS s | ESCAPED_IDENT s -> s | tok -> invalid_arg - ("Cannot extract a string from a this token: " ^ + ("Cannot extract a string from this token: " ^ (to_string tok)) module Error = struct @@ -2297,7 +2352,7 @@ module Struct = Stream.icons x (Stream.slazy (fun _ -> ignore_layout s))) | _ -> Stream.sempty - let mk is_kwd = { is_kwd = is_kwd; filter = ignore_layout; } + let mk is_kwd = { is_kwd = is_kwd; filter = ignore_layout; } let filter x = let f tok loc = let tok = keyword_conversion tok x.is_kwd @@ -2490,14 +2545,14 @@ module Struct = open Error type context = { loc : Loc.t; in_comment : bool; quotations : bool; - lexbuf : lexbuf; buffer : Buffer.t + antiquots : bool; lexbuf : lexbuf; buffer : Buffer.t } let default_context lb = { - loc = Loc.ghost; in_comment = false; quotations = true; + antiquots = false; lexbuf = lb; buffer = Buffer.create 256; } @@ -2509,28 +2564,28 @@ module Struct = in (Buffer.reset c.buffer; contents) let loc c = Loc.merge c.loc (Loc.of_lexbuf c.lexbuf) let quotations c = c.quotations + let antiquots c = c.antiquots let is_in_comment c = c.in_comment - let in_comment c = { (c) with in_comment = true; } + let in_comment c = { (c) with in_comment = true; } let set_start_p c = c.lexbuf.lex_start_p <- Loc.start_pos c.loc let move_start_p shift c = let p = c.lexbuf.lex_start_p in c.lexbuf.lex_start_p <- - { (p) with pos_cnum = p.pos_cnum + shift; } - let with_curr_loc f c = - f { (c) with loc = Loc.of_lexbuf c.lexbuf; } c.lexbuf + { (p) with pos_cnum = p.pos_cnum + shift; } + let update_loc c = { (c) with loc = Loc.of_lexbuf c.lexbuf; } + let with_curr_loc f c = f (update_loc c) c.lexbuf let parse_nested f c = (with_curr_loc f c; set_start_p c; buff_contents c) - let shift n c = { (c) with loc = Loc.move `both n c.loc; } + let shift n c = { (c) with loc = Loc.move `both n c.loc; } let store_parse f c = (store c; f c c.lexbuf) let parse f c = f c c.lexbuf let mk_quotation quotation c name loc shift = - let s = parse_nested quotation c in + let s = parse_nested quotation (update_loc c) in let contents = String.sub s 0 ((String.length s) - 2) in QUOTATION { - q_name = name; q_loc = loc; q_shift = shift; @@ -2546,7 +2601,6 @@ module Struct = { (pos) with - pos_fname = new_file; pos_lnum = if absolute then line else pos.pos_lnum + line; pos_bol = pos.pos_cnum - chars; @@ -2557,758 +2611,937 @@ module Struct = error let __ocaml_lex_tables = { - Lexing.lex_base = - "\000\000\227\255\228\255\001\001\001\001\231\255\232\255\160\001\ - \198\001\067\000\091\000\069\000\071\000\084\000\122\000\235\001\ - \014\002\092\000\102\001\244\255\035\002\068\002\141\002\093\003\ - \060\004\152\004\126\000\001\000\255\255\104\005\253\255\056\006\ - \252\255\245\255\246\255\247\255\023\001\001\001\088\000\091\000\ - \216\002\168\003\179\005\179\001\088\004\132\000\024\007\108\000\ - \151\000\109\000\243\255\242\255\241\255\012\005\033\001\111\000\ - \239\002\193\005\111\000\239\255\238\255\024\007\063\007\109\007\ - \148\007\183\007\174\006\015\003\004\000\233\255\093\001\199\001\ - \151\002\094\001\005\000\233\255\054\008\246\008\006\000\117\004\ - \251\255\208\009\095\000\115\000\115\000\254\255\016\010\207\010\ - \159\011\111\012\079\013\121\000\152\000\124\000\126\000\249\255\ - \248\255\144\006\197\003\127\000\060\004\128\000\200\007\129\000\ - \008\003\007\000\106\013\250\255\054\008\169\004\089\001\082\001\ - \179\004\198\008\054\008\172\013\139\014\169\014\136\015\103\016\ - \135\016\199\016\151\017\254\255\204\001\008\000\107\000\053\001\ - \215\017\150\018\102\019\054\020\018\021\062\001\236\021\197\022\ - \064\001\149\023\248\003\155\001\009\000\213\023\148\024\100\025\ - \052\026"; + "\000\000\223\255\224\255\224\000\226\255\253\000\035\001\072\001\ + \109\001\146\001\183\001\218\001\068\000\190\001\002\002\227\255\ + \119\000\046\002\087\002\154\002\123\000\244\255\173\002\206\002\ + \023\003\231\003\198\004\034\005\120\000\001\000\255\255\242\005\ + \253\255\194\006\252\255\245\255\246\255\247\255\092\000\224\000\ + \082\000\105\000\098\003\050\004\061\006\213\001\020\002\129\000\ + \162\007\095\000\151\000\099\000\243\255\242\255\241\255\150\005\ + \253\000\100\000\104\002\075\006\162\007\255\007\039\008\106\008\ + \145\008\212\008\109\000\239\255\249\008\024\001\060\009\099\009\ + \166\009\232\255\231\255\230\255\205\009\016\010\055\010\122\010\ + \161\010\075\001\228\255\229\255\238\255\201\007\196\010\233\010\ + \014\011\051\011\088\011\125\011\162\011\199\011\236\011\052\007\ + \153\003\004\000\233\255\007\000\153\000\175\002\008\000\005\000\ + \233\255\243\011\024\012\061\012\098\012\105\012\142\012\179\012\ + \216\012\251\012\030\013\035\013\070\013\105\013\142\013\179\013\ + \241\013\006\000\192\002\251\255\203\014\006\001\121\000\122\000\ + \254\255\011\015\202\015\154\016\106\017\074\018\126\000\002\001\ + \149\000\150\000\249\255\248\255\022\007\184\002\152\000\079\004\ + \208\000\060\014\219\000\165\001\009\000\101\018\250\255\021\016\ + \198\004\079\001\070\001\215\004\229\016\140\018\207\018\174\019\ + \204\019\171\020\138\021\171\021\235\021\187\022\254\255\164\001\ + \012\000\197\000\079\001\251\022\186\023\138\024\090\025\054\026\ + \237\000\016\027\233\027\028\001\185\028\206\001\080\001\013\000\ + \249\028\184\029\136\030\088\031"; Lexing.lex_backtrk = - "\255\255\255\255\255\255\028\000\025\000\255\255\255\255\025\000\ - \025\000\023\000\023\000\023\000\023\000\023\000\023\000\025\000\ - \025\000\023\000\023\000\255\255\006\000\006\000\005\000\004\000\ - \025\000\025\000\001\000\000\000\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\007\000\255\255\255\255\ - \255\255\006\000\006\000\006\000\007\000\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\014\000\014\000\014\000\ - \255\255\255\255\015\000\255\255\255\255\021\000\020\000\018\000\ - \025\000\019\000\255\255\255\255\022\000\255\255\255\255\255\255\ - \255\255\255\255\022\000\255\255\026\000\255\255\013\000\014\000\ - \255\255\003\000\014\000\014\000\014\000\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\005\000\255\255\ + "\255\255\255\255\255\255\030\000\255\255\028\000\030\000\030\000\ + \030\000\030\000\028\000\028\000\028\000\028\000\028\000\255\255\ + \028\000\030\000\030\000\028\000\028\000\255\255\006\000\006\000\ + \005\000\004\000\030\000\030\000\001\000\000\000\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\007\000\ + \255\255\255\255\255\255\006\000\006\000\006\000\007\000\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\014\000\ + \014\000\014\000\255\255\255\255\255\255\255\255\255\255\255\255\ + \028\000\028\000\015\000\255\255\028\000\255\255\255\255\028\000\ + \255\255\255\255\255\255\255\255\028\000\028\000\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\030\000\021\000\ + \020\000\018\000\030\000\019\000\028\000\030\000\255\255\255\255\ + \255\255\022\000\255\255\255\255\255\255\255\255\255\255\022\000\ + \255\255\255\255\255\255\028\000\255\255\255\255\028\000\028\000\ + \255\255\028\000\028\000\028\000\028\000\030\000\030\000\030\000\ + \255\255\013\000\014\000\255\255\003\000\014\000\014\000\014\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\006\000\008\000\255\255\005\000\005\000\001\000\001\000\ - \255\255\255\255\000\000\001\000\001\000\255\255\002\000\002\000\ - \255\255\255\255\255\255\255\255\255\255\003\000\004\000\004\000\ - \255\255\255\255\255\255\255\255\255\255\002\000\002\000\002\000\ - \255\255\255\255\255\255\004\000\002\000\255\255\255\255\255\255\ - \255\255"; + \255\255\005\000\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\006\000\008\000\255\255\005\000\ + \005\000\001\000\001\000\255\255\255\255\000\000\001\000\001\000\ + \255\255\002\000\002\000\255\255\255\255\255\255\255\255\255\255\ + \003\000\004\000\004\000\255\255\255\255\255\255\255\255\255\255\ + \002\000\002\000\002\000\255\255\255\255\255\255\004\000\002\000\ + \255\255\255\255\255\255\255\255"; Lexing.lex_default = - "\001\000\000\000\000\000\076\000\255\255\000\000\000\000\255\255\ + "\001\000\000\000\000\000\255\255\000\000\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\000\000\ + \255\255\255\255\255\255\255\255\049\000\000\000\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\000\000\255\255\ + \000\000\255\255\000\000\000\000\000\000\000\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\047\000\000\000\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\000\000\255\255\000\000\255\255\ - \000\000\000\000\000\000\000\000\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\052\000\255\255\ + \054\000\255\255\255\255\255\255\000\000\000\000\000\000\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\000\000\255\255\255\255\255\255\255\255\ + \255\255\000\000\000\000\000\000\255\255\255\255\255\255\255\255\ \255\255\255\255\000\000\000\000\000\000\255\255\255\255\255\255\ - \255\255\255\255\255\255\000\000\000\000\255\255\255\255\255\255\ - \255\255\255\255\070\000\255\255\255\255\000\000\070\000\071\000\ - \070\000\073\000\255\255\000\000\076\000\052\000\255\255\091\000\ - \000\000\255\255\255\255\255\255\255\255\000\000\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\000\000\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\099\000\ + \255\255\255\255\000\000\099\000\100\000\099\000\102\000\255\255\ \000\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \035\000\255\255\107\000\000\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\000\000\080\000\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\030\000\255\255\255\255\255\255\ - \255\255\255\255\080\000\255\255\255\255\255\255\255\255\255\255\ - \255\255"; + \054\000\255\255\134\000\000\000\255\255\255\255\255\255\255\255\ + \000\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\000\000\000\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\037\000\255\255\150\000\000\000\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\000\000\123\000\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\032\000\ + \255\255\255\255\255\255\255\255\255\255\123\000\255\255\255\255\ + \255\255\255\255\255\255\255\255"; Lexing.lex_trans = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\026\000\028\000\028\000\026\000\027\000\069\000\075\000\ - \051\000\095\000\032\000\030\000\000\000\000\000\000\000\000\000\ + \000\000\028\000\030\000\030\000\028\000\029\000\098\000\104\000\ + \053\000\098\000\104\000\138\000\097\000\103\000\034\000\032\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \026\000\004\000\019\000\014\000\005\000\004\000\004\000\018\000\ - \017\000\006\000\016\000\004\000\006\000\004\000\013\000\004\000\ - \021\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\ - \020\000\020\000\012\000\011\000\015\000\004\000\007\000\024\000\ - \004\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\010\000\003\000\006\000\004\000\023\000\ - \006\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\009\000\008\000\006\000\025\000\006\000\ - \006\000\006\000\006\000\067\000\006\000\006\000\058\000\026\000\ - \043\000\043\000\026\000\042\000\042\000\042\000\042\000\042\000\ - \042\000\042\000\042\000\051\000\050\000\006\000\051\000\006\000\ - \059\000\087\000\067\000\030\000\085\000\028\000\026\000\086\000\ - \035\000\049\000\093\000\096\000\006\000\095\000\034\000\033\000\ - \019\000\085\000\066\000\066\000\066\000\066\000\066\000\066\000\ - \066\000\066\000\066\000\066\000\044\000\044\000\044\000\044\000\ - \044\000\044\000\044\000\044\000\044\000\044\000\050\000\096\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\006\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\000\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \002\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\004\000\255\255\255\255\004\000\004\000\004\000\ - \000\000\255\255\255\255\004\000\004\000\255\255\004\000\004\000\ - \004\000\037\000\037\000\037\000\037\000\037\000\037\000\037\000\ - \037\000\037\000\037\000\004\000\255\255\004\000\004\000\004\000\ - \004\000\004\000\045\000\000\000\045\000\000\000\036\000\044\000\ - \044\000\044\000\044\000\044\000\044\000\044\000\044\000\044\000\ - \044\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ - \056\000\056\000\056\000\111\000\255\255\255\255\255\255\004\000\ - \037\000\255\255\111\000\111\000\000\000\000\000\036\000\069\000\ - \075\000\000\000\068\000\074\000\136\000\000\000\136\000\129\000\ - \049\000\028\000\111\000\048\000\000\000\128\000\000\000\000\000\ - \085\000\111\000\085\000\000\000\255\255\004\000\255\255\004\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\004\000\046\000\000\000\004\000\004\000\004\000\000\000\ - \000\000\000\000\004\000\004\000\000\000\004\000\004\000\004\000\ - \000\000\069\000\000\000\000\000\068\000\142\000\032\000\032\000\ - \255\255\125\000\004\000\141\000\004\000\004\000\004\000\004\000\ - \004\000\000\000\000\000\043\000\043\000\000\000\000\000\004\000\ - \000\000\073\000\004\000\004\000\004\000\000\000\000\000\000\000\ - \004\000\004\000\000\000\004\000\004\000\004\000\000\000\000\000\ - \255\255\000\000\000\000\000\000\000\000\006\000\004\000\034\000\ - \004\000\255\255\004\000\004\000\004\000\004\000\004\000\000\000\ - \127\000\000\000\126\000\000\000\004\000\000\000\000\000\004\000\ - \004\000\004\000\043\000\000\000\000\000\004\000\004\000\000\000\ - \004\000\004\000\004\000\000\000\004\000\006\000\004\000\035\000\ - \000\000\033\000\000\000\006\000\004\000\061\000\000\000\063\000\ - \004\000\004\000\004\000\062\000\000\000\000\000\000\000\004\000\ - \000\000\000\000\004\000\004\000\004\000\000\000\000\000\060\000\ - \004\000\004\000\000\000\004\000\004\000\004\000\000\000\000\000\ - \000\000\000\000\004\000\000\000\004\000\000\000\000\000\000\000\ - \004\000\004\000\004\000\004\000\004\000\004\000\004\000\000\000\ - \000\000\037\000\000\000\020\000\020\000\020\000\020\000\020\000\ - \020\000\020\000\020\000\020\000\020\000\255\255\255\255\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\255\255\004\000\ - \036\000\004\000\000\000\000\000\004\000\000\000\000\000\034\000\ - \000\000\000\000\037\000\000\000\020\000\020\000\020\000\020\000\ - \020\000\020\000\020\000\020\000\020\000\020\000\000\000\000\000\ - \000\000\000\000\020\000\000\000\000\000\000\000\038\000\000\000\ - \036\000\036\000\004\000\000\000\004\000\000\000\000\000\035\000\ - \034\000\033\000\000\000\039\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\ - \072\000\069\000\000\000\020\000\068\000\000\000\038\000\000\000\ - \000\000\036\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \035\000\000\000\033\000\039\000\022\000\000\000\000\000\072\000\ - \000\000\071\000\000\000\000\000\040\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\255\255\ - \000\000\000\000\000\000\000\000\030\000\000\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \000\000\000\000\000\000\000\000\022\000\000\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ + \028\000\003\000\021\000\016\000\004\000\009\000\009\000\020\000\ + \019\000\005\000\018\000\003\000\015\000\003\000\014\000\009\000\ + \023\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ + \022\000\022\000\013\000\012\000\017\000\006\000\007\000\026\000\ + \009\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\011\000\003\000\005\000\009\000\025\000\ + \015\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\010\000\008\000\005\000\027\000\015\000\ + \096\000\028\000\045\000\045\000\028\000\051\000\053\000\047\000\ + \050\000\047\000\052\000\053\000\046\000\046\000\046\000\046\000\ + \046\000\046\000\046\000\046\000\046\000\046\000\067\000\096\000\ + \028\000\044\000\044\000\044\000\044\000\044\000\044\000\044\000\ + \044\000\051\000\128\000\098\000\030\000\037\000\097\000\095\000\ + \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ + \095\000\046\000\046\000\046\000\046\000\046\000\046\000\046\000\ + \046\000\046\000\046\000\102\000\139\000\138\000\052\000\036\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\048\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\035\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \002\000\003\000\021\000\128\000\003\000\003\000\003\000\255\255\ + \255\255\000\000\003\000\003\000\136\000\003\000\003\000\003\000\ + \039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\ + \039\000\039\000\003\000\179\000\003\000\003\000\003\000\003\000\ + \003\000\069\000\094\000\094\000\069\000\038\000\085\000\128\000\ + \000\000\139\000\000\000\094\000\094\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\085\000\ + \069\000\085\000\085\000\085\000\003\000\094\000\003\000\039\000\ + \130\000\075\000\032\000\000\000\003\000\038\000\129\000\003\000\ + \009\000\009\000\179\000\000\000\085\000\003\000\003\000\154\000\ + \003\000\009\000\009\000\000\000\081\000\000\000\128\000\081\000\ + \154\000\154\000\085\000\094\000\003\000\086\000\003\000\006\000\ + \006\000\006\000\003\000\009\000\000\000\000\000\154\000\000\000\ + \000\000\003\000\000\000\081\000\003\000\118\000\118\000\154\000\ + \000\000\085\000\003\000\003\000\082\000\003\000\118\000\118\000\ + \000\000\085\000\085\000\255\255\000\000\000\000\000\000\003\000\ + \085\000\009\000\117\000\000\000\007\000\007\000\007\000\003\000\ + \118\000\172\000\185\000\030\000\034\000\000\000\003\000\171\000\ + \184\000\003\000\009\000\009\000\000\000\000\000\005\000\003\000\ + \003\000\255\255\003\000\009\000\009\000\000\000\000\000\086\000\ + \085\000\003\000\000\000\000\000\003\000\005\000\118\000\086\000\ + \000\000\006\000\006\000\006\000\003\000\009\000\034\000\138\000\ + \000\000\168\000\148\000\003\000\000\000\000\000\003\000\009\000\ + \009\000\000\000\000\000\092\000\003\000\003\000\000\000\003\000\ + \009\000\009\000\000\000\000\000\117\000\005\000\003\000\030\000\ + \000\000\003\000\005\000\009\000\093\000\000\000\009\000\009\000\ + \009\000\003\000\009\000\000\000\000\000\000\000\000\000\000\000\ + \032\000\000\000\000\000\183\000\114\000\114\000\000\000\060\000\ + \170\000\000\000\169\000\105\000\105\000\114\000\114\000\005\000\ + \000\000\086\000\005\000\003\000\105\000\105\000\003\000\092\000\ + \009\000\115\000\030\000\113\000\112\000\112\000\000\000\114\000\ + \111\000\000\000\108\000\110\000\110\000\000\000\105\000\114\000\ + \114\000\149\000\060\000\000\000\000\000\045\000\045\000\000\000\ + \114\000\114\000\182\000\000\000\000\000\000\000\093\000\092\000\ + \003\000\000\000\060\000\000\000\113\000\114\000\113\000\112\000\ + \112\000\000\000\114\000\005\000\105\000\000\000\000\000\000\000\ + \000\000\036\000\000\000\000\000\000\000\000\000\000\000\105\000\ + \105\000\000\000\000\000\092\000\000\000\000\000\000\000\000\000\ + \107\000\105\000\060\000\115\000\045\000\060\000\000\000\000\000\ + \114\000\000\000\109\000\005\000\106\000\000\000\105\000\105\000\ + \105\000\037\000\105\000\035\000\046\000\046\000\046\000\046\000\ + \046\000\046\000\046\000\046\000\046\000\046\000\000\000\003\000\ + \000\000\000\000\003\000\009\000\009\000\060\000\113\000\085\000\ + \003\000\003\000\000\000\003\000\009\000\009\000\000\000\092\000\ + \105\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \087\000\000\000\089\000\006\000\006\000\003\000\088\000\000\000\ + \000\000\000\000\000\000\046\000\000\000\000\000\000\000\000\000\ + \003\000\000\000\000\000\003\000\003\000\003\000\106\000\092\000\ + \084\000\003\000\003\000\000\000\003\000\003\000\003\000\000\000\ + \000\000\000\000\003\000\085\000\009\000\000\000\000\000\000\000\ + \000\000\003\000\000\000\003\000\003\000\003\000\003\000\003\000\ + \049\000\049\000\049\000\049\000\049\000\049\000\049\000\049\000\ + \049\000\049\000\000\000\061\000\032\000\139\000\061\000\000\000\ + \000\000\000\000\086\000\085\000\003\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\003\000\000\000\003\000\000\000\000\000\ + \101\000\098\000\061\000\062\000\097\000\000\000\062\000\065\000\ + \065\000\000\000\060\000\000\000\066\000\062\000\000\000\062\000\ + \065\000\065\000\136\000\000\000\000\000\135\000\128\000\101\000\ + \000\000\100\000\000\000\003\000\064\000\003\000\063\000\063\000\ + \063\000\062\000\065\000\039\000\000\000\022\000\022\000\022\000\ + \022\000\022\000\022\000\022\000\022\000\022\000\022\000\137\000\ + \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ + \143\000\143\000\038\000\000\000\000\000\060\000\062\000\000\000\ + \065\000\036\000\000\000\000\000\039\000\000\000\022\000\022\000\ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ - \041\000\041\000\095\000\000\000\000\000\105\000\000\000\000\000\ - \067\000\041\000\041\000\041\000\041\000\041\000\041\000\047\000\ - \047\000\047\000\047\000\047\000\047\000\047\000\047\000\047\000\ - \047\000\000\000\028\000\000\000\000\000\000\000\000\000\067\000\ + \000\000\000\000\000\000\000\000\022\000\000\000\000\000\000\000\ + \040\000\000\000\038\000\038\000\000\000\060\000\064\000\000\000\ + \062\000\037\000\036\000\035\000\133\000\041\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\042\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\022\000\000\000\000\000\ + \040\000\000\000\000\000\038\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\037\000\000\000\035\000\041\000\024\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\042\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\000\000\000\000\000\000\000\000\024\000\000\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\043\000\043\000\043\000\043\000\043\000\043\000\ + \043\000\043\000\043\000\043\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\096\000\043\000\043\000\043\000\043\000\043\000\ + \043\000\000\000\000\000\000\000\000\000\000\000\000\000\255\255\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\041\000\041\000\041\000\041\000\041\000\041\000\066\000\ - \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ - \066\000\000\000\000\000\000\000\000\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\106\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\023\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\255\255\ - \000\000\000\000\000\000\000\000\000\000\000\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \000\000\000\000\000\000\000\000\023\000\000\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ - \041\000\041\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\041\000\041\000\041\000\041\000\041\000\041\000\000\000\ - \000\000\000\000\000\000\000\000\034\000\100\000\100\000\100\000\ - \100\000\100\000\100\000\100\000\100\000\100\000\100\000\000\000\ - \000\000\000\000\030\000\000\000\000\000\140\000\000\000\041\000\ - \096\000\041\000\041\000\041\000\041\000\041\000\041\000\000\000\ - \000\000\000\000\000\000\000\000\035\000\000\000\033\000\000\000\ - \000\000\000\000\000\000\000\000\028\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\139\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\000\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\004\000\000\000\000\000\ - \004\000\004\000\004\000\000\000\000\000\000\000\004\000\004\000\ - \000\000\004\000\004\000\004\000\101\000\101\000\101\000\101\000\ - \101\000\101\000\101\000\101\000\101\000\101\000\004\000\000\000\ - \004\000\004\000\004\000\004\000\004\000\000\000\000\000\093\000\ - \000\000\000\000\092\000\000\000\000\000\000\000\000\000\000\000\ - \044\000\044\000\044\000\044\000\044\000\044\000\044\000\044\000\ - \044\000\044\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\004\000\031\000\094\000\031\000\031\000\031\000\ - \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ - \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ - \031\000\031\000\031\000\031\000\031\000\031\000\031\000\044\000\ - \004\000\004\000\004\000\000\000\004\000\004\000\004\000\000\000\ - \000\000\000\000\004\000\004\000\000\000\004\000\004\000\004\000\ + \000\000\096\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \255\255\000\000\000\000\043\000\043\000\043\000\043\000\043\000\ + \043\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ + \095\000\095\000\095\000\000\000\000\000\000\000\000\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\000\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\025\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\000\000\000\000\000\000\000\000\025\000\000\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\043\000\043\000\043\000\043\000\043\000\043\000\ + \043\000\043\000\043\000\043\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\043\000\043\000\043\000\043\000\043\000\ + \043\000\000\000\000\000\000\000\000\000\000\000\036\000\144\000\ + \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ + \144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\043\000\000\000\043\000\043\000\043\000\043\000\043\000\ + \043\000\000\000\000\000\000\000\000\000\000\000\037\000\000\000\ + \035\000\000\000\000\000\000\000\000\000\000\000\000\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\000\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\000\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\003\000\ + \000\000\000\000\003\000\003\000\003\000\000\000\000\000\000\000\ + \003\000\003\000\000\000\003\000\003\000\003\000\155\000\155\000\ + \155\000\155\000\155\000\155\000\155\000\155\000\155\000\155\000\ + \003\000\000\000\003\000\003\000\003\000\003\000\003\000\034\000\ + \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ + \034\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\090\000\004\000\000\000\004\000\004\000\004\000\004\000\ - \004\000\112\000\112\000\112\000\112\000\112\000\112\000\112\000\ - \112\000\112\000\112\000\032\000\032\000\032\000\032\000\032\000\ - \032\000\032\000\032\000\032\000\032\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\004\000\029\000\ - \085\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\000\000\004\000\000\000\004\000\000\000\ - \000\000\000\000\000\000\031\000\031\000\031\000\031\000\031\000\ + \000\000\000\000\003\000\000\000\003\000\033\000\000\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\000\000\003\000\003\000\003\000\000\000\003\000\003\000\ + \003\000\000\000\000\000\000\000\003\000\003\000\000\000\003\000\ + \003\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\003\000\000\000\003\000\003\000\ + \003\000\003\000\003\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\ + \003\000\031\000\000\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ - \031\000\031\000\031\000\000\000\031\000\031\000\031\000\031\000\ - \031\000\031\000\031\000\031\000\057\000\057\000\057\000\057\000\ - \057\000\057\000\057\000\057\000\057\000\057\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\057\000\057\000\057\000\ - \057\000\057\000\057\000\000\000\000\000\000\000\000\000\000\000\ + \031\000\031\000\031\000\031\000\031\000\000\000\003\000\000\000\ + \003\000\000\000\000\000\000\000\000\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\000\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\059\000\059\000\ + \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\059\000\ + \059\000\059\000\059\000\059\000\059\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\057\000\057\000\057\000\ - \057\000\057\000\057\000\000\000\000\000\255\255\000\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\030\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\000\000\000\000\000\000\000\000\029\000\ - \000\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\042\000\042\000\042\000\042\000\042\000\ - \042\000\042\000\042\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\047\000\047\000\047\000\047\000\047\000\047\000\047\000\ - \047\000\047\000\047\000\000\000\000\000\000\000\000\000\034\000\ - \000\000\000\000\047\000\047\000\047\000\047\000\047\000\047\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\042\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\035\000\ - \000\000\033\000\047\000\047\000\047\000\047\000\047\000\047\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\000\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\031\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ - \031\000\031\000\032\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\059\000\ + \059\000\059\000\059\000\059\000\059\000\000\000\000\000\000\000\ \000\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ - \031\000\031\000\031\000\000\000\000\000\000\000\000\000\031\000\ - \000\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ - \031\000\031\000\031\000\000\000\000\000\000\000\000\000\072\000\ - \069\000\000\000\000\000\068\000\000\000\000\000\000\000\000\000\ - \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ - \102\000\102\000\000\000\000\000\000\000\000\000\072\000\000\000\ - \071\000\102\000\102\000\102\000\102\000\102\000\102\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\066\000\066\000\ - \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\102\000\102\000\102\000\102\000\102\000\102\000\000\000\ + \031\000\031\000\031\000\031\000\032\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\031\000\031\000\031\000\031\000\031\000\ + \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ + \031\000\031\000\031\000\031\000\031\000\000\000\000\000\000\000\ + \000\000\031\000\000\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ - \031\000\031\000\031\000\031\000\031\000\031\000\031\000\000\000\ + \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ + \031\000\031\000\031\000\031\000\031\000\044\000\044\000\044\000\ + \044\000\044\000\044\000\044\000\044\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\049\000\049\000\049\000\049\000\049\000\ + \049\000\049\000\049\000\049\000\049\000\000\000\000\000\000\000\ + \000\000\036\000\000\000\000\000\049\000\049\000\049\000\049\000\ + \049\000\049\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\044\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\037\000\000\000\035\000\049\000\049\000\049\000\049\000\ + \049\000\049\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ + \031\000\000\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ - \031\000\031\000\031\000\031\000\031\000\031\000\031\000\000\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ - \055\000\004\000\055\000\000\000\004\000\004\000\004\000\055\000\ - \000\000\000\000\004\000\004\000\000\000\004\000\004\000\004\000\ - \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ - \054\000\054\000\004\000\000\000\004\000\004\000\004\000\004\000\ - \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \004\000\000\000\000\000\004\000\004\000\004\000\000\000\000\000\ - \000\000\004\000\004\000\000\000\004\000\004\000\004\000\000\000\ - \000\000\000\000\000\000\000\000\055\000\000\000\004\000\000\000\ - \000\000\004\000\055\000\004\000\004\000\004\000\004\000\004\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\055\000\000\000\ - \000\000\000\000\055\000\000\000\055\000\000\000\004\000\000\000\ - \053\000\004\000\004\000\004\000\004\000\000\000\004\000\004\000\ - \004\000\000\000\004\000\004\000\004\000\004\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\ - \000\000\004\000\004\000\064\000\004\000\004\000\255\255\000\000\ - \000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\ - \004\000\004\000\004\000\004\000\000\000\004\000\004\000\004\000\ - \000\000\004\000\004\000\004\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\004\000\000\000\000\000\004\000\000\000\ - \004\000\004\000\065\000\004\000\004\000\000\000\000\000\000\000\ - \004\000\000\000\000\000\004\000\004\000\004\000\000\000\000\000\ - \000\000\004\000\004\000\000\000\004\000\004\000\004\000\000\000\ - \000\000\004\000\000\000\004\000\000\000\000\000\000\000\000\000\ - \000\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ - \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ - \103\000\103\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\103\000\103\000\103\000\103\000\103\000\103\000\000\000\ - \004\000\000\000\004\000\000\000\000\000\004\000\000\000\000\000\ - \255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ + \031\000\033\000\031\000\031\000\031\000\031\000\031\000\031\000\ + \031\000\031\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\034\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\000\000\000\000\000\000\ + \000\000\033\000\000\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\101\000\098\000\000\000\ + \000\000\097\000\000\000\000\000\000\000\000\000\145\000\145\000\ + \145\000\145\000\145\000\145\000\145\000\145\000\145\000\145\000\ + \000\000\000\000\000\000\000\000\101\000\000\000\100\000\145\000\ + \145\000\145\000\145\000\145\000\145\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\095\000\095\000\095\000\095\000\ + \095\000\095\000\095\000\095\000\095\000\095\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\145\000\ + \145\000\145\000\145\000\145\000\145\000\000\000\000\000\000\000\ + \000\000\000\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\000\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\000\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\057\000\000\000\057\000\000\000\000\000\068\000\ + \068\000\057\000\060\000\000\000\000\000\000\000\000\000\000\000\ + \068\000\068\000\056\000\056\000\056\000\056\000\056\000\056\000\ + \056\000\056\000\056\000\056\000\060\000\000\000\060\000\060\000\ + \060\000\000\000\068\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\094\000\094\000\ + \000\000\000\000\085\000\000\000\000\000\000\000\000\000\094\000\ + \094\000\000\000\000\000\000\000\000\000\060\000\057\000\000\000\ + \068\000\000\000\000\000\085\000\057\000\085\000\085\000\085\000\ + \061\000\094\000\000\000\061\000\000\000\000\000\000\000\000\000\ + \057\000\000\000\000\000\000\000\057\000\000\000\057\000\000\000\ + \000\000\000\000\055\000\000\000\000\000\060\000\060\000\061\000\ + \079\000\000\000\000\000\079\000\079\000\079\000\085\000\094\000\ + \000\000\080\000\079\000\000\000\079\000\079\000\079\000\000\000\ + \069\000\000\000\000\000\069\000\255\255\000\000\000\000\000\000\ + \000\000\079\000\000\000\079\000\079\000\079\000\079\000\079\000\ + \000\000\000\000\000\000\000\000\000\000\085\000\085\000\069\000\ + \070\000\000\000\000\000\070\000\070\000\070\000\000\000\000\000\ + \073\000\072\000\070\000\000\000\070\000\070\000\070\000\000\000\ + \000\000\000\000\000\000\079\000\000\000\079\000\000\000\000\000\ + \000\000\070\000\000\000\070\000\070\000\070\000\070\000\070\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\103\000\103\000\103\000\103\000\103\000\103\000\000\000\ - \000\000\000\000\000\000\004\000\000\000\004\000\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\114\000\ - \255\255\255\255\114\000\114\000\114\000\000\000\255\255\255\255\ - \114\000\114\000\255\255\114\000\114\000\114\000\113\000\113\000\ - \113\000\113\000\113\000\113\000\113\000\113\000\113\000\113\000\ - \114\000\255\255\114\000\114\000\114\000\114\000\114\000\113\000\ - \113\000\113\000\113\000\113\000\113\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\069\000\000\000\000\000\069\000\000\000\ + \000\000\000\000\000\000\079\000\000\000\079\000\000\000\000\000\ + \000\000\000\000\000\000\070\000\000\000\070\000\000\000\000\000\ + \000\000\000\000\069\000\070\000\000\000\000\000\070\000\071\000\ + \071\000\000\000\060\000\073\000\072\000\070\000\000\000\070\000\ + \071\000\071\000\069\000\000\000\000\000\069\000\000\000\000\000\ + \000\000\000\000\255\255\070\000\078\000\070\000\078\000\078\000\ + \078\000\070\000\071\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\069\000\070\000\000\000\000\000\070\000\077\000\077\000\ + \000\000\060\000\073\000\072\000\070\000\000\000\070\000\077\000\ + \077\000\000\000\000\000\000\000\000\000\060\000\070\000\000\000\ + \071\000\000\000\000\000\076\000\000\000\076\000\076\000\076\000\ + \070\000\077\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\069\000\000\000\000\000\ + \069\000\000\000\000\000\000\000\000\000\060\000\078\000\000\000\ + \070\000\000\000\000\000\000\000\060\000\070\000\000\000\077\000\ + \000\000\000\000\000\000\000\000\069\000\070\000\000\000\000\000\ + \070\000\071\000\071\000\000\000\068\000\073\000\072\000\070\000\ + \000\000\070\000\071\000\071\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\060\000\076\000\071\000\070\000\ + \071\000\071\000\071\000\070\000\071\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\068\000\068\000\ + \000\000\068\000\000\000\000\000\000\000\000\000\000\000\068\000\ + \068\000\000\000\000\000\000\000\000\000\000\000\000\000\068\000\ + \070\000\000\000\071\000\068\000\000\000\068\000\068\000\068\000\ + \000\000\068\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\069\000\000\000\000\000\ + \069\000\000\000\000\000\000\000\000\000\000\000\000\000\068\000\ + \071\000\000\000\070\000\000\000\068\000\000\000\000\000\068\000\ + \000\000\000\000\000\000\000\000\069\000\070\000\000\000\000\000\ + \070\000\070\000\070\000\000\000\000\000\074\000\072\000\070\000\ + \000\000\070\000\070\000\070\000\069\000\000\000\000\000\069\000\ + \000\000\000\000\000\000\000\000\068\000\068\000\070\000\000\000\ + \070\000\070\000\070\000\070\000\070\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\069\000\070\000\000\000\000\000\070\000\ + \071\000\071\000\000\000\068\000\074\000\072\000\070\000\000\000\ + \070\000\071\000\071\000\000\000\000\000\000\000\000\000\000\000\ + \070\000\000\000\070\000\000\000\000\000\071\000\000\000\071\000\ + \071\000\071\000\070\000\071\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\069\000\ + \000\000\000\000\069\000\000\000\000\000\000\000\000\000\000\000\ + \070\000\000\000\070\000\000\000\000\000\000\000\068\000\070\000\ + \000\000\071\000\000\000\000\000\000\000\000\000\069\000\070\000\ + \000\000\000\000\070\000\070\000\070\000\000\000\000\000\000\000\ + \072\000\070\000\000\000\070\000\070\000\070\000\069\000\000\000\ + \000\000\069\000\000\000\000\000\000\000\000\000\068\000\071\000\ + \070\000\070\000\070\000\070\000\070\000\070\000\070\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\069\000\070\000\000\000\ + \000\000\070\000\077\000\077\000\000\000\060\000\074\000\072\000\ + \070\000\000\000\070\000\077\000\077\000\000\000\000\000\000\000\ + \000\000\000\000\070\000\000\000\070\000\000\000\000\000\076\000\ + \000\000\076\000\076\000\076\000\070\000\077\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\069\000\000\000\000\000\069\000\000\000\000\000\000\000\ + \000\000\000\000\070\000\000\000\070\000\000\000\000\000\000\000\ + \060\000\070\000\000\000\077\000\000\000\000\000\000\000\000\000\ + \069\000\070\000\000\000\000\000\070\000\077\000\077\000\000\000\ + \068\000\074\000\072\000\070\000\000\000\070\000\077\000\077\000\ + \069\000\000\000\000\000\069\000\000\000\000\000\000\000\000\000\ + \060\000\076\000\077\000\070\000\077\000\077\000\077\000\070\000\ + \077\000\000\000\000\000\000\000\000\000\000\000\000\000\069\000\ + \070\000\000\000\000\000\070\000\071\000\071\000\000\000\060\000\ + \074\000\072\000\070\000\000\000\070\000\071\000\071\000\000\000\ + \000\000\000\000\000\000\068\000\070\000\000\000\077\000\000\000\ + \000\000\078\000\000\000\078\000\078\000\078\000\070\000\071\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\255\255\255\255\255\255\114\000\000\000\255\255\113\000\ - \113\000\113\000\113\000\113\000\113\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\081\000\000\000\000\000\081\000\000\000\ + \000\000\000\000\000\000\068\000\077\000\000\000\070\000\000\000\ + \000\000\000\000\060\000\070\000\000\000\071\000\000\000\000\000\ + \000\000\000\000\081\000\079\000\000\000\000\000\079\000\079\000\ + \079\000\000\000\000\000\083\000\080\000\079\000\000\000\079\000\ + \079\000\079\000\081\000\000\000\000\000\081\000\000\000\000\000\ + \000\000\000\000\060\000\078\000\079\000\070\000\079\000\079\000\ + \079\000\079\000\079\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\081\000\079\000\000\000\000\000\079\000\079\000\079\000\ + \000\000\000\000\000\000\080\000\079\000\000\000\079\000\079\000\ + \079\000\000\000\000\000\000\000\000\000\000\000\079\000\000\000\ + \079\000\000\000\000\000\079\000\000\000\079\000\079\000\079\000\ + \079\000\079\000\000\000\000\000\000\000\003\000\000\000\000\000\ + \003\000\009\000\009\000\000\000\000\000\005\000\003\000\003\000\ + \000\000\003\000\009\000\009\000\000\000\000\000\079\000\000\000\ + \079\000\000\000\000\000\000\000\000\000\079\000\086\000\079\000\ + \006\000\006\000\006\000\003\000\009\000\000\000\000\000\000\000\ + \000\000\000\000\003\000\000\000\000\000\003\000\009\000\009\000\ + \000\000\000\000\005\000\003\000\003\000\000\000\003\000\009\000\ + \009\000\000\000\000\000\000\000\000\000\079\000\000\000\079\000\ + \003\000\085\000\009\000\086\000\000\000\006\000\006\000\006\000\ + \003\000\009\000\000\000\000\000\000\000\000\000\000\000\003\000\ + \000\000\000\000\003\000\009\000\009\000\000\000\000\000\092\000\ + \003\000\003\000\000\000\003\000\009\000\009\000\000\000\000\000\ + \086\000\005\000\003\000\000\000\000\000\003\000\085\000\009\000\ + \093\000\000\000\009\000\009\000\009\000\003\000\009\000\000\000\ + \000\000\000\000\000\000\000\000\003\000\000\000\000\000\003\000\ + \009\000\009\000\000\000\000\000\085\000\003\000\003\000\000\000\ + \003\000\009\000\009\000\000\000\000\000\086\000\005\000\003\000\ + \000\000\000\000\003\000\092\000\009\000\086\000\000\000\006\000\ + \006\000\090\000\003\000\009\000\000\000\000\000\000\000\000\000\ + \000\000\003\000\000\000\000\000\003\000\009\000\009\000\000\000\ + \000\000\085\000\003\000\003\000\000\000\003\000\009\000\009\000\ + \000\000\000\000\093\000\092\000\003\000\000\000\000\000\003\000\ + \085\000\009\000\086\000\000\000\006\000\006\000\091\000\003\000\ + \009\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\ + \000\000\003\000\009\000\009\000\000\000\000\000\085\000\003\000\ + \003\000\000\000\003\000\009\000\009\000\000\000\000\000\086\000\ + \085\000\003\000\000\000\000\000\003\000\085\000\009\000\086\000\ + \000\000\006\000\006\000\006\000\003\000\009\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\094\000\ + \094\000\000\000\000\000\092\000\000\000\000\000\000\000\000\000\ + \094\000\094\000\000\000\000\000\086\000\085\000\003\000\000\000\ + \000\000\003\000\085\000\009\000\094\000\000\000\094\000\094\000\ + \094\000\000\000\094\000\000\000\000\000\000\000\000\000\000\000\ + \003\000\000\000\000\000\003\000\009\000\009\000\000\000\000\000\ + \092\000\003\000\003\000\000\000\003\000\009\000\009\000\000\000\ + \000\000\086\000\085\000\003\000\000\000\000\000\000\000\092\000\ + \094\000\093\000\000\000\009\000\009\000\009\000\003\000\009\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\094\000\094\000\000\000\000\000\092\000\000\000\000\000\ + \105\000\105\000\094\000\094\000\092\000\000\000\094\000\092\000\ + \000\000\105\000\105\000\003\000\092\000\009\000\094\000\000\000\ + \094\000\094\000\094\000\000\000\094\000\106\000\000\000\105\000\ + \105\000\105\000\000\000\105\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\105\000\105\000\000\000\ + \000\000\092\000\000\000\093\000\092\000\003\000\105\000\105\000\ + \000\000\092\000\094\000\000\000\000\000\000\000\000\000\000\000\ + \092\000\105\000\106\000\000\000\105\000\105\000\105\000\000\000\ + \105\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\105\000\105\000\000\000\000\000\092\000\000\000\ + \094\000\092\000\000\000\105\000\105\000\000\000\000\000\106\000\ + \092\000\000\000\000\000\000\000\000\000\092\000\105\000\106\000\ + \000\000\105\000\105\000\105\000\000\000\105\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\105\000\ + \105\000\000\000\000\000\085\000\000\000\000\000\105\000\105\000\ + \105\000\105\000\005\000\000\000\106\000\092\000\000\000\105\000\ + \105\000\000\000\092\000\105\000\109\000\000\000\108\000\108\000\ + \108\000\000\000\105\000\109\000\000\000\108\000\108\000\108\000\ + \000\000\105\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\105\000\105\000\000\000\000\000\085\000\ + \000\000\106\000\092\000\000\000\105\000\105\000\000\000\085\000\ + \105\000\000\000\000\000\000\000\000\000\000\000\085\000\105\000\ + \109\000\000\000\108\000\108\000\108\000\000\000\105\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\255\255\114\000\255\255\114\000\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\080\000\080\000\ - \080\000\080\000\080\000\080\000\080\000\080\000\080\000\080\000\ - \051\000\000\000\000\000\078\000\000\000\000\000\000\000\080\000\ - \080\000\080\000\080\000\080\000\080\000\255\255\000\000\000\000\ + \105\000\105\000\000\000\000\000\005\000\000\000\109\000\085\000\ + \000\000\105\000\105\000\000\000\000\000\109\000\005\000\000\000\ + \000\000\000\000\000\000\085\000\105\000\109\000\000\000\108\000\ + \108\000\108\000\000\000\105\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\114\000\114\000\000\000\ + \060\000\000\000\000\000\000\000\000\000\000\000\114\000\114\000\ + \000\000\000\000\109\000\085\000\000\000\000\000\000\000\000\000\ + \085\000\105\000\112\000\000\000\113\000\112\000\112\000\000\000\ + \114\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \114\000\114\000\000\000\060\000\000\000\000\000\000\000\000\000\ + \000\000\114\000\114\000\000\000\000\000\000\000\000\000\109\000\ + \005\000\000\000\000\000\060\000\000\000\112\000\114\000\113\000\ + \112\000\112\000\000\000\114\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\114\000\114\000\000\000\068\000\000\000\ + \116\000\116\000\000\000\060\000\114\000\114\000\000\000\000\000\ + \000\000\116\000\116\000\060\000\112\000\000\000\060\000\000\000\ + \114\000\114\000\114\000\114\000\114\000\115\000\114\000\115\000\ + \115\000\115\000\000\000\116\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\116\000\116\000\000\000\068\000\000\000\ + \000\000\000\000\000\000\000\000\116\000\116\000\060\000\112\000\ + \000\000\068\000\000\000\000\000\114\000\000\000\060\000\000\000\ + \116\000\116\000\116\000\116\000\116\000\000\000\116\000\000\000\ + \000\000\000\000\003\000\000\000\000\000\003\000\118\000\118\000\ + \000\000\000\000\005\000\003\000\003\000\000\000\003\000\118\000\ + \118\000\068\000\114\000\000\000\000\000\000\000\060\000\115\000\ + \000\000\068\000\000\000\117\000\116\000\007\000\007\000\007\000\ + \003\000\118\000\000\000\000\000\000\000\000\000\000\000\003\000\ + \000\000\000\000\003\000\118\000\118\000\000\000\000\000\092\000\ + \003\000\003\000\000\000\003\000\118\000\118\000\000\000\000\000\ + \000\000\068\000\116\000\000\000\000\000\003\000\005\000\118\000\ + \119\000\000\000\118\000\118\000\118\000\003\000\118\000\000\000\ + \000\000\000\000\000\000\000\000\003\000\000\000\000\000\003\000\ + \118\000\118\000\000\000\000\000\092\000\003\000\003\000\000\000\ + \003\000\118\000\118\000\000\000\000\000\117\000\005\000\003\000\ + \000\000\000\000\003\000\092\000\118\000\119\000\000\000\118\000\ + \118\000\118\000\003\000\118\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\053\000\000\000\000\000\121\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \080\000\000\000\000\000\000\000\000\000\079\000\084\000\000\000\ - \083\000\000\000\000\000\000\000\000\000\000\000\000\000\080\000\ - \080\000\080\000\080\000\080\000\080\000\255\255\000\000\000\000\ - \000\000\000\000\082\000\000\000\000\000\000\000\255\255\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\000\000\000\000\000\000\000\000\081\000\000\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\119\000\092\000\003\000\000\000\000\000\003\000\ + \092\000\118\000\000\000\123\000\000\000\000\000\000\000\000\000\ + \122\000\127\000\000\000\126\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\125\000\000\000\119\000\ + \092\000\003\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\000\000\000\000\000\000\000\000\ + \124\000\000\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\146\000\146\000\146\000\146\000\ + \146\000\146\000\146\000\146\000\146\000\146\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\146\000\146\000\146\000\ + \146\000\146\000\146\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\146\000\146\000\146\000\ + \146\000\146\000\146\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \000\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \000\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\052\000\124\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\000\000\000\000\ + \000\000\000\000\124\000\000\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\000\000\000\000\ + \000\000\000\000\132\000\000\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\000\000\000\000\ + \000\000\000\000\000\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\000\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\000\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\000\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\000\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\000\000\000\000\000\000\ + \000\000\131\000\000\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\156\000\156\000\156\000\ + \156\000\156\000\156\000\156\000\156\000\156\000\156\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\156\000\156\000\ + \156\000\156\000\156\000\156\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\156\000\156\000\ + \156\000\156\000\156\000\156\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\000\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\000\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\050\000\081\000\ + \000\000\000\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\000\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\000\000\000\000\032\000\000\000\ + \000\000\000\000\129\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\000\000\000\000\000\000\ + \000\000\131\000\000\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\123\000\123\000\123\000\ + \123\000\123\000\123\000\123\000\123\000\123\000\123\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\123\000\123\000\ + \123\000\123\000\123\000\123\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\000\000\000\000\000\000\000\000\081\000\ - \000\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\000\000\000\000\000\000\000\000\089\000\ - \000\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\000\000\000\000\000\000\000\000\000\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\000\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\000\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\000\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\000\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\000\000\000\000\000\000\000\000\088\000\000\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\123\000\123\000\ + \123\000\123\000\123\000\123\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\000\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\132\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\000\000\000\000\032\000\000\000\ + \000\000\000\000\000\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\000\000\000\000\000\000\ + \000\000\132\000\000\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\000\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\000\000\000\000\030\000\000\000\000\000\000\000\086\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\000\000\000\000\000\000\000\000\088\000\000\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\000\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\000\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\142\000\000\000\142\000\000\000\000\000\154\000\ + \000\000\142\000\153\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\141\000\141\000\141\000\141\000\141\000\141\000\ + \141\000\141\000\141\000\141\000\000\000\032\000\000\000\032\000\ + \000\000\000\000\000\000\000\000\032\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\152\000\152\000\152\000\ + \152\000\152\000\152\000\152\000\152\000\152\000\152\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\142\000\000\000\ + \000\000\000\000\000\000\000\000\142\000\157\000\000\000\000\000\ + \157\000\157\000\157\000\000\000\000\000\000\000\157\000\157\000\ + \142\000\157\000\157\000\157\000\142\000\000\000\142\000\000\000\ + \000\000\032\000\140\000\000\000\000\000\000\000\157\000\032\000\ + \157\000\157\000\157\000\157\000\157\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\032\000\000\000\000\000\000\000\032\000\ + \000\000\032\000\000\000\000\000\000\000\151\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \157\000\000\000\157\000\000\000\000\000\000\000\000\000\000\000\ + \159\000\000\000\000\000\159\000\159\000\159\000\000\000\000\000\ + \000\000\159\000\159\000\000\000\159\000\159\000\159\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \157\000\159\000\157\000\159\000\159\000\159\000\159\000\159\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\000\000\159\000\000\000\159\000\160\000\000\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\000\000\159\000\000\000\159\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\000\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\089\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\000\000\000\000\030\000\000\000\000\000\000\000\000\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\000\000\000\000\000\000\000\000\089\000\000\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\255\255\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\000\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\000\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\159\000\ + \000\000\000\000\159\000\159\000\159\000\000\000\000\000\000\000\ + \159\000\159\000\000\000\159\000\159\000\159\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \159\000\000\000\159\000\159\000\159\000\159\000\159\000\000\000\ + \000\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\000\000\000\000\ + \030\000\000\000\159\000\000\000\159\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\000\000\ + \000\000\000\000\159\000\160\000\159\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\000\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\000\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\099\000\ - \000\000\099\000\000\000\000\000\111\000\000\000\099\000\110\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\098\000\ - \098\000\098\000\098\000\098\000\098\000\098\000\098\000\098\000\ - \098\000\000\000\030\000\000\000\030\000\000\000\000\000\000\000\ - \000\000\030\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\109\000\109\000\109\000\109\000\109\000\109\000\ - \109\000\109\000\109\000\109\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\099\000\000\000\000\000\000\000\000\000\ - \000\000\099\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\099\000\000\000\000\000\ - \000\000\099\000\000\000\099\000\000\000\000\000\030\000\097\000\ - \000\000\000\000\000\000\000\000\030\000\116\000\000\000\000\000\ - \116\000\116\000\116\000\000\000\000\000\000\000\116\000\116\000\ - \030\000\116\000\116\000\116\000\030\000\000\000\030\000\000\000\ - \000\000\000\000\108\000\000\000\000\000\000\000\116\000\000\000\ - \116\000\116\000\116\000\116\000\116\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\000\000\ - \000\000\000\000\116\000\117\000\000\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\000\000\ - \116\000\000\000\116\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\000\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\000\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\162\000\000\000\000\000\162\000\ + \162\000\162\000\000\000\000\000\000\000\162\000\162\000\000\000\ + \162\000\162\000\162\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\162\000\000\000\162\000\ + \162\000\162\000\162\000\162\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\000\000\162\000\ + \000\000\162\000\163\000\000\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\000\000\162\000\ + \000\000\162\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\255\255\000\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\000\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\000\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\116\000\000\000\000\000\116\000\ - \116\000\116\000\000\000\000\000\000\000\116\000\116\000\000\000\ - \116\000\116\000\116\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\116\000\000\000\116\000\ - \116\000\116\000\116\000\116\000\000\000\000\000\000\000\000\000\ - \117\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\000\000\000\000\028\000\000\000\000\000\ - \000\000\116\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\000\000\000\000\000\000\116\000\ - \117\000\116\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\000\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\000\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\162\000\000\000\000\000\162\000\162\000\ + \162\000\000\000\000\000\000\000\162\000\162\000\000\000\162\000\ + \162\000\162\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\162\000\000\000\162\000\162\000\ + \162\000\162\000\162\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\163\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\000\000\162\000\030\000\ + \162\000\000\000\000\000\164\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\162\000\000\000\ + \162\000\000\000\163\000\000\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\000\000\000\000\ + \000\000\000\000\165\000\000\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\000\000\000\000\ + \000\000\000\000\000\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\000\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\000\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\000\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\000\000\000\000\166\000\ + \000\000\000\000\000\000\000\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\000\000\000\000\ + \000\000\000\000\165\000\000\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\000\000\000\000\ + \000\000\000\000\174\000\000\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\000\000\000\000\ + \000\000\000\000\000\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\000\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\000\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\000\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\000\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\000\000\000\000\000\000\ + \000\000\173\000\000\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \000\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \000\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\119\000\000\000\000\000\119\000\119\000\119\000\000\000\ - \000\000\000\000\119\000\119\000\000\000\119\000\119\000\119\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\119\000\000\000\119\000\119\000\119\000\119\000\ - \119\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\000\000\000\000\000\000\119\000\120\000\ - \000\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\000\000\119\000\000\000\119\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\000\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\000\000\000\000\030\000\000\000\ + \000\000\000\000\171\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\000\000\000\000\000\000\ + \000\000\173\000\000\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\000\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\000\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \119\000\000\000\000\000\119\000\119\000\119\000\000\000\000\000\ - \000\000\119\000\119\000\000\000\119\000\119\000\119\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\119\000\000\000\119\000\119\000\119\000\119\000\119\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\120\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\000\000\000\000\028\000\000\000\119\000\000\000\121\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\000\000\119\000\000\000\119\000\120\000\000\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\000\000\000\000\000\000\000\000\122\000\000\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\000\000\000\000\000\000\000\000\000\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\000\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\000\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\000\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\000\000\000\000\123\000\000\000\000\000\000\000\000\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\000\000\000\000\000\000\000\000\122\000\000\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\000\000\000\000\000\000\000\000\131\000\000\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\000\000\000\000\000\000\000\000\000\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\000\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\000\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\000\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\000\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\000\000\000\000\000\000\000\000\130\000\000\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\000\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\174\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\000\000\000\000\030\000\000\000\ + \000\000\000\000\000\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\000\000\000\000\000\000\ + \000\000\174\000\000\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\000\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \000\000\000\000\028\000\000\000\000\000\000\000\128\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\000\000\000\000\000\000\000\000\130\000\000\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\000\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\131\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \000\000\000\000\028\000\000\000\000\000\000\000\000\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\000\000\000\000\000\000\000\000\131\000\000\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\000\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\000\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\028\000\000\000\ - \000\000\134\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \133\000\000\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\085\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\000\000\000\000\000\000\ - \000\000\134\000\135\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\000\000\000\000\000\000\ + \000\000\000\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\000\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\000\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\030\000\000\000\000\000\177\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\176\000\000\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \128\000\000\000\000\000\000\000\000\000\000\000\000\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\000\000\000\000\000\000\000\000\177\000\178\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ @@ -3316,26 +3549,26 @@ module Struct = \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\000\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\000\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\255\255\180\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\000\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\000\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\255\255\137\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\085\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\000\000\ - \000\000\000\000\000\000\137\000\000\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\000\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\128\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\000\000\000\000\000\000\000\000\180\000\ + \000\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ @@ -3344,25 +3577,25 @@ module Struct = \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\000\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\000\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\136\000\000\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\085\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \000\000\000\000\000\000\000\000\137\000\000\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\000\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\000\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\000\000\000\000\000\000\000\000\000\000\000\000\179\000\ + \000\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\128\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\000\000\000\000\000\000\000\000\ + \180\000\000\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ @@ -3371,56 +3604,56 @@ module Struct = \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\000\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\085\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \000\000\000\000\000\000\000\000\137\000\000\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \000\000\000\000\000\000\000\000\144\000\000\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \000\000\000\000\000\000\000\000\000\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\000\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\000\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\000\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\000\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\000\000\ - \000\000\000\000\000\000\143\000\000\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\000\000\ + \000\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \000\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\128\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\000\000\000\000\000\000\000\000\ + \180\000\000\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\000\000\000\000\000\000\000\000\ + \187\000\000\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\000\000\000\000\000\000\000\000\ + \000\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \000\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \000\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \000\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \000\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\000\000\000\000\000\000\000\000\186\000\ + \000\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ @@ -3429,24 +3662,24 @@ module Struct = \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\000\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\000\000\000\000\ - \032\000\000\000\000\000\000\000\141\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\000\000\ - \000\000\000\000\000\000\143\000\000\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\000\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\000\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\000\000\000\000\034\000\000\000\000\000\000\000\ + \184\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\000\000\000\000\000\000\000\000\186\000\ + \000\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ @@ -3455,24 +3688,24 @@ module Struct = \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\000\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\144\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\000\000\000\000\ - \032\000\000\000\000\000\000\000\000\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\000\000\ - \000\000\000\000\000\000\144\000\000\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\000\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\000\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\187\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\000\000\000\000\034\000\000\000\000\000\000\000\ + \000\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\000\000\000\000\000\000\000\000\187\000\ + \000\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ @@ -3481,19 +3714,19 @@ module Struct = \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\000\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\000\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\000\000"; + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\000\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\000\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \000\000"; Lexing.lex_check = "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\000\000\000\000\027\000\000\000\000\000\068\000\074\000\ - \078\000\105\000\125\000\140\000\255\255\255\255\255\255\255\255\ + \255\255\000\000\000\000\029\000\000\000\000\000\097\000\103\000\ + \121\000\099\000\102\000\148\000\099\000\102\000\168\000\183\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ @@ -3506,678 +3739,561 @@ module Struct = \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\009\000\ - \011\000\012\000\013\000\014\000\012\000\012\000\017\000\026\000\ - \038\000\038\000\026\000\039\000\039\000\039\000\039\000\039\000\ - \039\000\039\000\039\000\047\000\049\000\010\000\055\000\010\000\ - \058\000\082\000\014\000\082\000\083\000\084\000\026\000\082\000\ - \091\000\048\000\092\000\093\000\012\000\094\000\099\000\101\000\ - \103\000\126\000\014\000\014\000\014\000\014\000\014\000\014\000\ - \014\000\014\000\014\000\014\000\045\000\045\000\045\000\045\000\ - \045\000\045\000\045\000\045\000\045\000\045\000\048\000\092\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\000\ + \016\000\028\000\040\000\040\000\028\000\020\000\049\000\038\000\ + \020\000\038\000\051\000\057\000\038\000\038\000\038\000\038\000\ + \038\000\038\000\038\000\038\000\038\000\038\000\066\000\016\000\ + \028\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ + \041\000\050\000\126\000\100\000\127\000\134\000\100\000\016\000\ + \016\000\016\000\016\000\016\000\016\000\016\000\016\000\016\000\ + \016\000\047\000\047\000\047\000\047\000\047\000\047\000\047\000\ + \047\000\047\000\047\000\100\000\136\000\137\000\050\000\142\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\255\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\004\000\003\000\003\000\004\000\004\000\004\000\ - \255\255\003\000\003\000\004\000\004\000\003\000\004\000\004\000\ - \004\000\037\000\037\000\037\000\037\000\037\000\037\000\037\000\ - \037\000\037\000\037\000\004\000\003\000\004\000\004\000\004\000\ - \004\000\004\000\036\000\255\255\036\000\255\255\037\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ - \054\000\054\000\054\000\111\000\003\000\003\000\003\000\004\000\ - \037\000\003\000\110\000\110\000\255\255\255\255\037\000\070\000\ - \073\000\255\255\070\000\073\000\133\000\255\255\136\000\127\000\ - \018\000\127\000\111\000\018\000\255\255\127\000\255\255\255\255\ - \133\000\110\000\136\000\255\255\003\000\004\000\003\000\004\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\007\000\018\000\255\255\007\000\007\000\007\000\255\255\ - \255\255\255\255\007\000\007\000\255\255\007\000\007\000\007\000\ - \255\255\071\000\255\255\255\255\071\000\139\000\124\000\139\000\ - \003\000\124\000\007\000\139\000\007\000\007\000\007\000\007\000\ - \007\000\255\255\255\255\043\000\043\000\255\255\255\255\008\000\ - \255\255\071\000\008\000\008\000\008\000\255\255\255\255\255\255\ - \008\000\008\000\255\255\008\000\008\000\008\000\255\255\255\255\ - \003\000\255\255\255\255\255\255\255\255\007\000\007\000\043\000\ - \008\000\003\000\008\000\008\000\008\000\008\000\008\000\255\255\ - \124\000\255\255\124\000\255\255\015\000\255\255\255\255\015\000\ - \015\000\015\000\043\000\255\255\255\255\015\000\015\000\255\255\ - \015\000\015\000\015\000\255\255\007\000\007\000\007\000\043\000\ - \255\255\043\000\255\255\008\000\008\000\015\000\255\255\015\000\ - \015\000\015\000\015\000\015\000\255\255\255\255\255\255\016\000\ - \255\255\255\255\016\000\016\000\016\000\255\255\255\255\016\000\ - \016\000\016\000\255\255\016\000\016\000\016\000\255\255\255\255\ - \255\255\255\255\008\000\255\255\008\000\255\255\255\255\255\255\ - \016\000\015\000\016\000\016\000\016\000\016\000\016\000\255\255\ - \255\255\020\000\255\255\020\000\020\000\020\000\020\000\020\000\ - \020\000\020\000\020\000\020\000\020\000\070\000\073\000\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\018\000\015\000\ - \020\000\015\000\255\255\255\255\016\000\255\255\255\255\020\000\ - \255\255\255\255\021\000\255\255\021\000\021\000\021\000\021\000\ - \021\000\021\000\021\000\021\000\021\000\021\000\255\255\255\255\ - \255\255\255\255\020\000\255\255\255\255\255\255\021\000\255\255\ - \020\000\021\000\016\000\255\255\016\000\255\255\255\255\020\000\ - \021\000\020\000\255\255\021\000\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\021\000\255\255\255\255\255\255\ - \072\000\072\000\255\255\021\000\072\000\255\255\021\000\255\255\ - \255\255\021\000\255\255\255\255\255\255\255\255\255\255\255\255\ - \021\000\255\255\021\000\021\000\022\000\255\255\255\255\072\000\ - \255\255\072\000\255\255\255\255\021\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\071\000\ - \255\255\255\255\255\255\255\255\124\000\255\255\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \255\255\255\255\255\255\255\255\022\000\255\255\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ - \040\000\040\000\104\000\255\255\255\255\104\000\255\255\255\255\ - \067\000\040\000\040\000\040\000\040\000\040\000\040\000\056\000\ - \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ - \056\000\255\255\104\000\255\255\255\255\255\255\255\255\067\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\040\000\040\000\040\000\040\000\040\000\040\000\067\000\ - \067\000\067\000\067\000\067\000\067\000\067\000\067\000\067\000\ - \067\000\255\255\255\255\255\255\255\255\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\104\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\023\000\022\000\022\000\022\000\ - \022\000\022\000\022\000\022\000\022\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\072\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \255\255\255\255\255\255\255\255\023\000\255\255\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ - \041\000\041\000\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\041\000\041\000\041\000\041\000\041\000\041\000\255\255\ - \255\255\255\255\255\255\255\255\041\000\098\000\098\000\098\000\ - \098\000\098\000\098\000\098\000\098\000\098\000\098\000\255\255\ - \255\255\255\255\138\000\255\255\255\255\138\000\255\255\041\000\ - \104\000\041\000\041\000\041\000\041\000\041\000\041\000\255\255\ - \255\255\255\255\255\255\255\255\041\000\255\255\041\000\255\255\ - \255\255\255\255\255\255\255\255\138\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\138\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ + \000\000\003\000\146\000\169\000\003\000\003\000\003\000\099\000\ + \102\000\255\255\003\000\003\000\135\000\003\000\003\000\003\000\ + \039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\ + \039\000\039\000\003\000\176\000\003\000\003\000\003\000\003\000\ + \003\000\069\000\005\000\005\000\069\000\039\000\005\000\176\000\ + \255\255\135\000\255\255\005\000\005\000\056\000\056\000\056\000\ + \056\000\056\000\056\000\056\000\056\000\056\000\056\000\005\000\ + \069\000\005\000\005\000\005\000\003\000\005\000\003\000\039\000\ + \125\000\069\000\125\000\255\255\006\000\039\000\125\000\006\000\ + \006\000\006\000\179\000\255\255\006\000\006\000\006\000\154\000\ + \006\000\006\000\006\000\255\255\081\000\255\255\179\000\081\000\ + \153\000\153\000\005\000\005\000\003\000\006\000\003\000\006\000\ + \006\000\006\000\006\000\006\000\255\255\255\255\154\000\255\255\ + \255\255\007\000\255\255\081\000\007\000\007\000\007\000\153\000\ + \255\255\007\000\007\000\007\000\081\000\007\000\007\000\007\000\ + \255\255\005\000\005\000\020\000\255\255\255\255\255\255\006\000\ + \006\000\006\000\007\000\255\255\007\000\007\000\007\000\007\000\ + \007\000\170\000\182\000\170\000\182\000\255\255\008\000\170\000\ + \182\000\008\000\008\000\008\000\255\255\255\255\008\000\008\000\ + \008\000\100\000\008\000\008\000\008\000\255\255\255\255\006\000\ + \006\000\006\000\255\255\255\255\007\000\007\000\007\000\008\000\ + \255\255\008\000\008\000\008\000\008\000\008\000\167\000\147\000\ + \255\255\167\000\147\000\009\000\255\255\255\255\009\000\009\000\ + \009\000\255\255\255\255\009\000\009\000\009\000\255\255\009\000\ + \009\000\009\000\255\255\255\255\007\000\007\000\007\000\147\000\ + \255\255\008\000\008\000\008\000\009\000\255\255\009\000\009\000\ + \009\000\009\000\009\000\255\255\255\255\255\255\255\255\255\255\ + \181\000\255\255\255\255\181\000\010\000\010\000\255\255\010\000\ + \167\000\255\255\167\000\013\000\013\000\010\000\010\000\013\000\ + \255\255\008\000\008\000\008\000\013\000\013\000\009\000\009\000\ + \009\000\010\000\181\000\010\000\010\000\010\000\255\255\010\000\ + \013\000\255\255\013\000\013\000\013\000\255\255\013\000\011\000\ + \011\000\147\000\011\000\255\255\255\255\045\000\045\000\255\255\ + \011\000\011\000\181\000\255\255\255\255\255\255\009\000\009\000\ + \009\000\255\255\010\000\255\255\011\000\010\000\011\000\011\000\ + \011\000\255\255\011\000\013\000\013\000\255\255\255\255\255\255\ + \255\255\045\000\255\255\255\255\255\255\255\255\255\255\014\000\ + \014\000\255\255\255\255\014\000\255\255\255\255\255\255\255\255\ + \014\000\014\000\010\000\010\000\045\000\011\000\255\255\255\255\ + \011\000\255\255\013\000\013\000\014\000\255\255\014\000\014\000\ + \014\000\045\000\014\000\045\000\046\000\046\000\046\000\046\000\ + \046\000\046\000\046\000\046\000\046\000\046\000\255\255\017\000\ + \255\255\255\255\017\000\017\000\017\000\011\000\011\000\017\000\ + \017\000\017\000\255\255\017\000\017\000\017\000\255\255\014\000\ + \014\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \017\000\255\255\017\000\017\000\017\000\017\000\017\000\255\255\ + \255\255\255\255\255\255\046\000\255\255\255\255\255\255\255\255\ + \018\000\255\255\255\255\018\000\018\000\018\000\014\000\014\000\ + \018\000\018\000\018\000\255\255\018\000\018\000\018\000\255\255\ + \255\255\255\255\017\000\017\000\017\000\255\255\255\255\255\255\ + \255\255\018\000\255\255\018\000\018\000\018\000\018\000\018\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\255\255\019\000\167\000\147\000\019\000\255\255\ + \255\255\255\255\017\000\017\000\017\000\255\255\255\255\255\255\ + \255\255\255\255\255\255\018\000\255\255\018\000\255\255\255\255\ + \101\000\101\000\019\000\019\000\101\000\255\255\019\000\019\000\ + \019\000\255\255\019\000\255\255\019\000\019\000\255\255\019\000\ + \019\000\019\000\122\000\255\255\255\255\122\000\181\000\101\000\ + \255\255\101\000\255\255\018\000\019\000\018\000\019\000\019\000\ + \019\000\019\000\019\000\022\000\255\255\022\000\022\000\022\000\ + \022\000\022\000\022\000\022\000\022\000\022\000\022\000\122\000\ + \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ + \141\000\141\000\022\000\255\255\255\255\019\000\019\000\255\255\ + \019\000\022\000\255\255\255\255\023\000\255\255\023\000\023\000\ \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\255\255\023\000\023\000\023\000\ - \023\000\023\000\023\000\023\000\023\000\024\000\255\255\255\255\ - \024\000\024\000\024\000\255\255\255\255\255\255\024\000\024\000\ - \255\255\024\000\024\000\024\000\100\000\100\000\100\000\100\000\ - \100\000\100\000\100\000\100\000\100\000\100\000\024\000\255\255\ - \024\000\024\000\024\000\024\000\024\000\255\255\255\255\079\000\ - \255\255\255\255\079\000\255\255\255\255\255\255\255\255\255\255\ - \044\000\044\000\044\000\044\000\044\000\044\000\044\000\044\000\ - \044\000\044\000\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\024\000\024\000\079\000\024\000\024\000\024\000\ + \255\255\255\255\255\255\255\255\022\000\255\255\255\255\255\255\ + \023\000\255\255\022\000\023\000\255\255\019\000\019\000\255\255\ + \019\000\022\000\023\000\022\000\122\000\023\000\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\023\000\255\255\ + \255\255\255\255\255\255\255\255\255\255\023\000\255\255\255\255\ + \023\000\255\255\255\255\023\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\023\000\255\255\023\000\023\000\024\000\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\023\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ - \024\000\024\000\024\000\024\000\024\000\024\000\024\000\044\000\ - \024\000\025\000\024\000\255\255\025\000\025\000\025\000\255\255\ - \255\255\255\255\025\000\025\000\255\255\025\000\025\000\025\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\079\000\025\000\255\255\025\000\025\000\025\000\025\000\ - \025\000\109\000\109\000\109\000\109\000\109\000\109\000\109\000\ - \109\000\109\000\109\000\112\000\112\000\112\000\112\000\112\000\ - \112\000\112\000\112\000\112\000\112\000\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\025\000\025\000\ - \138\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ - \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ - \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ - \025\000\025\000\025\000\255\255\025\000\255\255\025\000\255\255\ - \255\255\255\255\255\255\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ - \024\000\024\000\024\000\255\255\024\000\024\000\024\000\024\000\ - \024\000\024\000\024\000\024\000\053\000\053\000\053\000\053\000\ - \053\000\053\000\053\000\053\000\053\000\053\000\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\053\000\053\000\053\000\ - \053\000\053\000\053\000\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \024\000\024\000\255\255\255\255\255\255\255\255\024\000\255\255\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\042\000\042\000\042\000\042\000\042\000\042\000\ + \042\000\042\000\042\000\042\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\096\000\042\000\042\000\042\000\042\000\042\000\ + \042\000\255\255\255\255\255\255\255\255\255\255\255\255\101\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\053\000\053\000\053\000\ - \053\000\053\000\053\000\255\255\255\255\079\000\255\255\025\000\ + \255\255\096\000\255\255\255\255\255\255\255\255\255\255\255\255\ + \122\000\255\255\255\255\042\000\042\000\042\000\042\000\042\000\ + \042\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ + \096\000\096\000\096\000\255\255\255\255\255\255\255\255\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\255\255\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\025\000\024\000\ + \024\000\024\000\024\000\024\000\024\000\024\000\024\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ - \025\000\025\000\025\000\025\000\025\000\025\000\025\000\029\000\ + \025\000\025\000\255\255\255\255\255\255\255\255\025\000\255\255\ \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\255\255\255\255\255\255\255\255\255\255\ - \255\255\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\255\255\255\255\255\255\255\255\029\000\ - \255\255\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\042\000\042\000\042\000\042\000\042\000\ - \042\000\042\000\042\000\255\255\255\255\255\255\255\255\255\255\ - \255\255\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ - \057\000\057\000\057\000\255\255\255\255\255\255\255\255\042\000\ - \255\255\255\255\057\000\057\000\057\000\057\000\057\000\057\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\043\000\043\000\043\000\043\000\043\000\043\000\ + \043\000\043\000\043\000\043\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\043\000\043\000\043\000\043\000\043\000\ + \043\000\255\255\255\255\255\255\255\255\255\255\043\000\143\000\ + \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ + \143\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\043\000\255\255\043\000\043\000\043\000\043\000\043\000\ + \043\000\255\255\255\255\255\255\255\255\255\255\043\000\255\255\ + \043\000\255\255\255\255\255\255\255\255\255\255\255\255\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\255\255\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\255\255\025\000\ + \025\000\025\000\025\000\025\000\025\000\025\000\025\000\026\000\ + \255\255\255\255\026\000\026\000\026\000\255\255\255\255\255\255\ + \026\000\026\000\255\255\026\000\026\000\026\000\152\000\152\000\ + \152\000\152\000\152\000\152\000\152\000\152\000\152\000\152\000\ + \026\000\255\255\026\000\026\000\026\000\026\000\026\000\155\000\ + \155\000\155\000\155\000\155\000\155\000\155\000\155\000\155\000\ + \155\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\042\000\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\042\000\ - \255\255\042\000\057\000\057\000\057\000\057\000\057\000\057\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\255\255\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\031\000\ - \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ - \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ - \031\000\031\000\031\000\255\255\255\255\255\255\255\255\255\255\ - \255\255\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ + \255\255\255\255\026\000\255\255\026\000\026\000\255\255\026\000\ + \026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\ + \026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\ + \026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\ + \026\000\255\255\026\000\027\000\026\000\255\255\027\000\027\000\ + \027\000\255\255\255\255\255\255\027\000\027\000\255\255\027\000\ + \027\000\027\000\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\027\000\255\255\027\000\027\000\ + \027\000\027\000\027\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\027\000\255\255\ + \027\000\027\000\255\255\027\000\027\000\027\000\027\000\027\000\ + \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\ + \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\ + \027\000\027\000\027\000\027\000\027\000\255\255\027\000\255\255\ + \027\000\255\255\255\255\255\255\255\255\026\000\026\000\026\000\ + \026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\ + \026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\ + \026\000\026\000\026\000\026\000\026\000\255\255\026\000\026\000\ + \026\000\026\000\026\000\026\000\026\000\026\000\055\000\055\000\ + \055\000\055\000\055\000\055\000\055\000\055\000\055\000\055\000\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\055\000\ + \055\000\055\000\055\000\055\000\055\000\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\055\000\ + \055\000\055\000\055\000\055\000\055\000\255\255\255\255\255\255\ + \255\255\027\000\027\000\027\000\027\000\027\000\027\000\027\000\ + \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\ + \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\ + \027\000\031\000\027\000\027\000\027\000\027\000\027\000\027\000\ + \027\000\027\000\031\000\031\000\031\000\031\000\031\000\031\000\ + \031\000\031\000\031\000\031\000\031\000\255\255\255\255\255\255\ + \255\255\255\255\255\255\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ - \031\000\031\000\031\000\255\255\255\255\255\255\255\255\031\000\ - \255\255\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ + \031\000\031\000\031\000\031\000\031\000\255\255\255\255\255\255\ + \255\255\031\000\255\255\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ - \031\000\031\000\031\000\255\255\255\255\255\255\255\255\066\000\ - \066\000\255\255\255\255\066\000\255\255\255\255\255\255\255\255\ - \097\000\097\000\097\000\097\000\097\000\097\000\097\000\097\000\ - \097\000\097\000\255\255\255\255\255\255\255\255\066\000\255\255\ - \066\000\097\000\097\000\097\000\097\000\097\000\097\000\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\066\000\066\000\ - \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ + \031\000\031\000\031\000\031\000\031\000\044\000\044\000\044\000\ + \044\000\044\000\044\000\044\000\044\000\255\255\255\255\255\255\ + \255\255\255\255\255\255\059\000\059\000\059\000\059\000\059\000\ + \059\000\059\000\059\000\059\000\059\000\255\255\255\255\255\255\ + \255\255\044\000\255\255\255\255\059\000\059\000\059\000\059\000\ + \059\000\059\000\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\044\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\097\000\097\000\097\000\097\000\097\000\097\000\255\255\ - \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ + \255\255\044\000\255\255\044\000\059\000\059\000\059\000\059\000\ + \059\000\059\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ - \031\000\031\000\031\000\031\000\031\000\031\000\031\000\255\255\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ + \031\000\255\255\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ - \031\000\031\000\031\000\031\000\031\000\031\000\031\000\255\255\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ - \046\000\061\000\046\000\255\255\061\000\061\000\061\000\046\000\ - \255\255\255\255\061\000\061\000\255\255\061\000\061\000\061\000\ - \046\000\046\000\046\000\046\000\046\000\046\000\046\000\046\000\ - \046\000\046\000\061\000\255\255\061\000\061\000\061\000\061\000\ - \061\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \031\000\033\000\031\000\031\000\031\000\031\000\031\000\031\000\ + \031\000\031\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\255\255\255\255\255\255\ + \255\255\255\255\255\255\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\255\255\255\255\255\255\ + \255\255\033\000\255\255\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\095\000\095\000\255\255\ + \255\255\095\000\255\255\255\255\255\255\255\255\140\000\140\000\ + \140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\ + \255\255\255\255\255\255\255\255\095\000\255\255\095\000\140\000\ + \140\000\140\000\140\000\140\000\140\000\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\095\000\095\000\095\000\095\000\ + \095\000\095\000\095\000\095\000\095\000\095\000\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\140\000\ + \140\000\140\000\140\000\140\000\140\000\255\255\255\255\255\255\ + \255\255\255\255\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\255\255\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\255\255\033\000\033\000\033\000\033\000\033\000\033\000\ + \033\000\033\000\048\000\255\255\048\000\255\255\255\255\060\000\ + \060\000\048\000\060\000\255\255\255\255\255\255\255\255\255\255\ + \060\000\060\000\048\000\048\000\048\000\048\000\048\000\048\000\ + \048\000\048\000\048\000\048\000\060\000\255\255\060\000\060\000\ + \060\000\255\255\060\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\085\000\085\000\ + \255\255\255\255\085\000\255\255\255\255\255\255\255\255\085\000\ + \085\000\255\255\255\255\255\255\255\255\060\000\048\000\255\255\ + \060\000\255\255\255\255\085\000\048\000\085\000\085\000\085\000\ + \061\000\085\000\255\255\061\000\255\255\255\255\255\255\255\255\ + \048\000\255\255\255\255\255\255\048\000\255\255\048\000\255\255\ + \255\255\255\255\048\000\255\255\255\255\060\000\060\000\061\000\ + \061\000\255\255\255\255\061\000\061\000\061\000\085\000\085\000\ + \255\255\061\000\061\000\255\255\061\000\061\000\061\000\255\255\ + \062\000\255\255\255\255\062\000\095\000\255\255\255\255\255\255\ + \255\255\061\000\255\255\061\000\061\000\061\000\061\000\061\000\ + \255\255\255\255\255\255\255\255\255\255\085\000\085\000\062\000\ \062\000\255\255\255\255\062\000\062\000\062\000\255\255\255\255\ - \255\255\062\000\062\000\255\255\062\000\062\000\062\000\255\255\ - \255\255\255\255\255\255\255\255\046\000\255\255\061\000\255\255\ - \255\255\062\000\046\000\062\000\062\000\062\000\062\000\062\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\046\000\255\255\ - \255\255\255\255\046\000\255\255\046\000\255\255\063\000\255\255\ - \046\000\063\000\063\000\063\000\061\000\255\255\061\000\063\000\ - \063\000\255\255\063\000\063\000\063\000\062\000\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\063\000\ - \255\255\063\000\063\000\063\000\063\000\063\000\066\000\255\255\ - \255\255\255\255\255\255\255\255\255\255\064\000\255\255\255\255\ - \064\000\064\000\064\000\062\000\255\255\062\000\064\000\064\000\ - \255\255\064\000\064\000\064\000\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\063\000\255\255\255\255\064\000\255\255\ - \064\000\064\000\064\000\064\000\064\000\255\255\255\255\255\255\ - \065\000\255\255\255\255\065\000\065\000\065\000\255\255\255\255\ - \255\255\065\000\065\000\255\255\065\000\065\000\065\000\255\255\ - \255\255\063\000\255\255\063\000\255\255\255\255\255\255\255\255\ - \255\255\065\000\064\000\065\000\065\000\065\000\065\000\065\000\ - \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ - \102\000\102\000\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\102\000\102\000\102\000\102\000\102\000\102\000\255\255\ - \064\000\255\255\064\000\255\255\255\255\065\000\255\255\255\255\ - \046\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\102\000\102\000\102\000\102\000\102\000\102\000\255\255\ - \255\255\255\255\255\255\065\000\255\255\065\000\076\000\076\000\ - \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ - \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ - \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ - \076\000\076\000\076\000\076\000\076\000\076\000\076\000\114\000\ - \076\000\076\000\114\000\114\000\114\000\255\255\076\000\076\000\ - \114\000\114\000\076\000\114\000\114\000\114\000\108\000\108\000\ - \108\000\108\000\108\000\108\000\108\000\108\000\108\000\108\000\ - \114\000\076\000\114\000\114\000\114\000\114\000\114\000\108\000\ - \108\000\108\000\108\000\108\000\108\000\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \062\000\062\000\062\000\255\255\062\000\062\000\062\000\255\255\ + \255\255\255\255\255\255\061\000\255\255\061\000\255\255\255\255\ + \255\255\062\000\255\255\062\000\062\000\062\000\062\000\062\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\076\000\076\000\076\000\114\000\255\255\076\000\108\000\ - \108\000\108\000\108\000\108\000\108\000\255\255\255\255\255\255\ + \255\255\255\255\255\255\063\000\255\255\255\255\063\000\255\255\ + \255\255\255\255\255\255\061\000\255\255\061\000\255\255\255\255\ + \255\255\255\255\255\255\062\000\255\255\062\000\255\255\255\255\ + \255\255\255\255\063\000\063\000\255\255\255\255\063\000\063\000\ + \063\000\255\255\063\000\063\000\063\000\063\000\255\255\063\000\ + \063\000\063\000\064\000\255\255\255\255\064\000\255\255\255\255\ + \255\255\255\255\048\000\062\000\063\000\062\000\063\000\063\000\ + \063\000\063\000\063\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\064\000\064\000\255\255\255\255\064\000\064\000\064\000\ + \255\255\064\000\064\000\064\000\064\000\255\255\064\000\064\000\ + \064\000\255\255\255\255\255\255\255\255\063\000\063\000\255\255\ + \063\000\255\255\255\255\064\000\255\255\064\000\064\000\064\000\ + \064\000\064\000\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\065\000\255\255\255\255\ + \065\000\255\255\255\255\255\255\255\255\063\000\063\000\255\255\ + \063\000\255\255\255\255\255\255\064\000\064\000\255\255\064\000\ + \255\255\255\255\255\255\255\255\065\000\065\000\255\255\255\255\ + \065\000\065\000\065\000\255\255\065\000\065\000\065\000\065\000\ + \255\255\065\000\065\000\065\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\064\000\064\000\065\000\064\000\ + \065\000\065\000\065\000\065\000\065\000\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\068\000\068\000\ + \255\255\068\000\255\255\255\255\255\255\255\255\255\255\068\000\ + \068\000\255\255\255\255\255\255\255\255\255\255\255\255\065\000\ + \065\000\255\255\065\000\068\000\255\255\068\000\068\000\068\000\ + \255\255\068\000\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\070\000\255\255\255\255\ + \070\000\255\255\255\255\255\255\255\255\255\255\255\255\065\000\ + \065\000\255\255\065\000\255\255\068\000\255\255\255\255\068\000\ + \255\255\255\255\255\255\255\255\070\000\070\000\255\255\255\255\ + \070\000\070\000\070\000\255\255\255\255\070\000\070\000\070\000\ + \255\255\070\000\070\000\070\000\071\000\255\255\255\255\071\000\ + \255\255\255\255\255\255\255\255\068\000\068\000\070\000\255\255\ + \070\000\070\000\070\000\070\000\070\000\255\255\255\255\255\255\ + \255\255\255\255\255\255\071\000\071\000\255\255\255\255\071\000\ + \071\000\071\000\255\255\071\000\071\000\071\000\071\000\255\255\ + \071\000\071\000\071\000\255\255\255\255\255\255\255\255\255\255\ + \070\000\255\255\070\000\255\255\255\255\071\000\255\255\071\000\ + \071\000\071\000\071\000\071\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\072\000\ + \255\255\255\255\072\000\255\255\255\255\255\255\255\255\255\255\ + \070\000\255\255\070\000\255\255\255\255\255\255\071\000\071\000\ + \255\255\071\000\255\255\255\255\255\255\255\255\072\000\072\000\ + \255\255\255\255\072\000\072\000\072\000\255\255\255\255\255\255\ + \072\000\072\000\255\255\072\000\072\000\072\000\076\000\255\255\ + \255\255\076\000\255\255\255\255\255\255\255\255\071\000\071\000\ + \072\000\071\000\072\000\072\000\072\000\072\000\072\000\255\255\ + \255\255\255\255\255\255\255\255\255\255\076\000\076\000\255\255\ + \255\255\076\000\076\000\076\000\255\255\076\000\076\000\076\000\ + \076\000\255\255\076\000\076\000\076\000\255\255\255\255\255\255\ + \255\255\255\255\072\000\255\255\072\000\255\255\255\255\076\000\ + \255\255\076\000\076\000\076\000\076\000\076\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\077\000\255\255\255\255\077\000\255\255\255\255\255\255\ + \255\255\255\255\072\000\255\255\072\000\255\255\255\255\255\255\ + \076\000\076\000\255\255\076\000\255\255\255\255\255\255\255\255\ + \077\000\077\000\255\255\255\255\077\000\077\000\077\000\255\255\ + \077\000\077\000\077\000\077\000\255\255\077\000\077\000\077\000\ + \078\000\255\255\255\255\078\000\255\255\255\255\255\255\255\255\ + \076\000\076\000\077\000\076\000\077\000\077\000\077\000\077\000\ + \077\000\255\255\255\255\255\255\255\255\255\255\255\255\078\000\ + \078\000\255\255\255\255\078\000\078\000\078\000\255\255\078\000\ + \078\000\078\000\078\000\255\255\078\000\078\000\078\000\255\255\ + \255\255\255\255\255\255\077\000\077\000\255\255\077\000\255\255\ + \255\255\078\000\255\255\078\000\078\000\078\000\078\000\078\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\076\000\114\000\076\000\114\000\076\000\076\000\076\000\ - \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ - \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ - \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ - \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ - \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ - \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ - \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ - \076\000\076\000\076\000\076\000\076\000\076\000\113\000\113\000\ - \113\000\113\000\113\000\113\000\113\000\113\000\113\000\113\000\ - \077\000\255\255\255\255\077\000\255\255\255\255\255\255\113\000\ - \113\000\113\000\113\000\113\000\113\000\076\000\255\255\255\255\ + \255\255\255\255\255\255\079\000\255\255\255\255\079\000\255\255\ + \255\255\255\255\255\255\077\000\077\000\255\255\077\000\255\255\ + \255\255\255\255\078\000\078\000\255\255\078\000\255\255\255\255\ + \255\255\255\255\079\000\079\000\255\255\255\255\079\000\079\000\ + \079\000\255\255\255\255\079\000\079\000\079\000\255\255\079\000\ + \079\000\079\000\080\000\255\255\255\255\080\000\255\255\255\255\ + \255\255\255\255\078\000\078\000\079\000\078\000\079\000\079\000\ + \079\000\079\000\079\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\080\000\080\000\255\255\255\255\080\000\080\000\080\000\ + \255\255\255\255\255\255\080\000\080\000\255\255\080\000\080\000\ + \080\000\255\255\255\255\255\255\255\255\255\255\079\000\255\255\ + \079\000\255\255\255\255\080\000\255\255\080\000\080\000\080\000\ + \080\000\080\000\255\255\255\255\255\255\086\000\255\255\255\255\ + \086\000\086\000\086\000\255\255\255\255\086\000\086\000\086\000\ + \255\255\086\000\086\000\086\000\255\255\255\255\079\000\255\255\ + \079\000\255\255\255\255\255\255\255\255\080\000\086\000\080\000\ + \086\000\086\000\086\000\086\000\086\000\255\255\255\255\255\255\ + \255\255\255\255\087\000\255\255\255\255\087\000\087\000\087\000\ + \255\255\255\255\087\000\087\000\087\000\255\255\087\000\087\000\ + \087\000\255\255\255\255\255\255\255\255\080\000\255\255\080\000\ + \086\000\086\000\086\000\087\000\255\255\087\000\087\000\087\000\ + \087\000\087\000\255\255\255\255\255\255\255\255\255\255\088\000\ + \255\255\255\255\088\000\088\000\088\000\255\255\255\255\088\000\ + \088\000\088\000\255\255\088\000\088\000\088\000\255\255\255\255\ + \086\000\086\000\086\000\255\255\255\255\087\000\087\000\087\000\ + \088\000\255\255\088\000\088\000\088\000\088\000\088\000\255\255\ + \255\255\255\255\255\255\255\255\089\000\255\255\255\255\089\000\ + \089\000\089\000\255\255\255\255\089\000\089\000\089\000\255\255\ + \089\000\089\000\089\000\255\255\255\255\087\000\087\000\087\000\ + \255\255\255\255\088\000\088\000\088\000\089\000\255\255\089\000\ + \089\000\089\000\089\000\089\000\255\255\255\255\255\255\255\255\ + \255\255\090\000\255\255\255\255\090\000\090\000\090\000\255\255\ + \255\255\090\000\090\000\090\000\255\255\090\000\090\000\090\000\ + \255\255\255\255\088\000\088\000\088\000\255\255\255\255\089\000\ + \089\000\089\000\090\000\255\255\090\000\090\000\090\000\090\000\ + \090\000\255\255\255\255\255\255\255\255\255\255\091\000\255\255\ + \255\255\091\000\091\000\091\000\255\255\255\255\091\000\091\000\ + \091\000\255\255\091\000\091\000\091\000\255\255\255\255\089\000\ + \089\000\089\000\255\255\255\255\090\000\090\000\090\000\091\000\ + \255\255\091\000\091\000\091\000\091\000\091\000\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\092\000\ + \092\000\255\255\255\255\092\000\255\255\255\255\255\255\255\255\ + \092\000\092\000\255\255\255\255\090\000\090\000\090\000\255\255\ + \255\255\091\000\091\000\091\000\092\000\255\255\092\000\092\000\ + \092\000\255\255\092\000\255\255\255\255\255\255\255\255\255\255\ + \093\000\255\255\255\255\093\000\093\000\093\000\255\255\255\255\ + \093\000\093\000\093\000\255\255\093\000\093\000\093\000\255\255\ + \255\255\091\000\091\000\091\000\255\255\255\255\255\255\092\000\ + \092\000\093\000\255\255\093\000\093\000\093\000\093\000\093\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \077\000\255\255\255\255\255\255\255\255\077\000\077\000\255\255\ - \077\000\255\255\255\255\255\255\255\255\255\255\255\255\113\000\ - \113\000\113\000\113\000\113\000\113\000\076\000\255\255\255\255\ - \255\255\255\255\077\000\255\255\255\255\255\255\076\000\077\000\ - \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ - \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ - \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ - \077\000\255\255\255\255\255\255\255\255\077\000\255\255\077\000\ - \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ - \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ - \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ - \077\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\094\000\094\000\255\255\255\255\094\000\255\255\255\255\ + \105\000\105\000\094\000\094\000\105\000\255\255\092\000\092\000\ + \255\255\105\000\105\000\093\000\093\000\093\000\094\000\255\255\ + \094\000\094\000\094\000\255\255\094\000\105\000\255\255\105\000\ + \105\000\105\000\255\255\105\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\106\000\106\000\255\255\ + \255\255\106\000\255\255\093\000\093\000\093\000\106\000\106\000\ + \255\255\094\000\094\000\255\255\255\255\255\255\255\255\255\255\ + \105\000\105\000\106\000\255\255\106\000\106\000\106\000\255\255\ + \106\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\107\000\107\000\255\255\255\255\107\000\255\255\ + \094\000\094\000\255\255\107\000\107\000\255\255\255\255\105\000\ + \105\000\255\255\255\255\255\255\255\255\106\000\106\000\107\000\ + \255\255\107\000\107\000\107\000\255\255\107\000\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\108\000\ + \108\000\255\255\255\255\108\000\255\255\255\255\109\000\109\000\ + \108\000\108\000\109\000\255\255\106\000\106\000\255\255\109\000\ + \109\000\255\255\107\000\107\000\108\000\255\255\108\000\108\000\ + \108\000\255\255\108\000\109\000\255\255\109\000\109\000\109\000\ + \255\255\109\000\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\110\000\110\000\255\255\255\255\110\000\ + \255\255\107\000\107\000\255\255\110\000\110\000\255\255\108\000\ + \108\000\255\255\255\255\255\255\255\255\255\255\109\000\109\000\ + \110\000\255\255\110\000\110\000\110\000\255\255\110\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \111\000\111\000\255\255\255\255\111\000\255\255\108\000\108\000\ + \255\255\111\000\111\000\255\255\255\255\109\000\109\000\255\255\ + \255\255\255\255\255\255\110\000\110\000\111\000\255\255\111\000\ + \111\000\111\000\255\255\111\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\112\000\112\000\255\255\ + \112\000\255\255\255\255\255\255\255\255\255\255\112\000\112\000\ + \255\255\255\255\110\000\110\000\255\255\255\255\255\255\255\255\ + \111\000\111\000\112\000\255\255\112\000\112\000\112\000\255\255\ + \112\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \113\000\113\000\255\255\113\000\255\255\255\255\255\255\255\255\ + \255\255\113\000\113\000\255\255\255\255\255\255\255\255\111\000\ + \111\000\255\255\255\255\112\000\255\255\113\000\112\000\113\000\ + \113\000\113\000\255\255\113\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\114\000\114\000\255\255\114\000\255\255\ + \115\000\115\000\255\255\115\000\114\000\114\000\255\255\255\255\ + \255\255\115\000\115\000\112\000\112\000\255\255\113\000\255\255\ + \114\000\113\000\114\000\114\000\114\000\115\000\114\000\115\000\ + \115\000\115\000\255\255\115\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\116\000\116\000\255\255\116\000\255\255\ + \255\255\255\255\255\255\255\255\116\000\116\000\113\000\113\000\ + \255\255\114\000\255\255\255\255\114\000\255\255\115\000\255\255\ + \116\000\115\000\116\000\116\000\116\000\255\255\116\000\255\255\ + \255\255\255\255\117\000\255\255\255\255\117\000\117\000\117\000\ + \255\255\255\255\117\000\117\000\117\000\255\255\117\000\117\000\ + \117\000\114\000\114\000\255\255\255\255\255\255\115\000\115\000\ + \255\255\116\000\255\255\117\000\116\000\117\000\117\000\117\000\ + \117\000\117\000\255\255\255\255\255\255\255\255\255\255\118\000\ + \255\255\255\255\118\000\118\000\118\000\255\255\255\255\118\000\ + \118\000\118\000\255\255\118\000\118\000\118\000\255\255\255\255\ + \255\255\116\000\116\000\255\255\255\255\117\000\117\000\117\000\ + \118\000\255\255\118\000\118\000\118\000\118\000\118\000\255\255\ + \255\255\255\255\255\255\255\255\119\000\255\255\255\255\119\000\ + \119\000\119\000\255\255\255\255\119\000\119\000\119\000\255\255\ + \119\000\119\000\119\000\255\255\255\255\117\000\117\000\117\000\ + \255\255\255\255\118\000\118\000\118\000\119\000\255\255\119\000\ + \119\000\119\000\119\000\119\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\120\000\255\255\255\255\120\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\118\000\118\000\118\000\255\255\255\255\119\000\ + \119\000\119\000\255\255\120\000\255\255\255\255\255\255\255\255\ + \120\000\120\000\255\255\120\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\077\000\077\000\ - \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ - \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ - \077\000\077\000\077\000\077\000\077\000\255\255\077\000\077\000\ - \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ - \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ - \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ - \077\000\077\000\077\000\077\000\077\000\255\255\077\000\077\000\ - \077\000\077\000\077\000\077\000\077\000\077\000\077\000\081\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\255\255\255\255\255\255\255\255\081\000\ - \255\255\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\255\255\255\255\255\255\255\255\255\255\ - \255\255\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ - \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ - \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ - \086\000\086\000\086\000\255\255\255\255\255\255\255\255\086\000\ - \255\255\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ - \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ - \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ - \086\000\086\000\086\000\255\255\255\255\255\255\255\255\255\255\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\255\255\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\255\255\ - \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ - \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ - \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ - \086\000\086\000\086\000\086\000\086\000\086\000\086\000\255\255\ - \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ - \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ - \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ - \086\000\086\000\086\000\086\000\086\000\086\000\086\000\255\255\ - \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ - \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ - \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ - \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ - \087\000\087\000\255\255\255\255\255\255\255\255\087\000\255\255\ - \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ - \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ - \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ - \087\000\087\000\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\087\000\ - \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ - \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ - \087\000\087\000\087\000\087\000\087\000\087\000\255\255\087\000\ - \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ - \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ - \087\000\087\000\087\000\087\000\087\000\087\000\087\000\087\000\ - \087\000\087\000\087\000\087\000\087\000\087\000\088\000\087\000\ - \087\000\087\000\087\000\087\000\087\000\087\000\087\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\255\255\255\255\088\000\255\255\255\255\255\255\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\255\255\255\255\255\255\255\255\088\000\255\255\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\255\255\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\089\000\088\000\ - \088\000\088\000\088\000\088\000\088\000\088\000\088\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\255\255\255\255\089\000\255\255\255\255\255\255\255\255\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\255\255\255\255\255\255\255\255\089\000\255\255\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\255\255\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\255\255\089\000\ - \089\000\089\000\089\000\089\000\089\000\089\000\089\000\090\000\ - \255\255\090\000\255\255\255\255\106\000\255\255\090\000\106\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\090\000\ - \090\000\090\000\090\000\090\000\090\000\090\000\090\000\090\000\ - \090\000\255\255\106\000\255\255\106\000\255\255\255\255\255\255\ - \255\255\106\000\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\106\000\106\000\106\000\106\000\106\000\106\000\ - \106\000\106\000\106\000\106\000\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\090\000\255\255\255\255\255\255\255\255\ - \255\255\090\000\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\090\000\255\255\255\255\ - \255\255\090\000\255\255\090\000\255\255\255\255\106\000\090\000\ - \255\255\255\255\255\255\255\255\106\000\115\000\255\255\255\255\ - \115\000\115\000\115\000\255\255\255\255\255\255\115\000\115\000\ - \106\000\115\000\115\000\115\000\106\000\255\255\106\000\255\255\ - \255\255\255\255\106\000\255\255\255\255\255\255\115\000\255\255\ - \115\000\115\000\115\000\115\000\115\000\115\000\115\000\115\000\ - \115\000\115\000\115\000\115\000\115\000\115\000\115\000\115\000\ - \115\000\115\000\115\000\115\000\115\000\115\000\115\000\115\000\ - \115\000\115\000\115\000\115\000\115\000\115\000\115\000\255\255\ - \255\255\255\255\115\000\115\000\255\255\115\000\115\000\115\000\ - \115\000\115\000\115\000\115\000\115\000\115\000\115\000\115\000\ - \115\000\115\000\115\000\115\000\115\000\115\000\115\000\115\000\ - \115\000\115\000\115\000\115\000\115\000\115\000\115\000\255\255\ - \115\000\255\255\115\000\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\106\000\255\255\115\000\115\000\115\000\115\000\ - \115\000\115\000\115\000\115\000\115\000\115\000\115\000\115\000\ - \115\000\115\000\115\000\115\000\115\000\115\000\115\000\115\000\ - \115\000\115\000\115\000\255\255\115\000\115\000\115\000\115\000\ - \115\000\115\000\115\000\115\000\115\000\115\000\115\000\115\000\ - \115\000\115\000\115\000\115\000\115\000\115\000\115\000\115\000\ - \115\000\115\000\115\000\115\000\115\000\115\000\115\000\115\000\ - \115\000\115\000\115\000\255\255\115\000\115\000\115\000\115\000\ - \115\000\115\000\115\000\115\000\116\000\255\255\255\255\116\000\ - \116\000\116\000\255\255\255\255\255\255\116\000\116\000\255\255\ - \116\000\116\000\116\000\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\116\000\255\255\116\000\ - \116\000\116\000\116\000\116\000\255\255\255\255\255\255\255\255\ - \117\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\255\255\255\255\117\000\255\255\255\255\ - \255\255\116\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\255\255\255\255\255\255\116\000\ - \117\000\116\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \255\255\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \255\255\117\000\117\000\117\000\117\000\117\000\117\000\117\000\ - \117\000\118\000\255\255\255\255\118\000\118\000\118\000\255\255\ - \255\255\255\255\118\000\118\000\255\255\118\000\118\000\118\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\118\000\255\255\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\255\255\255\255\255\255\118\000\118\000\ - \255\255\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\255\255\118\000\255\255\118\000\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\255\255\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\255\255\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \119\000\255\255\255\255\119\000\119\000\119\000\255\255\255\255\ - \255\255\119\000\119\000\255\255\119\000\119\000\119\000\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\119\000\255\255\119\000\119\000\119\000\119\000\119\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\120\000\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\255\255\255\255\120\000\255\255\119\000\255\255\120\000\ + \255\255\255\255\255\255\255\255\255\255\120\000\255\255\119\000\ + \119\000\119\000\120\000\120\000\120\000\120\000\120\000\120\000\ \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\255\255\119\000\255\255\119\000\120\000\255\255\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ + \120\000\120\000\120\000\120\000\255\255\255\255\255\255\255\255\ + \120\000\255\255\120\000\120\000\120\000\120\000\120\000\120\000\ \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\255\255\255\255\255\255\255\255\255\255\255\255\ - \121\000\121\000\121\000\121\000\121\000\121\000\121\000\121\000\ - \121\000\121\000\121\000\121\000\121\000\121\000\121\000\121\000\ - \121\000\121\000\121\000\121\000\121\000\121\000\121\000\121\000\ - \121\000\121\000\255\255\255\255\255\255\255\255\121\000\255\255\ - \121\000\121\000\121\000\121\000\121\000\121\000\121\000\121\000\ - \121\000\121\000\121\000\121\000\121\000\121\000\121\000\121\000\ - \121\000\121\000\121\000\121\000\121\000\121\000\121\000\121\000\ - \121\000\121\000\255\255\255\255\255\255\255\255\255\255\120\000\ + \120\000\120\000\120\000\120\000\145\000\145\000\145\000\145\000\ + \145\000\145\000\145\000\145\000\145\000\145\000\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\145\000\145\000\145\000\ + \145\000\145\000\145\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\145\000\145\000\145\000\ + \145\000\145\000\145\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\255\255\120\000\ + \255\255\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\255\255\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\121\000\ - \121\000\121\000\121\000\121\000\121\000\121\000\121\000\121\000\ - \121\000\121\000\121\000\121\000\121\000\121\000\121\000\121\000\ - \121\000\121\000\121\000\121\000\121\000\121\000\255\255\121\000\ - \121\000\121\000\121\000\121\000\121\000\121\000\121\000\121\000\ - \121\000\121\000\121\000\121\000\121\000\121\000\121\000\121\000\ - \121\000\121\000\121\000\121\000\121\000\121\000\121\000\121\000\ - \121\000\121\000\121\000\121\000\121\000\121\000\122\000\121\000\ - \121\000\121\000\121\000\121\000\121\000\121\000\121\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\255\255\255\255\122\000\255\255\255\255\255\255\255\255\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\255\255\255\255\255\255\255\255\122\000\255\255\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\255\255\255\255\255\255\255\255\255\255\255\255\ - \128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\ - \128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\ - \128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\ - \128\000\128\000\255\255\255\255\255\255\255\255\128\000\255\255\ - \128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\ - \128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\ - \128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\ - \128\000\128\000\255\255\255\255\255\255\255\255\255\255\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\255\255\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\255\255\122\000\ - \122\000\122\000\122\000\122\000\122\000\122\000\122\000\128\000\ - \128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\ - \128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\ - \128\000\128\000\128\000\128\000\128\000\128\000\255\255\128\000\ - \128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\ - \128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\ - \128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\ - \128\000\128\000\128\000\128\000\128\000\128\000\255\255\128\000\ - \128\000\128\000\128\000\128\000\128\000\128\000\128\000\129\000\ - \129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\ - \129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\ + \255\255\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ + \120\000\120\000\124\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\255\255\255\255\ + \255\255\255\255\124\000\255\255\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\255\255\255\255\ + \255\255\255\255\255\255\255\255\129\000\129\000\129\000\129\000\ \129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\ - \129\000\255\255\255\255\255\255\255\255\129\000\255\255\129\000\ \129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\ + \129\000\129\000\129\000\129\000\129\000\129\000\255\255\255\255\ + \255\255\255\255\129\000\255\255\129\000\129\000\129\000\129\000\ \129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\ \129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\ - \129\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\129\000\129\000\ + \129\000\129\000\129\000\129\000\129\000\129\000\255\255\255\255\ + \255\255\255\255\255\255\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\255\255\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\255\255\124\000\124\000\124\000\124\000\124\000\ + \124\000\124\000\124\000\129\000\129\000\129\000\129\000\129\000\ \129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\ \129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\ - \129\000\129\000\129\000\129\000\129\000\255\255\129\000\129\000\ + \129\000\129\000\255\255\129\000\129\000\129\000\129\000\129\000\ \129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\ \129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\ \129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\ - \129\000\129\000\129\000\129\000\129\000\130\000\129\000\129\000\ - \129\000\129\000\129\000\129\000\129\000\129\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \255\255\255\255\130\000\255\255\255\255\255\255\130\000\130\000\ + \129\000\129\000\255\255\129\000\129\000\129\000\129\000\129\000\ + \129\000\129\000\129\000\130\000\130\000\130\000\130\000\130\000\ \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ + \130\000\130\000\130\000\130\000\130\000\255\255\255\255\255\255\ + \255\255\130\000\255\255\130\000\130\000\130\000\130\000\130\000\ \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\255\255\255\255\255\255\255\255\130\000\255\255\130\000\ \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \130\000\130\000\130\000\130\000\130\000\151\000\151\000\151\000\ + \151\000\151\000\151\000\151\000\151\000\151\000\151\000\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\151\000\151\000\ + \151\000\151\000\151\000\151\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\151\000\151\000\ + \151\000\151\000\151\000\151\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\130\000\130\000\ + \255\255\255\255\130\000\130\000\130\000\130\000\130\000\130\000\ \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\255\255\130\000\130\000\ + \130\000\255\255\130\000\130\000\130\000\130\000\130\000\130\000\ \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ \130\000\130\000\130\000\130\000\130\000\130\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\131\000\130\000\130\000\ - \130\000\130\000\130\000\130\000\130\000\130\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \255\255\255\255\131\000\255\255\255\255\255\255\255\255\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \130\000\131\000\130\000\130\000\130\000\130\000\130\000\130\000\ + \130\000\130\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\131\000\131\000\255\255\255\255\131\000\255\255\ + \255\255\255\255\131\000\131\000\131\000\131\000\131\000\131\000\ \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\255\255\255\255\255\255\255\255\131\000\255\255\131\000\ + \131\000\131\000\131\000\131\000\131\000\255\255\255\255\255\255\ + \255\255\131\000\255\255\131\000\131\000\131\000\131\000\131\000\ \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \131\000\131\000\131\000\131\000\131\000\156\000\156\000\156\000\ + \156\000\156\000\156\000\156\000\156\000\156\000\156\000\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\156\000\156\000\ + \156\000\156\000\156\000\156\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\156\000\156\000\ + \156\000\156\000\156\000\156\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\131\000\131\000\ + \255\255\255\255\131\000\131\000\131\000\131\000\131\000\131\000\ \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\255\255\131\000\131\000\ + \131\000\255\255\131\000\131\000\131\000\131\000\131\000\131\000\ \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ \131\000\131\000\131\000\131\000\131\000\131\000\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\255\255\131\000\131\000\ - \131\000\131\000\131\000\131\000\131\000\131\000\132\000\255\255\ - \255\255\132\000\255\255\255\255\255\255\255\255\255\255\255\255\ - \132\000\255\255\132\000\132\000\132\000\132\000\132\000\132\000\ - \132\000\132\000\132\000\132\000\132\000\255\255\255\255\255\255\ + \131\000\132\000\131\000\131\000\131\000\131\000\131\000\131\000\ + \131\000\131\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \132\000\132\000\132\000\132\000\255\255\255\255\132\000\255\255\ \255\255\255\255\255\255\132\000\132\000\132\000\132\000\132\000\ \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ \132\000\132\000\132\000\132\000\132\000\255\255\255\255\255\255\ - \255\255\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ + \255\255\132\000\255\255\132\000\132\000\132\000\132\000\132\000\ \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ \132\000\132\000\132\000\132\000\132\000\255\255\255\255\255\255\ @@ -4197,45 +4313,66 @@ module Struct = \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ \132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\ \132\000\255\255\132\000\132\000\132\000\132\000\132\000\132\000\ - \132\000\132\000\132\000\134\000\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\255\255\ - \255\255\255\255\255\255\255\255\255\255\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\255\255\ - \255\255\255\255\255\255\134\000\255\255\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\255\255\ + \132\000\132\000\133\000\255\255\133\000\255\255\255\255\149\000\ + \255\255\133\000\149\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\133\000\133\000\133\000\133\000\133\000\133\000\ + \133\000\133\000\133\000\133\000\255\255\149\000\255\255\149\000\ + \255\255\255\255\255\255\255\255\149\000\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\149\000\149\000\149\000\ + \149\000\149\000\149\000\149\000\149\000\149\000\149\000\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\133\000\255\255\ + \255\255\255\255\255\255\255\255\133\000\157\000\255\255\255\255\ + \157\000\157\000\157\000\255\255\255\255\255\255\157\000\157\000\ + \133\000\157\000\157\000\157\000\133\000\255\255\133\000\255\255\ + \255\255\149\000\133\000\255\255\255\255\255\255\157\000\149\000\ + \157\000\157\000\157\000\157\000\157\000\255\255\255\255\255\255\ + \255\255\255\255\255\255\149\000\255\255\255\255\255\255\149\000\ + \255\255\149\000\255\255\255\255\255\255\149\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \157\000\255\255\157\000\255\255\255\255\255\255\255\255\255\255\ + \158\000\255\255\255\255\158\000\158\000\158\000\255\255\255\255\ + \255\255\158\000\158\000\255\255\158\000\158\000\158\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \157\000\158\000\157\000\158\000\158\000\158\000\158\000\158\000\ + \158\000\158\000\158\000\158\000\158\000\158\000\158\000\158\000\ + \158\000\158\000\158\000\158\000\158\000\158\000\158\000\158\000\ + \158\000\158\000\158\000\158\000\158\000\158\000\158\000\158\000\ + \158\000\158\000\255\255\158\000\255\255\158\000\158\000\255\255\ + \158\000\158\000\158\000\158\000\158\000\158\000\158\000\158\000\ + \158\000\158\000\158\000\158\000\158\000\158\000\158\000\158\000\ + \158\000\158\000\158\000\158\000\158\000\158\000\158\000\158\000\ + \158\000\158\000\255\255\158\000\255\255\158\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\149\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\255\255\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\255\255\134\000\134\000\134\000\134\000\ - \134\000\134\000\134\000\134\000\135\000\255\255\255\255\255\255\ - \255\255\255\255\255\255\135\000\255\255\135\000\135\000\135\000\ - \135\000\135\000\135\000\135\000\135\000\135\000\135\000\135\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\135\000\135\000\ - \135\000\135\000\135\000\135\000\135\000\135\000\135\000\135\000\ - \135\000\135\000\135\000\135\000\135\000\135\000\135\000\135\000\ - \135\000\135\000\135\000\135\000\135\000\135\000\135\000\135\000\ - \255\255\255\255\255\255\255\255\135\000\255\255\135\000\135\000\ - \135\000\135\000\135\000\135\000\135\000\135\000\135\000\135\000\ - \135\000\135\000\135\000\135\000\135\000\135\000\135\000\135\000\ - \135\000\135\000\135\000\135\000\135\000\135\000\135\000\135\000\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\158\000\ + \158\000\158\000\158\000\158\000\158\000\158\000\158\000\158\000\ + \158\000\158\000\158\000\158\000\158\000\158\000\158\000\158\000\ + \158\000\158\000\158\000\158\000\158\000\158\000\255\255\158\000\ + \158\000\158\000\158\000\158\000\158\000\158\000\158\000\158\000\ + \158\000\158\000\158\000\158\000\158\000\158\000\158\000\158\000\ + \158\000\158\000\158\000\158\000\158\000\158\000\158\000\158\000\ + \158\000\158\000\158\000\158\000\158\000\158\000\255\255\158\000\ + \158\000\158\000\158\000\158\000\158\000\158\000\158\000\159\000\ + \255\255\255\255\159\000\159\000\159\000\255\255\255\255\255\255\ + \159\000\159\000\255\255\159\000\159\000\159\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \159\000\255\255\159\000\159\000\159\000\159\000\159\000\255\255\ + \255\255\255\255\255\255\160\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\255\255\255\255\ + \160\000\255\255\159\000\255\255\159\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\255\255\ + \255\255\255\255\159\000\160\000\159\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ @@ -4243,57 +4380,28 @@ module Struct = \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\135\000\135\000\135\000\ - \135\000\135\000\135\000\135\000\135\000\135\000\135\000\135\000\ - \135\000\135\000\135\000\135\000\135\000\135\000\135\000\135\000\ - \135\000\135\000\135\000\135\000\255\255\135\000\135\000\135\000\ - \135\000\135\000\135\000\135\000\135\000\135\000\135\000\135\000\ - \135\000\135\000\135\000\135\000\135\000\135\000\135\000\135\000\ - \135\000\135\000\135\000\135\000\135\000\135\000\135\000\135\000\ - \135\000\135\000\135\000\135\000\137\000\135\000\135\000\135\000\ - \135\000\135\000\135\000\135\000\135\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \255\255\255\255\255\255\255\255\137\000\255\255\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\141\000\141\000\ - \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ - \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ - \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ - \255\255\255\255\255\255\255\255\141\000\255\255\141\000\141\000\ - \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ - \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ - \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ - \255\255\255\255\255\255\255\255\255\255\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\255\255\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\255\255\137\000\137\000\137\000\ - \137\000\137\000\137\000\137\000\137\000\141\000\141\000\141\000\ - \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ - \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ - \141\000\141\000\141\000\141\000\255\255\141\000\141\000\141\000\ - \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ - \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ - \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ - \141\000\141\000\141\000\141\000\255\255\141\000\141\000\141\000\ - \141\000\141\000\141\000\141\000\141\000\142\000\142\000\142\000\ - \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ - \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ - \142\000\142\000\142\000\142\000\142\000\142\000\142\000\255\255\ - \255\255\255\255\255\255\142\000\255\255\142\000\142\000\142\000\ - \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ - \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ - \142\000\142\000\142\000\142\000\142\000\142\000\142\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\255\255\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\255\255\160\000\160\000\160\000\160\000\ + \160\000\160\000\160\000\160\000\161\000\255\255\255\255\161\000\ + \161\000\161\000\255\255\255\255\255\255\161\000\161\000\255\255\ + \161\000\161\000\161\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\161\000\255\255\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\255\255\161\000\ + \255\255\161\000\161\000\255\255\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\255\255\161\000\ + \255\255\161\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ @@ -4301,24 +4409,96 @@ module Struct = \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\142\000\142\000\142\000\142\000\ - \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ - \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ - \142\000\142\000\142\000\255\255\142\000\142\000\142\000\142\000\ - \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ - \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ - \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ - \142\000\142\000\142\000\143\000\142\000\142\000\142\000\142\000\ - \142\000\142\000\142\000\142\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\255\255\255\255\ - \143\000\255\255\255\255\255\255\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\255\255\ - \255\255\255\255\255\255\143\000\255\255\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\255\255\ + \255\255\255\255\255\255\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\255\255\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\255\255\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\162\000\255\255\255\255\162\000\162\000\ + \162\000\255\255\255\255\255\255\162\000\162\000\255\255\162\000\ + \162\000\162\000\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\162\000\255\255\162\000\162\000\ + \162\000\162\000\162\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\163\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\255\255\162\000\163\000\ + \162\000\255\255\255\255\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\162\000\255\255\ + \162\000\255\255\163\000\255\255\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\255\255\255\255\ + \255\255\255\255\255\255\255\255\164\000\164\000\164\000\164\000\ + \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\ + \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\ + \164\000\164\000\164\000\164\000\164\000\164\000\255\255\255\255\ + \255\255\255\255\164\000\255\255\164\000\164\000\164\000\164\000\ + \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\ + \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\ + \164\000\164\000\164\000\164\000\164\000\164\000\255\255\255\255\ + \255\255\255\255\255\255\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\255\255\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\255\255\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\164\000\164\000\164\000\164\000\164\000\ + \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\ + \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\ + \164\000\164\000\255\255\164\000\164\000\164\000\164\000\164\000\ + \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\ + \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\ + \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\ + \164\000\164\000\165\000\164\000\164\000\164\000\164\000\164\000\ + \164\000\164\000\164\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\255\255\255\255\165\000\ + \255\255\255\255\255\255\255\255\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\255\255\255\255\ + \255\255\255\255\165\000\255\255\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\255\255\255\255\ + \255\255\255\255\255\255\255\255\171\000\171\000\171\000\171\000\ + \171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\ + \171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\ + \171\000\171\000\171\000\171\000\171\000\171\000\255\255\255\255\ + \255\255\255\255\171\000\255\255\171\000\171\000\171\000\171\000\ + \171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\ + \171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\ + \171\000\171\000\171\000\171\000\171\000\171\000\255\255\255\255\ + \255\255\255\255\255\255\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\255\255\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\255\255\165\000\165\000\165\000\165\000\165\000\ + \165\000\165\000\165\000\171\000\171\000\171\000\171\000\171\000\ + \171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\ + \171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\ + \171\000\171\000\255\255\171\000\171\000\171\000\171\000\171\000\ + \171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\ + \171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\ + \171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\ + \171\000\171\000\255\255\171\000\171\000\171\000\171\000\171\000\ + \171\000\171\000\171\000\172\000\172\000\172\000\172\000\172\000\ + \172\000\172\000\172\000\172\000\172\000\172\000\172\000\172\000\ + \172\000\172\000\172\000\172\000\172\000\172\000\172\000\172\000\ + \172\000\172\000\172\000\172\000\172\000\255\255\255\255\255\255\ + \255\255\172\000\255\255\172\000\172\000\172\000\172\000\172\000\ + \172\000\172\000\172\000\172\000\172\000\172\000\172\000\172\000\ + \172\000\172\000\172\000\172\000\172\000\172\000\172\000\172\000\ + \172\000\172\000\172\000\172\000\172\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ @@ -4327,24 +4507,24 @@ module Struct = \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\255\255\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\144\000\143\000\143\000\143\000\143\000\ - \143\000\143\000\143\000\143\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\255\255\255\255\ - \144\000\255\255\255\255\255\255\255\255\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\255\255\ - \255\255\255\255\255\255\144\000\255\255\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\255\255\ + \255\255\255\255\172\000\172\000\172\000\172\000\172\000\172\000\ + \172\000\172\000\172\000\172\000\172\000\172\000\172\000\172\000\ + \172\000\172\000\172\000\172\000\172\000\172\000\172\000\172\000\ + \172\000\255\255\172\000\172\000\172\000\172\000\172\000\172\000\ + \172\000\172\000\172\000\172\000\172\000\172\000\172\000\172\000\ + \172\000\172\000\172\000\172\000\172\000\172\000\172\000\172\000\ + \172\000\172\000\172\000\172\000\172\000\172\000\172\000\172\000\ + \172\000\173\000\172\000\172\000\172\000\172\000\172\000\172\000\ + \172\000\172\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\255\255\255\255\173\000\255\255\ + \255\255\255\255\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\255\255\255\255\255\255\ + \255\255\173\000\255\255\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ @@ -4353,35 +4533,258 @@ module Struct = \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\255\255\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\255\255\144\000\144\000\144\000\144\000\ - \144\000\144\000\144\000\144\000\255\255"; - Lexing.lex_base_code = - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\010\000\036\000\000\000\012\000\000\000\000\000\ - \002\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\001\000\000\000\000\000\000\000\002\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\041\000\000\000\ - \249\000\000\000\000\000\039\000\000\000\000\000\000\000\000\000\ + \255\255\255\255\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\255\255\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\174\000\173\000\173\000\173\000\173\000\173\000\173\000\ + \173\000\173\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\255\255\255\255\174\000\255\255\ + \255\255\255\255\255\255\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\255\255\255\255\255\255\ + \255\255\174\000\255\255\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\255\255\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\255\255\174\000\174\000\174\000\174\000\174\000\174\000\ + \174\000\174\000\175\000\255\255\255\255\175\000\255\255\255\255\ + \255\255\255\255\255\255\255\255\175\000\255\255\175\000\175\000\ + \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ + \175\000\255\255\255\255\255\255\255\255\255\255\255\255\175\000\ + \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ + \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ + \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ + \175\000\255\255\255\255\255\255\255\255\175\000\175\000\175\000\ + \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ + \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ + \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ + \175\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\175\000\175\000\ + \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ + \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ + \175\000\175\000\175\000\175\000\175\000\255\255\175\000\175\000\ + \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ + \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ + \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ + \175\000\175\000\175\000\175\000\175\000\255\255\175\000\175\000\ + \175\000\175\000\175\000\175\000\175\000\175\000\175\000\177\000\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\255\255\255\255\255\255\255\255\177\000\ + \255\255\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\255\255\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\255\255\ + \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ + \178\000\255\255\255\255\255\255\255\255\255\255\255\255\178\000\ + \255\255\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ + \178\000\178\000\178\000\178\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\178\000\178\000\178\000\178\000\178\000\178\000\ + \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ + \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ + \178\000\178\000\178\000\178\000\255\255\255\255\255\255\255\255\ + \178\000\255\255\178\000\178\000\178\000\178\000\178\000\178\000\ + \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ + \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ + \178\000\178\000\178\000\178\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ + \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ + \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ + \255\255\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ + \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ + \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ + \178\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ + \180\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ + \178\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\255\255\255\255\255\255\255\255\ + \180\000\255\255\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\184\000\184\000\184\000\184\000\184\000\184\000\ + \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ + \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ + \184\000\184\000\184\000\184\000\255\255\255\255\255\255\255\255\ + \184\000\255\255\184\000\184\000\184\000\184\000\184\000\184\000\ + \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ + \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ + \184\000\184\000\184\000\184\000\255\255\255\255\255\255\255\255\ + \255\255\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \255\255\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \255\255\180\000\180\000\180\000\180\000\180\000\180\000\180\000\ + \180\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ + \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ + \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ + \255\255\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ + \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ + \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ + \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ + \255\255\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ + \184\000\185\000\185\000\185\000\185\000\185\000\185\000\185\000\ + \185\000\185\000\185\000\185\000\185\000\185\000\185\000\185\000\ + \185\000\185\000\185\000\185\000\185\000\185\000\185\000\185\000\ + \185\000\185\000\185\000\255\255\255\255\255\255\255\255\185\000\ + \255\255\185\000\185\000\185\000\185\000\185\000\185\000\185\000\ + \185\000\185\000\185\000\185\000\185\000\185\000\185\000\185\000\ + \185\000\185\000\185\000\185\000\185\000\185\000\185\000\185\000\ + \185\000\185\000\185\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \185\000\185\000\185\000\185\000\185\000\185\000\185\000\185\000\ + \185\000\185\000\185\000\185\000\185\000\185\000\185\000\185\000\ + \185\000\185\000\185\000\185\000\185\000\185\000\185\000\255\255\ + \185\000\185\000\185\000\185\000\185\000\185\000\185\000\185\000\ + \185\000\185\000\185\000\185\000\185\000\185\000\185\000\185\000\ + \185\000\185\000\185\000\185\000\185\000\185\000\185\000\185\000\ + \185\000\185\000\185\000\185\000\185\000\185\000\185\000\186\000\ + \185\000\185\000\185\000\185\000\185\000\185\000\185\000\185\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\255\255\255\255\186\000\255\255\255\255\255\255\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\255\255\255\255\255\255\255\255\186\000\ + \255\255\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\255\255\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\187\000\ + \186\000\186\000\186\000\186\000\186\000\186\000\186\000\186\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\255\255\255\255\187\000\255\255\255\255\255\255\ + \255\255\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\255\255\255\255\255\255\255\255\187\000\ + \255\255\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\255\255\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\255\255\ + \187\000\187\000\187\000\187\000\187\000\187\000\187\000\187\000\ + \255\255"; + Lexing.lex_base_code = + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000"; + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\066\000\101\000\136\000\ + \171\000\206\000\000\000\000\000\000\000\000\000\241\000\020\001\ + \055\001\000\000\000\000\018\000\090\001\125\001\160\001\195\001\ + \230\001\000\000\021\000\026\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\247\001\ + \040\002\000\000\034\000\000\000\000\000\003\000\000\000\000\000\ + \049\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\ + \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\036\002\000\000\244\002\000\000\000\000\061\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000"; Lexing.lex_backtrk_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ @@ -4391,17 +4794,22 @@ module Struct = \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\012\000\000\000\000\000\000\000\ - \000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\039\000\039\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\034\000\000\000\000\000\000\000\000\000\000\000\049\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000"; + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\061\000\061\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000"; Lexing.lex_default_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ @@ -4411,39 +4819,107 @@ module Struct = \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\041\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000"; + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000"; Lexing.lex_trans_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\001\000\000\000\036\000\036\000\000\000\036\000\000\000\ + \000\000\001\000\000\000\058\000\058\000\000\000\058\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \001\000\000\000\000\000\001\000\022\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\007\000\001\000\000\000\000\000\ + \001\000\000\000\000\000\001\000\007\000\044\000\000\000\007\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ + \004\000\004\000\000\000\007\000\012\000\000\000\000\000\012\000\ + \012\000\012\000\000\000\000\000\000\000\000\000\012\000\000\000\ + \012\000\012\000\012\000\007\000\000\000\000\000\007\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\012\000\000\000\012\000\ + \012\000\012\000\012\000\012\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\007\000\015\000\000\000\000\000\015\000\015\000\ + \015\000\000\000\000\000\000\000\015\000\015\000\000\000\015\000\ + \015\000\015\000\000\000\000\000\000\000\000\000\000\000\012\000\ + \000\000\012\000\000\000\000\000\015\000\000\000\015\000\015\000\ + \015\000\015\000\015\000\000\000\000\000\000\000\012\000\000\000\ + \000\000\012\000\012\000\012\000\000\000\000\000\000\000\012\000\ + \012\000\000\000\012\000\012\000\012\000\000\000\000\000\012\000\ + \000\000\012\000\000\000\000\000\000\000\000\000\015\000\012\000\ + \015\000\012\000\012\000\012\000\012\000\012\000\000\000\000\000\ + \000\000\012\000\000\000\000\000\012\000\012\000\012\000\000\000\ + \000\000\000\000\012\000\012\000\000\000\012\000\012\000\012\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\015\000\000\000\ + \015\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\ + \012\000\000\000\000\000\000\000\012\000\000\000\000\000\012\000\ + \012\000\012\000\000\000\000\000\000\000\012\000\012\000\000\000\ + \012\000\012\000\012\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\012\000\000\000\012\000\012\000\012\000\012\000\012\000\ + \012\000\012\000\012\000\012\000\000\000\000\000\000\000\012\000\ + \000\000\000\000\012\000\012\000\012\000\000\000\000\000\000\000\ + \012\000\012\000\000\000\012\000\012\000\012\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\012\000\000\000\012\000\012\000\ + \012\000\012\000\012\000\012\000\012\000\012\000\012\000\000\000\ + \000\000\000\000\012\000\000\000\000\000\012\000\012\000\012\000\ + \000\000\000\000\000\000\012\000\012\000\000\000\012\000\012\000\ + \012\000\000\000\000\000\000\000\000\000\000\000\000\000\012\000\ + \000\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\ + \012\000\012\000\000\000\000\000\000\000\012\000\000\000\000\000\ + \012\000\012\000\012\000\000\000\000\000\000\000\012\000\012\000\ + \000\000\012\000\012\000\012\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\012\000\000\000\012\000\012\000\012\000\012\000\ + \012\000\012\000\012\000\012\000\012\000\000\000\000\000\000\000\ + \012\000\000\000\000\000\012\000\012\000\012\000\000\000\000\000\ + \000\000\012\000\012\000\000\000\012\000\012\000\012\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\012\000\000\000\012\000\ + \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\ + \000\000\000\000\000\000\012\000\000\000\000\000\012\000\012\000\ + \012\000\000\000\000\000\000\000\012\000\012\000\000\000\012\000\ + \012\000\012\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \012\000\000\000\012\000\012\000\012\000\012\000\012\000\012\000\ + \012\000\012\000\012\000\000\000\000\000\000\000\012\000\000\000\ + \000\000\012\000\012\000\012\000\000\000\000\000\000\000\012\000\ + \012\000\000\000\012\000\012\000\012\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\012\000\000\000\012\000\012\000\012\000\ + \012\000\012\000\012\000\012\000\012\000\012\000\000\000\000\000\ + \000\000\012\000\000\000\000\000\012\000\012\000\012\000\000\000\ + \000\000\000\000\012\000\012\000\000\000\012\000\012\000\012\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\012\000\000\000\ + \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\ + \012\000\000\000\000\000\000\000\015\000\000\000\000\000\015\000\ + \015\000\015\000\000\000\000\000\000\000\015\000\015\000\000\000\ + \015\000\015\000\015\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\012\000\000\000\012\000\012\000\015\000\012\000\015\000\ + \015\000\015\000\015\000\015\000\000\000\000\000\000\000\015\000\ + \000\000\000\000\015\000\015\000\015\000\000\000\000\000\000\000\ + \015\000\015\000\000\000\015\000\015\000\015\000\000\000\000\000\ + \000\000\029\000\000\000\000\000\012\000\000\000\012\000\015\000\ + \015\000\015\000\015\000\015\000\015\000\015\000\015\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ - \004\000\004\000\004\000\004\000\001\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\004\000\004\000\004\000\004\000\ - \004\000\004\000\004\000\004\000\004\000\004\000\000\000\000\000\ + \004\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\000\ + \000\000\015\000\015\000\000\000\015\000\000\000\000\000\000\000\ + \001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\000\000\000\000\000\000\000\000\ - \036\000\000\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\000\000\000\000\000\000\000\000\ + \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ + \004\000\004\000\015\000\000\000\015\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\000\000\ + \000\000\000\000\000\000\058\000\000\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ @@ -4452,24 +4928,24 @@ module Struct = \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \000\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\000\000\000\000\000\000\000\000\ - \036\000\000\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\000\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\000\000\ + \000\000\000\000\000\000\058\000\000\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ @@ -4478,37 +4954,100 @@ module Struct = \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \000\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \000\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ - \036\000\000\000"; + \000\000\000\000\000\000\000\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\000\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\000\000\058\000\058\000\058\000\058\000\ + \058\000\058\000\058\000\058\000\000\000"; Lexing.lex_check_code = "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\014\000\071\000\106\000\110\000\071\000\106\000\255\255\ + \255\255\016\000\100\000\149\000\153\000\100\000\149\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \014\000\255\255\071\000\000\000\072\000\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\066\000\067\000\255\255\255\255\ - \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\ - \014\000\014\000\066\000\066\000\066\000\066\000\066\000\066\000\ - \066\000\066\000\066\000\066\000\067\000\255\255\255\255\255\255\ + \016\000\255\255\100\000\000\000\019\000\101\000\255\255\019\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\067\000\067\000\067\000\067\000\ - \067\000\067\000\067\000\067\000\067\000\067\000\255\255\255\255\ + \016\000\016\000\016\000\016\000\016\000\016\000\016\000\016\000\ + \016\000\016\000\255\255\019\000\019\000\255\255\255\255\019\000\ + \019\000\019\000\255\255\255\255\255\255\255\255\019\000\255\255\ + \019\000\019\000\019\000\061\000\255\255\255\255\061\000\255\255\ + \255\255\255\255\255\255\255\255\255\255\019\000\255\255\019\000\ + \019\000\019\000\019\000\019\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\061\000\061\000\255\255\255\255\061\000\061\000\ + \061\000\255\255\255\255\255\255\061\000\061\000\255\255\061\000\ + \061\000\061\000\255\255\255\255\255\255\255\255\255\255\019\000\ + \255\255\019\000\255\255\255\255\061\000\255\255\061\000\061\000\ + \061\000\061\000\061\000\255\255\255\255\255\255\062\000\255\255\ + \255\255\062\000\062\000\062\000\255\255\255\255\255\255\062\000\ + \062\000\255\255\062\000\062\000\062\000\255\255\255\255\019\000\ + \255\255\019\000\255\255\255\255\255\255\255\255\061\000\062\000\ + \061\000\062\000\062\000\062\000\062\000\062\000\255\255\255\255\ + \255\255\063\000\255\255\255\255\063\000\063\000\063\000\255\255\ + \255\255\255\255\063\000\063\000\255\255\063\000\063\000\063\000\ + \255\255\255\255\255\255\255\255\255\255\255\255\061\000\255\255\ + \061\000\062\000\063\000\062\000\063\000\063\000\063\000\063\000\ + \063\000\255\255\255\255\255\255\064\000\255\255\255\255\064\000\ + \064\000\064\000\255\255\255\255\255\255\064\000\064\000\255\255\ + \064\000\064\000\064\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\062\000\255\255\062\000\063\000\064\000\063\000\064\000\ + \064\000\064\000\064\000\064\000\255\255\255\255\255\255\065\000\ + \255\255\255\255\065\000\065\000\065\000\255\255\255\255\255\255\ + \065\000\065\000\255\255\065\000\065\000\065\000\255\255\255\255\ + \100\000\255\255\255\255\255\255\063\000\255\255\063\000\064\000\ + \065\000\064\000\065\000\065\000\065\000\065\000\065\000\255\255\ + \255\255\255\255\070\000\255\255\255\255\070\000\070\000\070\000\ + \255\255\255\255\255\255\070\000\070\000\255\255\070\000\070\000\ + \070\000\255\255\255\255\255\255\255\255\255\255\255\255\064\000\ + \255\255\064\000\065\000\070\000\065\000\070\000\070\000\070\000\ + \070\000\070\000\255\255\255\255\255\255\071\000\255\255\255\255\ + \071\000\071\000\071\000\255\255\255\255\255\255\071\000\071\000\ + \255\255\071\000\071\000\071\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\065\000\255\255\065\000\070\000\071\000\070\000\ + \071\000\071\000\071\000\071\000\071\000\255\255\255\255\255\255\ + \072\000\255\255\255\255\072\000\072\000\072\000\255\255\255\255\ + \255\255\072\000\072\000\255\255\072\000\072\000\072\000\255\255\ + \255\255\255\255\255\255\255\255\255\255\070\000\255\255\070\000\ + \071\000\072\000\071\000\072\000\072\000\072\000\072\000\072\000\ + \255\255\255\255\255\255\076\000\255\255\255\255\076\000\076\000\ + \076\000\255\255\255\255\255\255\076\000\076\000\255\255\076\000\ + \076\000\076\000\255\255\255\255\255\255\255\255\255\255\255\255\ + \071\000\255\255\071\000\072\000\076\000\072\000\076\000\076\000\ + \076\000\076\000\076\000\255\255\255\255\255\255\077\000\255\255\ + \255\255\077\000\077\000\077\000\255\255\255\255\255\255\077\000\ + \077\000\255\255\077\000\077\000\077\000\255\255\255\255\255\255\ + \255\255\255\255\255\255\072\000\255\255\072\000\076\000\077\000\ + \076\000\077\000\077\000\077\000\077\000\077\000\255\255\255\255\ + \255\255\078\000\255\255\255\255\078\000\078\000\078\000\255\255\ + \255\255\255\255\078\000\078\000\255\255\078\000\078\000\078\000\ + \255\255\255\255\255\255\255\255\255\255\255\255\076\000\255\255\ + \076\000\077\000\078\000\077\000\078\000\078\000\078\000\078\000\ + \078\000\255\255\255\255\255\255\079\000\255\255\255\255\079\000\ + \079\000\079\000\255\255\255\255\255\255\079\000\079\000\255\255\ + \079\000\079\000\079\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\077\000\255\255\077\000\078\000\079\000\078\000\079\000\ + \079\000\079\000\079\000\079\000\255\255\255\255\255\255\080\000\ + \255\255\255\255\080\000\080\000\080\000\255\255\255\255\255\255\ + \080\000\080\000\255\255\080\000\080\000\080\000\255\255\255\255\ + \255\255\095\000\255\255\255\255\078\000\255\255\078\000\079\000\ + \080\000\079\000\080\000\080\000\080\000\080\000\080\000\095\000\ + \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ + \095\000\096\000\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\079\000\ + \255\255\079\000\080\000\255\255\080\000\255\255\255\255\255\255\ + \096\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\255\255\255\255\255\255\255\255\ - \118\000\255\255\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\255\255\255\255\255\255\255\255\ + \096\000\096\000\096\000\096\000\096\000\096\000\096\000\096\000\ + \096\000\096\000\080\000\255\255\080\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\255\255\ + \255\255\255\255\255\255\161\000\255\255\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ @@ -4517,24 +5056,24 @@ module Struct = \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \071\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \120\000\118\000\118\000\118\000\118\000\118\000\118\000\118\000\ - \118\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\255\255\255\255\255\255\255\255\ - \120\000\255\255\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\255\255\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\163\000\161\000\161\000\161\000\161\000\ + \161\000\161\000\161\000\161\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\255\255\ + \255\255\255\255\255\255\163\000\255\255\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ @@ -4543,22 +5082,24 @@ module Struct = \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \255\255\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \255\255\120\000\120\000\120\000\120\000\120\000\120\000\120\000\ - \120\000\255\255"; + \255\255\255\255\255\255\255\255\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\255\255\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\255\255\163\000\163\000\163\000\163\000\ + \163\000\163\000\163\000\163\000\255\255"; Lexing.lex_code = - "\255\004\255\255\005\255\255\007\255\006\255\255\003\255\000\004\ - \001\005\255\007\255\255\006\255\007\255\255\000\004\001\005\003\ - \006\002\007\255\001\255\255\000\001\255"; + "\255\004\255\255\009\255\255\006\255\005\255\255\007\255\255\008\ + \255\255\000\007\255\000\006\001\008\255\000\005\255\011\255\010\ + \255\255\003\255\000\004\001\009\255\011\255\255\010\255\011\255\ + \255\000\004\001\009\003\010\002\011\255\001\255\255\000\001\255\ + "; } let rec token c lexbuf = - (lexbuf.Lexing.lex_mem <- Array.create 8 (-1); + (lexbuf.Lexing.lex_mem <- Array.create 12 (-1); __ocaml_lex_token_rec c lexbuf 0) and __ocaml_lex_token_rec c lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state @@ -4683,7 +5224,6 @@ module Struct = then QUOTATION { - q_name = ""; q_loc = ""; q_shift = 2; @@ -4710,45 +5250,65 @@ module Struct = (update_loc c name inum true 0; LINE_DIRECTIVE (inum, name)) | 23 -> + let op = + Lexing.sub_lexeme_char lexbuf + (lexbuf.Lexing.lex_start_pos + 1) + in ESCAPED_IDENT (String.make 1 op) + | 24 -> + let op = + Lexing.sub_lexeme lexbuf + (lexbuf.Lexing.lex_start_pos + 1) + (lexbuf.Lexing.lex_curr_pos + (-1)) + in ESCAPED_IDENT op + | 25 -> + let op = + Lexing.sub_lexeme lexbuf + (lexbuf.Lexing.lex_start_pos + 1) + lexbuf.Lexing.lex_mem.(0) + in ESCAPED_IDENT op + | 26 -> + let op = + Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(0) + (lexbuf.Lexing.lex_curr_pos + (-1)) + in ESCAPED_IDENT op + | 27 -> + let op = + Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(0) + lexbuf.Lexing.lex_mem.(1) + in ESCAPED_IDENT op + | 28 -> let x = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in SYMBOL x - | 24 -> - if quotations c + | 29 -> + if antiquots c then with_curr_loc dollar (shift 1 c) else parse (symbolchar_star "$") c - | 25 -> + | 30 -> let x = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in SYMBOL x - | 26 -> - let x = - Lexing.sub_lexeme lexbuf - (lexbuf.Lexing.lex_start_pos + 1) - lexbuf.Lexing.lex_curr_pos - in ESCAPED_IDENT x - | 27 -> + | 31 -> let pos = lexbuf.lex_curr_p in (lexbuf.lex_curr_p <- { (pos) with - pos_bol = pos.pos_bol + 1; pos_cnum = pos.pos_cnum + 1; }; EOI) - | 28 -> + | 32 -> let c = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in err (Illegal_character c) (Loc.of_lexbuf lexbuf) | __ocaml_lex_state -> (lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_token_rec c lexbuf __ocaml_lex_state) - and comment c lexbuf = __ocaml_lex_comment_rec c lexbuf 77 + and comment c lexbuf = __ocaml_lex_comment_rec c lexbuf 120 and __ocaml_lex_comment_rec c lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with @@ -4782,7 +5342,7 @@ module Struct = __ocaml_lex_comment_rec c lexbuf __ocaml_lex_state) and string c lexbuf = (lexbuf.Lexing.lex_mem <- Array.create 2 (-1); - __ocaml_lex_string_rec c lexbuf 104) + __ocaml_lex_string_rec c lexbuf 147) and __ocaml_lex_string_rec c lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf @@ -4816,7 +5376,7 @@ module Struct = (lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_string_rec c lexbuf __ocaml_lex_state) and symbolchar_star beginning c lexbuf = - __ocaml_lex_symbolchar_star_rec beginning c lexbuf 114 + __ocaml_lex_symbolchar_star_rec beginning c lexbuf 157 and __ocaml_lex_symbolchar_star_rec beginning c lexbuf __ocaml_lex_state = @@ -4834,7 +5394,7 @@ module Struct = __ocaml_lex_symbolchar_star_rec beginning c lexbuf __ocaml_lex_state) and maybe_quotation_at c lexbuf = - __ocaml_lex_maybe_quotation_at_rec c lexbuf 115 + __ocaml_lex_maybe_quotation_at_rec c lexbuf 158 and __ocaml_lex_maybe_quotation_at_rec c lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf @@ -4856,7 +5416,7 @@ module Struct = __ocaml_lex_state) and maybe_quotation_colon c lexbuf = (lexbuf.Lexing.lex_mem <- Array.create 2 (-1); - __ocaml_lex_maybe_quotation_colon_rec c lexbuf 118) + __ocaml_lex_maybe_quotation_colon_rec c lexbuf 161) and __ocaml_lex_maybe_quotation_colon_rec c lexbuf __ocaml_lex_state = @@ -4889,7 +5449,7 @@ module Struct = (lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_maybe_quotation_colon_rec c lexbuf __ocaml_lex_state) - and quotation c lexbuf = __ocaml_lex_quotation_rec c lexbuf 124 + and quotation c lexbuf = __ocaml_lex_quotation_rec c lexbuf 167 and __ocaml_lex_quotation_rec c lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with @@ -4901,7 +5461,7 @@ module Struct = | __ocaml_lex_state -> (lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_quotation_rec c lexbuf __ocaml_lex_state) - and dollar c lexbuf = __ocaml_lex_dollar_rec c lexbuf 132 + and dollar c lexbuf = __ocaml_lex_dollar_rec c lexbuf 175 and __ocaml_lex_dollar_rec c lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with @@ -4918,7 +5478,7 @@ module Struct = (lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dollar_rec c lexbuf __ocaml_lex_state) and antiquot name c lexbuf = - __ocaml_lex_antiquot_rec name c lexbuf 138 + __ocaml_lex_antiquot_rec name c lexbuf 181 and __ocaml_lex_antiquot_rec name c lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with @@ -4954,8 +5514,8 @@ module Struct = { (default_context lb) with - loc = Loc.of_lexbuf lb; + antiquots = !Camlp4_config.antiquotations; quotations = quotations; } in from_context c @@ -5005,4958 +5565,11 @@ module Struct = "%field0" external loc_of_with_constr : with_constr -> Loc.t = "%field0" external loc_of_binding : binding -> Loc.t = "%field0" + external loc_of_rec_binding : rec_binding -> Loc.t = "%field0" external loc_of_module_binding : module_binding -> Loc.t = "%field0" external loc_of_match_case : match_case -> Loc.t = "%field0" external loc_of_ident : ident -> Loc.t = "%field0" - module Meta = - struct - module type META_LOC = - sig - val meta_loc_patt : Loc.t -> Loc.t -> Ast.patt - val meta_loc_expr : Loc.t -> Loc.t -> Ast.expr - end - module MetaLoc = - struct - let meta_loc_patt _loc location = - let (a, b, c, d, e, f, g, h) = Loc.to_tuple location - in - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Loc"), - Ast.IdLid (_loc, "of_tuple"))), - Ast.PaTup (_loc, - Ast.PaCom (_loc, - Ast.PaStr (_loc, Ast.safe_string_escaped a), - Ast.PaCom (_loc, - Ast.PaCom (_loc, - Ast.PaCom (_loc, - Ast.PaCom (_loc, - Ast.PaCom (_loc, - Ast.PaCom (_loc, - Ast.PaInt (_loc, string_of_int b), - Ast.PaInt (_loc, string_of_int c)), - Ast.PaInt (_loc, string_of_int d)), - Ast.PaInt (_loc, string_of_int e)), - Ast.PaInt (_loc, string_of_int f)), - Ast.PaInt (_loc, string_of_int g)), - if h - then - Ast.PaId (_loc, Ast.IdUid (_loc, "True")) - else - Ast.PaId (_loc, Ast.IdUid (_loc, "False")))))) - let meta_loc_expr _loc location = - let (a, b, c, d, e, f, g, h) = Loc.to_tuple location - in - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Loc"), - Ast.IdLid (_loc, "of_tuple"))), - Ast.ExTup (_loc, - Ast.ExCom (_loc, - Ast.ExStr (_loc, Ast.safe_string_escaped a), - Ast.ExCom (_loc, - Ast.ExCom (_loc, - Ast.ExCom (_loc, - Ast.ExCom (_loc, - Ast.ExCom (_loc, - Ast.ExCom (_loc, - Ast.ExInt (_loc, string_of_int b), - Ast.ExInt (_loc, string_of_int c)), - Ast.ExInt (_loc, string_of_int d)), - Ast.ExInt (_loc, string_of_int e)), - Ast.ExInt (_loc, string_of_int f)), - Ast.ExInt (_loc, string_of_int g)), - if h - then - Ast.ExId (_loc, Ast.IdUid (_loc, "True")) - else - Ast.ExId (_loc, Ast.IdUid (_loc, "False")))))) - end - module MetaGhostLoc = - struct - let meta_loc_patt _loc _ = - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Loc"), - Ast.IdLid (_loc, "ghost"))) - let meta_loc_expr _loc _ = - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Loc"), - Ast.IdLid (_loc, "ghost"))) - end - module MetaLocVar = - struct - let meta_loc_patt _loc _ = - Ast.PaId (_loc, Ast.IdLid (_loc, !Loc.name)) - let meta_loc_expr _loc _ = - Ast.ExId (_loc, Ast.IdLid (_loc, !Loc.name)) - end - module Make (MetaLoc : META_LOC) = - struct - open MetaLoc - let meta_acc_Loc_t = meta_loc_expr - module Expr = - struct - let meta_string _loc s = Ast.ExStr (_loc, s) - let meta_int _loc s = Ast.ExInt (_loc, s) - let meta_float _loc s = Ast.ExFlo (_loc, s) - let meta_char _loc s = Ast.ExChr (_loc, s) - let meta_bool _loc = - function - | false -> - Ast.ExId (_loc, Ast.IdUid (_loc, "False")) - | true -> Ast.ExId (_loc, Ast.IdUid (_loc, "True")) - let rec meta_list mf_a _loc = - function - | [] -> Ast.ExId (_loc, Ast.IdUid (_loc, "[]")) - | x :: xs -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdUid (_loc, "::")), - mf_a _loc x), - meta_list mf_a _loc xs) - let rec meta_binding _loc = - function - | Ast.BiAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.BiEq (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "BiEq"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_expr _loc x2) - | Ast.BiSem (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "BiSem"))), - meta_acc_Loc_t _loc x0), - meta_binding _loc x1), - meta_binding _loc x2) - | Ast.BiAnd (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "BiAnd"))), - meta_acc_Loc_t _loc x0), - meta_binding _loc x1), - meta_binding _loc x2) - | Ast.BiNil x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "BiNil"))), - meta_acc_Loc_t _loc x0) - and meta_class_expr _loc = - function - | Ast.CeAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.CeEq (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeEq"))), - meta_acc_Loc_t _loc x0), - meta_class_expr _loc x1), - meta_class_expr _loc x2) - | Ast.CeAnd (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeAnd"))), - meta_acc_Loc_t _loc x0), - meta_class_expr _loc x1), - meta_class_expr _loc x2) - | Ast.CeTyc (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeTyc"))), - meta_acc_Loc_t _loc x0), - meta_class_expr _loc x1), - meta_class_type _loc x2) - | Ast.CeStr (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeStr"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_class_str_item _loc x2) - | Ast.CeLet (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeLet"))), - meta_acc_Loc_t _loc x0), - meta_meta_bool _loc x1), - meta_binding _loc x2), - meta_class_expr _loc x3) - | Ast.CeFun (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeFun"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_class_expr _loc x2) - | Ast.CeCon (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeCon"))), - meta_acc_Loc_t _loc x0), - meta_meta_bool _loc x1), - meta_ident _loc x2), - meta_ctyp _loc x3) - | Ast.CeApp (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeApp"))), - meta_acc_Loc_t _loc x0), - meta_class_expr _loc x1), - meta_expr _loc x2) - | Ast.CeNil x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeNil"))), - meta_acc_Loc_t _loc x0) - and meta_class_sig_item _loc = - function - | Ast.CgAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.CgVir (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CgVir"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_meta_bool _loc x2), - meta_ctyp _loc x3) - | Ast.CgVal (x0, x1, x2, x3, x4) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CgVal"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_meta_bool _loc x2), - meta_meta_bool _loc x3), - meta_ctyp _loc x4) - | Ast.CgMth (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CgMth"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_meta_bool _loc x2), - meta_ctyp _loc x3) - | Ast.CgInh (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CgInh"))), - meta_acc_Loc_t _loc x0), - meta_class_type _loc x1) - | Ast.CgSem (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CgSem"))), - meta_acc_Loc_t _loc x0), - meta_class_sig_item _loc x1), - meta_class_sig_item _loc x2) - | Ast.CgCtr (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CgCtr"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.CgNil x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CgNil"))), - meta_acc_Loc_t _loc x0) - and meta_class_str_item _loc = - function - | Ast.CrAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.CrVvr (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrVvr"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_meta_bool _loc x2), - meta_ctyp _loc x3) - | Ast.CrVir (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrVir"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_meta_bool _loc x2), - meta_ctyp _loc x3) - | Ast.CrVal (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrVal"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_meta_bool _loc x2), - meta_expr _loc x3) - | Ast.CrMth (x0, x1, x2, x3, x4) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrMth"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_meta_bool _loc x2), - meta_expr _loc x3), - meta_ctyp _loc x4) - | Ast.CrIni (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrIni"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1) - | Ast.CrInh (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrInh"))), - meta_acc_Loc_t _loc x0), - meta_class_expr _loc x1), - meta_string _loc x2) - | Ast.CrCtr (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrCtr"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.CrSem (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrSem"))), - meta_acc_Loc_t _loc x0), - meta_class_str_item _loc x1), - meta_class_str_item _loc x2) - | Ast.CrNil x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrNil"))), - meta_acc_Loc_t _loc x0) - and meta_class_type _loc = - function - | Ast.CtAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.CtEq (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CtEq"))), - meta_acc_Loc_t _loc x0), - meta_class_type _loc x1), - meta_class_type _loc x2) - | Ast.CtCol (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CtCol"))), - meta_acc_Loc_t _loc x0), - meta_class_type _loc x1), - meta_class_type _loc x2) - | Ast.CtAnd (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CtAnd"))), - meta_acc_Loc_t _loc x0), - meta_class_type _loc x1), - meta_class_type _loc x2) - | Ast.CtSig (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CtSig"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_class_sig_item _loc x2) - | Ast.CtFun (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CtFun"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_class_type _loc x2) - | Ast.CtCon (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CtCon"))), - meta_acc_Loc_t _loc x0), - meta_meta_bool _loc x1), - meta_ident _loc x2), - meta_ctyp _loc x3) - | Ast.CtNil x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CtNil"))), - meta_acc_Loc_t _loc x0) - and meta_ctyp _loc = - function - | Ast.TyAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.TyOfAmp (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyOfAmp"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyAmp (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyAmp"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyVrnInfSup (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyVrnInfSup"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyVrnInf (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyVrnInf"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TyVrnSup (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyVrnSup"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TyVrnEq (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyVrnEq"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TySta (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TySta"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyTup (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyTup"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TyMut (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyMut"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TyPrv (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyPrv"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TyOr (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyOr"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyAnd (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyAnd"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyOf (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyOf"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TySum (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TySum"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TyCom (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyCom"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TySem (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TySem"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyCol (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyCol"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyRec (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyRec"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TyVrn (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyVrn"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.TyQuM (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyQuM"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.TyQuP (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyQuP"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.TyQuo (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyQuo"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.TyPol (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyPol"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyOlb (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyOlb"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_ctyp _loc x2) - | Ast.TyObj (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyObj"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_meta_bool _loc x2) - | Ast.TyDcl (x0, x1, x2, x3, x4) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyDcl"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_list meta_ctyp _loc x2), - meta_ctyp _loc x3), - meta_list - (fun _loc (x1, x2) -> - Ast.ExTup (_loc, - Ast.ExCom (_loc, meta_ctyp _loc x1, - meta_ctyp _loc x2))) - _loc x4) - | Ast.TyMan (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyMan"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyId (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyId"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.TyLab (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyLab"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_ctyp _loc x2) - | Ast.TyCls (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyCls"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.TyArr (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyArr"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyApp (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyApp"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyAny x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyAny"))), - meta_acc_Loc_t _loc x0) - | Ast.TyAli (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyAli"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyNil x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyNil"))), - meta_acc_Loc_t _loc x0) - and meta_expr _loc = - function - | Ast.ExWhi (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExWhi"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExVrn (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExVrn"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExTyc (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExTyc"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_ctyp _loc x2) - | Ast.ExCom (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExCom"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExTup (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExTup"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1) - | Ast.ExTry (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExTry"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_match_case _loc x2) - | Ast.ExStr (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExStr"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExSte (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExSte"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExSnd (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExSnd"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_string _loc x2) - | Ast.ExSeq (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExSeq"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1) - | Ast.ExRec (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExRec"))), - meta_acc_Loc_t _loc x0), - meta_binding _loc x1), - meta_expr _loc x2) - | Ast.ExOvr (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExOvr"))), - meta_acc_Loc_t _loc x0), - meta_binding _loc x1) - | Ast.ExOlb (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExOlb"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_expr _loc x2) - | Ast.ExObj (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExObj"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_class_str_item _loc x2) - | Ast.ExNew (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExNew"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.ExMat (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExMat"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_match_case _loc x2) - | Ast.ExLmd (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExLmd"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_expr _loc x2), - meta_expr _loc x3) - | Ast.ExLet (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExLet"))), - meta_acc_Loc_t _loc x0), - meta_meta_bool _loc x1), - meta_binding _loc x2), - meta_expr _loc x3) - | Ast.ExLaz (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExLaz"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1) - | Ast.ExLab (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExLab"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_expr _loc x2) - | Ast.ExNativeInt (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExNativeInt"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExInt64 (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExInt64"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExInt32 (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExInt32"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExInt (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExInt"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExIfe (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExIfe"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2), - meta_expr _loc x3) - | Ast.ExFun (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExFun"))), - meta_acc_Loc_t _loc x0), - meta_match_case _loc x1) - | Ast.ExFor (x0, x1, x2, x3, x4, x5) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExFor"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_expr _loc x2), - meta_expr _loc x3), - meta_meta_bool _loc x4), - meta_expr _loc x5) - | Ast.ExFlo (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExFlo"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExCoe (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExCoe"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_ctyp _loc x2), - meta_ctyp _loc x3) - | Ast.ExChr (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExChr"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExAss (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExAss"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExAsr (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExAsr"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1) - | Ast.ExAsf x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExAsf"))), - meta_acc_Loc_t _loc x0) - | Ast.ExSem (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExSem"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExArr (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExArr"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1) - | Ast.ExAre (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExAre"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExApp (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExApp"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.ExAcc (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExAcc"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExId (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExId"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.ExNil x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExNil"))), - meta_acc_Loc_t _loc x0) - and meta_ident _loc = - function - | Ast.IdAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.IdUid (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "IdUid"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.IdLid (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "IdLid"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.IdApp (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "IdApp"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1), - meta_ident _loc x2) - | Ast.IdAcc (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "IdAcc"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1), - meta_ident _loc x2) - and meta_match_case _loc = - function - | Ast.McAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.McArr (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "McArr"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_expr _loc x2), - meta_expr _loc x3) - | Ast.McOr (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "McOr"))), - meta_acc_Loc_t _loc x0), - meta_match_case _loc x1), - meta_match_case _loc x2) - | Ast.McNil x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "McNil"))), - meta_acc_Loc_t _loc x0) - and meta_meta_bool _loc = - function - | Ast.BAnt x0 -> Ast.ExAnt (_loc, x0) - | Ast.BFalse -> - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "BFalse"))) - | Ast.BTrue -> - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "BTrue"))) - and meta_meta_list mf_a _loc = - function - | Ast.LAnt x0 -> Ast.ExAnt (_loc, x0) - | Ast.LCons (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "LCons"))), - mf_a _loc x0), - meta_meta_list mf_a _loc x1) - | Ast.LNil -> - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "LNil"))) - and meta_meta_option mf_a _loc = - function - | Ast.OAnt x0 -> Ast.ExAnt (_loc, x0) - | Ast.OSome x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "OSome"))), - mf_a _loc x0) - | Ast.ONone -> - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ONone"))) - and meta_module_binding _loc = - function - | Ast.MbAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.MbCol (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MbCol"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_type _loc x2) - | Ast.MbColEq (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MbColEq"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_type _loc x2), - meta_module_expr _loc x3) - | Ast.MbAnd (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MbAnd"))), - meta_acc_Loc_t _loc x0), - meta_module_binding _loc x1), - meta_module_binding _loc x2) - | Ast.MbNil x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MbNil"))), - meta_acc_Loc_t _loc x0) - and meta_module_expr _loc = - function - | Ast.MeAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.MeTyc (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MeTyc"))), - meta_acc_Loc_t _loc x0), - meta_module_expr _loc x1), - meta_module_type _loc x2) - | Ast.MeStr (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MeStr"))), - meta_acc_Loc_t _loc x0), - meta_str_item _loc x1) - | Ast.MeFun (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MeFun"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_type _loc x2), - meta_module_expr _loc x3) - | Ast.MeApp (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MeApp"))), - meta_acc_Loc_t _loc x0), - meta_module_expr _loc x1), - meta_module_expr _loc x2) - | Ast.MeId (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MeId"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - and meta_module_type _loc = - function - | Ast.MtAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.MtWit (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MtWit"))), - meta_acc_Loc_t _loc x0), - meta_module_type _loc x1), - meta_with_constr _loc x2) - | Ast.MtSig (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MtSig"))), - meta_acc_Loc_t _loc x0), - meta_sig_item _loc x1) - | Ast.MtQuo (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MtQuo"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.MtFun (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MtFun"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_type _loc x2), - meta_module_type _loc x3) - | Ast.MtId (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MtId"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - and meta_patt _loc = - function - | Ast.PaVrn (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaVrn"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaTyp (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaTyp"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.PaTyc (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaTyc"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_ctyp _loc x2) - | Ast.PaTup (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaTup"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1) - | Ast.PaStr (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaStr"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaEq (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaEq"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_patt _loc x2) - | Ast.PaRec (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaRec"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1) - | Ast.PaRng (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaRng"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_patt _loc x2) - | Ast.PaOrp (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaOrp"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_patt _loc x2) - | Ast.PaOlbi (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaOlbi"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_patt _loc x2), - meta_expr _loc x3) - | Ast.PaOlb (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaOlb"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_patt _loc x2) - | Ast.PaLab (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaLab"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_patt _loc x2) - | Ast.PaFlo (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaFlo"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaNativeInt (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaNativeInt"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaInt64 (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaInt64"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaInt32 (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaInt32"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaInt (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaInt"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaChr (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaChr"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaSem (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaSem"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_patt _loc x2) - | Ast.PaCom (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaCom"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_patt _loc x2) - | Ast.PaArr (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaArr"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1) - | Ast.PaApp (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaApp"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_patt _loc x2) - | Ast.PaAny x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaAny"))), - meta_acc_Loc_t _loc x0) - | Ast.PaAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.PaAli (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaAli"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_patt _loc x2) - | Ast.PaId (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaId"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.PaNil x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaNil"))), - meta_acc_Loc_t _loc x0) - and meta_sig_item _loc = - function - | Ast.SgAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.SgVal (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgVal"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_ctyp _loc x2) - | Ast.SgTyp (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgTyp"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.SgOpn (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgOpn"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.SgMty (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgMty"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_type _loc x2) - | Ast.SgRecMod (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgRecMod"))), - meta_acc_Loc_t _loc x0), - meta_module_binding _loc x1) - | Ast.SgMod (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgMod"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_type _loc x2) - | Ast.SgInc (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgInc"))), - meta_acc_Loc_t _loc x0), - meta_module_type _loc x1) - | Ast.SgExt (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgExt"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_ctyp _loc x2), - meta_meta_list meta_string _loc x3) - | Ast.SgExc (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgExc"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.SgDir (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgDir"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_expr _loc x2) - | Ast.SgSem (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgSem"))), - meta_acc_Loc_t _loc x0), - meta_sig_item _loc x1), - meta_sig_item _loc x2) - | Ast.SgClt (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgClt"))), - meta_acc_Loc_t _loc x0), - meta_class_type _loc x1) - | Ast.SgCls (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgCls"))), - meta_acc_Loc_t _loc x0), - meta_class_type _loc x1) - | Ast.SgNil x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgNil"))), - meta_acc_Loc_t _loc x0) - and meta_str_item _loc = - function - | Ast.StAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.StVal (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StVal"))), - meta_acc_Loc_t _loc x0), - meta_meta_bool _loc x1), - meta_binding _loc x2) - | Ast.StTyp (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StTyp"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.StOpn (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StOpn"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.StMty (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StMty"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_type _loc x2) - | Ast.StRecMod (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StRecMod"))), - meta_acc_Loc_t _loc x0), - meta_module_binding _loc x1) - | Ast.StMod (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StMod"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_expr _loc x2) - | Ast.StInc (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StInc"))), - meta_acc_Loc_t _loc x0), - meta_module_expr _loc x1) - | Ast.StExt (x0, x1, x2, x3) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StExt"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_ctyp _loc x2), - meta_meta_list meta_string _loc x3) - | Ast.StExp (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StExp"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1) - | Ast.StExc (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StExc"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_meta_option meta_ident _loc x2) - | Ast.StDir (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StDir"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_expr _loc x2) - | Ast.StSem (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StSem"))), - meta_acc_Loc_t _loc x0), - meta_str_item _loc x1), - meta_str_item _loc x2) - | Ast.StClt (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StClt"))), - meta_acc_Loc_t _loc x0), - meta_class_type _loc x1) - | Ast.StCls (x0, x1) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StCls"))), - meta_acc_Loc_t _loc x0), - meta_class_expr _loc x1) - | Ast.StNil x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StNil"))), - meta_acc_Loc_t _loc x0) - and meta_with_constr _loc = - function - | Ast.WcAnt (x0, x1) -> Ast.ExAnt (x0, x1) - | Ast.WcAnd (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "WcAnd"))), - meta_acc_Loc_t _loc x0), - meta_with_constr _loc x1), - meta_with_constr _loc x2) - | Ast.WcMod (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "WcMod"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1), - meta_ident _loc x2) - | Ast.WcTyp (x0, x1, x2) -> - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "WcTyp"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.WcNil x0 -> - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "WcNil"))), - meta_acc_Loc_t _loc x0) - end - let meta_acc_Loc_t = meta_loc_patt - module Patt = - struct - let meta_string _loc s = Ast.PaStr (_loc, s) - let meta_int _loc s = Ast.PaInt (_loc, s) - let meta_float _loc s = Ast.PaFlo (_loc, s) - let meta_char _loc s = Ast.PaChr (_loc, s) - let meta_bool _loc = - function - | false -> - Ast.PaId (_loc, Ast.IdUid (_loc, "False")) - | true -> Ast.PaId (_loc, Ast.IdUid (_loc, "True")) - let rec meta_list mf_a _loc = - function - | [] -> Ast.PaId (_loc, Ast.IdUid (_loc, "[]")) - | x :: xs -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, Ast.IdUid (_loc, "::")), - mf_a _loc x), - meta_list mf_a _loc xs) - let rec meta_binding _loc = - function - | Ast.BiAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.BiEq (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "BiEq"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_expr _loc x2) - | Ast.BiSem (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "BiSem"))), - meta_acc_Loc_t _loc x0), - meta_binding _loc x1), - meta_binding _loc x2) - | Ast.BiAnd (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "BiAnd"))), - meta_acc_Loc_t _loc x0), - meta_binding _loc x1), - meta_binding _loc x2) - | Ast.BiNil x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "BiNil"))), - meta_acc_Loc_t _loc x0) - and meta_class_expr _loc = - function - | Ast.CeAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.CeEq (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeEq"))), - meta_acc_Loc_t _loc x0), - meta_class_expr _loc x1), - meta_class_expr _loc x2) - | Ast.CeAnd (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeAnd"))), - meta_acc_Loc_t _loc x0), - meta_class_expr _loc x1), - meta_class_expr _loc x2) - | Ast.CeTyc (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeTyc"))), - meta_acc_Loc_t _loc x0), - meta_class_expr _loc x1), - meta_class_type _loc x2) - | Ast.CeStr (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeStr"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_class_str_item _loc x2) - | Ast.CeLet (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeLet"))), - meta_acc_Loc_t _loc x0), - meta_meta_bool _loc x1), - meta_binding _loc x2), - meta_class_expr _loc x3) - | Ast.CeFun (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeFun"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_class_expr _loc x2) - | Ast.CeCon (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeCon"))), - meta_acc_Loc_t _loc x0), - meta_meta_bool _loc x1), - meta_ident _loc x2), - meta_ctyp _loc x3) - | Ast.CeApp (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeApp"))), - meta_acc_Loc_t _loc x0), - meta_class_expr _loc x1), - meta_expr _loc x2) - | Ast.CeNil x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CeNil"))), - meta_acc_Loc_t _loc x0) - and meta_class_sig_item _loc = - function - | Ast.CgAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.CgVir (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CgVir"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_meta_bool _loc x2), - meta_ctyp _loc x3) - | Ast.CgVal (x0, x1, x2, x3, x4) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CgVal"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_meta_bool _loc x2), - meta_meta_bool _loc x3), - meta_ctyp _loc x4) - | Ast.CgMth (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CgMth"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_meta_bool _loc x2), - meta_ctyp _loc x3) - | Ast.CgInh (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CgInh"))), - meta_acc_Loc_t _loc x0), - meta_class_type _loc x1) - | Ast.CgSem (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CgSem"))), - meta_acc_Loc_t _loc x0), - meta_class_sig_item _loc x1), - meta_class_sig_item _loc x2) - | Ast.CgCtr (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CgCtr"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.CgNil x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CgNil"))), - meta_acc_Loc_t _loc x0) - and meta_class_str_item _loc = - function - | Ast.CrAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.CrVvr (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrVvr"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_meta_bool _loc x2), - meta_ctyp _loc x3) - | Ast.CrVir (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrVir"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_meta_bool _loc x2), - meta_ctyp _loc x3) - | Ast.CrVal (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrVal"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_meta_bool _loc x2), - meta_expr _loc x3) - | Ast.CrMth (x0, x1, x2, x3, x4) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrMth"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_meta_bool _loc x2), - meta_expr _loc x3), - meta_ctyp _loc x4) - | Ast.CrIni (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrIni"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1) - | Ast.CrInh (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrInh"))), - meta_acc_Loc_t _loc x0), - meta_class_expr _loc x1), - meta_string _loc x2) - | Ast.CrCtr (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrCtr"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.CrSem (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrSem"))), - meta_acc_Loc_t _loc x0), - meta_class_str_item _loc x1), - meta_class_str_item _loc x2) - | Ast.CrNil x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CrNil"))), - meta_acc_Loc_t _loc x0) - and meta_class_type _loc = - function - | Ast.CtAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.CtEq (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CtEq"))), - meta_acc_Loc_t _loc x0), - meta_class_type _loc x1), - meta_class_type _loc x2) - | Ast.CtCol (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CtCol"))), - meta_acc_Loc_t _loc x0), - meta_class_type _loc x1), - meta_class_type _loc x2) - | Ast.CtAnd (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CtAnd"))), - meta_acc_Loc_t _loc x0), - meta_class_type _loc x1), - meta_class_type _loc x2) - | Ast.CtSig (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CtSig"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_class_sig_item _loc x2) - | Ast.CtFun (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CtFun"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_class_type _loc x2) - | Ast.CtCon (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CtCon"))), - meta_acc_Loc_t _loc x0), - meta_meta_bool _loc x1), - meta_ident _loc x2), - meta_ctyp _loc x3) - | Ast.CtNil x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "CtNil"))), - meta_acc_Loc_t _loc x0) - and meta_ctyp _loc = - function - | Ast.TyAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.TyOfAmp (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyOfAmp"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyAmp (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyAmp"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyVrnInfSup (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyVrnInfSup"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyVrnInf (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyVrnInf"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TyVrnSup (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyVrnSup"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TyVrnEq (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyVrnEq"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TySta (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TySta"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyTup (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyTup"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TyMut (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyMut"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TyPrv (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyPrv"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TyOr (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyOr"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyAnd (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyAnd"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyOf (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyOf"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TySum (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TySum"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TyCom (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyCom"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TySem (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TySem"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyCol (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyCol"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyRec (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyRec"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.TyVrn (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyVrn"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.TyQuM (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyQuM"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.TyQuP (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyQuP"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.TyQuo (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyQuo"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.TyPol (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyPol"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyOlb (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyOlb"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_ctyp _loc x2) - | Ast.TyObj (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyObj"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_meta_bool _loc x2) - | Ast.TyDcl (x0, x1, x2, x3, x4) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyDcl"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_list meta_ctyp _loc x2), - meta_ctyp _loc x3), - meta_list - (fun _loc (x1, x2) -> - Ast.PaTup (_loc, - Ast.PaCom (_loc, meta_ctyp _loc x1, - meta_ctyp _loc x2))) - _loc x4) - | Ast.TyMan (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyMan"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyId (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyId"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.TyLab (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyLab"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_ctyp _loc x2) - | Ast.TyCls (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyCls"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.TyArr (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyArr"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyApp (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyApp"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyAny x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyAny"))), - meta_acc_Loc_t _loc x0) - | Ast.TyAli (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyAli"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.TyNil x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "TyNil"))), - meta_acc_Loc_t _loc x0) - and meta_expr _loc = - function - | Ast.ExWhi (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExWhi"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExVrn (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExVrn"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExTyc (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExTyc"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_ctyp _loc x2) - | Ast.ExCom (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExCom"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExTup (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExTup"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1) - | Ast.ExTry (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExTry"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_match_case _loc x2) - | Ast.ExStr (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExStr"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExSte (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExSte"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExSnd (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExSnd"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_string _loc x2) - | Ast.ExSeq (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExSeq"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1) - | Ast.ExRec (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExRec"))), - meta_acc_Loc_t _loc x0), - meta_binding _loc x1), - meta_expr _loc x2) - | Ast.ExOvr (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExOvr"))), - meta_acc_Loc_t _loc x0), - meta_binding _loc x1) - | Ast.ExOlb (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExOlb"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_expr _loc x2) - | Ast.ExObj (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExObj"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_class_str_item _loc x2) - | Ast.ExNew (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExNew"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.ExMat (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExMat"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_match_case _loc x2) - | Ast.ExLmd (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExLmd"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_expr _loc x2), - meta_expr _loc x3) - | Ast.ExLet (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExLet"))), - meta_acc_Loc_t _loc x0), - meta_meta_bool _loc x1), - meta_binding _loc x2), - meta_expr _loc x3) - | Ast.ExLaz (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExLaz"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1) - | Ast.ExLab (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExLab"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_expr _loc x2) - | Ast.ExNativeInt (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExNativeInt"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExInt64 (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExInt64"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExInt32 (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExInt32"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExInt (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExInt"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExIfe (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExIfe"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2), - meta_expr _loc x3) - | Ast.ExFun (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExFun"))), - meta_acc_Loc_t _loc x0), - meta_match_case _loc x1) - | Ast.ExFor (x0, x1, x2, x3, x4, x5) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExFor"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_expr _loc x2), - meta_expr _loc x3), - meta_meta_bool _loc x4), - meta_expr _loc x5) - | Ast.ExFlo (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExFlo"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExCoe (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExCoe"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_ctyp _loc x2), - meta_ctyp _loc x3) - | Ast.ExChr (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExChr"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.ExAss (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExAss"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExAsr (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExAsr"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1) - | Ast.ExAsf x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExAsf"))), - meta_acc_Loc_t _loc x0) - | Ast.ExSem (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExSem"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExArr (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExArr"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1) - | Ast.ExAre (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExAre"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExApp (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExApp"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.ExAcc (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExAcc"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1), - meta_expr _loc x2) - | Ast.ExId (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExId"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.ExNil x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ExNil"))), - meta_acc_Loc_t _loc x0) - and meta_ident _loc = - function - | Ast.IdAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.IdUid (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "IdUid"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.IdLid (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "IdLid"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.IdApp (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "IdApp"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1), - meta_ident _loc x2) - | Ast.IdAcc (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "IdAcc"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1), - meta_ident _loc x2) - and meta_match_case _loc = - function - | Ast.McAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.McArr (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "McArr"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_expr _loc x2), - meta_expr _loc x3) - | Ast.McOr (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "McOr"))), - meta_acc_Loc_t _loc x0), - meta_match_case _loc x1), - meta_match_case _loc x2) - | Ast.McNil x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "McNil"))), - meta_acc_Loc_t _loc x0) - and meta_meta_bool _loc = - function - | Ast.BAnt x0 -> Ast.PaAnt (_loc, x0) - | Ast.BFalse -> - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "BFalse"))) - | Ast.BTrue -> - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "BTrue"))) - and meta_meta_list mf_a _loc = - function - | Ast.LAnt x0 -> Ast.PaAnt (_loc, x0) - | Ast.LCons (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "LCons"))), - mf_a _loc x0), - meta_meta_list mf_a _loc x1) - | Ast.LNil -> - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "LNil"))) - and meta_meta_option mf_a _loc = - function - | Ast.OAnt x0 -> Ast.PaAnt (_loc, x0) - | Ast.OSome x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "OSome"))), - mf_a _loc x0) - | Ast.ONone -> - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "ONone"))) - and meta_module_binding _loc = - function - | Ast.MbAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.MbCol (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MbCol"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_type _loc x2) - | Ast.MbColEq (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MbColEq"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_type _loc x2), - meta_module_expr _loc x3) - | Ast.MbAnd (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MbAnd"))), - meta_acc_Loc_t _loc x0), - meta_module_binding _loc x1), - meta_module_binding _loc x2) - | Ast.MbNil x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MbNil"))), - meta_acc_Loc_t _loc x0) - and meta_module_expr _loc = - function - | Ast.MeAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.MeTyc (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MeTyc"))), - meta_acc_Loc_t _loc x0), - meta_module_expr _loc x1), - meta_module_type _loc x2) - | Ast.MeStr (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MeStr"))), - meta_acc_Loc_t _loc x0), - meta_str_item _loc x1) - | Ast.MeFun (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MeFun"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_type _loc x2), - meta_module_expr _loc x3) - | Ast.MeApp (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MeApp"))), - meta_acc_Loc_t _loc x0), - meta_module_expr _loc x1), - meta_module_expr _loc x2) - | Ast.MeId (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MeId"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - and meta_module_type _loc = - function - | Ast.MtAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.MtWit (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MtWit"))), - meta_acc_Loc_t _loc x0), - meta_module_type _loc x1), - meta_with_constr _loc x2) - | Ast.MtSig (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MtSig"))), - meta_acc_Loc_t _loc x0), - meta_sig_item _loc x1) - | Ast.MtQuo (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MtQuo"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.MtFun (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MtFun"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_type _loc x2), - meta_module_type _loc x3) - | Ast.MtId (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "MtId"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - and meta_patt _loc = - function - | Ast.PaVrn (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaVrn"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaTyp (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaTyp"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.PaTyc (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaTyc"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_ctyp _loc x2) - | Ast.PaTup (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaTup"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1) - | Ast.PaStr (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaStr"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaEq (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaEq"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_patt _loc x2) - | Ast.PaRec (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaRec"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1) - | Ast.PaRng (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaRng"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_patt _loc x2) - | Ast.PaOrp (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaOrp"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_patt _loc x2) - | Ast.PaOlbi (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaOlbi"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_patt _loc x2), - meta_expr _loc x3) - | Ast.PaOlb (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaOlb"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_patt _loc x2) - | Ast.PaLab (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaLab"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_patt _loc x2) - | Ast.PaFlo (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaFlo"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaNativeInt (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaNativeInt"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaInt64 (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaInt64"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaInt32 (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaInt32"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaInt (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaInt"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaChr (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaChr"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1) - | Ast.PaSem (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaSem"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_patt _loc x2) - | Ast.PaCom (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaCom"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_patt _loc x2) - | Ast.PaArr (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaArr"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1) - | Ast.PaApp (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaApp"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_patt _loc x2) - | Ast.PaAny x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaAny"))), - meta_acc_Loc_t _loc x0) - | Ast.PaAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.PaAli (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaAli"))), - meta_acc_Loc_t _loc x0), - meta_patt _loc x1), - meta_patt _loc x2) - | Ast.PaId (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaId"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.PaNil x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "PaNil"))), - meta_acc_Loc_t _loc x0) - and meta_sig_item _loc = - function - | Ast.SgAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.SgVal (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgVal"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_ctyp _loc x2) - | Ast.SgTyp (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgTyp"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.SgOpn (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgOpn"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.SgMty (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgMty"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_type _loc x2) - | Ast.SgRecMod (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgRecMod"))), - meta_acc_Loc_t _loc x0), - meta_module_binding _loc x1) - | Ast.SgMod (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgMod"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_type _loc x2) - | Ast.SgInc (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgInc"))), - meta_acc_Loc_t _loc x0), - meta_module_type _loc x1) - | Ast.SgExt (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgExt"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_ctyp _loc x2), - meta_meta_list meta_string _loc x3) - | Ast.SgExc (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgExc"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.SgDir (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgDir"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_expr _loc x2) - | Ast.SgSem (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgSem"))), - meta_acc_Loc_t _loc x0), - meta_sig_item _loc x1), - meta_sig_item _loc x2) - | Ast.SgClt (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgClt"))), - meta_acc_Loc_t _loc x0), - meta_class_type _loc x1) - | Ast.SgCls (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgCls"))), - meta_acc_Loc_t _loc x0), - meta_class_type _loc x1) - | Ast.SgNil x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "SgNil"))), - meta_acc_Loc_t _loc x0) - and meta_str_item _loc = - function - | Ast.StAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.StVal (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StVal"))), - meta_acc_Loc_t _loc x0), - meta_meta_bool _loc x1), - meta_binding _loc x2) - | Ast.StTyp (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StTyp"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1) - | Ast.StOpn (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StOpn"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1) - | Ast.StMty (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StMty"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_type _loc x2) - | Ast.StRecMod (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StRecMod"))), - meta_acc_Loc_t _loc x0), - meta_module_binding _loc x1) - | Ast.StMod (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StMod"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_module_expr _loc x2) - | Ast.StInc (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StInc"))), - meta_acc_Loc_t _loc x0), - meta_module_expr _loc x1) - | Ast.StExt (x0, x1, x2, x3) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StExt"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_ctyp _loc x2), - meta_meta_list meta_string _loc x3) - | Ast.StExp (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StExp"))), - meta_acc_Loc_t _loc x0), - meta_expr _loc x1) - | Ast.StExc (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StExc"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_meta_option meta_ident _loc x2) - | Ast.StDir (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StDir"))), - meta_acc_Loc_t _loc x0), - meta_string _loc x1), - meta_expr _loc x2) - | Ast.StSem (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StSem"))), - meta_acc_Loc_t _loc x0), - meta_str_item _loc x1), - meta_str_item _loc x2) - | Ast.StClt (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StClt"))), - meta_acc_Loc_t _loc x0), - meta_class_type _loc x1) - | Ast.StCls (x0, x1) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StCls"))), - meta_acc_Loc_t _loc x0), - meta_class_expr _loc x1) - | Ast.StNil x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "StNil"))), - meta_acc_Loc_t _loc x0) - and meta_with_constr _loc = - function - | Ast.WcAnt (x0, x1) -> Ast.PaAnt (x0, x1) - | Ast.WcAnd (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "WcAnd"))), - meta_acc_Loc_t _loc x0), - meta_with_constr _loc x1), - meta_with_constr _loc x2) - | Ast.WcMod (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "WcMod"))), - meta_acc_Loc_t _loc x0), - meta_ident _loc x1), - meta_ident _loc x2) - | Ast.WcTyp (x0, x1, x2) -> - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, - Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "WcTyp"))), - meta_acc_Loc_t _loc x0), - meta_ctyp _loc x1), - meta_ctyp _loc x2) - | Ast.WcNil x0 -> - Ast.PaApp (_loc, - Ast.PaId (_loc, - Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), - Ast.IdUid (_loc, "WcNil"))), - meta_acc_Loc_t _loc x0) - end - end - end - class map = - object (o) - method string = fun x -> (x : string) - method int = fun x -> (x : int) - method float = fun x -> (x : float) - method bool = fun x -> (x : bool) - method list : 'a 'b. ('a -> 'b) -> 'a list -> 'b list = List. - map - method option : 'a 'b. ('a -> 'b) -> 'a option -> 'b option = - fun f -> function | None -> None | Some x -> Some (f x) - method array : 'a 'b. ('a -> 'b) -> 'a array -> 'b array = - Array.map - method ref : 'a 'b. ('a -> 'b) -> 'a ref -> 'b ref = - fun f { contents = x } -> { contents = f x; } - method _Loc_t : Loc.t -> Loc.t = fun x -> x - method with_constr : with_constr -> with_constr = - function - | WcNil _x0 -> WcNil (o#_Loc_t _x0) - | WcTyp (_x0, _x1, _x2) -> - WcTyp (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | WcMod (_x0, _x1, _x2) -> - WcMod (o#_Loc_t _x0, o#ident _x1, o#ident _x2) - | WcAnd (_x0, _x1, _x2) -> - WcAnd (o#_Loc_t _x0, o#with_constr _x1, - o#with_constr _x2) - | WcAnt (_x0, _x1) -> WcAnt (o#_Loc_t _x0, o#string _x1) - method str_item : str_item -> str_item = - function - | StNil _x0 -> StNil (o#_Loc_t _x0) - | StCls (_x0, _x1) -> - StCls (o#_Loc_t _x0, o#class_expr _x1) - | StClt (_x0, _x1) -> - StClt (o#_Loc_t _x0, o#class_type _x1) - | StSem (_x0, _x1, _x2) -> - StSem (o#_Loc_t _x0, o#str_item _x1, o#str_item _x2) - | StDir (_x0, _x1, _x2) -> - StDir (o#_Loc_t _x0, o#string _x1, o#expr _x2) - | StExc (_x0, _x1, _x2) -> - StExc (o#_Loc_t _x0, o#ctyp _x1, - o#meta_option o#ident _x2) - | StExp (_x0, _x1) -> StExp (o#_Loc_t _x0, o#expr _x1) - | StExt (_x0, _x1, _x2, _x3) -> - StExt (o#_Loc_t _x0, o#string _x1, o#ctyp _x2, - o#meta_list o#string _x3) - | StInc (_x0, _x1) -> - StInc (o#_Loc_t _x0, o#module_expr _x1) - | StMod (_x0, _x1, _x2) -> - StMod (o#_Loc_t _x0, o#string _x1, o#module_expr _x2) - | StRecMod (_x0, _x1) -> - StRecMod (o#_Loc_t _x0, o#module_binding _x1) - | StMty (_x0, _x1, _x2) -> - StMty (o#_Loc_t _x0, o#string _x1, o#module_type _x2) - | StOpn (_x0, _x1) -> StOpn (o#_Loc_t _x0, o#ident _x1) - | StTyp (_x0, _x1) -> StTyp (o#_Loc_t _x0, o#ctyp _x1) - | StVal (_x0, _x1, _x2) -> - StVal (o#_Loc_t _x0, o#meta_bool _x1, o#binding _x2) - | StAnt (_x0, _x1) -> StAnt (o#_Loc_t _x0, o#string _x1) - method sig_item : sig_item -> sig_item = - function - | SgNil _x0 -> SgNil (o#_Loc_t _x0) - | SgCls (_x0, _x1) -> - SgCls (o#_Loc_t _x0, o#class_type _x1) - | SgClt (_x0, _x1) -> - SgClt (o#_Loc_t _x0, o#class_type _x1) - | SgSem (_x0, _x1, _x2) -> - SgSem (o#_Loc_t _x0, o#sig_item _x1, o#sig_item _x2) - | SgDir (_x0, _x1, _x2) -> - SgDir (o#_Loc_t _x0, o#string _x1, o#expr _x2) - | SgExc (_x0, _x1) -> SgExc (o#_Loc_t _x0, o#ctyp _x1) - | SgExt (_x0, _x1, _x2, _x3) -> - SgExt (o#_Loc_t _x0, o#string _x1, o#ctyp _x2, - o#meta_list o#string _x3) - | SgInc (_x0, _x1) -> - SgInc (o#_Loc_t _x0, o#module_type _x1) - | SgMod (_x0, _x1, _x2) -> - SgMod (o#_Loc_t _x0, o#string _x1, o#module_type _x2) - | SgRecMod (_x0, _x1) -> - SgRecMod (o#_Loc_t _x0, o#module_binding _x1) - | SgMty (_x0, _x1, _x2) -> - SgMty (o#_Loc_t _x0, o#string _x1, o#module_type _x2) - | SgOpn (_x0, _x1) -> SgOpn (o#_Loc_t _x0, o#ident _x1) - | SgTyp (_x0, _x1) -> SgTyp (o#_Loc_t _x0, o#ctyp _x1) - | SgVal (_x0, _x1, _x2) -> - SgVal (o#_Loc_t _x0, o#string _x1, o#ctyp _x2) - | SgAnt (_x0, _x1) -> SgAnt (o#_Loc_t _x0, o#string _x1) - method patt : patt -> patt = - function - | PaNil _x0 -> PaNil (o#_Loc_t _x0) - | PaId (_x0, _x1) -> PaId (o#_Loc_t _x0, o#ident _x1) - | PaAli (_x0, _x1, _x2) -> - PaAli (o#_Loc_t _x0, o#patt _x1, o#patt _x2) - | PaAnt (_x0, _x1) -> PaAnt (o#_Loc_t _x0, o#string _x1) - | PaAny _x0 -> PaAny (o#_Loc_t _x0) - | PaApp (_x0, _x1, _x2) -> - PaApp (o#_Loc_t _x0, o#patt _x1, o#patt _x2) - | PaArr (_x0, _x1) -> PaArr (o#_Loc_t _x0, o#patt _x1) - | PaCom (_x0, _x1, _x2) -> - PaCom (o#_Loc_t _x0, o#patt _x1, o#patt _x2) - | PaSem (_x0, _x1, _x2) -> - PaSem (o#_Loc_t _x0, o#patt _x1, o#patt _x2) - | PaChr (_x0, _x1) -> PaChr (o#_Loc_t _x0, o#string _x1) - | PaInt (_x0, _x1) -> PaInt (o#_Loc_t _x0, o#string _x1) - | PaInt32 (_x0, _x1) -> - PaInt32 (o#_Loc_t _x0, o#string _x1) - | PaInt64 (_x0, _x1) -> - PaInt64 (o#_Loc_t _x0, o#string _x1) - | PaNativeInt (_x0, _x1) -> - PaNativeInt (o#_Loc_t _x0, o#string _x1) - | PaFlo (_x0, _x1) -> PaFlo (o#_Loc_t _x0, o#string _x1) - | PaLab (_x0, _x1, _x2) -> - PaLab (o#_Loc_t _x0, o#string _x1, o#patt _x2) - | PaOlb (_x0, _x1, _x2) -> - PaOlb (o#_Loc_t _x0, o#string _x1, o#patt _x2) - | PaOlbi (_x0, _x1, _x2, _x3) -> - PaOlbi (o#_Loc_t _x0, o#string _x1, o#patt _x2, - o#expr _x3) - | PaOrp (_x0, _x1, _x2) -> - PaOrp (o#_Loc_t _x0, o#patt _x1, o#patt _x2) - | PaRng (_x0, _x1, _x2) -> - PaRng (o#_Loc_t _x0, o#patt _x1, o#patt _x2) - | PaRec (_x0, _x1) -> PaRec (o#_Loc_t _x0, o#patt _x1) - | PaEq (_x0, _x1, _x2) -> - PaEq (o#_Loc_t _x0, o#patt _x1, o#patt _x2) - | PaStr (_x0, _x1) -> PaStr (o#_Loc_t _x0, o#string _x1) - | PaTup (_x0, _x1) -> PaTup (o#_Loc_t _x0, o#patt _x1) - | PaTyc (_x0, _x1, _x2) -> - PaTyc (o#_Loc_t _x0, o#patt _x1, o#ctyp _x2) - | PaTyp (_x0, _x1) -> PaTyp (o#_Loc_t _x0, o#ident _x1) - | PaVrn (_x0, _x1) -> PaVrn (o#_Loc_t _x0, o#string _x1) - method module_type : module_type -> module_type = - function - | MtId (_x0, _x1) -> MtId (o#_Loc_t _x0, o#ident _x1) - | MtFun (_x0, _x1, _x2, _x3) -> - MtFun (o#_Loc_t _x0, o#string _x1, o#module_type _x2, - o#module_type _x3) - | MtQuo (_x0, _x1) -> MtQuo (o#_Loc_t _x0, o#string _x1) - | MtSig (_x0, _x1) -> MtSig (o#_Loc_t _x0, o#sig_item _x1) - | MtWit (_x0, _x1, _x2) -> - MtWit (o#_Loc_t _x0, o#module_type _x1, - o#with_constr _x2) - | MtAnt (_x0, _x1) -> MtAnt (o#_Loc_t _x0, o#string _x1) - method module_expr : module_expr -> module_expr = - function - | MeId (_x0, _x1) -> MeId (o#_Loc_t _x0, o#ident _x1) - | MeApp (_x0, _x1, _x2) -> - MeApp (o#_Loc_t _x0, o#module_expr _x1, - o#module_expr _x2) - | MeFun (_x0, _x1, _x2, _x3) -> - MeFun (o#_Loc_t _x0, o#string _x1, o#module_type _x2, - o#module_expr _x3) - | MeStr (_x0, _x1) -> MeStr (o#_Loc_t _x0, o#str_item _x1) - | MeTyc (_x0, _x1, _x2) -> - MeTyc (o#_Loc_t _x0, o#module_expr _x1, - o#module_type _x2) - | MeAnt (_x0, _x1) -> MeAnt (o#_Loc_t _x0, o#string _x1) - method module_binding : module_binding -> module_binding = - function - | MbNil _x0 -> MbNil (o#_Loc_t _x0) - | MbAnd (_x0, _x1, _x2) -> - MbAnd (o#_Loc_t _x0, o#module_binding _x1, - o#module_binding _x2) - | MbColEq (_x0, _x1, _x2, _x3) -> - MbColEq (o#_Loc_t _x0, o#string _x1, o#module_type _x2, - o#module_expr _x3) - | MbCol (_x0, _x1, _x2) -> - MbCol (o#_Loc_t _x0, o#string _x1, o#module_type _x2) - | MbAnt (_x0, _x1) -> MbAnt (o#_Loc_t _x0, o#string _x1) - method meta_option : - 'a 'b. ('a -> 'b) -> 'a meta_option -> 'b meta_option = - fun _f_a -> - function - | ONone -> ONone - | OSome _x0 -> OSome (_f_a _x0) - | OAnt _x0 -> OAnt (o#string _x0) - method meta_list : - 'a 'b. ('a -> 'b) -> 'a meta_list -> 'b meta_list = - fun _f_a -> - function - | LNil -> LNil - | LCons (_x0, _x1) -> - LCons (_f_a _x0, o#meta_list _f_a _x1) - | LAnt _x0 -> LAnt (o#string _x0) - method meta_bool : meta_bool -> meta_bool = - function - | BTrue -> BTrue - | BFalse -> BFalse - | BAnt _x0 -> BAnt (o#string _x0) - method match_case : match_case -> match_case = - function - | McNil _x0 -> McNil (o#_Loc_t _x0) - | McOr (_x0, _x1, _x2) -> - McOr (o#_Loc_t _x0, o#match_case _x1, o#match_case _x2) - | McArr (_x0, _x1, _x2, _x3) -> - McArr (o#_Loc_t _x0, o#patt _x1, o#expr _x2, - o#expr _x3) - | McAnt (_x0, _x1) -> McAnt (o#_Loc_t _x0, o#string _x1) - method ident : ident -> ident = - function - | IdAcc (_x0, _x1, _x2) -> - IdAcc (o#_Loc_t _x0, o#ident _x1, o#ident _x2) - | IdApp (_x0, _x1, _x2) -> - IdApp (o#_Loc_t _x0, o#ident _x1, o#ident _x2) - | IdLid (_x0, _x1) -> IdLid (o#_Loc_t _x0, o#string _x1) - | IdUid (_x0, _x1) -> IdUid (o#_Loc_t _x0, o#string _x1) - | IdAnt (_x0, _x1) -> IdAnt (o#_Loc_t _x0, o#string _x1) - method expr : expr -> expr = - function - | ExNil _x0 -> ExNil (o#_Loc_t _x0) - | ExId (_x0, _x1) -> ExId (o#_Loc_t _x0, o#ident _x1) - | ExAcc (_x0, _x1, _x2) -> - ExAcc (o#_Loc_t _x0, o#expr _x1, o#expr _x2) - | ExAnt (_x0, _x1) -> ExAnt (o#_Loc_t _x0, o#string _x1) - | ExApp (_x0, _x1, _x2) -> - ExApp (o#_Loc_t _x0, o#expr _x1, o#expr _x2) - | ExAre (_x0, _x1, _x2) -> - ExAre (o#_Loc_t _x0, o#expr _x1, o#expr _x2) - | ExArr (_x0, _x1) -> ExArr (o#_Loc_t _x0, o#expr _x1) - | ExSem (_x0, _x1, _x2) -> - ExSem (o#_Loc_t _x0, o#expr _x1, o#expr _x2) - | ExAsf _x0 -> ExAsf (o#_Loc_t _x0) - | ExAsr (_x0, _x1) -> ExAsr (o#_Loc_t _x0, o#expr _x1) - | ExAss (_x0, _x1, _x2) -> - ExAss (o#_Loc_t _x0, o#expr _x1, o#expr _x2) - | ExChr (_x0, _x1) -> ExChr (o#_Loc_t _x0, o#string _x1) - | ExCoe (_x0, _x1, _x2, _x3) -> - ExCoe (o#_Loc_t _x0, o#expr _x1, o#ctyp _x2, - o#ctyp _x3) - | ExFlo (_x0, _x1) -> ExFlo (o#_Loc_t _x0, o#string _x1) - | ExFor (_x0, _x1, _x2, _x3, _x4, _x5) -> - ExFor (o#_Loc_t _x0, o#string _x1, o#expr _x2, - o#expr _x3, o#meta_bool _x4, o#expr _x5) - | ExFun (_x0, _x1) -> - ExFun (o#_Loc_t _x0, o#match_case _x1) - | ExIfe (_x0, _x1, _x2, _x3) -> - ExIfe (o#_Loc_t _x0, o#expr _x1, o#expr _x2, - o#expr _x3) - | ExInt (_x0, _x1) -> ExInt (o#_Loc_t _x0, o#string _x1) - | ExInt32 (_x0, _x1) -> - ExInt32 (o#_Loc_t _x0, o#string _x1) - | ExInt64 (_x0, _x1) -> - ExInt64 (o#_Loc_t _x0, o#string _x1) - | ExNativeInt (_x0, _x1) -> - ExNativeInt (o#_Loc_t _x0, o#string _x1) - | ExLab (_x0, _x1, _x2) -> - ExLab (o#_Loc_t _x0, o#string _x1, o#expr _x2) - | ExLaz (_x0, _x1) -> ExLaz (o#_Loc_t _x0, o#expr _x1) - | ExLet (_x0, _x1, _x2, _x3) -> - ExLet (o#_Loc_t _x0, o#meta_bool _x1, o#binding _x2, - o#expr _x3) - | ExLmd (_x0, _x1, _x2, _x3) -> - ExLmd (o#_Loc_t _x0, o#string _x1, o#module_expr _x2, - o#expr _x3) - | ExMat (_x0, _x1, _x2) -> - ExMat (o#_Loc_t _x0, o#expr _x1, o#match_case _x2) - | ExNew (_x0, _x1) -> ExNew (o#_Loc_t _x0, o#ident _x1) - | ExObj (_x0, _x1, _x2) -> - ExObj (o#_Loc_t _x0, o#patt _x1, o#class_str_item _x2) - | ExOlb (_x0, _x1, _x2) -> - ExOlb (o#_Loc_t _x0, o#string _x1, o#expr _x2) - | ExOvr (_x0, _x1) -> ExOvr (o#_Loc_t _x0, o#binding _x1) - | ExRec (_x0, _x1, _x2) -> - ExRec (o#_Loc_t _x0, o#binding _x1, o#expr _x2) - | ExSeq (_x0, _x1) -> ExSeq (o#_Loc_t _x0, o#expr _x1) - | ExSnd (_x0, _x1, _x2) -> - ExSnd (o#_Loc_t _x0, o#expr _x1, o#string _x2) - | ExSte (_x0, _x1, _x2) -> - ExSte (o#_Loc_t _x0, o#expr _x1, o#expr _x2) - | ExStr (_x0, _x1) -> ExStr (o#_Loc_t _x0, o#string _x1) - | ExTry (_x0, _x1, _x2) -> - ExTry (o#_Loc_t _x0, o#expr _x1, o#match_case _x2) - | ExTup (_x0, _x1) -> ExTup (o#_Loc_t _x0, o#expr _x1) - | ExCom (_x0, _x1, _x2) -> - ExCom (o#_Loc_t _x0, o#expr _x1, o#expr _x2) - | ExTyc (_x0, _x1, _x2) -> - ExTyc (o#_Loc_t _x0, o#expr _x1, o#ctyp _x2) - | ExVrn (_x0, _x1) -> ExVrn (o#_Loc_t _x0, o#string _x1) - | ExWhi (_x0, _x1, _x2) -> - ExWhi (o#_Loc_t _x0, o#expr _x1, o#expr _x2) - method ctyp : ctyp -> ctyp = - function - | TyNil _x0 -> TyNil (o#_Loc_t _x0) - | TyAli (_x0, _x1, _x2) -> - TyAli (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | TyAny _x0 -> TyAny (o#_Loc_t _x0) - | TyApp (_x0, _x1, _x2) -> - TyApp (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | TyArr (_x0, _x1, _x2) -> - TyArr (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | TyCls (_x0, _x1) -> TyCls (o#_Loc_t _x0, o#ident _x1) - | TyLab (_x0, _x1, _x2) -> - TyLab (o#_Loc_t _x0, o#string _x1, o#ctyp _x2) - | TyId (_x0, _x1) -> TyId (o#_Loc_t _x0, o#ident _x1) - | TyMan (_x0, _x1, _x2) -> - TyMan (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | TyDcl (_x0, _x1, _x2, _x3, _x4) -> - TyDcl (o#_Loc_t _x0, o#string _x1, o#list o#ctyp _x2, - o#ctyp _x3, - o#list - (fun (_x0, _x1) -> ((o#ctyp _x0), (o#ctyp _x1))) - _x4) - | TyObj (_x0, _x1, _x2) -> - TyObj (o#_Loc_t _x0, o#ctyp _x1, o#meta_bool _x2) - | TyOlb (_x0, _x1, _x2) -> - TyOlb (o#_Loc_t _x0, o#string _x1, o#ctyp _x2) - | TyPol (_x0, _x1, _x2) -> - TyPol (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | TyQuo (_x0, _x1) -> TyQuo (o#_Loc_t _x0, o#string _x1) - | TyQuP (_x0, _x1) -> TyQuP (o#_Loc_t _x0, o#string _x1) - | TyQuM (_x0, _x1) -> TyQuM (o#_Loc_t _x0, o#string _x1) - | TyVrn (_x0, _x1) -> TyVrn (o#_Loc_t _x0, o#string _x1) - | TyRec (_x0, _x1) -> TyRec (o#_Loc_t _x0, o#ctyp _x1) - | TyCol (_x0, _x1, _x2) -> - TyCol (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | TySem (_x0, _x1, _x2) -> - TySem (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | TyCom (_x0, _x1, _x2) -> - TyCom (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | TySum (_x0, _x1) -> TySum (o#_Loc_t _x0, o#ctyp _x1) - | TyOf (_x0, _x1, _x2) -> - TyOf (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | TyAnd (_x0, _x1, _x2) -> - TyAnd (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | TyOr (_x0, _x1, _x2) -> - TyOr (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | TyPrv (_x0, _x1) -> TyPrv (o#_Loc_t _x0, o#ctyp _x1) - | TyMut (_x0, _x1) -> TyMut (o#_Loc_t _x0, o#ctyp _x1) - | TyTup (_x0, _x1) -> TyTup (o#_Loc_t _x0, o#ctyp _x1) - | TySta (_x0, _x1, _x2) -> - TySta (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | TyVrnEq (_x0, _x1) -> TyVrnEq (o#_Loc_t _x0, o#ctyp _x1) - | TyVrnSup (_x0, _x1) -> - TyVrnSup (o#_Loc_t _x0, o#ctyp _x1) - | TyVrnInf (_x0, _x1) -> - TyVrnInf (o#_Loc_t _x0, o#ctyp _x1) - | TyVrnInfSup (_x0, _x1, _x2) -> - TyVrnInfSup (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | TyAmp (_x0, _x1, _x2) -> - TyAmp (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | TyOfAmp (_x0, _x1, _x2) -> - TyOfAmp (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | TyAnt (_x0, _x1) -> TyAnt (o#_Loc_t _x0, o#string _x1) - method class_type : class_type -> class_type = - function - | CtNil _x0 -> CtNil (o#_Loc_t _x0) - | CtCon (_x0, _x1, _x2, _x3) -> - CtCon (o#_Loc_t _x0, o#meta_bool _x1, o#ident _x2, - o#ctyp _x3) - | CtFun (_x0, _x1, _x2) -> - CtFun (o#_Loc_t _x0, o#ctyp _x1, o#class_type _x2) - | CtSig (_x0, _x1, _x2) -> - CtSig (o#_Loc_t _x0, o#ctyp _x1, o#class_sig_item _x2) - | CtAnd (_x0, _x1, _x2) -> - CtAnd (o#_Loc_t _x0, o#class_type _x1, - o#class_type _x2) - | CtCol (_x0, _x1, _x2) -> - CtCol (o#_Loc_t _x0, o#class_type _x1, - o#class_type _x2) - | CtEq (_x0, _x1, _x2) -> - CtEq (o#_Loc_t _x0, o#class_type _x1, o#class_type _x2) - | CtAnt (_x0, _x1) -> CtAnt (o#_Loc_t _x0, o#string _x1) - method class_str_item : class_str_item -> class_str_item = - function - | CrNil _x0 -> CrNil (o#_Loc_t _x0) - | CrSem (_x0, _x1, _x2) -> - CrSem (o#_Loc_t _x0, o#class_str_item _x1, - o#class_str_item _x2) - | CrCtr (_x0, _x1, _x2) -> - CrCtr (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | CrInh (_x0, _x1, _x2) -> - CrInh (o#_Loc_t _x0, o#class_expr _x1, o#string _x2) - | CrIni (_x0, _x1) -> CrIni (o#_Loc_t _x0, o#expr _x1) - | CrMth (_x0, _x1, _x2, _x3, _x4) -> - CrMth (o#_Loc_t _x0, o#string _x1, o#meta_bool _x2, - o#expr _x3, o#ctyp _x4) - | CrVal (_x0, _x1, _x2, _x3) -> - CrVal (o#_Loc_t _x0, o#string _x1, o#meta_bool _x2, - o#expr _x3) - | CrVir (_x0, _x1, _x2, _x3) -> - CrVir (o#_Loc_t _x0, o#string _x1, o#meta_bool _x2, - o#ctyp _x3) - | CrVvr (_x0, _x1, _x2, _x3) -> - CrVvr (o#_Loc_t _x0, o#string _x1, o#meta_bool _x2, - o#ctyp _x3) - | CrAnt (_x0, _x1) -> CrAnt (o#_Loc_t _x0, o#string _x1) - method class_sig_item : class_sig_item -> class_sig_item = - function - | CgNil _x0 -> CgNil (o#_Loc_t _x0) - | CgCtr (_x0, _x1, _x2) -> - CgCtr (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) - | CgSem (_x0, _x1, _x2) -> - CgSem (o#_Loc_t _x0, o#class_sig_item _x1, - o#class_sig_item _x2) - | CgInh (_x0, _x1) -> - CgInh (o#_Loc_t _x0, o#class_type _x1) - | CgMth (_x0, _x1, _x2, _x3) -> - CgMth (o#_Loc_t _x0, o#string _x1, o#meta_bool _x2, - o#ctyp _x3) - | CgVal (_x0, _x1, _x2, _x3, _x4) -> - CgVal (o#_Loc_t _x0, o#string _x1, o#meta_bool _x2, - o#meta_bool _x3, o#ctyp _x4) - | CgVir (_x0, _x1, _x2, _x3) -> - CgVir (o#_Loc_t _x0, o#string _x1, o#meta_bool _x2, - o#ctyp _x3) - | CgAnt (_x0, _x1) -> CgAnt (o#_Loc_t _x0, o#string _x1) - method class_expr : class_expr -> class_expr = - function - | CeNil _x0 -> CeNil (o#_Loc_t _x0) - | CeApp (_x0, _x1, _x2) -> - CeApp (o#_Loc_t _x0, o#class_expr _x1, o#expr _x2) - | CeCon (_x0, _x1, _x2, _x3) -> - CeCon (o#_Loc_t _x0, o#meta_bool _x1, o#ident _x2, - o#ctyp _x3) - | CeFun (_x0, _x1, _x2) -> - CeFun (o#_Loc_t _x0, o#patt _x1, o#class_expr _x2) - | CeLet (_x0, _x1, _x2, _x3) -> - CeLet (o#_Loc_t _x0, o#meta_bool _x1, o#binding _x2, - o#class_expr _x3) - | CeStr (_x0, _x1, _x2) -> - CeStr (o#_Loc_t _x0, o#patt _x1, o#class_str_item _x2) - | CeTyc (_x0, _x1, _x2) -> - CeTyc (o#_Loc_t _x0, o#class_expr _x1, - o#class_type _x2) - | CeAnd (_x0, _x1, _x2) -> - CeAnd (o#_Loc_t _x0, o#class_expr _x1, - o#class_expr _x2) - | CeEq (_x0, _x1, _x2) -> - CeEq (o#_Loc_t _x0, o#class_expr _x1, o#class_expr _x2) - | CeAnt (_x0, _x1) -> CeAnt (o#_Loc_t _x0, o#string _x1) - method binding : binding -> binding = - function - | BiNil _x0 -> BiNil (o#_Loc_t _x0) - | BiAnd (_x0, _x1, _x2) -> - BiAnd (o#_Loc_t _x0, o#binding _x1, o#binding _x2) - | BiSem (_x0, _x1, _x2) -> - BiSem (o#_Loc_t _x0, o#binding _x1, o#binding _x2) - | BiEq (_x0, _x1, _x2) -> - BiEq (o#_Loc_t _x0, o#patt _x1, o#expr _x2) - | BiAnt (_x0, _x1) -> BiAnt (o#_Loc_t _x0, o#string _x1) - end - class fold = - object ((o : 'self_type)) - method string = fun (_ : string) -> (o : 'self_type) - method int = fun (_ : int) -> (o : 'self_type) - method float = fun (_ : float) -> (o : 'self_type) - method bool = fun (_ : bool) -> (o : 'self_type) - method list : - 'a. - ('self_type -> 'a -> 'self_type) -> 'a list -> 'self_type = - fun f -> List.fold_left f o - method option : - 'a. - ('self_type -> 'a -> 'self_type) -> - 'a option -> 'self_type = - fun f -> function | None -> o | Some x -> f o x - method array : - 'a. - ('self_type -> 'a -> 'self_type) -> - 'a array -> 'self_type = - fun f -> Array.fold_left f o - method ref : - 'a. - ('self_type -> 'a -> 'self_type) -> 'a ref -> 'self_type = - fun f { contents = x } -> f o x - method _Loc_t : Loc.t -> 'self_type = fun _ -> o - method with_constr : with_constr -> 'self_type = - function - | WcNil _x0 -> o#_Loc_t _x0 - | WcTyp (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | WcMod (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ident _x1)#ident _x2 - | WcAnd (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#with_constr _x1)#with_constr _x2 - | WcAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - method str_item : str_item -> 'self_type = - function - | StNil _x0 -> o#_Loc_t _x0 - | StCls (_x0, _x1) -> (o#_Loc_t _x0)#class_expr _x1 - | StClt (_x0, _x1) -> (o#_Loc_t _x0)#class_type _x1 - | StSem (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#str_item _x1)#str_item _x2 - | StDir (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#string _x1)#expr _x2 - | StExc (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#meta_option - (fun o -> o#ident) _x2 - | StExp (_x0, _x1) -> (o#_Loc_t _x0)#expr _x1 - | StExt (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#string _x1)#ctyp _x2)#meta_list - (fun o -> o#string) _x3 - | StInc (_x0, _x1) -> (o#_Loc_t _x0)#module_expr _x1 - | StMod (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#string _x1)#module_expr _x2 - | StRecMod (_x0, _x1) -> (o#_Loc_t _x0)#module_binding _x1 - | StMty (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#string _x1)#module_type _x2 - | StOpn (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 - | StTyp (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 - | StVal (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#meta_bool _x1)#binding _x2 - | StAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - method sig_item : sig_item -> 'self_type = - function - | SgNil _x0 -> o#_Loc_t _x0 - | SgCls (_x0, _x1) -> (o#_Loc_t _x0)#class_type _x1 - | SgClt (_x0, _x1) -> (o#_Loc_t _x0)#class_type _x1 - | SgSem (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#sig_item _x1)#sig_item _x2 - | SgDir (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#string _x1)#expr _x2 - | SgExc (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 - | SgExt (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#string _x1)#ctyp _x2)#meta_list - (fun o -> o#string) _x3 - | SgInc (_x0, _x1) -> (o#_Loc_t _x0)#module_type _x1 - | SgMod (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#string _x1)#module_type _x2 - | SgRecMod (_x0, _x1) -> (o#_Loc_t _x0)#module_binding _x1 - | SgMty (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#string _x1)#module_type _x2 - | SgOpn (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 - | SgTyp (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 - | SgVal (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#string _x1)#ctyp _x2 - | SgAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - method patt : patt -> 'self_type = - function - | PaNil _x0 -> o#_Loc_t _x0 - | PaId (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 - | PaAli (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#patt _x1)#patt _x2 - | PaAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | PaAny _x0 -> o#_Loc_t _x0 - | PaApp (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#patt _x1)#patt _x2 - | PaArr (_x0, _x1) -> (o#_Loc_t _x0)#patt _x1 - | PaCom (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#patt _x1)#patt _x2 - | PaSem (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#patt _x1)#patt _x2 - | PaChr (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | PaInt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | PaInt32 (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | PaInt64 (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | PaNativeInt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | PaFlo (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | PaLab (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#string _x1)#patt _x2 - | PaOlb (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#string _x1)#patt _x2 - | PaOlbi (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#string _x1)#patt _x2)#expr _x3 - | PaOrp (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#patt _x1)#patt _x2 - | PaRng (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#patt _x1)#patt _x2 - | PaRec (_x0, _x1) -> (o#_Loc_t _x0)#patt _x1 - | PaEq (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#patt _x1)#patt _x2 - | PaStr (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | PaTup (_x0, _x1) -> (o#_Loc_t _x0)#patt _x1 - | PaTyc (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#patt _x1)#ctyp _x2 - | PaTyp (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 - | PaVrn (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - method module_type : module_type -> 'self_type = - function - | MtId (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 - | MtFun (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#string _x1)#module_type _x2)# - module_type _x3 - | MtQuo (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | MtSig (_x0, _x1) -> (o#_Loc_t _x0)#sig_item _x1 - | MtWit (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#module_type _x1)#with_constr _x2 - | MtAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - method module_expr : module_expr -> 'self_type = - function - | MeId (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 - | MeApp (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#module_expr _x1)#module_expr _x2 - | MeFun (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#string _x1)#module_type _x2)# - module_expr _x3 - | MeStr (_x0, _x1) -> (o#_Loc_t _x0)#str_item _x1 - | MeTyc (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#module_expr _x1)#module_type _x2 - | MeAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - method module_binding : module_binding -> 'self_type = - function - | MbNil _x0 -> o#_Loc_t _x0 - | MbAnd (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#module_binding _x1)#module_binding _x2 - | MbColEq (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#string _x1)#module_type _x2)# - module_expr _x3 - | MbCol (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#string _x1)#module_type _x2 - | MbAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - method meta_option : - 'a. - ('self_type -> 'a -> 'self_type) -> - 'a meta_option -> 'self_type = - fun _f_a -> - function - | ONone -> o - | OSome _x0 -> _f_a o _x0 - | OAnt _x0 -> o#string _x0 - method meta_list : - 'a. - ('self_type -> 'a -> 'self_type) -> - 'a meta_list -> 'self_type = - fun _f_a -> - function - | LNil -> o - | LCons (_x0, _x1) -> - (_f_a o _x0)#meta_list (fun o -> _f_a o) _x1 - | LAnt _x0 -> o#string _x0 - method meta_bool : meta_bool -> 'self_type = - function - | BTrue -> o - | BFalse -> o - | BAnt _x0 -> o#string _x0 - method match_case : match_case -> 'self_type = - function - | McNil _x0 -> o#_Loc_t _x0 - | McOr (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#match_case _x1)#match_case _x2 - | McArr (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#patt _x1)#expr _x2)#expr _x3 - | McAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - method ident : ident -> 'self_type = - function - | IdAcc (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ident _x1)#ident _x2 - | IdApp (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ident _x1)#ident _x2 - | IdLid (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | IdUid (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | IdAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - method expr : expr -> 'self_type = - function - | ExNil _x0 -> o#_Loc_t _x0 - | ExId (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 - | ExAcc (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#expr _x1)#expr _x2 - | ExAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | ExApp (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#expr _x1)#expr _x2 - | ExAre (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#expr _x1)#expr _x2 - | ExArr (_x0, _x1) -> (o#_Loc_t _x0)#expr _x1 - | ExSem (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#expr _x1)#expr _x2 - | ExAsf _x0 -> o#_Loc_t _x0 - | ExAsr (_x0, _x1) -> (o#_Loc_t _x0)#expr _x1 - | ExAss (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#expr _x1)#expr _x2 - | ExChr (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | ExCoe (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#expr _x1)#ctyp _x2)#ctyp _x3 - | ExFlo (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | ExFor (_x0, _x1, _x2, _x3, _x4, _x5) -> - (((((o#_Loc_t _x0)#string _x1)#expr _x2)#expr _x3)# - meta_bool _x4)# - expr _x5 - | ExFun (_x0, _x1) -> (o#_Loc_t _x0)#match_case _x1 - | ExIfe (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#expr _x1)#expr _x2)#expr _x3 - | ExInt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | ExInt32 (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | ExInt64 (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | ExNativeInt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | ExLab (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#string _x1)#expr _x2 - | ExLaz (_x0, _x1) -> (o#_Loc_t _x0)#expr _x1 - | ExLet (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#meta_bool _x1)#binding _x2)#expr _x3 - | ExLmd (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#string _x1)#module_expr _x2)#expr _x3 - | ExMat (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#expr _x1)#match_case _x2 - | ExNew (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 - | ExObj (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#patt _x1)#class_str_item _x2 - | ExOlb (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#string _x1)#expr _x2 - | ExOvr (_x0, _x1) -> (o#_Loc_t _x0)#binding _x1 - | ExRec (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#binding _x1)#expr _x2 - | ExSeq (_x0, _x1) -> (o#_Loc_t _x0)#expr _x1 - | ExSnd (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#expr _x1)#string _x2 - | ExSte (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#expr _x1)#expr _x2 - | ExStr (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | ExTry (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#expr _x1)#match_case _x2 - | ExTup (_x0, _x1) -> (o#_Loc_t _x0)#expr _x1 - | ExCom (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#expr _x1)#expr _x2 - | ExTyc (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#expr _x1)#ctyp _x2 - | ExVrn (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | ExWhi (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#expr _x1)#expr _x2 - method ctyp : ctyp -> 'self_type = - function - | TyNil _x0 -> o#_Loc_t _x0 - | TyAli (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyAny _x0 -> o#_Loc_t _x0 - | TyApp (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyArr (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyCls (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 - | TyLab (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#string _x1)#ctyp _x2 - | TyId (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 - | TyMan (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyDcl (_x0, _x1, _x2, _x3, _x4) -> - ((((o#_Loc_t _x0)#string _x1)#list (fun o -> o#ctyp) - _x2)# - ctyp _x3)# - list (fun o (_x0, _x1) -> (o#ctyp _x0)#ctyp _x1) _x4 - | TyObj (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#meta_bool _x2 - | TyOlb (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#string _x1)#ctyp _x2 - | TyPol (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyQuo (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | TyQuP (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | TyQuM (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | TyVrn (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - | TyRec (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 - | TyCol (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TySem (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyCom (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TySum (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 - | TyOf (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyAnd (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyOr (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyPrv (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 - | TyMut (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 - | TyTup (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 - | TySta (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyVrnEq (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 - | TyVrnSup (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 - | TyVrnInf (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 - | TyVrnInfSup (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyAmp (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyOfAmp (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - method class_type : class_type -> 'self_type = - function - | CtNil _x0 -> o#_Loc_t _x0 - | CtCon (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#meta_bool _x1)#ident _x2)#ctyp _x3 - | CtFun (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#class_type _x2 - | CtSig (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#class_sig_item _x2 - | CtAnd (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#class_type _x1)#class_type _x2 - | CtCol (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#class_type _x1)#class_type _x2 - | CtEq (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#class_type _x1)#class_type _x2 - | CtAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - method class_str_item : class_str_item -> 'self_type = - function - | CrNil _x0 -> o#_Loc_t _x0 - | CrSem (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#class_str_item _x1)#class_str_item _x2 - | CrCtr (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | CrInh (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#class_expr _x1)#string _x2 - | CrIni (_x0, _x1) -> (o#_Loc_t _x0)#expr _x1 - | CrMth (_x0, _x1, _x2, _x3, _x4) -> - ((((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#expr _x3)# - ctyp _x4 - | CrVal (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#expr _x3 - | CrVir (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 - | CrVvr (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 - | CrAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - method class_sig_item : class_sig_item -> 'self_type = - function - | CgNil _x0 -> o#_Loc_t _x0 - | CgCtr (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | CgSem (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#class_sig_item _x1)#class_sig_item _x2 - | CgInh (_x0, _x1) -> (o#_Loc_t _x0)#class_type _x1 - | CgMth (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 - | CgVal (_x0, _x1, _x2, _x3, _x4) -> - ((((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#meta_bool - _x3)# - ctyp _x4 - | CgVir (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 - | CgAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - method class_expr : class_expr -> 'self_type = - function - | CeNil _x0 -> o#_Loc_t _x0 - | CeApp (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#class_expr _x1)#expr _x2 - | CeCon (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#meta_bool _x1)#ident _x2)#ctyp _x3 - | CeFun (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#patt _x1)#class_expr _x2 - | CeLet (_x0, _x1, _x2, _x3) -> - (((o#_Loc_t _x0)#meta_bool _x1)#binding _x2)#class_expr - _x3 - | CeStr (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#patt _x1)#class_str_item _x2 - | CeTyc (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#class_expr _x1)#class_type _x2 - | CeAnd (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#class_expr _x1)#class_expr _x2 - | CeEq (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#class_expr _x1)#class_expr _x2 - | CeAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - method binding : binding -> 'self_type = - function - | BiNil _x0 -> o#_Loc_t _x0 - | BiAnd (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#binding _x1)#binding _x2 - | BiSem (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#binding _x1)#binding _x2 - | BiEq (_x0, _x1, _x2) -> - ((o#_Loc_t _x0)#patt _x1)#expr _x2 - | BiAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 - end - class c_expr f = - object inherit map as super - method expr = fun x -> f (super#expr x) - end - class c_patt f = - object inherit map as super - method patt = fun x -> f (super#patt x) - end - class c_ctyp f = - object inherit map as super - method ctyp = fun x -> f (super#ctyp x) - end - class c_str_item f = - object inherit map as super - method str_item = fun x -> f (super#str_item x) - end - class c_sig_item f = - object inherit map as super - method sig_item = fun x -> f (super#sig_item x) - end - class c_loc f = - object inherit map as super - method _Loc_t = fun x -> f (super#_Loc_t x) - end - let map_patt f ast = (new c_patt f)#patt ast - let map_loc f ast = (new c_loc f)#_Loc_t ast - let map_sig_item f ast = (new c_sig_item f)#sig_item ast - let map_str_item f ast = (new c_str_item f)#str_item ast - let map_ctyp f ast = (new c_ctyp f)#ctyp ast - let map_expr f ast = (new c_expr f)#expr ast let ghost = Loc.ghost let rec is_module_longident = function @@ -9965,6 +5578,50 @@ module Struct = (is_module_longident i1) && (is_module_longident i2) | Ast.IdUid (_, _) -> true | _ -> false + let ident_of_expr = + let error () = + invalid_arg + "ident_of_expr: this expression is not an identifier" in + let rec self = + function + | Ast.ExApp (_loc, e1, e2) -> + Ast.IdApp (_loc, self e1, self e2) + | Ast.ExAcc (_loc, e1, e2) -> + Ast.IdAcc (_loc, self e1, self e2) + | Ast.ExId (_, (Ast.IdLid (_, _))) -> error () + | Ast.ExId (_, i) -> + if is_module_longident i then i else error () + | _ -> error () + in + function + | Ast.ExId (_, i) -> i + | Ast.ExApp (_, _, _) -> error () + | t -> self t + let ident_of_ctyp = + let error () = + invalid_arg "ident_of_ctyp: this type is not an identifier" in + let rec self = + function + | Ast.TyApp (_loc, t1, t2) -> + Ast.IdApp (_loc, self t1, self t2) + | Ast.TyId (_, (Ast.IdLid (_, _))) -> error () + | Ast.TyId (_, i) -> + if is_module_longident i then i else error () + | _ -> error () + in function | Ast.TyId (_, i) -> i | t -> self t + let ident_of_patt = + let error () = + invalid_arg + "ident_of_patt: this pattern is not an identifier" in + let rec self = + function + | Ast.PaApp (_loc, p1, p2) -> + Ast.IdApp (_loc, self p1, self p2) + | Ast.PaId (_, (Ast.IdLid (_, _))) -> error () + | Ast.PaId (_, i) -> + if is_module_longident i then i else error () + | _ -> error () + in function | Ast.PaId (_, i) -> i | p -> self p let rec is_irrefut_patt = function | Ast.PaId (_, (Ast.IdLid (_, _))) -> true @@ -9973,8 +5630,7 @@ module Struct = | Ast.PaAli (_, x, y) -> (is_irrefut_patt x) && (is_irrefut_patt y) | Ast.PaRec (_, p) -> is_irrefut_patt p - | Ast.PaEq (_, (Ast.PaId (_, (Ast.IdLid (_, _)))), p) -> - is_irrefut_patt p + | Ast.PaEq (_, (Ast.IdLid (_, _)), p) -> is_irrefut_patt p | Ast.PaSem (_, p1, p2) -> (is_irrefut_patt p1) && (is_irrefut_patt p2) | Ast.PaCom (_, p1, p2) -> @@ -10005,37 +5661,6 @@ module Struct = (is_expr_constructor e1) && (is_expr_constructor e2) | Ast.ExVrn (_, _) -> true | _ -> false - let ident_of_expr = - let error () = - invalid_arg - "ident_of_expr: this expression is not an identifier" in - let rec self = - function - | Ast.ExApp (_loc, e1, e2) -> - Ast.IdApp (_loc, self e1, self e2) - | Ast.ExAcc (_loc, e1, e2) -> - Ast.IdAcc (_loc, self e1, self e2) - | Ast.ExId (_, (Ast.IdLid (_, _))) -> error () - | Ast.ExId (_, i) -> - if is_module_longident i then i else error () - | _ -> error () - in - function - | Ast.ExId (_, i) -> i - | Ast.ExApp (_, _, _) -> error () - | t -> self t - let ident_of_ctyp = - let error () = - invalid_arg "ident_of_ctyp: this type is not an identifier" in - let rec self = - function - | Ast.TyApp (_loc, t1, t2) -> - Ast.IdApp (_loc, self t1, self t2) - | Ast.TyId (_, (Ast.IdLid (_, _))) -> error () - | Ast.TyId (_, i) -> - if is_module_longident i then i else error () - | _ -> error () - in function | Ast.TyId (_, i) -> i | t -> self t let rec tyOr_of_list = function | [] -> Ast.TyNil ghost @@ -10057,6 +5682,27 @@ module Struct = | t :: ts -> let _loc = loc_of_ctyp t in Ast.TySem (_loc, t, tySem_of_list ts) + let rec tyCom_of_list = + function + | [] -> Ast.TyNil ghost + | [ t ] -> t + | t :: ts -> + let _loc = loc_of_ctyp t + in Ast.TyCom (_loc, t, tyCom_of_list ts) + let rec tyAmp_of_list = + function + | [] -> Ast.TyNil ghost + | [ t ] -> t + | t :: ts -> + let _loc = loc_of_ctyp t + in Ast.TyAmp (_loc, t, tyAmp_of_list ts) + let rec tySta_of_list = + function + | [] -> Ast.TyNil ghost + | [ t ] -> t + | t :: ts -> + let _loc = loc_of_ctyp t + in Ast.TySta (_loc, t, tySta_of_list ts) let rec stSem_of_list = function | [] -> Ast.StNil ghost @@ -10078,6 +5724,13 @@ module Struct = | b :: bs -> let _loc = loc_of_binding b in Ast.BiAnd (_loc, b, biAnd_of_list bs) + let rec rbSem_of_list = + function + | [] -> Ast.RbNil ghost + | [ b ] -> b + | b :: bs -> + let _loc = loc_of_rec_binding b + in Ast.RbSem (_loc, b, rbSem_of_list bs) let rec wcAnd_of_list = function | [] -> Ast.WcNil ghost @@ -10162,13 +5815,6 @@ module Struct = | x :: xs -> let _loc = loc_of_patt x in Ast.PaCom (_loc, x, paCom_of_list xs) - let rec biSem_of_list = - function - | [] -> Ast.BiNil ghost - | [ x ] -> x - | x :: xs -> - let _loc = loc_of_binding x - in Ast.BiSem (_loc, x, biSem_of_list xs) let rec exSem_of_list = function | [] -> Ast.ExNil ghost @@ -10203,97 +5849,5194 @@ module Struct = let binding_of_pel l = biAnd_of_list (List.map bi_of_pe l) let rec pel_of_binding = function - | Ast.BiAnd (_, b1, b2) -> - (pel_of_binding b1) @ (pel_of_binding b2) - | Ast.BiEq (_, p, e) -> [ (p, e) ] - | Ast.BiSem (_, b1, b2) -> - (pel_of_binding b1) @ (pel_of_binding b2) - | _ -> assert false - let rec list_of_binding x acc = - match x with - | Ast.BiAnd (_, b1, b2) | Ast.BiSem (_, b1, b2) -> - list_of_binding b1 (list_of_binding b2 acc) - | t -> t :: acc - let rec list_of_with_constr x acc = - match x with - | Ast.WcAnd (_, w1, w2) -> - list_of_with_constr w1 (list_of_with_constr w2 acc) - | t -> t :: acc - let rec list_of_ctyp x acc = - match x with - | Ast.TyNil _ -> acc - | Ast.TyAmp (_, x, y) | Ast.TyCom (_, x, y) | - Ast.TySta (_, x, y) | Ast.TySem (_, x, y) | - Ast.TyAnd (_, x, y) | Ast.TyOr (_, x, y) -> - list_of_ctyp x (list_of_ctyp y acc) - | x -> x :: acc - let rec list_of_patt x acc = - match x with - | Ast.PaNil _ -> acc - | Ast.PaCom (_, x, y) | Ast.PaSem (_, x, y) -> - list_of_patt x (list_of_patt y acc) - | x -> x :: acc - let rec list_of_expr x acc = - match x with - | Ast.ExNil _ -> acc - | Ast.ExCom (_, x, y) | Ast.ExSem (_, x, y) -> - list_of_expr x (list_of_expr y acc) - | x -> x :: acc - let rec list_of_str_item x acc = - match x with - | Ast.StNil _ -> acc - | Ast.StSem (_, x, y) -> - list_of_str_item x (list_of_str_item y acc) - | x -> x :: acc - let rec list_of_sig_item x acc = - match x with - | Ast.SgNil _ -> acc - | Ast.SgSem (_, x, y) -> - list_of_sig_item x (list_of_sig_item y acc) - | x -> x :: acc - let rec list_of_class_sig_item x acc = - match x with - | Ast.CgNil _ -> acc - | Ast.CgSem (_, x, y) -> - list_of_class_sig_item x (list_of_class_sig_item y acc) - | x -> x :: acc - let rec list_of_class_str_item x acc = - match x with - | Ast.CrNil _ -> acc - | Ast.CrSem (_, x, y) -> - list_of_class_str_item x (list_of_class_str_item y acc) - | x -> x :: acc - let rec list_of_class_type x acc = - match x with - | Ast.CtAnd (_, x, y) -> - list_of_class_type x (list_of_class_type y acc) - | x -> x :: acc - let rec list_of_class_expr x acc = - match x with - | Ast.CeAnd (_, x, y) -> - list_of_class_expr x (list_of_class_expr y acc) - | x -> x :: acc - let rec list_of_module_expr x acc = - match x with - | Ast.MeApp (_, x, y) -> - list_of_module_expr x (list_of_module_expr y acc) - | x -> x :: acc - let rec list_of_match_case x acc = - match x with - | Ast.McNil _ -> acc - | Ast.McOr (_, x, y) -> - list_of_match_case x (list_of_match_case y acc) - | x -> x :: acc - let rec list_of_ident x acc = - match x with - | Ast.IdAcc (_, x, y) | Ast.IdApp (_, x, y) -> - list_of_ident x (list_of_ident y acc) - | x -> x :: acc - let rec list_of_module_binding x acc = - match x with - | Ast.MbAnd (_, x, y) -> - list_of_module_binding x (list_of_module_binding y acc) - | x -> x :: acc + | Ast.BiAnd (_, b1, b2) -> + (pel_of_binding b1) @ (pel_of_binding b2) + | Ast.BiEq (_, p, e) -> [ (p, e) ] + | _ -> assert false + let rec list_of_binding x acc = + match x with + | Ast.BiAnd (_, b1, b2) -> + list_of_binding b1 (list_of_binding b2 acc) + | t -> t :: acc + let rec list_of_rec_binding x acc = + match x with + | Ast.RbSem (_, b1, b2) -> + list_of_rec_binding b1 (list_of_rec_binding b2 acc) + | t -> t :: acc + let rec list_of_with_constr x acc = + match x with + | Ast.WcAnd (_, w1, w2) -> + list_of_with_constr w1 (list_of_with_constr w2 acc) + | t -> t :: acc + let rec list_of_ctyp x acc = + match x with + | Ast.TyNil _ -> acc + | Ast.TyAmp (_, x, y) | Ast.TyCom (_, x, y) | + Ast.TySta (_, x, y) | Ast.TySem (_, x, y) | + Ast.TyAnd (_, x, y) | Ast.TyOr (_, x, y) -> + list_of_ctyp x (list_of_ctyp y acc) + | x -> x :: acc + let rec list_of_patt x acc = + match x with + | Ast.PaNil _ -> acc + | Ast.PaCom (_, x, y) | Ast.PaSem (_, x, y) -> + list_of_patt x (list_of_patt y acc) + | x -> x :: acc + let rec list_of_expr x acc = + match x with + | Ast.ExNil _ -> acc + | Ast.ExCom (_, x, y) | Ast.ExSem (_, x, y) -> + list_of_expr x (list_of_expr y acc) + | x -> x :: acc + let rec list_of_str_item x acc = + match x with + | Ast.StNil _ -> acc + | Ast.StSem (_, x, y) -> + list_of_str_item x (list_of_str_item y acc) + | x -> x :: acc + let rec list_of_sig_item x acc = + match x with + | Ast.SgNil _ -> acc + | Ast.SgSem (_, x, y) -> + list_of_sig_item x (list_of_sig_item y acc) + | x -> x :: acc + let rec list_of_class_sig_item x acc = + match x with + | Ast.CgNil _ -> acc + | Ast.CgSem (_, x, y) -> + list_of_class_sig_item x (list_of_class_sig_item y acc) + | x -> x :: acc + let rec list_of_class_str_item x acc = + match x with + | Ast.CrNil _ -> acc + | Ast.CrSem (_, x, y) -> + list_of_class_str_item x (list_of_class_str_item y acc) + | x -> x :: acc + let rec list_of_class_type x acc = + match x with + | Ast.CtAnd (_, x, y) -> + list_of_class_type x (list_of_class_type y acc) + | x -> x :: acc + let rec list_of_class_expr x acc = + match x with + | Ast.CeAnd (_, x, y) -> + list_of_class_expr x (list_of_class_expr y acc) + | x -> x :: acc + let rec list_of_module_expr x acc = + match x with + | Ast.MeApp (_, x, y) -> + list_of_module_expr x (list_of_module_expr y acc) + | x -> x :: acc + let rec list_of_match_case x acc = + match x with + | Ast.McNil _ -> acc + | Ast.McOr (_, x, y) -> + list_of_match_case x (list_of_match_case y acc) + | x -> x :: acc + let rec list_of_ident x acc = + match x with + | Ast.IdAcc (_, x, y) | Ast.IdApp (_, x, y) -> + list_of_ident x (list_of_ident y acc) + | x -> x :: acc + let rec list_of_module_binding x acc = + match x with + | Ast.MbAnd (_, x, y) -> + list_of_module_binding x (list_of_module_binding y acc) + | x -> x :: acc + module Meta = + struct + module type META_LOC = + sig + val meta_loc_patt : Loc.t -> Loc.t -> Ast.patt + val meta_loc_expr : Loc.t -> Loc.t -> Ast.expr + end + module MetaLoc = + struct + let meta_loc_patt _loc location = + let (a, b, c, d, e, f, g, h) = Loc.to_tuple location + in + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Loc"), + Ast.IdLid (_loc, "of_tuple"))), + Ast.PaTup (_loc, + Ast.PaCom (_loc, + Ast.PaStr (_loc, Ast.safe_string_escaped a), + Ast.PaCom (_loc, + Ast.PaCom (_loc, + Ast.PaCom (_loc, + Ast.PaCom (_loc, + Ast.PaCom (_loc, + Ast.PaCom (_loc, + Ast.PaInt (_loc, string_of_int b), + Ast.PaInt (_loc, string_of_int c)), + Ast.PaInt (_loc, string_of_int d)), + Ast.PaInt (_loc, string_of_int e)), + Ast.PaInt (_loc, string_of_int f)), + Ast.PaInt (_loc, string_of_int g)), + if h + then + Ast.PaId (_loc, Ast.IdUid (_loc, "True")) + else + Ast.PaId (_loc, Ast.IdUid (_loc, "False")))))) + let meta_loc_expr _loc location = + let (a, b, c, d, e, f, g, h) = Loc.to_tuple location + in + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Loc"), + Ast.IdLid (_loc, "of_tuple"))), + Ast.ExTup (_loc, + Ast.ExCom (_loc, + Ast.ExStr (_loc, Ast.safe_string_escaped a), + Ast.ExCom (_loc, + Ast.ExCom (_loc, + Ast.ExCom (_loc, + Ast.ExCom (_loc, + Ast.ExCom (_loc, + Ast.ExCom (_loc, + Ast.ExInt (_loc, string_of_int b), + Ast.ExInt (_loc, string_of_int c)), + Ast.ExInt (_loc, string_of_int d)), + Ast.ExInt (_loc, string_of_int e)), + Ast.ExInt (_loc, string_of_int f)), + Ast.ExInt (_loc, string_of_int g)), + if h + then + Ast.ExId (_loc, Ast.IdUid (_loc, "True")) + else + Ast.ExId (_loc, Ast.IdUid (_loc, "False")))))) + end + module MetaGhostLoc = + struct + let meta_loc_patt _loc _ = + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Loc"), + Ast.IdLid (_loc, "ghost"))) + let meta_loc_expr _loc _ = + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Loc"), + Ast.IdLid (_loc, "ghost"))) + end + module MetaLocVar = + struct + let meta_loc_patt _loc _ = + Ast.PaId (_loc, Ast.IdLid (_loc, !Loc.name)) + let meta_loc_expr _loc _ = + Ast.ExId (_loc, Ast.IdLid (_loc, !Loc.name)) + end + module Make (MetaLoc : META_LOC) = + struct + open MetaLoc + let meta_acc_Loc_t = meta_loc_expr + module Expr = + struct + let meta_string _loc s = Ast.ExStr (_loc, s) + let meta_int _loc s = Ast.ExInt (_loc, s) + let meta_float _loc s = Ast.ExFlo (_loc, s) + let meta_char _loc s = Ast.ExChr (_loc, s) + let meta_bool _loc = + function + | false -> + Ast.ExId (_loc, Ast.IdUid (_loc, "False")) + | true -> Ast.ExId (_loc, Ast.IdUid (_loc, "True")) + let rec meta_list mf_a _loc = + function + | [] -> Ast.ExId (_loc, Ast.IdUid (_loc, "[]")) + | x :: xs -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, Ast.IdUid (_loc, "::")), + mf_a _loc x), + meta_list mf_a _loc xs) + let rec meta_binding _loc = + function + | Ast.BiAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.BiEq (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "BiEq"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_expr _loc x2) + | Ast.BiAnd (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "BiAnd"))), + meta_acc_Loc_t _loc x0), + meta_binding _loc x1), + meta_binding _loc x2) + | Ast.BiNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "BiNil"))), + meta_acc_Loc_t _loc x0) + and meta_class_expr _loc = + function + | Ast.CeAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.CeEq (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeEq"))), + meta_acc_Loc_t _loc x0), + meta_class_expr _loc x1), + meta_class_expr _loc x2) + | Ast.CeAnd (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeAnd"))), + meta_acc_Loc_t _loc x0), + meta_class_expr _loc x1), + meta_class_expr _loc x2) + | Ast.CeTyc (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeTyc"))), + meta_acc_Loc_t _loc x0), + meta_class_expr _loc x1), + meta_class_type _loc x2) + | Ast.CeStr (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeStr"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_class_str_item _loc x2) + | Ast.CeLet (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeLet"))), + meta_acc_Loc_t _loc x0), + meta_meta_bool _loc x1), + meta_binding _loc x2), + meta_class_expr _loc x3) + | Ast.CeFun (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeFun"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_class_expr _loc x2) + | Ast.CeCon (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeCon"))), + meta_acc_Loc_t _loc x0), + meta_meta_bool _loc x1), + meta_ident _loc x2), + meta_ctyp _loc x3) + | Ast.CeApp (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeApp"))), + meta_acc_Loc_t _loc x0), + meta_class_expr _loc x1), + meta_expr _loc x2) + | Ast.CeNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeNil"))), + meta_acc_Loc_t _loc x0) + and meta_class_sig_item _loc = + function + | Ast.CgAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.CgVir (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CgVir"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_meta_bool _loc x2), + meta_ctyp _loc x3) + | Ast.CgVal (x0, x1, x2, x3, x4) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CgVal"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_meta_bool _loc x2), + meta_meta_bool _loc x3), + meta_ctyp _loc x4) + | Ast.CgMth (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CgMth"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_meta_bool _loc x2), + meta_ctyp _loc x3) + | Ast.CgInh (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CgInh"))), + meta_acc_Loc_t _loc x0), + meta_class_type _loc x1) + | Ast.CgSem (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CgSem"))), + meta_acc_Loc_t _loc x0), + meta_class_sig_item _loc x1), + meta_class_sig_item _loc x2) + | Ast.CgCtr (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CgCtr"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.CgNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CgNil"))), + meta_acc_Loc_t _loc x0) + and meta_class_str_item _loc = + function + | Ast.CrAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.CrVvr (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrVvr"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_meta_bool _loc x2), + meta_ctyp _loc x3) + | Ast.CrVir (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrVir"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_meta_bool _loc x2), + meta_ctyp _loc x3) + | Ast.CrVal (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrVal"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_meta_bool _loc x2), + meta_expr _loc x3) + | Ast.CrMth (x0, x1, x2, x3, x4) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrMth"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_meta_bool _loc x2), + meta_expr _loc x3), + meta_ctyp _loc x4) + | Ast.CrIni (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrIni"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1) + | Ast.CrInh (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrInh"))), + meta_acc_Loc_t _loc x0), + meta_class_expr _loc x1), + meta_string _loc x2) + | Ast.CrCtr (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrCtr"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.CrSem (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrSem"))), + meta_acc_Loc_t _loc x0), + meta_class_str_item _loc x1), + meta_class_str_item _loc x2) + | Ast.CrNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrNil"))), + meta_acc_Loc_t _loc x0) + and meta_class_type _loc = + function + | Ast.CtAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.CtEq (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CtEq"))), + meta_acc_Loc_t _loc x0), + meta_class_type _loc x1), + meta_class_type _loc x2) + | Ast.CtCol (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CtCol"))), + meta_acc_Loc_t _loc x0), + meta_class_type _loc x1), + meta_class_type _loc x2) + | Ast.CtAnd (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CtAnd"))), + meta_acc_Loc_t _loc x0), + meta_class_type _loc x1), + meta_class_type _loc x2) + | Ast.CtSig (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CtSig"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_class_sig_item _loc x2) + | Ast.CtFun (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CtFun"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_class_type _loc x2) + | Ast.CtCon (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CtCon"))), + meta_acc_Loc_t _loc x0), + meta_meta_bool _loc x1), + meta_ident _loc x2), + meta_ctyp _loc x3) + | Ast.CtNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CtNil"))), + meta_acc_Loc_t _loc x0) + and meta_ctyp _loc = + function + | Ast.TyAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.TyOfAmp (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyOfAmp"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyAmp (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyAmp"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyVrnInfSup (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyVrnInfSup"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyVrnInf (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyVrnInf"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TyVrnSup (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyVrnSup"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TyVrnEq (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyVrnEq"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TySta (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TySta"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyTup (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyTup"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TyMut (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyMut"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TyPrv (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyPrv"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TyOr (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyOr"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyAnd (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyAnd"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyOf (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyOf"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TySum (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TySum"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TyCom (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyCom"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TySem (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TySem"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyCol (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyCol"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyRec (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyRec"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TyVrn (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyVrn"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.TyQuM (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyQuM"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.TyQuP (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyQuP"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.TyQuo (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyQuo"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.TyPol (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyPol"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyOlb (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyOlb"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_ctyp _loc x2) + | Ast.TyObj (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyObj"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_meta_bool _loc x2) + | Ast.TyDcl (x0, x1, x2, x3, x4) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyDcl"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_list meta_ctyp _loc x2), + meta_ctyp _loc x3), + meta_list + (fun _loc (x1, x2) -> + Ast.ExTup (_loc, + Ast.ExCom (_loc, meta_ctyp _loc x1, + meta_ctyp _loc x2))) + _loc x4) + | Ast.TyMan (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyMan"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyId (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyId"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.TyLab (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyLab"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_ctyp _loc x2) + | Ast.TyCls (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyCls"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.TyArr (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyArr"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyApp (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyApp"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyAny x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyAny"))), + meta_acc_Loc_t _loc x0) + | Ast.TyAli (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyAli"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyNil"))), + meta_acc_Loc_t _loc x0) + and meta_expr _loc = + function + | Ast.ExWhi (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExWhi"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExVrn (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExVrn"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExTyc (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExTyc"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_ctyp _loc x2) + | Ast.ExCom (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExCom"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExTup (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExTup"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1) + | Ast.ExTry (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExTry"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_match_case _loc x2) + | Ast.ExStr (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExStr"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExSte (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExSte"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExSnd (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExSnd"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_string _loc x2) + | Ast.ExSeq (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExSeq"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1) + | Ast.ExRec (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExRec"))), + meta_acc_Loc_t _loc x0), + meta_rec_binding _loc x1), + meta_expr _loc x2) + | Ast.ExOvr (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExOvr"))), + meta_acc_Loc_t _loc x0), + meta_rec_binding _loc x1) + | Ast.ExOlb (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExOlb"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_expr _loc x2) + | Ast.ExObj (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExObj"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_class_str_item _loc x2) + | Ast.ExNew (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExNew"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.ExMat (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExMat"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_match_case _loc x2) + | Ast.ExLmd (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExLmd"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_expr _loc x2), + meta_expr _loc x3) + | Ast.ExLet (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExLet"))), + meta_acc_Loc_t _loc x0), + meta_meta_bool _loc x1), + meta_binding _loc x2), + meta_expr _loc x3) + | Ast.ExLaz (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExLaz"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1) + | Ast.ExLab (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExLab"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_expr _loc x2) + | Ast.ExNativeInt (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExNativeInt"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExInt64 (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExInt64"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExInt32 (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExInt32"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExInt (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExInt"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExIfe (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExIfe"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2), + meta_expr _loc x3) + | Ast.ExFun (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExFun"))), + meta_acc_Loc_t _loc x0), + meta_match_case _loc x1) + | Ast.ExFor (x0, x1, x2, x3, x4, x5) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExFor"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_expr _loc x2), + meta_expr _loc x3), + meta_meta_bool _loc x4), + meta_expr _loc x5) + | Ast.ExFlo (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExFlo"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExCoe (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExCoe"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_ctyp _loc x2), + meta_ctyp _loc x3) + | Ast.ExChr (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExChr"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExAss (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExAss"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExAsr (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExAsr"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1) + | Ast.ExAsf x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExAsf"))), + meta_acc_Loc_t _loc x0) + | Ast.ExSem (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExSem"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExArr (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExArr"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1) + | Ast.ExAre (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExAre"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExApp (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExApp"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.ExAcc (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExAcc"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExId (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExId"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.ExNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExNil"))), + meta_acc_Loc_t _loc x0) + and meta_ident _loc = + function + | Ast.IdAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.IdUid (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "IdUid"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.IdLid (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "IdLid"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.IdApp (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "IdApp"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1), + meta_ident _loc x2) + | Ast.IdAcc (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "IdAcc"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1), + meta_ident _loc x2) + and meta_match_case _loc = + function + | Ast.McAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.McArr (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "McArr"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_expr _loc x2), + meta_expr _loc x3) + | Ast.McOr (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "McOr"))), + meta_acc_Loc_t _loc x0), + meta_match_case _loc x1), + meta_match_case _loc x2) + | Ast.McNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "McNil"))), + meta_acc_Loc_t _loc x0) + and meta_meta_bool _loc = + function + | Ast.BAnt x0 -> Ast.ExAnt (_loc, x0) + | Ast.BFalse -> + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "BFalse"))) + | Ast.BTrue -> + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "BTrue"))) + and meta_meta_list mf_a _loc = + function + | Ast.LAnt x0 -> Ast.ExAnt (_loc, x0) + | Ast.LCons (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "LCons"))), + mf_a _loc x0), + meta_meta_list mf_a _loc x1) + | Ast.LNil -> + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "LNil"))) + and meta_meta_option mf_a _loc = + function + | Ast.OAnt x0 -> Ast.ExAnt (_loc, x0) + | Ast.OSome x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "OSome"))), + mf_a _loc x0) + | Ast.ONone -> + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ONone"))) + and meta_module_binding _loc = + function + | Ast.MbAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.MbCol (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MbCol"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_type _loc x2) + | Ast.MbColEq (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MbColEq"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_type _loc x2), + meta_module_expr _loc x3) + | Ast.MbAnd (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MbAnd"))), + meta_acc_Loc_t _loc x0), + meta_module_binding _loc x1), + meta_module_binding _loc x2) + | Ast.MbNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MbNil"))), + meta_acc_Loc_t _loc x0) + and meta_module_expr _loc = + function + | Ast.MeAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.MeTyc (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MeTyc"))), + meta_acc_Loc_t _loc x0), + meta_module_expr _loc x1), + meta_module_type _loc x2) + | Ast.MeStr (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MeStr"))), + meta_acc_Loc_t _loc x0), + meta_str_item _loc x1) + | Ast.MeFun (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MeFun"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_type _loc x2), + meta_module_expr _loc x3) + | Ast.MeApp (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MeApp"))), + meta_acc_Loc_t _loc x0), + meta_module_expr _loc x1), + meta_module_expr _loc x2) + | Ast.MeId (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MeId"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.MeNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MeNil"))), + meta_acc_Loc_t _loc x0) + and meta_module_type _loc = + function + | Ast.MtAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.MtWit (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MtWit"))), + meta_acc_Loc_t _loc x0), + meta_module_type _loc x1), + meta_with_constr _loc x2) + | Ast.MtSig (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MtSig"))), + meta_acc_Loc_t _loc x0), + meta_sig_item _loc x1) + | Ast.MtQuo (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MtQuo"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.MtFun (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MtFun"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_type _loc x2), + meta_module_type _loc x3) + | Ast.MtId (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MtId"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.MtNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MtNil"))), + meta_acc_Loc_t _loc x0) + and meta_patt _loc = + function + | Ast.PaVrn (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaVrn"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaTyp (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaTyp"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.PaTyc (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaTyc"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_ctyp _loc x2) + | Ast.PaTup (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaTup"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1) + | Ast.PaStr (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaStr"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaEq (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaEq"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1), + meta_patt _loc x2) + | Ast.PaRec (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaRec"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1) + | Ast.PaRng (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaRng"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_patt _loc x2) + | Ast.PaOrp (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaOrp"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_patt _loc x2) + | Ast.PaOlbi (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaOlbi"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_patt _loc x2), + meta_expr _loc x3) + | Ast.PaOlb (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaOlb"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_patt _loc x2) + | Ast.PaLab (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaLab"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_patt _loc x2) + | Ast.PaFlo (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaFlo"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaNativeInt (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaNativeInt"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaInt64 (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaInt64"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaInt32 (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaInt32"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaInt (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaInt"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaChr (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaChr"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaSem (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaSem"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_patt _loc x2) + | Ast.PaCom (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaCom"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_patt _loc x2) + | Ast.PaArr (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaArr"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1) + | Ast.PaApp (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaApp"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_patt _loc x2) + | Ast.PaAny x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaAny"))), + meta_acc_Loc_t _loc x0) + | Ast.PaAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.PaAli (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaAli"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_patt _loc x2) + | Ast.PaId (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaId"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.PaNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaNil"))), + meta_acc_Loc_t _loc x0) + and meta_rec_binding _loc = + function + | Ast.RbAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.RbEq (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "RbEq"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1), + meta_expr _loc x2) + | Ast.RbSem (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "RbSem"))), + meta_acc_Loc_t _loc x0), + meta_rec_binding _loc x1), + meta_rec_binding _loc x2) + | Ast.RbNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "RbNil"))), + meta_acc_Loc_t _loc x0) + and meta_sig_item _loc = + function + | Ast.SgAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.SgVal (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgVal"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_ctyp _loc x2) + | Ast.SgTyp (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgTyp"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.SgOpn (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgOpn"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.SgMty (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgMty"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_type _loc x2) + | Ast.SgRecMod (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgRecMod"))), + meta_acc_Loc_t _loc x0), + meta_module_binding _loc x1) + | Ast.SgMod (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgMod"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_type _loc x2) + | Ast.SgInc (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgInc"))), + meta_acc_Loc_t _loc x0), + meta_module_type _loc x1) + | Ast.SgExt (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgExt"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_ctyp _loc x2), + meta_meta_list meta_string _loc x3) + | Ast.SgExc (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgExc"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.SgDir (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgDir"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_expr _loc x2) + | Ast.SgSem (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgSem"))), + meta_acc_Loc_t _loc x0), + meta_sig_item _loc x1), + meta_sig_item _loc x2) + | Ast.SgClt (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgClt"))), + meta_acc_Loc_t _loc x0), + meta_class_type _loc x1) + | Ast.SgCls (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgCls"))), + meta_acc_Loc_t _loc x0), + meta_class_type _loc x1) + | Ast.SgNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgNil"))), + meta_acc_Loc_t _loc x0) + and meta_str_item _loc = + function + | Ast.StAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.StVal (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StVal"))), + meta_acc_Loc_t _loc x0), + meta_meta_bool _loc x1), + meta_binding _loc x2) + | Ast.StTyp (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StTyp"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.StOpn (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StOpn"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.StMty (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StMty"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_type _loc x2) + | Ast.StRecMod (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StRecMod"))), + meta_acc_Loc_t _loc x0), + meta_module_binding _loc x1) + | Ast.StMod (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StMod"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_expr _loc x2) + | Ast.StInc (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StInc"))), + meta_acc_Loc_t _loc x0), + meta_module_expr _loc x1) + | Ast.StExt (x0, x1, x2, x3) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StExt"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_ctyp _loc x2), + meta_meta_list meta_string _loc x3) + | Ast.StExp (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StExp"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1) + | Ast.StExc (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StExc"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_meta_option meta_ident _loc x2) + | Ast.StDir (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StDir"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_expr _loc x2) + | Ast.StSem (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StSem"))), + meta_acc_Loc_t _loc x0), + meta_str_item _loc x1), + meta_str_item _loc x2) + | Ast.StClt (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StClt"))), + meta_acc_Loc_t _loc x0), + meta_class_type _loc x1) + | Ast.StCls (x0, x1) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StCls"))), + meta_acc_Loc_t _loc x0), + meta_class_expr _loc x1) + | Ast.StNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StNil"))), + meta_acc_Loc_t _loc x0) + and meta_with_constr _loc = + function + | Ast.WcAnt (x0, x1) -> Ast.ExAnt (x0, x1) + | Ast.WcAnd (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "WcAnd"))), + meta_acc_Loc_t _loc x0), + meta_with_constr _loc x1), + meta_with_constr _loc x2) + | Ast.WcMod (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "WcMod"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1), + meta_ident _loc x2) + | Ast.WcTyp (x0, x1, x2) -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "WcTyp"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.WcNil x0 -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "WcNil"))), + meta_acc_Loc_t _loc x0) + end + let meta_acc_Loc_t = meta_loc_patt + module Patt = + struct + let meta_string _loc s = Ast.PaStr (_loc, s) + let meta_int _loc s = Ast.PaInt (_loc, s) + let meta_float _loc s = Ast.PaFlo (_loc, s) + let meta_char _loc s = Ast.PaChr (_loc, s) + let meta_bool _loc = + function + | false -> + Ast.PaId (_loc, Ast.IdUid (_loc, "False")) + | true -> Ast.PaId (_loc, Ast.IdUid (_loc, "True")) + let rec meta_list mf_a _loc = + function + | [] -> Ast.PaId (_loc, Ast.IdUid (_loc, "[]")) + | x :: xs -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, Ast.IdUid (_loc, "::")), + mf_a _loc x), + meta_list mf_a _loc xs) + let rec meta_binding _loc = + function + | Ast.BiAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.BiEq (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "BiEq"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_expr _loc x2) + | Ast.BiAnd (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "BiAnd"))), + meta_acc_Loc_t _loc x0), + meta_binding _loc x1), + meta_binding _loc x2) + | Ast.BiNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "BiNil"))), + meta_acc_Loc_t _loc x0) + and meta_class_expr _loc = + function + | Ast.CeAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.CeEq (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeEq"))), + meta_acc_Loc_t _loc x0), + meta_class_expr _loc x1), + meta_class_expr _loc x2) + | Ast.CeAnd (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeAnd"))), + meta_acc_Loc_t _loc x0), + meta_class_expr _loc x1), + meta_class_expr _loc x2) + | Ast.CeTyc (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeTyc"))), + meta_acc_Loc_t _loc x0), + meta_class_expr _loc x1), + meta_class_type _loc x2) + | Ast.CeStr (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeStr"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_class_str_item _loc x2) + | Ast.CeLet (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeLet"))), + meta_acc_Loc_t _loc x0), + meta_meta_bool _loc x1), + meta_binding _loc x2), + meta_class_expr _loc x3) + | Ast.CeFun (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeFun"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_class_expr _loc x2) + | Ast.CeCon (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeCon"))), + meta_acc_Loc_t _loc x0), + meta_meta_bool _loc x1), + meta_ident _loc x2), + meta_ctyp _loc x3) + | Ast.CeApp (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeApp"))), + meta_acc_Loc_t _loc x0), + meta_class_expr _loc x1), + meta_expr _loc x2) + | Ast.CeNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CeNil"))), + meta_acc_Loc_t _loc x0) + and meta_class_sig_item _loc = + function + | Ast.CgAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.CgVir (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CgVir"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_meta_bool _loc x2), + meta_ctyp _loc x3) + | Ast.CgVal (x0, x1, x2, x3, x4) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CgVal"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_meta_bool _loc x2), + meta_meta_bool _loc x3), + meta_ctyp _loc x4) + | Ast.CgMth (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CgMth"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_meta_bool _loc x2), + meta_ctyp _loc x3) + | Ast.CgInh (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CgInh"))), + meta_acc_Loc_t _loc x0), + meta_class_type _loc x1) + | Ast.CgSem (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CgSem"))), + meta_acc_Loc_t _loc x0), + meta_class_sig_item _loc x1), + meta_class_sig_item _loc x2) + | Ast.CgCtr (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CgCtr"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.CgNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CgNil"))), + meta_acc_Loc_t _loc x0) + and meta_class_str_item _loc = + function + | Ast.CrAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.CrVvr (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrVvr"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_meta_bool _loc x2), + meta_ctyp _loc x3) + | Ast.CrVir (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrVir"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_meta_bool _loc x2), + meta_ctyp _loc x3) + | Ast.CrVal (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrVal"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_meta_bool _loc x2), + meta_expr _loc x3) + | Ast.CrMth (x0, x1, x2, x3, x4) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrMth"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_meta_bool _loc x2), + meta_expr _loc x3), + meta_ctyp _loc x4) + | Ast.CrIni (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrIni"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1) + | Ast.CrInh (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrInh"))), + meta_acc_Loc_t _loc x0), + meta_class_expr _loc x1), + meta_string _loc x2) + | Ast.CrCtr (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrCtr"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.CrSem (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrSem"))), + meta_acc_Loc_t _loc x0), + meta_class_str_item _loc x1), + meta_class_str_item _loc x2) + | Ast.CrNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CrNil"))), + meta_acc_Loc_t _loc x0) + and meta_class_type _loc = + function + | Ast.CtAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.CtEq (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CtEq"))), + meta_acc_Loc_t _loc x0), + meta_class_type _loc x1), + meta_class_type _loc x2) + | Ast.CtCol (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CtCol"))), + meta_acc_Loc_t _loc x0), + meta_class_type _loc x1), + meta_class_type _loc x2) + | Ast.CtAnd (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CtAnd"))), + meta_acc_Loc_t _loc x0), + meta_class_type _loc x1), + meta_class_type _loc x2) + | Ast.CtSig (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CtSig"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_class_sig_item _loc x2) + | Ast.CtFun (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CtFun"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_class_type _loc x2) + | Ast.CtCon (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CtCon"))), + meta_acc_Loc_t _loc x0), + meta_meta_bool _loc x1), + meta_ident _loc x2), + meta_ctyp _loc x3) + | Ast.CtNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "CtNil"))), + meta_acc_Loc_t _loc x0) + and meta_ctyp _loc = + function + | Ast.TyAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.TyOfAmp (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyOfAmp"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyAmp (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyAmp"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyVrnInfSup (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyVrnInfSup"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyVrnInf (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyVrnInf"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TyVrnSup (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyVrnSup"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TyVrnEq (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyVrnEq"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TySta (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TySta"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyTup (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyTup"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TyMut (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyMut"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TyPrv (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyPrv"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TyOr (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyOr"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyAnd (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyAnd"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyOf (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyOf"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TySum (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TySum"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TyCom (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyCom"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TySem (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TySem"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyCol (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyCol"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyRec (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyRec"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.TyVrn (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyVrn"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.TyQuM (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyQuM"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.TyQuP (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyQuP"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.TyQuo (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyQuo"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.TyPol (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyPol"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyOlb (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyOlb"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_ctyp _loc x2) + | Ast.TyObj (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyObj"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_meta_bool _loc x2) + | Ast.TyDcl (x0, x1, x2, x3, x4) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyDcl"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_list meta_ctyp _loc x2), + meta_ctyp _loc x3), + meta_list + (fun _loc (x1, x2) -> + Ast.PaTup (_loc, + Ast.PaCom (_loc, meta_ctyp _loc x1, + meta_ctyp _loc x2))) + _loc x4) + | Ast.TyMan (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyMan"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyId (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyId"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.TyLab (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyLab"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_ctyp _loc x2) + | Ast.TyCls (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyCls"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.TyArr (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyArr"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyApp (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyApp"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyAny x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyAny"))), + meta_acc_Loc_t _loc x0) + | Ast.TyAli (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyAli"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.TyNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "TyNil"))), + meta_acc_Loc_t _loc x0) + and meta_expr _loc = + function + | Ast.ExWhi (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExWhi"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExVrn (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExVrn"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExTyc (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExTyc"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_ctyp _loc x2) + | Ast.ExCom (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExCom"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExTup (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExTup"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1) + | Ast.ExTry (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExTry"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_match_case _loc x2) + | Ast.ExStr (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExStr"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExSte (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExSte"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExSnd (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExSnd"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_string _loc x2) + | Ast.ExSeq (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExSeq"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1) + | Ast.ExRec (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExRec"))), + meta_acc_Loc_t _loc x0), + meta_rec_binding _loc x1), + meta_expr _loc x2) + | Ast.ExOvr (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExOvr"))), + meta_acc_Loc_t _loc x0), + meta_rec_binding _loc x1) + | Ast.ExOlb (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExOlb"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_expr _loc x2) + | Ast.ExObj (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExObj"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_class_str_item _loc x2) + | Ast.ExNew (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExNew"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.ExMat (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExMat"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_match_case _loc x2) + | Ast.ExLmd (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExLmd"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_expr _loc x2), + meta_expr _loc x3) + | Ast.ExLet (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExLet"))), + meta_acc_Loc_t _loc x0), + meta_meta_bool _loc x1), + meta_binding _loc x2), + meta_expr _loc x3) + | Ast.ExLaz (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExLaz"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1) + | Ast.ExLab (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExLab"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_expr _loc x2) + | Ast.ExNativeInt (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExNativeInt"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExInt64 (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExInt64"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExInt32 (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExInt32"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExInt (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExInt"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExIfe (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExIfe"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2), + meta_expr _loc x3) + | Ast.ExFun (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExFun"))), + meta_acc_Loc_t _loc x0), + meta_match_case _loc x1) + | Ast.ExFor (x0, x1, x2, x3, x4, x5) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExFor"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_expr _loc x2), + meta_expr _loc x3), + meta_meta_bool _loc x4), + meta_expr _loc x5) + | Ast.ExFlo (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExFlo"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExCoe (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExCoe"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_ctyp _loc x2), + meta_ctyp _loc x3) + | Ast.ExChr (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExChr"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.ExAss (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExAss"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExAsr (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExAsr"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1) + | Ast.ExAsf x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExAsf"))), + meta_acc_Loc_t _loc x0) + | Ast.ExSem (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExSem"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExArr (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExArr"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1) + | Ast.ExAre (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExAre"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExApp (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExApp"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.ExAcc (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExAcc"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1), + meta_expr _loc x2) + | Ast.ExId (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExId"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.ExNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ExNil"))), + meta_acc_Loc_t _loc x0) + and meta_ident _loc = + function + | Ast.IdAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.IdUid (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "IdUid"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.IdLid (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "IdLid"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.IdApp (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "IdApp"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1), + meta_ident _loc x2) + | Ast.IdAcc (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "IdAcc"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1), + meta_ident _loc x2) + and meta_match_case _loc = + function + | Ast.McAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.McArr (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "McArr"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_expr _loc x2), + meta_expr _loc x3) + | Ast.McOr (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "McOr"))), + meta_acc_Loc_t _loc x0), + meta_match_case _loc x1), + meta_match_case _loc x2) + | Ast.McNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "McNil"))), + meta_acc_Loc_t _loc x0) + and meta_meta_bool _loc = + function + | Ast.BAnt x0 -> Ast.PaAnt (_loc, x0) + | Ast.BFalse -> + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "BFalse"))) + | Ast.BTrue -> + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "BTrue"))) + and meta_meta_list mf_a _loc = + function + | Ast.LAnt x0 -> Ast.PaAnt (_loc, x0) + | Ast.LCons (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "LCons"))), + mf_a _loc x0), + meta_meta_list mf_a _loc x1) + | Ast.LNil -> + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "LNil"))) + and meta_meta_option mf_a _loc = + function + | Ast.OAnt x0 -> Ast.PaAnt (_loc, x0) + | Ast.OSome x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "OSome"))), + mf_a _loc x0) + | Ast.ONone -> + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "ONone"))) + and meta_module_binding _loc = + function + | Ast.MbAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.MbCol (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MbCol"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_type _loc x2) + | Ast.MbColEq (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MbColEq"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_type _loc x2), + meta_module_expr _loc x3) + | Ast.MbAnd (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MbAnd"))), + meta_acc_Loc_t _loc x0), + meta_module_binding _loc x1), + meta_module_binding _loc x2) + | Ast.MbNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MbNil"))), + meta_acc_Loc_t _loc x0) + and meta_module_expr _loc = + function + | Ast.MeAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.MeTyc (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MeTyc"))), + meta_acc_Loc_t _loc x0), + meta_module_expr _loc x1), + meta_module_type _loc x2) + | Ast.MeStr (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MeStr"))), + meta_acc_Loc_t _loc x0), + meta_str_item _loc x1) + | Ast.MeFun (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MeFun"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_type _loc x2), + meta_module_expr _loc x3) + | Ast.MeApp (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MeApp"))), + meta_acc_Loc_t _loc x0), + meta_module_expr _loc x1), + meta_module_expr _loc x2) + | Ast.MeId (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MeId"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.MeNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MeNil"))), + meta_acc_Loc_t _loc x0) + and meta_module_type _loc = + function + | Ast.MtAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.MtWit (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MtWit"))), + meta_acc_Loc_t _loc x0), + meta_module_type _loc x1), + meta_with_constr _loc x2) + | Ast.MtSig (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MtSig"))), + meta_acc_Loc_t _loc x0), + meta_sig_item _loc x1) + | Ast.MtQuo (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MtQuo"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.MtFun (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MtFun"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_type _loc x2), + meta_module_type _loc x3) + | Ast.MtId (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MtId"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.MtNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "MtNil"))), + meta_acc_Loc_t _loc x0) + and meta_patt _loc = + function + | Ast.PaVrn (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaVrn"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaTyp (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaTyp"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.PaTyc (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaTyc"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_ctyp _loc x2) + | Ast.PaTup (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaTup"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1) + | Ast.PaStr (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaStr"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaEq (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaEq"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1), + meta_patt _loc x2) + | Ast.PaRec (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaRec"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1) + | Ast.PaRng (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaRng"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_patt _loc x2) + | Ast.PaOrp (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaOrp"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_patt _loc x2) + | Ast.PaOlbi (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaOlbi"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_patt _loc x2), + meta_expr _loc x3) + | Ast.PaOlb (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaOlb"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_patt _loc x2) + | Ast.PaLab (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaLab"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_patt _loc x2) + | Ast.PaFlo (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaFlo"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaNativeInt (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaNativeInt"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaInt64 (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaInt64"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaInt32 (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaInt32"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaInt (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaInt"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaChr (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaChr"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1) + | Ast.PaSem (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaSem"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_patt _loc x2) + | Ast.PaCom (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaCom"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_patt _loc x2) + | Ast.PaArr (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaArr"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1) + | Ast.PaApp (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaApp"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_patt _loc x2) + | Ast.PaAny x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaAny"))), + meta_acc_Loc_t _loc x0) + | Ast.PaAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.PaAli (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaAli"))), + meta_acc_Loc_t _loc x0), + meta_patt _loc x1), + meta_patt _loc x2) + | Ast.PaId (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaId"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.PaNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "PaNil"))), + meta_acc_Loc_t _loc x0) + and meta_rec_binding _loc = + function + | Ast.RbAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.RbEq (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "RbEq"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1), + meta_expr _loc x2) + | Ast.RbSem (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "RbSem"))), + meta_acc_Loc_t _loc x0), + meta_rec_binding _loc x1), + meta_rec_binding _loc x2) + | Ast.RbNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "RbNil"))), + meta_acc_Loc_t _loc x0) + and meta_sig_item _loc = + function + | Ast.SgAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.SgVal (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgVal"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_ctyp _loc x2) + | Ast.SgTyp (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgTyp"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.SgOpn (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgOpn"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.SgMty (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgMty"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_type _loc x2) + | Ast.SgRecMod (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgRecMod"))), + meta_acc_Loc_t _loc x0), + meta_module_binding _loc x1) + | Ast.SgMod (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgMod"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_type _loc x2) + | Ast.SgInc (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgInc"))), + meta_acc_Loc_t _loc x0), + meta_module_type _loc x1) + | Ast.SgExt (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgExt"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_ctyp _loc x2), + meta_meta_list meta_string _loc x3) + | Ast.SgExc (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgExc"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.SgDir (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgDir"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_expr _loc x2) + | Ast.SgSem (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgSem"))), + meta_acc_Loc_t _loc x0), + meta_sig_item _loc x1), + meta_sig_item _loc x2) + | Ast.SgClt (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgClt"))), + meta_acc_Loc_t _loc x0), + meta_class_type _loc x1) + | Ast.SgCls (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgCls"))), + meta_acc_Loc_t _loc x0), + meta_class_type _loc x1) + | Ast.SgNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "SgNil"))), + meta_acc_Loc_t _loc x0) + and meta_str_item _loc = + function + | Ast.StAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.StVal (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StVal"))), + meta_acc_Loc_t _loc x0), + meta_meta_bool _loc x1), + meta_binding _loc x2) + | Ast.StTyp (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StTyp"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1) + | Ast.StOpn (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StOpn"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1) + | Ast.StMty (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StMty"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_type _loc x2) + | Ast.StRecMod (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StRecMod"))), + meta_acc_Loc_t _loc x0), + meta_module_binding _loc x1) + | Ast.StMod (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StMod"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_module_expr _loc x2) + | Ast.StInc (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StInc"))), + meta_acc_Loc_t _loc x0), + meta_module_expr _loc x1) + | Ast.StExt (x0, x1, x2, x3) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StExt"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_ctyp _loc x2), + meta_meta_list meta_string _loc x3) + | Ast.StExp (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StExp"))), + meta_acc_Loc_t _loc x0), + meta_expr _loc x1) + | Ast.StExc (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StExc"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_meta_option meta_ident _loc x2) + | Ast.StDir (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StDir"))), + meta_acc_Loc_t _loc x0), + meta_string _loc x1), + meta_expr _loc x2) + | Ast.StSem (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StSem"))), + meta_acc_Loc_t _loc x0), + meta_str_item _loc x1), + meta_str_item _loc x2) + | Ast.StClt (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StClt"))), + meta_acc_Loc_t _loc x0), + meta_class_type _loc x1) + | Ast.StCls (x0, x1) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StCls"))), + meta_acc_Loc_t _loc x0), + meta_class_expr _loc x1) + | Ast.StNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "StNil"))), + meta_acc_Loc_t _loc x0) + and meta_with_constr _loc = + function + | Ast.WcAnt (x0, x1) -> Ast.PaAnt (x0, x1) + | Ast.WcAnd (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "WcAnd"))), + meta_acc_Loc_t _loc x0), + meta_with_constr _loc x1), + meta_with_constr _loc x2) + | Ast.WcMod (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "WcMod"))), + meta_acc_Loc_t _loc x0), + meta_ident _loc x1), + meta_ident _loc x2) + | Ast.WcTyp (x0, x1, x2) -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, + Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "WcTyp"))), + meta_acc_Loc_t _loc x0), + meta_ctyp _loc x1), + meta_ctyp _loc x2) + | Ast.WcNil x0 -> + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "WcNil"))), + meta_acc_Loc_t _loc x0) + end + end + end + class map = + object (o) + method string = fun x -> (x : string) + method int = fun x -> (x : int) + method float = fun x -> (x : float) + method bool = fun x -> (x : bool) + method list : 'a 'b. ('a -> 'b) -> 'a list -> 'b list = List. + map + method option : 'a 'b. ('a -> 'b) -> 'a option -> 'b option = + fun f -> function | None -> None | Some x -> Some (f x) + method array : 'a 'b. ('a -> 'b) -> 'a array -> 'b array = + Array.map + method ref : 'a 'b. ('a -> 'b) -> 'a ref -> 'b ref = + fun f { contents = x } -> { contents = f x; } + method _Loc_t : Loc.t -> Loc.t = fun x -> x + method with_constr : with_constr -> with_constr = + function + | WcNil _x0 -> WcNil (o#_Loc_t _x0) + | WcTyp (_x0, _x1, _x2) -> + WcTyp (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | WcMod (_x0, _x1, _x2) -> + WcMod (o#_Loc_t _x0, o#ident _x1, o#ident _x2) + | WcAnd (_x0, _x1, _x2) -> + WcAnd (o#_Loc_t _x0, o#with_constr _x1, + o#with_constr _x2) + | WcAnt (_x0, _x1) -> WcAnt (o#_Loc_t _x0, o#string _x1) + method str_item : str_item -> str_item = + function + | StNil _x0 -> StNil (o#_Loc_t _x0) + | StCls (_x0, _x1) -> + StCls (o#_Loc_t _x0, o#class_expr _x1) + | StClt (_x0, _x1) -> + StClt (o#_Loc_t _x0, o#class_type _x1) + | StSem (_x0, _x1, _x2) -> + StSem (o#_Loc_t _x0, o#str_item _x1, o#str_item _x2) + | StDir (_x0, _x1, _x2) -> + StDir (o#_Loc_t _x0, o#string _x1, o#expr _x2) + | StExc (_x0, _x1, _x2) -> + StExc (o#_Loc_t _x0, o#ctyp _x1, + o#meta_option o#ident _x2) + | StExp (_x0, _x1) -> StExp (o#_Loc_t _x0, o#expr _x1) + | StExt (_x0, _x1, _x2, _x3) -> + StExt (o#_Loc_t _x0, o#string _x1, o#ctyp _x2, + o#meta_list o#string _x3) + | StInc (_x0, _x1) -> + StInc (o#_Loc_t _x0, o#module_expr _x1) + | StMod (_x0, _x1, _x2) -> + StMod (o#_Loc_t _x0, o#string _x1, o#module_expr _x2) + | StRecMod (_x0, _x1) -> + StRecMod (o#_Loc_t _x0, o#module_binding _x1) + | StMty (_x0, _x1, _x2) -> + StMty (o#_Loc_t _x0, o#string _x1, o#module_type _x2) + | StOpn (_x0, _x1) -> StOpn (o#_Loc_t _x0, o#ident _x1) + | StTyp (_x0, _x1) -> StTyp (o#_Loc_t _x0, o#ctyp _x1) + | StVal (_x0, _x1, _x2) -> + StVal (o#_Loc_t _x0, o#meta_bool _x1, o#binding _x2) + | StAnt (_x0, _x1) -> StAnt (o#_Loc_t _x0, o#string _x1) + method sig_item : sig_item -> sig_item = + function + | SgNil _x0 -> SgNil (o#_Loc_t _x0) + | SgCls (_x0, _x1) -> + SgCls (o#_Loc_t _x0, o#class_type _x1) + | SgClt (_x0, _x1) -> + SgClt (o#_Loc_t _x0, o#class_type _x1) + | SgSem (_x0, _x1, _x2) -> + SgSem (o#_Loc_t _x0, o#sig_item _x1, o#sig_item _x2) + | SgDir (_x0, _x1, _x2) -> + SgDir (o#_Loc_t _x0, o#string _x1, o#expr _x2) + | SgExc (_x0, _x1) -> SgExc (o#_Loc_t _x0, o#ctyp _x1) + | SgExt (_x0, _x1, _x2, _x3) -> + SgExt (o#_Loc_t _x0, o#string _x1, o#ctyp _x2, + o#meta_list o#string _x3) + | SgInc (_x0, _x1) -> + SgInc (o#_Loc_t _x0, o#module_type _x1) + | SgMod (_x0, _x1, _x2) -> + SgMod (o#_Loc_t _x0, o#string _x1, o#module_type _x2) + | SgRecMod (_x0, _x1) -> + SgRecMod (o#_Loc_t _x0, o#module_binding _x1) + | SgMty (_x0, _x1, _x2) -> + SgMty (o#_Loc_t _x0, o#string _x1, o#module_type _x2) + | SgOpn (_x0, _x1) -> SgOpn (o#_Loc_t _x0, o#ident _x1) + | SgTyp (_x0, _x1) -> SgTyp (o#_Loc_t _x0, o#ctyp _x1) + | SgVal (_x0, _x1, _x2) -> + SgVal (o#_Loc_t _x0, o#string _x1, o#ctyp _x2) + | SgAnt (_x0, _x1) -> SgAnt (o#_Loc_t _x0, o#string _x1) + method rec_binding : rec_binding -> rec_binding = + function + | RbNil _x0 -> RbNil (o#_Loc_t _x0) + | RbSem (_x0, _x1, _x2) -> + RbSem (o#_Loc_t _x0, o#rec_binding _x1, + o#rec_binding _x2) + | RbEq (_x0, _x1, _x2) -> + RbEq (o#_Loc_t _x0, o#ident _x1, o#expr _x2) + | RbAnt (_x0, _x1) -> RbAnt (o#_Loc_t _x0, o#string _x1) + method patt : patt -> patt = + function + | PaNil _x0 -> PaNil (o#_Loc_t _x0) + | PaId (_x0, _x1) -> PaId (o#_Loc_t _x0, o#ident _x1) + | PaAli (_x0, _x1, _x2) -> + PaAli (o#_Loc_t _x0, o#patt _x1, o#patt _x2) + | PaAnt (_x0, _x1) -> PaAnt (o#_Loc_t _x0, o#string _x1) + | PaAny _x0 -> PaAny (o#_Loc_t _x0) + | PaApp (_x0, _x1, _x2) -> + PaApp (o#_Loc_t _x0, o#patt _x1, o#patt _x2) + | PaArr (_x0, _x1) -> PaArr (o#_Loc_t _x0, o#patt _x1) + | PaCom (_x0, _x1, _x2) -> + PaCom (o#_Loc_t _x0, o#patt _x1, o#patt _x2) + | PaSem (_x0, _x1, _x2) -> + PaSem (o#_Loc_t _x0, o#patt _x1, o#patt _x2) + | PaChr (_x0, _x1) -> PaChr (o#_Loc_t _x0, o#string _x1) + | PaInt (_x0, _x1) -> PaInt (o#_Loc_t _x0, o#string _x1) + | PaInt32 (_x0, _x1) -> + PaInt32 (o#_Loc_t _x0, o#string _x1) + | PaInt64 (_x0, _x1) -> + PaInt64 (o#_Loc_t _x0, o#string _x1) + | PaNativeInt (_x0, _x1) -> + PaNativeInt (o#_Loc_t _x0, o#string _x1) + | PaFlo (_x0, _x1) -> PaFlo (o#_Loc_t _x0, o#string _x1) + | PaLab (_x0, _x1, _x2) -> + PaLab (o#_Loc_t _x0, o#string _x1, o#patt _x2) + | PaOlb (_x0, _x1, _x2) -> + PaOlb (o#_Loc_t _x0, o#string _x1, o#patt _x2) + | PaOlbi (_x0, _x1, _x2, _x3) -> + PaOlbi (o#_Loc_t _x0, o#string _x1, o#patt _x2, + o#expr _x3) + | PaOrp (_x0, _x1, _x2) -> + PaOrp (o#_Loc_t _x0, o#patt _x1, o#patt _x2) + | PaRng (_x0, _x1, _x2) -> + PaRng (o#_Loc_t _x0, o#patt _x1, o#patt _x2) + | PaRec (_x0, _x1) -> PaRec (o#_Loc_t _x0, o#patt _x1) + | PaEq (_x0, _x1, _x2) -> + PaEq (o#_Loc_t _x0, o#ident _x1, o#patt _x2) + | PaStr (_x0, _x1) -> PaStr (o#_Loc_t _x0, o#string _x1) + | PaTup (_x0, _x1) -> PaTup (o#_Loc_t _x0, o#patt _x1) + | PaTyc (_x0, _x1, _x2) -> + PaTyc (o#_Loc_t _x0, o#patt _x1, o#ctyp _x2) + | PaTyp (_x0, _x1) -> PaTyp (o#_Loc_t _x0, o#ident _x1) + | PaVrn (_x0, _x1) -> PaVrn (o#_Loc_t _x0, o#string _x1) + method module_type : module_type -> module_type = + function + | MtNil _x0 -> MtNil (o#_Loc_t _x0) + | MtId (_x0, _x1) -> MtId (o#_Loc_t _x0, o#ident _x1) + | MtFun (_x0, _x1, _x2, _x3) -> + MtFun (o#_Loc_t _x0, o#string _x1, o#module_type _x2, + o#module_type _x3) + | MtQuo (_x0, _x1) -> MtQuo (o#_Loc_t _x0, o#string _x1) + | MtSig (_x0, _x1) -> MtSig (o#_Loc_t _x0, o#sig_item _x1) + | MtWit (_x0, _x1, _x2) -> + MtWit (o#_Loc_t _x0, o#module_type _x1, + o#with_constr _x2) + | MtAnt (_x0, _x1) -> MtAnt (o#_Loc_t _x0, o#string _x1) + method module_expr : module_expr -> module_expr = + function + | MeNil _x0 -> MeNil (o#_Loc_t _x0) + | MeId (_x0, _x1) -> MeId (o#_Loc_t _x0, o#ident _x1) + | MeApp (_x0, _x1, _x2) -> + MeApp (o#_Loc_t _x0, o#module_expr _x1, + o#module_expr _x2) + | MeFun (_x0, _x1, _x2, _x3) -> + MeFun (o#_Loc_t _x0, o#string _x1, o#module_type _x2, + o#module_expr _x3) + | MeStr (_x0, _x1) -> MeStr (o#_Loc_t _x0, o#str_item _x1) + | MeTyc (_x0, _x1, _x2) -> + MeTyc (o#_Loc_t _x0, o#module_expr _x1, + o#module_type _x2) + | MeAnt (_x0, _x1) -> MeAnt (o#_Loc_t _x0, o#string _x1) + method module_binding : module_binding -> module_binding = + function + | MbNil _x0 -> MbNil (o#_Loc_t _x0) + | MbAnd (_x0, _x1, _x2) -> + MbAnd (o#_Loc_t _x0, o#module_binding _x1, + o#module_binding _x2) + | MbColEq (_x0, _x1, _x2, _x3) -> + MbColEq (o#_Loc_t _x0, o#string _x1, o#module_type _x2, + o#module_expr _x3) + | MbCol (_x0, _x1, _x2) -> + MbCol (o#_Loc_t _x0, o#string _x1, o#module_type _x2) + | MbAnt (_x0, _x1) -> MbAnt (o#_Loc_t _x0, o#string _x1) + method meta_option : + 'a 'b. ('a -> 'b) -> 'a meta_option -> 'b meta_option = + fun _f_a -> + function + | ONone -> ONone + | OSome _x0 -> OSome (_f_a _x0) + | OAnt _x0 -> OAnt (o#string _x0) + method meta_list : + 'a 'b. ('a -> 'b) -> 'a meta_list -> 'b meta_list = + fun _f_a -> + function + | LNil -> LNil + | LCons (_x0, _x1) -> + LCons (_f_a _x0, o#meta_list _f_a _x1) + | LAnt _x0 -> LAnt (o#string _x0) + method meta_bool : meta_bool -> meta_bool = + function + | BTrue -> BTrue + | BFalse -> BFalse + | BAnt _x0 -> BAnt (o#string _x0) + method match_case : match_case -> match_case = + function + | McNil _x0 -> McNil (o#_Loc_t _x0) + | McOr (_x0, _x1, _x2) -> + McOr (o#_Loc_t _x0, o#match_case _x1, o#match_case _x2) + | McArr (_x0, _x1, _x2, _x3) -> + McArr (o#_Loc_t _x0, o#patt _x1, o#expr _x2, + o#expr _x3) + | McAnt (_x0, _x1) -> McAnt (o#_Loc_t _x0, o#string _x1) + method ident : ident -> ident = + function + | IdAcc (_x0, _x1, _x2) -> + IdAcc (o#_Loc_t _x0, o#ident _x1, o#ident _x2) + | IdApp (_x0, _x1, _x2) -> + IdApp (o#_Loc_t _x0, o#ident _x1, o#ident _x2) + | IdLid (_x0, _x1) -> IdLid (o#_Loc_t _x0, o#string _x1) + | IdUid (_x0, _x1) -> IdUid (o#_Loc_t _x0, o#string _x1) + | IdAnt (_x0, _x1) -> IdAnt (o#_Loc_t _x0, o#string _x1) + method expr : expr -> expr = + function + | ExNil _x0 -> ExNil (o#_Loc_t _x0) + | ExId (_x0, _x1) -> ExId (o#_Loc_t _x0, o#ident _x1) + | ExAcc (_x0, _x1, _x2) -> + ExAcc (o#_Loc_t _x0, o#expr _x1, o#expr _x2) + | ExAnt (_x0, _x1) -> ExAnt (o#_Loc_t _x0, o#string _x1) + | ExApp (_x0, _x1, _x2) -> + ExApp (o#_Loc_t _x0, o#expr _x1, o#expr _x2) + | ExAre (_x0, _x1, _x2) -> + ExAre (o#_Loc_t _x0, o#expr _x1, o#expr _x2) + | ExArr (_x0, _x1) -> ExArr (o#_Loc_t _x0, o#expr _x1) + | ExSem (_x0, _x1, _x2) -> + ExSem (o#_Loc_t _x0, o#expr _x1, o#expr _x2) + | ExAsf _x0 -> ExAsf (o#_Loc_t _x0) + | ExAsr (_x0, _x1) -> ExAsr (o#_Loc_t _x0, o#expr _x1) + | ExAss (_x0, _x1, _x2) -> + ExAss (o#_Loc_t _x0, o#expr _x1, o#expr _x2) + | ExChr (_x0, _x1) -> ExChr (o#_Loc_t _x0, o#string _x1) + | ExCoe (_x0, _x1, _x2, _x3) -> + ExCoe (o#_Loc_t _x0, o#expr _x1, o#ctyp _x2, + o#ctyp _x3) + | ExFlo (_x0, _x1) -> ExFlo (o#_Loc_t _x0, o#string _x1) + | ExFor (_x0, _x1, _x2, _x3, _x4, _x5) -> + ExFor (o#_Loc_t _x0, o#string _x1, o#expr _x2, + o#expr _x3, o#meta_bool _x4, o#expr _x5) + | ExFun (_x0, _x1) -> + ExFun (o#_Loc_t _x0, o#match_case _x1) + | ExIfe (_x0, _x1, _x2, _x3) -> + ExIfe (o#_Loc_t _x0, o#expr _x1, o#expr _x2, + o#expr _x3) + | ExInt (_x0, _x1) -> ExInt (o#_Loc_t _x0, o#string _x1) + | ExInt32 (_x0, _x1) -> + ExInt32 (o#_Loc_t _x0, o#string _x1) + | ExInt64 (_x0, _x1) -> + ExInt64 (o#_Loc_t _x0, o#string _x1) + | ExNativeInt (_x0, _x1) -> + ExNativeInt (o#_Loc_t _x0, o#string _x1) + | ExLab (_x0, _x1, _x2) -> + ExLab (o#_Loc_t _x0, o#string _x1, o#expr _x2) + | ExLaz (_x0, _x1) -> ExLaz (o#_Loc_t _x0, o#expr _x1) + | ExLet (_x0, _x1, _x2, _x3) -> + ExLet (o#_Loc_t _x0, o#meta_bool _x1, o#binding _x2, + o#expr _x3) + | ExLmd (_x0, _x1, _x2, _x3) -> + ExLmd (o#_Loc_t _x0, o#string _x1, o#module_expr _x2, + o#expr _x3) + | ExMat (_x0, _x1, _x2) -> + ExMat (o#_Loc_t _x0, o#expr _x1, o#match_case _x2) + | ExNew (_x0, _x1) -> ExNew (o#_Loc_t _x0, o#ident _x1) + | ExObj (_x0, _x1, _x2) -> + ExObj (o#_Loc_t _x0, o#patt _x1, o#class_str_item _x2) + | ExOlb (_x0, _x1, _x2) -> + ExOlb (o#_Loc_t _x0, o#string _x1, o#expr _x2) + | ExOvr (_x0, _x1) -> + ExOvr (o#_Loc_t _x0, o#rec_binding _x1) + | ExRec (_x0, _x1, _x2) -> + ExRec (o#_Loc_t _x0, o#rec_binding _x1, o#expr _x2) + | ExSeq (_x0, _x1) -> ExSeq (o#_Loc_t _x0, o#expr _x1) + | ExSnd (_x0, _x1, _x2) -> + ExSnd (o#_Loc_t _x0, o#expr _x1, o#string _x2) + | ExSte (_x0, _x1, _x2) -> + ExSte (o#_Loc_t _x0, o#expr _x1, o#expr _x2) + | ExStr (_x0, _x1) -> ExStr (o#_Loc_t _x0, o#string _x1) + | ExTry (_x0, _x1, _x2) -> + ExTry (o#_Loc_t _x0, o#expr _x1, o#match_case _x2) + | ExTup (_x0, _x1) -> ExTup (o#_Loc_t _x0, o#expr _x1) + | ExCom (_x0, _x1, _x2) -> + ExCom (o#_Loc_t _x0, o#expr _x1, o#expr _x2) + | ExTyc (_x0, _x1, _x2) -> + ExTyc (o#_Loc_t _x0, o#expr _x1, o#ctyp _x2) + | ExVrn (_x0, _x1) -> ExVrn (o#_Loc_t _x0, o#string _x1) + | ExWhi (_x0, _x1, _x2) -> + ExWhi (o#_Loc_t _x0, o#expr _x1, o#expr _x2) + method ctyp : ctyp -> ctyp = + function + | TyNil _x0 -> TyNil (o#_Loc_t _x0) + | TyAli (_x0, _x1, _x2) -> + TyAli (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | TyAny _x0 -> TyAny (o#_Loc_t _x0) + | TyApp (_x0, _x1, _x2) -> + TyApp (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | TyArr (_x0, _x1, _x2) -> + TyArr (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | TyCls (_x0, _x1) -> TyCls (o#_Loc_t _x0, o#ident _x1) + | TyLab (_x0, _x1, _x2) -> + TyLab (o#_Loc_t _x0, o#string _x1, o#ctyp _x2) + | TyId (_x0, _x1) -> TyId (o#_Loc_t _x0, o#ident _x1) + | TyMan (_x0, _x1, _x2) -> + TyMan (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | TyDcl (_x0, _x1, _x2, _x3, _x4) -> + TyDcl (o#_Loc_t _x0, o#string _x1, o#list o#ctyp _x2, + o#ctyp _x3, + o#list + (fun (_x0, _x1) -> ((o#ctyp _x0), (o#ctyp _x1))) + _x4) + | TyObj (_x0, _x1, _x2) -> + TyObj (o#_Loc_t _x0, o#ctyp _x1, o#meta_bool _x2) + | TyOlb (_x0, _x1, _x2) -> + TyOlb (o#_Loc_t _x0, o#string _x1, o#ctyp _x2) + | TyPol (_x0, _x1, _x2) -> + TyPol (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | TyQuo (_x0, _x1) -> TyQuo (o#_Loc_t _x0, o#string _x1) + | TyQuP (_x0, _x1) -> TyQuP (o#_Loc_t _x0, o#string _x1) + | TyQuM (_x0, _x1) -> TyQuM (o#_Loc_t _x0, o#string _x1) + | TyVrn (_x0, _x1) -> TyVrn (o#_Loc_t _x0, o#string _x1) + | TyRec (_x0, _x1) -> TyRec (o#_Loc_t _x0, o#ctyp _x1) + | TyCol (_x0, _x1, _x2) -> + TyCol (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | TySem (_x0, _x1, _x2) -> + TySem (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | TyCom (_x0, _x1, _x2) -> + TyCom (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | TySum (_x0, _x1) -> TySum (o#_Loc_t _x0, o#ctyp _x1) + | TyOf (_x0, _x1, _x2) -> + TyOf (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | TyAnd (_x0, _x1, _x2) -> + TyAnd (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | TyOr (_x0, _x1, _x2) -> + TyOr (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | TyPrv (_x0, _x1) -> TyPrv (o#_Loc_t _x0, o#ctyp _x1) + | TyMut (_x0, _x1) -> TyMut (o#_Loc_t _x0, o#ctyp _x1) + | TyTup (_x0, _x1) -> TyTup (o#_Loc_t _x0, o#ctyp _x1) + | TySta (_x0, _x1, _x2) -> + TySta (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | TyVrnEq (_x0, _x1) -> TyVrnEq (o#_Loc_t _x0, o#ctyp _x1) + | TyVrnSup (_x0, _x1) -> + TyVrnSup (o#_Loc_t _x0, o#ctyp _x1) + | TyVrnInf (_x0, _x1) -> + TyVrnInf (o#_Loc_t _x0, o#ctyp _x1) + | TyVrnInfSup (_x0, _x1, _x2) -> + TyVrnInfSup (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | TyAmp (_x0, _x1, _x2) -> + TyAmp (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | TyOfAmp (_x0, _x1, _x2) -> + TyOfAmp (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | TyAnt (_x0, _x1) -> TyAnt (o#_Loc_t _x0, o#string _x1) + method class_type : class_type -> class_type = + function + | CtNil _x0 -> CtNil (o#_Loc_t _x0) + | CtCon (_x0, _x1, _x2, _x3) -> + CtCon (o#_Loc_t _x0, o#meta_bool _x1, o#ident _x2, + o#ctyp _x3) + | CtFun (_x0, _x1, _x2) -> + CtFun (o#_Loc_t _x0, o#ctyp _x1, o#class_type _x2) + | CtSig (_x0, _x1, _x2) -> + CtSig (o#_Loc_t _x0, o#ctyp _x1, o#class_sig_item _x2) + | CtAnd (_x0, _x1, _x2) -> + CtAnd (o#_Loc_t _x0, o#class_type _x1, + o#class_type _x2) + | CtCol (_x0, _x1, _x2) -> + CtCol (o#_Loc_t _x0, o#class_type _x1, + o#class_type _x2) + | CtEq (_x0, _x1, _x2) -> + CtEq (o#_Loc_t _x0, o#class_type _x1, o#class_type _x2) + | CtAnt (_x0, _x1) -> CtAnt (o#_Loc_t _x0, o#string _x1) + method class_str_item : class_str_item -> class_str_item = + function + | CrNil _x0 -> CrNil (o#_Loc_t _x0) + | CrSem (_x0, _x1, _x2) -> + CrSem (o#_Loc_t _x0, o#class_str_item _x1, + o#class_str_item _x2) + | CrCtr (_x0, _x1, _x2) -> + CrCtr (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | CrInh (_x0, _x1, _x2) -> + CrInh (o#_Loc_t _x0, o#class_expr _x1, o#string _x2) + | CrIni (_x0, _x1) -> CrIni (o#_Loc_t _x0, o#expr _x1) + | CrMth (_x0, _x1, _x2, _x3, _x4) -> + CrMth (o#_Loc_t _x0, o#string _x1, o#meta_bool _x2, + o#expr _x3, o#ctyp _x4) + | CrVal (_x0, _x1, _x2, _x3) -> + CrVal (o#_Loc_t _x0, o#string _x1, o#meta_bool _x2, + o#expr _x3) + | CrVir (_x0, _x1, _x2, _x3) -> + CrVir (o#_Loc_t _x0, o#string _x1, o#meta_bool _x2, + o#ctyp _x3) + | CrVvr (_x0, _x1, _x2, _x3) -> + CrVvr (o#_Loc_t _x0, o#string _x1, o#meta_bool _x2, + o#ctyp _x3) + | CrAnt (_x0, _x1) -> CrAnt (o#_Loc_t _x0, o#string _x1) + method class_sig_item : class_sig_item -> class_sig_item = + function + | CgNil _x0 -> CgNil (o#_Loc_t _x0) + | CgCtr (_x0, _x1, _x2) -> + CgCtr (o#_Loc_t _x0, o#ctyp _x1, o#ctyp _x2) + | CgSem (_x0, _x1, _x2) -> + CgSem (o#_Loc_t _x0, o#class_sig_item _x1, + o#class_sig_item _x2) + | CgInh (_x0, _x1) -> + CgInh (o#_Loc_t _x0, o#class_type _x1) + | CgMth (_x0, _x1, _x2, _x3) -> + CgMth (o#_Loc_t _x0, o#string _x1, o#meta_bool _x2, + o#ctyp _x3) + | CgVal (_x0, _x1, _x2, _x3, _x4) -> + CgVal (o#_Loc_t _x0, o#string _x1, o#meta_bool _x2, + o#meta_bool _x3, o#ctyp _x4) + | CgVir (_x0, _x1, _x2, _x3) -> + CgVir (o#_Loc_t _x0, o#string _x1, o#meta_bool _x2, + o#ctyp _x3) + | CgAnt (_x0, _x1) -> CgAnt (o#_Loc_t _x0, o#string _x1) + method class_expr : class_expr -> class_expr = + function + | CeNil _x0 -> CeNil (o#_Loc_t _x0) + | CeApp (_x0, _x1, _x2) -> + CeApp (o#_Loc_t _x0, o#class_expr _x1, o#expr _x2) + | CeCon (_x0, _x1, _x2, _x3) -> + CeCon (o#_Loc_t _x0, o#meta_bool _x1, o#ident _x2, + o#ctyp _x3) + | CeFun (_x0, _x1, _x2) -> + CeFun (o#_Loc_t _x0, o#patt _x1, o#class_expr _x2) + | CeLet (_x0, _x1, _x2, _x3) -> + CeLet (o#_Loc_t _x0, o#meta_bool _x1, o#binding _x2, + o#class_expr _x3) + | CeStr (_x0, _x1, _x2) -> + CeStr (o#_Loc_t _x0, o#patt _x1, o#class_str_item _x2) + | CeTyc (_x0, _x1, _x2) -> + CeTyc (o#_Loc_t _x0, o#class_expr _x1, + o#class_type _x2) + | CeAnd (_x0, _x1, _x2) -> + CeAnd (o#_Loc_t _x0, o#class_expr _x1, + o#class_expr _x2) + | CeEq (_x0, _x1, _x2) -> + CeEq (o#_Loc_t _x0, o#class_expr _x1, o#class_expr _x2) + | CeAnt (_x0, _x1) -> CeAnt (o#_Loc_t _x0, o#string _x1) + method binding : binding -> binding = + function + | BiNil _x0 -> BiNil (o#_Loc_t _x0) + | BiAnd (_x0, _x1, _x2) -> + BiAnd (o#_Loc_t _x0, o#binding _x1, o#binding _x2) + | BiEq (_x0, _x1, _x2) -> + BiEq (o#_Loc_t _x0, o#patt _x1, o#expr _x2) + | BiAnt (_x0, _x1) -> BiAnt (o#_Loc_t _x0, o#string _x1) + end + class fold = + object ((o : 'self_type)) + method string = fun (_ : string) -> (o : 'self_type) + method int = fun (_ : int) -> (o : 'self_type) + method float = fun (_ : float) -> (o : 'self_type) + method bool = fun (_ : bool) -> (o : 'self_type) + method list : + 'a. + ('self_type -> 'a -> 'self_type) -> 'a list -> 'self_type = + fun f -> List.fold_left f o + method option : + 'a. + ('self_type -> 'a -> 'self_type) -> + 'a option -> 'self_type = + fun f -> function | None -> o | Some x -> f o x + method array : + 'a. + ('self_type -> 'a -> 'self_type) -> + 'a array -> 'self_type = + fun f -> Array.fold_left f o + method ref : + 'a. + ('self_type -> 'a -> 'self_type) -> 'a ref -> 'self_type = + fun f { contents = x } -> f o x + method _Loc_t : Loc.t -> 'self_type = fun _ -> o + method with_constr : with_constr -> 'self_type = + function + | WcNil _x0 -> o#_Loc_t _x0 + | WcTyp (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | WcMod (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ident _x1)#ident _x2 + | WcAnd (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#with_constr _x1)#with_constr _x2 + | WcAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + method str_item : str_item -> 'self_type = + function + | StNil _x0 -> o#_Loc_t _x0 + | StCls (_x0, _x1) -> (o#_Loc_t _x0)#class_expr _x1 + | StClt (_x0, _x1) -> (o#_Loc_t _x0)#class_type _x1 + | StSem (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#str_item _x1)#str_item _x2 + | StDir (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#string _x1)#expr _x2 + | StExc (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#meta_option + (fun o -> o#ident) _x2 + | StExp (_x0, _x1) -> (o#_Loc_t _x0)#expr _x1 + | StExt (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#string _x1)#ctyp _x2)#meta_list + (fun o -> o#string) _x3 + | StInc (_x0, _x1) -> (o#_Loc_t _x0)#module_expr _x1 + | StMod (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#string _x1)#module_expr _x2 + | StRecMod (_x0, _x1) -> (o#_Loc_t _x0)#module_binding _x1 + | StMty (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#string _x1)#module_type _x2 + | StOpn (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 + | StTyp (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 + | StVal (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#meta_bool _x1)#binding _x2 + | StAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + method sig_item : sig_item -> 'self_type = + function + | SgNil _x0 -> o#_Loc_t _x0 + | SgCls (_x0, _x1) -> (o#_Loc_t _x0)#class_type _x1 + | SgClt (_x0, _x1) -> (o#_Loc_t _x0)#class_type _x1 + | SgSem (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#sig_item _x1)#sig_item _x2 + | SgDir (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#string _x1)#expr _x2 + | SgExc (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 + | SgExt (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#string _x1)#ctyp _x2)#meta_list + (fun o -> o#string) _x3 + | SgInc (_x0, _x1) -> (o#_Loc_t _x0)#module_type _x1 + | SgMod (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#string _x1)#module_type _x2 + | SgRecMod (_x0, _x1) -> (o#_Loc_t _x0)#module_binding _x1 + | SgMty (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#string _x1)#module_type _x2 + | SgOpn (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 + | SgTyp (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 + | SgVal (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#string _x1)#ctyp _x2 + | SgAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + method rec_binding : rec_binding -> 'self_type = + function + | RbNil _x0 -> o#_Loc_t _x0 + | RbSem (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#rec_binding _x1)#rec_binding _x2 + | RbEq (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ident _x1)#expr _x2 + | RbAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + method patt : patt -> 'self_type = + function + | PaNil _x0 -> o#_Loc_t _x0 + | PaId (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 + | PaAli (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#patt _x1)#patt _x2 + | PaAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | PaAny _x0 -> o#_Loc_t _x0 + | PaApp (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#patt _x1)#patt _x2 + | PaArr (_x0, _x1) -> (o#_Loc_t _x0)#patt _x1 + | PaCom (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#patt _x1)#patt _x2 + | PaSem (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#patt _x1)#patt _x2 + | PaChr (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | PaInt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | PaInt32 (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | PaInt64 (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | PaNativeInt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | PaFlo (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | PaLab (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#string _x1)#patt _x2 + | PaOlb (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#string _x1)#patt _x2 + | PaOlbi (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#string _x1)#patt _x2)#expr _x3 + | PaOrp (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#patt _x1)#patt _x2 + | PaRng (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#patt _x1)#patt _x2 + | PaRec (_x0, _x1) -> (o#_Loc_t _x0)#patt _x1 + | PaEq (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ident _x1)#patt _x2 + | PaStr (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | PaTup (_x0, _x1) -> (o#_Loc_t _x0)#patt _x1 + | PaTyc (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#patt _x1)#ctyp _x2 + | PaTyp (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 + | PaVrn (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + method module_type : module_type -> 'self_type = + function + | MtNil _x0 -> o#_Loc_t _x0 + | MtId (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 + | MtFun (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#string _x1)#module_type _x2)# + module_type _x3 + | MtQuo (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | MtSig (_x0, _x1) -> (o#_Loc_t _x0)#sig_item _x1 + | MtWit (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#module_type _x1)#with_constr _x2 + | MtAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + method module_expr : module_expr -> 'self_type = + function + | MeNil _x0 -> o#_Loc_t _x0 + | MeId (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 + | MeApp (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#module_expr _x1)#module_expr _x2 + | MeFun (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#string _x1)#module_type _x2)# + module_expr _x3 + | MeStr (_x0, _x1) -> (o#_Loc_t _x0)#str_item _x1 + | MeTyc (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#module_expr _x1)#module_type _x2 + | MeAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + method module_binding : module_binding -> 'self_type = + function + | MbNil _x0 -> o#_Loc_t _x0 + | MbAnd (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#module_binding _x1)#module_binding _x2 + | MbColEq (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#string _x1)#module_type _x2)# + module_expr _x3 + | MbCol (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#string _x1)#module_type _x2 + | MbAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + method meta_option : + 'a. + ('self_type -> 'a -> 'self_type) -> + 'a meta_option -> 'self_type = + fun _f_a -> + function + | ONone -> o + | OSome _x0 -> _f_a o _x0 + | OAnt _x0 -> o#string _x0 + method meta_list : + 'a. + ('self_type -> 'a -> 'self_type) -> + 'a meta_list -> 'self_type = + fun _f_a -> + function + | LNil -> o + | LCons (_x0, _x1) -> + (_f_a o _x0)#meta_list (fun o -> _f_a o) _x1 + | LAnt _x0 -> o#string _x0 + method meta_bool : meta_bool -> 'self_type = + function + | BTrue -> o + | BFalse -> o + | BAnt _x0 -> o#string _x0 + method match_case : match_case -> 'self_type = + function + | McNil _x0 -> o#_Loc_t _x0 + | McOr (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#match_case _x1)#match_case _x2 + | McArr (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#patt _x1)#expr _x2)#expr _x3 + | McAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + method ident : ident -> 'self_type = + function + | IdAcc (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ident _x1)#ident _x2 + | IdApp (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ident _x1)#ident _x2 + | IdLid (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | IdUid (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | IdAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + method expr : expr -> 'self_type = + function + | ExNil _x0 -> o#_Loc_t _x0 + | ExId (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 + | ExAcc (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#expr _x1)#expr _x2 + | ExAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | ExApp (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#expr _x1)#expr _x2 + | ExAre (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#expr _x1)#expr _x2 + | ExArr (_x0, _x1) -> (o#_Loc_t _x0)#expr _x1 + | ExSem (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#expr _x1)#expr _x2 + | ExAsf _x0 -> o#_Loc_t _x0 + | ExAsr (_x0, _x1) -> (o#_Loc_t _x0)#expr _x1 + | ExAss (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#expr _x1)#expr _x2 + | ExChr (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | ExCoe (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#expr _x1)#ctyp _x2)#ctyp _x3 + | ExFlo (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | ExFor (_x0, _x1, _x2, _x3, _x4, _x5) -> + (((((o#_Loc_t _x0)#string _x1)#expr _x2)#expr _x3)# + meta_bool _x4)# + expr _x5 + | ExFun (_x0, _x1) -> (o#_Loc_t _x0)#match_case _x1 + | ExIfe (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#expr _x1)#expr _x2)#expr _x3 + | ExInt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | ExInt32 (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | ExInt64 (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | ExNativeInt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | ExLab (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#string _x1)#expr _x2 + | ExLaz (_x0, _x1) -> (o#_Loc_t _x0)#expr _x1 + | ExLet (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#meta_bool _x1)#binding _x2)#expr _x3 + | ExLmd (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#string _x1)#module_expr _x2)#expr _x3 + | ExMat (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#expr _x1)#match_case _x2 + | ExNew (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 + | ExObj (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#patt _x1)#class_str_item _x2 + | ExOlb (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#string _x1)#expr _x2 + | ExOvr (_x0, _x1) -> (o#_Loc_t _x0)#rec_binding _x1 + | ExRec (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#rec_binding _x1)#expr _x2 + | ExSeq (_x0, _x1) -> (o#_Loc_t _x0)#expr _x1 + | ExSnd (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#expr _x1)#string _x2 + | ExSte (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#expr _x1)#expr _x2 + | ExStr (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | ExTry (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#expr _x1)#match_case _x2 + | ExTup (_x0, _x1) -> (o#_Loc_t _x0)#expr _x1 + | ExCom (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#expr _x1)#expr _x2 + | ExTyc (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#expr _x1)#ctyp _x2 + | ExVrn (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | ExWhi (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#expr _x1)#expr _x2 + method ctyp : ctyp -> 'self_type = + function + | TyNil _x0 -> o#_Loc_t _x0 + | TyAli (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyAny _x0 -> o#_Loc_t _x0 + | TyApp (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyArr (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyCls (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 + | TyLab (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#string _x1)#ctyp _x2 + | TyId (_x0, _x1) -> (o#_Loc_t _x0)#ident _x1 + | TyMan (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyDcl (_x0, _x1, _x2, _x3, _x4) -> + ((((o#_Loc_t _x0)#string _x1)#list (fun o -> o#ctyp) + _x2)# + ctyp _x3)# + list (fun o (_x0, _x1) -> (o#ctyp _x0)#ctyp _x1) _x4 + | TyObj (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#meta_bool _x2 + | TyOlb (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#string _x1)#ctyp _x2 + | TyPol (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyQuo (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | TyQuP (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | TyQuM (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | TyVrn (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + | TyRec (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 + | TyCol (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TySem (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyCom (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TySum (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 + | TyOf (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyAnd (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyOr (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyPrv (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 + | TyMut (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 + | TyTup (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 + | TySta (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyVrnEq (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 + | TyVrnSup (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 + | TyVrnInf (_x0, _x1) -> (o#_Loc_t _x0)#ctyp _x1 + | TyVrnInfSup (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyAmp (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyOfAmp (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + method class_type : class_type -> 'self_type = + function + | CtNil _x0 -> o#_Loc_t _x0 + | CtCon (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#meta_bool _x1)#ident _x2)#ctyp _x3 + | CtFun (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#class_type _x2 + | CtSig (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#class_sig_item _x2 + | CtAnd (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#class_type _x1)#class_type _x2 + | CtCol (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#class_type _x1)#class_type _x2 + | CtEq (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#class_type _x1)#class_type _x2 + | CtAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + method class_str_item : class_str_item -> 'self_type = + function + | CrNil _x0 -> o#_Loc_t _x0 + | CrSem (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#class_str_item _x1)#class_str_item _x2 + | CrCtr (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | CrInh (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#class_expr _x1)#string _x2 + | CrIni (_x0, _x1) -> (o#_Loc_t _x0)#expr _x1 + | CrMth (_x0, _x1, _x2, _x3, _x4) -> + ((((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#expr _x3)# + ctyp _x4 + | CrVal (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#expr _x3 + | CrVir (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 + | CrVvr (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 + | CrAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + method class_sig_item : class_sig_item -> 'self_type = + function + | CgNil _x0 -> o#_Loc_t _x0 + | CgCtr (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | CgSem (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#class_sig_item _x1)#class_sig_item _x2 + | CgInh (_x0, _x1) -> (o#_Loc_t _x0)#class_type _x1 + | CgMth (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 + | CgVal (_x0, _x1, _x2, _x3, _x4) -> + ((((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#meta_bool + _x3)# + ctyp _x4 + | CgVir (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 + | CgAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + method class_expr : class_expr -> 'self_type = + function + | CeNil _x0 -> o#_Loc_t _x0 + | CeApp (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#class_expr _x1)#expr _x2 + | CeCon (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#meta_bool _x1)#ident _x2)#ctyp _x3 + | CeFun (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#patt _x1)#class_expr _x2 + | CeLet (_x0, _x1, _x2, _x3) -> + (((o#_Loc_t _x0)#meta_bool _x1)#binding _x2)#class_expr + _x3 + | CeStr (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#patt _x1)#class_str_item _x2 + | CeTyc (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#class_expr _x1)#class_type _x2 + | CeAnd (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#class_expr _x1)#class_expr _x2 + | CeEq (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#class_expr _x1)#class_expr _x2 + | CeAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + method binding : binding -> 'self_type = + function + | BiNil _x0 -> o#_Loc_t _x0 + | BiAnd (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#binding _x1)#binding _x2 + | BiEq (_x0, _x1, _x2) -> + ((o#_Loc_t _x0)#patt _x1)#expr _x2 + | BiAnt (_x0, _x1) -> (o#_Loc_t _x0)#string _x1 + end + let map_expr f = + object + inherit map as super + method expr = fun x -> f (super#expr x) + end + let map_patt f = + object + inherit map as super + method patt = fun x -> f (super#patt x) + end + let map_ctyp f = + object + inherit map as super + method ctyp = fun x -> f (super#ctyp x) + end + let map_str_item f = + object + inherit map as super + method str_item = fun x -> f (super#str_item x) + end + let map_sig_item f = + object + inherit map as super + method sig_item = fun x -> f (super#sig_item x) + end + let map_loc f = + object + inherit map as super + method _Loc_t = fun x -> f (super#_Loc_t x) + end + end + end + module DynAst = + struct + module Make (Ast : Sig.Ast) : Sig.DynAst with module Ast = Ast = + struct + module Ast = Ast + type 'a tag = + | Tag_ctyp | Tag_patt | Tag_expr | Tag_module_type + | Tag_sig_item | Tag_with_constr | Tag_module_expr + | Tag_str_item | Tag_class_type | Tag_class_sig_item + | Tag_class_expr | Tag_class_str_item | Tag_match_case + | Tag_ident | Tag_binding | Tag_rec_binding + | Tag_module_binding + let string_of_tag = + function + | Tag_ctyp -> "ctyp" + | Tag_patt -> "patt" + | Tag_expr -> "expr" + | Tag_module_type -> "module_type" + | Tag_sig_item -> "sig_item" + | Tag_with_constr -> "with_constr" + | Tag_module_expr -> "module_expr" + | Tag_str_item -> "str_item" + | Tag_class_type -> "class_type" + | Tag_class_sig_item -> "class_sig_item" + | Tag_class_expr -> "class_expr" + | Tag_class_str_item -> "class_str_item" + | Tag_match_case -> "match_case" + | Tag_ident -> "ident" + | Tag_binding -> "binding" + | Tag_rec_binding -> "rec_binding" + | Tag_module_binding -> "module_binding" + let ctyp_tag = Tag_ctyp + let patt_tag = Tag_patt + let expr_tag = Tag_expr + let module_type_tag = Tag_module_type + let sig_item_tag = Tag_sig_item + let with_constr_tag = Tag_with_constr + let module_expr_tag = Tag_module_expr + let str_item_tag = Tag_str_item + let class_type_tag = Tag_class_type + let class_sig_item_tag = Tag_class_sig_item + let class_expr_tag = Tag_class_expr + let class_str_item_tag = Tag_class_str_item + let match_case_tag = Tag_match_case + let ident_tag = Tag_ident + let binding_tag = Tag_binding + let rec_binding_tag = Tag_rec_binding + let module_binding_tag = Tag_module_binding + type dyn + external dyn_tag : 'a tag -> dyn tag = "%identity" + module Pack (X : sig type 'a t end) = + struct + type pack = ((dyn tag) * Obj.t) + exception Pack_error + let pack tag v = ((dyn_tag tag), (Obj.repr v)) + let unpack (tag : 'a tag) (tag', obj) = + if (dyn_tag tag) = tag' + then (Obj.obj obj : 'a X.t) + else raise Pack_error + let print_tag f (tag, _) = + Format.pp_print_string f (string_of_tag tag) + end end end module Quotation = @@ -10301,37 +11044,49 @@ module Struct = module Make (Ast : Sig.Ast) : Sig.Quotation with module Ast = Ast = struct module Ast = Ast + module DynAst = DynAst.Make(Ast) module Loc = Ast.Loc open Format open Sig type 'a expand_fun = Loc.t -> string option -> string -> 'a - type expander = - | ExStr of (bool -> string expand_fun) - | ExAst of Ast.expr expand_fun * Ast.patt expand_fun - let expanders_table = ref [] + module Exp_key = DynAst.Pack(struct type 'a t = unit end) + module Exp_fun = + DynAst.Pack(struct type 'a t = 'a expand_fun end) + let expanders_table : + (((string * Exp_key.pack) * Exp_fun.pack) list) ref = ref [] let default = ref "" let translate = ref (fun x -> x) let expander_name name = match !translate name with | "" -> !default | name -> name - let find name = List.assoc (expander_name name) !expanders_table - let add name f = expanders_table := (name, f) :: !expanders_table + let find name tag = + let key = ((expander_name name), (Exp_key.pack tag ())) + in Exp_fun.unpack tag (List.assoc key !expanders_table) + let add name tag f = + let elt = ((name, (Exp_key.pack tag ())), (Exp_fun.pack tag f)) + in expanders_table := elt :: !expanders_table let dump_file = ref None module Error = struct type error = | Finding | Expanding | ParsingResult of Loc.t * string | Locating - type t = (string * error * exn) + type t = (string * string * error * exn) exception E of t - let print ppf (name, ctx, exn) = + let print ppf (name, position, ctx, exn) = let name = if name = "" then !default else name in - let pp x = fprintf ppf "@?@[<2>While %s %S:" x name in + let pp x = + fprintf ppf "@?@[<2>While %s %S in a position of %S:" x + name position in let () = match ctx with | Finding -> (pp "finding quotation"; - fprintf ppf " available quotations are:\n@[<2>"; - List.iter (fun (s, _) -> fprintf ppf "%s@ " s) + fprintf ppf "@ @[Available quotations are:@\n"; + List.iter + (fun ((s, t), _) -> + fprintf ppf + "@[<2>%s@ (in@ a@ position@ of %a)@]@ " s + Exp_key.print_tag t) !expanders_table; fprintf ppf "@]") | Expanding -> pp "expanding quotation" @@ -10367,54 +11122,50 @@ module Struct = end let _ = let module M = ErrorHandler.Register(Error) in () open Error - let expand_quotation loc expander quot = + let expand_quotation loc expander pos_tag quot = let loc_name_opt = if quot.q_loc = "" then None else Some quot.q_loc in try expander loc loc_name_opt quot.q_contents with | (Loc.Exc_located (_, (Error.E _)) as exc) -> raise exc | Loc.Exc_located (iloc, exc) -> - let exc1 = Error.E (((quot.q_name), Expanding, exc)) + let exc1 = + Error.E (((quot.q_name), pos_tag, Expanding, exc)) in raise (Loc.Exc_located (iloc, exc1)) | exc -> - let exc1 = Error.E (((quot.q_name), Expanding, exc)) + let exc1 = + Error.E (((quot.q_name), pos_tag, Expanding, exc)) in raise (Loc.Exc_located (loc, exc1)) - let parse_quotation_result parse loc quot str = + let parse_quotation_result parse loc quot pos_tag str = try parse loc str with - | Loc.Exc_located (iloc, (Error.E ((n, Expanding, exc)))) -> + | Loc.Exc_located (iloc, + (Error.E ((n, pos_tag, Expanding, exc)))) -> let ctx = ParsingResult (iloc, quot.q_contents) in - let exc1 = Error.E ((n, ctx, exc)) + let exc1 = Error.E ((n, pos_tag, ctx, exc)) in raise (Loc.Exc_located (iloc, exc1)) | Loc.Exc_located (iloc, ((Error.E _ as exc))) -> raise (Loc.Exc_located (iloc, exc)) | Loc.Exc_located (iloc, exc) -> let ctx = ParsingResult (iloc, quot.q_contents) in - let exc1 = Error.E (((quot.q_name), ctx, exc)) + let exc1 = Error.E (((quot.q_name), pos_tag, ctx, exc)) in raise (Loc.Exc_located (iloc, exc1)) - let handle_quotation loc proj in_expr parse quotation = + let expand loc quotation tag = + let pos_tag = DynAst.string_of_tag tag in let name = quotation.q_name in let expander = - try find name + try find name tag with | (Loc.Exc_located (_, (Error.E _)) as exc) -> raise exc | Loc.Exc_located (qloc, exc) -> raise - (Loc.Exc_located (qloc, Error.E ((name, Finding, exc)))) + (Loc.Exc_located (qloc, + Error.E ((name, pos_tag, Finding, exc)))) | exc -> raise - (Loc.Exc_located (loc, Error.E ((name, Finding, exc)))) in + (Loc.Exc_located (loc, + Error.E ((name, pos_tag, Finding, exc)))) in let loc = Loc.join (Loc.move `start quotation.q_shift loc) - in - match expander with - | ExStr f -> - let new_str = expand_quotation loc (f in_expr) quotation - in parse_quotation_result parse loc quotation new_str - | ExAst (fe, fp) -> - expand_quotation loc (proj (fe, fp)) quotation - let expand_expr parse loc x = - handle_quotation loc fst true parse x - let expand_patt parse loc x = - handle_quotation loc snd false parse x + in expand_quotation loc expander pos_tag quotation end end module AstFilters = @@ -10458,23 +11209,33 @@ module Struct = let string_of_string_token loc s = try Token.Eval.string s with | (Failure _ as exn) -> Loc.raise loc exn + let remove_underscores s = + let l = String.length s in + let rec remove src dst = + if src >= l + then if dst >= l then s else String.sub s 0 dst + else + (match s.[src] with + | '_' -> remove (src + 1) dst + | c -> (s.[dst] <- c; remove (src + 1) (dst + 1))) + in remove 0 0 let mkloc = Loc.to_ocaml_location let mkghloc loc = Loc.to_ocaml_location (Loc.ghostify loc) - let mktyp loc d = { ptyp_desc = d; ptyp_loc = mkloc loc; } - let mkpat loc d = { ppat_desc = d; ppat_loc = mkloc loc; } - let mkghpat loc d = { ppat_desc = d; ppat_loc = mkghloc loc; } - let mkexp loc d = { pexp_desc = d; pexp_loc = mkloc loc; } - let mkmty loc d = { pmty_desc = d; pmty_loc = mkloc loc; } - let mksig loc d = { psig_desc = d; psig_loc = mkloc loc; } - let mkmod loc d = { pmod_desc = d; pmod_loc = mkloc loc; } - let mkstr loc d = { pstr_desc = d; pstr_loc = mkloc loc; } - let mkfield loc d = { pfield_desc = d; pfield_loc = mkloc loc; } - let mkcty loc d = { pcty_desc = d; pcty_loc = mkloc loc; } - let mkpcl loc d = { pcl_desc = d; pcl_loc = mkloc loc; } + let mktyp loc d = { ptyp_desc = d; ptyp_loc = mkloc loc; } + let mkpat loc d = { ppat_desc = d; ppat_loc = mkloc loc; } + let mkghpat loc d = { ppat_desc = d; ppat_loc = mkghloc loc; } + let mkexp loc d = { pexp_desc = d; pexp_loc = mkloc loc; } + let mkmty loc d = { pmty_desc = d; pmty_loc = mkloc loc; } + let mksig loc d = { psig_desc = d; psig_loc = mkloc loc; } + let mkmod loc d = { pmod_desc = d; pmod_loc = mkloc loc; } + let mkstr loc d = { pstr_desc = d; pstr_loc = mkloc loc; } + let mkfield loc d = { pfield_desc = d; pfield_loc = mkloc loc; } + let mkcty loc d = { pcty_desc = d; pcty_loc = mkloc loc; } + let mkpcl loc d = { pcl_desc = d; pcl_loc = mkloc loc; } let mkpolytype t = match t.ptyp_desc with | Ptyp_poly (_, _) -> t - | _ -> { (t) with ptyp_desc = Ptyp_poly ([], t); } + | _ -> { (t) with ptyp_desc = Ptyp_poly ([], t); } let mb2b = function | Ast.BTrue -> true @@ -10684,7 +11445,6 @@ module Struct = let (params, variance) = List.split tl in { - ptype_params = params; ptype_cstrs = cl; ptype_kind = tk; @@ -10712,15 +11472,15 @@ module Struct = | _ -> assert false let rec type_decl tl cl loc m pflag = function - | TyMan (_, t1, t2) -> + | Ast.TyMan (_, t1, t2) -> type_decl tl cl loc (Some (ctyp t1)) pflag t2 - | TyPrv (_, t) -> type_decl tl cl loc m true t - | TyRec (_, t) -> + | Ast.TyPrv (_, t) -> type_decl tl cl loc m true t + | Ast.TyRec (_, t) -> mktype loc tl cl (Ptype_record (List.map mktrecord (list_of_ctyp t []), mkprivate' pflag)) m - | TySum (_, t) -> + | Ast.TySum (_, t) -> mktype loc tl cl (Ptype_variant (List.map mkvariant (list_of_ctyp t []), mkprivate' pflag)) @@ -10732,16 +11492,13 @@ module Struct = else (let m = match t with - | TyQuo (_, s) -> - if List.mem_assoc s tl - then Some (ctyp t) - else None + | Ast.TyNil _ -> None | _ -> Some (ctyp t) in let k = if pflag then Ptype_private else Ptype_abstract in mktype loc tl cl k m) let type_decl tl cl t = type_decl tl cl (loc_of_ctyp t) None false t - let mkvalue_desc t p = { pval_type = ctyp t; pval_prim = p; } + let mkvalue_desc t p = { pval_type = ctyp t; pval_prim = p; } let rec list_of_meta_list = function | Ast.LNil -> [] @@ -10793,7 +11550,6 @@ module Struct = (id, (Pwith_type { - ptype_params = params; ptype_cstrs = []; ptype_kind = kind; @@ -10916,7 +11672,9 @@ module Struct = error loc "Integer literal exceeds the range of representable integers of type nativeint") in mkpat loc (Ppat_constant (Const_nativeint nati)) - | PaFlo (loc, s) -> mkpat loc (Ppat_constant (Const_float s)) + | PaFlo (loc, s) -> + mkpat loc + (Ppat_constant (Const_float (remove_underscores s))) | PaLab (loc, _, _) -> error loc "labeled pattern not allowed here" | PaOlb (loc, _, _) | PaOlbi (loc, _, _, _) -> @@ -10950,7 +11708,7 @@ module Struct = as p) -> error (loc_of_patt p) "invalid pattern" and mklabpat = function - | Ast.PaEq (_, (Ast.PaId (_, i)), p) -> + | Ast.PaEq (_, i, p) -> ((ident ~conv_lid: conv_lab i), (patt p)) | p -> error (loc_of_patt p) "invalid pattern" let rec expr_fa al = @@ -11092,7 +11850,9 @@ module Struct = let t1 = (match t1 with | Ast.TyNil _ -> None | t -> Some (ctyp t)) in mkexp loc (Pexp_constraint (expr e, t1, Some (ctyp t2))) - | ExFlo (loc, s) -> mkexp loc (Pexp_constant (Const_float s)) + | ExFlo (loc, s) -> + mkexp loc + (Pexp_constant (Const_float (remove_underscores s))) | ExFor (loc, i, e1, e2, df, el) -> let e3 = ExSeq (loc, el) in let df = if mb2b df then Upto else Downto @@ -11174,7 +11934,7 @@ module Struct = mkexp loc (Pexp_override (mkideexp iel [])) | ExRec (loc, lel, eo) -> (match lel with - | Ast.BiNil _ -> error loc "empty record" + | Ast.RbNil _ -> error loc "empty record" | _ -> let eo = (match eo with @@ -11244,8 +12004,7 @@ module Struct = | e -> ("", (expr e)) and binding x acc = match x with - | Ast.BiAnd (_, x, y) | Ast.BiSem (_, x, y) -> - binding x (binding y acc) + | Ast.BiAnd (_, x, y) -> binding x (binding y acc) | Ast.BiEq (_, p, e) -> ((patt p), (expr e)) :: acc | Ast.BiNil _ -> acc | _ -> assert false @@ -11261,17 +12020,14 @@ module Struct = | w -> mkexp (loc_of_expr w) (Pexp_when (expr w, expr e)) and mklabexp x acc = match x with - | Ast.BiAnd (_, x, y) | Ast.BiSem (_, x, y) -> - mklabexp x (mklabexp y acc) - | Ast.BiEq (_, (Ast.PaId (_, i)), e) -> + | Ast.RbSem (_, x, y) -> mklabexp x (mklabexp y acc) + | Ast.RbEq (_, i, e) -> ((ident ~conv_lid: conv_lab i), (expr e)) :: acc | _ -> assert false and mkideexp x acc = match x with - | Ast.BiAnd (_, x, y) | Ast.BiSem (_, x, y) -> - mkideexp x (mkideexp y acc) - | Ast.BiEq (_, (Ast.PaId (_, (Ast.IdLid (_, s)))), e) -> - (s, (expr e)) :: acc + | Ast.RbSem (_, x, y) -> mkideexp x (mkideexp y acc) + | Ast.RbEq (_, (Ast.IdLid (_, s)), e) -> (s, (expr e)) :: acc | _ -> assert false and mktype_decl x acc = match x with @@ -11291,15 +12047,17 @@ module Struct = | _ -> assert false and module_type = function - | MtId (loc, i) -> mkmty loc (Pmty_ident (long_uident i)) - | MtFun (loc, n, nt, mt) -> + | Ast.MtNil loc -> + error loc "abstract/nil module type not allowed here" + | Ast.MtId (loc, i) -> mkmty loc (Pmty_ident (long_uident i)) + | Ast.MtFun (loc, n, nt, mt) -> mkmty loc (Pmty_functor (n, module_type nt, module_type mt)) - | MtQuo (loc, _) -> - error loc "abstract module type not allowed here" - | MtSig (loc, sl) -> + | Ast.MtQuo (loc, _) -> + error loc "module type variable not allowed here" + | Ast.MtSig (loc, sl) -> mkmty loc (Pmty_signature (sig_item sl [])) - | MtWit (loc, mt, wc) -> + | Ast.MtWit (loc, mt, wc) -> mkmty loc (Pmty_with (module_type mt, mkwithc wc [])) | Ast.MtAnt (_, _) -> assert false and sig_item s l = @@ -11367,15 +12125,16 @@ module Struct = | _ -> assert false and module_expr = function - | MeId (loc, i) -> mkmod loc (Pmod_ident (long_uident i)) - | MeApp (loc, me1, me2) -> + | Ast.MeNil loc -> error loc "nil module expression" + | Ast.MeId (loc, i) -> mkmod loc (Pmod_ident (long_uident i)) + | Ast.MeApp (loc, me1, me2) -> mkmod loc (Pmod_apply (module_expr me1, module_expr me2)) - | MeFun (loc, n, mt, me) -> + | Ast.MeFun (loc, n, mt, me) -> mkmod loc (Pmod_functor (n, module_type mt, module_expr me)) - | MeStr (loc, sl) -> + | Ast.MeStr (loc, sl) -> mkmod loc (Pmod_structure (str_item sl [])) - | MeTyc (loc, me, mt) -> + | Ast.MeTyc (loc, me, mt) -> mkmod loc (Pmod_constraint (module_expr me, module_type mt)) | Ast.MeAnt (loc, _) -> @@ -11469,7 +12228,6 @@ module Struct = (List.split (class_parameters t [])))) in { - pci_virt = if mb2b vir then Virtual else Concrete; pci_params = (params, (mkloc loc_params)); pci_name = name; @@ -11492,7 +12250,6 @@ module Struct = (List.split (class_parameters t [])))) in { - pci_virt = if mb2b vir then Virtual else Concrete; pci_params = (params, (mkloc loc_params)); pci_name = name; @@ -11625,7 +12382,7 @@ module Struct = method expr = function | Ast.ExLet (_, _, (Ast.BiNil _), e) | - Ast.ExRec (_, (Ast.BiNil _), e) | + Ast.ExRec (_, (Ast.RbNil _), e) | Ast.ExCom (_, (Ast.ExNil _), e) | Ast.ExCom (_, e, (Ast.ExNil _)) | Ast.ExSem (_, (Ast.ExNil _), e) | @@ -11649,10 +12406,13 @@ module Struct = method binding = function | Ast.BiAnd (_, (Ast.BiNil _), bi) | - Ast.BiAnd (_, bi, (Ast.BiNil _)) | - Ast.BiSem (_, (Ast.BiNil _), bi) | - Ast.BiSem (_, bi, (Ast.BiNil _)) -> self#binding bi + Ast.BiAnd (_, bi, (Ast.BiNil _)) -> self#binding bi | bi -> super#binding bi + method rec_binding = + function + | Ast.RbSem (_, (Ast.RbNil _), bi) | + Ast.RbSem (_, bi, (Ast.RbNil _)) -> self#rec_binding bi + | bi -> super#rec_binding bi method module_binding = function | Ast.MbAnd (_, (Ast.MbNil _), mb) | @@ -11826,11 +12586,10 @@ module Struct = let to_string _ = assert false end module EmptyPrinter : - sig module Make (Ast : Sig.Ast) : Sig.Printer with module Ast = Ast end = + sig module Make (Ast : Sig.Ast) : Sig.Printer(Ast).S end = struct module Make (Ast : Sig.Ast) = struct - module Ast = Ast let print_interf ?input_file:(_) ?output_file:(_) _ = failwith "No interface printer" let print_implem ?input_file:(_) ?output_file:(_) _ = @@ -11874,24 +12633,20 @@ module Struct = module S = Set.Make(String) let rec fold_binding_vars f bi acc = match bi with - | Ast.BiAnd (_, bi1, bi2) | Ast.BiSem (_, bi1, bi2) -> + | Ast.BiAnd (_, bi1, bi2) -> fold_binding_vars f bi1 (fold_binding_vars f bi2 acc) | Ast.BiEq (_, (Ast.PaId (_, (Ast.IdLid (_, i)))), _) -> f i acc | _ -> assert false class ['accu] c_fold_pattern_vars f init = - object (o) - inherit Ast.fold as super + object inherit Ast.fold as super val acc = init method acc : 'accu = acc method patt = function | Ast.PaId (_, (Ast.IdLid (_, s))) | Ast.PaLab (_, s, (Ast.PaNil _)) | - Ast.PaOlb (_, s, (Ast.PaNil _)) -> - {< acc = f s acc; >} - | Ast.PaEq (_, (Ast.PaId (_, (Ast.IdLid (_, _)))), p) -> - o#patt p + Ast.PaOlb (_, s, (Ast.PaNil _)) -> {< acc = f s acc; >} | p -> super#patt p end let fold_pattern_vars f p init = @@ -11903,18 +12658,18 @@ module Struct = val free = (free_init : 'accu) val env = (env_init : S.t) method free = free - method set_env = fun env -> {< env = env; >} - method add_atom = fun s -> {< env = S.add s env; >} + method set_env = fun env -> {< env = env; >} + method add_atom = fun s -> {< env = S.add s env; >} method add_patt = - fun p -> {< env = fold_pattern_vars S.add p env; >} + fun p -> {< env = fold_pattern_vars S.add p env; >} method add_binding = - fun bi -> {< env = fold_binding_vars S.add bi env; >} + fun bi -> {< env = fold_binding_vars S.add bi env; >} method expr = function | Ast.ExId (_, (Ast.IdLid (_, s))) | Ast.ExLab (_, s, (Ast.ExNil _)) | Ast.ExOlb (_, s, (Ast.ExNil _)) -> - if S.mem s env then o else {< free = f s free; >} + if S.mem s env then o else {< free = f s free; >} | Ast.ExLet (_, Ast.BFalse, bi, e) -> (((o#add_binding bi)#expr e)#set_env env)#binding bi | Ast.ExLet (_, Ast.BTrue, bi, e) -> @@ -12007,8 +12762,8 @@ module Struct = | None -> () let mk strm = match Stream.peek strm with - | Some ((_, loc)) -> { strm = strm; loc = loc; } - | None -> { strm = strm; loc = Loc.ghost; } + | Some ((_, loc)) -> { strm = strm; loc = loc; } + | None -> { strm = strm; loc = Loc.ghost; } let stream c = c.strm let peek_nth c n = let list = Stream.npeek n c.strm in @@ -12206,11 +12961,7 @@ module Struct = | Some t -> Some (Node - { - - node = Sself; - son = t; - brother = DeadEnd; + { node = Sself; son = t; brother = DeadEnd; }) | None -> search_tree level.lprefix) and search_tree t = @@ -12224,7 +12975,6 @@ module Struct = Some (Node { - node = symb; son = n.son; brother = DeadEnd; @@ -12235,7 +12985,6 @@ module Struct = Some (Node { - node = n.node; son = t; brother = DeadEnd; @@ -12760,7 +13509,7 @@ module Struct = txt ^ (" (in [" ^ (entry.ename ^ "])"))) let symb_failed entry prev_symb_result prev_symb symb = let tree = - Node { node = symb; brother = DeadEnd; son = DeadEnd; } + Node { node = symb; brother = DeadEnd; son = DeadEnd; } in tree_failed entry prev_symb_result prev_symb tree let symb_failed_txt e s1 s2 = symb_failed e 0 s1 s2 end @@ -12808,7 +13557,7 @@ module Struct = function | Node { node = s; brother = bro; son = son } -> Node - { node = top_symb entry s; brother = bro; son = son; + { node = top_symb entry s; brother = bro; son = son; } | LocAct (_, _) | DeadEnd -> raise Stream.Failure let entry_of_symb entry = @@ -13298,7 +14047,6 @@ module Struct = let assoc = match assoc with | Some a -> a | None -> LeftA in { - assoc = assoc; lname = lname; lsuffix = DeadEnd; @@ -13330,7 +14078,6 @@ module Struct = else () | None -> ()); { - assoc = a; lname = lev.lname; lsuffix = lev.lsuffix; @@ -13466,7 +14213,6 @@ module Struct = | Node { node = s; son = son; brother = bro } -> Node { - node = s; son = son; brother = insert [] bro; @@ -13487,7 +14233,6 @@ module Struct = | None -> Node { - node = s; son = insert sl DeadEnd; brother = tree; @@ -13500,7 +14245,6 @@ module Struct = (let t = Node { - node = s1; son = insert sl son; brother = bro; @@ -13517,21 +14261,19 @@ module Struct = | None -> Node { - node = s; son = insert sl DeadEnd; brother = bro; } in let t = - Node { node = s1; son = son; brother = bro; } + Node { node = s1; son = son; brother = bro; } in Some t) else (match try_insert s sl bro with | Some bro -> let t = Node - { node = s1; son = son; brother = bro; - } + { node = s1; son = son; brother = bro; } in Some t | None -> None) | LocAct (_, _) | DeadEnd -> None @@ -13539,11 +14281,7 @@ module Struct = function | s :: sl -> Node - { - - node = s; - son = insert_new sl; - brother = DeadEnd; + { node = s; son = insert_new sl; brother = DeadEnd; } | [] -> LocAct (action, []) in insert gsymbols tree @@ -13551,7 +14289,6 @@ module Struct = match e1 with | true -> { - assoc = slev.assoc; lname = slev.lname; lsuffix = @@ -13560,7 +14297,6 @@ module Struct = } | false -> { - assoc = slev.assoc; lname = slev.lname; lsuffix = slev.lsuffix; @@ -13638,7 +14374,6 @@ module Struct = ((dsl, (Node { - node = n.node; son = n.son; brother = t; @@ -13652,7 +14387,6 @@ module Struct = ((dsl, (Node { - node = n.node; son = n.son; brother = t; @@ -13669,12 +14403,12 @@ module Struct = | Some ((Some dsl, t)) -> let t = Node - { node = n.node; son = t; brother = n.brother; } + { node = n.node; son = t; brother = n.brother; } in Some (((Some (n.node :: dsl)), t)) | Some ((None, t)) -> let t = Node - { node = n.node; son = t; brother = n.brother; } + { node = n.node; son = t; brother = n.brother; } in Some ((None, t)) | None -> None in delete_in_tree @@ -13714,7 +14448,6 @@ module Struct = | _ -> let lev = { - assoc = lev.assoc; lname = lev.lname; lsuffix = t; @@ -13741,7 +14474,6 @@ module Struct = | _ -> let lev = { - assoc = lev.assoc; lname = lev.lname; lsuffix = lev.lsuffix; @@ -13894,7 +14626,6 @@ module Struct = let dump ppf e = fprintf ppf "%a@\n" Dump.entry e let mk g n = { - egram = g; ename = n; estart = Tools.empty_entry n; @@ -13930,7 +14661,6 @@ module Struct = let of_parser g n (p : (Token.t * Loc.t) Stream.t -> 'a) : 'a t = { - egram = g; ename = n; estart = (fun _ _ ts -> Action.mk (p ts)); @@ -13972,7 +14702,6 @@ module Struct = let gkeywords = Hashtbl.create 301 in { - gkeywords = gkeywords; gfilter = Token.Filter.mk (Hashtbl.mem gkeywords); glexer = Lexer.mk (); @@ -14034,7 +14763,6 @@ module Struct = let gkeywords = Hashtbl.create 301 in { - gkeywords = gkeywords; gfilter = Token.Filter.mk (Hashtbl.mem gkeywords); glexer = Lexer.mk (); @@ -14075,18 +14803,16 @@ module Printers = module DumpCamlp4Ast : sig module Id : Sig.Id - module Make (Syntax : Sig.Syntax) : - Sig.Printer with module Ast = Syntax.Ast + module Make (Syntax : Sig.Syntax) : Sig.Printer(Syntax.Ast).S end = struct module Id = struct let name = "Camlp4Printers.DumpCamlp4Ast" let version = - "$Id: Camlp4.ml,v 1.3 2007/02/26 16:43:01 ertai Exp $" + "$Id: DumpCamlp4Ast.ml,v 1.5.4.1 2007/03/30 15:50:12 pouillar Exp $" end - module Make (Syntax : Sig.Syntax) : - Sig.Printer with module Ast = Syntax.Ast = + module Make (Syntax : Sig.Syntax) : Sig.Printer(Syntax.Ast).S = struct include Syntax let with_open_out_file x f = @@ -14109,18 +14835,16 @@ module Printers = module DumpOCamlAst : sig module Id : Sig.Id - module Make (Syntax : Sig.Camlp4Syntax) : - Sig.Printer with module Ast = Syntax.Ast + module Make (Syntax : Sig.Camlp4Syntax) : Sig.Printer(Syntax.Ast).S end = struct module Id : Sig.Id = struct let name = "Camlp4Printers.DumpOCamlAst" let version = - "$Id: Camlp4.ml,v 1.3 2007/02/26 16:43:01 ertai Exp $" + "$Id: DumpOCamlAst.ml,v 1.5.4.1 2007/03/30 15:50:12 pouillar Exp $" end - module Make (Syntax : Sig.Camlp4Syntax) : - Sig.Printer with module Ast = Syntax.Ast = + module Make (Syntax : Sig.Camlp4Syntax) : Sig.Printer(Syntax.Ast).S = struct include Syntax module Ast2pt = Struct.Camlp4Ast2OCamlAst.Make(Ast) @@ -14152,15 +14876,14 @@ module Printers = module Null : sig module Id : Sig.Id - module Make (Syntax : Sig.Syntax) : - Sig.Printer with module Ast = Syntax.Ast + module Make (Syntax : Sig.Syntax) : Sig.Printer(Syntax.Ast).S end = struct module Id = struct let name = "Camlp4.Printers.Null" let version = - "$Id: Camlp4.ml,v 1.3 2007/02/26 16:43:01 ertai Exp $" + "$Id: Null.ml,v 1.2 2007/02/07 10:09:21 ertai Exp $" end module Make (Syntax : Sig.Syntax) = struct @@ -14176,7 +14899,6 @@ module Printers = sig open Format include Sig.Camlp4Syntax with module Loc = Syntax.Loc - and module Warning = Syntax.Warning and module Token = Syntax.Token and module Ast = Syntax.Ast and module Gram = Syntax.Gram val list' : @@ -14227,6 +14949,7 @@ module Printers = method ctyp1 : formatter -> Ast.ctyp -> unit method constructor_type : formatter -> Ast.ctyp -> unit method dot_expr : formatter -> Ast.expr -> unit + method apply_expr : formatter -> Ast.expr -> unit method expr : formatter -> Ast.expr -> unit method expr_list : formatter -> Ast.expr list -> unit method expr_list_cons : @@ -14239,7 +14962,7 @@ module Printers = method intlike : formatter -> string -> unit method binding : formatter -> Ast.binding -> unit method record_binding : - formatter -> Ast.binding -> unit + formatter -> Ast.rec_binding -> unit method match_case : formatter -> Ast.match_case -> unit method match_case_aux : formatter -> Ast.match_case -> unit @@ -14312,15 +15035,9 @@ module Printers = val print : string option -> (printer -> formatter -> 'a -> unit) -> 'a -> unit - val print_interf : - ?input_file: string -> - ?output_file: string -> Ast.sig_item -> unit - val print_implem : - ?input_file: string -> - ?output_file: string -> Ast.str_item -> unit end - module MakeMore (Syntax : Sig.Camlp4Syntax) : - Sig.Printer with module Ast = Syntax.Ast + module MakeMore (Syntax : Sig.Camlp4Syntax) : Sig.Printer(Syntax. + Ast).S end = struct open Format @@ -14328,7 +15045,7 @@ module Printers = struct let name = "Camlp4.Printers.OCaml" let version = - "$Id: Camlp4.ml,v 1.3 2007/02/26 16:43:01 ertai Exp $" + "$Id: OCaml.ml,v 1.21.2.7 2007/05/10 13:31:20 pouillar Exp $" end module Make (Syntax : Sig.Camlp4Syntax) = struct @@ -14459,10 +15176,10 @@ module Printers = object (o) val pipe = false val semi = false - method under_pipe = {< pipe = true; >} - method under_semi = {< semi = true; >} - method reset_semi = {< semi = false; >} - method reset = {< pipe = false; semi = false; >} + method under_pipe = {< pipe = true; >} + method under_semi = {< semi = true; >} + method reset_semi = {< semi = false; >} + method reset = {< pipe = false; semi = false; >} val semisep = ";;" val andsep = ("@]@ @[<2>and@ " : (unit, formatter, unit) format) @@ -14472,13 +15189,12 @@ module Printers = val curry_constr = init_curry_constr val var_conversion = false method semisep = semisep - method set_semisep = fun s -> {< semisep = s; >} + method set_semisep = fun s -> {< semisep = s; >} method set_comments = fun b -> - {< mode = if b then `comments else `no_comments; >} - method set_loc_and_comments = - {< mode = `loc_and_comments; >} - method set_curry_constr = fun b -> {< curry_constr = b; >} + {< mode = if b then `comments else `no_comments; >} + method set_loc_and_comments = {< mode = `loc_and_comments; >} + method set_curry_constr = fun b -> {< curry_constr = b; >} method print_comments_before = fun loc f -> match mode with @@ -14591,21 +15307,19 @@ module Printers = | _ -> pp f "%a @[<0>%a=@]@ %a" o#simple_patt p (list' o#simple_patt "" "@ ") pl o#expr e) - | Ast.BiSem (_, _, _) -> assert false | Ast.BiAnt (_, s) -> o#anti f s method record_binding = fun f bi -> - let () = o#node f bi Ast.loc_of_binding + let () = o#node f bi Ast.loc_of_rec_binding in match bi with - | Ast.BiNil _ -> () - | Ast.BiEq (_, p, e) -> - pp f "@ @[<2>%a =@ %a@];" o#simple_patt p o#expr e - | Ast.BiSem (_, b1, b2) -> + | Ast.RbNil _ -> () + | Ast.RbEq (_, i, e) -> + pp f "@ @[<2>%a =@ %a@];" o#var_ident i o#expr e + | Ast.RbSem (_, b1, b2) -> (o#under_semi#record_binding f b1; o#under_semi#record_binding f b2) - | Ast.BiAnd (_, _, _) -> assert false - | Ast.BiAnt (_, s) -> o#anti f s + | Ast.RbAnt (_, s) -> o#anti f s method object_dup = fun f -> list @@ -14731,8 +15445,7 @@ module Printers = pp f "%a@,(%a)" o#ident i1 o#ident i2 | Ast.IdAnt (_, s) -> o#anti f s | Ast.IdLid (_, s) | Ast.IdUid (_, s) -> o#var f s - method private var_ident = - {< var_conversion = true; >}#ident + method private var_ident = {< var_conversion = true; >}#ident method expr = fun f e -> let () = o#node f e Ast.loc_of_expr @@ -14756,8 +15469,8 @@ module Printers = (Ast.ExApp (_, (Ast.ExId (_, (Ast.IdLid (_, n)))), x)), y) when is_infix n -> - pp f "@[<2>%a@ %s@ %a@]" o#dot_expr x n o#dot_expr - y + pp f "@[<2>%a@ %s@ %a@]" o#apply_expr x n + o#apply_expr y | Ast.ExApp (_, x, y) -> let (a, al) = get_expr_args x [ y ] in @@ -14767,16 +15480,16 @@ module Printers = then (match al with | [ Ast.ExTup (_, _) ] -> - pp f "@[<2>%a@ (%a)@]" o#dot_expr x + pp f "@[<2>%a@ (%a)@]" o#apply_expr x o#expr y | [ _ ] -> - pp f "@[<2>%a@ %a@]" o#dot_expr x - o#dot_expr y + pp f "@[<2>%a@ %a@]" o#apply_expr x + o#apply_expr y | al -> - pp f "@[<2>%a@ (%a)@]" o#dot_expr a + pp f "@[<2>%a@ (%a)@]" o#apply_expr a (list o#under_pipe#expr ",@ ") al) else - pp f "@[<2>%a@]" (list o#dot_expr "@ ") + pp f "@[<2>%a@]" (list o#apply_expr "@ ") (a :: al) | Ast.ExAss (_, (Ast.ExAcc (_, e1, @@ -14817,10 +15530,18 @@ module Printers = pp f "@[<0>@[try@ %a@]@ @[<0>with%a@]@]" o#expr e o#match_case a | Ast.ExAsf _ -> pp f "@[<2>assert@ false@]" - | Ast.ExAsr (_, e) -> pp f "@[<2>assert@ %a@]" o#expr e + | Ast.ExAsr (_, e) -> + pp f "@[<2>assert@ %a@]" o#dot_expr e | Ast.ExLmd (_, s, me, e) -> pp f "@[<2>let module %a =@ %a@]@ @[<2>in@ %a@]" o#var s o#module_expr me o#expr e + | e -> o#apply_expr f e + method apply_expr = + fun f e -> + let () = o#node f e Ast.loc_of_expr + in + match e with + | Ast.ExNew (_, i) -> pp f "@[<2>new@ %a@]" o#ident i | e -> o#dot_expr f e method dot_expr = fun f e -> @@ -14874,10 +15595,9 @@ module Printers = | Ast.ExChr (_, s) -> pp f "'%s'" (ocaml_char s) | Ast.ExId (_, i) -> o#var_ident f i | Ast.ExRec (_, b, (Ast.ExNil _)) -> - pp f "@[@[{@ %a@]@ }@]" o#record_binding - b + pp f "@[@[{%a@]@ }@]" o#record_binding b | Ast.ExRec (_, b, e) -> - pp f "@[@[{@ (%a)@ with@ %a@]@ }@]" + pp f "@[@[{@ (%a)@ with%a@]@ }@]" o#expr e o#record_binding b | Ast.ExStr (_, s) -> pp f "\"%s\"" s | Ast.ExWhi (_, e1, e2) -> @@ -14891,8 +15611,8 @@ module Printers = pp f "@[<2>?%s:@ %a@]" s o#dot_expr e | Ast.ExVrn (_, s) -> pp f "`%a" o#var s | Ast.ExOvr (_, b) -> - pp f "@[@[{<@ %a@]@ >}@]" - o#record_binding b + pp f "@[@[{<%a@]@ >}@]" o#record_binding + b | Ast.ExObj (_, (Ast.PaNil _), cst) -> pp f "@[@[object@ %a@]@ end@]" o#class_str_item cst @@ -14904,7 +15624,6 @@ module Printers = pp f "@[@[object @[<2>(%a)@]@ %a@]@ end@]" o#patt p o#class_str_item cst - | Ast.ExNew (_, i) -> pp f "@[<2>new@ %a@]" o#ident i | Ast.ExCom (_, e1, e2) -> pp f "%a,@ %a" o#simple_expr e1 o#simple_expr e2 | Ast.ExSem (_, e1, e2) -> @@ -14915,8 +15634,8 @@ module Printers = Ast.ExFun (_, _) | Ast.ExMat (_, _, _) | Ast.ExTry (_, _, _) | Ast.ExIfe (_, _, _, _) | Ast.ExLet (_, _, _, _) | Ast.ExLmd (_, _, _, _) | - Ast.ExAsr (_, _) | Ast.ExAsf _ | Ast.ExLaz (_, _) - -> pp f "(%a)" o#reset#expr e + Ast.ExAsr (_, _) | Ast.ExAsf _ | Ast.ExLaz (_, _) | + Ast.ExNew (_, _) -> pp f "(%a)" o#reset#expr e method direction_flag = fun f b -> match b with @@ -14930,8 +15649,8 @@ module Printers = match p with | Ast.PaAli (_, p1, p2) -> pp f "@[<1>(%a@ as@ %a)@]" o#patt p1 o#patt p2 - | Ast.PaEq (_, p1, p2) -> - pp f "@[<2>%a =@ %a@]" o#patt p1 o#patt p2 + | Ast.PaEq (_, i, p) -> + pp f "@[<2>%a =@ %a@]" o#var_ident i o#patt p | Ast.PaSem (_, p1, p2) -> pp f "%a;@ %a" o#patt p1 o#patt p2 | p -> o#patt1 f p @@ -15052,7 +15771,7 @@ module Printers = | Ast.TyObj (_, (Ast.TyNil _), Ast.BTrue) -> pp f "< .. >" | Ast.TyObj (_, t, Ast.BTrue) -> - pp f "@[<0>@[<2><@ %a@ ..@]@ >@]" o#ctyp t + pp f "@[<0>@[<2><@ %a;@ ..@]@ >@]" o#ctyp t | Ast.TyObj (_, t, Ast.BFalse) -> pp f "@[<0>@[<2><@ %a@]@ >@]" o#ctyp t | Ast.TyQuo (_, s) -> pp f "'%a" o#var s @@ -15110,14 +15829,7 @@ module Printers = | Ast.TyDcl (_, tn, tp, te, cl) -> (pp f "@[<2>%a%a@]" o#type_params tp o#var tn; (match te with - | Ast.TyQuo (_, s) when - not - (List.exists - (function - | Ast.TyQuo (_, s') -> s = s' - | _ -> false) - tp) - -> () + | Ast.TyNil _ -> () | _ -> pp f " =@ %a" o#ctyp te); if cl <> [] then pp f "@ %a" (list o#constrain "@ ") cl @@ -15182,6 +15894,8 @@ module Printers = | Ast.SgMod (_, s, mt) -> pp f "@[<2>module %a :@ %a%s@]" o#var s o#module_type mt semisep + | Ast.SgMty (_, s, (Ast.MtNil _)) -> + pp f "@[<2>module type %a%s@]" o#var s semisep | Ast.SgMty (_, s, mt) -> pp f "@[<2>module type %a =@ %a%s@]" o#var s o#module_type mt semisep @@ -15275,6 +15989,7 @@ module Printers = let () = o#node f mt Ast.loc_of_module_type in match mt with + | Ast.MtNil _ -> assert false | Ast.MtId (_, i) -> o#ident f i | Ast.MtAnt (_, s) -> o#anti f s | Ast.MtFun (_, s, mt1, mt2) -> @@ -15307,6 +16022,7 @@ module Printers = let () = o#node f me Ast.loc_of_module_expr in match me with + | Ast.MeNil _ -> assert false | Ast.MeId (_, i) -> o#ident f i | Ast.MeAnt (_, s) -> o#anti f s | Ast.MeApp (_, me1, me2) -> @@ -15338,11 +16054,11 @@ module Printers = | Ast.CeCon (_, Ast.BFalse, i, t) -> pp f "@[<2>@[<1>[%a]@]@ %a@]" o#class_params t o#ident i - | Ast.CeCon (_, Ast.BTrue, i, (Ast.TyNil _)) -> - pp f "@[<2>virtual@ %a@]" o#ident i - | Ast.CeCon (_, Ast.BTrue, i, t) -> + | Ast.CeCon (_, Ast.BTrue, (Ast.IdLid (_, i)), + (Ast.TyNil _)) -> pp f "@[<2>virtual@ %a@]" o#var i + | Ast.CeCon (_, Ast.BTrue, (Ast.IdLid (_, i)), t) -> pp f "@[<2>virtual@ @[<1>[%a]@]@ %a@]" - o#class_params t o#ident i + o#class_params t o#var i | Ast.CeFun (_, p, ce) -> pp f "@[<2>fun@ %a@ ->@ %a@]" o#patt p o#class_expr ce @@ -15382,11 +16098,11 @@ module Printers = | Ast.CtCon (_, Ast.BFalse, i, t) -> pp f "@[<2>[@,%a@]@,]@ %a" o#class_params t o#ident i - | Ast.CtCon (_, Ast.BTrue, i, (Ast.TyNil _)) -> - pp f "@[<2>virtual@ %a@]" o#ident i - | Ast.CtCon (_, Ast.BTrue, i, t) -> + | Ast.CtCon (_, Ast.BTrue, (Ast.IdLid (_, i)), + (Ast.TyNil _)) -> pp f "@[<2>virtual@ %a@]" o#var i + | Ast.CtCon (_, Ast.BTrue, (Ast.IdLid (_, i)), t) -> pp f "@[<2>virtual@ [@,%a@]@,]@ %a" o#class_params - t o#ident i + t o#var i | Ast.CtFun (_, t, ct) -> pp f "@[<2>%a@ ->@ %a@]" o#simple_ctyp t o#class_type ct @@ -15502,8 +16218,8 @@ module Printers = let print_implem ?input_file:(_) ?output_file st = print output_file (fun o -> o#implem) st end - module MakeMore (Syntax : Sig.Camlp4Syntax) : - Sig.Printer with module Ast = Syntax.Ast = + module MakeMore (Syntax : Sig.Camlp4Syntax) : Sig.Printer(Syntax. + Ast).S = struct include Make(Syntax) let semisep = ref false @@ -15553,7 +16269,6 @@ module Printers = sig open Format include Sig.Camlp4Syntax with module Loc = Syntax.Loc - and module Warning = Syntax.Warning and module Token = Syntax.Token and module Ast = Syntax.Ast and module Gram = Syntax.Gram class printer : @@ -15565,15 +16280,9 @@ module Printers = val print : string option -> (printer -> formatter -> 'a -> unit) -> 'a -> unit - val print_interf : - ?input_file: string -> - ?output_file: string -> Ast.sig_item -> unit - val print_implem : - ?input_file: string -> - ?output_file: string -> Ast.str_item -> unit end - module MakeMore (Syntax : Sig.Camlp4Syntax) : - Sig.Printer with module Ast = Syntax.Ast + module MakeMore (Syntax : Sig.Camlp4Syntax) : Sig.Printer(Syntax. + Ast).S end = struct open Format @@ -15581,7 +16290,7 @@ module Printers = struct let name = "Camlp4.Printers.OCamlr" let version = - "$Id: Camlp4.ml,v 1.3 2007/02/26 16:43:01 ertai Exp $" + "$Id: OCamlr.ml,v 1.17.4.3 2007/05/10 13:31:20 pouillar Exp $" end module Make (Syntax : Sig.Camlp4Syntax) = struct @@ -15590,6 +16299,13 @@ module Printers = module PP_o = OCaml.Make(Syntax) open PP_o let pp = fprintf + let is_keyword = + let keywords = [ "where" ] + and not_keywords = [ "false"; "function"; "true"; "val" ] + in + fun s -> + (not (List.mem s not_keywords)) && + ((is_keyword s) || (List.mem s keywords)) class printer ?curry_constr:(init_curry_constr = true) ?(comments = true) () = object (o) @@ -15609,9 +16325,9 @@ module Printers = method reset_semi = o method reset = o method private unset_first_match_case = - {< first_match_case = false; >} + {< first_match_case = false; >} method private set_first_match_case = - {< first_match_case = true; >} + {< first_match_case = true; >} method seq = fun f e -> let rec self right f e = @@ -15646,8 +16362,8 @@ module Printers = | v -> (match lex_string v with | LIDENT s | UIDENT s | ESCAPED_IDENT s when - is_keyword s -> pp f "\\%s" s - | SYMBOL s -> pp f "\\%s" s + is_keyword s -> pp f "%s__" s + | SYMBOL s -> pp f "( %s )" s | LIDENT s | UIDENT s | ESCAPED_IDENT s -> pp_print_string f s | tok -> @@ -15753,25 +16469,6 @@ module Printers = (Ast.ExId (_, (Ast.IdLid (_, "val"))))) -> pp f "@[<2>%a.@,val@]" o#simple_expr e | e -> super#dot_expr f e - method simple_expr = - fun f e -> - let () = o#node f e Ast.loc_of_expr - in - match e with - | Ast.ExFor (_, s, e1, e2, Ast.BTrue, e3) -> - pp f - "@[@[@[<2>for %a@ =@ %a@ to@ %a@ do {@]@ %a@]@ }@]" - o#var s o#expr e1 o#expr e2 o#seq e3 - | Ast.ExFor (_, s, e1, e2, Ast.BFalse, e3) -> - pp f - "@[@[@[<2>for %a@ =@ %a@ downto@ %a@ do {@]@ %a@]@ }@]" - o#var s o#expr e1 o#expr e2 o#seq e3 - | Ast.ExWhi (_, e1, e2) -> - pp f "@[<2>while@ %a@ do {@ %a@ }@]" o#expr e1 - o#seq e2 - | Ast.ExSeq (_, e) -> - pp f "@[@[do {@ %a@]@ }@]" o#seq e - | e -> super#simple_expr f e method ctyp = fun f t -> let () = o#node f t Ast.loc_of_ctyp @@ -15780,14 +16477,7 @@ module Printers = | Ast.TyDcl (_, tn, tp, te, cl) -> (pp f "@[<2>%a%a@]" o#var tn o#type_params tp; (match te with - | Ast.TyQuo (_, s) when - not - (List.exists - (function - | Ast.TyQuo (_, s') -> s = s' - | _ -> false) - tp) - -> () + | Ast.TyNil _ -> () | _ -> pp f " =@ %a" o#ctyp te); if cl <> [] then pp f "@ %a" (list o#constrain "@ ") cl @@ -15868,10 +16558,10 @@ module Printers = | Ast.CtCon (_, Ast.BFalse, i, t) -> pp f "@[<2>%a [@,%a@]@,]" o#ident i o#class_params t - | Ast.CtCon (_, Ast.BTrue, i, (Ast.TyNil _)) -> - pp f "@[<2>virtual@ %a@]" o#ident i - | Ast.CtCon (_, Ast.BTrue, i, t) -> - pp f "@[<2>virtual@ %a@ [@,%a@]@,]" o#ident i + | Ast.CtCon (_, Ast.BTrue, (Ast.IdLid (_, i)), + (Ast.TyNil _)) -> pp f "@[<2>virtual@ %a@]" o#var i + | Ast.CtCon (_, Ast.BTrue, (Ast.IdLid (_, i)), t) -> + pp f "@[<2>virtual@ %a@ [@,%a@]@,]" o#var i o#class_params t | ct -> super#class_type f ct method class_expr = @@ -15884,10 +16574,10 @@ module Printers = | Ast.CeCon (_, Ast.BFalse, i, t) -> pp f "@[<2>%a@ @[<1>[%a]@]@]" o#ident i o#class_params t - | Ast.CeCon (_, Ast.BTrue, i, (Ast.TyNil _)) -> - pp f "@[<2>virtual@ %a@]" o#ident i - | Ast.CeCon (_, Ast.BTrue, i, t) -> - pp f "@[<2>virtual@ %a@ @[<1>[%a]@]@]" o#ident i + | Ast.CeCon (_, Ast.BTrue, (Ast.IdLid (_, i)), + (Ast.TyNil _)) -> pp f "@[<2>virtual@ %a@]" o#var i + | Ast.CeCon (_, Ast.BTrue, (Ast.IdLid (_, i)), t) -> + pp f "@[<2>virtual@ %a@ @[<1>[%a]@]@]" o#var i o#ctyp t | ce -> super#class_expr f ce end @@ -15896,8 +16586,8 @@ module Printers = let print_interf = print_interf let print_implem = print_implem end - module MakeMore (Syntax : Sig.Camlp4Syntax) : - Sig.Printer with module Ast = Syntax.Ast = + module MakeMore (Syntax : Sig.Camlp4Syntax) : Sig.Printer(Syntax. + Ast).S = struct include Make(Syntax) let margin = ref 78 @@ -15933,10 +16623,9 @@ module Printers = module OCamlInitSyntax = struct module Make - (Warning : Sig.Warning) - (Ast : Sig.Camlp4Ast with module Loc = Warning.Loc) + (Ast : Sig.Camlp4Ast) (Gram : - Sig.Grammar.Static with module Loc = Warning.Loc with + Sig.Grammar.Static with module Loc = Ast.Loc with type Token.t = Sig.camlp4_token) (Quotation : Sig.Quotation with module Ast = Sig.Camlp4AstToAst(Ast)) : Sig.Camlp4Syntax with module Loc = Ast.Loc and module Ast = Ast @@ -15944,12 +16633,16 @@ module OCamlInitSyntax = and module AntiquotSyntax.Ast = Sig.Camlp4AstToAst(Ast) and module Quotation = Quotation = struct - module Warning = Warning module Loc = Ast.Loc module Ast = Ast module Gram = Gram module Token = Gram.Token open Sig + type warning = Loc.t -> string -> unit + let default_warning loc txt = + Format.eprintf " %a: %s@." Loc.print loc txt + let current_warning = ref default_warning + let print_warning loc txt = !current_warning loc txt let a_CHAR = Gram.Entry.mk "a_CHAR" let a_FLOAT = Gram.Entry.mk "a_FLOAT" let a_INT = Gram.Entry.mk "a_INT" @@ -15957,7 +16650,6 @@ module OCamlInitSyntax = let a_INT64 = Gram.Entry.mk "a_INT64" let a_LABEL = Gram.Entry.mk "a_LABEL" let a_LIDENT = Gram.Entry.mk "a_LIDENT" - let a_LIDENT_or_operator = Gram.Entry.mk "a_LIDENT_or_operator" let a_NATIVEINT = Gram.Entry.mk "a_NATIVEINT" let a_OPTLABEL = Gram.Entry.mk "a_OPTLABEL" let a_STRING = Gram.Entry.mk "a_STRING" @@ -16009,7 +16701,6 @@ module OCamlInitSyntax = let eq_expr = Gram.Entry.mk "eq_expr" let expr = Gram.Entry.mk "expr" let expr_eoi = Gram.Entry.mk "expr_eoi" - let field = Gram.Entry.mk "field" let field_expr = Gram.Entry.mk "field_expr" let fun_binding = Gram.Entry.mk "fun_binding" let fun_def = Gram.Entry.mk "fun_def" @@ -16061,16 +16752,15 @@ module OCamlInitSyntax = let patt_eoi = Gram.Entry.mk "patt_eoi" let patt_tcon = Gram.Entry.mk "patt_tcon" let phrase = Gram.Entry.mk "phrase" - let pipe_ctyp = Gram.Entry.mk "pipe_ctyp" let poly_type = Gram.Entry.mk "poly_type" let row_field = Gram.Entry.mk "row_field" - let sem_ctyp = Gram.Entry.mk "sem_ctyp" let sem_expr = Gram.Entry.mk "sem_expr" let sem_expr_for_list = Gram.Entry.mk "sem_expr_for_list" let sem_patt = Gram.Entry.mk "sem_patt" let sem_patt_for_list = Gram.Entry.mk "sem_patt_for_list" let semi = Gram.Entry.mk "semi" let sequence = Gram.Entry.mk "sequence" + let do_sequence = Gram.Entry.mk "do_sequence" let sig_item = Gram.Entry.mk "sig_item" let sig_items = Gram.Entry.mk "sig_items" let star_ctyp = Gram.Entry.mk "star_ctyp" @@ -16108,11 +16798,26 @@ module OCamlInitSyntax = let class_expr_quot = Gram.Entry.mk "quotation of class expression" let with_constr_quot = Gram.Entry.mk "quotation of with constraint" let binding_quot = Gram.Entry.mk "quotation of binding" + let rec_binding_quot = Gram.Entry.mk "quotation of record binding" let match_case_quot = Gram.Entry.mk "quotation of match_case (try/match/function case)" let module_binding_quot = Gram.Entry.mk "quotation of module rec binding" let ident_quot = Gram.Entry.mk "quotation of identifier" + let prefixop = + Gram.Entry.mk "prefix operator (start with '!', '?', '~')" + let infixop0 = + Gram.Entry.mk + "infix operator (level 0) (comparison operators, and some others)" + let infixop1 = + Gram.Entry.mk "infix operator (level 1) (start with '^', '@')" + let infixop2 = + Gram.Entry.mk "infix operator (level 2) (start with '+', '-')" + let infixop3 = + Gram.Entry.mk "infix operator (level 3) (start with '*', '/', '%')" + let infixop4 = + Gram.Entry.mk + "infix operator (level 4) (start with \"**\") (right assoc)" let _ = Gram.extend (top_phrase : 'top_phrase Gram.Entry.t) ((fun () -> @@ -16170,33 +16875,32 @@ module OCamlInitSyntax = let parse_patt loc str = Gram.parse_string antiquot_patt loc str end module Quotation = Quotation - module Parser = - struct - module Ast = Ast - let wrap directive_handler pa init_loc cs = - let rec loop loc = - let (pl, stopped_at_directive) = pa loc cs - in - match stopped_at_directive with - | Some new_loc -> - let pl = - (match List.rev pl with - | [] -> assert false - | x :: xs -> - (match directive_handler x with - | None -> xs - | Some x -> x :: xs)) - in (List.rev pl) @ (loop new_loc) - | None -> pl - in loop init_loc - let parse_implem ?(directive_handler = fun _ -> None) _loc cs = - let l = wrap directive_handler (Gram.parse implem) _loc cs - in Ast.stSem_of_list l - let parse_interf ?(directive_handler = fun _ -> None) _loc cs = - let l = wrap directive_handler (Gram.parse interf) _loc cs - in Ast.sgSem_of_list l - end - module Printer = Struct.EmptyPrinter.Make(Ast) + let wrap directive_handler pa init_loc cs = + let rec loop loc = + let (pl, stopped_at_directive) = pa loc cs + in + match stopped_at_directive with + | Some new_loc -> + let pl = + (match List.rev pl with + | [] -> assert false + | x :: xs -> + (match directive_handler x with + | None -> xs + | Some x -> x :: xs)) + in (List.rev pl) @ (loop new_loc) + | None -> pl + in loop init_loc + let parse_implem ?(directive_handler = fun _ -> None) _loc cs = + let l = wrap directive_handler (Gram.parse implem) _loc cs + in Ast.stSem_of_list l + let parse_interf ?(directive_handler = fun _ -> None) _loc cs = + let l = wrap directive_handler (Gram.parse interf) _loc cs + in Ast.sgSem_of_list l + let print_interf ?input_file:(_) ?output_file:(_) _ = + failwith "No interface printer" + let print_implem ?input_file:(_) ?output_file:(_) _ = + failwith "No implementation printer" end end module PreCast : @@ -16213,7 +16917,6 @@ module PreCast : | NEWLINE | LINE_DIRECTIVE of int * string option | EOI module Id : Sig.Id module Loc : Sig.Loc - module Warning : Sig.Warning with module Loc = Loc module Ast : Sig.Camlp4Ast with module Loc = Loc module Token : Sig.Token with module Loc = Loc and type t = camlp4_token module Lexer : Sig.Lexer with module Loc = Loc and module Token = Token @@ -16224,18 +16927,15 @@ module PreCast : module DynLoader : Sig.DynLoader module AstFilters : Sig.AstFilters with module Ast = Ast module Syntax : Sig.Camlp4Syntax with module Loc = Loc - and module Warning = Warning and module Token = Token - and module Ast = Ast and module Gram = Gram + and module Token = Token and module Ast = Ast and module Gram = Gram and module Quotation = Quotation module Printers : sig - module OCaml : Sig.Printer with module Ast = Sig.Camlp4AstToAst(Ast) - module OCamlr : Sig.Printer with module Ast = Sig.Camlp4AstToAst(Ast) - module DumpOCamlAst : - Sig.Printer with module Ast = Sig.Camlp4AstToAst(Ast) - module DumpCamlp4Ast : - Sig.Printer with module Ast = Sig.Camlp4AstToAst(Ast) - module Null : Sig.Printer with module Ast = Sig.Camlp4AstToAst(Ast) + module OCaml : Sig.Printer(Ast).S + module OCamlr : Sig.Printer(Ast).S + module DumpOCamlAst : Sig.Printer(Ast).S + module DumpCamlp4Ast : Sig.Printer(Ast).S + module Null : Sig.Printer(Ast).S end module MakeGram (Lexer : Sig.Lexer with module Loc = Loc) : Sig.Grammar.Static with module Loc = Loc and module Token = Lexer.Token @@ -16245,7 +16945,8 @@ module PreCast : module Id = struct let name = "Camlp4.PreCast" - let version = "$Id: Camlp4.ml,v 1.3 2007/02/26 16:43:01 ertai Exp $" + let version = + "$Id: PreCast.ml,v 1.4.4.1 2007/03/30 15:50:12 pouillar Exp $" end type camlp4_token = Sig.camlp4_token = @@ -16258,7 +16959,6 @@ module PreCast : | ANTIQUOT of string * string | COMMENT of string | BLANKS of string | NEWLINE | LINE_DIRECTIVE of int * string option | EOI module Loc = Struct.Loc - module Warning = Struct.Warning.Make(Loc) module Ast = Struct.Camlp4Ast.Make(Loc) module Token = Struct.Token.Make(Loc) module Lexer = Struct.Lexer.Make(Token) @@ -16266,7 +16966,7 @@ module PreCast : module DynLoader = Struct.DynLoader module Quotation = Struct.Quotation.Make(Ast) module MakeSyntax (U : sig end) = - OCamlInitSyntax.Make(Warning)(Ast)(Gram)(Quotation) + OCamlInitSyntax.Make(Ast)(Gram)(Quotation) module Syntax = MakeSyntax(struct end) module AstFilters = Struct.AstFilters.Make(Ast) module MakeGram = Struct.Grammar.Static.Make @@ -16303,17 +17003,14 @@ module Register : PreCast.Ast.str_item parser_fun -> PreCast.Ast.sig_item parser_fun -> unit module Parser - (Id : Sig.Id) - (Maker : functor (Ast : Sig.Ast) -> Sig.Parser with module Ast = Ast) : + (Id : Sig.Id) (Maker : functor (Ast : Sig.Ast) -> Sig.Parser(Ast).S) : sig end module OCamlParser (Id : Sig.Id) - (Maker : - functor (Ast : Sig.Camlp4Ast) -> Sig.Parser with module Ast = Ast) : + (Maker : functor (Ast : Sig.Camlp4Ast) -> Sig.Parser(Ast).S) : sig end module OCamlPreCastParser - (Id : Sig.Id) (Parser : Sig.Parser with module Ast = PreCast.Ast) : - sig end + (Id : Sig.Id) (Parser : Sig.Parser(PreCast.Ast).S) : sig end type 'a printer_fun = ?input_file: string -> ?output_file: string -> 'a -> unit val register_str_item_printer : PreCast.Ast.str_item printer_fun -> unit @@ -16323,25 +17020,22 @@ module Register : PreCast.Ast.sig_item printer_fun -> unit module Printer (Id : Sig.Id) - (Maker : - functor (Syn : Sig.Syntax) -> Sig.Printer with module Ast = Syn.Ast) : + (Maker : functor (Syn : Sig.Syntax) -> Sig.Printer(Syn.Ast).S) : sig end module OCamlPrinter (Id : Sig.Id) - (Maker : - functor (Syn : Sig.Camlp4Syntax) -> - Sig.Printer with module Ast = Syn.Ast) : + (Maker : functor (Syn : Sig.Camlp4Syntax) -> Sig.Printer(Syn.Ast).S) : sig end module OCamlPreCastPrinter - (Id : Sig.Id) (Printer : Sig.Printer with module Ast = PreCast.Ast) : - sig end + (Id : Sig.Id) (Printer : Sig.Printer(PreCast.Ast).S) : sig end module AstFilter (Id : Sig.Id) (Maker : functor (F : Sig.AstFilters) -> sig end) : sig end val declare_dyn_module : string -> (unit -> unit) -> unit val iter_and_take_callbacks : ((string * (unit -> unit)) -> unit) -> unit - module CurrentParser : Sig.Parser with module Ast = PreCast.Ast - module CurrentPrinter : Sig.Printer with module Ast = PreCast.Ast + val loaded_modules : (string list) ref + module CurrentParser : Sig.Parser(PreCast.Ast).S + module CurrentPrinter : Sig.Printer(PreCast.Ast).S val enable_ocaml_printer : unit -> unit val enable_ocamlr_printer : unit -> unit val enable_null_printer : unit -> unit @@ -16371,10 +17065,12 @@ module Register : (fun ?input_file:(_) ?output_file:(_) _ -> failwith "No implementation printer") let callbacks = Queue.create () + let loaded_modules = ref [] let iter_and_take_callbacks f = let rec loop () = loop (f (Queue.take callbacks)) in try loop () with | Queue.Empty -> () - let declare_dyn_module m f = Queue.add (m, f) callbacks + let declare_dyn_module m f = + (loaded_modules := m :: !loaded_modules; Queue.add (m, f) callbacks) let register_str_item_parser f = str_item_parser := f let register_sig_item_parser f = sig_item_parser := f let register_parser f g = (str_item_parser := f; sig_item_parser := g) @@ -16411,8 +17107,7 @@ module Register : end module Printer (Id : Sig.Id) - (Maker : - functor (Syn : Sig.Syntax) -> Sig.Printer with module Ast = Syn.Ast) = + (Maker : functor (Syn : Sig.Syntax) -> Sig.Printer(Syn.Ast).S) = struct let _ = declare_dyn_module Id.name @@ -16421,9 +17116,7 @@ module Register : end module OCamlPrinter (Id : Sig.Id) - (Maker : - functor (Syn : Sig.Camlp4Syntax) -> - Sig.Printer with module Ast = Syn.Ast) = + (Maker : functor (Syn : Sig.Camlp4Syntax) -> Sig.Printer(Syn.Ast).S) = struct let _ = declare_dyn_module Id.name @@ -16431,15 +17124,14 @@ module Register : in register_printer M.print_implem M.print_interf) end module OCamlPreCastPrinter - (Id : Sig.Id) (P : Sig.Printer with module Ast = PreCast.Ast) = + (Id : Sig.Id) (P : Sig.Printer(PreCast.Ast).S) = struct let _ = declare_dyn_module Id.name (fun _ -> register_printer P.print_implem P.print_interf) end module Parser - (Id : Sig.Id) - (Maker : functor (Ast : Sig.Ast) -> Sig.Parser with module Ast = Ast) = + (Id : Sig.Id) (Maker : functor (Ast : Sig.Ast) -> Sig.Parser(Ast).S) = struct let _ = declare_dyn_module Id.name @@ -16448,16 +17140,14 @@ module Register : end module OCamlParser (Id : Sig.Id) - (Maker : - functor (Ast : Sig.Camlp4Ast) -> Sig.Parser with module Ast = Ast) = + (Maker : functor (Ast : Sig.Camlp4Ast) -> Sig.Parser(Ast).S) = struct let _ = declare_dyn_module Id.name (fun _ -> let module M = Maker(PreCast.Ast) in register_parser M.parse_implem M.parse_interf) end - module OCamlPreCastParser - (Id : Sig.Id) (P : Sig.Parser with module Ast = PreCast.Ast) = + module OCamlPreCastParser (Id : Sig.Id) (P : Sig.Parser(PreCast.Ast).S) = struct let _ = declare_dyn_module Id.name @@ -16470,10 +17160,8 @@ module Register : declare_dyn_module Id.name (fun _ -> let module M = Maker(AstFilters) in ()) end - let _ = let module M = Syntax.Parser - in - (sig_item_parser := M.parse_interf; - str_item_parser := M.parse_implem) + let _ = sig_item_parser := Syntax.parse_interf + let _ = str_item_parser := Syntax.parse_implem module CurrentParser = struct module Ast = Ast diff --git a/camlp4/boot/Camlp4.ml4 b/camlp4/boot/Camlp4.ml4 index 597f4291..d3ea1c7a 100644 --- a/camlp4/boot/Camlp4.ml4 +++ b/camlp4/boot/Camlp4.ml4 @@ -7,12 +7,12 @@ module Struct = struct module Loc : sig INCLUDE "camlp4/Camlp4/Struct/Loc.mli"; end = struct INCLUDE "camlp4/Camlp4/Struct/Loc.ml"; end; - module Warning = struct INCLUDE "camlp4/Camlp4/Struct/Warning.ml"; end; module Token : sig INCLUDE "camlp4/Camlp4/Struct/Token.mli"; end = struct INCLUDE "camlp4/Camlp4/Struct/Token.ml"; end; module Lexer = struct INCLUDE "camlp4/boot/Lexer.ml"; end; module Camlp4Ast = struct INCLUDE "camlp4/Camlp4/Struct/Camlp4Ast.ml"; end; + module DynAst = struct INCLUDE "camlp4/Camlp4/Struct/DynAst.ml"; end; module Quotation = struct INCLUDE "camlp4/Camlp4/Struct/Quotation.ml"; end; module AstFilters = struct INCLUDE "camlp4/Camlp4/Struct/AstFilters.ml"; end; module Camlp4Ast2OCamlAst : diff --git a/camlp4/boot/Camlp4Ast.ml b/camlp4/boot/Camlp4Ast.ml index 91b3d51c..e2a77ecc 100644 --- a/camlp4/boot/Camlp4Ast.ml +++ b/camlp4/boot/Camlp4Ast.ml @@ -40,4611 +40,10 @@ module Make (Loc : Sig.Loc) : Sig.Camlp4Ast with module Loc = Loc = external loc_of_class_str_item : class_str_item -> Loc.t = "%field0"; external loc_of_with_constr : with_constr -> Loc.t = "%field0"; external loc_of_binding : binding -> Loc.t = "%field0"; + external loc_of_rec_binding : rec_binding -> Loc.t = "%field0"; external loc_of_module_binding : module_binding -> Loc.t = "%field0"; external loc_of_match_case : match_case -> Loc.t = "%field0"; external loc_of_ident : ident -> Loc.t = "%field0"; - module Meta = - struct - module type META_LOC = - sig - (** The first location is where to put the returned pattern. - Generally it's _loc to match with <:patt< ... >> quotations. - The second location is the one to treat. *) - value meta_loc_patt : Loc.t -> Loc.t -> Ast.patt; - (** The first location is where to put the returned expression. - Generally it's _loc to match with <:expr< ... >> quotations. - The second location is the one to treat. *) - value meta_loc_expr : Loc.t -> Loc.t -> Ast.expr; - end; - module MetaLoc = - struct - value meta_loc_patt _loc location = - let (a, b, c, d, e, f, g, h) = Loc.to_tuple location - in - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Loc") - (Ast.IdLid _loc "of_tuple"))) - (Ast.PaTup _loc - (Ast.PaCom _loc - (Ast.PaStr _loc (Ast.safe_string_escaped a)) - (Ast.PaCom _loc - (Ast.PaCom _loc - (Ast.PaCom _loc - (Ast.PaCom _loc - (Ast.PaCom _loc - (Ast.PaCom _loc - (Ast.PaInt _loc (string_of_int b)) - (Ast.PaInt _loc (string_of_int c))) - (Ast.PaInt _loc (string_of_int d))) - (Ast.PaInt _loc (string_of_int e))) - (Ast.PaInt _loc (string_of_int f))) - (Ast.PaInt _loc (string_of_int g))) - (if h - then Ast.PaId _loc (Ast.IdUid _loc "True") - else Ast.PaId _loc (Ast.IdUid _loc "False"))))); - value meta_loc_expr _loc location = - let (a, b, c, d, e, f, g, h) = Loc.to_tuple location - in - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Loc") - (Ast.IdLid _loc "of_tuple"))) - (Ast.ExTup _loc - (Ast.ExCom _loc - (Ast.ExStr _loc (Ast.safe_string_escaped a)) - (Ast.ExCom _loc - (Ast.ExCom _loc - (Ast.ExCom _loc - (Ast.ExCom _loc - (Ast.ExCom _loc - (Ast.ExCom _loc - (Ast.ExInt _loc (string_of_int b)) - (Ast.ExInt _loc (string_of_int c))) - (Ast.ExInt _loc (string_of_int d))) - (Ast.ExInt _loc (string_of_int e))) - (Ast.ExInt _loc (string_of_int f))) - (Ast.ExInt _loc (string_of_int g))) - (if h - then Ast.ExId _loc (Ast.IdUid _loc "True") - else Ast.ExId _loc (Ast.IdUid _loc "False"))))); - end; - module MetaGhostLoc = - struct - value meta_loc_patt _loc _ = - Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Loc") - (Ast.IdLid _loc "ghost")); - value meta_loc_expr _loc _ = - Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Loc") - (Ast.IdLid _loc "ghost")); - end; - module MetaLocVar = - struct - value meta_loc_patt _loc _ = - Ast.PaId _loc (Ast.IdLid _loc Loc.name.val); - value meta_loc_expr _loc _ = - Ast.ExId _loc (Ast.IdLid _loc Loc.name.val); - end; - module Make (MetaLoc : META_LOC) = - struct - open MetaLoc; - value meta_acc_Loc_t = meta_loc_expr; - module Expr = - struct - value meta_string _loc s = Ast.ExStr _loc s; - value meta_int _loc s = Ast.ExInt _loc s; - value meta_float _loc s = Ast.ExFlo _loc s; - value meta_char _loc s = Ast.ExChr _loc s; - value meta_bool _loc = - fun - [ False -> Ast.ExId _loc (Ast.IdUid _loc "False") - | True -> Ast.ExId _loc (Ast.IdUid _loc "True") ]; - value rec meta_list mf_a _loc = - fun - [ [] -> Ast.ExId _loc (Ast.IdUid _loc "[]") - | [ x :: xs ] -> - Ast.ExApp _loc - (Ast.ExApp _loc (Ast.ExId _loc (Ast.IdUid _loc "::")) - (mf_a _loc x)) - (meta_list mf_a _loc xs) ]; - value rec meta_binding _loc = - fun - [ Ast.BiAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.BiEq x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "BiEq"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_expr _loc x2) - | Ast.BiSem x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "BiSem"))) - (meta_acc_Loc_t _loc x0)) - (meta_binding _loc x1)) - (meta_binding _loc x2) - | Ast.BiAnd x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "BiAnd"))) - (meta_acc_Loc_t _loc x0)) - (meta_binding _loc x1)) - (meta_binding _loc x2) - | Ast.BiNil x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "BiNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_class_expr _loc = - fun - [ Ast.CeAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.CeEq x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeEq"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_expr _loc x1)) - (meta_class_expr _loc x2) - | Ast.CeAnd x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeAnd"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_expr _loc x1)) - (meta_class_expr _loc x2) - | Ast.CeTyc x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeTyc"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_expr _loc x1)) - (meta_class_type _loc x2) - | Ast.CeStr x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeStr"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_class_str_item _loc x2) - | Ast.CeLet x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeLet"))) - (meta_acc_Loc_t _loc x0)) - (meta_meta_bool _loc x1)) - (meta_binding _loc x2)) - (meta_class_expr _loc x3) - | Ast.CeFun x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeFun"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_class_expr _loc x2) - | Ast.CeCon x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeCon"))) - (meta_acc_Loc_t _loc x0)) - (meta_meta_bool _loc x1)) - (meta_ident _loc x2)) - (meta_ctyp _loc x3) - | Ast.CeApp x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeApp"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_expr _loc x1)) - (meta_expr _loc x2) - | Ast.CeNil x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_class_sig_item _loc = - fun - [ Ast.CgAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.CgVir x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CgVir"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_meta_bool _loc x2)) - (meta_ctyp _loc x3) - | Ast.CgVal x0 x1 x2 x3 x4 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CgVal"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_meta_bool _loc x2)) - (meta_meta_bool _loc x3)) - (meta_ctyp _loc x4) - | Ast.CgMth x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CgMth"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_meta_bool _loc x2)) - (meta_ctyp _loc x3) - | Ast.CgInh x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CgInh"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_type _loc x1) - | Ast.CgSem x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CgSem"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_sig_item _loc x1)) - (meta_class_sig_item _loc x2) - | Ast.CgCtr x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CgCtr"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.CgNil x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CgNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_class_str_item _loc = - fun - [ Ast.CrAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.CrVvr x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrVvr"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_meta_bool _loc x2)) - (meta_ctyp _loc x3) - | Ast.CrVir x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrVir"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_meta_bool _loc x2)) - (meta_ctyp _loc x3) - | Ast.CrVal x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrVal"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_meta_bool _loc x2)) - (meta_expr _loc x3) - | Ast.CrMth x0 x1 x2 x3 x4 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrMth"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_meta_bool _loc x2)) - (meta_expr _loc x3)) - (meta_ctyp _loc x4) - | Ast.CrIni x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrIni"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1) - | Ast.CrInh x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrInh"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_expr _loc x1)) - (meta_string _loc x2) - | Ast.CrCtr x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrCtr"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.CrSem x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrSem"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_str_item _loc x1)) - (meta_class_str_item _loc x2) - | Ast.CrNil x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_class_type _loc = - fun - [ Ast.CtAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.CtEq x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CtEq"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_type _loc x1)) - (meta_class_type _loc x2) - | Ast.CtCol x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CtCol"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_type _loc x1)) - (meta_class_type _loc x2) - | Ast.CtAnd x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CtAnd"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_type _loc x1)) - (meta_class_type _loc x2) - | Ast.CtSig x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CtSig"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_class_sig_item _loc x2) - | Ast.CtFun x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CtFun"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_class_type _loc x2) - | Ast.CtCon x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CtCon"))) - (meta_acc_Loc_t _loc x0)) - (meta_meta_bool _loc x1)) - (meta_ident _loc x2)) - (meta_ctyp _loc x3) - | Ast.CtNil x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CtNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_ctyp _loc = - fun - [ Ast.TyAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.TyOfAmp x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyOfAmp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyAmp x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyAmp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyVrnInfSup x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyVrnInfSup"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyVrnInf x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyVrnInf"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TyVrnSup x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyVrnSup"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TyVrnEq x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyVrnEq"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TySta x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TySta"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyTup x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyTup"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TyMut x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyMut"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TyPrv x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyPrv"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TyOr x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyOr"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyAnd x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyAnd"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyOf x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyOf"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TySum x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TySum"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TyCom x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyCom"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TySem x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TySem"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyCol x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyCol"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyRec x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyRec"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TyVrn x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyVrn"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.TyQuM x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyQuM"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.TyQuP x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyQuP"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.TyQuo x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyQuo"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.TyPol x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyPol"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyOlb x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyOlb"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyObj x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyObj"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_meta_bool _loc x2) - | Ast.TyDcl x0 x1 x2 x3 x4 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyDcl"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_list meta_ctyp _loc x2)) - (meta_ctyp _loc x3)) - (meta_list - (fun _loc (x1, x2) -> - Ast.ExTup _loc - (Ast.ExCom _loc (meta_ctyp _loc x1) - (meta_ctyp _loc x2))) - _loc x4) - | Ast.TyMan x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyMan"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyId x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyId"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.TyLab x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyLab"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyCls x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyCls"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.TyArr x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyArr"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyApp x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyApp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyAny x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyAny"))) - (meta_acc_Loc_t _loc x0) - | Ast.TyAli x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyAli"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyNil x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_expr _loc = - fun - [ Ast.ExWhi x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExWhi"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExVrn x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExVrn"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExTyc x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExTyc"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_ctyp _loc x2) - | Ast.ExCom x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExCom"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExTup x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExTup"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1) - | Ast.ExTry x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExTry"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_match_case _loc x2) - | Ast.ExStr x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExStr"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExSte x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExSte"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExSnd x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExSnd"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_string _loc x2) - | Ast.ExSeq x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExSeq"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1) - | Ast.ExRec x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExRec"))) - (meta_acc_Loc_t _loc x0)) - (meta_binding _loc x1)) - (meta_expr _loc x2) - | Ast.ExOvr x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExOvr"))) - (meta_acc_Loc_t _loc x0)) - (meta_binding _loc x1) - | Ast.ExOlb x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExOlb"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_expr _loc x2) - | Ast.ExObj x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExObj"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_class_str_item _loc x2) - | Ast.ExNew x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExNew"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.ExMat x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExMat"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_match_case _loc x2) - | Ast.ExLmd x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExLmd"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_expr _loc x2)) - (meta_expr _loc x3) - | Ast.ExLet x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExLet"))) - (meta_acc_Loc_t _loc x0)) - (meta_meta_bool _loc x1)) - (meta_binding _loc x2)) - (meta_expr _loc x3) - | Ast.ExLaz x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExLaz"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1) - | Ast.ExLab x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExLab"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_expr _loc x2) - | Ast.ExNativeInt x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExNativeInt"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExInt64 x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExInt64"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExInt32 x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExInt32"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExInt x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExInt"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExIfe x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExIfe"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2)) - (meta_expr _loc x3) - | Ast.ExFun x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExFun"))) - (meta_acc_Loc_t _loc x0)) - (meta_match_case _loc x1) - | Ast.ExFor x0 x1 x2 x3 x4 x5 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc - (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExFor"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_expr _loc x2)) - (meta_expr _loc x3)) - (meta_meta_bool _loc x4)) - (meta_expr _loc x5) - | Ast.ExFlo x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExFlo"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExCoe x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExCoe"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_ctyp _loc x2)) - (meta_ctyp _loc x3) - | Ast.ExChr x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExChr"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExAss x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExAss"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExAsr x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExAsr"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1) - | Ast.ExAsf x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExAsf"))) - (meta_acc_Loc_t _loc x0) - | Ast.ExSem x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExSem"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExArr x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExArr"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1) - | Ast.ExAre x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExAre"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExApp x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExApp"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.ExAcc x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExAcc"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExId x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExId"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.ExNil x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_ident _loc = - fun - [ Ast.IdAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.IdUid x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "IdUid"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.IdLid x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "IdLid"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.IdApp x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "IdApp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1)) - (meta_ident _loc x2) - | Ast.IdAcc x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "IdAcc"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1)) - (meta_ident _loc x2) ] - and meta_match_case _loc = - fun - [ Ast.McAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.McArr x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "McArr"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_expr _loc x2)) - (meta_expr _loc x3) - | Ast.McOr x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "McOr"))) - (meta_acc_Loc_t _loc x0)) - (meta_match_case _loc x1)) - (meta_match_case _loc x2) - | Ast.McNil x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "McNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_meta_bool _loc = - fun - [ Ast.BAnt x0 -> Ast.ExAnt _loc x0 - | Ast.BFalse -> - Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "BFalse")) - | Ast.BTrue -> - Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "BTrue")) ] - and meta_meta_list mf_a _loc = - fun - [ Ast.LAnt x0 -> Ast.ExAnt _loc x0 - | Ast.LCons x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "LCons"))) - (mf_a _loc x0)) - (meta_meta_list mf_a _loc x1) - | Ast.LNil -> - Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "LNil")) ] - and meta_meta_option mf_a _loc = - fun - [ Ast.OAnt x0 -> Ast.ExAnt _loc x0 - | Ast.OSome x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "OSome"))) - (mf_a _loc x0) - | Ast.ONone -> - Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ONone")) ] - and meta_module_binding _loc = - fun - [ Ast.MbAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.MbCol x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MbCol"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_type _loc x2) - | Ast.MbColEq x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MbColEq"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_type _loc x2)) - (meta_module_expr _loc x3) - | Ast.MbAnd x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MbAnd"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_binding _loc x1)) - (meta_module_binding _loc x2) - | Ast.MbNil x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MbNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_module_expr _loc = - fun - [ Ast.MeAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.MeTyc x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MeTyc"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_expr _loc x1)) - (meta_module_type _loc x2) - | Ast.MeStr x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MeStr"))) - (meta_acc_Loc_t _loc x0)) - (meta_str_item _loc x1) - | Ast.MeFun x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MeFun"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_type _loc x2)) - (meta_module_expr _loc x3) - | Ast.MeApp x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MeApp"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_expr _loc x1)) - (meta_module_expr _loc x2) - | Ast.MeId x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MeId"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) ] - and meta_module_type _loc = - fun - [ Ast.MtAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.MtWit x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MtWit"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_type _loc x1)) - (meta_with_constr _loc x2) - | Ast.MtSig x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MtSig"))) - (meta_acc_Loc_t _loc x0)) - (meta_sig_item _loc x1) - | Ast.MtQuo x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MtQuo"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.MtFun x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MtFun"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_type _loc x2)) - (meta_module_type _loc x3) - | Ast.MtId x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MtId"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) ] - and meta_patt _loc = - fun - [ Ast.PaVrn x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaVrn"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaTyp x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaTyp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.PaTyc x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaTyc"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_ctyp _loc x2) - | Ast.PaTup x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaTup"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1) - | Ast.PaStr x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaStr"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaEq x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaEq"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_patt _loc x2) - | Ast.PaRec x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaRec"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1) - | Ast.PaRng x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaRng"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_patt _loc x2) - | Ast.PaOrp x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaOrp"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_patt _loc x2) - | Ast.PaOlbi x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaOlbi"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_patt _loc x2)) - (meta_expr _loc x3) - | Ast.PaOlb x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaOlb"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_patt _loc x2) - | Ast.PaLab x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaLab"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_patt _loc x2) - | Ast.PaFlo x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaFlo"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaNativeInt x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaNativeInt"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaInt64 x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaInt64"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaInt32 x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaInt32"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaInt x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaInt"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaChr x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaChr"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaSem x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaSem"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_patt _loc x2) - | Ast.PaCom x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaCom"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_patt _loc x2) - | Ast.PaArr x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaArr"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1) - | Ast.PaApp x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaApp"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_patt _loc x2) - | Ast.PaAny x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaAny"))) - (meta_acc_Loc_t _loc x0) - | Ast.PaAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.PaAli x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaAli"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_patt _loc x2) - | Ast.PaId x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaId"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.PaNil x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_sig_item _loc = - fun - [ Ast.SgAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.SgVal x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgVal"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_ctyp _loc x2) - | Ast.SgTyp x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgTyp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.SgOpn x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgOpn"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.SgMty x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgMty"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_type _loc x2) - | Ast.SgRecMod x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgRecMod"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_binding _loc x1) - | Ast.SgMod x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgMod"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_type _loc x2) - | Ast.SgInc x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgInc"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_type _loc x1) - | Ast.SgExt x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgExt"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_ctyp _loc x2)) - (meta_meta_list meta_string _loc x3) - | Ast.SgExc x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgExc"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.SgDir x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgDir"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_expr _loc x2) - | Ast.SgSem x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgSem"))) - (meta_acc_Loc_t _loc x0)) - (meta_sig_item _loc x1)) - (meta_sig_item _loc x2) - | Ast.SgClt x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgClt"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_type _loc x1) - | Ast.SgCls x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgCls"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_type _loc x1) - | Ast.SgNil x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_str_item _loc = - fun - [ Ast.StAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.StVal x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StVal"))) - (meta_acc_Loc_t _loc x0)) - (meta_meta_bool _loc x1)) - (meta_binding _loc x2) - | Ast.StTyp x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StTyp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.StOpn x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StOpn"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.StMty x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StMty"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_type _loc x2) - | Ast.StRecMod x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StRecMod"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_binding _loc x1) - | Ast.StMod x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StMod"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_expr _loc x2) - | Ast.StInc x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StInc"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_expr _loc x1) - | Ast.StExt x0 x1 x2 x3 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StExt"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_ctyp _loc x2)) - (meta_meta_list meta_string _loc x3) - | Ast.StExp x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StExp"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1) - | Ast.StExc x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StExc"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_meta_option meta_ident _loc x2) - | Ast.StDir x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StDir"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_expr _loc x2) - | Ast.StSem x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StSem"))) - (meta_acc_Loc_t _loc x0)) - (meta_str_item _loc x1)) - (meta_str_item _loc x2) - | Ast.StClt x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StClt"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_type _loc x1) - | Ast.StCls x0 x1 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StCls"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_expr _loc x1) - | Ast.StNil x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_with_constr _loc = - fun - [ Ast.WcAnt x0 x1 -> Ast.ExAnt x0 x1 - | Ast.WcAnd x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "WcAnd"))) - (meta_acc_Loc_t _loc x0)) - (meta_with_constr _loc x1)) - (meta_with_constr _loc x2) - | Ast.WcMod x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "WcMod"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1)) - (meta_ident _loc x2) - | Ast.WcTyp x0 x1 x2 -> - Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "WcTyp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.WcNil x0 -> - Ast.ExApp _loc - (Ast.ExId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "WcNil"))) - (meta_acc_Loc_t _loc x0) ]; - end; - value meta_acc_Loc_t = meta_loc_patt; - module Patt = - struct - value meta_string _loc s = Ast.PaStr _loc s; - value meta_int _loc s = Ast.PaInt _loc s; - value meta_float _loc s = Ast.PaFlo _loc s; - value meta_char _loc s = Ast.PaChr _loc s; - value meta_bool _loc = - fun - [ False -> Ast.PaId _loc (Ast.IdUid _loc "False") - | True -> Ast.PaId _loc (Ast.IdUid _loc "True") ]; - value rec meta_list mf_a _loc = - fun - [ [] -> Ast.PaId _loc (Ast.IdUid _loc "[]") - | [ x :: xs ] -> - Ast.PaApp _loc - (Ast.PaApp _loc (Ast.PaId _loc (Ast.IdUid _loc "::")) - (mf_a _loc x)) - (meta_list mf_a _loc xs) ]; - value rec meta_binding _loc = - fun - [ Ast.BiAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.BiEq x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "BiEq"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_expr _loc x2) - | Ast.BiSem x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "BiSem"))) - (meta_acc_Loc_t _loc x0)) - (meta_binding _loc x1)) - (meta_binding _loc x2) - | Ast.BiAnd x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "BiAnd"))) - (meta_acc_Loc_t _loc x0)) - (meta_binding _loc x1)) - (meta_binding _loc x2) - | Ast.BiNil x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "BiNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_class_expr _loc = - fun - [ Ast.CeAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.CeEq x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeEq"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_expr _loc x1)) - (meta_class_expr _loc x2) - | Ast.CeAnd x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeAnd"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_expr _loc x1)) - (meta_class_expr _loc x2) - | Ast.CeTyc x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeTyc"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_expr _loc x1)) - (meta_class_type _loc x2) - | Ast.CeStr x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeStr"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_class_str_item _loc x2) - | Ast.CeLet x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeLet"))) - (meta_acc_Loc_t _loc x0)) - (meta_meta_bool _loc x1)) - (meta_binding _loc x2)) - (meta_class_expr _loc x3) - | Ast.CeFun x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeFun"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_class_expr _loc x2) - | Ast.CeCon x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeCon"))) - (meta_acc_Loc_t _loc x0)) - (meta_meta_bool _loc x1)) - (meta_ident _loc x2)) - (meta_ctyp _loc x3) - | Ast.CeApp x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeApp"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_expr _loc x1)) - (meta_expr _loc x2) - | Ast.CeNil x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CeNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_class_sig_item _loc = - fun - [ Ast.CgAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.CgVir x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CgVir"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_meta_bool _loc x2)) - (meta_ctyp _loc x3) - | Ast.CgVal x0 x1 x2 x3 x4 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CgVal"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_meta_bool _loc x2)) - (meta_meta_bool _loc x3)) - (meta_ctyp _loc x4) - | Ast.CgMth x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CgMth"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_meta_bool _loc x2)) - (meta_ctyp _loc x3) - | Ast.CgInh x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CgInh"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_type _loc x1) - | Ast.CgSem x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CgSem"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_sig_item _loc x1)) - (meta_class_sig_item _loc x2) - | Ast.CgCtr x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CgCtr"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.CgNil x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CgNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_class_str_item _loc = - fun - [ Ast.CrAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.CrVvr x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrVvr"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_meta_bool _loc x2)) - (meta_ctyp _loc x3) - | Ast.CrVir x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrVir"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_meta_bool _loc x2)) - (meta_ctyp _loc x3) - | Ast.CrVal x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrVal"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_meta_bool _loc x2)) - (meta_expr _loc x3) - | Ast.CrMth x0 x1 x2 x3 x4 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrMth"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_meta_bool _loc x2)) - (meta_expr _loc x3)) - (meta_ctyp _loc x4) - | Ast.CrIni x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrIni"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1) - | Ast.CrInh x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrInh"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_expr _loc x1)) - (meta_string _loc x2) - | Ast.CrCtr x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrCtr"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.CrSem x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrSem"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_str_item _loc x1)) - (meta_class_str_item _loc x2) - | Ast.CrNil x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CrNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_class_type _loc = - fun - [ Ast.CtAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.CtEq x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CtEq"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_type _loc x1)) - (meta_class_type _loc x2) - | Ast.CtCol x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CtCol"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_type _loc x1)) - (meta_class_type _loc x2) - | Ast.CtAnd x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CtAnd"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_type _loc x1)) - (meta_class_type _loc x2) - | Ast.CtSig x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CtSig"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_class_sig_item _loc x2) - | Ast.CtFun x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CtFun"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_class_type _loc x2) - | Ast.CtCon x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CtCon"))) - (meta_acc_Loc_t _loc x0)) - (meta_meta_bool _loc x1)) - (meta_ident _loc x2)) - (meta_ctyp _loc x3) - | Ast.CtNil x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "CtNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_ctyp _loc = - fun - [ Ast.TyAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.TyOfAmp x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyOfAmp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyAmp x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyAmp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyVrnInfSup x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyVrnInfSup"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyVrnInf x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyVrnInf"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TyVrnSup x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyVrnSup"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TyVrnEq x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyVrnEq"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TySta x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TySta"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyTup x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyTup"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TyMut x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyMut"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TyPrv x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyPrv"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TyOr x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyOr"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyAnd x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyAnd"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyOf x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyOf"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TySum x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TySum"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TyCom x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyCom"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TySem x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TySem"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyCol x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyCol"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyRec x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyRec"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.TyVrn x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyVrn"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.TyQuM x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyQuM"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.TyQuP x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyQuP"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.TyQuo x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyQuo"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.TyPol x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyPol"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyOlb x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyOlb"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyObj x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyObj"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_meta_bool _loc x2) - | Ast.TyDcl x0 x1 x2 x3 x4 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyDcl"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_list meta_ctyp _loc x2)) - (meta_ctyp _loc x3)) - (meta_list - (fun _loc (x1, x2) -> - Ast.PaTup _loc - (Ast.PaCom _loc (meta_ctyp _loc x1) - (meta_ctyp _loc x2))) - _loc x4) - | Ast.TyMan x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyMan"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyId x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyId"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.TyLab x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyLab"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyCls x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyCls"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.TyArr x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyArr"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyApp x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyApp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyAny x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyAny"))) - (meta_acc_Loc_t _loc x0) - | Ast.TyAli x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyAli"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.TyNil x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "TyNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_expr _loc = - fun - [ Ast.ExWhi x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExWhi"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExVrn x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExVrn"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExTyc x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExTyc"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_ctyp _loc x2) - | Ast.ExCom x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExCom"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExTup x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExTup"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1) - | Ast.ExTry x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExTry"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_match_case _loc x2) - | Ast.ExStr x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExStr"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExSte x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExSte"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExSnd x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExSnd"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_string _loc x2) - | Ast.ExSeq x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExSeq"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1) - | Ast.ExRec x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExRec"))) - (meta_acc_Loc_t _loc x0)) - (meta_binding _loc x1)) - (meta_expr _loc x2) - | Ast.ExOvr x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExOvr"))) - (meta_acc_Loc_t _loc x0)) - (meta_binding _loc x1) - | Ast.ExOlb x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExOlb"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_expr _loc x2) - | Ast.ExObj x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExObj"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_class_str_item _loc x2) - | Ast.ExNew x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExNew"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.ExMat x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExMat"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_match_case _loc x2) - | Ast.ExLmd x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExLmd"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_expr _loc x2)) - (meta_expr _loc x3) - | Ast.ExLet x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExLet"))) - (meta_acc_Loc_t _loc x0)) - (meta_meta_bool _loc x1)) - (meta_binding _loc x2)) - (meta_expr _loc x3) - | Ast.ExLaz x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExLaz"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1) - | Ast.ExLab x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExLab"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_expr _loc x2) - | Ast.ExNativeInt x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExNativeInt"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExInt64 x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExInt64"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExInt32 x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExInt32"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExInt x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExInt"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExIfe x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExIfe"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2)) - (meta_expr _loc x3) - | Ast.ExFun x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExFun"))) - (meta_acc_Loc_t _loc x0)) - (meta_match_case _loc x1) - | Ast.ExFor x0 x1 x2 x3 x4 x5 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc - (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExFor"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_expr _loc x2)) - (meta_expr _loc x3)) - (meta_meta_bool _loc x4)) - (meta_expr _loc x5) - | Ast.ExFlo x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExFlo"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExCoe x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExCoe"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_ctyp _loc x2)) - (meta_ctyp _loc x3) - | Ast.ExChr x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExChr"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.ExAss x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExAss"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExAsr x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExAsr"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1) - | Ast.ExAsf x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExAsf"))) - (meta_acc_Loc_t _loc x0) - | Ast.ExSem x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExSem"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExArr x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExArr"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1) - | Ast.ExAre x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExAre"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExApp x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExApp"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.ExAcc x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExAcc"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1)) - (meta_expr _loc x2) - | Ast.ExId x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExId"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.ExNil x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ExNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_ident _loc = - fun - [ Ast.IdAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.IdUid x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "IdUid"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.IdLid x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "IdLid"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.IdApp x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "IdApp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1)) - (meta_ident _loc x2) - | Ast.IdAcc x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "IdAcc"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1)) - (meta_ident _loc x2) ] - and meta_match_case _loc = - fun - [ Ast.McAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.McArr x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "McArr"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_expr _loc x2)) - (meta_expr _loc x3) - | Ast.McOr x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "McOr"))) - (meta_acc_Loc_t _loc x0)) - (meta_match_case _loc x1)) - (meta_match_case _loc x2) - | Ast.McNil x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "McNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_meta_bool _loc = - fun - [ Ast.BAnt x0 -> Ast.PaAnt _loc x0 - | Ast.BFalse -> - Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "BFalse")) - | Ast.BTrue -> - Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "BTrue")) ] - and meta_meta_list mf_a _loc = - fun - [ Ast.LAnt x0 -> Ast.PaAnt _loc x0 - | Ast.LCons x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "LCons"))) - (mf_a _loc x0)) - (meta_meta_list mf_a _loc x1) - | Ast.LNil -> - Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "LNil")) ] - and meta_meta_option mf_a _loc = - fun - [ Ast.OAnt x0 -> Ast.PaAnt _loc x0 - | Ast.OSome x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "OSome"))) - (mf_a _loc x0) - | Ast.ONone -> - Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "ONone")) ] - and meta_module_binding _loc = - fun - [ Ast.MbAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.MbCol x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MbCol"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_type _loc x2) - | Ast.MbColEq x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MbColEq"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_type _loc x2)) - (meta_module_expr _loc x3) - | Ast.MbAnd x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MbAnd"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_binding _loc x1)) - (meta_module_binding _loc x2) - | Ast.MbNil x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MbNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_module_expr _loc = - fun - [ Ast.MeAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.MeTyc x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MeTyc"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_expr _loc x1)) - (meta_module_type _loc x2) - | Ast.MeStr x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MeStr"))) - (meta_acc_Loc_t _loc x0)) - (meta_str_item _loc x1) - | Ast.MeFun x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MeFun"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_type _loc x2)) - (meta_module_expr _loc x3) - | Ast.MeApp x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MeApp"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_expr _loc x1)) - (meta_module_expr _loc x2) - | Ast.MeId x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MeId"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) ] - and meta_module_type _loc = - fun - [ Ast.MtAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.MtWit x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MtWit"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_type _loc x1)) - (meta_with_constr _loc x2) - | Ast.MtSig x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MtSig"))) - (meta_acc_Loc_t _loc x0)) - (meta_sig_item _loc x1) - | Ast.MtQuo x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MtQuo"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.MtFun x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MtFun"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_type _loc x2)) - (meta_module_type _loc x3) - | Ast.MtId x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "MtId"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) ] - and meta_patt _loc = - fun - [ Ast.PaVrn x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaVrn"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaTyp x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaTyp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.PaTyc x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaTyc"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_ctyp _loc x2) - | Ast.PaTup x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaTup"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1) - | Ast.PaStr x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaStr"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaEq x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaEq"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_patt _loc x2) - | Ast.PaRec x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaRec"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1) - | Ast.PaRng x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaRng"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_patt _loc x2) - | Ast.PaOrp x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaOrp"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_patt _loc x2) - | Ast.PaOlbi x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaOlbi"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_patt _loc x2)) - (meta_expr _loc x3) - | Ast.PaOlb x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaOlb"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_patt _loc x2) - | Ast.PaLab x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaLab"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_patt _loc x2) - | Ast.PaFlo x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaFlo"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaNativeInt x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaNativeInt"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaInt64 x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaInt64"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaInt32 x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaInt32"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaInt x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaInt"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaChr x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaChr"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1) - | Ast.PaSem x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaSem"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_patt _loc x2) - | Ast.PaCom x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaCom"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_patt _loc x2) - | Ast.PaArr x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaArr"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1) - | Ast.PaApp x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaApp"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_patt _loc x2) - | Ast.PaAny x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaAny"))) - (meta_acc_Loc_t _loc x0) - | Ast.PaAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.PaAli x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaAli"))) - (meta_acc_Loc_t _loc x0)) - (meta_patt _loc x1)) - (meta_patt _loc x2) - | Ast.PaId x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaId"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.PaNil x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "PaNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_sig_item _loc = - fun - [ Ast.SgAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.SgVal x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgVal"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_ctyp _loc x2) - | Ast.SgTyp x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgTyp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.SgOpn x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgOpn"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.SgMty x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgMty"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_type _loc x2) - | Ast.SgRecMod x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgRecMod"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_binding _loc x1) - | Ast.SgMod x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgMod"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_type _loc x2) - | Ast.SgInc x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgInc"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_type _loc x1) - | Ast.SgExt x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgExt"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_ctyp _loc x2)) - (meta_meta_list meta_string _loc x3) - | Ast.SgExc x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgExc"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.SgDir x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgDir"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_expr _loc x2) - | Ast.SgSem x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgSem"))) - (meta_acc_Loc_t _loc x0)) - (meta_sig_item _loc x1)) - (meta_sig_item _loc x2) - | Ast.SgClt x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgClt"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_type _loc x1) - | Ast.SgCls x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgCls"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_type _loc x1) - | Ast.SgNil x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "SgNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_str_item _loc = - fun - [ Ast.StAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.StVal x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StVal"))) - (meta_acc_Loc_t _loc x0)) - (meta_meta_bool _loc x1)) - (meta_binding _loc x2) - | Ast.StTyp x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StTyp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1) - | Ast.StOpn x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StOpn"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1) - | Ast.StMty x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StMty"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_type _loc x2) - | Ast.StRecMod x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StRecMod"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_binding _loc x1) - | Ast.StMod x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StMod"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_module_expr _loc x2) - | Ast.StInc x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StInc"))) - (meta_acc_Loc_t _loc x0)) - (meta_module_expr _loc x1) - | Ast.StExt x0 x1 x2 x3 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StExt"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_ctyp _loc x2)) - (meta_meta_list meta_string _loc x3) - | Ast.StExp x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StExp"))) - (meta_acc_Loc_t _loc x0)) - (meta_expr _loc x1) - | Ast.StExc x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StExc"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_meta_option meta_ident _loc x2) - | Ast.StDir x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StDir"))) - (meta_acc_Loc_t _loc x0)) - (meta_string _loc x1)) - (meta_expr _loc x2) - | Ast.StSem x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StSem"))) - (meta_acc_Loc_t _loc x0)) - (meta_str_item _loc x1)) - (meta_str_item _loc x2) - | Ast.StClt x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StClt"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_type _loc x1) - | Ast.StCls x0 x1 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StCls"))) - (meta_acc_Loc_t _loc x0)) - (meta_class_expr _loc x1) - | Ast.StNil x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "StNil"))) - (meta_acc_Loc_t _loc x0) ] - and meta_with_constr _loc = - fun - [ Ast.WcAnt x0 x1 -> Ast.PaAnt x0 x1 - | Ast.WcAnd x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "WcAnd"))) - (meta_acc_Loc_t _loc x0)) - (meta_with_constr _loc x1)) - (meta_with_constr _loc x2) - | Ast.WcMod x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "WcMod"))) - (meta_acc_Loc_t _loc x0)) - (meta_ident _loc x1)) - (meta_ident _loc x2) - | Ast.WcTyp x0 x1 x2 -> - Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "WcTyp"))) - (meta_acc_Loc_t _loc x0)) - (meta_ctyp _loc x1)) - (meta_ctyp _loc x2) - | Ast.WcNil x0 -> - Ast.PaApp _loc - (Ast.PaId _loc - (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") - (Ast.IdUid _loc "WcNil"))) - (meta_acc_Loc_t _loc x0) ]; - end; - end; - end; - class map = - object (o) - method string = fun x -> (x : string); - method int = fun x -> (x : int); - method float = fun x -> (x : float); - method bool = fun x -> (x : bool); - method list : ! 'a 'b. ('a -> 'b) -> list 'a -> list 'b = List.map; - method option : ! 'a 'b. ('a -> 'b) -> option 'a -> option 'b = - fun f -> fun [ None -> None | Some x -> Some (f x) ]; - method array : ! 'a 'b. ('a -> 'b) -> array 'a -> array 'b = Array. - map; - method ref : ! 'a 'b. ('a -> 'b) -> ref 'a -> ref 'b = - fun f { \val = x } -> { \val = f x; }; - method _Loc_t : Loc.t -> Loc.t = fun x -> x; - method with_constr : with_constr -> with_constr = - fun - [ WcNil _x0 -> WcNil (o#_Loc_t _x0) - | WcTyp _x0 _x1 _x2 -> - WcTyp (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | WcMod _x0 _x1 _x2 -> - WcMod (o#_Loc_t _x0) (o#ident _x1) (o#ident _x2) - | WcAnd _x0 _x1 _x2 -> - WcAnd (o#_Loc_t _x0) (o#with_constr _x1) (o#with_constr _x2) - | WcAnt _x0 _x1 -> WcAnt (o#_Loc_t _x0) (o#string _x1) ]; - method str_item : str_item -> str_item = - fun - [ StNil _x0 -> StNil (o#_Loc_t _x0) - | StCls _x0 _x1 -> StCls (o#_Loc_t _x0) (o#class_expr _x1) - | StClt _x0 _x1 -> StClt (o#_Loc_t _x0) (o#class_type _x1) - | StSem _x0 _x1 _x2 -> - StSem (o#_Loc_t _x0) (o#str_item _x1) (o#str_item _x2) - | StDir _x0 _x1 _x2 -> - StDir (o#_Loc_t _x0) (o#string _x1) (o#expr _x2) - | StExc _x0 _x1 _x2 -> - StExc (o#_Loc_t _x0) (o#ctyp _x1) (o#meta_option o#ident _x2) - | StExp _x0 _x1 -> StExp (o#_Loc_t _x0) (o#expr _x1) - | StExt _x0 _x1 _x2 _x3 -> - StExt (o#_Loc_t _x0) (o#string _x1) (o#ctyp _x2) - (o#meta_list o#string _x3) - | StInc _x0 _x1 -> StInc (o#_Loc_t _x0) (o#module_expr _x1) - | StMod _x0 _x1 _x2 -> - StMod (o#_Loc_t _x0) (o#string _x1) (o#module_expr _x2) - | StRecMod _x0 _x1 -> - StRecMod (o#_Loc_t _x0) (o#module_binding _x1) - | StMty _x0 _x1 _x2 -> - StMty (o#_Loc_t _x0) (o#string _x1) (o#module_type _x2) - | StOpn _x0 _x1 -> StOpn (o#_Loc_t _x0) (o#ident _x1) - | StTyp _x0 _x1 -> StTyp (o#_Loc_t _x0) (o#ctyp _x1) - | StVal _x0 _x1 _x2 -> - StVal (o#_Loc_t _x0) (o#meta_bool _x1) (o#binding _x2) - | StAnt _x0 _x1 -> StAnt (o#_Loc_t _x0) (o#string _x1) ]; - method sig_item : sig_item -> sig_item = - fun - [ SgNil _x0 -> SgNil (o#_Loc_t _x0) - | SgCls _x0 _x1 -> SgCls (o#_Loc_t _x0) (o#class_type _x1) - | SgClt _x0 _x1 -> SgClt (o#_Loc_t _x0) (o#class_type _x1) - | SgSem _x0 _x1 _x2 -> - SgSem (o#_Loc_t _x0) (o#sig_item _x1) (o#sig_item _x2) - | SgDir _x0 _x1 _x2 -> - SgDir (o#_Loc_t _x0) (o#string _x1) (o#expr _x2) - | SgExc _x0 _x1 -> SgExc (o#_Loc_t _x0) (o#ctyp _x1) - | SgExt _x0 _x1 _x2 _x3 -> - SgExt (o#_Loc_t _x0) (o#string _x1) (o#ctyp _x2) - (o#meta_list o#string _x3) - | SgInc _x0 _x1 -> SgInc (o#_Loc_t _x0) (o#module_type _x1) - | SgMod _x0 _x1 _x2 -> - SgMod (o#_Loc_t _x0) (o#string _x1) (o#module_type _x2) - | SgRecMod _x0 _x1 -> - SgRecMod (o#_Loc_t _x0) (o#module_binding _x1) - | SgMty _x0 _x1 _x2 -> - SgMty (o#_Loc_t _x0) (o#string _x1) (o#module_type _x2) - | SgOpn _x0 _x1 -> SgOpn (o#_Loc_t _x0) (o#ident _x1) - | SgTyp _x0 _x1 -> SgTyp (o#_Loc_t _x0) (o#ctyp _x1) - | SgVal _x0 _x1 _x2 -> - SgVal (o#_Loc_t _x0) (o#string _x1) (o#ctyp _x2) - | SgAnt _x0 _x1 -> SgAnt (o#_Loc_t _x0) (o#string _x1) ]; - method patt : patt -> patt = - fun - [ PaNil _x0 -> PaNil (o#_Loc_t _x0) - | PaId _x0 _x1 -> PaId (o#_Loc_t _x0) (o#ident _x1) - | PaAli _x0 _x1 _x2 -> - PaAli (o#_Loc_t _x0) (o#patt _x1) (o#patt _x2) - | PaAnt _x0 _x1 -> PaAnt (o#_Loc_t _x0) (o#string _x1) - | PaAny _x0 -> PaAny (o#_Loc_t _x0) - | PaApp _x0 _x1 _x2 -> - PaApp (o#_Loc_t _x0) (o#patt _x1) (o#patt _x2) - | PaArr _x0 _x1 -> PaArr (o#_Loc_t _x0) (o#patt _x1) - | PaCom _x0 _x1 _x2 -> - PaCom (o#_Loc_t _x0) (o#patt _x1) (o#patt _x2) - | PaSem _x0 _x1 _x2 -> - PaSem (o#_Loc_t _x0) (o#patt _x1) (o#patt _x2) - | PaChr _x0 _x1 -> PaChr (o#_Loc_t _x0) (o#string _x1) - | PaInt _x0 _x1 -> PaInt (o#_Loc_t _x0) (o#string _x1) - | PaInt32 _x0 _x1 -> PaInt32 (o#_Loc_t _x0) (o#string _x1) - | PaInt64 _x0 _x1 -> PaInt64 (o#_Loc_t _x0) (o#string _x1) - | PaNativeInt _x0 _x1 -> PaNativeInt (o#_Loc_t _x0) (o#string _x1) - | PaFlo _x0 _x1 -> PaFlo (o#_Loc_t _x0) (o#string _x1) - | PaLab _x0 _x1 _x2 -> - PaLab (o#_Loc_t _x0) (o#string _x1) (o#patt _x2) - | PaOlb _x0 _x1 _x2 -> - PaOlb (o#_Loc_t _x0) (o#string _x1) (o#patt _x2) - | PaOlbi _x0 _x1 _x2 _x3 -> - PaOlbi (o#_Loc_t _x0) (o#string _x1) (o#patt _x2) (o#expr _x3) - | PaOrp _x0 _x1 _x2 -> - PaOrp (o#_Loc_t _x0) (o#patt _x1) (o#patt _x2) - | PaRng _x0 _x1 _x2 -> - PaRng (o#_Loc_t _x0) (o#patt _x1) (o#patt _x2) - | PaRec _x0 _x1 -> PaRec (o#_Loc_t _x0) (o#patt _x1) - | PaEq _x0 _x1 _x2 -> PaEq (o#_Loc_t _x0) (o#patt _x1) (o#patt _x2) - | PaStr _x0 _x1 -> PaStr (o#_Loc_t _x0) (o#string _x1) - | PaTup _x0 _x1 -> PaTup (o#_Loc_t _x0) (o#patt _x1) - | PaTyc _x0 _x1 _x2 -> - PaTyc (o#_Loc_t _x0) (o#patt _x1) (o#ctyp _x2) - | PaTyp _x0 _x1 -> PaTyp (o#_Loc_t _x0) (o#ident _x1) - | PaVrn _x0 _x1 -> PaVrn (o#_Loc_t _x0) (o#string _x1) ]; - method module_type : module_type -> module_type = - fun - [ MtId _x0 _x1 -> MtId (o#_Loc_t _x0) (o#ident _x1) - | MtFun _x0 _x1 _x2 _x3 -> - MtFun (o#_Loc_t _x0) (o#string _x1) (o#module_type _x2) - (o#module_type _x3) - | MtQuo _x0 _x1 -> MtQuo (o#_Loc_t _x0) (o#string _x1) - | MtSig _x0 _x1 -> MtSig (o#_Loc_t _x0) (o#sig_item _x1) - | MtWit _x0 _x1 _x2 -> - MtWit (o#_Loc_t _x0) (o#module_type _x1) (o#with_constr _x2) - | MtAnt _x0 _x1 -> MtAnt (o#_Loc_t _x0) (o#string _x1) ]; - method module_expr : module_expr -> module_expr = - fun - [ MeId _x0 _x1 -> MeId (o#_Loc_t _x0) (o#ident _x1) - | MeApp _x0 _x1 _x2 -> - MeApp (o#_Loc_t _x0) (o#module_expr _x1) (o#module_expr _x2) - | MeFun _x0 _x1 _x2 _x3 -> - MeFun (o#_Loc_t _x0) (o#string _x1) (o#module_type _x2) - (o#module_expr _x3) - | MeStr _x0 _x1 -> MeStr (o#_Loc_t _x0) (o#str_item _x1) - | MeTyc _x0 _x1 _x2 -> - MeTyc (o#_Loc_t _x0) (o#module_expr _x1) (o#module_type _x2) - | MeAnt _x0 _x1 -> MeAnt (o#_Loc_t _x0) (o#string _x1) ]; - method module_binding : module_binding -> module_binding = - fun - [ MbNil _x0 -> MbNil (o#_Loc_t _x0) - | MbAnd _x0 _x1 _x2 -> - MbAnd (o#_Loc_t _x0) (o#module_binding _x1) - (o#module_binding _x2) - | MbColEq _x0 _x1 _x2 _x3 -> - MbColEq (o#_Loc_t _x0) (o#string _x1) (o#module_type _x2) - (o#module_expr _x3) - | MbCol _x0 _x1 _x2 -> - MbCol (o#_Loc_t _x0) (o#string _x1) (o#module_type _x2) - | MbAnt _x0 _x1 -> MbAnt (o#_Loc_t _x0) (o#string _x1) ]; - method meta_option : - ! 'a 'b. ('a -> 'b) -> meta_option 'a -> meta_option 'b = - fun _f_a -> - fun - [ ONone -> ONone - | OSome _x0 -> OSome (_f_a _x0) - | OAnt _x0 -> OAnt (o#string _x0) ]; - method meta_list : - ! 'a 'b. ('a -> 'b) -> meta_list 'a -> meta_list 'b = - fun _f_a -> - fun - [ LNil -> LNil - | LCons _x0 _x1 -> LCons (_f_a _x0) (o#meta_list _f_a _x1) - | LAnt _x0 -> LAnt (o#string _x0) ]; - method meta_bool : meta_bool -> meta_bool = - fun - [ BTrue -> BTrue - | BFalse -> BFalse - | BAnt _x0 -> BAnt (o#string _x0) ]; - method match_case : match_case -> match_case = - fun - [ McNil _x0 -> McNil (o#_Loc_t _x0) - | McOr _x0 _x1 _x2 -> - McOr (o#_Loc_t _x0) (o#match_case _x1) (o#match_case _x2) - | McArr _x0 _x1 _x2 _x3 -> - McArr (o#_Loc_t _x0) (o#patt _x1) (o#expr _x2) (o#expr _x3) - | McAnt _x0 _x1 -> McAnt (o#_Loc_t _x0) (o#string _x1) ]; - method ident : ident -> ident = - fun - [ IdAcc _x0 _x1 _x2 -> - IdAcc (o#_Loc_t _x0) (o#ident _x1) (o#ident _x2) - | IdApp _x0 _x1 _x2 -> - IdApp (o#_Loc_t _x0) (o#ident _x1) (o#ident _x2) - | IdLid _x0 _x1 -> IdLid (o#_Loc_t _x0) (o#string _x1) - | IdUid _x0 _x1 -> IdUid (o#_Loc_t _x0) (o#string _x1) - | IdAnt _x0 _x1 -> IdAnt (o#_Loc_t _x0) (o#string _x1) ]; - method expr : expr -> expr = - fun - [ ExNil _x0 -> ExNil (o#_Loc_t _x0) - | ExId _x0 _x1 -> ExId (o#_Loc_t _x0) (o#ident _x1) - | ExAcc _x0 _x1 _x2 -> - ExAcc (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) - | ExAnt _x0 _x1 -> ExAnt (o#_Loc_t _x0) (o#string _x1) - | ExApp _x0 _x1 _x2 -> - ExApp (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) - | ExAre _x0 _x1 _x2 -> - ExAre (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) - | ExArr _x0 _x1 -> ExArr (o#_Loc_t _x0) (o#expr _x1) - | ExSem _x0 _x1 _x2 -> - ExSem (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) - | ExAsf _x0 -> ExAsf (o#_Loc_t _x0) - | ExAsr _x0 _x1 -> ExAsr (o#_Loc_t _x0) (o#expr _x1) - | ExAss _x0 _x1 _x2 -> - ExAss (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) - | ExChr _x0 _x1 -> ExChr (o#_Loc_t _x0) (o#string _x1) - | ExCoe _x0 _x1 _x2 _x3 -> - ExCoe (o#_Loc_t _x0) (o#expr _x1) (o#ctyp _x2) (o#ctyp _x3) - | ExFlo _x0 _x1 -> ExFlo (o#_Loc_t _x0) (o#string _x1) - | ExFor _x0 _x1 _x2 _x3 _x4 _x5 -> - ExFor (o#_Loc_t _x0) (o#string _x1) (o#expr _x2) (o#expr _x3) - (o#meta_bool _x4) (o#expr _x5) - | ExFun _x0 _x1 -> ExFun (o#_Loc_t _x0) (o#match_case _x1) - | ExIfe _x0 _x1 _x2 _x3 -> - ExIfe (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) (o#expr _x3) - | ExInt _x0 _x1 -> ExInt (o#_Loc_t _x0) (o#string _x1) - | ExInt32 _x0 _x1 -> ExInt32 (o#_Loc_t _x0) (o#string _x1) - | ExInt64 _x0 _x1 -> ExInt64 (o#_Loc_t _x0) (o#string _x1) - | ExNativeInt _x0 _x1 -> ExNativeInt (o#_Loc_t _x0) (o#string _x1) - | ExLab _x0 _x1 _x2 -> - ExLab (o#_Loc_t _x0) (o#string _x1) (o#expr _x2) - | ExLaz _x0 _x1 -> ExLaz (o#_Loc_t _x0) (o#expr _x1) - | ExLet _x0 _x1 _x2 _x3 -> - ExLet (o#_Loc_t _x0) (o#meta_bool _x1) (o#binding _x2) - (o#expr _x3) - | ExLmd _x0 _x1 _x2 _x3 -> - ExLmd (o#_Loc_t _x0) (o#string _x1) (o#module_expr _x2) - (o#expr _x3) - | ExMat _x0 _x1 _x2 -> - ExMat (o#_Loc_t _x0) (o#expr _x1) (o#match_case _x2) - | ExNew _x0 _x1 -> ExNew (o#_Loc_t _x0) (o#ident _x1) - | ExObj _x0 _x1 _x2 -> - ExObj (o#_Loc_t _x0) (o#patt _x1) (o#class_str_item _x2) - | ExOlb _x0 _x1 _x2 -> - ExOlb (o#_Loc_t _x0) (o#string _x1) (o#expr _x2) - | ExOvr _x0 _x1 -> ExOvr (o#_Loc_t _x0) (o#binding _x1) - | ExRec _x0 _x1 _x2 -> - ExRec (o#_Loc_t _x0) (o#binding _x1) (o#expr _x2) - | ExSeq _x0 _x1 -> ExSeq (o#_Loc_t _x0) (o#expr _x1) - | ExSnd _x0 _x1 _x2 -> - ExSnd (o#_Loc_t _x0) (o#expr _x1) (o#string _x2) - | ExSte _x0 _x1 _x2 -> - ExSte (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) - | ExStr _x0 _x1 -> ExStr (o#_Loc_t _x0) (o#string _x1) - | ExTry _x0 _x1 _x2 -> - ExTry (o#_Loc_t _x0) (o#expr _x1) (o#match_case _x2) - | ExTup _x0 _x1 -> ExTup (o#_Loc_t _x0) (o#expr _x1) - | ExCom _x0 _x1 _x2 -> - ExCom (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) - | ExTyc _x0 _x1 _x2 -> - ExTyc (o#_Loc_t _x0) (o#expr _x1) (o#ctyp _x2) - | ExVrn _x0 _x1 -> ExVrn (o#_Loc_t _x0) (o#string _x1) - | ExWhi _x0 _x1 _x2 -> - ExWhi (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) ]; - method ctyp : ctyp -> ctyp = - fun - [ TyNil _x0 -> TyNil (o#_Loc_t _x0) - | TyAli _x0 _x1 _x2 -> - TyAli (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | TyAny _x0 -> TyAny (o#_Loc_t _x0) - | TyApp _x0 _x1 _x2 -> - TyApp (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | TyArr _x0 _x1 _x2 -> - TyArr (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | TyCls _x0 _x1 -> TyCls (o#_Loc_t _x0) (o#ident _x1) - | TyLab _x0 _x1 _x2 -> - TyLab (o#_Loc_t _x0) (o#string _x1) (o#ctyp _x2) - | TyId _x0 _x1 -> TyId (o#_Loc_t _x0) (o#ident _x1) - | TyMan _x0 _x1 _x2 -> - TyMan (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | TyDcl _x0 _x1 _x2 _x3 _x4 -> - TyDcl (o#_Loc_t _x0) (o#string _x1) (o#list o#ctyp _x2) - (o#ctyp _x3) - (o#list (fun (_x0, _x1) -> ((o#ctyp _x0), (o#ctyp _x1))) _x4) - | TyObj _x0 _x1 _x2 -> - TyObj (o#_Loc_t _x0) (o#ctyp _x1) (o#meta_bool _x2) - | TyOlb _x0 _x1 _x2 -> - TyOlb (o#_Loc_t _x0) (o#string _x1) (o#ctyp _x2) - | TyPol _x0 _x1 _x2 -> - TyPol (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | TyQuo _x0 _x1 -> TyQuo (o#_Loc_t _x0) (o#string _x1) - | TyQuP _x0 _x1 -> TyQuP (o#_Loc_t _x0) (o#string _x1) - | TyQuM _x0 _x1 -> TyQuM (o#_Loc_t _x0) (o#string _x1) - | TyVrn _x0 _x1 -> TyVrn (o#_Loc_t _x0) (o#string _x1) - | TyRec _x0 _x1 -> TyRec (o#_Loc_t _x0) (o#ctyp _x1) - | TyCol _x0 _x1 _x2 -> - TyCol (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | TySem _x0 _x1 _x2 -> - TySem (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | TyCom _x0 _x1 _x2 -> - TyCom (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | TySum _x0 _x1 -> TySum (o#_Loc_t _x0) (o#ctyp _x1) - | TyOf _x0 _x1 _x2 -> TyOf (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | TyAnd _x0 _x1 _x2 -> - TyAnd (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | TyOr _x0 _x1 _x2 -> TyOr (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | TyPrv _x0 _x1 -> TyPrv (o#_Loc_t _x0) (o#ctyp _x1) - | TyMut _x0 _x1 -> TyMut (o#_Loc_t _x0) (o#ctyp _x1) - | TyTup _x0 _x1 -> TyTup (o#_Loc_t _x0) (o#ctyp _x1) - | TySta _x0 _x1 _x2 -> - TySta (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | TyVrnEq _x0 _x1 -> TyVrnEq (o#_Loc_t _x0) (o#ctyp _x1) - | TyVrnSup _x0 _x1 -> TyVrnSup (o#_Loc_t _x0) (o#ctyp _x1) - | TyVrnInf _x0 _x1 -> TyVrnInf (o#_Loc_t _x0) (o#ctyp _x1) - | TyVrnInfSup _x0 _x1 _x2 -> - TyVrnInfSup (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | TyAmp _x0 _x1 _x2 -> - TyAmp (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | TyOfAmp _x0 _x1 _x2 -> - TyOfAmp (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | TyAnt _x0 _x1 -> TyAnt (o#_Loc_t _x0) (o#string _x1) ]; - method class_type : class_type -> class_type = - fun - [ CtNil _x0 -> CtNil (o#_Loc_t _x0) - | CtCon _x0 _x1 _x2 _x3 -> - CtCon (o#_Loc_t _x0) (o#meta_bool _x1) (o#ident _x2) - (o#ctyp _x3) - | CtFun _x0 _x1 _x2 -> - CtFun (o#_Loc_t _x0) (o#ctyp _x1) (o#class_type _x2) - | CtSig _x0 _x1 _x2 -> - CtSig (o#_Loc_t _x0) (o#ctyp _x1) (o#class_sig_item _x2) - | CtAnd _x0 _x1 _x2 -> - CtAnd (o#_Loc_t _x0) (o#class_type _x1) (o#class_type _x2) - | CtCol _x0 _x1 _x2 -> - CtCol (o#_Loc_t _x0) (o#class_type _x1) (o#class_type _x2) - | CtEq _x0 _x1 _x2 -> - CtEq (o#_Loc_t _x0) (o#class_type _x1) (o#class_type _x2) - | CtAnt _x0 _x1 -> CtAnt (o#_Loc_t _x0) (o#string _x1) ]; - method class_str_item : class_str_item -> class_str_item = - fun - [ CrNil _x0 -> CrNil (o#_Loc_t _x0) - | CrSem _x0 _x1 _x2 -> - CrSem (o#_Loc_t _x0) (o#class_str_item _x1) - (o#class_str_item _x2) - | CrCtr _x0 _x1 _x2 -> - CrCtr (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | CrInh _x0 _x1 _x2 -> - CrInh (o#_Loc_t _x0) (o#class_expr _x1) (o#string _x2) - | CrIni _x0 _x1 -> CrIni (o#_Loc_t _x0) (o#expr _x1) - | CrMth _x0 _x1 _x2 _x3 _x4 -> - CrMth (o#_Loc_t _x0) (o#string _x1) (o#meta_bool _x2) - (o#expr _x3) (o#ctyp _x4) - | CrVal _x0 _x1 _x2 _x3 -> - CrVal (o#_Loc_t _x0) (o#string _x1) (o#meta_bool _x2) - (o#expr _x3) - | CrVir _x0 _x1 _x2 _x3 -> - CrVir (o#_Loc_t _x0) (o#string _x1) (o#meta_bool _x2) - (o#ctyp _x3) - | CrVvr _x0 _x1 _x2 _x3 -> - CrVvr (o#_Loc_t _x0) (o#string _x1) (o#meta_bool _x2) - (o#ctyp _x3) - | CrAnt _x0 _x1 -> CrAnt (o#_Loc_t _x0) (o#string _x1) ]; - method class_sig_item : class_sig_item -> class_sig_item = - fun - [ CgNil _x0 -> CgNil (o#_Loc_t _x0) - | CgCtr _x0 _x1 _x2 -> - CgCtr (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) - | CgSem _x0 _x1 _x2 -> - CgSem (o#_Loc_t _x0) (o#class_sig_item _x1) - (o#class_sig_item _x2) - | CgInh _x0 _x1 -> CgInh (o#_Loc_t _x0) (o#class_type _x1) - | CgMth _x0 _x1 _x2 _x3 -> - CgMth (o#_Loc_t _x0) (o#string _x1) (o#meta_bool _x2) - (o#ctyp _x3) - | CgVal _x0 _x1 _x2 _x3 _x4 -> - CgVal (o#_Loc_t _x0) (o#string _x1) (o#meta_bool _x2) - (o#meta_bool _x3) (o#ctyp _x4) - | CgVir _x0 _x1 _x2 _x3 -> - CgVir (o#_Loc_t _x0) (o#string _x1) (o#meta_bool _x2) - (o#ctyp _x3) - | CgAnt _x0 _x1 -> CgAnt (o#_Loc_t _x0) (o#string _x1) ]; - method class_expr : class_expr -> class_expr = - fun - [ CeNil _x0 -> CeNil (o#_Loc_t _x0) - | CeApp _x0 _x1 _x2 -> - CeApp (o#_Loc_t _x0) (o#class_expr _x1) (o#expr _x2) - | CeCon _x0 _x1 _x2 _x3 -> - CeCon (o#_Loc_t _x0) (o#meta_bool _x1) (o#ident _x2) - (o#ctyp _x3) - | CeFun _x0 _x1 _x2 -> - CeFun (o#_Loc_t _x0) (o#patt _x1) (o#class_expr _x2) - | CeLet _x0 _x1 _x2 _x3 -> - CeLet (o#_Loc_t _x0) (o#meta_bool _x1) (o#binding _x2) - (o#class_expr _x3) - | CeStr _x0 _x1 _x2 -> - CeStr (o#_Loc_t _x0) (o#patt _x1) (o#class_str_item _x2) - | CeTyc _x0 _x1 _x2 -> - CeTyc (o#_Loc_t _x0) (o#class_expr _x1) (o#class_type _x2) - | CeAnd _x0 _x1 _x2 -> - CeAnd (o#_Loc_t _x0) (o#class_expr _x1) (o#class_expr _x2) - | CeEq _x0 _x1 _x2 -> - CeEq (o#_Loc_t _x0) (o#class_expr _x1) (o#class_expr _x2) - | CeAnt _x0 _x1 -> CeAnt (o#_Loc_t _x0) (o#string _x1) ]; - method binding : binding -> binding = - fun - [ BiNil _x0 -> BiNil (o#_Loc_t _x0) - | BiAnd _x0 _x1 _x2 -> - BiAnd (o#_Loc_t _x0) (o#binding _x1) (o#binding _x2) - | BiSem _x0 _x1 _x2 -> - BiSem (o#_Loc_t _x0) (o#binding _x1) (o#binding _x2) - | BiEq _x0 _x1 _x2 -> BiEq (o#_Loc_t _x0) (o#patt _x1) (o#expr _x2) - | BiAnt _x0 _x1 -> BiAnt (o#_Loc_t _x0) (o#string _x1) ]; - end; - class fold = - object ((o : 'self_type)) - method string = fun (_ : string) -> (o : 'self_type); - method int = fun (_ : int) -> (o : 'self_type); - method float = fun (_ : float) -> (o : 'self_type); - method bool = fun (_ : bool) -> (o : 'self_type); - method list : - ! 'a. ('self_type -> 'a -> 'self_type) -> list 'a -> 'self_type = - fun f -> List.fold_left f o; - method option : - ! 'a. ('self_type -> 'a -> 'self_type) -> option 'a -> 'self_type = - fun f -> fun [ None -> o | Some x -> f o x ]; - method array : - ! 'a. ('self_type -> 'a -> 'self_type) -> array 'a -> 'self_type = - fun f -> Array.fold_left f o; - method ref : - ! 'a. ('self_type -> 'a -> 'self_type) -> ref 'a -> 'self_type = - fun f { \val = x } -> f o x; - method _Loc_t : Loc.t -> 'self_type = fun _ -> o; - method with_constr : with_constr -> 'self_type = - fun - [ WcNil _x0 -> o#_Loc_t _x0 - | WcTyp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | WcMod _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ident _x1)#ident _x2 - | WcAnd _x0 _x1 _x2 -> - ((o#_Loc_t _x0)#with_constr _x1)#with_constr _x2 - | WcAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; - method str_item : str_item -> 'self_type = - fun - [ StNil _x0 -> o#_Loc_t _x0 - | StCls _x0 _x1 -> (o#_Loc_t _x0)#class_expr _x1 - | StClt _x0 _x1 -> (o#_Loc_t _x0)#class_type _x1 - | StSem _x0 _x1 _x2 -> ((o#_Loc_t _x0)#str_item _x1)#str_item _x2 - | StDir _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#expr _x2 - | StExc _x0 _x1 _x2 -> - ((o#_Loc_t _x0)#ctyp _x1)#meta_option (fun o -> o#ident) _x2 - | StExp _x0 _x1 -> (o#_Loc_t _x0)#expr _x1 - | StExt _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#string _x1)#ctyp _x2)#meta_list - (fun o -> o#string) _x3 - | StInc _x0 _x1 -> (o#_Loc_t _x0)#module_expr _x1 - | StMod _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#module_expr _x2 - | StRecMod _x0 _x1 -> (o#_Loc_t _x0)#module_binding _x1 - | StMty _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#module_type _x2 - | StOpn _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 - | StTyp _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 - | StVal _x0 _x1 _x2 -> ((o#_Loc_t _x0)#meta_bool _x1)#binding _x2 - | StAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; - method sig_item : sig_item -> 'self_type = - fun - [ SgNil _x0 -> o#_Loc_t _x0 - | SgCls _x0 _x1 -> (o#_Loc_t _x0)#class_type _x1 - | SgClt _x0 _x1 -> (o#_Loc_t _x0)#class_type _x1 - | SgSem _x0 _x1 _x2 -> ((o#_Loc_t _x0)#sig_item _x1)#sig_item _x2 - | SgDir _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#expr _x2 - | SgExc _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 - | SgExt _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#string _x1)#ctyp _x2)#meta_list - (fun o -> o#string) _x3 - | SgInc _x0 _x1 -> (o#_Loc_t _x0)#module_type _x1 - | SgMod _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#module_type _x2 - | SgRecMod _x0 _x1 -> (o#_Loc_t _x0)#module_binding _x1 - | SgMty _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#module_type _x2 - | SgOpn _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 - | SgTyp _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 - | SgVal _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#ctyp _x2 - | SgAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; - method patt : patt -> 'self_type = - fun - [ PaNil _x0 -> o#_Loc_t _x0 - | PaId _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 - | PaAli _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#patt _x2 - | PaAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | PaAny _x0 -> o#_Loc_t _x0 - | PaApp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#patt _x2 - | PaArr _x0 _x1 -> (o#_Loc_t _x0)#patt _x1 - | PaCom _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#patt _x2 - | PaSem _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#patt _x2 - | PaChr _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | PaInt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | PaInt32 _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | PaInt64 _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | PaNativeInt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | PaFlo _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | PaLab _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#patt _x2 - | PaOlb _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#patt _x2 - | PaOlbi _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#string _x1)#patt _x2)#expr _x3 - | PaOrp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#patt _x2 - | PaRng _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#patt _x2 - | PaRec _x0 _x1 -> (o#_Loc_t _x0)#patt _x1 - | PaEq _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#patt _x2 - | PaStr _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | PaTup _x0 _x1 -> (o#_Loc_t _x0)#patt _x1 - | PaTyc _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#ctyp _x2 - | PaTyp _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 - | PaVrn _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; - method module_type : module_type -> 'self_type = - fun - [ MtId _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 - | MtFun _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#string _x1)#module_type _x2)#module_type _x3 - | MtQuo _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | MtSig _x0 _x1 -> (o#_Loc_t _x0)#sig_item _x1 - | MtWit _x0 _x1 _x2 -> - ((o#_Loc_t _x0)#module_type _x1)#with_constr _x2 - | MtAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; - method module_expr : module_expr -> 'self_type = - fun - [ MeId _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 - | MeApp _x0 _x1 _x2 -> - ((o#_Loc_t _x0)#module_expr _x1)#module_expr _x2 - | MeFun _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#string _x1)#module_type _x2)#module_expr _x3 - | MeStr _x0 _x1 -> (o#_Loc_t _x0)#str_item _x1 - | MeTyc _x0 _x1 _x2 -> - ((o#_Loc_t _x0)#module_expr _x1)#module_type _x2 - | MeAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; - method module_binding : module_binding -> 'self_type = - fun - [ MbNil _x0 -> o#_Loc_t _x0 - | MbAnd _x0 _x1 _x2 -> - ((o#_Loc_t _x0)#module_binding _x1)#module_binding _x2 - | MbColEq _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#string _x1)#module_type _x2)#module_expr _x3 - | MbCol _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#module_type _x2 - | MbAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; - method meta_option : - ! 'a. - ('self_type -> 'a -> 'self_type) -> meta_option 'a -> 'self_type = - fun _f_a -> - fun - [ ONone -> o - | OSome _x0 -> _f_a o _x0 - | OAnt _x0 -> o#string _x0 ]; - method meta_list : - ! 'a. - ('self_type -> 'a -> 'self_type) -> meta_list 'a -> 'self_type = - fun _f_a -> - fun - [ LNil -> o - | LCons _x0 _x1 -> (_f_a o _x0)#meta_list (fun o -> _f_a o) _x1 - | LAnt _x0 -> o#string _x0 ]; - method meta_bool : meta_bool -> 'self_type = - fun [ BTrue -> o | BFalse -> o | BAnt _x0 -> o#string _x0 ]; - method match_case : match_case -> 'self_type = - fun - [ McNil _x0 -> o#_Loc_t _x0 - | McOr _x0 _x1 _x2 -> - ((o#_Loc_t _x0)#match_case _x1)#match_case _x2 - | McArr _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#patt _x1)#expr _x2)#expr _x3 - | McAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; - method ident : ident -> 'self_type = - fun - [ IdAcc _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ident _x1)#ident _x2 - | IdApp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ident _x1)#ident _x2 - | IdLid _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | IdUid _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | IdAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; - method expr : expr -> 'self_type = - fun - [ ExNil _x0 -> o#_Loc_t _x0 - | ExId _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 - | ExAcc _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 - | ExAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | ExApp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 - | ExAre _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 - | ExArr _x0 _x1 -> (o#_Loc_t _x0)#expr _x1 - | ExSem _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 - | ExAsf _x0 -> o#_Loc_t _x0 - | ExAsr _x0 _x1 -> (o#_Loc_t _x0)#expr _x1 - | ExAss _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 - | ExChr _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | ExCoe _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#expr _x1)#ctyp _x2)#ctyp _x3 - | ExFlo _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | ExFor _x0 _x1 _x2 _x3 _x4 _x5 -> - (((((o#_Loc_t _x0)#string _x1)#expr _x2)#expr _x3)#meta_bool - _x4)# - expr _x5 - | ExFun _x0 _x1 -> (o#_Loc_t _x0)#match_case _x1 - | ExIfe _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#expr _x1)#expr _x2)#expr _x3 - | ExInt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | ExInt32 _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | ExInt64 _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | ExNativeInt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | ExLab _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#expr _x2 - | ExLaz _x0 _x1 -> (o#_Loc_t _x0)#expr _x1 - | ExLet _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#meta_bool _x1)#binding _x2)#expr _x3 - | ExLmd _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#string _x1)#module_expr _x2)#expr _x3 - | ExMat _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#match_case _x2 - | ExNew _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 - | ExObj _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#class_str_item _x2 - | ExOlb _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#expr _x2 - | ExOvr _x0 _x1 -> (o#_Loc_t _x0)#binding _x1 - | ExRec _x0 _x1 _x2 -> ((o#_Loc_t _x0)#binding _x1)#expr _x2 - | ExSeq _x0 _x1 -> (o#_Loc_t _x0)#expr _x1 - | ExSnd _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#string _x2 - | ExSte _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 - | ExStr _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | ExTry _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#match_case _x2 - | ExTup _x0 _x1 -> (o#_Loc_t _x0)#expr _x1 - | ExCom _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 - | ExTyc _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#ctyp _x2 - | ExVrn _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | ExWhi _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 ]; - method ctyp : ctyp -> 'self_type = - fun - [ TyNil _x0 -> o#_Loc_t _x0 - | TyAli _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyAny _x0 -> o#_Loc_t _x0 - | TyApp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyArr _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyCls _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 - | TyLab _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#ctyp _x2 - | TyId _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 - | TyMan _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyDcl _x0 _x1 _x2 _x3 _x4 -> - ((((o#_Loc_t _x0)#string _x1)#list (fun o -> o#ctyp) _x2)#ctyp - _x3)# - list (fun o (_x0, _x1) -> (o#ctyp _x0)#ctyp _x1) _x4 - | TyObj _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#meta_bool _x2 - | TyOlb _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#ctyp _x2 - | TyPol _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyQuo _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | TyQuP _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | TyQuM _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | TyVrn _x0 _x1 -> (o#_Loc_t _x0)#string _x1 - | TyRec _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 - | TyCol _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TySem _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyCom _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TySum _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 - | TyOf _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyAnd _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyOr _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyPrv _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 - | TyMut _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 - | TyTup _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 - | TySta _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyVrnEq _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 - | TyVrnSup _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 - | TyVrnInf _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 - | TyVrnInfSup _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyAmp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyOfAmp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | TyAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; - method class_type : class_type -> 'self_type = - fun - [ CtNil _x0 -> o#_Loc_t _x0 - | CtCon _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#meta_bool _x1)#ident _x2)#ctyp _x3 - | CtFun _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#class_type _x2 - | CtSig _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#class_sig_item _x2 - | CtAnd _x0 _x1 _x2 -> - ((o#_Loc_t _x0)#class_type _x1)#class_type _x2 - | CtCol _x0 _x1 _x2 -> - ((o#_Loc_t _x0)#class_type _x1)#class_type _x2 - | CtEq _x0 _x1 _x2 -> - ((o#_Loc_t _x0)#class_type _x1)#class_type _x2 - | CtAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; - method class_str_item : class_str_item -> 'self_type = - fun - [ CrNil _x0 -> o#_Loc_t _x0 - | CrSem _x0 _x1 _x2 -> - ((o#_Loc_t _x0)#class_str_item _x1)#class_str_item _x2 - | CrCtr _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | CrInh _x0 _x1 _x2 -> ((o#_Loc_t _x0)#class_expr _x1)#string _x2 - | CrIni _x0 _x1 -> (o#_Loc_t _x0)#expr _x1 - | CrMth _x0 _x1 _x2 _x3 _x4 -> - ((((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#expr _x3)#ctyp _x4 - | CrVal _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#expr _x3 - | CrVir _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 - | CrVvr _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 - | CrAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; - method class_sig_item : class_sig_item -> 'self_type = - fun - [ CgNil _x0 -> o#_Loc_t _x0 - | CgCtr _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 - | CgSem _x0 _x1 _x2 -> - ((o#_Loc_t _x0)#class_sig_item _x1)#class_sig_item _x2 - | CgInh _x0 _x1 -> (o#_Loc_t _x0)#class_type _x1 - | CgMth _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 - | CgVal _x0 _x1 _x2 _x3 _x4 -> - ((((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#meta_bool _x3)# - ctyp _x4 - | CgVir _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 - | CgAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; - method class_expr : class_expr -> 'self_type = - fun - [ CeNil _x0 -> o#_Loc_t _x0 - | CeApp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#class_expr _x1)#expr _x2 - | CeCon _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#meta_bool _x1)#ident _x2)#ctyp _x3 - | CeFun _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#class_expr _x2 - | CeLet _x0 _x1 _x2 _x3 -> - (((o#_Loc_t _x0)#meta_bool _x1)#binding _x2)#class_expr _x3 - | CeStr _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#class_str_item _x2 - | CeTyc _x0 _x1 _x2 -> - ((o#_Loc_t _x0)#class_expr _x1)#class_type _x2 - | CeAnd _x0 _x1 _x2 -> - ((o#_Loc_t _x0)#class_expr _x1)#class_expr _x2 - | CeEq _x0 _x1 _x2 -> - ((o#_Loc_t _x0)#class_expr _x1)#class_expr _x2 - | CeAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; - method binding : binding -> 'self_type = - fun - [ BiNil _x0 -> o#_Loc_t _x0 - | BiAnd _x0 _x1 _x2 -> ((o#_Loc_t _x0)#binding _x1)#binding _x2 - | BiSem _x0 _x1 _x2 -> ((o#_Loc_t _x0)#binding _x1)#binding _x2 - | BiEq _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#expr _x2 - | BiAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; - end; - class c_expr f = - object inherit map as super; method expr = fun x -> f (super#expr x); - end; - class c_patt f = - object inherit map as super; method patt = fun x -> f (super#patt x); - end; - class c_ctyp f = - object inherit map as super; method ctyp = fun x -> f (super#ctyp x); - end; - class c_str_item f = - object inherit map as super; - method str_item = fun x -> f (super#str_item x); - end; - class c_sig_item f = - object inherit map as super; - method sig_item = fun x -> f (super#sig_item x); - end; - class c_loc f = - object inherit map as super; - method _Loc_t = fun x -> f (super#_Loc_t x); - end; - value map_patt f ast = (new c_patt f)#patt ast; - value map_loc f ast = (new c_loc f)#_Loc_t ast; - value map_sig_item f ast = (new c_sig_item f)#sig_item ast; - value map_str_item f ast = (new c_str_item f)#str_item ast; - value map_ctyp f ast = (new c_ctyp f)#ctyp ast; - value map_expr f ast = (new c_expr f)#expr ast; value ghost = Loc.ghost; value rec is_module_longident = fun @@ -4653,6 +52,38 @@ module Make (Loc : Sig.Loc) : Sig.Camlp4Ast with module Loc = Loc = (is_module_longident i1) && (is_module_longident i2) | Ast.IdUid _ _ -> True | _ -> False ]; + value ident_of_expr = + let error () = + invalid_arg "ident_of_expr: this expression is not an identifier" in + let rec self = + fun + [ Ast.ExApp _loc e1 e2 -> Ast.IdApp _loc (self e1) (self e2) + | Ast.ExAcc _loc e1 e2 -> Ast.IdAcc _loc (self e1) (self e2) + | Ast.ExId _ (Ast.IdLid _ _) -> error () + | Ast.ExId _ i -> if is_module_longident i then i else error () + | _ -> error () ] + in + fun [ Ast.ExId _ i -> i | Ast.ExApp _ _ _ -> error () | t -> self t ]; + value ident_of_ctyp = + let error () = + invalid_arg "ident_of_ctyp: this type is not an identifier" in + let rec self = + fun + [ Ast.TyApp _loc t1 t2 -> Ast.IdApp _loc (self t1) (self t2) + | Ast.TyId _ (Ast.IdLid _ _) -> error () + | Ast.TyId _ i -> if is_module_longident i then i else error () + | _ -> error () ] + in fun [ Ast.TyId _ i -> i | t -> self t ]; + value ident_of_patt = + let error () = + invalid_arg "ident_of_patt: this pattern is not an identifier" in + let rec self = + fun + [ Ast.PaApp _loc p1 p2 -> Ast.IdApp _loc (self p1) (self p2) + | Ast.PaId _ (Ast.IdLid _ _) -> error () + | Ast.PaId _ i -> if is_module_longident i then i else error () + | _ -> error () ] + in fun [ Ast.PaId _ i -> i | p -> self p ]; value rec is_irrefut_patt = fun [ Ast.PaId _ (Ast.IdLid _ _) -> True @@ -4660,7 +91,7 @@ module Make (Loc : Sig.Loc) : Sig.Camlp4Ast with module Loc = Loc = | Ast.PaAny _ -> True | Ast.PaAli _ x y -> (is_irrefut_patt x) && (is_irrefut_patt y) | Ast.PaRec _ p -> is_irrefut_patt p - | Ast.PaEq _ (Ast.PaId _ (Ast.IdLid _ _)) p -> is_irrefut_patt p + | Ast.PaEq _ (Ast.IdLid _ _) p -> is_irrefut_patt p | Ast.PaSem _ p1 p2 -> (is_irrefut_patt p1) && (is_irrefut_patt p2) | Ast.PaCom _ p1 p2 -> (is_irrefut_patt p1) && (is_irrefut_patt p2) | Ast.PaTyc _ p _ -> is_irrefut_patt p @@ -4689,28 +120,6 @@ module Make (Loc : Sig.Loc) : Sig.Camlp4Ast with module Loc = Loc = (is_expr_constructor e1) && (is_expr_constructor e2) | Ast.ExVrn _ _ -> True | _ -> False ]; - value ident_of_expr = - let error () = - invalid_arg "ident_of_expr: this expression is not an identifier" in - let rec self = - fun - [ Ast.ExApp _loc e1 e2 -> Ast.IdApp _loc (self e1) (self e2) - | Ast.ExAcc _loc e1 e2 -> Ast.IdAcc _loc (self e1) (self e2) - | Ast.ExId _ (Ast.IdLid _ _) -> error () - | Ast.ExId _ i -> if is_module_longident i then i else error () - | _ -> error () ] - in - fun [ Ast.ExId _ i -> i | Ast.ExApp _ _ _ -> error () | t -> self t ]; - value ident_of_ctyp = - let error () = - invalid_arg "ident_of_ctyp: this type is not an identifier" in - let rec self = - fun - [ Ast.TyApp _loc t1 t2 -> Ast.IdApp _loc (self t1) (self t2) - | Ast.TyId _ (Ast.IdLid _ _) -> error () - | Ast.TyId _ i -> if is_module_longident i then i else error () - | _ -> error () ] - in fun [ Ast.TyId _ i -> i | t -> self t ]; value rec tyOr_of_list = fun [ [] -> Ast.TyNil ghost @@ -4729,6 +138,24 @@ module Make (Loc : Sig.Loc) : Sig.Camlp4Ast with module Loc = Loc = | [ t ] -> t | [ t :: ts ] -> let _loc = loc_of_ctyp t in Ast.TySem _loc t (tySem_of_list ts) ]; + value rec tyCom_of_list = + fun + [ [] -> Ast.TyNil ghost + | [ t ] -> t + | [ t :: ts ] -> + let _loc = loc_of_ctyp t in Ast.TyCom _loc t (tyCom_of_list ts) ]; + value rec tyAmp_of_list = + fun + [ [] -> Ast.TyNil ghost + | [ t ] -> t + | [ t :: ts ] -> + let _loc = loc_of_ctyp t in Ast.TyAmp _loc t (tyAmp_of_list ts) ]; + value rec tySta_of_list = + fun + [ [] -> Ast.TyNil ghost + | [ t ] -> t + | [ t :: ts ] -> + let _loc = loc_of_ctyp t in Ast.TySta _loc t (tySta_of_list ts) ]; value rec stSem_of_list = fun [ [] -> Ast.StNil ghost @@ -4747,6 +174,13 @@ module Make (Loc : Sig.Loc) : Sig.Camlp4Ast with module Loc = Loc = | [ b ] -> b | [ b :: bs ] -> let _loc = loc_of_binding b in Ast.BiAnd _loc b (biAnd_of_list bs) ]; + value rec rbSem_of_list = + fun + [ [] -> Ast.RbNil ghost + | [ b ] -> b + | [ b :: bs ] -> + let _loc = loc_of_rec_binding b + in Ast.RbSem _loc b (rbSem_of_list bs) ]; value rec wcAnd_of_list = fun [ [] -> Ast.WcNil ghost @@ -4822,16 +256,10 @@ module Make (Loc : Sig.Loc) : Sig.Camlp4Ast with module Loc = Loc = let _loc = loc_of_patt x in Ast.PaSem _loc x (paSem_of_list xs) ]; value rec paCom_of_list = fun - [ [] -> Ast.PaNil ghost - | [ x ] -> x - | [ x :: xs ] -> - let _loc = loc_of_patt x in Ast.PaCom _loc x (paCom_of_list xs) ]; - value rec biSem_of_list = - fun - [ [] -> Ast.BiNil ghost + [ [] -> Ast.PaNil ghost | [ x ] -> x | [ x :: xs ] -> - let _loc = loc_of_binding x in Ast.BiSem _loc x (biSem_of_list xs) ]; + let _loc = loc_of_patt x in Ast.PaCom _loc x (paCom_of_list xs) ]; value rec exSem_of_list = fun [ [] -> Ast.ExNil ghost @@ -4864,12 +292,15 @@ module Make (Loc : Sig.Loc) : Sig.Camlp4Ast with module Loc = Loc = fun [ Ast.BiAnd _ b1 b2 -> (pel_of_binding b1) @ (pel_of_binding b2) | Ast.BiEq _ p e -> [ (p, e) ] - | Ast.BiSem _ b1 b2 -> (pel_of_binding b1) @ (pel_of_binding b2) | _ -> assert False ]; value rec list_of_binding x acc = match x with - [ Ast.BiAnd _ b1 b2 | Ast.BiSem _ b1 b2 -> - list_of_binding b1 (list_of_binding b2 acc) + [ Ast.BiAnd _ b1 b2 -> list_of_binding b1 (list_of_binding b2 acc) + | t -> [ t :: acc ] ]; + value rec list_of_rec_binding x acc = + match x with + [ Ast.RbSem _ b1 b2 -> + list_of_rec_binding b1 (list_of_rec_binding b2 acc) | t -> [ t :: acc ] ]; value rec list_of_with_constr x acc = match x with @@ -4944,5 +375,4683 @@ module Make (Loc : Sig.Loc) : Sig.Camlp4Ast with module Loc = Loc = [ Ast.MbAnd _ x y -> list_of_module_binding x (list_of_module_binding y acc) | x -> [ x :: acc ] ]; + module Meta = + struct + module type META_LOC = + sig + (** The first location is where to put the returned pattern. + Generally it's _loc to match with <:patt< ... >> quotations. + The second location is the one to treat. *) + value meta_loc_patt : Loc.t -> Loc.t -> Ast.patt; + (** The first location is where to put the returned expression. + Generally it's _loc to match with <:expr< ... >> quotations. + The second location is the one to treat. *) + value meta_loc_expr : Loc.t -> Loc.t -> Ast.expr; + end; + module MetaLoc = + struct + value meta_loc_patt _loc location = + let (a, b, c, d, e, f, g, h) = Loc.to_tuple location + in + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Loc") + (Ast.IdLid _loc "of_tuple"))) + (Ast.PaTup _loc + (Ast.PaCom _loc + (Ast.PaStr _loc (Ast.safe_string_escaped a)) + (Ast.PaCom _loc + (Ast.PaCom _loc + (Ast.PaCom _loc + (Ast.PaCom _loc + (Ast.PaCom _loc + (Ast.PaCom _loc + (Ast.PaInt _loc (string_of_int b)) + (Ast.PaInt _loc (string_of_int c))) + (Ast.PaInt _loc (string_of_int d))) + (Ast.PaInt _loc (string_of_int e))) + (Ast.PaInt _loc (string_of_int f))) + (Ast.PaInt _loc (string_of_int g))) + (if h + then Ast.PaId _loc (Ast.IdUid _loc "True") + else Ast.PaId _loc (Ast.IdUid _loc "False"))))); + value meta_loc_expr _loc location = + let (a, b, c, d, e, f, g, h) = Loc.to_tuple location + in + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Loc") + (Ast.IdLid _loc "of_tuple"))) + (Ast.ExTup _loc + (Ast.ExCom _loc + (Ast.ExStr _loc (Ast.safe_string_escaped a)) + (Ast.ExCom _loc + (Ast.ExCom _loc + (Ast.ExCom _loc + (Ast.ExCom _loc + (Ast.ExCom _loc + (Ast.ExCom _loc + (Ast.ExInt _loc (string_of_int b)) + (Ast.ExInt _loc (string_of_int c))) + (Ast.ExInt _loc (string_of_int d))) + (Ast.ExInt _loc (string_of_int e))) + (Ast.ExInt _loc (string_of_int f))) + (Ast.ExInt _loc (string_of_int g))) + (if h + then Ast.ExId _loc (Ast.IdUid _loc "True") + else Ast.ExId _loc (Ast.IdUid _loc "False"))))); + end; + module MetaGhostLoc = + struct + value meta_loc_patt _loc _ = + Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Loc") + (Ast.IdLid _loc "ghost")); + value meta_loc_expr _loc _ = + Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Loc") + (Ast.IdLid _loc "ghost")); + end; + module MetaLocVar = + struct + value meta_loc_patt _loc _ = + Ast.PaId _loc (Ast.IdLid _loc Loc.name.val); + value meta_loc_expr _loc _ = + Ast.ExId _loc (Ast.IdLid _loc Loc.name.val); + end; + module Make (MetaLoc : META_LOC) = + struct + open MetaLoc; + value meta_acc_Loc_t = meta_loc_expr; + module Expr = + struct + value meta_string _loc s = Ast.ExStr _loc s; + value meta_int _loc s = Ast.ExInt _loc s; + value meta_float _loc s = Ast.ExFlo _loc s; + value meta_char _loc s = Ast.ExChr _loc s; + value meta_bool _loc = + fun + [ False -> Ast.ExId _loc (Ast.IdUid _loc "False") + | True -> Ast.ExId _loc (Ast.IdUid _loc "True") ]; + value rec meta_list mf_a _loc = + fun + [ [] -> Ast.ExId _loc (Ast.IdUid _loc "[]") + | [ x :: xs ] -> + Ast.ExApp _loc + (Ast.ExApp _loc (Ast.ExId _loc (Ast.IdUid _loc "::")) + (mf_a _loc x)) + (meta_list mf_a _loc xs) ]; + value rec meta_binding _loc = + fun + [ Ast.BiAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.BiEq x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "BiEq"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_expr _loc x2) + | Ast.BiAnd x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "BiAnd"))) + (meta_acc_Loc_t _loc x0)) + (meta_binding _loc x1)) + (meta_binding _loc x2) + | Ast.BiNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "BiNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_class_expr _loc = + fun + [ Ast.CeAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.CeEq x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeEq"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_expr _loc x1)) + (meta_class_expr _loc x2) + | Ast.CeAnd x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeAnd"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_expr _loc x1)) + (meta_class_expr _loc x2) + | Ast.CeTyc x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeTyc"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_expr _loc x1)) + (meta_class_type _loc x2) + | Ast.CeStr x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeStr"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_class_str_item _loc x2) + | Ast.CeLet x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeLet"))) + (meta_acc_Loc_t _loc x0)) + (meta_meta_bool _loc x1)) + (meta_binding _loc x2)) + (meta_class_expr _loc x3) + | Ast.CeFun x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeFun"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_class_expr _loc x2) + | Ast.CeCon x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeCon"))) + (meta_acc_Loc_t _loc x0)) + (meta_meta_bool _loc x1)) + (meta_ident _loc x2)) + (meta_ctyp _loc x3) + | Ast.CeApp x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeApp"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_expr _loc x1)) + (meta_expr _loc x2) + | Ast.CeNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_class_sig_item _loc = + fun + [ Ast.CgAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.CgVir x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CgVir"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_meta_bool _loc x2)) + (meta_ctyp _loc x3) + | Ast.CgVal x0 x1 x2 x3 x4 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CgVal"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_meta_bool _loc x2)) + (meta_meta_bool _loc x3)) + (meta_ctyp _loc x4) + | Ast.CgMth x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CgMth"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_meta_bool _loc x2)) + (meta_ctyp _loc x3) + | Ast.CgInh x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CgInh"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_type _loc x1) + | Ast.CgSem x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CgSem"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_sig_item _loc x1)) + (meta_class_sig_item _loc x2) + | Ast.CgCtr x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CgCtr"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.CgNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CgNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_class_str_item _loc = + fun + [ Ast.CrAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.CrVvr x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrVvr"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_meta_bool _loc x2)) + (meta_ctyp _loc x3) + | Ast.CrVir x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrVir"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_meta_bool _loc x2)) + (meta_ctyp _loc x3) + | Ast.CrVal x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrVal"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_meta_bool _loc x2)) + (meta_expr _loc x3) + | Ast.CrMth x0 x1 x2 x3 x4 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrMth"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_meta_bool _loc x2)) + (meta_expr _loc x3)) + (meta_ctyp _loc x4) + | Ast.CrIni x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrIni"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1) + | Ast.CrInh x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrInh"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_expr _loc x1)) + (meta_string _loc x2) + | Ast.CrCtr x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrCtr"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.CrSem x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrSem"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_str_item _loc x1)) + (meta_class_str_item _loc x2) + | Ast.CrNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_class_type _loc = + fun + [ Ast.CtAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.CtEq x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CtEq"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_type _loc x1)) + (meta_class_type _loc x2) + | Ast.CtCol x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CtCol"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_type _loc x1)) + (meta_class_type _loc x2) + | Ast.CtAnd x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CtAnd"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_type _loc x1)) + (meta_class_type _loc x2) + | Ast.CtSig x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CtSig"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_class_sig_item _loc x2) + | Ast.CtFun x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CtFun"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_class_type _loc x2) + | Ast.CtCon x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CtCon"))) + (meta_acc_Loc_t _loc x0)) + (meta_meta_bool _loc x1)) + (meta_ident _loc x2)) + (meta_ctyp _loc x3) + | Ast.CtNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CtNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_ctyp _loc = + fun + [ Ast.TyAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.TyOfAmp x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyOfAmp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyAmp x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyAmp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyVrnInfSup x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyVrnInfSup"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyVrnInf x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyVrnInf"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TyVrnSup x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyVrnSup"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TyVrnEq x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyVrnEq"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TySta x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TySta"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyTup x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyTup"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TyMut x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyMut"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TyPrv x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyPrv"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TyOr x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyOr"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyAnd x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyAnd"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyOf x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyOf"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TySum x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TySum"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TyCom x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyCom"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TySem x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TySem"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyCol x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyCol"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyRec x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyRec"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TyVrn x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyVrn"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.TyQuM x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyQuM"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.TyQuP x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyQuP"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.TyQuo x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyQuo"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.TyPol x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyPol"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyOlb x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyOlb"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyObj x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyObj"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_meta_bool _loc x2) + | Ast.TyDcl x0 x1 x2 x3 x4 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyDcl"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_list meta_ctyp _loc x2)) + (meta_ctyp _loc x3)) + (meta_list + (fun _loc (x1, x2) -> + Ast.ExTup _loc + (Ast.ExCom _loc (meta_ctyp _loc x1) + (meta_ctyp _loc x2))) + _loc x4) + | Ast.TyMan x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyMan"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyId x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyId"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.TyLab x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyLab"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyCls x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyCls"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.TyArr x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyArr"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyApp x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyApp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyAny x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyAny"))) + (meta_acc_Loc_t _loc x0) + | Ast.TyAli x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyAli"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_expr _loc = + fun + [ Ast.ExWhi x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExWhi"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExVrn x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExVrn"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExTyc x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExTyc"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_ctyp _loc x2) + | Ast.ExCom x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExCom"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExTup x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExTup"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1) + | Ast.ExTry x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExTry"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_match_case _loc x2) + | Ast.ExStr x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExStr"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExSte x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExSte"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExSnd x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExSnd"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_string _loc x2) + | Ast.ExSeq x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExSeq"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1) + | Ast.ExRec x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExRec"))) + (meta_acc_Loc_t _loc x0)) + (meta_rec_binding _loc x1)) + (meta_expr _loc x2) + | Ast.ExOvr x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExOvr"))) + (meta_acc_Loc_t _loc x0)) + (meta_rec_binding _loc x1) + | Ast.ExOlb x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExOlb"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_expr _loc x2) + | Ast.ExObj x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExObj"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_class_str_item _loc x2) + | Ast.ExNew x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExNew"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.ExMat x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExMat"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_match_case _loc x2) + | Ast.ExLmd x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExLmd"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_expr _loc x2)) + (meta_expr _loc x3) + | Ast.ExLet x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExLet"))) + (meta_acc_Loc_t _loc x0)) + (meta_meta_bool _loc x1)) + (meta_binding _loc x2)) + (meta_expr _loc x3) + | Ast.ExLaz x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExLaz"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1) + | Ast.ExLab x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExLab"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_expr _loc x2) + | Ast.ExNativeInt x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExNativeInt"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExInt64 x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExInt64"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExInt32 x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExInt32"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExInt x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExInt"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExIfe x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExIfe"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2)) + (meta_expr _loc x3) + | Ast.ExFun x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExFun"))) + (meta_acc_Loc_t _loc x0)) + (meta_match_case _loc x1) + | Ast.ExFor x0 x1 x2 x3 x4 x5 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc + (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExFor"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_expr _loc x2)) + (meta_expr _loc x3)) + (meta_meta_bool _loc x4)) + (meta_expr _loc x5) + | Ast.ExFlo x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExFlo"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExCoe x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExCoe"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_ctyp _loc x2)) + (meta_ctyp _loc x3) + | Ast.ExChr x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExChr"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExAss x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExAss"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExAsr x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExAsr"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1) + | Ast.ExAsf x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExAsf"))) + (meta_acc_Loc_t _loc x0) + | Ast.ExSem x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExSem"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExArr x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExArr"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1) + | Ast.ExAre x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExAre"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExApp x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExApp"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.ExAcc x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExAcc"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExId x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExId"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.ExNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_ident _loc = + fun + [ Ast.IdAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.IdUid x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "IdUid"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.IdLid x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "IdLid"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.IdApp x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "IdApp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1)) + (meta_ident _loc x2) + | Ast.IdAcc x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "IdAcc"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1)) + (meta_ident _loc x2) ] + and meta_match_case _loc = + fun + [ Ast.McAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.McArr x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "McArr"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_expr _loc x2)) + (meta_expr _loc x3) + | Ast.McOr x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "McOr"))) + (meta_acc_Loc_t _loc x0)) + (meta_match_case _loc x1)) + (meta_match_case _loc x2) + | Ast.McNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "McNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_meta_bool _loc = + fun + [ Ast.BAnt x0 -> Ast.ExAnt _loc x0 + | Ast.BFalse -> + Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "BFalse")) + | Ast.BTrue -> + Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "BTrue")) ] + and meta_meta_list mf_a _loc = + fun + [ Ast.LAnt x0 -> Ast.ExAnt _loc x0 + | Ast.LCons x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "LCons"))) + (mf_a _loc x0)) + (meta_meta_list mf_a _loc x1) + | Ast.LNil -> + Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "LNil")) ] + and meta_meta_option mf_a _loc = + fun + [ Ast.OAnt x0 -> Ast.ExAnt _loc x0 + | Ast.OSome x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "OSome"))) + (mf_a _loc x0) + | Ast.ONone -> + Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ONone")) ] + and meta_module_binding _loc = + fun + [ Ast.MbAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.MbCol x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MbCol"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_type _loc x2) + | Ast.MbColEq x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MbColEq"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_type _loc x2)) + (meta_module_expr _loc x3) + | Ast.MbAnd x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MbAnd"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_binding _loc x1)) + (meta_module_binding _loc x2) + | Ast.MbNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MbNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_module_expr _loc = + fun + [ Ast.MeAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.MeTyc x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MeTyc"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_expr _loc x1)) + (meta_module_type _loc x2) + | Ast.MeStr x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MeStr"))) + (meta_acc_Loc_t _loc x0)) + (meta_str_item _loc x1) + | Ast.MeFun x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MeFun"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_type _loc x2)) + (meta_module_expr _loc x3) + | Ast.MeApp x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MeApp"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_expr _loc x1)) + (meta_module_expr _loc x2) + | Ast.MeId x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MeId"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.MeNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MeNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_module_type _loc = + fun + [ Ast.MtAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.MtWit x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MtWit"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_type _loc x1)) + (meta_with_constr _loc x2) + | Ast.MtSig x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MtSig"))) + (meta_acc_Loc_t _loc x0)) + (meta_sig_item _loc x1) + | Ast.MtQuo x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MtQuo"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.MtFun x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MtFun"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_type _loc x2)) + (meta_module_type _loc x3) + | Ast.MtId x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MtId"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.MtNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MtNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_patt _loc = + fun + [ Ast.PaVrn x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaVrn"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaTyp x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaTyp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.PaTyc x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaTyc"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_ctyp _loc x2) + | Ast.PaTup x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaTup"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1) + | Ast.PaStr x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaStr"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaEq x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaEq"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1)) + (meta_patt _loc x2) + | Ast.PaRec x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaRec"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1) + | Ast.PaRng x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaRng"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_patt _loc x2) + | Ast.PaOrp x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaOrp"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_patt _loc x2) + | Ast.PaOlbi x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaOlbi"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_patt _loc x2)) + (meta_expr _loc x3) + | Ast.PaOlb x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaOlb"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_patt _loc x2) + | Ast.PaLab x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaLab"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_patt _loc x2) + | Ast.PaFlo x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaFlo"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaNativeInt x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaNativeInt"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaInt64 x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaInt64"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaInt32 x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaInt32"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaInt x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaInt"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaChr x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaChr"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaSem x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaSem"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_patt _loc x2) + | Ast.PaCom x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaCom"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_patt _loc x2) + | Ast.PaArr x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaArr"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1) + | Ast.PaApp x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaApp"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_patt _loc x2) + | Ast.PaAny x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaAny"))) + (meta_acc_Loc_t _loc x0) + | Ast.PaAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.PaAli x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaAli"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_patt _loc x2) + | Ast.PaId x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaId"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.PaNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_rec_binding _loc = + fun + [ Ast.RbAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.RbEq x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "RbEq"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1)) + (meta_expr _loc x2) + | Ast.RbSem x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "RbSem"))) + (meta_acc_Loc_t _loc x0)) + (meta_rec_binding _loc x1)) + (meta_rec_binding _loc x2) + | Ast.RbNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "RbNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_sig_item _loc = + fun + [ Ast.SgAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.SgVal x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgVal"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_ctyp _loc x2) + | Ast.SgTyp x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgTyp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.SgOpn x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgOpn"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.SgMty x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgMty"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_type _loc x2) + | Ast.SgRecMod x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgRecMod"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_binding _loc x1) + | Ast.SgMod x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgMod"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_type _loc x2) + | Ast.SgInc x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgInc"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_type _loc x1) + | Ast.SgExt x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgExt"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_ctyp _loc x2)) + (meta_meta_list meta_string _loc x3) + | Ast.SgExc x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgExc"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.SgDir x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgDir"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_expr _loc x2) + | Ast.SgSem x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgSem"))) + (meta_acc_Loc_t _loc x0)) + (meta_sig_item _loc x1)) + (meta_sig_item _loc x2) + | Ast.SgClt x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgClt"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_type _loc x1) + | Ast.SgCls x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgCls"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_type _loc x1) + | Ast.SgNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_str_item _loc = + fun + [ Ast.StAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.StVal x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StVal"))) + (meta_acc_Loc_t _loc x0)) + (meta_meta_bool _loc x1)) + (meta_binding _loc x2) + | Ast.StTyp x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StTyp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.StOpn x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StOpn"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.StMty x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StMty"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_type _loc x2) + | Ast.StRecMod x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StRecMod"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_binding _loc x1) + | Ast.StMod x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StMod"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_expr _loc x2) + | Ast.StInc x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StInc"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_expr _loc x1) + | Ast.StExt x0 x1 x2 x3 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StExt"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_ctyp _loc x2)) + (meta_meta_list meta_string _loc x3) + | Ast.StExp x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StExp"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1) + | Ast.StExc x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StExc"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_meta_option meta_ident _loc x2) + | Ast.StDir x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StDir"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_expr _loc x2) + | Ast.StSem x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StSem"))) + (meta_acc_Loc_t _loc x0)) + (meta_str_item _loc x1)) + (meta_str_item _loc x2) + | Ast.StClt x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StClt"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_type _loc x1) + | Ast.StCls x0 x1 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StCls"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_expr _loc x1) + | Ast.StNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_with_constr _loc = + fun + [ Ast.WcAnt x0 x1 -> Ast.ExAnt x0 x1 + | Ast.WcAnd x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "WcAnd"))) + (meta_acc_Loc_t _loc x0)) + (meta_with_constr _loc x1)) + (meta_with_constr _loc x2) + | Ast.WcMod x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "WcMod"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1)) + (meta_ident _loc x2) + | Ast.WcTyp x0 x1 x2 -> + Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "WcTyp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.WcNil x0 -> + Ast.ExApp _loc + (Ast.ExId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "WcNil"))) + (meta_acc_Loc_t _loc x0) ]; + end; + value meta_acc_Loc_t = meta_loc_patt; + module Patt = + struct + value meta_string _loc s = Ast.PaStr _loc s; + value meta_int _loc s = Ast.PaInt _loc s; + value meta_float _loc s = Ast.PaFlo _loc s; + value meta_char _loc s = Ast.PaChr _loc s; + value meta_bool _loc = + fun + [ False -> Ast.PaId _loc (Ast.IdUid _loc "False") + | True -> Ast.PaId _loc (Ast.IdUid _loc "True") ]; + value rec meta_list mf_a _loc = + fun + [ [] -> Ast.PaId _loc (Ast.IdUid _loc "[]") + | [ x :: xs ] -> + Ast.PaApp _loc + (Ast.PaApp _loc (Ast.PaId _loc (Ast.IdUid _loc "::")) + (mf_a _loc x)) + (meta_list mf_a _loc xs) ]; + value rec meta_binding _loc = + fun + [ Ast.BiAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.BiEq x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "BiEq"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_expr _loc x2) + | Ast.BiAnd x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "BiAnd"))) + (meta_acc_Loc_t _loc x0)) + (meta_binding _loc x1)) + (meta_binding _loc x2) + | Ast.BiNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "BiNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_class_expr _loc = + fun + [ Ast.CeAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.CeEq x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeEq"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_expr _loc x1)) + (meta_class_expr _loc x2) + | Ast.CeAnd x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeAnd"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_expr _loc x1)) + (meta_class_expr _loc x2) + | Ast.CeTyc x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeTyc"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_expr _loc x1)) + (meta_class_type _loc x2) + | Ast.CeStr x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeStr"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_class_str_item _loc x2) + | Ast.CeLet x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeLet"))) + (meta_acc_Loc_t _loc x0)) + (meta_meta_bool _loc x1)) + (meta_binding _loc x2)) + (meta_class_expr _loc x3) + | Ast.CeFun x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeFun"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_class_expr _loc x2) + | Ast.CeCon x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeCon"))) + (meta_acc_Loc_t _loc x0)) + (meta_meta_bool _loc x1)) + (meta_ident _loc x2)) + (meta_ctyp _loc x3) + | Ast.CeApp x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeApp"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_expr _loc x1)) + (meta_expr _loc x2) + | Ast.CeNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CeNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_class_sig_item _loc = + fun + [ Ast.CgAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.CgVir x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CgVir"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_meta_bool _loc x2)) + (meta_ctyp _loc x3) + | Ast.CgVal x0 x1 x2 x3 x4 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CgVal"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_meta_bool _loc x2)) + (meta_meta_bool _loc x3)) + (meta_ctyp _loc x4) + | Ast.CgMth x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CgMth"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_meta_bool _loc x2)) + (meta_ctyp _loc x3) + | Ast.CgInh x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CgInh"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_type _loc x1) + | Ast.CgSem x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CgSem"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_sig_item _loc x1)) + (meta_class_sig_item _loc x2) + | Ast.CgCtr x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CgCtr"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.CgNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CgNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_class_str_item _loc = + fun + [ Ast.CrAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.CrVvr x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrVvr"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_meta_bool _loc x2)) + (meta_ctyp _loc x3) + | Ast.CrVir x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrVir"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_meta_bool _loc x2)) + (meta_ctyp _loc x3) + | Ast.CrVal x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrVal"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_meta_bool _loc x2)) + (meta_expr _loc x3) + | Ast.CrMth x0 x1 x2 x3 x4 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrMth"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_meta_bool _loc x2)) + (meta_expr _loc x3)) + (meta_ctyp _loc x4) + | Ast.CrIni x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrIni"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1) + | Ast.CrInh x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrInh"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_expr _loc x1)) + (meta_string _loc x2) + | Ast.CrCtr x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrCtr"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.CrSem x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrSem"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_str_item _loc x1)) + (meta_class_str_item _loc x2) + | Ast.CrNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CrNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_class_type _loc = + fun + [ Ast.CtAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.CtEq x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CtEq"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_type _loc x1)) + (meta_class_type _loc x2) + | Ast.CtCol x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CtCol"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_type _loc x1)) + (meta_class_type _loc x2) + | Ast.CtAnd x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CtAnd"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_type _loc x1)) + (meta_class_type _loc x2) + | Ast.CtSig x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CtSig"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_class_sig_item _loc x2) + | Ast.CtFun x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CtFun"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_class_type _loc x2) + | Ast.CtCon x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CtCon"))) + (meta_acc_Loc_t _loc x0)) + (meta_meta_bool _loc x1)) + (meta_ident _loc x2)) + (meta_ctyp _loc x3) + | Ast.CtNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "CtNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_ctyp _loc = + fun + [ Ast.TyAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.TyOfAmp x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyOfAmp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyAmp x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyAmp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyVrnInfSup x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyVrnInfSup"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyVrnInf x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyVrnInf"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TyVrnSup x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyVrnSup"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TyVrnEq x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyVrnEq"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TySta x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TySta"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyTup x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyTup"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TyMut x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyMut"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TyPrv x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyPrv"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TyOr x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyOr"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyAnd x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyAnd"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyOf x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyOf"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TySum x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TySum"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TyCom x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyCom"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TySem x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TySem"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyCol x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyCol"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyRec x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyRec"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.TyVrn x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyVrn"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.TyQuM x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyQuM"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.TyQuP x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyQuP"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.TyQuo x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyQuo"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.TyPol x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyPol"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyOlb x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyOlb"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyObj x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyObj"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_meta_bool _loc x2) + | Ast.TyDcl x0 x1 x2 x3 x4 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyDcl"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_list meta_ctyp _loc x2)) + (meta_ctyp _loc x3)) + (meta_list + (fun _loc (x1, x2) -> + Ast.PaTup _loc + (Ast.PaCom _loc (meta_ctyp _loc x1) + (meta_ctyp _loc x2))) + _loc x4) + | Ast.TyMan x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyMan"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyId x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyId"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.TyLab x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyLab"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyCls x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyCls"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.TyArr x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyArr"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyApp x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyApp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyAny x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyAny"))) + (meta_acc_Loc_t _loc x0) + | Ast.TyAli x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyAli"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.TyNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "TyNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_expr _loc = + fun + [ Ast.ExWhi x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExWhi"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExVrn x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExVrn"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExTyc x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExTyc"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_ctyp _loc x2) + | Ast.ExCom x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExCom"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExTup x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExTup"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1) + | Ast.ExTry x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExTry"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_match_case _loc x2) + | Ast.ExStr x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExStr"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExSte x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExSte"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExSnd x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExSnd"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_string _loc x2) + | Ast.ExSeq x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExSeq"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1) + | Ast.ExRec x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExRec"))) + (meta_acc_Loc_t _loc x0)) + (meta_rec_binding _loc x1)) + (meta_expr _loc x2) + | Ast.ExOvr x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExOvr"))) + (meta_acc_Loc_t _loc x0)) + (meta_rec_binding _loc x1) + | Ast.ExOlb x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExOlb"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_expr _loc x2) + | Ast.ExObj x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExObj"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_class_str_item _loc x2) + | Ast.ExNew x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExNew"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.ExMat x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExMat"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_match_case _loc x2) + | Ast.ExLmd x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExLmd"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_expr _loc x2)) + (meta_expr _loc x3) + | Ast.ExLet x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExLet"))) + (meta_acc_Loc_t _loc x0)) + (meta_meta_bool _loc x1)) + (meta_binding _loc x2)) + (meta_expr _loc x3) + | Ast.ExLaz x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExLaz"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1) + | Ast.ExLab x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExLab"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_expr _loc x2) + | Ast.ExNativeInt x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExNativeInt"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExInt64 x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExInt64"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExInt32 x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExInt32"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExInt x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExInt"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExIfe x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExIfe"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2)) + (meta_expr _loc x3) + | Ast.ExFun x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExFun"))) + (meta_acc_Loc_t _loc x0)) + (meta_match_case _loc x1) + | Ast.ExFor x0 x1 x2 x3 x4 x5 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc + (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExFor"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_expr _loc x2)) + (meta_expr _loc x3)) + (meta_meta_bool _loc x4)) + (meta_expr _loc x5) + | Ast.ExFlo x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExFlo"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExCoe x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExCoe"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_ctyp _loc x2)) + (meta_ctyp _loc x3) + | Ast.ExChr x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExChr"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.ExAss x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExAss"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExAsr x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExAsr"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1) + | Ast.ExAsf x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExAsf"))) + (meta_acc_Loc_t _loc x0) + | Ast.ExSem x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExSem"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExArr x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExArr"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1) + | Ast.ExAre x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExAre"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExApp x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExApp"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.ExAcc x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExAcc"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1)) + (meta_expr _loc x2) + | Ast.ExId x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExId"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.ExNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ExNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_ident _loc = + fun + [ Ast.IdAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.IdUid x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "IdUid"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.IdLid x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "IdLid"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.IdApp x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "IdApp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1)) + (meta_ident _loc x2) + | Ast.IdAcc x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "IdAcc"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1)) + (meta_ident _loc x2) ] + and meta_match_case _loc = + fun + [ Ast.McAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.McArr x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "McArr"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_expr _loc x2)) + (meta_expr _loc x3) + | Ast.McOr x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "McOr"))) + (meta_acc_Loc_t _loc x0)) + (meta_match_case _loc x1)) + (meta_match_case _loc x2) + | Ast.McNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "McNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_meta_bool _loc = + fun + [ Ast.BAnt x0 -> Ast.PaAnt _loc x0 + | Ast.BFalse -> + Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "BFalse")) + | Ast.BTrue -> + Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "BTrue")) ] + and meta_meta_list mf_a _loc = + fun + [ Ast.LAnt x0 -> Ast.PaAnt _loc x0 + | Ast.LCons x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "LCons"))) + (mf_a _loc x0)) + (meta_meta_list mf_a _loc x1) + | Ast.LNil -> + Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "LNil")) ] + and meta_meta_option mf_a _loc = + fun + [ Ast.OAnt x0 -> Ast.PaAnt _loc x0 + | Ast.OSome x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "OSome"))) + (mf_a _loc x0) + | Ast.ONone -> + Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "ONone")) ] + and meta_module_binding _loc = + fun + [ Ast.MbAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.MbCol x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MbCol"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_type _loc x2) + | Ast.MbColEq x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MbColEq"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_type _loc x2)) + (meta_module_expr _loc x3) + | Ast.MbAnd x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MbAnd"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_binding _loc x1)) + (meta_module_binding _loc x2) + | Ast.MbNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MbNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_module_expr _loc = + fun + [ Ast.MeAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.MeTyc x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MeTyc"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_expr _loc x1)) + (meta_module_type _loc x2) + | Ast.MeStr x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MeStr"))) + (meta_acc_Loc_t _loc x0)) + (meta_str_item _loc x1) + | Ast.MeFun x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MeFun"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_type _loc x2)) + (meta_module_expr _loc x3) + | Ast.MeApp x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MeApp"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_expr _loc x1)) + (meta_module_expr _loc x2) + | Ast.MeId x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MeId"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.MeNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MeNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_module_type _loc = + fun + [ Ast.MtAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.MtWit x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MtWit"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_type _loc x1)) + (meta_with_constr _loc x2) + | Ast.MtSig x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MtSig"))) + (meta_acc_Loc_t _loc x0)) + (meta_sig_item _loc x1) + | Ast.MtQuo x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MtQuo"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.MtFun x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MtFun"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_type _loc x2)) + (meta_module_type _loc x3) + | Ast.MtId x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MtId"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.MtNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "MtNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_patt _loc = + fun + [ Ast.PaVrn x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaVrn"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaTyp x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaTyp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.PaTyc x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaTyc"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_ctyp _loc x2) + | Ast.PaTup x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaTup"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1) + | Ast.PaStr x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaStr"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaEq x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaEq"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1)) + (meta_patt _loc x2) + | Ast.PaRec x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaRec"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1) + | Ast.PaRng x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaRng"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_patt _loc x2) + | Ast.PaOrp x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaOrp"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_patt _loc x2) + | Ast.PaOlbi x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaOlbi"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_patt _loc x2)) + (meta_expr _loc x3) + | Ast.PaOlb x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaOlb"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_patt _loc x2) + | Ast.PaLab x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaLab"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_patt _loc x2) + | Ast.PaFlo x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaFlo"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaNativeInt x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaNativeInt"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaInt64 x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaInt64"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaInt32 x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaInt32"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaInt x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaInt"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaChr x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaChr"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1) + | Ast.PaSem x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaSem"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_patt _loc x2) + | Ast.PaCom x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaCom"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_patt _loc x2) + | Ast.PaArr x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaArr"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1) + | Ast.PaApp x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaApp"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_patt _loc x2) + | Ast.PaAny x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaAny"))) + (meta_acc_Loc_t _loc x0) + | Ast.PaAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.PaAli x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaAli"))) + (meta_acc_Loc_t _loc x0)) + (meta_patt _loc x1)) + (meta_patt _loc x2) + | Ast.PaId x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaId"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.PaNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "PaNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_rec_binding _loc = + fun + [ Ast.RbAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.RbEq x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "RbEq"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1)) + (meta_expr _loc x2) + | Ast.RbSem x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "RbSem"))) + (meta_acc_Loc_t _loc x0)) + (meta_rec_binding _loc x1)) + (meta_rec_binding _loc x2) + | Ast.RbNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "RbNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_sig_item _loc = + fun + [ Ast.SgAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.SgVal x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgVal"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_ctyp _loc x2) + | Ast.SgTyp x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgTyp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.SgOpn x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgOpn"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.SgMty x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgMty"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_type _loc x2) + | Ast.SgRecMod x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgRecMod"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_binding _loc x1) + | Ast.SgMod x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgMod"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_type _loc x2) + | Ast.SgInc x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgInc"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_type _loc x1) + | Ast.SgExt x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgExt"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_ctyp _loc x2)) + (meta_meta_list meta_string _loc x3) + | Ast.SgExc x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgExc"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.SgDir x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgDir"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_expr _loc x2) + | Ast.SgSem x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgSem"))) + (meta_acc_Loc_t _loc x0)) + (meta_sig_item _loc x1)) + (meta_sig_item _loc x2) + | Ast.SgClt x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgClt"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_type _loc x1) + | Ast.SgCls x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgCls"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_type _loc x1) + | Ast.SgNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "SgNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_str_item _loc = + fun + [ Ast.StAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.StVal x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StVal"))) + (meta_acc_Loc_t _loc x0)) + (meta_meta_bool _loc x1)) + (meta_binding _loc x2) + | Ast.StTyp x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StTyp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1) + | Ast.StOpn x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StOpn"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1) + | Ast.StMty x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StMty"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_type _loc x2) + | Ast.StRecMod x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StRecMod"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_binding _loc x1) + | Ast.StMod x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StMod"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_module_expr _loc x2) + | Ast.StInc x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StInc"))) + (meta_acc_Loc_t _loc x0)) + (meta_module_expr _loc x1) + | Ast.StExt x0 x1 x2 x3 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StExt"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_ctyp _loc x2)) + (meta_meta_list meta_string _loc x3) + | Ast.StExp x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StExp"))) + (meta_acc_Loc_t _loc x0)) + (meta_expr _loc x1) + | Ast.StExc x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StExc"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_meta_option meta_ident _loc x2) + | Ast.StDir x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StDir"))) + (meta_acc_Loc_t _loc x0)) + (meta_string _loc x1)) + (meta_expr _loc x2) + | Ast.StSem x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StSem"))) + (meta_acc_Loc_t _loc x0)) + (meta_str_item _loc x1)) + (meta_str_item _loc x2) + | Ast.StClt x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StClt"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_type _loc x1) + | Ast.StCls x0 x1 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StCls"))) + (meta_acc_Loc_t _loc x0)) + (meta_class_expr _loc x1) + | Ast.StNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "StNil"))) + (meta_acc_Loc_t _loc x0) ] + and meta_with_constr _loc = + fun + [ Ast.WcAnt x0 x1 -> Ast.PaAnt x0 x1 + | Ast.WcAnd x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "WcAnd"))) + (meta_acc_Loc_t _loc x0)) + (meta_with_constr _loc x1)) + (meta_with_constr _loc x2) + | Ast.WcMod x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "WcMod"))) + (meta_acc_Loc_t _loc x0)) + (meta_ident _loc x1)) + (meta_ident _loc x2) + | Ast.WcTyp x0 x1 x2 -> + Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "WcTyp"))) + (meta_acc_Loc_t _loc x0)) + (meta_ctyp _loc x1)) + (meta_ctyp _loc x2) + | Ast.WcNil x0 -> + Ast.PaApp _loc + (Ast.PaId _loc + (Ast.IdAcc _loc (Ast.IdUid _loc "Ast") + (Ast.IdUid _loc "WcNil"))) + (meta_acc_Loc_t _loc x0) ]; + end; + end; + end; + class map = + object (o) + method string = fun x -> (x : string); + method int = fun x -> (x : int); + method float = fun x -> (x : float); + method bool = fun x -> (x : bool); + method list : ! 'a 'b. ('a -> 'b) -> list 'a -> list 'b = List.map; + method option : ! 'a 'b. ('a -> 'b) -> option 'a -> option 'b = + fun f -> fun [ None -> None | Some x -> Some (f x) ]; + method array : ! 'a 'b. ('a -> 'b) -> array 'a -> array 'b = Array. + map; + method ref : ! 'a 'b. ('a -> 'b) -> ref 'a -> ref 'b = + fun f { val = x } -> { val = f x; }; + method _Loc_t : Loc.t -> Loc.t = fun x -> x; + method with_constr : with_constr -> with_constr = + fun + [ WcNil _x0 -> WcNil (o#_Loc_t _x0) + | WcTyp _x0 _x1 _x2 -> + WcTyp (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | WcMod _x0 _x1 _x2 -> + WcMod (o#_Loc_t _x0) (o#ident _x1) (o#ident _x2) + | WcAnd _x0 _x1 _x2 -> + WcAnd (o#_Loc_t _x0) (o#with_constr _x1) (o#with_constr _x2) + | WcAnt _x0 _x1 -> WcAnt (o#_Loc_t _x0) (o#string _x1) ]; + method str_item : str_item -> str_item = + fun + [ StNil _x0 -> StNil (o#_Loc_t _x0) + | StCls _x0 _x1 -> StCls (o#_Loc_t _x0) (o#class_expr _x1) + | StClt _x0 _x1 -> StClt (o#_Loc_t _x0) (o#class_type _x1) + | StSem _x0 _x1 _x2 -> + StSem (o#_Loc_t _x0) (o#str_item _x1) (o#str_item _x2) + | StDir _x0 _x1 _x2 -> + StDir (o#_Loc_t _x0) (o#string _x1) (o#expr _x2) + | StExc _x0 _x1 _x2 -> + StExc (o#_Loc_t _x0) (o#ctyp _x1) (o#meta_option o#ident _x2) + | StExp _x0 _x1 -> StExp (o#_Loc_t _x0) (o#expr _x1) + | StExt _x0 _x1 _x2 _x3 -> + StExt (o#_Loc_t _x0) (o#string _x1) (o#ctyp _x2) + (o#meta_list o#string _x3) + | StInc _x0 _x1 -> StInc (o#_Loc_t _x0) (o#module_expr _x1) + | StMod _x0 _x1 _x2 -> + StMod (o#_Loc_t _x0) (o#string _x1) (o#module_expr _x2) + | StRecMod _x0 _x1 -> + StRecMod (o#_Loc_t _x0) (o#module_binding _x1) + | StMty _x0 _x1 _x2 -> + StMty (o#_Loc_t _x0) (o#string _x1) (o#module_type _x2) + | StOpn _x0 _x1 -> StOpn (o#_Loc_t _x0) (o#ident _x1) + | StTyp _x0 _x1 -> StTyp (o#_Loc_t _x0) (o#ctyp _x1) + | StVal _x0 _x1 _x2 -> + StVal (o#_Loc_t _x0) (o#meta_bool _x1) (o#binding _x2) + | StAnt _x0 _x1 -> StAnt (o#_Loc_t _x0) (o#string _x1) ]; + method sig_item : sig_item -> sig_item = + fun + [ SgNil _x0 -> SgNil (o#_Loc_t _x0) + | SgCls _x0 _x1 -> SgCls (o#_Loc_t _x0) (o#class_type _x1) + | SgClt _x0 _x1 -> SgClt (o#_Loc_t _x0) (o#class_type _x1) + | SgSem _x0 _x1 _x2 -> + SgSem (o#_Loc_t _x0) (o#sig_item _x1) (o#sig_item _x2) + | SgDir _x0 _x1 _x2 -> + SgDir (o#_Loc_t _x0) (o#string _x1) (o#expr _x2) + | SgExc _x0 _x1 -> SgExc (o#_Loc_t _x0) (o#ctyp _x1) + | SgExt _x0 _x1 _x2 _x3 -> + SgExt (o#_Loc_t _x0) (o#string _x1) (o#ctyp _x2) + (o#meta_list o#string _x3) + | SgInc _x0 _x1 -> SgInc (o#_Loc_t _x0) (o#module_type _x1) + | SgMod _x0 _x1 _x2 -> + SgMod (o#_Loc_t _x0) (o#string _x1) (o#module_type _x2) + | SgRecMod _x0 _x1 -> + SgRecMod (o#_Loc_t _x0) (o#module_binding _x1) + | SgMty _x0 _x1 _x2 -> + SgMty (o#_Loc_t _x0) (o#string _x1) (o#module_type _x2) + | SgOpn _x0 _x1 -> SgOpn (o#_Loc_t _x0) (o#ident _x1) + | SgTyp _x0 _x1 -> SgTyp (o#_Loc_t _x0) (o#ctyp _x1) + | SgVal _x0 _x1 _x2 -> + SgVal (o#_Loc_t _x0) (o#string _x1) (o#ctyp _x2) + | SgAnt _x0 _x1 -> SgAnt (o#_Loc_t _x0) (o#string _x1) ]; + method rec_binding : rec_binding -> rec_binding = + fun + [ RbNil _x0 -> RbNil (o#_Loc_t _x0) + | RbSem _x0 _x1 _x2 -> + RbSem (o#_Loc_t _x0) (o#rec_binding _x1) (o#rec_binding _x2) + | RbEq _x0 _x1 _x2 -> + RbEq (o#_Loc_t _x0) (o#ident _x1) (o#expr _x2) + | RbAnt _x0 _x1 -> RbAnt (o#_Loc_t _x0) (o#string _x1) ]; + method patt : patt -> patt = + fun + [ PaNil _x0 -> PaNil (o#_Loc_t _x0) + | PaId _x0 _x1 -> PaId (o#_Loc_t _x0) (o#ident _x1) + | PaAli _x0 _x1 _x2 -> + PaAli (o#_Loc_t _x0) (o#patt _x1) (o#patt _x2) + | PaAnt _x0 _x1 -> PaAnt (o#_Loc_t _x0) (o#string _x1) + | PaAny _x0 -> PaAny (o#_Loc_t _x0) + | PaApp _x0 _x1 _x2 -> + PaApp (o#_Loc_t _x0) (o#patt _x1) (o#patt _x2) + | PaArr _x0 _x1 -> PaArr (o#_Loc_t _x0) (o#patt _x1) + | PaCom _x0 _x1 _x2 -> + PaCom (o#_Loc_t _x0) (o#patt _x1) (o#patt _x2) + | PaSem _x0 _x1 _x2 -> + PaSem (o#_Loc_t _x0) (o#patt _x1) (o#patt _x2) + | PaChr _x0 _x1 -> PaChr (o#_Loc_t _x0) (o#string _x1) + | PaInt _x0 _x1 -> PaInt (o#_Loc_t _x0) (o#string _x1) + | PaInt32 _x0 _x1 -> PaInt32 (o#_Loc_t _x0) (o#string _x1) + | PaInt64 _x0 _x1 -> PaInt64 (o#_Loc_t _x0) (o#string _x1) + | PaNativeInt _x0 _x1 -> PaNativeInt (o#_Loc_t _x0) (o#string _x1) + | PaFlo _x0 _x1 -> PaFlo (o#_Loc_t _x0) (o#string _x1) + | PaLab _x0 _x1 _x2 -> + PaLab (o#_Loc_t _x0) (o#string _x1) (o#patt _x2) + | PaOlb _x0 _x1 _x2 -> + PaOlb (o#_Loc_t _x0) (o#string _x1) (o#patt _x2) + | PaOlbi _x0 _x1 _x2 _x3 -> + PaOlbi (o#_Loc_t _x0) (o#string _x1) (o#patt _x2) (o#expr _x3) + | PaOrp _x0 _x1 _x2 -> + PaOrp (o#_Loc_t _x0) (o#patt _x1) (o#patt _x2) + | PaRng _x0 _x1 _x2 -> + PaRng (o#_Loc_t _x0) (o#patt _x1) (o#patt _x2) + | PaRec _x0 _x1 -> PaRec (o#_Loc_t _x0) (o#patt _x1) + | PaEq _x0 _x1 _x2 -> + PaEq (o#_Loc_t _x0) (o#ident _x1) (o#patt _x2) + | PaStr _x0 _x1 -> PaStr (o#_Loc_t _x0) (o#string _x1) + | PaTup _x0 _x1 -> PaTup (o#_Loc_t _x0) (o#patt _x1) + | PaTyc _x0 _x1 _x2 -> + PaTyc (o#_Loc_t _x0) (o#patt _x1) (o#ctyp _x2) + | PaTyp _x0 _x1 -> PaTyp (o#_Loc_t _x0) (o#ident _x1) + | PaVrn _x0 _x1 -> PaVrn (o#_Loc_t _x0) (o#string _x1) ]; + method module_type : module_type -> module_type = + fun + [ MtNil _x0 -> MtNil (o#_Loc_t _x0) + | MtId _x0 _x1 -> MtId (o#_Loc_t _x0) (o#ident _x1) + | MtFun _x0 _x1 _x2 _x3 -> + MtFun (o#_Loc_t _x0) (o#string _x1) (o#module_type _x2) + (o#module_type _x3) + | MtQuo _x0 _x1 -> MtQuo (o#_Loc_t _x0) (o#string _x1) + | MtSig _x0 _x1 -> MtSig (o#_Loc_t _x0) (o#sig_item _x1) + | MtWit _x0 _x1 _x2 -> + MtWit (o#_Loc_t _x0) (o#module_type _x1) (o#with_constr _x2) + | MtAnt _x0 _x1 -> MtAnt (o#_Loc_t _x0) (o#string _x1) ]; + method module_expr : module_expr -> module_expr = + fun + [ MeNil _x0 -> MeNil (o#_Loc_t _x0) + | MeId _x0 _x1 -> MeId (o#_Loc_t _x0) (o#ident _x1) + | MeApp _x0 _x1 _x2 -> + MeApp (o#_Loc_t _x0) (o#module_expr _x1) (o#module_expr _x2) + | MeFun _x0 _x1 _x2 _x3 -> + MeFun (o#_Loc_t _x0) (o#string _x1) (o#module_type _x2) + (o#module_expr _x3) + | MeStr _x0 _x1 -> MeStr (o#_Loc_t _x0) (o#str_item _x1) + | MeTyc _x0 _x1 _x2 -> + MeTyc (o#_Loc_t _x0) (o#module_expr _x1) (o#module_type _x2) + | MeAnt _x0 _x1 -> MeAnt (o#_Loc_t _x0) (o#string _x1) ]; + method module_binding : module_binding -> module_binding = + fun + [ MbNil _x0 -> MbNil (o#_Loc_t _x0) + | MbAnd _x0 _x1 _x2 -> + MbAnd (o#_Loc_t _x0) (o#module_binding _x1) + (o#module_binding _x2) + | MbColEq _x0 _x1 _x2 _x3 -> + MbColEq (o#_Loc_t _x0) (o#string _x1) (o#module_type _x2) + (o#module_expr _x3) + | MbCol _x0 _x1 _x2 -> + MbCol (o#_Loc_t _x0) (o#string _x1) (o#module_type _x2) + | MbAnt _x0 _x1 -> MbAnt (o#_Loc_t _x0) (o#string _x1) ]; + method meta_option : + ! 'a 'b. ('a -> 'b) -> meta_option 'a -> meta_option 'b = + fun _f_a -> + fun + [ ONone -> ONone + | OSome _x0 -> OSome (_f_a _x0) + | OAnt _x0 -> OAnt (o#string _x0) ]; + method meta_list : + ! 'a 'b. ('a -> 'b) -> meta_list 'a -> meta_list 'b = + fun _f_a -> + fun + [ LNil -> LNil + | LCons _x0 _x1 -> LCons (_f_a _x0) (o#meta_list _f_a _x1) + | LAnt _x0 -> LAnt (o#string _x0) ]; + method meta_bool : meta_bool -> meta_bool = + fun + [ BTrue -> BTrue + | BFalse -> BFalse + | BAnt _x0 -> BAnt (o#string _x0) ]; + method match_case : match_case -> match_case = + fun + [ McNil _x0 -> McNil (o#_Loc_t _x0) + | McOr _x0 _x1 _x2 -> + McOr (o#_Loc_t _x0) (o#match_case _x1) (o#match_case _x2) + | McArr _x0 _x1 _x2 _x3 -> + McArr (o#_Loc_t _x0) (o#patt _x1) (o#expr _x2) (o#expr _x3) + | McAnt _x0 _x1 -> McAnt (o#_Loc_t _x0) (o#string _x1) ]; + method ident : ident -> ident = + fun + [ IdAcc _x0 _x1 _x2 -> + IdAcc (o#_Loc_t _x0) (o#ident _x1) (o#ident _x2) + | IdApp _x0 _x1 _x2 -> + IdApp (o#_Loc_t _x0) (o#ident _x1) (o#ident _x2) + | IdLid _x0 _x1 -> IdLid (o#_Loc_t _x0) (o#string _x1) + | IdUid _x0 _x1 -> IdUid (o#_Loc_t _x0) (o#string _x1) + | IdAnt _x0 _x1 -> IdAnt (o#_Loc_t _x0) (o#string _x1) ]; + method expr : expr -> expr = + fun + [ ExNil _x0 -> ExNil (o#_Loc_t _x0) + | ExId _x0 _x1 -> ExId (o#_Loc_t _x0) (o#ident _x1) + | ExAcc _x0 _x1 _x2 -> + ExAcc (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) + | ExAnt _x0 _x1 -> ExAnt (o#_Loc_t _x0) (o#string _x1) + | ExApp _x0 _x1 _x2 -> + ExApp (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) + | ExAre _x0 _x1 _x2 -> + ExAre (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) + | ExArr _x0 _x1 -> ExArr (o#_Loc_t _x0) (o#expr _x1) + | ExSem _x0 _x1 _x2 -> + ExSem (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) + | ExAsf _x0 -> ExAsf (o#_Loc_t _x0) + | ExAsr _x0 _x1 -> ExAsr (o#_Loc_t _x0) (o#expr _x1) + | ExAss _x0 _x1 _x2 -> + ExAss (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) + | ExChr _x0 _x1 -> ExChr (o#_Loc_t _x0) (o#string _x1) + | ExCoe _x0 _x1 _x2 _x3 -> + ExCoe (o#_Loc_t _x0) (o#expr _x1) (o#ctyp _x2) (o#ctyp _x3) + | ExFlo _x0 _x1 -> ExFlo (o#_Loc_t _x0) (o#string _x1) + | ExFor _x0 _x1 _x2 _x3 _x4 _x5 -> + ExFor (o#_Loc_t _x0) (o#string _x1) (o#expr _x2) (o#expr _x3) + (o#meta_bool _x4) (o#expr _x5) + | ExFun _x0 _x1 -> ExFun (o#_Loc_t _x0) (o#match_case _x1) + | ExIfe _x0 _x1 _x2 _x3 -> + ExIfe (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) (o#expr _x3) + | ExInt _x0 _x1 -> ExInt (o#_Loc_t _x0) (o#string _x1) + | ExInt32 _x0 _x1 -> ExInt32 (o#_Loc_t _x0) (o#string _x1) + | ExInt64 _x0 _x1 -> ExInt64 (o#_Loc_t _x0) (o#string _x1) + | ExNativeInt _x0 _x1 -> ExNativeInt (o#_Loc_t _x0) (o#string _x1) + | ExLab _x0 _x1 _x2 -> + ExLab (o#_Loc_t _x0) (o#string _x1) (o#expr _x2) + | ExLaz _x0 _x1 -> ExLaz (o#_Loc_t _x0) (o#expr _x1) + | ExLet _x0 _x1 _x2 _x3 -> + ExLet (o#_Loc_t _x0) (o#meta_bool _x1) (o#binding _x2) + (o#expr _x3) + | ExLmd _x0 _x1 _x2 _x3 -> + ExLmd (o#_Loc_t _x0) (o#string _x1) (o#module_expr _x2) + (o#expr _x3) + | ExMat _x0 _x1 _x2 -> + ExMat (o#_Loc_t _x0) (o#expr _x1) (o#match_case _x2) + | ExNew _x0 _x1 -> ExNew (o#_Loc_t _x0) (o#ident _x1) + | ExObj _x0 _x1 _x2 -> + ExObj (o#_Loc_t _x0) (o#patt _x1) (o#class_str_item _x2) + | ExOlb _x0 _x1 _x2 -> + ExOlb (o#_Loc_t _x0) (o#string _x1) (o#expr _x2) + | ExOvr _x0 _x1 -> ExOvr (o#_Loc_t _x0) (o#rec_binding _x1) + | ExRec _x0 _x1 _x2 -> + ExRec (o#_Loc_t _x0) (o#rec_binding _x1) (o#expr _x2) + | ExSeq _x0 _x1 -> ExSeq (o#_Loc_t _x0) (o#expr _x1) + | ExSnd _x0 _x1 _x2 -> + ExSnd (o#_Loc_t _x0) (o#expr _x1) (o#string _x2) + | ExSte _x0 _x1 _x2 -> + ExSte (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) + | ExStr _x0 _x1 -> ExStr (o#_Loc_t _x0) (o#string _x1) + | ExTry _x0 _x1 _x2 -> + ExTry (o#_Loc_t _x0) (o#expr _x1) (o#match_case _x2) + | ExTup _x0 _x1 -> ExTup (o#_Loc_t _x0) (o#expr _x1) + | ExCom _x0 _x1 _x2 -> + ExCom (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) + | ExTyc _x0 _x1 _x2 -> + ExTyc (o#_Loc_t _x0) (o#expr _x1) (o#ctyp _x2) + | ExVrn _x0 _x1 -> ExVrn (o#_Loc_t _x0) (o#string _x1) + | ExWhi _x0 _x1 _x2 -> + ExWhi (o#_Loc_t _x0) (o#expr _x1) (o#expr _x2) ]; + method ctyp : ctyp -> ctyp = + fun + [ TyNil _x0 -> TyNil (o#_Loc_t _x0) + | TyAli _x0 _x1 _x2 -> + TyAli (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | TyAny _x0 -> TyAny (o#_Loc_t _x0) + | TyApp _x0 _x1 _x2 -> + TyApp (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | TyArr _x0 _x1 _x2 -> + TyArr (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | TyCls _x0 _x1 -> TyCls (o#_Loc_t _x0) (o#ident _x1) + | TyLab _x0 _x1 _x2 -> + TyLab (o#_Loc_t _x0) (o#string _x1) (o#ctyp _x2) + | TyId _x0 _x1 -> TyId (o#_Loc_t _x0) (o#ident _x1) + | TyMan _x0 _x1 _x2 -> + TyMan (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | TyDcl _x0 _x1 _x2 _x3 _x4 -> + TyDcl (o#_Loc_t _x0) (o#string _x1) (o#list o#ctyp _x2) + (o#ctyp _x3) + (o#list (fun (_x0, _x1) -> ((o#ctyp _x0), (o#ctyp _x1))) _x4) + | TyObj _x0 _x1 _x2 -> + TyObj (o#_Loc_t _x0) (o#ctyp _x1) (o#meta_bool _x2) + | TyOlb _x0 _x1 _x2 -> + TyOlb (o#_Loc_t _x0) (o#string _x1) (o#ctyp _x2) + | TyPol _x0 _x1 _x2 -> + TyPol (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | TyQuo _x0 _x1 -> TyQuo (o#_Loc_t _x0) (o#string _x1) + | TyQuP _x0 _x1 -> TyQuP (o#_Loc_t _x0) (o#string _x1) + | TyQuM _x0 _x1 -> TyQuM (o#_Loc_t _x0) (o#string _x1) + | TyVrn _x0 _x1 -> TyVrn (o#_Loc_t _x0) (o#string _x1) + | TyRec _x0 _x1 -> TyRec (o#_Loc_t _x0) (o#ctyp _x1) + | TyCol _x0 _x1 _x2 -> + TyCol (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | TySem _x0 _x1 _x2 -> + TySem (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | TyCom _x0 _x1 _x2 -> + TyCom (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | TySum _x0 _x1 -> TySum (o#_Loc_t _x0) (o#ctyp _x1) + | TyOf _x0 _x1 _x2 -> TyOf (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | TyAnd _x0 _x1 _x2 -> + TyAnd (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | TyOr _x0 _x1 _x2 -> TyOr (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | TyPrv _x0 _x1 -> TyPrv (o#_Loc_t _x0) (o#ctyp _x1) + | TyMut _x0 _x1 -> TyMut (o#_Loc_t _x0) (o#ctyp _x1) + | TyTup _x0 _x1 -> TyTup (o#_Loc_t _x0) (o#ctyp _x1) + | TySta _x0 _x1 _x2 -> + TySta (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | TyVrnEq _x0 _x1 -> TyVrnEq (o#_Loc_t _x0) (o#ctyp _x1) + | TyVrnSup _x0 _x1 -> TyVrnSup (o#_Loc_t _x0) (o#ctyp _x1) + | TyVrnInf _x0 _x1 -> TyVrnInf (o#_Loc_t _x0) (o#ctyp _x1) + | TyVrnInfSup _x0 _x1 _x2 -> + TyVrnInfSup (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | TyAmp _x0 _x1 _x2 -> + TyAmp (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | TyOfAmp _x0 _x1 _x2 -> + TyOfAmp (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | TyAnt _x0 _x1 -> TyAnt (o#_Loc_t _x0) (o#string _x1) ]; + method class_type : class_type -> class_type = + fun + [ CtNil _x0 -> CtNil (o#_Loc_t _x0) + | CtCon _x0 _x1 _x2 _x3 -> + CtCon (o#_Loc_t _x0) (o#meta_bool _x1) (o#ident _x2) + (o#ctyp _x3) + | CtFun _x0 _x1 _x2 -> + CtFun (o#_Loc_t _x0) (o#ctyp _x1) (o#class_type _x2) + | CtSig _x0 _x1 _x2 -> + CtSig (o#_Loc_t _x0) (o#ctyp _x1) (o#class_sig_item _x2) + | CtAnd _x0 _x1 _x2 -> + CtAnd (o#_Loc_t _x0) (o#class_type _x1) (o#class_type _x2) + | CtCol _x0 _x1 _x2 -> + CtCol (o#_Loc_t _x0) (o#class_type _x1) (o#class_type _x2) + | CtEq _x0 _x1 _x2 -> + CtEq (o#_Loc_t _x0) (o#class_type _x1) (o#class_type _x2) + | CtAnt _x0 _x1 -> CtAnt (o#_Loc_t _x0) (o#string _x1) ]; + method class_str_item : class_str_item -> class_str_item = + fun + [ CrNil _x0 -> CrNil (o#_Loc_t _x0) + | CrSem _x0 _x1 _x2 -> + CrSem (o#_Loc_t _x0) (o#class_str_item _x1) + (o#class_str_item _x2) + | CrCtr _x0 _x1 _x2 -> + CrCtr (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | CrInh _x0 _x1 _x2 -> + CrInh (o#_Loc_t _x0) (o#class_expr _x1) (o#string _x2) + | CrIni _x0 _x1 -> CrIni (o#_Loc_t _x0) (o#expr _x1) + | CrMth _x0 _x1 _x2 _x3 _x4 -> + CrMth (o#_Loc_t _x0) (o#string _x1) (o#meta_bool _x2) + (o#expr _x3) (o#ctyp _x4) + | CrVal _x0 _x1 _x2 _x3 -> + CrVal (o#_Loc_t _x0) (o#string _x1) (o#meta_bool _x2) + (o#expr _x3) + | CrVir _x0 _x1 _x2 _x3 -> + CrVir (o#_Loc_t _x0) (o#string _x1) (o#meta_bool _x2) + (o#ctyp _x3) + | CrVvr _x0 _x1 _x2 _x3 -> + CrVvr (o#_Loc_t _x0) (o#string _x1) (o#meta_bool _x2) + (o#ctyp _x3) + | CrAnt _x0 _x1 -> CrAnt (o#_Loc_t _x0) (o#string _x1) ]; + method class_sig_item : class_sig_item -> class_sig_item = + fun + [ CgNil _x0 -> CgNil (o#_Loc_t _x0) + | CgCtr _x0 _x1 _x2 -> + CgCtr (o#_Loc_t _x0) (o#ctyp _x1) (o#ctyp _x2) + | CgSem _x0 _x1 _x2 -> + CgSem (o#_Loc_t _x0) (o#class_sig_item _x1) + (o#class_sig_item _x2) + | CgInh _x0 _x1 -> CgInh (o#_Loc_t _x0) (o#class_type _x1) + | CgMth _x0 _x1 _x2 _x3 -> + CgMth (o#_Loc_t _x0) (o#string _x1) (o#meta_bool _x2) + (o#ctyp _x3) + | CgVal _x0 _x1 _x2 _x3 _x4 -> + CgVal (o#_Loc_t _x0) (o#string _x1) (o#meta_bool _x2) + (o#meta_bool _x3) (o#ctyp _x4) + | CgVir _x0 _x1 _x2 _x3 -> + CgVir (o#_Loc_t _x0) (o#string _x1) (o#meta_bool _x2) + (o#ctyp _x3) + | CgAnt _x0 _x1 -> CgAnt (o#_Loc_t _x0) (o#string _x1) ]; + method class_expr : class_expr -> class_expr = + fun + [ CeNil _x0 -> CeNil (o#_Loc_t _x0) + | CeApp _x0 _x1 _x2 -> + CeApp (o#_Loc_t _x0) (o#class_expr _x1) (o#expr _x2) + | CeCon _x0 _x1 _x2 _x3 -> + CeCon (o#_Loc_t _x0) (o#meta_bool _x1) (o#ident _x2) + (o#ctyp _x3) + | CeFun _x0 _x1 _x2 -> + CeFun (o#_Loc_t _x0) (o#patt _x1) (o#class_expr _x2) + | CeLet _x0 _x1 _x2 _x3 -> + CeLet (o#_Loc_t _x0) (o#meta_bool _x1) (o#binding _x2) + (o#class_expr _x3) + | CeStr _x0 _x1 _x2 -> + CeStr (o#_Loc_t _x0) (o#patt _x1) (o#class_str_item _x2) + | CeTyc _x0 _x1 _x2 -> + CeTyc (o#_Loc_t _x0) (o#class_expr _x1) (o#class_type _x2) + | CeAnd _x0 _x1 _x2 -> + CeAnd (o#_Loc_t _x0) (o#class_expr _x1) (o#class_expr _x2) + | CeEq _x0 _x1 _x2 -> + CeEq (o#_Loc_t _x0) (o#class_expr _x1) (o#class_expr _x2) + | CeAnt _x0 _x1 -> CeAnt (o#_Loc_t _x0) (o#string _x1) ]; + method binding : binding -> binding = + fun + [ BiNil _x0 -> BiNil (o#_Loc_t _x0) + | BiAnd _x0 _x1 _x2 -> + BiAnd (o#_Loc_t _x0) (o#binding _x1) (o#binding _x2) + | BiEq _x0 _x1 _x2 -> BiEq (o#_Loc_t _x0) (o#patt _x1) (o#expr _x2) + | BiAnt _x0 _x1 -> BiAnt (o#_Loc_t _x0) (o#string _x1) ]; + end; + class fold = + object ((o : 'self_type)) + method string = fun (_ : string) -> (o : 'self_type); + method int = fun (_ : int) -> (o : 'self_type); + method float = fun (_ : float) -> (o : 'self_type); + method bool = fun (_ : bool) -> (o : 'self_type); + method list : + ! 'a. ('self_type -> 'a -> 'self_type) -> list 'a -> 'self_type = + fun f -> List.fold_left f o; + method option : + ! 'a. ('self_type -> 'a -> 'self_type) -> option 'a -> 'self_type = + fun f -> fun [ None -> o | Some x -> f o x ]; + method array : + ! 'a. ('self_type -> 'a -> 'self_type) -> array 'a -> 'self_type = + fun f -> Array.fold_left f o; + method ref : + ! 'a. ('self_type -> 'a -> 'self_type) -> ref 'a -> 'self_type = + fun f { val = x } -> f o x; + method _Loc_t : Loc.t -> 'self_type = fun _ -> o; + method with_constr : with_constr -> 'self_type = + fun + [ WcNil _x0 -> o#_Loc_t _x0 + | WcTyp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | WcMod _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ident _x1)#ident _x2 + | WcAnd _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#with_constr _x1)#with_constr _x2 + | WcAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + method str_item : str_item -> 'self_type = + fun + [ StNil _x0 -> o#_Loc_t _x0 + | StCls _x0 _x1 -> (o#_Loc_t _x0)#class_expr _x1 + | StClt _x0 _x1 -> (o#_Loc_t _x0)#class_type _x1 + | StSem _x0 _x1 _x2 -> ((o#_Loc_t _x0)#str_item _x1)#str_item _x2 + | StDir _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#expr _x2 + | StExc _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#ctyp _x1)#meta_option (fun o -> o#ident) _x2 + | StExp _x0 _x1 -> (o#_Loc_t _x0)#expr _x1 + | StExt _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#string _x1)#ctyp _x2)#meta_list + (fun o -> o#string) _x3 + | StInc _x0 _x1 -> (o#_Loc_t _x0)#module_expr _x1 + | StMod _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#module_expr _x2 + | StRecMod _x0 _x1 -> (o#_Loc_t _x0)#module_binding _x1 + | StMty _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#module_type _x2 + | StOpn _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 + | StTyp _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 + | StVal _x0 _x1 _x2 -> ((o#_Loc_t _x0)#meta_bool _x1)#binding _x2 + | StAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + method sig_item : sig_item -> 'self_type = + fun + [ SgNil _x0 -> o#_Loc_t _x0 + | SgCls _x0 _x1 -> (o#_Loc_t _x0)#class_type _x1 + | SgClt _x0 _x1 -> (o#_Loc_t _x0)#class_type _x1 + | SgSem _x0 _x1 _x2 -> ((o#_Loc_t _x0)#sig_item _x1)#sig_item _x2 + | SgDir _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#expr _x2 + | SgExc _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 + | SgExt _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#string _x1)#ctyp _x2)#meta_list + (fun o -> o#string) _x3 + | SgInc _x0 _x1 -> (o#_Loc_t _x0)#module_type _x1 + | SgMod _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#module_type _x2 + | SgRecMod _x0 _x1 -> (o#_Loc_t _x0)#module_binding _x1 + | SgMty _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#module_type _x2 + | SgOpn _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 + | SgTyp _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 + | SgVal _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#ctyp _x2 + | SgAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + method rec_binding : rec_binding -> 'self_type = + fun + [ RbNil _x0 -> o#_Loc_t _x0 + | RbSem _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#rec_binding _x1)#rec_binding _x2 + | RbEq _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ident _x1)#expr _x2 + | RbAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + method patt : patt -> 'self_type = + fun + [ PaNil _x0 -> o#_Loc_t _x0 + | PaId _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 + | PaAli _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#patt _x2 + | PaAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | PaAny _x0 -> o#_Loc_t _x0 + | PaApp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#patt _x2 + | PaArr _x0 _x1 -> (o#_Loc_t _x0)#patt _x1 + | PaCom _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#patt _x2 + | PaSem _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#patt _x2 + | PaChr _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | PaInt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | PaInt32 _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | PaInt64 _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | PaNativeInt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | PaFlo _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | PaLab _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#patt _x2 + | PaOlb _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#patt _x2 + | PaOlbi _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#string _x1)#patt _x2)#expr _x3 + | PaOrp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#patt _x2 + | PaRng _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#patt _x2 + | PaRec _x0 _x1 -> (o#_Loc_t _x0)#patt _x1 + | PaEq _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ident _x1)#patt _x2 + | PaStr _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | PaTup _x0 _x1 -> (o#_Loc_t _x0)#patt _x1 + | PaTyc _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#ctyp _x2 + | PaTyp _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 + | PaVrn _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + method module_type : module_type -> 'self_type = + fun + [ MtNil _x0 -> o#_Loc_t _x0 + | MtId _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 + | MtFun _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#string _x1)#module_type _x2)#module_type _x3 + | MtQuo _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | MtSig _x0 _x1 -> (o#_Loc_t _x0)#sig_item _x1 + | MtWit _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#module_type _x1)#with_constr _x2 + | MtAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + method module_expr : module_expr -> 'self_type = + fun + [ MeNil _x0 -> o#_Loc_t _x0 + | MeId _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 + | MeApp _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#module_expr _x1)#module_expr _x2 + | MeFun _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#string _x1)#module_type _x2)#module_expr _x3 + | MeStr _x0 _x1 -> (o#_Loc_t _x0)#str_item _x1 + | MeTyc _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#module_expr _x1)#module_type _x2 + | MeAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + method module_binding : module_binding -> 'self_type = + fun + [ MbNil _x0 -> o#_Loc_t _x0 + | MbAnd _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#module_binding _x1)#module_binding _x2 + | MbColEq _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#string _x1)#module_type _x2)#module_expr _x3 + | MbCol _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#module_type _x2 + | MbAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + method meta_option : + ! 'a. + ('self_type -> 'a -> 'self_type) -> meta_option 'a -> 'self_type = + fun _f_a -> + fun + [ ONone -> o + | OSome _x0 -> _f_a o _x0 + | OAnt _x0 -> o#string _x0 ]; + method meta_list : + ! 'a. + ('self_type -> 'a -> 'self_type) -> meta_list 'a -> 'self_type = + fun _f_a -> + fun + [ LNil -> o + | LCons _x0 _x1 -> (_f_a o _x0)#meta_list (fun o -> _f_a o) _x1 + | LAnt _x0 -> o#string _x0 ]; + method meta_bool : meta_bool -> 'self_type = + fun [ BTrue -> o | BFalse -> o | BAnt _x0 -> o#string _x0 ]; + method match_case : match_case -> 'self_type = + fun + [ McNil _x0 -> o#_Loc_t _x0 + | McOr _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#match_case _x1)#match_case _x2 + | McArr _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#patt _x1)#expr _x2)#expr _x3 + | McAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + method ident : ident -> 'self_type = + fun + [ IdAcc _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ident _x1)#ident _x2 + | IdApp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ident _x1)#ident _x2 + | IdLid _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | IdUid _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | IdAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + method expr : expr -> 'self_type = + fun + [ ExNil _x0 -> o#_Loc_t _x0 + | ExId _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 + | ExAcc _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 + | ExAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | ExApp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 + | ExAre _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 + | ExArr _x0 _x1 -> (o#_Loc_t _x0)#expr _x1 + | ExSem _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 + | ExAsf _x0 -> o#_Loc_t _x0 + | ExAsr _x0 _x1 -> (o#_Loc_t _x0)#expr _x1 + | ExAss _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 + | ExChr _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | ExCoe _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#expr _x1)#ctyp _x2)#ctyp _x3 + | ExFlo _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | ExFor _x0 _x1 _x2 _x3 _x4 _x5 -> + (((((o#_Loc_t _x0)#string _x1)#expr _x2)#expr _x3)#meta_bool + _x4)# + expr _x5 + | ExFun _x0 _x1 -> (o#_Loc_t _x0)#match_case _x1 + | ExIfe _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#expr _x1)#expr _x2)#expr _x3 + | ExInt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | ExInt32 _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | ExInt64 _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | ExNativeInt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | ExLab _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#expr _x2 + | ExLaz _x0 _x1 -> (o#_Loc_t _x0)#expr _x1 + | ExLet _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#meta_bool _x1)#binding _x2)#expr _x3 + | ExLmd _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#string _x1)#module_expr _x2)#expr _x3 + | ExMat _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#match_case _x2 + | ExNew _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 + | ExObj _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#class_str_item _x2 + | ExOlb _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#expr _x2 + | ExOvr _x0 _x1 -> (o#_Loc_t _x0)#rec_binding _x1 + | ExRec _x0 _x1 _x2 -> ((o#_Loc_t _x0)#rec_binding _x1)#expr _x2 + | ExSeq _x0 _x1 -> (o#_Loc_t _x0)#expr _x1 + | ExSnd _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#string _x2 + | ExSte _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 + | ExStr _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | ExTry _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#match_case _x2 + | ExTup _x0 _x1 -> (o#_Loc_t _x0)#expr _x1 + | ExCom _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 + | ExTyc _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#ctyp _x2 + | ExVrn _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | ExWhi _x0 _x1 _x2 -> ((o#_Loc_t _x0)#expr _x1)#expr _x2 ]; + method ctyp : ctyp -> 'self_type = + fun + [ TyNil _x0 -> o#_Loc_t _x0 + | TyAli _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyAny _x0 -> o#_Loc_t _x0 + | TyApp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyArr _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyCls _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 + | TyLab _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#ctyp _x2 + | TyId _x0 _x1 -> (o#_Loc_t _x0)#ident _x1 + | TyMan _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyDcl _x0 _x1 _x2 _x3 _x4 -> + ((((o#_Loc_t _x0)#string _x1)#list (fun o -> o#ctyp) _x2)#ctyp + _x3)# + list (fun o (_x0, _x1) -> (o#ctyp _x0)#ctyp _x1) _x4 + | TyObj _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#meta_bool _x2 + | TyOlb _x0 _x1 _x2 -> ((o#_Loc_t _x0)#string _x1)#ctyp _x2 + | TyPol _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyQuo _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | TyQuP _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | TyQuM _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | TyVrn _x0 _x1 -> (o#_Loc_t _x0)#string _x1 + | TyRec _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 + | TyCol _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TySem _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyCom _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TySum _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 + | TyOf _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyAnd _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyOr _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyPrv _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 + | TyMut _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 + | TyTup _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 + | TySta _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyVrnEq _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 + | TyVrnSup _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 + | TyVrnInf _x0 _x1 -> (o#_Loc_t _x0)#ctyp _x1 + | TyVrnInfSup _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyAmp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyOfAmp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | TyAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + method class_type : class_type -> 'self_type = + fun + [ CtNil _x0 -> o#_Loc_t _x0 + | CtCon _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#meta_bool _x1)#ident _x2)#ctyp _x3 + | CtFun _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#class_type _x2 + | CtSig _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#class_sig_item _x2 + | CtAnd _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#class_type _x1)#class_type _x2 + | CtCol _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#class_type _x1)#class_type _x2 + | CtEq _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#class_type _x1)#class_type _x2 + | CtAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + method class_str_item : class_str_item -> 'self_type = + fun + [ CrNil _x0 -> o#_Loc_t _x0 + | CrSem _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#class_str_item _x1)#class_str_item _x2 + | CrCtr _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | CrInh _x0 _x1 _x2 -> ((o#_Loc_t _x0)#class_expr _x1)#string _x2 + | CrIni _x0 _x1 -> (o#_Loc_t _x0)#expr _x1 + | CrMth _x0 _x1 _x2 _x3 _x4 -> + ((((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#expr _x3)#ctyp _x4 + | CrVal _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#expr _x3 + | CrVir _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 + | CrVvr _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 + | CrAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + method class_sig_item : class_sig_item -> 'self_type = + fun + [ CgNil _x0 -> o#_Loc_t _x0 + | CgCtr _x0 _x1 _x2 -> ((o#_Loc_t _x0)#ctyp _x1)#ctyp _x2 + | CgSem _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#class_sig_item _x1)#class_sig_item _x2 + | CgInh _x0 _x1 -> (o#_Loc_t _x0)#class_type _x1 + | CgMth _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 + | CgVal _x0 _x1 _x2 _x3 _x4 -> + ((((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#meta_bool _x3)# + ctyp _x4 + | CgVir _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#string _x1)#meta_bool _x2)#ctyp _x3 + | CgAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + method class_expr : class_expr -> 'self_type = + fun + [ CeNil _x0 -> o#_Loc_t _x0 + | CeApp _x0 _x1 _x2 -> ((o#_Loc_t _x0)#class_expr _x1)#expr _x2 + | CeCon _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#meta_bool _x1)#ident _x2)#ctyp _x3 + | CeFun _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#class_expr _x2 + | CeLet _x0 _x1 _x2 _x3 -> + (((o#_Loc_t _x0)#meta_bool _x1)#binding _x2)#class_expr _x3 + | CeStr _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#class_str_item _x2 + | CeTyc _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#class_expr _x1)#class_type _x2 + | CeAnd _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#class_expr _x1)#class_expr _x2 + | CeEq _x0 _x1 _x2 -> + ((o#_Loc_t _x0)#class_expr _x1)#class_expr _x2 + | CeAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + method binding : binding -> 'self_type = + fun + [ BiNil _x0 -> o#_Loc_t _x0 + | BiAnd _x0 _x1 _x2 -> ((o#_Loc_t _x0)#binding _x1)#binding _x2 + | BiEq _x0 _x1 _x2 -> ((o#_Loc_t _x0)#patt _x1)#expr _x2 + | BiAnt _x0 _x1 -> (o#_Loc_t _x0)#string _x1 ]; + end; + value map_expr f = + object inherit map as super; method expr = fun x -> f (super#expr x); + end; + value map_patt f = + object inherit map as super; method patt = fun x -> f (super#patt x); + end; + value map_ctyp f = + object inherit map as super; method ctyp = fun x -> f (super#ctyp x); + end; + value map_str_item f = + object + inherit map as super; + method str_item = fun x -> f (super#str_item x); + end; + value map_sig_item f = + object + inherit map as super; + method sig_item = fun x -> f (super#sig_item x); + end; + value map_loc f = + object + inherit map as super; + method _Loc_t = fun x -> f (super#_Loc_t x); + end; end; diff --git a/camlp4/boot/camlp4boot.ml b/camlp4/boot/camlp4boot.ml index 19505718..0985599a 100644 --- a/camlp4/boot/camlp4boot.ml +++ b/camlp4/boot/camlp4boot.ml @@ -23,7 +23,7 @@ module R = struct let name = "Camlp4RevisedParserParser" let version = - "$Id: camlp4boot.ml,v 1.2 2007/02/26 16:32:47 ertai Exp $" + "$Id: Camlp4OCamlRevisedParser.ml,v 1.2.2.17 2007/05/10 14:24:22 pouillar Exp $" end module Make (Syntax : Sig.Camlp4Syntax) = struct @@ -55,7 +55,6 @@ Old (no more supported) syntax: let _ = Gram.Entry.clear a_INT64 let _ = Gram.Entry.clear a_LABEL let _ = Gram.Entry.clear a_LIDENT - let _ = Gram.Entry.clear a_LIDENT_or_operator let _ = Gram.Entry.clear a_NATIVEINT let _ = Gram.Entry.clear a_OPTLABEL let _ = Gram.Entry.clear a_STRING @@ -68,6 +67,7 @@ Old (no more supported) syntax: let _ = Gram.Entry.clear match_case_quot let _ = Gram.Entry.clear binding let _ = Gram.Entry.clear binding_quot + let _ = Gram.Entry.clear rec_binding_quot let _ = Gram.Entry.clear class_declaration let _ = Gram.Entry.clear class_description let _ = Gram.Entry.clear class_expr @@ -109,7 +109,6 @@ Old (no more supported) syntax: let _ = Gram.Entry.clear expr let _ = Gram.Entry.clear expr_eoi let _ = Gram.Entry.clear expr_quot - let _ = Gram.Entry.clear field let _ = Gram.Entry.clear field_expr let _ = Gram.Entry.clear fun_binding let _ = Gram.Entry.clear fun_def @@ -161,10 +160,8 @@ Old (no more supported) syntax: let _ = Gram.Entry.clear patt_quot let _ = Gram.Entry.clear patt_tcon let _ = Gram.Entry.clear phrase - let _ = Gram.Entry.clear pipe_ctyp let _ = Gram.Entry.clear poly_type let _ = Gram.Entry.clear row_field - let _ = Gram.Entry.clear sem_ctyp let _ = Gram.Entry.clear sem_expr let _ = Gram.Entry.clear sem_expr_for_list let _ = Gram.Entry.clear sem_patt @@ -229,8 +226,8 @@ Old (no more supported) syntax: let mkassert _loc = function | Ast.ExId (_, (Ast.IdUid (_, "False"))) -> Ast.ExAsf _loc - | (* this case take care about - the special assert false node *) + | (* this case takes care about + the special assert false node *) e -> Ast.ExAsr (_loc, e) let append_eLem el e = el @ [ e ] let mk_anti ?(c = "") n s = "\\$" ^ (n ^ (c ^ (":" ^ s))) @@ -239,6 +236,20 @@ Old (no more supported) syntax: | (Ast.ExSem (_, _, _) | Ast.ExAnt (_, _) as e) -> Ast.ExSeq (_loc, e) | e -> e + let mksequence' _loc = + function + | (Ast.ExSem (_, _, _) as e) -> Ast.ExSeq (_loc, e) + | e -> e + let module_type_app mt1 mt2 = + match (mt1, mt2) with + | (Ast.MtId (_loc, i1), Ast.MtId (_, i2)) -> + Ast.MtId (_loc, Ast.IdApp (_loc, i1, i2)) + | _ -> raise Stream.Failure + let module_type_acc mt1 mt2 = + match (mt1, mt2) with + | (Ast.MtId (_loc, i1), Ast.MtId (_, i2)) -> + Ast.MtId (_loc, Ast.IdAcc (_loc, i1, i2)) + | _ -> raise Stream.Failure let bigarray_get _loc arr arg = let coords = match arg with @@ -280,7 +291,7 @@ Old (no more supported) syntax: c1), c2), c3) - | (* | coords -> <:expr< Bigarray.Genarray.get $arr$ [| $`list:coords$ |] >> ] *) + | (* | coords -> <:expr< Bigarray.Genarray.get $arr$ [| $list:coords$ |] >> ] *) coords -> Ast.ExApp (_loc, Ast.ExApp (_loc, @@ -381,35 +392,121 @@ Old (no more supported) syntax: Ast.ExArr (_loc, coords)), newval)) | _ -> None - let choose_tvar tpl = - let abs = "abstract" in - let rec find_alpha n = - let ns = if n = 0 then "" else string_of_int n in - let s' = abs ^ ns in - let rec mem = - function - | (Ast.TyQuo (_, s) | Ast.TyQuP (_, s) | Ast.TyQuM (_, s)) :: - xs -> (s = s') || (mem xs) - | [] -> false - | _ -> assert false - in if mem tpl then find_alpha (succ n) else s' - in find_alpha 0 + let test_not_left_brace_nor_do = + Gram.Entry.of_parser "test_not_left_brace_nor_do" + (fun strm -> + match Stream.peek strm with + | Some (((KEYWORD "{" | KEYWORD "do"), _)) -> + raise Stream.Failure + | _ -> ()) let stopped_at _loc = Some (Loc.move_line 1 _loc) (* FIXME be more precise *) - (* value list1sep symb sep one cons = - let rec kont al = - parser - [ [: v = sep; a = symb; s :] -> kont (cons al (one a)) s - | [: :] -> al ] - in - parser [: a = symb; s :] -> kont (one a) s; - - value sem_expr = - list1sep expr ";" (fun x -> x) (fun e1 e2 -> <:expr< $e1$; $e2$ >>) *) + let symbolchar = + let list = + [ '!'; '$'; '%'; '&'; '*'; '+'; '-'; '.'; '/'; ':'; '<'; '='; + '>'; '?'; '@'; '^'; '|'; '~' ] in + let rec loop s i = + if i == (String.length s) + then true + else if List.mem s.[i] list then loop s (i + 1) else false + in loop + let _ = + let list = [ '!'; '?'; '~' ] in + let excl = [ "!="; "??" ] + in + Gram.Entry.setup_parser prefixop + (fun (__strm : _ Stream.t) -> + match Stream.peek __strm with + | Some (((KEYWORD x | SYMBOL x), _loc)) when + (not (List.mem x excl)) && + (((String.length x) >= 2) && + ((List.mem x.[0] list) && (symbolchar x 1))) + -> + (Stream.junk __strm; + Ast.ExId (_loc, Ast.IdLid (_loc, x))) + | _ -> raise Stream.Failure) + let _ = + let list_ok = + [ "<"; ">"; "<="; ">="; "="; "<>"; "=="; "!="; "$" ] in + let list_first_char_ok = [ '='; '<'; '>'; '|'; '&'; '$'; '!' ] in + let excl = [ "<-"; "||"; "&&" ] + in + Gram.Entry.setup_parser infixop0 + (fun (__strm : _ Stream.t) -> + match Stream.peek __strm with + | Some (((KEYWORD x | SYMBOL x), _loc)) when + (List.mem x list_ok) || + ((not (List.mem x excl)) && + (((String.length x) >= 2) && + ((List.mem x.[0] list_first_char_ok) && + (symbolchar x 1)))) + -> + (Stream.junk __strm; + Ast.ExId (_loc, Ast.IdLid (_loc, x))) + | _ -> raise Stream.Failure) + let _ = + let list = [ '@'; '^' ] + in + Gram.Entry.setup_parser infixop1 + (fun (__strm : _ Stream.t) -> + match Stream.peek __strm with + | Some (((KEYWORD x | SYMBOL x), _loc)) when + ((String.length x) >= 1) && + ((List.mem x.[0] list) && (symbolchar x 1)) + -> + (Stream.junk __strm; + Ast.ExId (_loc, Ast.IdLid (_loc, x))) + | _ -> raise Stream.Failure) + let _ = + let list = [ '+'; '-' ] + in + Gram.Entry.setup_parser infixop2 + (fun (__strm : _ Stream.t) -> + match Stream.peek __strm with + | Some (((KEYWORD x | SYMBOL x), _loc)) when + (x <> "->") && + (((String.length x) >= 1) && + ((List.mem x.[0] list) && (symbolchar x 1))) + -> + (Stream.junk __strm; + Ast.ExId (_loc, Ast.IdLid (_loc, x))) + | _ -> raise Stream.Failure) + let _ = + let list = [ '*'; '/'; '%' ] + in + Gram.Entry.setup_parser infixop3 + (fun (__strm : _ Stream.t) -> + match Stream.peek __strm with + | Some (((KEYWORD x | SYMBOL x), _loc)) when + ((String.length x) >= 1) && + ((List.mem x.[0] list) && + (((x.[0] <> '*') || + (((String.length x) < 2) || (x.[1] <> '*'))) + && (symbolchar x 1))) + -> + (Stream.junk __strm; + Ast.ExId (_loc, Ast.IdLid (_loc, x))) + | _ -> raise Stream.Failure) + let _ = + Gram.Entry.setup_parser infixop4 + (fun (__strm : _ Stream.t) -> + match Stream.peek __strm with + | Some (((KEYWORD x | SYMBOL x), _loc)) when + ((String.length x) >= 2) && + ((x.[0] == '*') && ((x.[1] == '*') && (symbolchar x 2))) + -> + (Stream.junk __strm; Ast.ExId (_loc, Ast.IdLid (_loc, x))) + | _ -> raise Stream.Failure) (* transmit the context *) let _ = Gram.Entry.setup_parser sem_expr - (let symb = Gram.parse_tokens_after_filter expr in + (let symb1 = Gram.parse_tokens_after_filter expr in + let symb (__strm : _ Stream.t) = + match Stream.peek __strm with + | Some ((ANTIQUOT ((("list" as n)), s), _loc)) -> + (Stream.junk __strm; + Ast.ExAnt (_loc, mk_anti ~c: "expr;" n s)) + | _ -> symb1 __strm in let rec kont al (__strm : _ Stream.t) = match Stream.peek __strm with | Some ((KEYWORD ";", _loc)) -> @@ -422,17 +519,14 @@ Old (no more supported) syntax: in fun (__strm : _ Stream.t) -> let a = symb __strm in kont a __strm) - (* sem_expr_for_list: - [ [ e = expr; ";"; el = SELF -> fun acc -> <:expr< [ $e$ :: $el acc$ ] >> - | e = expr -> fun acc -> <:expr< [ $e$ :: $acc$ ] >> - ] ] - ; - comma_expr: - [ [ e1 = SELF; ","; e2 = SELF -> <:expr< $e1$, $e2$ >> - | e = expr -> e ] ] - ; *) let _ = let _ = (a_CHAR : 'a_CHAR Gram.Entry.t) + and _ = (do_sequence : 'do_sequence Gram.Entry.t) + and _ = (infixop4 : 'infixop4 Gram.Entry.t) + and _ = (infixop3 : 'infixop3 Gram.Entry.t) + and _ = (infixop2 : 'infixop2 Gram.Entry.t) + and _ = (infixop1 : 'infixop1 Gram.Entry.t) + and _ = (infixop0 : 'infixop0 Gram.Entry.t) and _ = (with_constr_quot : 'with_constr_quot Gram.Entry.t) and _ = (with_constr : 'with_constr Gram.Entry.t) and _ = (value_val : 'value_val Gram.Entry.t) @@ -466,10 +560,8 @@ Old (no more supported) syntax: and _ = (sem_patt : 'sem_patt Gram.Entry.t) and _ = (sem_expr_for_list : 'sem_expr_for_list Gram.Entry.t) and _ = (sem_expr : 'sem_expr Gram.Entry.t) - and _ = (sem_ctyp : 'sem_ctyp Gram.Entry.t) and _ = (row_field : 'row_field Gram.Entry.t) and _ = (poly_type : 'poly_type Gram.Entry.t) - and _ = (pipe_ctyp : 'pipe_ctyp Gram.Entry.t) and _ = (phrase : 'phrase Gram.Entry.t) and _ = (patt_tcon : 'patt_tcon Gram.Entry.t) and _ = (patt_quot : 'patt_quot Gram.Entry.t) @@ -524,7 +616,6 @@ Old (no more supported) syntax: and _ = (fun_def : 'fun_def Gram.Entry.t) and _ = (fun_binding : 'fun_binding Gram.Entry.t) and _ = (field_expr : 'field_expr Gram.Entry.t) - and _ = (field : 'field Gram.Entry.t) and _ = (expr_quot : 'expr_quot Gram.Entry.t) and _ = (expr_eoi : 'expr_eoi Gram.Entry.t) and _ = (expr : 'expr Gram.Entry.t) @@ -590,7 +681,7 @@ Old (no more supported) syntax: and _ = (a_STRING : 'a_STRING Gram.Entry.t) and _ = (a_OPTLABEL : 'a_OPTLABEL Gram.Entry.t) and _ = (a_NATIVEINT : 'a_NATIVEINT Gram.Entry.t) - and _ = (a_LIDENT_or_operator : 'a_LIDENT_or_operator Gram.Entry.t) + and _ = (rec_binding_quot : 'rec_binding_quot Gram.Entry.t) and _ = (a_LIDENT : 'a_LIDENT Gram.Entry.t) and _ = (a_LABEL : 'a_LABEL Gram.Entry.t) and _ = (a_INT64 : 'a_INT64 Gram.Entry.t) @@ -598,40 +689,19 @@ Old (no more supported) syntax: and _ = (a_INT : 'a_INT Gram.Entry.t) and _ = (a_FLOAT : 'a_FLOAT Gram.Entry.t) in let grammar_entry_create = Gram.Entry.mk in - let (* sem_expr: - [ [ e1 = SELF; ";"; e2 = SELF -> <:expr< $e1$; $e2$ >> - | e = expr -> e ] ] - ; *) - (* | i = opt_label; "("; p = patt_tcon; ")" -> *) + let (* Here it's LABEL and not tilde_label since ~a:b is different than ~a : b *) + (* Same remark for ?a:b *) infixop5 : 'infixop5 Gram.Entry.t = + grammar_entry_create "infixop5" + and (* | i = opt_label; "("; p = patt_tcon; ")" -> *) (* <:patt< ? $i$ : ($p$) >> *) - (* <:class_type< $virtual:mv$ $lid:i$ [ $t$ ] >> *) - (* | mv = opt_virtual; i = a_LIDENT -> *) - (* Ast.CeCon (_loc, mv, Ast.IdLid (_loc, i), Ast.ONone) *) - (* <:class_type< $lid:i$ >> *) - (* [ [ "virtual"; i = a_LIDENT; "["; t = comma_type_parameter; "]" -> - <:class_type< virtual $lid:i$ [ $t$ ] >> - | "virtual"; i = a_LIDENT -> - <:class_type< virtual $lid:i$ >> - | i = a_LIDENT; "["; t = comma_type_parameter; "]" -> - <:class_type< $lid:i$ [ $t$ ] >> - | i = a_LIDENT -> <:class_type< $lid:i$ >> - ] ] - ; *) - (* "virtual"; i = a_LIDENT; "["; t = comma_type_parameter; "]" -> *) - (* <:class_expr< virtual $lid:i$ [ $t$ ] >> *) - (* | "virtual"; i = a_LIDENT -> *) - (* <:class_expr< virtual $lid:i$ >> *) (* | *) - (* <:class_expr< $virtual:mv$ $lid:i$ [ $t$ ] >> *) - (* <:class_expr< $lid:i$ [ $t$ ] >> *) - (* | mv = opt_virtual; i = a_LIDENT -> *) - (* Ast.CeCon (_loc, mv, Ast.IdLid (_loc, i), Ast.ONone) *) - (* <:class_expr< $lid:i$ >> *) (* | i = opt_label; "("; p = ipatt_tcon; ")" -> <:patt< ? $i$ : ($p$) >> | i = opt_label; "("; p = ipatt_tcon; "="; e = expr; ")" -> <:patt< ? $i$ : ($p$ = $e$) >> *) string_list : 'string_list Gram.Entry.t = grammar_entry_create "string_list" + and infixop6 : 'infixop6 Gram.Entry.t = + grammar_entry_create "infixop6" in (Gram.extend (module_expr : 'module_expr Gram.Entry.t) ((fun () -> @@ -685,6 +755,18 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (i : 'module_longident) (_loc : Loc.t) -> (Ast.MeId (_loc, i) : 'module_expr)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.module_expr_tag : + 'module_expr) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "mexp" | "anti" | "list"), @@ -712,6 +794,18 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (e : 'expr) (_loc : Loc.t) -> (Ast.StExp (_loc, e) : 'str_item)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.str_item_tag : + 'str_item) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "stri" | "anti" | "list"), @@ -914,6 +1008,18 @@ Old (no more supported) syntax: (m : 'a_UIDENT) (_loc : Loc.t) -> (Ast.MbColEq (_loc, m, mt, me) : 'module_binding)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.module_binding_tag : + 'module_binding) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT ("", _) -> true @@ -997,6 +1103,18 @@ Old (no more supported) syntax: (fun (wc : 'with_constr) _ (mt : 'module_type) (_loc : Loc.t) -> (Ast.MtWit (_loc, mt, wc) : 'module_type)))) ]); + (None, None, + [ ([ Gram.Sself; Gram.Sself ], + (Gram.Action.mk + (fun (mt2 : 'module_type) (mt1 : 'module_type) + (_loc : Loc.t) -> + (module_type_app mt1 mt2 : 'module_type)))) ]); + (None, None, + [ ([ Gram.Sself; Gram.Skeyword "."; Gram.Sself ], + (Gram.Action.mk + (fun (mt2 : 'module_type) _ (mt1 : 'module_type) + (_loc : Loc.t) -> + (module_type_acc mt1 mt2 : 'module_type)))) ]); (None, None, [ ([ Gram.Skeyword "sig"; Gram.Snterm @@ -1026,6 +1144,18 @@ Old (no more supported) syntax: (fun (i : 'module_longident_with_app) (_loc : Loc.t) -> (Ast.MtId (_loc, i) : 'module_type)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.module_type_tag : + 'module_type) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "mtyp" | "anti" | "list"), @@ -1070,13 +1200,12 @@ Old (no more supported) syntax: (value_val : 'value_val Gram.Entry.t)); Gram.Snterm (Gram.Entry.obj - (a_LIDENT_or_operator : - 'a_LIDENT_or_operator Gram.Entry.t)); + (a_LIDENT : 'a_LIDENT Gram.Entry.t)); Gram.Skeyword ":"; Gram.Snterm (Gram.Entry.obj (ctyp : 'ctyp Gram.Entry.t)) ], (Gram.Action.mk - (fun (t : 'ctyp) _ (i : 'a_LIDENT_or_operator) _ + (fun (t : 'ctyp) _ (i : 'a_LIDENT) _ (_loc : Loc.t) -> (Ast.SgVal (_loc, i, t) : 'sig_item)))); ([ Gram.Skeyword "type"; @@ -1095,6 +1224,14 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (i : 'module_longident) _ (_loc : Loc.t) -> (Ast.SgOpn (_loc, i) : 'sig_item)))); + ([ Gram.Skeyword "module"; Gram.Skeyword "type"; + Gram.Snterm + (Gram.Entry.obj + (a_UIDENT : 'a_UIDENT Gram.Entry.t)) ], + (Gram.Action.mk + (fun (i : 'a_UIDENT) _ _ (_loc : Loc.t) -> + (Ast.SgMty (_loc, i, Ast.MtNil _loc) : + 'sig_item)))); ([ Gram.Skeyword "module"; Gram.Skeyword "type"; Gram.Snterm (Gram.Entry.obj @@ -1159,6 +1296,18 @@ Old (no more supported) syntax: (fun (t : 'constructor_declaration) _ (_loc : Loc.t) -> (Ast.SgExc (_loc, t) : 'sig_item)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.sig_item_tag : + 'sig_item) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "sigi" | "anti" | "list"), @@ -1223,6 +1372,18 @@ Old (no more supported) syntax: (_loc : Loc.t) -> (Ast.MbCol (_loc, m, mt) : 'module_rec_declaration)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.module_binding_tag : + 'module_rec_declaration) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT @@ -1306,6 +1467,18 @@ Old (no more supported) syntax: t) : 'with_constr) | _ -> assert false))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.with_constr_tag : + 'with_constr) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT @@ -1349,44 +1522,51 @@ Old (no more supported) syntax: (fun _ (cst : 'class_structure) (csp : 'opt_class_self_patt) _ (_loc : Loc.t) -> (Ast.ExObj (_loc, csp, cst) : 'expr)))); - ([ Gram.Skeyword "while"; Gram.Sself; - Gram.Skeyword "do"; Gram.Skeyword "{"; + ([ Gram.Skeyword "while"; Gram.Snterm (Gram.Entry.obj (sequence : 'sequence Gram.Entry.t)); - Gram.Skeyword "}" ], + Gram.Skeyword "do"; + Gram.Snterm + (Gram.Entry.obj + (do_sequence : 'do_sequence Gram.Entry.t)) ], (Gram.Action.mk - (fun _ (seq : 'sequence) _ _ (e : 'expr) _ + (fun (seq : 'do_sequence) _ (e : 'sequence) _ (_loc : Loc.t) -> - (Ast.ExWhi (_loc, e, seq) : 'expr)))); + (Ast.ExWhi (_loc, mksequence' _loc e, seq) : + 'expr)))); ([ Gram.Skeyword "for"; Gram.Snterm (Gram.Entry.obj (a_LIDENT : 'a_LIDENT Gram.Entry.t)); - Gram.Skeyword "="; Gram.Sself; + Gram.Skeyword "="; + Gram.Snterm + (Gram.Entry.obj + (sequence : 'sequence Gram.Entry.t)); Gram.Snterm (Gram.Entry.obj (direction_flag : 'direction_flag Gram.Entry.t)); - Gram.Sself; Gram.Skeyword "do"; - Gram.Skeyword "{"; Gram.Snterm (Gram.Entry.obj (sequence : 'sequence Gram.Entry.t)); - Gram.Skeyword "}" ], + Gram.Skeyword "do"; + Gram.Snterm + (Gram.Entry.obj + (do_sequence : 'do_sequence Gram.Entry.t)) ], (Gram.Action.mk - (fun _ (seq : 'sequence) _ _ (e2 : 'expr) - (df : 'direction_flag) (e1 : 'expr) _ + (fun (seq : 'do_sequence) _ (e2 : 'sequence) + (df : 'direction_flag) (e1 : 'sequence) _ (i : 'a_LIDENT) _ (_loc : Loc.t) -> - (Ast.ExFor (_loc, i, e1, e2, df, seq) : + (Ast.ExFor (_loc, i, mksequence' _loc e1, + mksequence' _loc e2, df, seq) : 'expr)))); - ([ Gram.Skeyword "do"; Gram.Skeyword "{"; + ([ Gram.Skeyword "do"; Gram.Snterm (Gram.Entry.obj - (sequence : 'sequence Gram.Entry.t)); - Gram.Skeyword "}" ], + (do_sequence : 'do_sequence Gram.Entry.t)) ], (Gram.Action.mk - (fun _ (seq : 'sequence) _ _ (_loc : Loc.t) -> + (fun (seq : 'do_sequence) _ (_loc : Loc.t) -> (mksequence _loc seq : 'expr)))); ([ Gram.Skeyword "if"; Gram.Sself; Gram.Skeyword "then"; Gram.Sself; @@ -1395,48 +1575,32 @@ Old (no more supported) syntax: (fun (e3 : 'expr) _ (e2 : 'expr) _ (e1 : 'expr) _ (_loc : Loc.t) -> (Ast.ExIfe (_loc, e1, e2, e3) : 'expr)))); - ([ Gram.Skeyword "try"; Gram.Sself; + ([ Gram.Skeyword "try"; + Gram.Snterm + (Gram.Entry.obj + (sequence : 'sequence Gram.Entry.t)); Gram.Skeyword "with"; Gram.Snterm - (Gram.Entry.obj (ipatt : 'ipatt Gram.Entry.t)); - Gram.Skeyword "->"; Gram.Sself ], + (Gram.Entry.obj + (match_case : 'match_case Gram.Entry.t)) ], (Gram.Action.mk - (fun (e2 : 'expr) _ (p : 'ipatt) _ (e1 : 'expr) - _ (_loc : Loc.t) -> - (Ast.ExTry (_loc, e1, - Ast.McArr (_loc, p, Ast.ExNil _loc, e2)) : + (fun (a : 'match_case) _ (e : 'sequence) _ + (_loc : Loc.t) -> + (Ast.ExTry (_loc, mksequence' _loc e, a) : 'expr)))); - ([ Gram.Skeyword "try"; Gram.Sself; - Gram.Skeyword "with"; Gram.Skeyword "["; + ([ Gram.Skeyword "match"; Gram.Snterm (Gram.Entry.obj - (match_case : 'match_case Gram.Entry.t)); - Gram.Skeyword "]" ], - (Gram.Action.mk - (fun _ (a : 'match_case) _ _ (e : 'expr) _ - (_loc : Loc.t) -> - (Ast.ExTry (_loc, e, a) : 'expr)))); - ([ Gram.Skeyword "match"; Gram.Sself; + (sequence : 'sequence Gram.Entry.t)); Gram.Skeyword "with"; - Gram.Snterm - (Gram.Entry.obj (ipatt : 'ipatt Gram.Entry.t)); - Gram.Skeyword "->"; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (p : 'ipatt) _ (e1 : 'expr) - _ (_loc : Loc.t) -> - (Ast.ExMat (_loc, e1, - Ast.McArr (_loc, p, Ast.ExNil _loc, e2)) : - 'expr)))); - ([ Gram.Skeyword "match"; Gram.Sself; - Gram.Skeyword "with"; Gram.Skeyword "["; Gram.Snterm (Gram.Entry.obj - (match_case : 'match_case Gram.Entry.t)); - Gram.Skeyword "]" ], + (match_case : 'match_case Gram.Entry.t)) ], (Gram.Action.mk - (fun _ (a : 'match_case) _ _ (e : 'expr) _ + (fun (a : 'match_case) _ (e : 'sequence) _ (_loc : Loc.t) -> - (Ast.ExMat (_loc, e, a) : 'expr)))); + (Ast.ExMat (_loc, mksequence' _loc e, a) : + 'expr)))); ([ Gram.Skeyword "fun"; Gram.Snterm (Gram.Entry.obj @@ -1452,13 +1616,17 @@ Old (no more supported) syntax: Ast.McArr (_loc, p, Ast.ExNil _loc, e)) : 'expr)))); ([ Gram.Skeyword "fun"; Gram.Skeyword "["; - Gram.Snterm - (Gram.Entry.obj - (match_case : 'match_case Gram.Entry.t)); + Gram.Slist0sep + (Gram.Snterm + (Gram.Entry.obj + (match_case0 : 'match_case0 Gram.Entry.t)), + Gram.Skeyword "|"); Gram.Skeyword "]" ], (Gram.Action.mk - (fun _ (a : 'match_case) _ _ (_loc : Loc.t) -> - (Ast.ExFun (_loc, a) : 'expr)))); + (fun _ (a : 'match_case0 list) _ _ + (_loc : Loc.t) -> + (Ast.ExFun (_loc, Ast.mcOr_of_list a) : + 'expr)))); ([ Gram.Skeyword "let"; Gram.Skeyword "module"; Gram.Snterm (Gram.Entry.obj @@ -1507,301 +1675,158 @@ Old (no more supported) syntax: | Some e -> e | None -> Ast.ExAss (_loc, e1, e2) : 'expr)))) ]); ((Some "||"), (Some Camlp4.Sig.Grammar.RightA), - [ ([ Gram.Sself; Gram.Skeyword "||"; Gram.Sself ], + [ ([ Gram.Sself; + Gram.Snterm + (Gram.Entry.obj + (infixop6 : 'infixop6 Gram.Entry.t)); + Gram.Sself ], (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "||")), - e1), + (fun (e2 : 'expr) (op : 'infixop6) (e1 : 'expr) + (_loc : Loc.t) -> + (Ast.ExApp (_loc, Ast.ExApp (_loc, op, e1), e2) : 'expr)))) ]); ((Some "&&"), (Some Camlp4.Sig.Grammar.RightA), - [ ([ Gram.Sself; Gram.Skeyword "&&"; Gram.Sself ], + [ ([ Gram.Sself; + Gram.Snterm + (Gram.Entry.obj + (infixop5 : 'infixop5 Gram.Entry.t)); + Gram.Sself ], (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "&&")), - e1), + (fun (e2 : 'expr) (op : 'infixop5) (e1 : 'expr) + (_loc : Loc.t) -> + (Ast.ExApp (_loc, Ast.ExApp (_loc, op, e1), e2) : 'expr)))) ]); ((Some "<"), (Some Camlp4.Sig.Grammar.LeftA), - [ ([ Gram.Sself; Gram.Skeyword "!="; Gram.Sself ], + [ ([ Gram.Sself; + Gram.Snterm + (Gram.Entry.obj + (infixop0 : 'infixop0 Gram.Entry.t)); + Gram.Sself ], (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "!=")), - e1), + (fun (e2 : 'expr) (op : 'infixop0) (e1 : 'expr) + (_loc : Loc.t) -> + (Ast.ExApp (_loc, Ast.ExApp (_loc, op, e1), e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "=="; Gram.Sself ], + 'expr)))) ]); + ((Some "^"), (Some Camlp4.Sig.Grammar.RightA), + [ ([ Gram.Sself; + Gram.Snterm + (Gram.Entry.obj + (infixop1 : 'infixop1 Gram.Entry.t)); + Gram.Sself ], (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "==")), - e1), + (fun (e2 : 'expr) (op : 'infixop1) (e1 : 'expr) + (_loc : Loc.t) -> + (Ast.ExApp (_loc, Ast.ExApp (_loc, op, e1), e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "<>"; Gram.Sself ], + 'expr)))) ]); + ((Some "+"), (Some Camlp4.Sig.Grammar.LeftA), + [ ([ Gram.Sself; + Gram.Snterm + (Gram.Entry.obj + (infixop2 : 'infixop2 Gram.Entry.t)); + Gram.Sself ], (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "<>")), - e1), + (fun (e2 : 'expr) (op : 'infixop2) (e1 : 'expr) + (_loc : Loc.t) -> + (Ast.ExApp (_loc, Ast.ExApp (_loc, op, e1), e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "="; Gram.Sself ], + 'expr)))) ]); + ((Some "*"), (Some Camlp4.Sig.Grammar.LeftA), + [ ([ Gram.Sself; + Gram.Snterm + (Gram.Entry.obj + (infixop3 : 'infixop3 Gram.Entry.t)); + Gram.Sself ], (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "=")), - e1), + (fun (e2 : 'expr) (op : 'infixop3) (e1 : 'expr) + (_loc : Loc.t) -> + (Ast.ExApp (_loc, Ast.ExApp (_loc, op, e1), e2) : 'expr)))); - ([ Gram.Sself; Gram.Skeyword ">="; Gram.Sself ], + ([ Gram.Sself; Gram.Skeyword "mod"; Gram.Sself ], (Gram.Action.mk (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) -> (Ast.ExApp (_loc, Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, ">=")), + Ast.ExId (_loc, Ast.IdLid (_loc, "mod")), e1), e2) : 'expr)))); - ([ Gram.Sself; Gram.Skeyword "<="; Gram.Sself ], + ([ Gram.Sself; Gram.Skeyword "lxor"; Gram.Sself ], (Gram.Action.mk (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) -> (Ast.ExApp (_loc, Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "<=")), + Ast.ExId (_loc, + Ast.IdLid (_loc, "lxor")), e1), e2) : 'expr)))); - ([ Gram.Sself; Gram.Skeyword ">"; Gram.Sself ], + ([ Gram.Sself; Gram.Skeyword "lor"; Gram.Sself ], (Gram.Action.mk (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) -> (Ast.ExApp (_loc, Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, ">")), + Ast.ExId (_loc, Ast.IdLid (_loc, "lor")), e1), e2) : 'expr)))); - ([ Gram.Sself; Gram.Skeyword "<"; Gram.Sself ], + ([ Gram.Sself; Gram.Skeyword "land"; Gram.Sself ], (Gram.Action.mk (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) -> (Ast.ExApp (_loc, Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "<")), + Ast.ExId (_loc, + Ast.IdLid (_loc, "land")), e1), e2) : 'expr)))) ]); - ((Some "^"), (Some Camlp4.Sig.Grammar.RightA), - [ ([ Gram.Sself; Gram.Skeyword "@"; Gram.Sself ], + ((Some "**"), (Some Camlp4.Sig.Grammar.RightA), + [ ([ Gram.Sself; + Gram.Snterm + (Gram.Entry.obj + (infixop4 : 'infixop4 Gram.Entry.t)); + Gram.Sself ], (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "@")), - e1), + (fun (e2 : 'expr) (op : 'infixop4) (e1 : 'expr) + (_loc : Loc.t) -> + (Ast.ExApp (_loc, Ast.ExApp (_loc, op, e1), e2) : 'expr)))); - ([ Gram.Sself; Gram.Skeyword "^^"; Gram.Sself ], + ([ Gram.Sself; Gram.Skeyword "lsr"; Gram.Sself ], (Gram.Action.mk (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) -> (Ast.ExApp (_loc, Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "^^")), + Ast.ExId (_loc, Ast.IdLid (_loc, "lsr")), e1), e2) : 'expr)))); - ([ Gram.Sself; Gram.Skeyword "^"; Gram.Sself ], + ([ Gram.Sself; Gram.Skeyword "lsl"; Gram.Sself ], (Gram.Action.mk (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) -> (Ast.ExApp (_loc, Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "^")), + Ast.ExId (_loc, Ast.IdLid (_loc, "lsl")), e1), e2) : - 'expr)))) ]); - ((Some "+"), (Some Camlp4.Sig.Grammar.LeftA), - [ ([ Gram.Sself; Gram.Skeyword "-."; Gram.Sself ], + 'expr)))); + ([ Gram.Sself; Gram.Skeyword "asr"; Gram.Sself ], (Gram.Action.mk (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) -> (Ast.ExApp (_loc, Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "-.")), - e1), - e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "+."; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "+.")), - e1), - e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "-"; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "-")), - e1), - e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "+"; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "+")), - e1), - e2) : - 'expr)))) ]); - ((Some "*"), (Some Camlp4.Sig.Grammar.LeftA), - [ ([ Gram.Sself; Gram.Skeyword "mod"; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "mod")), - e1), - e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "lxor"; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdLid (_loc, "lxor")), - e1), - e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "lor"; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "lor")), - e1), - e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "land"; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, - Ast.IdLid (_loc, "land")), - e1), - e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "/."; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "/.")), - e1), - e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "*."; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "*.")), - e1), - e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "/"; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "/")), - e1), - e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "*"; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "*")), - e1), - e2) : - 'expr)))) ]); - ((Some "**"), (Some Camlp4.Sig.Grammar.RightA), - [ ([ Gram.Sself; Gram.Skeyword "lsr"; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "lsr")), - e1), - e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "lsl"; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "lsl")), - e1), - e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "asr"; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "asr")), - e1), - e2) : - 'expr)))); - ([ Gram.Sself; Gram.Skeyword "**"; Gram.Sself ], - (Gram.Action.mk - (fun (e2 : 'expr) _ (e1 : 'expr) (_loc : Loc.t) - -> - (Ast.ExApp (_loc, - Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "**")), + Ast.ExId (_loc, Ast.IdLid (_loc, "asr")), e1), e2) : 'expr)))) ]); @@ -1863,13 +1888,6 @@ Old (no more supported) syntax: | OPTLABEL i -> (Ast.ExOlb (_loc, i, e) : 'expr) | _ -> assert false))); - ([ Gram.Skeyword "~"; - Gram.Snterm - (Gram.Entry.obj - (a_LIDENT : 'a_LIDENT Gram.Entry.t)) ], - (Gram.Action.mk - (fun (i : 'a_LIDENT) _ (_loc : Loc.t) -> - (Ast.ExLab (_loc, i, Ast.ExNil _loc) : 'expr)))); ([ Gram.Stoken (((function | LABEL _ -> true | _ -> false), "LABEL _")); @@ -1880,6 +1898,13 @@ Old (no more supported) syntax: match __camlp4_0 with | LABEL i -> (Ast.ExLab (_loc, i, e) : 'expr) | _ -> assert false))); + ([ Gram.Skeyword "~"; + Gram.Snterm + (Gram.Entry.obj + (a_LIDENT : 'a_LIDENT Gram.Entry.t)) ], + (Gram.Action.mk + (fun (i : 'a_LIDENT) _ (_loc : Loc.t) -> + (Ast.ExLab (_loc, i, Ast.ExNil _loc) : 'expr)))); ([ Gram.Skeyword "~"; Gram.Snterm (Gram.Entry.obj @@ -1922,22 +1947,34 @@ Old (no more supported) syntax: (_loc : Loc.t) -> (Ast.ExAre (_loc, e1, e2) : 'expr)))) ]); ((Some "~-"), (Some Camlp4.Sig.Grammar.NonA), - [ ([ Gram.Skeyword "~-."; Gram.Sself ], + [ ([ Gram.Snterm + (Gram.Entry.obj + (prefixop : 'prefixop Gram.Entry.t)); + Gram.Sself ], (Gram.Action.mk - (fun (e : 'expr) _ (_loc : Loc.t) -> - (Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "~-.")), - e) : - 'expr)))); - ([ Gram.Skeyword "~-"; Gram.Sself ], + (fun (e : 'expr) (f : 'prefixop) (_loc : Loc.t) + -> (Ast.ExApp (_loc, f, e) : 'expr)))); + ([ Gram.Skeyword "!"; Gram.Sself ], (Gram.Action.mk (fun (e : 'expr) _ (_loc : Loc.t) -> - (Ast.ExApp (_loc, - Ast.ExId (_loc, Ast.IdLid (_loc, "~-")), - e) : + (Ast.ExAcc (_loc, e, + Ast.ExId (_loc, Ast.IdLid (_loc, "val"))) : 'expr)))) ]); ((Some "simple"), None, - [ ([ Gram.Skeyword "("; Gram.Sself; Gram.Skeyword ")" ], + [ ([ Gram.Skeyword "begin"; Gram.Skeyword "end" ], + (Gram.Action.mk + (fun _ _ (_loc : Loc.t) -> + (Ast.ExId (_loc, Ast.IdUid (_loc, "()")) : + 'expr)))); + ([ Gram.Skeyword "begin"; + Gram.Snterm + (Gram.Entry.obj + (sequence : 'sequence Gram.Entry.t)); + Gram.Skeyword "end" ], + (Gram.Action.mk + (fun _ (seq : 'sequence) _ (_loc : Loc.t) -> + (mksequence _loc seq : 'expr)))); + ([ Gram.Skeyword "("; Gram.Sself; Gram.Skeyword ")" ], (Gram.Action.mk (fun _ (e : 'expr) _ (_loc : Loc.t) -> (e : 'expr)))); @@ -1962,6 +1999,16 @@ Old (no more supported) syntax: (fun _ (t2 : 'ctyp) _ (t : 'ctyp) _ (e : 'expr) _ (_loc : Loc.t) -> (Ast.ExCoe (_loc, e, t, t2) : 'expr)))); + ([ Gram.Skeyword "("; Gram.Sself; Gram.Skeyword ";"; + Gram.Snterm + (Gram.Entry.obj + (sequence : 'sequence Gram.Entry.t)); + Gram.Skeyword ")" ], + (Gram.Action.mk + (fun _ (seq : 'sequence) _ (e : 'expr) _ + (_loc : Loc.t) -> + (mksequence _loc (Ast.ExSem (_loc, e, seq)) : + 'expr)))); ([ Gram.Skeyword "("; Gram.Sself; Gram.Skeyword ","; Gram.Snterm (Gram.Entry.obj @@ -1996,7 +2043,7 @@ Old (no more supported) syntax: ([ Gram.Skeyword "{<"; Gram.Skeyword ">}" ], (Gram.Action.mk (fun _ _ (_loc : Loc.t) -> - (Ast.ExOvr (_loc, Ast.BiNil _loc) : 'expr)))); + (Ast.ExOvr (_loc, Ast.RbNil _loc) : 'expr)))); ([ Gram.Skeyword "{"; Gram.Skeyword "("; Gram.Sself; Gram.Skeyword ")"; Gram.Skeyword "with"; Gram.Snterm @@ -2109,6 +2156,21 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (s : 'a_INT) (_loc : Loc.t) -> (Ast.ExInt (_loc, s) : 'expr)))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("seq", _) -> true + | _ -> false), + "ANTIQUOT (\"seq\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("seq" as n)), s) -> + (Ast.ExSeq (_loc, + Ast.ExAnt (_loc, + mk_anti ~c: "expr" n s)) : + 'expr) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT ("tup", _) -> true @@ -2124,6 +2186,18 @@ Old (no more supported) syntax: mk_anti ~c: "expr" n s)) : 'expr) | _ -> assert false))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("`bool", _) -> true + | _ -> false), + "ANTIQUOT (\"`bool\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("`bool" as n)), s) -> + (Ast.ExAnt (_loc, mk_anti n s) : 'expr) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("exp" | "" | "anti"), _) -> @@ -2147,11 +2221,71 @@ Old (no more supported) syntax: -> match __camlp4_0 with | QUOTATION x -> - (Quotation.expand_expr - (Gram.parse_string expr) _loc x : + (Quotation.expand _loc x Quotation. + DynAst.expr_tag : 'expr) | _ -> assert false))) ]) ])) ()); + Gram.extend (do_sequence : 'do_sequence Gram.Entry.t) + ((fun () -> + (None, + [ (None, None, + [ ([ Gram.Snterm + (Gram.Entry.obj + (test_not_left_brace_nor_do : + 'test_not_left_brace_nor_do Gram.Entry.t)); + Gram.Snterm + (Gram.Entry.obj + (sequence : 'sequence Gram.Entry.t)); + Gram.Skeyword "done" ], + (Gram.Action.mk + (fun _ (seq : 'sequence) _ (_loc : Loc.t) -> + (seq : 'do_sequence)))); + ([ Gram.Skeyword "{"; + Gram.Snterm + (Gram.Entry.obj + (sequence : 'sequence Gram.Entry.t)); + Gram.Skeyword "}" ], + (Gram.Action.mk + (fun _ (seq : 'sequence) _ (_loc : Loc.t) -> + (seq : 'do_sequence)))) ]) ])) + ()); + Gram.extend (infixop5 : 'infixop5 Gram.Entry.t) + ((fun () -> + (None, + [ (None, None, + [ ([ Gram.srules infixop5 + [ ([ Gram.Skeyword "&&" ], + (Gram.Action.mk + (fun (x : Gram.Token.t) (_loc : Loc.t) -> + (Token.extract_string x : 'e__1)))); + ([ Gram.Skeyword "&" ], + (Gram.Action.mk + (fun (x : Gram.Token.t) (_loc : Loc.t) -> + (Token.extract_string x : 'e__1)))) ] ], + (Gram.Action.mk + (fun (x : 'e__1) (_loc : Loc.t) -> + (Ast.ExId (_loc, Ast.IdLid (_loc, x)) : + 'infixop5)))) ]) ])) + ()); + Gram.extend (infixop6 : 'infixop6 Gram.Entry.t) + ((fun () -> + (None, + [ (None, None, + [ ([ Gram.srules infixop6 + [ ([ Gram.Skeyword "||" ], + (Gram.Action.mk + (fun (x : Gram.Token.t) (_loc : Loc.t) -> + (Token.extract_string x : 'e__2)))); + ([ Gram.Skeyword "or" ], + (Gram.Action.mk + (fun (x : Gram.Token.t) (_loc : Loc.t) -> + (Token.extract_string x : 'e__2)))) ] ], + (Gram.Action.mk + (fun (x : 'e__2) (_loc : Loc.t) -> + (Ast.ExId (_loc, Ast.IdLid (_loc, x)) : + 'infixop6)))) ]) ])) + ()); Gram.extend (sem_expr_for_list : 'sem_expr_for_list Gram.Entry.t) ((fun () -> @@ -2193,6 +2327,20 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (e : 'expr) (_loc : Loc.t) -> (e : 'comma_expr)))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("list", _) -> true + | _ -> false), + "ANTIQUOT (\"list\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("list" as n)), s) -> + (Ast.ExAnt (_loc, + mk_anti ~c: "expr," n s) : + 'comma_expr) + | _ -> assert false))); ([ Gram.Sself; Gram.Skeyword ","; Gram.Sself ], (Gram.Action.mk (fun (e2 : 'comma_expr) _ (e1 : 'comma_expr) @@ -2229,6 +2377,20 @@ Old (no more supported) syntax: (fun (el : 'sequence) _ (e : 'expr) (_loc : Loc.t) -> (Ast.ExSem (_loc, e, el) : 'sequence)))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("list", _) -> true + | _ -> false), + "ANTIQUOT (\"list\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("list" as n)), s) -> + (Ast.ExAnt (_loc, + mk_anti ~c: "expr;" n s) : + 'sequence) + | _ -> assert false))); ([ Gram.Skeyword "let"; Gram.Snterm (Gram.Entry.obj @@ -2240,11 +2402,11 @@ Old (no more supported) syntax: [ ([ Gram.Skeyword ";" ], (Gram.Action.mk (fun (x : Gram.Token.t) (_loc : Loc.t) -> - (Token.extract_string x : 'e__1)))); + (Token.extract_string x : 'e__3)))); ([ Gram.Skeyword "in" ], (Gram.Action.mk (fun (x : Gram.Token.t) (_loc : Loc.t) -> - (Token.extract_string x : 'e__1)))) ]; + (Token.extract_string x : 'e__3)))) ]; Gram.Sself ], (Gram.Action.mk (fun (el : 'sequence) _ (bi : 'binding) @@ -2376,14 +2538,26 @@ Old (no more supported) syntax: ((fun () -> (None, [ (None, None, - [ ([ Gram.Slist0sep + [ ([ Gram.Snterm + (Gram.Entry.obj (ipatt : 'ipatt Gram.Entry.t)); + Gram.Skeyword "->"; + Gram.Snterm + (Gram.Entry.obj (expr : 'expr Gram.Entry.t)) ], + (Gram.Action.mk + (fun (e : 'expr) _ (p : 'ipatt) (_loc : Loc.t) + -> + (Ast.McArr (_loc, p, Ast.ExNil _loc, e) : + 'match_case)))); + ([ Gram.Skeyword "["; + Gram.Slist0sep (Gram.Snterm (Gram.Entry.obj (match_case0 : 'match_case0 Gram.Entry.t)), - Gram.Skeyword "|") ], + Gram.Skeyword "|"); + Gram.Skeyword "]" ], (Gram.Action.mk - (fun (l : 'match_case0 list) (_loc : Loc.t) -> - (Ast.mcOr_of_list l : 'match_case)))) ]) ])) + (fun _ (l : 'match_case0 list) _ (_loc : Loc.t) + -> (Ast.mcOr_of_list l : 'match_case)))) ]) ])) ()); Gram.extend (match_case0 : 'match_case0 Gram.Entry.t) ((fun () -> @@ -2514,7 +2688,7 @@ Old (no more supported) syntax: Gram.extend (label_expr : 'label_expr Gram.Entry.t) ((fun () -> (None, - [ (None, (Some Camlp4.Sig.Grammar.LeftA), + [ (None, None, [ ([ Gram.Snterm (Gram.Entry.obj (label_longident : @@ -2523,10 +2697,9 @@ Old (no more supported) syntax: (Gram.Entry.obj (fun_binding : 'fun_binding Gram.Entry.t)) ], (Gram.Action.mk - (fun (e : 'fun_binding) (p : 'label_longident) + (fun (e : 'fun_binding) (i : 'label_longident) (_loc : Loc.t) -> - (Ast.BiEq (_loc, Ast.PaId (_loc, p), e) : - 'label_expr)))); + (Ast.RbEq (_loc, i, e) : 'label_expr)))); ([ Gram.Stoken (((function | ANTIQUOT ("list", _) -> true @@ -2537,31 +2710,62 @@ Old (no more supported) syntax: -> match __camlp4_0 with | ANTIQUOT ((("list" as n)), s) -> - (Ast.BiAnt (_loc, - mk_anti ~c: "binding;" n s) : + (Ast.RbAnt (_loc, + mk_anti ~c: "rec_binding" n s) : 'label_expr) | _ -> assert false))); ([ Gram.Stoken (((function - | ANTIQUOT (("" | "binding" | "anti"), _) -> - true + | ANTIQUOT (("" | "anti"), _) -> true | _ -> false), - "ANTIQUOT ((\"\" | \"binding\" | \"anti\"), _)")) ], + "ANTIQUOT ((\"\" | \"anti\"), _)")); + Gram.Skeyword "="; + Gram.Snterm + (Gram.Entry.obj (expr : 'expr Gram.Entry.t)) ], + (Gram.Action.mk + (fun (e : 'expr) _ (__camlp4_0 : Gram.Token.t) + (_loc : Loc.t) -> + match __camlp4_0 with + | ANTIQUOT ((("" | "anti" as n)), s) -> + (Ast.RbEq (_loc, + Ast.IdAnt (_loc, + mk_anti ~c: "ident" n s), + e) : + 'label_expr) + | _ -> assert false))); + ([ Gram.Stoken + (((function + | ANTIQUOT (("" | "anti"), _) -> true + | _ -> false), + "ANTIQUOT ((\"\" | \"anti\"), _)")) ], (Gram.Action.mk (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> match __camlp4_0 with - | ANTIQUOT ((("" | "binding" | "anti" as n)), - s) -> - (Ast.BiAnt (_loc, - mk_anti ~c: "binding" n s) : + | ANTIQUOT ((("" | "anti" as n)), s) -> + (Ast.RbAnt (_loc, + mk_anti ~c: "rec_binding" n s) : + 'label_expr) + | _ -> assert false))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("rec_binding", _) -> true + | _ -> false), + "ANTIQUOT (\"rec_binding\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("rec_binding" as n)), s) -> + (Ast.RbAnt (_loc, + mk_anti ~c: "rec_binding" n s) : 'label_expr) | _ -> assert false))); ([ Gram.Sself; Gram.Skeyword ";"; Gram.Sself ], (Gram.Action.mk (fun (b2 : 'label_expr) _ (b1 : 'label_expr) (_loc : Loc.t) -> - (Ast.BiSem (_loc, b1, b2) : 'label_expr)))) ]) ])) + (Ast.RbSem (_loc, b1, b2) : 'label_expr)))) ]) ])) ()); Gram.extend (fun_def : 'fun_def Gram.Entry.t) ((fun () -> @@ -2765,8 +2969,8 @@ Old (no more supported) syntax: -> match __camlp4_0 with | QUOTATION x -> - (Quotation.expand_patt - (Gram.parse_string patt) _loc x : + (Quotation.expand _loc x Quotation. + DynAst.patt_tag : 'patt) | _ -> assert false))); ([ Gram.Skeyword "_" ], @@ -2973,6 +3177,20 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (p : 'patt) (_loc : Loc.t) -> (p : 'comma_patt)))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("list", _) -> true + | _ -> false), + "ANTIQUOT (\"list\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("list" as n)), s) -> + (Ast.PaAnt (_loc, + mk_anti ~c: "patt," n s) : + 'comma_patt) + | _ -> assert false))); ([ Gram.Sself; Gram.Skeyword ","; Gram.Sself ], (Gram.Action.mk (fun (p2 : 'comma_patt) _ (p1 : 'comma_patt) @@ -2988,6 +3206,20 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (p : 'patt) (_loc : Loc.t) -> (p : 'sem_patt)))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("list", _) -> true + | _ -> false), + "ANTIQUOT (\"list\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("list" as n)), s) -> + (Ast.PaAnt (_loc, + mk_anti ~c: "patt;" n s) : + 'sem_patt) + | _ -> assert false))); ([ Gram.Sself; Gram.Skeyword ";"; Gram.Sself ], (Gram.Action.mk (fun (p2 : 'sem_patt) _ (p1 : 'sem_patt) @@ -3040,8 +3272,7 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (p : 'patt) _ (i : 'label_longident) (_loc : Loc.t) -> - (Ast.PaEq (_loc, Ast.PaId (_loc, i), p) : - 'label_patt)))); + (Ast.PaEq (_loc, i, p) : 'label_patt)))); ([ Gram.Stoken (((function | ANTIQUOT ("list", _) -> true @@ -3056,6 +3287,18 @@ Old (no more supported) syntax: mk_anti ~c: "patt;" n s) : 'label_patt) | _ -> assert false))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.patt_tag : + 'label_patt) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "pat" | "anti"), _) -> @@ -3125,6 +3368,18 @@ Old (no more supported) syntax: (fun _ _ (_loc : Loc.t) -> (Ast.PaId (_loc, Ast.IdUid (_loc, "()")) : 'ipatt)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.patt_tag : + 'ipatt) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT ("tup", _) -> true @@ -3183,6 +3438,20 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (p : 'ipatt) (_loc : Loc.t) -> (p : 'comma_ipatt)))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("list", _) -> true + | _ -> false), + "ANTIQUOT (\"list\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("list" as n)), s) -> + (Ast.PaAnt (_loc, + mk_anti ~c: "patt," n s) : + 'comma_ipatt) + | _ -> assert false))); ([ Gram.Sself; Gram.Skeyword ","; Gram.Sself ], (Gram.Action.mk (fun (p2 : 'comma_ipatt) _ (p1 : 'comma_ipatt) @@ -3203,8 +3472,33 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (p : 'ipatt) _ (i : 'label_longident) (_loc : Loc.t) -> - (Ast.PaEq (_loc, Ast.PaId (_loc, i), p) : - 'label_ipatt)))); + (Ast.PaEq (_loc, i, p) : 'label_ipatt)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.patt_tag : + 'label_ipatt) + | _ -> assert false))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("list", _) -> true + | _ -> false), + "ANTIQUOT (\"list\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("list" as n)), s) -> + (Ast.PaAnt (_loc, + mk_anti ~c: "patt;" n s) : + 'label_ipatt) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "pat" | "anti"), _) -> @@ -3245,7 +3539,7 @@ Old (no more supported) syntax: (fun (cl : 'constrain list) (tk : 'opt_eq_ctyp) ((n, tpl) : 'type_ident_and_parameters) (_loc : Loc.t) -> - (Ast.TyDcl (_loc, n, tpl, tk tpl, cl) : + (Ast.TyDcl (_loc, n, tpl, tk, cl) : 'type_declaration)))); ([ Gram.Sself; Gram.Skeyword "and"; Gram.Sself ], (Gram.Action.mk @@ -3253,6 +3547,18 @@ Old (no more supported) syntax: (t1 : 'type_declaration) (_loc : Loc.t) -> (Ast.TyAnd (_loc, t1, t2) : 'type_declaration)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.ctyp_tag : + 'type_declaration) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT ("list", _) -> true @@ -3304,15 +3610,14 @@ Old (no more supported) syntax: [ ([], (Gram.Action.mk (fun (_loc : Loc.t) -> - (fun tpl -> Ast.TyQuo (_loc, choose_tvar tpl) : - 'opt_eq_ctyp)))); + (Ast.TyNil _loc : 'opt_eq_ctyp)))); ([ Gram.Skeyword "="; Gram.Snterm (Gram.Entry.obj (type_kind : 'type_kind Gram.Entry.t)) ], (Gram.Action.mk (fun (tk : 'type_kind) _ (_loc : Loc.t) -> - (fun _ -> tk : 'opt_eq_ctyp)))) ]) ])) + (tk : 'opt_eq_ctyp)))) ]) ])) ()); Gram.extend (type_kind : 'type_kind Gram.Entry.t) ((fun () -> @@ -3415,6 +3720,18 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (i : 'a_ident) _ (_loc : Loc.t) -> (Ast.TyQuo (_loc, i) : 'type_parameter)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.ctyp_tag : + 'type_parameter) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "typ" | "anti"), _) -> @@ -3656,6 +3973,18 @@ Old (no more supported) syntax: (fun (i : 'a_LIDENT) (_loc : Loc.t) -> (Ast.TyId (_loc, Ast.IdLid (_loc, i)) : 'ctyp)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.ctyp_tag : + 'ctyp) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT ("id", _) -> true @@ -3726,7 +4055,34 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (t2 : 'star_ctyp) _ (t1 : 'star_ctyp) (_loc : Loc.t) -> - (Ast.TySta (_loc, t1, t2) : 'star_ctyp)))) ]) ])) + (Ast.TySta (_loc, t1, t2) : 'star_ctyp)))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("list", _) -> true + | _ -> false), + "ANTIQUOT (\"list\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("list" as n)), s) -> + (Ast.TyAnt (_loc, + mk_anti ~c: "ctyp*" n s) : + 'star_ctyp) + | _ -> assert false))); + ([ Gram.Stoken + (((function + | ANTIQUOT (("" | "typ"), _) -> true + | _ -> false), + "ANTIQUOT ((\"\" | \"typ\"), _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("" | "typ" as n)), s) -> + (Ast.TyAnt (_loc, mk_anti ~c: "ctyp" n s) : + 'star_ctyp) + | _ -> assert false))) ]) ])) ()); Gram.extend (constructor_declarations : @@ -3734,17 +4090,73 @@ Old (no more supported) syntax: ((fun () -> (None, [ (None, None, - [ ([ Gram.Slist1sep - (Gram.Snterm - (Gram.Entry.obj - (constructor_declaration : - 'constructor_declaration Gram.Entry.t)), - Gram.Skeyword "|") ], + [ ([ Gram.Snterm + (Gram.Entry.obj + (a_UIDENT : 'a_UIDENT Gram.Entry.t)) ], + (Gram.Action.mk + (fun (s : 'a_UIDENT) (_loc : Loc.t) -> + (Ast.TyId (_loc, Ast.IdUid (_loc, s)) : + 'constructor_declarations)))); + ([ Gram.Snterm + (Gram.Entry.obj + (a_UIDENT : 'a_UIDENT Gram.Entry.t)); + Gram.Skeyword "of"; + Gram.Snterm + (Gram.Entry.obj + (constructor_arg_list : + 'constructor_arg_list Gram.Entry.t)) ], (Gram.Action.mk - (fun (l : 'constructor_declaration list) + (fun (t : 'constructor_arg_list) _ + (s : 'a_UIDENT) (_loc : Loc.t) -> + (Ast.TyOf (_loc, + Ast.TyId (_loc, Ast.IdUid (_loc, s)), t) : + 'constructor_declarations)))); + ([ Gram.Sself; Gram.Skeyword "|"; Gram.Sself ], + (Gram.Action.mk + (fun (t2 : 'constructor_declarations) _ + (t1 : 'constructor_declarations) (_loc : Loc.t) -> - (Ast.tyOr_of_list l : - 'constructor_declarations)))) ]) ])) + (Ast.TyOr (_loc, t1, t2) : + 'constructor_declarations)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.ctyp_tag : + 'constructor_declarations) + | _ -> assert false))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("list", _) -> true + | _ -> false), + "ANTIQUOT (\"list\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("list" as n)), s) -> + (Ast.TyAnt (_loc, + mk_anti ~c: "ctyp|" n s) : + 'constructor_declarations) + | _ -> assert false))); + ([ Gram.Stoken + (((function + | ANTIQUOT (("" | "typ"), _) -> true + | _ -> false), + "ANTIQUOT ((\"\" | \"typ\"), _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("" | "typ" as n)), s) -> + (Ast.TyAnt (_loc, mk_anti ~c: "ctyp" n s) : + 'constructor_declarations) + | _ -> assert false))) ]) ])) ()); Gram.extend (constructor_declaration : @@ -3773,6 +4185,18 @@ Old (no more supported) syntax: (Ast.TyOf (_loc, Ast.TyId (_loc, Ast.IdUid (_loc, s)), t) : 'constructor_declaration)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.ctyp_tag : + 'constructor_declaration) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "typ"), _) -> true @@ -3851,6 +4275,32 @@ Old (no more supported) syntax: (Ast.TyCol (_loc, Ast.TyId (_loc, Ast.IdLid (_loc, s)), t) : 'label_declaration)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.ctyp_tag : + 'label_declaration) + | _ -> assert false))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("list", _) -> true + | _ -> false), + "ANTIQUOT (\"list\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("list" as n)), s) -> + (Ast.TyAnt (_loc, + mk_anti ~c: "ctyp;" n s) : + 'label_declaration) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "typ"), _) -> true @@ -3993,7 +4443,7 @@ Old (no more supported) syntax: 'module_longident_with_app Gram.Entry.t) ((fun () -> (None, - [ (None, None, + [ ((Some "apply"), None, [ ([ Gram.Sself; Gram.Sself ], (Gram.Action.mk (fun (j : 'module_longident_with_app) @@ -4001,7 +4451,7 @@ Old (no more supported) syntax: (_loc : Loc.t) -> (Ast.IdApp (_loc, i, j) : 'module_longident_with_app)))) ]); - (None, None, + ((Some "."), None, [ ([ Gram.Sself; Gram.Skeyword "."; Gram.Sself ], (Gram.Action.mk (fun (j : 'module_longident_with_app) _ @@ -4009,7 +4459,7 @@ Old (no more supported) syntax: (_loc : Loc.t) -> (Ast.IdAcc (_loc, i, j) : 'module_longident_with_app)))) ]); - (None, None, + ((Some "simple"), None, [ ([ Gram.Skeyword "("; Gram.Sself; Gram.Skeyword ")" ], (Gram.Action.mk (fun _ (i : 'module_longident_with_app) _ @@ -4043,19 +4493,19 @@ Old (no more supported) syntax: Gram.extend (type_longident : 'type_longident Gram.Entry.t) ((fun () -> (None, - [ (None, None, + [ ((Some "apply"), None, [ ([ Gram.Sself; Gram.Sself ], (Gram.Action.mk (fun (j : 'type_longident) (i : 'type_longident) (_loc : Loc.t) -> (Ast.IdApp (_loc, i, j) : 'type_longident)))) ]); - (None, None, + ((Some "."), None, [ ([ Gram.Sself; Gram.Skeyword "."; Gram.Sself ], (Gram.Action.mk (fun (j : 'type_longident) _ (i : 'type_longident) (_loc : Loc.t) -> (Ast.IdAcc (_loc, i, j) : 'type_longident)))) ]); - (None, None, + ((Some "simple"), None, [ ([ Gram.Skeyword "("; Gram.Sself; Gram.Skeyword ")" ], (Gram.Action.mk (fun _ (i : 'type_longident) _ (_loc : Loc.t) -> @@ -4181,6 +4631,18 @@ Old (no more supported) syntax: (_loc : Loc.t) -> (Ast.CeEq (_loc, ci, ce) : 'class_declaration)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.class_expr_tag : + 'class_declaration) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "cdcl" | "anti" | "list"), @@ -4312,7 +4774,7 @@ Old (no more supported) syntax: (comma_type_parameter : 'comma_type_parameter Gram.Entry.t) ((fun () -> (None, - [ (None, (Some Camlp4.Sig.Grammar.LeftA), + [ (None, None, [ ([ Gram.Snterm (Gram.Entry.obj (type_parameter : @@ -4320,6 +4782,20 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (t : 'type_parameter) (_loc : Loc.t) -> (t : 'comma_type_parameter)))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("list", _) -> true + | _ -> false), + "ANTIQUOT (\"list\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("list" as n)), s) -> + (Ast.TyAnt (_loc, + mk_anti ~c: "ctyp," n s) : + 'comma_type_parameter) + | _ -> assert false))); ([ Gram.Sself; Gram.Skeyword ","; Gram.Sself ], (Gram.Action.mk (fun (t2 : 'comma_type_parameter) _ @@ -4354,6 +4830,20 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (t : 'ctyp) (_loc : Loc.t) -> (t : 'comma_ctyp)))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("list", _) -> true + | _ -> false), + "ANTIQUOT (\"list\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("list" as n)), s) -> + (Ast.TyAnt (_loc, + mk_anti ~c: "ctyp," n s) : + 'comma_ctyp) + | _ -> assert false))); ([ Gram.Sself; Gram.Skeyword ","; Gram.Sself ], (Gram.Action.mk (fun (t2 : 'comma_ctyp) _ (t1 : 'comma_ctyp) @@ -4399,14 +4889,16 @@ Old (no more supported) syntax: (Ast.CeLet (_loc, rf, bi, ce) : 'class_expr)))); ([ Gram.Skeyword "fun"; Gram.Snterm - (Gram.Entry.obj (ipatt : 'ipatt Gram.Entry.t)); + (Gram.Entry.obj + (labeled_ipatt : + 'labeled_ipatt Gram.Entry.t)); Gram.Snterm (Gram.Entry.obj (class_fun_def : 'class_fun_def Gram.Entry.t)) ], (Gram.Action.mk - (fun (ce : 'class_fun_def) (p : 'ipatt) _ - (_loc : Loc.t) -> + (fun (ce : 'class_fun_def) (p : 'labeled_ipatt) + _ (_loc : Loc.t) -> (Ast.CeFun (_loc, p, ce) : 'class_expr)))) ]); ((Some "apply"), (Some Camlp4.Sig.Grammar.NonA), [ ([ Gram.Sself; @@ -4452,6 +4944,18 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (ce : 'class_longident_and_param) (_loc : Loc.t) -> (ce : 'class_expr)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.class_expr_tag : + 'class_expr) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "cexp" | "anti"), _) -> @@ -4514,10 +5018,32 @@ Old (no more supported) syntax: (semi : 'semi Gram.Entry.t)) ], (Gram.Action.mk (fun _ (cst : 'class_str_item) - (_loc : Loc.t) -> (cst : 'e__2)))) ]) ], + (_loc : Loc.t) -> (cst : 'e__4)))) ]) ], (Gram.Action.mk - (fun (l : 'e__2 list) (_loc : Loc.t) -> + (fun (l : 'e__4 list) (_loc : Loc.t) -> (Ast.crSem_of_list l : 'class_structure)))); + ([ Gram.Stoken + (((function + | ANTIQUOT (("" | "cst" | "anti" | "list"), + _) -> true + | _ -> false), + "ANTIQUOT ((\"\" | \"cst\" | \"anti\" | \"list\"), _)")); + Gram.Snterm + (Gram.Entry.obj (semi : 'semi Gram.Entry.t)); + Gram.Sself ], + (Gram.Action.mk + (fun (cst : 'class_structure) _ + (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> + match __camlp4_0 with + | ANTIQUOT + ((("" | "cst" | "anti" | "list" as n)), + s) -> + (Ast.CrSem (_loc, + Ast.CrAnt (_loc, + mk_anti ~c: "class_str_item" n s), + cst) : + 'class_structure) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "cst" | "anti" | "list"), @@ -4603,6 +5129,22 @@ Old (no more supported) syntax: (_loc : Loc.t) -> (Ast.CrMth (_loc, l, pf, e, topt) : 'class_str_item)))); + ([ Gram.Skeyword "method"; + Gram.Snterm + (Gram.Entry.obj + (opt_private : 'opt_private Gram.Entry.t)); + Gram.Skeyword "virtual"; + Gram.Snterm + (Gram.Entry.obj (label : 'label Gram.Entry.t)); + Gram.Skeyword ":"; + Gram.Snterm + (Gram.Entry.obj + (poly_type : 'poly_type Gram.Entry.t)) ], + (Gram.Action.mk + (fun (t : 'poly_type) _ (l : 'label) _ + (pf : 'opt_private) _ (_loc : Loc.t) -> + (Ast.CrVir (_loc, l, pf, t) : + 'class_str_item)))); ([ Gram.Skeyword "method"; Gram.Skeyword "virtual"; Gram.Snterm (Gram.Entry.obj @@ -4665,6 +5207,18 @@ Old (no more supported) syntax: (fun (pb : 'opt_as_lident) (ce : 'class_expr) _ (_loc : Loc.t) -> (Ast.CrInh (_loc, ce, pb) : 'class_str_item)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.class_str_item_tag : + 'class_str_item) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "cst" | "anti" | "list"), @@ -4796,6 +5350,18 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (ct : 'class_type_longident_and_param) (_loc : Loc.t) -> (ct : 'class_type)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.class_type_tag : + 'class_type) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "ctyp" | "anti"), _) -> @@ -4895,10 +5461,32 @@ Old (no more supported) syntax: (semi : 'semi Gram.Entry.t)) ], (Gram.Action.mk (fun _ (csg : 'class_sig_item) - (_loc : Loc.t) -> (csg : 'e__3)))) ]) ], + (_loc : Loc.t) -> (csg : 'e__5)))) ]) ], (Gram.Action.mk - (fun (l : 'e__3 list) (_loc : Loc.t) -> + (fun (l : 'e__5 list) (_loc : Loc.t) -> (Ast.cgSem_of_list l : 'class_signature)))); + ([ Gram.Stoken + (((function + | ANTIQUOT (("" | "csg" | "anti" | "list"), + _) -> true + | _ -> false), + "ANTIQUOT ((\"\" | \"csg\" | \"anti\" | \"list\"), _)")); + Gram.Snterm + (Gram.Entry.obj (semi : 'semi Gram.Entry.t)); + Gram.Sself ], + (Gram.Action.mk + (fun (csg : 'class_signature) _ + (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> + match __camlp4_0 with + | ANTIQUOT + ((("" | "csg" | "anti" | "list" as n)), + s) -> + (Ast.CgSem (_loc, + Ast.CgAnt (_loc, + mk_anti ~c: "class_sig_item" n s), + csg) : + 'class_signature) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "csg" | "anti" | "list"), @@ -4934,6 +5522,22 @@ Old (no more supported) syntax: (fun (t2 : 'ctyp) _ (t1 : 'ctyp) _ (_loc : Loc.t) -> (Ast.CgCtr (_loc, t1, t2) : 'class_sig_item)))); + ([ Gram.Skeyword "method"; + Gram.Snterm + (Gram.Entry.obj + (opt_private : 'opt_private Gram.Entry.t)); + Gram.Skeyword "virtual"; + Gram.Snterm + (Gram.Entry.obj (label : 'label Gram.Entry.t)); + Gram.Skeyword ":"; + Gram.Snterm + (Gram.Entry.obj + (poly_type : 'poly_type Gram.Entry.t)) ], + (Gram.Action.mk + (fun (t : 'poly_type) _ (l : 'label) _ + (pf : 'opt_private) _ (_loc : Loc.t) -> + (Ast.CgVir (_loc, l, pf, t) : + 'class_sig_item)))); ([ Gram.Skeyword "method"; Gram.Snterm (Gram.Entry.obj @@ -4991,6 +5595,18 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (cs : 'class_type) _ (_loc : Loc.t) -> (Ast.CgInh (_loc, cs) : 'class_sig_item)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.class_sig_item_tag : + 'class_sig_item) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "csg" | "anti" | "list"), @@ -5013,7 +5629,10 @@ Old (no more supported) syntax: ((fun () -> (None, [ (None, None, - [ ([ Gram.Skeyword "type" ], + [ ([ Gram.Skeyword "constraint" ], + (Gram.Action.mk + (fun _ (_loc : Loc.t) -> (() : 'type_constraint)))); + ([ Gram.Skeyword "type" ], (Gram.Action.mk (fun _ (_loc : Loc.t) -> (() : 'type_constraint)))) ]) ])) ()); @@ -5037,6 +5656,18 @@ Old (no more supported) syntax: (_loc : Loc.t) -> (Ast.CtCol (_loc, ci, ct) : 'class_description)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.class_type_tag : + 'class_description) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "typ" | "anti" | "list"), @@ -5081,6 +5712,18 @@ Old (no more supported) syntax: (_loc : Loc.t) -> (Ast.CtEq (_loc, ci, ct) : 'class_type_declaration)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.class_type_tag : + 'class_type_declaration) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "typ" | "anti" | "list"), @@ -5118,8 +5761,7 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (e : 'expr) _ (l : 'label) (_loc : Loc.t) -> - (Ast.BiEq (_loc, - Ast.PaId (_loc, Ast.IdLid (_loc, l)), e) : + (Ast.RbEq (_loc, Ast.IdLid (_loc, l), e) : 'field_expr)))); ([ Gram.Stoken (((function @@ -5131,8 +5773,8 @@ Old (no more supported) syntax: -> match __camlp4_0 with | ANTIQUOT ((("list" as n)), s) -> - (Ast.BiAnt (_loc, - mk_anti ~c: "binding;" n s) : + (Ast.RbAnt (_loc, + mk_anti ~c: "rec_binding" n s) : 'field_expr) | _ -> assert false))); ([ Gram.Stoken @@ -5146,53 +5788,20 @@ Old (no more supported) syntax: match __camlp4_0 with | ANTIQUOT ((("" | "bi" | "anti" as n)), s) -> - (Ast.BiAnt (_loc, - mk_anti ~c: "binding" n s) : + (Ast.RbAnt (_loc, + mk_anti ~c: "rec_binding" n s) : 'field_expr) | _ -> assert false))); ([ Gram.Sself; Gram.Skeyword ";"; Gram.Sself ], (Gram.Action.mk (fun (b2 : 'field_expr) _ (b1 : 'field_expr) (_loc : Loc.t) -> - (Ast.BiSem (_loc, b1, b2) : 'field_expr)))) ]) ])) + (Ast.RbSem (_loc, b1, b2) : 'field_expr)))) ]) ])) ()); Gram.extend (meth_list : 'meth_list Gram.Entry.t) ((fun () -> (None, - [ (None, None, - [ ([ Gram.Snterm - (Gram.Entry.obj (field : 'field Gram.Entry.t)); - Gram.Sopt (Gram.Skeyword ";") ], - (Gram.Action.mk - (fun _ (f : 'field) (_loc : Loc.t) -> - (f : 'meth_list)))); - ([ Gram.Snterm - (Gram.Entry.obj (field : 'field Gram.Entry.t)); - Gram.Skeyword ";"; Gram.Sself ], - (Gram.Action.mk - (fun (ml : 'meth_list) _ (f : 'field) - (_loc : Loc.t) -> - (Ast.TySem (_loc, f, ml) : 'meth_list)))) ]) ])) - ()); - Gram.extend (opt_meth_list : 'opt_meth_list Gram.Entry.t) - ((fun () -> - (None, - [ (None, None, - [ ([], - (Gram.Action.mk - (fun (_loc : Loc.t) -> - (Ast.TyNil _loc : 'opt_meth_list)))); - ([ Gram.Snterm - (Gram.Entry.obj - (meth_list : 'meth_list Gram.Entry.t)) ], - (Gram.Action.mk - (fun (ml : 'meth_list) (_loc : Loc.t) -> - (ml : 'opt_meth_list)))) ]) ])) - ()); - Gram.extend (field : 'field Gram.Entry.t) - ((fun () -> - (None, - [ (None, None, + [ (None, (Some Camlp4.Sig.Grammar.LeftA), [ ([ Gram.Snterm (Gram.Entry.obj (a_LIDENT : 'a_LIDENT Gram.Entry.t)); @@ -5205,7 +5814,33 @@ Old (no more supported) syntax: (_loc : Loc.t) -> (Ast.TyCol (_loc, Ast.TyId (_loc, Ast.IdLid (_loc, lab)), t) : - 'field)))); + 'meth_list)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.ctyp_tag : + 'meth_list) + | _ -> assert false))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("list", _) -> true + | _ -> false), + "ANTIQUOT (\"list\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("list" as n)), s) -> + (Ast.TyAnt (_loc, + mk_anti ~c: "ctyp;" n s) : + 'meth_list) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "typ"), _) -> true @@ -5217,8 +5852,29 @@ Old (no more supported) syntax: match __camlp4_0 with | ANTIQUOT ((("" | "typ" as n)), s) -> (Ast.TyAnt (_loc, mk_anti ~c: "ctyp" n s) : - 'field) - | _ -> assert false))) ]) ])) + 'meth_list) + | _ -> assert false))); + ([ Gram.Sself; Gram.Skeyword ";"; Gram.Sself ], + (Gram.Action.mk + (fun (ml2 : 'meth_list) _ (ml1 : 'meth_list) + (_loc : Loc.t) -> + (Ast.TySem (_loc, ml1, ml2) : 'meth_list)))) ]) ])) + ()); + Gram.extend (opt_meth_list : 'opt_meth_list Gram.Entry.t) + ((fun () -> + (None, + [ (None, None, + [ ([], + (Gram.Action.mk + (fun (_loc : Loc.t) -> + (Ast.TyNil _loc : 'opt_meth_list)))); + ([ Gram.Snterm + (Gram.Entry.obj + (meth_list : 'meth_list Gram.Entry.t)); + Gram.Sopt (Gram.Skeyword ";") ], + (Gram.Action.mk + (fun _ (ml : 'meth_list) (_loc : Loc.t) -> + (ml : 'opt_meth_list)))) ]) ])) ()); Gram.extend (poly_type : 'poly_type Gram.Entry.t) ((fun () -> @@ -5241,6 +5897,18 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (i : 'a_ident) _ (_loc : Loc.t) -> (Ast.TyQuo (_loc, i) : 'typevars)))); + ([ Gram.Stoken + (((function | QUOTATION _ -> true | _ -> false), + "QUOTATION _")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | QUOTATION x -> + (Quotation.expand _loc x Quotation. + DynAst.ctyp_tag : + 'typevars) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "typ"), _) -> true @@ -5307,6 +5975,20 @@ Old (no more supported) syntax: (fun (t2 : 'row_field) _ (t1 : 'row_field) (_loc : Loc.t) -> (Ast.TyOr (_loc, t1, t2) : 'row_field)))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("list", _) -> true + | _ -> false), + "ANTIQUOT (\"list\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("list" as n)), s) -> + (Ast.TyAnt (_loc, + mk_anti ~c: "ctyp|" n s) : + 'row_field) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "typ"), _) -> true @@ -5321,36 +6003,6 @@ Old (no more supported) syntax: 'row_field) | _ -> assert false))) ]) ])) ()); - Gram.extend (sem_ctyp : 'sem_ctyp Gram.Entry.t) - ((fun () -> - (None, - [ (None, None, - [ ([ Gram.Snterm - (Gram.Entry.obj (ctyp : 'ctyp Gram.Entry.t)) ], - (Gram.Action.mk - (fun (t : 'ctyp) (_loc : Loc.t) -> - (t : 'sem_ctyp)))); - ([ Gram.Sself; Gram.Skeyword ";"; Gram.Sself ], - (Gram.Action.mk - (fun (t2 : 'sem_ctyp) _ (t1 : 'sem_ctyp) - (_loc : Loc.t) -> - (Ast.TySem (_loc, t1, t2) : 'sem_ctyp)))) ]) ])) - ()); - Gram.extend (pipe_ctyp : 'pipe_ctyp Gram.Entry.t) - ((fun () -> - (None, - [ (None, None, - [ ([ Gram.Snterm - (Gram.Entry.obj (ctyp : 'ctyp Gram.Entry.t)) ], - (Gram.Action.mk - (fun (t : 'ctyp) (_loc : Loc.t) -> - (t : 'pipe_ctyp)))); - ([ Gram.Sself; Gram.Skeyword "|"; Gram.Sself ], - (Gram.Action.mk - (fun (t2 : 'pipe_ctyp) _ (t1 : 'pipe_ctyp) - (_loc : Loc.t) -> - (Ast.TyOr (_loc, t1, t2) : 'pipe_ctyp)))) ]) ])) - ()); Gram.extend (amp_ctyp : 'amp_ctyp Gram.Entry.t) ((fun () -> (None, @@ -5360,6 +6012,20 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (t : 'ctyp) (_loc : Loc.t) -> (t : 'amp_ctyp)))); + ([ Gram.Stoken + (((function + | ANTIQUOT ("list", _) -> true + | _ -> false), + "ANTIQUOT (\"list\", _)")) ], + (Gram.Action.mk + (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) + -> + match __camlp4_0 with + | ANTIQUOT ((("list" as n)), s) -> + (Ast.TyAnt (_loc, + mk_anti ~c: "ctyp&" n s) : + 'amp_ctyp) + | _ -> assert false))); ([ Gram.Sself; Gram.Skeyword "&"; Gram.Sself ], (Gram.Action.mk (fun (t2 : 'amp_ctyp) _ (t1 : 'amp_ctyp) @@ -5808,10 +6474,32 @@ Old (no more supported) syntax: (semi : 'semi Gram.Entry.t)) ], (Gram.Action.mk (fun _ (sg : 'sig_item) (_loc : Loc.t) - -> (sg : 'e__4)))) ]) ], + -> (sg : 'e__6)))) ]) ], + (Gram.Action.mk + (fun (l : 'e__6 list) (_loc : Loc.t) -> + (Ast.sgSem_of_list l : 'sig_items)))); + ([ Gram.Stoken + (((function + | ANTIQUOT (("" | "sigi" | "anti" | "list"), + _) -> true + | _ -> false), + "ANTIQUOT ((\"\" | \"sigi\" | \"anti\" | \"list\"), _)")); + Gram.Snterm + (Gram.Entry.obj (semi : 'semi Gram.Entry.t)); + Gram.Sself ], (Gram.Action.mk - (fun (l : 'e__4 list) (_loc : Loc.t) -> - (Ast.sgSem_of_list l : 'sig_items)))); + (fun (sg : 'sig_items) _ + (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> + match __camlp4_0 with + | ANTIQUOT + ((("" | "sigi" | "anti" | "list" as n)), + s) -> + (Ast.SgSem (_loc, + Ast.SgAnt (_loc, + mk_anti n ~c: "sig_item" s), + sg) : + 'sig_items) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "sigi" | "anti" | "list"), @@ -5882,10 +6570,32 @@ Old (no more supported) syntax: (semi : 'semi Gram.Entry.t)) ], (Gram.Action.mk (fun _ (st : 'str_item) (_loc : Loc.t) - -> (st : 'e__5)))) ]) ], + -> (st : 'e__7)))) ]) ], (Gram.Action.mk - (fun (l : 'e__5 list) (_loc : Loc.t) -> + (fun (l : 'e__7 list) (_loc : Loc.t) -> (Ast.stSem_of_list l : 'str_items)))); + ([ Gram.Stoken + (((function + | ANTIQUOT (("" | "stri" | "anti" | "list"), + _) -> true + | _ -> false), + "ANTIQUOT ((\"\" | \"stri\" | \"anti\" | \"list\"), _)")); + Gram.Snterm + (Gram.Entry.obj (semi : 'semi Gram.Entry.t)); + Gram.Sself ], + (Gram.Action.mk + (fun (st : 'str_items) _ + (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> + match __camlp4_0 with + | ANTIQUOT + ((("" | "stri" | "anti" | "list" as n)), + s) -> + (Ast.StSem (_loc, + Ast.StAnt (_loc, + mk_anti n ~c: "str_item" s), + st) : + 'str_items) + | _ -> assert false))); ([ Gram.Stoken (((function | ANTIQUOT (("" | "stri" | "anti" | "list"), @@ -6203,18 +6913,6 @@ Old (no more supported) syntax: (mk_anti n s : 'a_LIDENT) | _ -> assert false))) ]) ])) ()); - Gram.extend - (a_LIDENT_or_operator : 'a_LIDENT_or_operator Gram.Entry.t) - ((fun () -> - (None, - [ (None, None, - [ ([ Gram.Snterm - (Gram.Entry.obj - (a_LIDENT : 'a_LIDENT Gram.Entry.t)) ], - (Gram.Action.mk - (fun (x : 'a_LIDENT) (_loc : Loc.t) -> - (x : 'a_LIDENT_or_operator)))) ]) ])) - ()); Gram.extend (a_LABEL : 'a_LABEL Gram.Entry.t) ((fun () -> (None, @@ -6421,7 +7119,11 @@ Old (no more supported) syntax: (Gram.Entry.obj (patt : 'patt Gram.Entry.t)) ], (Gram.Action.mk (fun (y : 'patt) _ (x : 'patt) (_loc : Loc.t) -> - (Ast.PaEq (_loc, x, y) : 'patt_quot)))); + (let i = + match x with + | Ast.PaAnt (loc, s) -> Ast.IdAnt (loc, s) + | p -> Ast.ident_of_patt p + in Ast.PaEq (_loc, i, y) : 'patt_quot)))); ([ Gram.Snterm (Gram.Entry.obj (patt : 'patt Gram.Entry.t)); Gram.Skeyword ";"; @@ -6491,6 +7193,23 @@ Old (no more supported) syntax: (fun (y : 'star_ctyp) _ (x : 'more_ctyp) (_loc : Loc.t) -> (Ast.TySta (_loc, x, y) : 'ctyp_quot)))); + ([ Gram.Snterm + (Gram.Entry.obj + (more_ctyp : 'more_ctyp Gram.Entry.t)); + Gram.Skeyword ":"; + Gram.Snterm + (Gram.Entry.obj + (more_ctyp : 'more_ctyp Gram.Entry.t)); + Gram.Skeyword ";"; + Gram.Snterm + (Gram.Entry.obj + (label_declaration : + 'label_declaration Gram.Entry.t)) ], + (Gram.Action.mk + (fun (z : 'label_declaration) _ (y : 'more_ctyp) + _ (x : 'more_ctyp) (_loc : Loc.t) -> + (Ast.TySem (_loc, Ast.TyCol (_loc, x, y), z) : + 'ctyp_quot)))); ([ Gram.Snterm (Gram.Entry.obj (more_ctyp : 'more_ctyp Gram.Entry.t)); @@ -6502,6 +7221,22 @@ Old (no more supported) syntax: (fun (y : 'more_ctyp) _ (x : 'more_ctyp) (_loc : Loc.t) -> (Ast.TyCol (_loc, x, y) : 'ctyp_quot)))); + ([ Gram.Snterm + (Gram.Entry.obj + (more_ctyp : 'more_ctyp Gram.Entry.t)); + Gram.Skeyword "of"; Gram.Skeyword "&"; + Gram.Snterm + (Gram.Entry.obj + (amp_ctyp : 'amp_ctyp Gram.Entry.t)); + Gram.Skeyword "|"; + Gram.Snterm + (Gram.Entry.obj + (row_field : 'row_field Gram.Entry.t)) ], + (Gram.Action.mk + (fun (z : 'row_field) _ (y : 'amp_ctyp) _ _ + (x : 'more_ctyp) (_loc : Loc.t) -> + (Ast.TyOr (_loc, Ast.TyOfAmp (_loc, x, y), z) : + 'ctyp_quot)))); ([ Gram.Snterm (Gram.Entry.obj (more_ctyp : 'more_ctyp Gram.Entry.t)); @@ -6513,6 +7248,25 @@ Old (no more supported) syntax: (fun (y : 'amp_ctyp) _ _ (x : 'more_ctyp) (_loc : Loc.t) -> (Ast.TyOfAmp (_loc, x, y) : 'ctyp_quot)))); + ([ Gram.Snterm + (Gram.Entry.obj + (more_ctyp : 'more_ctyp Gram.Entry.t)); + Gram.Skeyword "of"; + Gram.Snterm + (Gram.Entry.obj + (constructor_arg_list : + 'constructor_arg_list Gram.Entry.t)); + Gram.Skeyword "|"; + Gram.Snterm + (Gram.Entry.obj + (constructor_declarations : + 'constructor_declarations Gram.Entry.t)) ], + (Gram.Action.mk + (fun (z : 'constructor_declarations) _ + (y : 'constructor_arg_list) _ + (x : 'more_ctyp) (_loc : Loc.t) -> + (Ast.TyOr (_loc, Ast.TyOf (_loc, x, y), z) : + 'ctyp_quot)))); ([ Gram.Snterm (Gram.Entry.obj (more_ctyp : 'more_ctyp Gram.Entry.t)); @@ -6531,10 +7285,11 @@ Old (no more supported) syntax: Gram.Skeyword "|"; Gram.Snterm (Gram.Entry.obj - (pipe_ctyp : 'pipe_ctyp Gram.Entry.t)) ], + (constructor_declarations : + 'constructor_declarations Gram.Entry.t)) ], (Gram.Action.mk - (fun (y : 'pipe_ctyp) _ (x : 'more_ctyp) - (_loc : Loc.t) -> + (fun (y : 'constructor_declarations) _ + (x : 'more_ctyp) (_loc : Loc.t) -> (Ast.TyOr (_loc, x, y) : 'ctyp_quot)))); ([ Gram.Snterm (Gram.Entry.obj @@ -6542,9 +7297,10 @@ Old (no more supported) syntax: Gram.Skeyword ";"; Gram.Snterm (Gram.Entry.obj - (sem_ctyp : 'sem_ctyp Gram.Entry.t)) ], + (label_declaration : + 'label_declaration Gram.Entry.t)) ], (Gram.Action.mk - (fun (y : 'sem_ctyp) _ (x : 'more_ctyp) + (fun (y : 'label_declaration) _ (x : 'more_ctyp) (_loc : Loc.t) -> (Ast.TySem (_loc, x, y) : 'ctyp_quot)))); ([ Gram.Snterm @@ -6571,9 +7327,10 @@ Old (no more supported) syntax: (fun (x : 'type_parameter) (_loc : Loc.t) -> (x : 'more_ctyp)))); ([ Gram.Snterm - (Gram.Entry.obj (ctyp : 'ctyp Gram.Entry.t)) ], + (Gram.Entry.obj + (type_kind : 'type_kind Gram.Entry.t)) ], (Gram.Action.mk - (fun (x : 'ctyp) (_loc : Loc.t) -> + (fun (x : 'type_kind) (_loc : Loc.t) -> (x : 'more_ctyp)))); ([ Gram.Skeyword "`"; Gram.Snterm @@ -6663,7 +7420,11 @@ Old (no more supported) syntax: ((fun () -> (None, [ (None, None, - [ ([ Gram.Snterm + [ ([], + (Gram.Action.mk + (fun (_loc : Loc.t) -> + (Ast.MtNil _loc : 'module_type_quot)))); + ([ Gram.Snterm (Gram.Entry.obj (module_type : 'module_type Gram.Entry.t)) ], (Gram.Action.mk @@ -6674,7 +7435,11 @@ Old (no more supported) syntax: ((fun () -> (None, [ (None, None, - [ ([ Gram.Snterm + [ ([], + (Gram.Action.mk + (fun (_loc : Loc.t) -> + (Ast.MeNil _loc : 'module_expr_quot)))); + ([ Gram.Snterm (Gram.Entry.obj (module_expr : 'module_expr Gram.Entry.t)) ], (Gram.Action.mk @@ -6689,12 +7454,14 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (_loc : Loc.t) -> (Ast.McNil _loc : 'match_case_quot)))); - ([ Gram.Snterm - (Gram.Entry.obj - (match_case : 'match_case Gram.Entry.t)) ], + ([ Gram.Slist0sep + (Gram.Snterm + (Gram.Entry.obj + (match_case0 : 'match_case0 Gram.Entry.t)), + Gram.Skeyword "|") ], (Gram.Action.mk - (fun (x : 'match_case) (_loc : Loc.t) -> - (x : 'match_case_quot)))) ]) ])) + (fun (x : 'match_case0 list) (_loc : Loc.t) -> + (Ast.mcOr_of_list x : 'match_case_quot)))) ]) ])) ()); Gram.extend (binding_quot : 'binding_quot Gram.Entry.t) ((fun () -> @@ -6704,28 +7471,27 @@ Old (no more supported) syntax: (Gram.Action.mk (fun (_loc : Loc.t) -> (Ast.BiNil _loc : 'binding_quot)))); - ([ Gram.Snterm - (Gram.Entry.obj - (label_expr : 'label_expr Gram.Entry.t)) ], - (Gram.Action.mk - (fun (x : 'label_expr) (_loc : Loc.t) -> - (x : 'binding_quot)))); ([ Gram.Snterm (Gram.Entry.obj (binding : 'binding Gram.Entry.t)) ], (Gram.Action.mk (fun (x : 'binding) (_loc : Loc.t) -> - (x : 'binding_quot)))); - ([ Gram.Sself; Gram.Skeyword ";"; Gram.Sself ], + (x : 'binding_quot)))) ]) ])) + ()); + Gram.extend (rec_binding_quot : 'rec_binding_quot Gram.Entry.t) + ((fun () -> + (None, + [ (None, None, + [ ([], (Gram.Action.mk - (fun (b2 : 'binding_quot) _ (b1 : 'binding_quot) - (_loc : Loc.t) -> - (Ast.BiSem (_loc, b1, b2) : 'binding_quot)))); - ([ Gram.Sself; Gram.Skeyword "and"; Gram.Sself ], + (fun (_loc : Loc.t) -> + (Ast.RbNil _loc : 'rec_binding_quot)))); + ([ Gram.Snterm + (Gram.Entry.obj + (label_expr : 'label_expr Gram.Entry.t)) ], (Gram.Action.mk - (fun (b2 : 'binding_quot) _ (b1 : 'binding_quot) - (_loc : Loc.t) -> - (Ast.BiAnd (_loc, b1, b2) : 'binding_quot)))) ]) ])) + (fun (x : 'label_expr) (_loc : Loc.t) -> + (x : 'rec_binding_quot)))) ]) ])) ()); Gram.extend (module_binding_quot : 'module_binding_quot Gram.Entry.t) @@ -6940,10 +7706,10 @@ Old (no more supported) syntax: (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> match __camlp4_0 with | ANTIQUOT ((("virtual" as n)), s) -> - (Ast.CeCon (_loc, + (let anti = Ast.BAnt - (mk_anti ~c: "class_expr" n s), - i, ot) : + (mk_anti ~c: "class_expr" n s) + in Ast.CeCon (_loc, anti, i, ot) : 'class_expr_quot) | _ -> assert false))); ([ Gram.Skeyword "virtual"; @@ -7001,10 +7767,10 @@ Old (no more supported) syntax: (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> match __camlp4_0 with | ANTIQUOT ((("virtual" as n)), s) -> - (Ast.CtCon (_loc, + (let anti = Ast.BAnt - (mk_anti ~c: "class_type" n s), - i, ot) : + (mk_anti ~c: "class_type" n s) + in Ast.CtCon (_loc, anti, i, ot) : 'class_type_quot) | _ -> assert false))); ([ Gram.Skeyword "virtual"; @@ -7167,7 +7933,7 @@ module Camlp4QuotationCommon = struct let name = "Camlp4QuotationCommon" let version = - "$Id: camlp4boot.ml,v 1.2 2007/02/26 16:32:47 ertai Exp $" + "$Id: Camlp4QuotationCommon.ml,v 1.1.4.5 2007/05/10 14:24:22 pouillar Exp $" end module Make (Syntax : Sig.Camlp4Syntax) @@ -7320,6 +8086,14 @@ module Camlp4QuotationCommon = Ast.IdUid (_loc, "BiAnt"))), mloc _loc), p) + | "antirec_binding" -> + Ast.PaApp (_loc, + Ast.PaApp (_loc, + Ast.PaId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "RbAnt"))), + mloc _loc), + p) | "antimatch_case" -> Ast.PaApp (_loc, Ast.PaApp (_loc, @@ -7396,6 +8170,12 @@ module Camlp4QuotationCommon = Ast.IdAcc (_loc, Ast.IdUid (_loc, "Char"), Ast.IdLid (_loc, "escaped"))), e) + | "`bool" -> + Ast.ExIfe (_loc, e, + ME.meta_expr _loc + (Ast.ExId (_loc, Ast.IdUid (_loc, "True"))), + ME.meta_expr _loc + (Ast.ExId (_loc, Ast.IdUid (_loc, "False")))) | "liststr_item" -> Ast.ExApp (_loc, Ast.ExId (_loc, @@ -7450,6 +8230,12 @@ module Camlp4QuotationCommon = Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), Ast.IdLid (_loc, "biSem_of_list"))), e) + | "listrec_binding" -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdLid (_loc, "rbSem_of_list"))), + e) | "listclass_type" -> Ast.ExApp (_loc, Ast.ExId (_loc, @@ -7474,6 +8260,36 @@ module Camlp4QuotationCommon = Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), Ast.IdLid (_loc, "tyAnd_of_list"))), e) + | "listctyp;" -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdLid (_loc, "tySem_of_list"))), + e) + | "listctyp*" -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdLid (_loc, "tySta_of_list"))), + e) + | "listctyp|" -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdLid (_loc, "tyOr_of_list"))), + e) + | "listctyp," -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdLid (_loc, "tyCom_of_list"))), + e) + | "listctyp&" -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdLid (_loc, "tyAmp_of_list"))), + e) | "listwith_constr" -> Ast.ExApp (_loc, Ast.ExId (_loc, @@ -7486,12 +8302,30 @@ module Camlp4QuotationCommon = Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), Ast.IdLid (_loc, "mcOr_of_list"))), e) + | "listpatt," -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdLid (_loc, "paCom_of_list"))), + e) | "listpatt;" -> Ast.ExApp (_loc, Ast.ExId (_loc, Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), Ast.IdLid (_loc, "paSem_of_list"))), e) + | "listexpr," -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdLid (_loc, "exCom_of_list"))), + e) + | "listexpr;" -> + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdLid (_loc, "exSem_of_list"))), + e) | "antisig_item" -> Ast.ExApp (_loc, Ast.ExApp (_loc, @@ -7596,6 +8430,14 @@ module Camlp4QuotationCommon = Ast.IdUid (_loc, "BiAnt"))), mloc _loc), e) + | "antirec_binding" -> + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "Ast"), + Ast.IdUid (_loc, "RbAnt"))), + mloc _loc), + e) | "antimatch_case" -> Ast.ExApp (_loc, Ast.ExApp (_loc, @@ -7625,13 +8467,21 @@ module Camlp4QuotationCommon = end let add_quotation name entry mexpr mpatt = let entry_eoi = Gram.Entry.mk (Gram.Entry.name entry) in + let parse_quot_string entry loc s = + let q = !Camlp4_config.antiquotations in + let () = Camlp4_config.antiquotations := true in + let res = Gram.parse_string entry loc s in + let () = Camlp4_config.antiquotations := q in res in let expand_expr loc loc_name_opt s = - let ast = Gram.parse_string entry_eoi loc s in + let ast = parse_quot_string entry_eoi loc s in let () = MetaLoc.loc_name := loc_name_opt in let meta_ast = mexpr loc ast in let exp_ast = antiquot_expander#expr meta_ast in exp_ast in + let expand_str_item loc loc_name_opt s = + let exp_ast = expand_expr loc loc_name_opt s + in Ast.StExp (loc, exp_ast) in let expand_patt _loc loc_name_opt s = - let ast = Gram.parse_string entry_eoi _loc s in + let ast = parse_quot_string entry_eoi _loc s in let meta_ast = mpatt _loc ast in let exp_ast = antiquot_expander#patt meta_ast in @@ -7670,8 +8520,9 @@ module Camlp4QuotationCommon = | EOI -> (x : 'entry_eoi) | _ -> assert false))) ]) ])) ()); - Quotation.add name - (Quotation.ExAst ((expand_expr, expand_patt)))) + Quotation.add name Quotation.DynAst.expr_tag expand_expr; + Quotation.add name Quotation.DynAst.patt_tag expand_patt; + Quotation.add name Quotation.DynAst.str_item_tag expand_str_item) let _ = add_quotation "sig_item" sig_item_quot ME.meta_sig_item MP. meta_sig_item @@ -7705,6 +8556,9 @@ module Camlp4QuotationCommon = let _ = add_quotation "binding" binding_quot ME.meta_binding MP. meta_binding + let _ = + add_quotation "rec_binding" rec_binding_quot ME.meta_rec_binding + MP.meta_rec_binding let _ = add_quotation "match_case" match_case_quot ME.meta_match_case MP. meta_match_case @@ -7739,7 +8593,7 @@ module Q = struct let name = "Camlp4QuotationExpander" let version = - "$Id: camlp4boot.ml,v 1.2 2007/02/26 16:32:47 ertai Exp $" + "$Id: Camlp4QuotationExpander.ml,v 1.1 2007/02/07 10:09:22 ertai Exp $" end module Make (Syntax : Sig.Camlp4Syntax) = struct @@ -7773,7 +8627,7 @@ module Rp = struct let name = "Camlp4OCamlRevisedParserParser" let version = - "$Id: camlp4boot.ml,v 1.2 2007/02/26 16:32:47 ertai Exp $" + "$Id: Camlp4OCamlRevisedParserParser.ml,v 1.1.4.2 2007/04/05 18:06:36 pouillar Exp $" end module Make (Syntax : Sig.Camlp4Syntax) = struct @@ -8157,7 +9011,11 @@ module Rp = Ast.IdLid (_loc, "count"))), Ast.ExId (_loc, Ast.IdLid (_loc, strm_n)))), pc) - | None -> pc + | None -> pc in + let me = + match me with + | (Ast.ExSem (_loc, _, _) as e) -> Ast.ExSeq (_loc, e) + | e -> e in match me with | Ast.ExId (_, (Ast.IdLid (_, x))) when x = strm_n -> e @@ -8297,7 +9155,10 @@ module Rp = ((fun () -> ((Some (Camlp4.Sig.Grammar.Level "top")), [ (None, None, - [ ([ Gram.Skeyword "match"; Gram.Sself; + [ ([ Gram.Skeyword "match"; + Gram.Snterm + (Gram.Entry.obj + (sequence : 'sequence Gram.Entry.t)); Gram.Skeyword "with"; Gram.Skeyword "parser"; Gram.Sopt (Gram.Snterm @@ -8310,8 +9171,8 @@ module Rp = 'parser_case_list Gram.Entry.t)) ], (Gram.Action.mk (fun (pcl : 'parser_case_list) - (po : 'parser_ipatt option) _ _ (e : 'expr) _ - (_loc : Loc.t) -> + (po : 'parser_ipatt option) _ _ + (e : 'sequence) _ (_loc : Loc.t) -> (cparser_match _loc e po pcl : 'expr)))); ([ Gram.Skeyword "parser"; Gram.Sopt @@ -8455,9 +9316,9 @@ module Rp = 'stream_expr Gram.Entry.t)) ], (Gram.Action.mk (fun (e : 'stream_expr) _ - (_loc : Loc.t) -> (e : 'e__6)))) ]) ], + (_loc : Loc.t) -> (e : 'e__8)))) ]) ], (Gram.Action.mk - (fun (eo : 'e__6 option) + (fun (eo : 'e__8 option) (spc : 'stream_patt_comp) (_loc : Loc.t) -> ((spc, eo) : 'stream_patt_comp_err)))) ]) ])) ()); @@ -8527,9 +9388,9 @@ module Rp = 'stream_expr Gram.Entry.t)) ], (Gram.Action.mk (fun (e : 'stream_expr) _ - (_loc : Loc.t) -> (e : 'e__7)))) ]) ], + (_loc : Loc.t) -> (e : 'e__9)))) ]) ], (Gram.Action.mk - (fun (eo : 'e__7 option) (p : 'patt) _ + (fun (eo : 'e__9 option) (p : 'patt) _ (_loc : Loc.t) -> (SpTrm (_loc, p, eo) : 'stream_patt_comp)))) ]) ])) ()); @@ -8670,7 +9531,7 @@ module G = struct let name = "Camlp4GrammarParser" let version = - "$Id: camlp4boot.ml,v 1.2 2007/02/26 16:32:47 ertai Exp $" + "$Id: Camlp4GrammarParser.ml,v 1.1.4.4 2007/04/20 14:57:28 pouillar Exp $" end module Make (Syntax : Sig.Camlp4Syntax) = struct @@ -8779,7 +9640,7 @@ module G = (fun s (r, e) -> if !r = Unused then - Warning.print e.name.loc + print_warning e.name.loc ("Unused local entry \"" ^ (s ^ "\"")) else ()) ht) @@ -8800,12 +9661,10 @@ module G = prod = [ ({ pattern = None; styp = STtok _ } as s) ]; action = None } -> { - prod = [ { (s) with - pattern = Some (Ast.PaId (_loc, Ast.IdLid (_loc, "x"))); } ]; @@ -8819,12 +9678,10 @@ module G = } | { prod = [ ({ pattern = None } as s) ]; action = None } -> { - prod = [ { (s) with - pattern = Some (Ast.PaId (_loc, Ast.IdLid (_loc, "x"))); } ]; @@ -9211,13 +10068,13 @@ module G = x ^ ("__" ^ (tvar_of_ident xs)) | _ -> failwith "internal error in the Grammar extension" let mk_name _loc i = - { expr = Ast.ExId (_loc, i); tvar = tvar_of_ident i; loc = _loc; } + { expr = Ast.ExId (_loc, i); tvar = tvar_of_ident i; loc = _loc; } let slist loc min sep symb = TXlist (loc, min, symb, sep) let sstoken _loc s = let n = mk_name _loc (Ast.IdLid (_loc, "a_" ^ s)) in TXnterm (_loc, n, None) let mk_symbol p s t = - { used = []; text = s; styp = t; pattern = Some p; } + { used = []; text = s; styp = t; pattern = Some p; } let sslist _loc min sep s = let rl = let r1 = @@ -9227,7 +10084,7 @@ module G = [ mk_symbol (Ast.PaId (_loc, Ast.IdLid (_loc, "a"))) (TXnterm (_loc, n, None)) (STquo (_loc, "a_list")) ] in let act = Ast.ExId (_loc, Ast.IdLid (_loc, "a")) - in { prod = prod; action = Some act; } in + in { prod = prod; action = Some act; } in let r2 = let prod = [ mk_symbol (Ast.PaId (_loc, Ast.IdLid (_loc, "a"))) @@ -9239,14 +10096,14 @@ module G = Ast.IdAcc (_loc, Ast.IdUid (_loc, "Qast"), Ast.IdUid (_loc, "List"))), Ast.ExId (_loc, Ast.IdLid (_loc, "a"))) - in { prod = prod; action = Some act; } + in { prod = prod; action = Some act; } in [ r1; r2 ] in let used = match sep with | Some symb -> symb.used @ s.used | None -> s.used in let used = "a_list" :: used in let text = TXrules (_loc, srules _loc "a_list" rl "") in let styp = STquo (_loc, "a_list") - in { used = used; text = text; styp = styp; pattern = None; } + in { used = used; text = text; styp = styp; pattern = None; } let ssopt _loc s = let rl = let r1 = @@ -9256,19 +10113,17 @@ module G = [ mk_symbol (Ast.PaId (_loc, Ast.IdLid (_loc, "a"))) (TXnterm (_loc, n, None)) (STquo (_loc, "a_opt")) ] in let act = Ast.ExId (_loc, Ast.IdLid (_loc, "a")) - in { prod = prod; action = Some act; } in + in { prod = prod; action = Some act; } in let r2 = let s = match s.text with | TXkwd (_loc, _) | TXtok (_loc, _, _) -> let rl = [ { - prod = [ { (s) with - pattern = Some (Ast.PaId (_loc, Ast.IdLid (_loc, "x"))); @@ -9289,7 +10144,6 @@ module G = let t = new_type_var () in { - used = []; text = TXrules (_loc, srules _loc t rl ""); styp = STquo (_loc, t); @@ -9306,12 +10160,12 @@ module G = Ast.IdAcc (_loc, Ast.IdUid (_loc, "Qast"), Ast.IdUid (_loc, "Option"))), Ast.ExId (_loc, Ast.IdLid (_loc, "a"))) - in { prod = prod; action = Some act; } + in { prod = prod; action = Some act; } in [ r1; r2 ] in let used = "a_opt" :: s.used in let text = TXrules (_loc, srules _loc "a_opt" rl "") in let styp = STquo (_loc, "a_opt") - in { used = used; text = text; styp = styp; pattern = None; } + in { used = used; text = text; styp = styp; pattern = None; } let text_of_entry _loc e = let ent = let x = e.name in @@ -9513,7 +10367,6 @@ module G = function | Ast.PaId (_loc, (Ast.IdLid (_, _))) -> Ast.PaAny _loc | Ast.PaAli (_, p, _) -> self#patt p - | Ast.PaEq (_loc, p1, p2) -> Ast.PaEq (_loc, p1, self#patt p2) | p -> super#patt p end let mk_tok _loc p t = @@ -9533,7 +10386,7 @@ module G = Ast.ExId (_loc, Ast.IdUid (_loc, "False"))))) in let descr = string_of_patt p' in let text = TXtok (_loc, match_fun, descr) - in { used = []; text = text; styp = t; pattern = Some p; } + in { used = []; text = text; styp = t; pattern = Some p; } let symbol = Gram.Entry.mk "symbol" let check_not_tok s = match s with @@ -9543,6 +10396,7 @@ module G = ("Deprecated syntax, use a sub rule. " ^ "LIST0 STRING becomes LIST0 [ x = STRING -> x ]")) | _ -> () + let _ = Camlp4_config.antiquotations := true let _ = let _ = (expr : 'expr Gram.Entry.t) and _ = (symbol : 'symbol Gram.Entry.t) in @@ -9662,9 +10516,9 @@ module G = 'semi_sep Gram.Entry.t)) ], (Gram.Action.mk (fun _ (e : 'entry) (_loc : Loc.t) -> - (e : 'e__8)))) ]) ], + (e : 'e__10)))) ]) ], (Gram.Action.mk - (fun (el : 'e__8 list) + (fun (el : 'e__10 list) (global_list : 'global option) ((gram, g) : 'extend_header) (_loc : Loc.t) -> @@ -9720,7 +10574,7 @@ module G = (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> match __camlp4_0 with - | UIDENT "GLOBAL" -> (() : 'e__9) + | UIDENT "GLOBAL" -> (() : 'e__11) | _ -> assert false))); ([ Gram.Stoken (((function @@ -9731,7 +10585,7 @@ module G = (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> match __camlp4_0 with - | LIDENT ((_)) -> (() : 'e__9) + | LIDENT ((_)) -> (() : 'e__11) | _ -> assert false))) ] ], (Gram.Action.mk (fun _ (_loc : Loc.t) -> @@ -9772,7 +10626,7 @@ module G = (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> match __camlp4_0 with - | UIDENT "GLOBAL" -> (() : 'e__10) + | UIDENT "GLOBAL" -> (() : 'e__12) | _ -> assert false))); ([ Gram.Stoken (((function @@ -9783,7 +10637,7 @@ module G = (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> match __camlp4_0 with - | LIDENT ((_)) -> (() : 'e__10) + | LIDENT ((_)) -> (() : 'e__12) | _ -> assert false))) ] ], (Gram.Action.mk (fun _ (_loc : Loc.t) -> @@ -9926,7 +10780,7 @@ module G = (Gram.Action.mk (fun (ll : 'level_list) (pos : 'position option) _ (n : 'name) (_loc : Loc.t) -> - ({ name = n; pos = pos; levels = ll; } : + ({ name = n; pos = pos; levels = ll; } : 'entry)))) ]) ])) ()); Gram.extend (position : 'position Gram.Entry.t) @@ -10077,7 +10931,7 @@ module G = -> (let x = Gram.Token.extract_string x - in x : 'e__11)))) ]); + in x : 'e__13)))) ]); Gram.Sopt (Gram.Snterm (Gram.Entry.obj @@ -10087,9 +10941,9 @@ module G = (rule_list : 'rule_list Gram.Entry.t)) ], (Gram.Action.mk (fun (rules : 'rule_list) (ass : 'assoc option) - (lab : 'e__11 option) (_loc : Loc.t) -> - ({ label = lab; assoc = ass; rules = rules; - } : 'level)))) ]) ])) + (lab : 'e__13 option) (_loc : Loc.t) -> + ({ label = lab; assoc = ass; rules = rules; } : + 'level)))) ]) ])) ()); Gram.extend (assoc : 'assoc Gram.Entry.t) ((fun () -> @@ -10187,7 +11041,7 @@ module G = (semi_sep : 'semi_sep Gram.Entry.t))) ], (Gram.Action.mk (fun (psl : 'psymbol list) (_loc : Loc.t) -> - ({ prod = psl; action = None; } : 'rule)))); + ({ prod = psl; action = None; } : 'rule)))); ([ Gram.Slist0sep (Gram.Snterm (Gram.Entry.obj @@ -10201,7 +11055,7 @@ module G = (Gram.Action.mk (fun (act : 'expr) _ (psl : 'psymbol list) (_loc : Loc.t) -> - ({ prod = psl; action = Some act; } : 'rule)))) ]) ])) + ({ prod = psl; action = Some act; } : 'rule)))) ]) ])) ()); Gram.extend (psymbol : 'psymbol Gram.Entry.t) ((fun () -> @@ -10233,7 +11087,7 @@ module G = Ast.IdUid (_loc, u)), p)) s.styp - | _ -> { (s) with pattern = Some p; } : + | _ -> { (s) with pattern = Some p; } : 'psymbol)))); ([ Gram.Stoken (((function | LIDENT ((_)) -> true | _ -> false), @@ -10258,10 +11112,10 @@ module G = | UIDENT "LEVEL" -> (let s = Gram.Token.extract_string s - in s : 'e__12) + in s : 'e__14) | _ -> assert false))) ]) ], (Gram.Action.mk - (fun (lev : 'e__12 option) (i : Gram.Token.t) + (fun (lev : 'e__14 option) (i : Gram.Token.t) (_loc : Loc.t) -> (let i = Gram.Token.extract_string i in let name = @@ -10270,7 +11124,6 @@ module G = let styp = STquo (_loc, i) in { - used = [ i ]; text = text; styp = styp; @@ -10317,7 +11170,6 @@ module G = { (s) with - text = text; pattern = Some p'; } @@ -10325,7 +11177,6 @@ module G = { (s) with - pattern = Some (Ast.PaId (_loc, @@ -10353,7 +11204,6 @@ module G = let text = TXopt (_loc, s.text) in { - used = s.used; text = text; styp = styp; @@ -10382,10 +11232,10 @@ module G = (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> match __camlp4_0 with - | UIDENT "SEP" -> (t : 'e__14) + | UIDENT "SEP" -> (t : 'e__16) | _ -> assert false))) ]) ], (Gram.Action.mk - (fun (sep : 'e__14 option) (s : 'symbol) + (fun (sep : 'e__16 option) (s : 'symbol) (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> match __camlp4_0 with | UIDENT "LIST1" -> @@ -10400,7 +11250,6 @@ module G = let text = slist _loc true sep s in { - used = used; text = text; styp = styp; @@ -10429,10 +11278,10 @@ module G = (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> match __camlp4_0 with - | UIDENT "SEP" -> (t : 'e__13) + | UIDENT "SEP" -> (t : 'e__15) | _ -> assert false))) ]) ], (Gram.Action.mk - (fun (sep : 'e__13 option) (s : 'symbol) + (fun (sep : 'e__15 option) (s : 'symbol) (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> match __camlp4_0 with | UIDENT "LIST0" -> @@ -10447,7 +11296,6 @@ module G = let text = slist _loc false sep s in { - used = used; text = text; styp = styp; @@ -10482,13 +11330,12 @@ module G = | UIDENT "LEVEL" -> (let s = Gram.Token.extract_string s - in s : 'e__16) + in s : 'e__18) | _ -> assert false))) ]) ], (Gram.Action.mk - (fun (lev : 'e__16 option) (n : 'name) + (fun (lev : 'e__18 option) (n : 'name) (_loc : Loc.t) -> ({ - used = [ n.tvar ]; text = TXnterm (_loc, n, lev); styp = STquo (_loc, n.tvar); @@ -10520,10 +11367,10 @@ module G = | UIDENT "LEVEL" -> (let s = Gram.Token.extract_string s - in s : 'e__15) + in s : 'e__17) | _ -> assert false))) ]) ], (Gram.Action.mk - (fun (lev : 'e__15 option) (il : 'qualid) _ + (fun (lev : 'e__17 option) (il : 'qualid) _ (i : Gram.Token.t) (_loc : Loc.t) -> (let i = Gram.Token.extract_string i in let n = @@ -10532,7 +11379,6 @@ module G = il)) in { - used = [ n.tvar ]; text = TXnterm (_loc, n, lev); styp = STquo (_loc, n.tvar); @@ -10547,7 +11393,6 @@ module G = (let s = Gram.Token.extract_string s in { - used = []; text = TXkwd (_loc, s); styp = STtok _loc; @@ -10602,7 +11447,6 @@ module G = Ast.PaTup (_loc, Ast.PaAny _loc)) in { - used = []; text = text; styp = STtok _loc; @@ -10660,7 +11504,6 @@ module G = let t = new_type_var () in { - used = used_of_rule_list rl; text = TXrules (_loc, srules _loc t rl ""); @@ -10679,7 +11522,6 @@ module G = match __camlp4_0 with | UIDENT "NEXT" -> ({ - used = []; text = TXnext _loc; styp = STself (_loc, "NEXT"); @@ -10697,7 +11539,6 @@ module G = match __camlp4_0 with | UIDENT "SELF" -> ({ - used = []; text = TXself _loc; styp = STself (_loc, "SELF"); @@ -10820,7 +11661,7 @@ module G = (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> match __camlp4_0 with - | UIDENT "SLIST1" -> (true : 'e__17) + | UIDENT "SLIST1" -> (true : 'e__19) | _ -> assert false))); ([ Gram.Stoken (((function @@ -10831,7 +11672,7 @@ module G = (fun (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> match __camlp4_0 with - | UIDENT "SLIST0" -> (false : 'e__17) + | UIDENT "SLIST0" -> (false : 'e__19) | _ -> assert false))) ]; Gram.Sself; Gram.Sopt @@ -10849,11 +11690,11 @@ module G = (__camlp4_0 : Gram.Token.t) (_loc : Loc.t) -> match __camlp4_0 with - | UIDENT "SEP" -> (t : 'e__18) + | UIDENT "SEP" -> (t : 'e__20) | _ -> assert false))) ]) ], (Gram.Action.mk - (fun (sep : 'e__18 option) (s : 'symbol) - (min : 'e__17) (_loc : Loc.t) -> + (fun (sep : 'e__20 option) (s : 'symbol) + (min : 'e__19) (_loc : Loc.t) -> (sslist _loc min sep s : 'symbol)))) ]) ])) ()) let sfold _loc n foldfun f e s = @@ -10879,7 +11720,6 @@ module G = styp) in { - used = s.used; text = TXmeta (_loc, n, [ s.text ], e, t); styp = styp; @@ -10908,7 +11748,6 @@ module G = styp) in { - used = s.used @ sep.used; text = TXmeta (_loc, n, [ s.text; sep.text ], e, t); styp = styp; @@ -11072,12 +11911,14 @@ module M = (* Authors: * - Daniel de Rauglaudre: initial version * - Nicolas Pouillard: refactoring + * - Aleksey Nogin: extra features and bug fixes. + * - Christopher Conway: extra feature (-D=) *) module Id = struct let name = "Camlp4MacroParser" let version = - "$Id: camlp4boot.ml,v 1.2 2007/02/26 16:32:47 ertai Exp $" + "$Id: Camlp4MacroParser.ml,v 1.1.4.5 2007/04/26 19:51:49 pouillar Exp $" end (* Added statements: @@ -11087,16 +11928,22 @@ Added statements: DEFINE DEFINE = DEFINE () = - IFDEF THEN (END | ENDIF) - IFDEF THEN ELSE (END | ENDIF) - IFNDEF THEN (END | ENDIF) - IFNDEF THEN ELSE (END | ENDIF) + IFDEF THEN [ ELSE ] (END | ENDIF) + IFNDEF THEN [ ELSE ] (END | ENDIF) + INCLUDE + + At toplevel (signature item): + + DEFINE + IFDEF THEN [ ELSE ] (END | ENDIF) + IFNDEF THEN [ ELSE ] (END | ENDIF) INCLUDE In expressions: - IFDEF THEN ELSE (END | ENDIF) - IFNDEF THEN ELSE (END | ENDIF) + IFDEF THEN [ ELSE ] (END | ENDIF) + IFNDEF THEN [ ELSE ] (END | ENDIF) + DEFINE = IN __FILE__ __LOCATION__ @@ -11107,7 +11954,7 @@ Added statements: As Camlp4 options: - -D define + -D or -D=expr define with optional value -U undefine it -I add to the search path for INCLUDE'd files @@ -11116,7 +11963,13 @@ Added statements: the macro cannot be used as a pattern, there is an error message if it is used in a pattern. + You can also define a local macro in an expression usigng the DEFINE ... IN form. + Note that local macros have lowercase names and can not take parameters. + If a macro is defined to = NOTHING, and then used as an argument to a function, + this will be equivalent to function taking one less argument. Similarly, + passing NOTHING as an argument to a macro is equivalent to "erasing" the + corresponding parameter from the macro body. The toplevel statement INCLUDE can be used to include a file containing macro definitions and also any other toplevel items. @@ -11134,7 +11987,9 @@ Added statements: include Syntax type 'a item_or_def = | SdStr of 'a | SdDef of string * ((string list) * Ast.expr) option - | SdUnd of string | SdITE of string * 'a * 'a | SdInc of string + | SdUnd of string + | SdITE of string * ('a item_or_def) list * ('a item_or_def) list + | SdLazy of 'a Lazy.t let rec list_remove x = function | (y, _) :: l when y = x -> l @@ -11142,17 +11997,6 @@ Added statements: | [] -> [] let defined = ref [] let is_defined i = List.mem_assoc i !defined - class reloc _loc = - object inherit Ast.map as super method _Loc_t = fun _ -> _loc end - class subst _loc env = - object inherit reloc _loc as super - method expr = - function - | (Ast.ExId (_, (Ast.IdLid (_, x))) | - Ast.ExId (_, (Ast.IdUid (_, x))) - as e) -> (try List.assoc x env with | Not_found -> e) - | e -> super#expr e - end let bad_patt _loc = Loc.raise _loc (Failure @@ -11161,6 +12005,7 @@ Added statements: let rec loop = function | Ast.ExApp (_, e1, e2) -> Ast.PaApp (_loc, loop e1, loop e2) + | Ast.ExNil _ -> Ast.PaNil _loc | Ast.ExId (_, (Ast.IdLid (_, x))) -> (try List.assoc x env with | Not_found -> Ast.PaId (_loc, Ast.IdLid (_loc, x))) @@ -11174,13 +12019,33 @@ Added statements: | Ast.ExRec (_, bi, (Ast.ExNil _)) -> let rec substbi = (function - | Ast.BiSem (_, b1, b2) -> + | Ast.RbSem (_, b1, b2) -> Ast.PaSem (_loc, substbi b1, substbi b2) - | Ast.BiEq (_, p, e) -> Ast.PaEq (_loc, p, loop e) + | Ast.RbEq (_, i, e) -> Ast.PaEq (_loc, i, loop e) | _ -> bad_patt _loc) in Ast.PaRec (_loc, substbi bi) | _ -> bad_patt _loc in loop + class reloc _loc = + object inherit Ast.map as super method _Loc_t = fun _ -> _loc end + class subst _loc env = + object inherit reloc _loc as super + method expr = + function + | (Ast.ExId (_, (Ast.IdLid (_, x))) | + Ast.ExId (_, (Ast.IdUid (_, x))) + as e) -> + (try List.assoc x env with | Not_found -> super#expr e) + | e -> super#expr e + method patt = + function + | (Ast.PaId (_, (Ast.IdLid (_, x))) | + Ast.PaId (_, (Ast.IdUid (_, x))) + as p) -> + (try substp _loc [] (List.assoc x env) + with | Not_found -> super#patt p) + | p -> super#patt p + end let incorrect_number loc l1 l2 = Loc.raise loc (Failure @@ -11332,6 +12197,14 @@ Added statements: | None -> ()); defined := list_remove x !defined) with | Not_found -> () + let parse_def s = + match Gram.parse_string expr (Loc.mk "") s with + | Ast.ExId (_, (Ast.IdUid (_, n))) -> define None n + | Ast.ExApp (_, + (Ast.ExApp (_, (Ast.ExId (_, (Ast.IdLid (_, "=")))), + (Ast.ExId (_, (Ast.IdUid (_, n)))))), + e) -> define (Some (([], e))) n + | _ -> invalid_arg s (* This is a list of directories to search for INCLUDE statements. *) let include_dirs = ref [] (* Add something to the above, make sure it ends with a slash. *) @@ -11355,20 +12228,73 @@ Added statements: let ch = open_in file in let st = Stream.of_channel ch in Gram.parse rule (Loc.mk file) st + let rec execute_macro nil cons = + function + | SdStr i -> i + | SdDef (x, eo) -> (define eo x; nil) + | SdUnd x -> (undef x; nil) + | SdITE (i, l1, l2) -> + execute_macro_list nil cons (if is_defined i then l1 else l2) + | SdLazy l -> Lazy.force l + and execute_macro_list nil cons = + function + | [] -> nil + | hd :: tl -> (* The evaluation order is important here *) + let il1 = execute_macro nil cons hd in + let il2 = execute_macro_list nil cons tl in cons il1 il2 let _ = let _ = (expr : 'expr Gram.Entry.t) and _ = (sig_item : 'sig_item Gram.Entry.t) and _ = (str_item : 'str_item Gram.Entry.t) and _ = (patt : 'patt Gram.Entry.t) in let grammar_entry_create = Gram.Entry.mk in - let endif : 'endif Gram.Entry.t = grammar_entry_create "endif" + let macro_def : 'macro_def Gram.Entry.t = + grammar_entry_create "macro_def" and uident : 'uident Gram.Entry.t = grammar_entry_create "uident" and opt_macro_value : 'opt_macro_value Gram.Entry.t = grammar_entry_create "opt_macro_value" + and endif : 'endif Gram.Entry.t = grammar_entry_create "endif" + and sglist : 'sglist Gram.Entry.t = grammar_entry_create "sglist" + and smlist : 'smlist Gram.Entry.t = grammar_entry_create "smlist" + and else_expr : 'else_expr Gram.Entry.t = + grammar_entry_create "else_expr" + and else_macro_def_sig : 'else_macro_def_sig Gram.Entry.t = + grammar_entry_create "else_macro_def_sig" + and else_macro_def : 'else_macro_def Gram.Entry.t = + grammar_entry_create "else_macro_def" + and macro_def_sig : 'macro_def_sig Gram.Entry.t = + grammar_entry_create "macro_def_sig" in (Gram.extend (str_item : 'str_item Gram.Entry.t) ((fun () -> ((Some Camlp4.Sig.Grammar.First), + [ (None, None, + [ ([ Gram.Snterm + (Gram.Entry.obj + (macro_def : 'macro_def Gram.Entry.t)) ], + (Gram.Action.mk + (fun (x : 'macro_def) (_loc : Loc.t) -> + (execute_macro (Ast.StNil _loc) + (fun a b -> Ast.StSem (_loc, a, b)) x : + 'str_item)))) ]) ])) + ()); + Gram.extend (sig_item : 'sig_item Gram.Entry.t) + ((fun () -> + ((Some Camlp4.Sig.Grammar.First), + [ (None, None, + [ ([ Gram.Snterm + (Gram.Entry.obj + (macro_def_sig : + 'macro_def_sig Gram.Entry.t)) ], + (Gram.Action.mk + (fun (x : 'macro_def_sig) (_loc : Loc.t) -> + (execute_macro (Ast.SgNil _loc) + (fun a b -> Ast.SgSem (_loc, a, b)) x : + 'sig_item)))) ]) ])) + ()); + Gram.extend (macro_def : 'macro_def Gram.Entry.t) + ((fun () -> + (None, [ (None, None, [ ([ Gram.Skeyword "INCLUDE"; Gram.Stoken @@ -11377,103 +12303,228 @@ Added statements: (Gram.Action.mk (fun (fname : Gram.Token.t) _ (_loc : Loc.t) -> (let fname = Gram.Token.extract_string fname - in parse_include_file str_items fname : - 'str_item)))); + in + SdLazy + (lazy + (parse_include_file str_items fname)) : + 'macro_def)))); ([ Gram.Skeyword "IFNDEF"; Gram.Snterm (Gram.Entry.obj (uident : 'uident Gram.Entry.t)); Gram.Skeyword "THEN"; Gram.Snterm - (Gram.Entry.obj - (str_items : 'str_items Gram.Entry.t)); - Gram.Skeyword "ELSE"; + (Gram.Entry.obj (smlist : 'smlist Gram.Entry.t)); Gram.Snterm (Gram.Entry.obj - (str_items : 'str_items Gram.Entry.t)); - Gram.Snterm - (Gram.Entry.obj (endif : 'endif Gram.Entry.t)) ], + (else_macro_def : + 'else_macro_def Gram.Entry.t)) ], (Gram.Action.mk - (fun _ (st2 : 'str_items) _ (st1 : 'str_items) _ + (fun (st1 : 'else_macro_def) (st2 : 'smlist) _ (i : 'uident) _ (_loc : Loc.t) -> - (if is_defined i then st2 else st1 : - 'str_item)))); - ([ Gram.Skeyword "IFNDEF"; + (SdITE (i, st1, st2) : 'macro_def)))); + ([ Gram.Skeyword "IFDEF"; Gram.Snterm (Gram.Entry.obj (uident : 'uident Gram.Entry.t)); Gram.Skeyword "THEN"; + Gram.Snterm + (Gram.Entry.obj (smlist : 'smlist Gram.Entry.t)); Gram.Snterm (Gram.Entry.obj - (str_items : 'str_items Gram.Entry.t)); + (else_macro_def : + 'else_macro_def Gram.Entry.t)) ], + (Gram.Action.mk + (fun (st2 : 'else_macro_def) (st1 : 'smlist) _ + (i : 'uident) _ (_loc : Loc.t) -> + (SdITE (i, st1, st2) : 'macro_def)))); + ([ Gram.Skeyword "UNDEF"; Gram.Snterm - (Gram.Entry.obj (endif : 'endif Gram.Entry.t)) ], + (Gram.Entry.obj (uident : 'uident Gram.Entry.t)) ], + (Gram.Action.mk + (fun (i : 'uident) _ (_loc : Loc.t) -> + (SdUnd i : 'macro_def)))); + ([ Gram.Skeyword "DEFINE"; + Gram.Snterm + (Gram.Entry.obj (uident : 'uident Gram.Entry.t)); + Gram.Snterm + (Gram.Entry.obj + (opt_macro_value : + 'opt_macro_value Gram.Entry.t)) ], (Gram.Action.mk - (fun _ (st : 'str_items) _ (i : 'uident) _ + (fun (def : 'opt_macro_value) (i : 'uident) _ (_loc : Loc.t) -> - (if is_defined i then Ast.StNil _loc else st : - 'str_item)))); - ([ Gram.Skeyword "IFDEF"; + (SdDef (i, def) : 'macro_def)))) ]) ])) + ()); + Gram.extend (macro_def_sig : 'macro_def_sig Gram.Entry.t) + ((fun () -> + (None, + [ (None, None, + [ ([ Gram.Skeyword "INCLUDE"; + Gram.Stoken + (((function | STRING ((_)) -> true | _ -> false), + "STRING _")) ], + (Gram.Action.mk + (fun (fname : Gram.Token.t) _ (_loc : Loc.t) -> + (let fname = Gram.Token.extract_string fname + in + SdLazy + (lazy + (parse_include_file sig_items fname)) : + 'macro_def_sig)))); + ([ Gram.Skeyword "IFNDEF"; Gram.Snterm (Gram.Entry.obj (uident : 'uident Gram.Entry.t)); Gram.Skeyword "THEN"; Gram.Snterm - (Gram.Entry.obj - (str_items : 'str_items Gram.Entry.t)); - Gram.Skeyword "ELSE"; + (Gram.Entry.obj (sglist : 'sglist Gram.Entry.t)); Gram.Snterm (Gram.Entry.obj - (str_items : 'str_items Gram.Entry.t)); - Gram.Snterm - (Gram.Entry.obj (endif : 'endif Gram.Entry.t)) ], + (else_macro_def_sig : + 'else_macro_def_sig Gram.Entry.t)) ], (Gram.Action.mk - (fun _ (st2 : 'str_items) _ (st1 : 'str_items) _ - (i : 'uident) _ (_loc : Loc.t) -> - (if is_defined i then st1 else st2 : - 'str_item)))); + (fun (sg1 : 'else_macro_def_sig) (sg2 : 'sglist) + _ (i : 'uident) _ (_loc : Loc.t) -> + (SdITE (i, sg1, sg2) : 'macro_def_sig)))); ([ Gram.Skeyword "IFDEF"; Gram.Snterm (Gram.Entry.obj (uident : 'uident Gram.Entry.t)); Gram.Skeyword "THEN"; Gram.Snterm - (Gram.Entry.obj - (str_items : 'str_items Gram.Entry.t)); + (Gram.Entry.obj (sglist : 'sglist Gram.Entry.t)); Gram.Snterm - (Gram.Entry.obj (endif : 'endif Gram.Entry.t)) ], + (Gram.Entry.obj + (else_macro_def_sig : + 'else_macro_def_sig Gram.Entry.t)) ], (Gram.Action.mk - (fun _ (st : 'str_items) _ (i : 'uident) _ - (_loc : Loc.t) -> - (if is_defined i then st else Ast.StNil _loc : - 'str_item)))); + (fun (sg2 : 'else_macro_def_sig) (sg1 : 'sglist) + _ (i : 'uident) _ (_loc : Loc.t) -> + (SdITE (i, sg1, sg2) : 'macro_def_sig)))); ([ Gram.Skeyword "UNDEF"; Gram.Snterm (Gram.Entry.obj (uident : 'uident Gram.Entry.t)) ], (Gram.Action.mk (fun (i : 'uident) _ (_loc : Loc.t) -> - ((undef i; Ast.StNil _loc) : 'str_item)))); + (SdUnd i : 'macro_def_sig)))); ([ Gram.Skeyword "DEFINE"; Gram.Snterm - (Gram.Entry.obj (uident : 'uident Gram.Entry.t)); + (Gram.Entry.obj (uident : 'uident Gram.Entry.t)) ], + (Gram.Action.mk + (fun (i : 'uident) _ (_loc : Loc.t) -> + (SdDef (i, None) : 'macro_def_sig)))) ]) ])) + ()); + Gram.extend (else_macro_def : 'else_macro_def Gram.Entry.t) + ((fun () -> + (None, + [ (None, None, + [ ([ Gram.Snterm + (Gram.Entry.obj (endif : 'endif Gram.Entry.t)) ], + (Gram.Action.mk + (fun _ (_loc : Loc.t) -> ([] : 'else_macro_def)))); + ([ Gram.Skeyword "ELSE"; Gram.Snterm - (Gram.Entry.obj - (opt_macro_value : - 'opt_macro_value Gram.Entry.t)) ], + (Gram.Entry.obj (smlist : 'smlist Gram.Entry.t)); + Gram.Snterm + (Gram.Entry.obj (endif : 'endif Gram.Entry.t)) ], (Gram.Action.mk - (fun (def : 'opt_macro_value) (i : 'uident) _ - (_loc : Loc.t) -> - ((define def i; Ast.StNil _loc) : 'str_item)))) ]) ])) + (fun _ (st : 'smlist) _ (_loc : Loc.t) -> + (st : 'else_macro_def)))) ]) ])) ()); - Gram.extend (sig_item : 'sig_item Gram.Entry.t) + Gram.extend + (else_macro_def_sig : 'else_macro_def_sig Gram.Entry.t) ((fun () -> - ((Some Camlp4.Sig.Grammar.First), + (None, [ (None, None, - [ ([ Gram.Skeyword "INCLUDE"; - Gram.Stoken - (((function | STRING ((_)) -> true | _ -> false), - "STRING _")) ], + [ ([ Gram.Snterm + (Gram.Entry.obj (endif : 'endif Gram.Entry.t)) ], (Gram.Action.mk - (fun (fname : Gram.Token.t) _ (_loc : Loc.t) -> - (let fname = Gram.Token.extract_string fname - in parse_include_file sig_items fname : - 'sig_item)))) ]) ])) + (fun _ (_loc : Loc.t) -> + ([] : 'else_macro_def_sig)))); + ([ Gram.Skeyword "ELSE"; + Gram.Snterm + (Gram.Entry.obj (sglist : 'sglist Gram.Entry.t)); + Gram.Snterm + (Gram.Entry.obj (endif : 'endif Gram.Entry.t)) ], + (Gram.Action.mk + (fun _ (st : 'sglist) _ (_loc : Loc.t) -> + (st : 'else_macro_def_sig)))) ]) ])) + ()); + Gram.extend (else_expr : 'else_expr Gram.Entry.t) + ((fun () -> + (None, + [ (None, None, + [ ([ Gram.Snterm + (Gram.Entry.obj (endif : 'endif Gram.Entry.t)) ], + (Gram.Action.mk + (fun _ (_loc : Loc.t) -> + (Ast.ExId (_loc, Ast.IdUid (_loc, "()")) : + 'else_expr)))); + ([ Gram.Skeyword "ELSE"; + Gram.Snterm + (Gram.Entry.obj (expr : 'expr Gram.Entry.t)); + Gram.Snterm + (Gram.Entry.obj (endif : 'endif Gram.Entry.t)) ], + (Gram.Action.mk + (fun _ (e : 'expr) _ (_loc : Loc.t) -> + (e : 'else_expr)))) ]) ])) + ()); + Gram.extend (smlist : 'smlist Gram.Entry.t) + ((fun () -> + (None, + [ (None, None, + [ ([ Gram.Slist1 + (Gram.srules smlist + [ ([ Gram.Snterm + (Gram.Entry.obj + (str_item : + 'str_item Gram.Entry.t)); + Gram.Snterm + (Gram.Entry.obj + (semi : 'semi Gram.Entry.t)) ], + (Gram.Action.mk + (fun _ (si : 'str_item) (_loc : Loc.t) + -> (SdStr si : 'e__21)))); + ([ Gram.Snterm + (Gram.Entry.obj + (macro_def : + 'macro_def Gram.Entry.t)); + Gram.Snterm + (Gram.Entry.obj + (semi : 'semi Gram.Entry.t)) ], + (Gram.Action.mk + (fun _ (d : 'macro_def) (_loc : Loc.t) + -> (d : 'e__21)))) ]) ], + (Gram.Action.mk + (fun (sml : 'e__21 list) (_loc : Loc.t) -> + (sml : 'smlist)))) ]) ])) + ()); + Gram.extend (sglist : 'sglist Gram.Entry.t) + ((fun () -> + (None, + [ (None, None, + [ ([ Gram.Slist1 + (Gram.srules sglist + [ ([ Gram.Snterm + (Gram.Entry.obj + (sig_item : + 'sig_item Gram.Entry.t)); + Gram.Snterm + (Gram.Entry.obj + (semi : 'semi Gram.Entry.t)) ], + (Gram.Action.mk + (fun _ (si : 'sig_item) (_loc : Loc.t) + -> (SdStr si : 'e__22)))); + ([ Gram.Snterm + (Gram.Entry.obj + (macro_def_sig : + 'macro_def_sig Gram.Entry.t)); + Gram.Snterm + (Gram.Entry.obj + (semi : 'semi Gram.Entry.t)) ], + (Gram.Action.mk + (fun _ (d : 'macro_def_sig) + (_loc : Loc.t) -> (d : 'e__22)))) ]) ], + (Gram.Action.mk + (fun (sgl : 'e__22 list) (_loc : Loc.t) -> + (sgl : 'sglist)))) ]) ])) ()); Gram.extend (endif : 'endif Gram.Entry.t) ((fun () -> @@ -11512,13 +12563,13 @@ Added statements: -> (let x = Gram.Token.extract_string x - in x : 'e__19)))) ], + in x : 'e__23)))) ], Gram.Skeyword ","); Gram.Skeyword ")"; Gram.Skeyword "="; Gram.Snterm (Gram.Entry.obj (expr : 'expr Gram.Entry.t)) ], (Gram.Action.mk - (fun (e : 'expr) _ _ (pl : 'e__19 list) _ + (fun (e : 'expr) _ _ (pl : 'e__23 list) _ (_loc : Loc.t) -> (Some ((pl, e)) : 'opt_macro_value)))) ]) ])) ()); @@ -11526,26 +12577,38 @@ Added statements: ((fun () -> ((Some (Camlp4.Sig.Grammar.Level "top")), [ (None, None, - [ ([ Gram.Skeyword "IFNDEF"; + [ ([ Gram.Skeyword "DEFINE"; + Gram.Stoken + (((function | LIDENT ((_)) -> true | _ -> false), + "LIDENT _")); + Gram.Skeyword "="; Gram.Sself; + Gram.Skeyword "IN"; Gram.Sself ], + (Gram.Action.mk + (fun (body : 'expr) _ (def : 'expr) _ + (i : Gram.Token.t) _ (_loc : Loc.t) -> + (let i = Gram.Token.extract_string i + in (new subst _loc [ (i, def) ])#expr body : + 'expr)))); + ([ Gram.Skeyword "IFNDEF"; Gram.Snterm (Gram.Entry.obj (uident : 'uident Gram.Entry.t)); Gram.Skeyword "THEN"; Gram.Sself; - Gram.Skeyword "ELSE"; Gram.Sself; Gram.Snterm - (Gram.Entry.obj (endif : 'endif Gram.Entry.t)) ], + (Gram.Entry.obj + (else_expr : 'else_expr Gram.Entry.t)) ], (Gram.Action.mk - (fun _ (e2 : 'expr) _ (e1 : 'expr) _ + (fun (e2 : 'else_expr) (e1 : 'expr) _ (i : 'uident) _ (_loc : Loc.t) -> (if is_defined i then e2 else e1 : 'expr)))); ([ Gram.Skeyword "IFDEF"; Gram.Snterm (Gram.Entry.obj (uident : 'uident Gram.Entry.t)); Gram.Skeyword "THEN"; Gram.Sself; - Gram.Skeyword "ELSE"; Gram.Sself; Gram.Snterm - (Gram.Entry.obj (endif : 'endif Gram.Entry.t)) ], + (Gram.Entry.obj + (else_expr : 'else_expr Gram.Entry.t)) ], (Gram.Action.mk - (fun _ (e2 : 'expr) _ (e1 : 'expr) _ + (fun (e2 : 'else_expr) (e1 : 'expr) _ (i : 'uident) _ (_loc : Loc.t) -> (if is_defined i then e1 else e2 : 'expr)))) ]) ])) ()); @@ -11658,7 +12721,7 @@ Added statements: 'uident)))) ]) ])) ())) let _ = - Options.add "-D" (Arg.String (define None)) + Options.add "-D" (Arg.String parse_def) " Define for IFDEF instruction." let _ = Options.add "-U" (Arg.String undef) @@ -11668,6 +12731,22 @@ Added statements: " Add a directory to INCLUDE search path." end let _ = let module M = Register.OCamlSyntaxExtension(Id)(Make) in () + module MakeNothing (AstFilters : Camlp4.Sig.AstFilters) = + struct + open AstFilters + open Ast + let remove_nothings = + function + | Ast.ExApp (_, e, (Ast.ExId (_, (Ast.IdUid (_, "NOTHING"))))) | + Ast.ExFun (_, + (Ast.McArr (_, (Ast.PaId (_, (Ast.IdUid (_, "NOTHING")))), + (Ast.ExNil _), e))) + -> e + | e -> e + let _ = + register_str_item_filter (Ast.map_expr remove_nothings)#str_item + end + let _ = let module M = Camlp4.Register.AstFilter(Id)(MakeNothing) in () end module D = struct @@ -11693,7 +12772,7 @@ module D = struct let name = "Camlp4DebugParser" let version = - "$Id: camlp4boot.ml,v 1.2 2007/02/26 16:32:47 ertai Exp $" + "$Id: Camlp4DebugParser.ml,v 1.1 2007/02/07 10:09:22 ertai Exp $" end module Make (Syntax : Sig.Camlp4Syntax) = struct @@ -11849,6 +12928,345 @@ module D = end let _ = let module M = Register.OCamlSyntaxExtension(Id)(Make) in () end +module L = + struct + open Camlp4 + (* -*- camlp4r -*- *) + (****************************************************************************) + (* *) + (* Objective Caml *) + (* *) + (* INRIA Rocquencourt *) + (* *) + (* Copyright 2007 Institut National de Recherche en Informatique et *) + (* en Automatique. All rights reserved. This file is distributed under *) + (* the terms of the GNU Library General Public License, with the special *) + (* exception on linking described in LICENSE at the top of the Objective *) + (* Caml source tree. *) + (* *) + (****************************************************************************) + (* Authors: + * - Nao Hirokawa: initial version + * - Nicolas Pouillard: revised syntax version + *) + module Id = + struct + let name = "Camlp4ListComprenhsion" + let version = + "$Id: Camlp4ListComprehension.ml,v 1.1 2007/02/27 15:50:57 pouillar Exp $" + end + module Make (Syntax : Sig.Camlp4Syntax) = + struct + open Sig + include Syntax + let rec loop n = + function + | [] -> None + | [ (x, _) ] -> if n = 1 then Some x else None + | _ :: l -> loop (n - 1) l + let stream_peek_nth n strm = loop n (Stream.npeek n strm) + (* usual trick *) + let test_patt_lessminus = + Gram.Entry.of_parser "test_patt_lessminus" + (fun strm -> + let rec skip_patt n = + match stream_peek_nth n strm with + | Some (KEYWORD "<-") -> n + | Some (KEYWORD ("[" | "[<")) -> + skip_patt ((ignore_upto "]" (n + 1)) + 1) + | Some (KEYWORD "(") -> + skip_patt ((ignore_upto ")" (n + 1)) + 1) + | Some (KEYWORD "{") -> + skip_patt ((ignore_upto "}" (n + 1)) + 1) + | Some (KEYWORD ("as" | "::" | ";" | "," | "_")) | + Some (LIDENT _ | UIDENT _) -> skip_patt (n + 1) + | Some _ | None -> raise Stream.Failure + and ignore_upto end_kwd n = + match stream_peek_nth n strm with + | Some (KEYWORD prm) when prm = end_kwd -> n + | Some (KEYWORD ("[" | "[<")) -> + ignore_upto end_kwd ((ignore_upto "]" (n + 1)) + 1) + | Some (KEYWORD "(") -> + ignore_upto end_kwd ((ignore_upto ")" (n + 1)) + 1) + | Some (KEYWORD "{") -> + ignore_upto end_kwd ((ignore_upto "}" (n + 1)) + 1) + | Some _ -> ignore_upto end_kwd (n + 1) + | None -> raise Stream.Failure + in skip_patt 1) + let map _loc p e l = + match (p, e) with + | (Ast.PaId (_, (Ast.IdLid (_, x))), + Ast.ExId (_, (Ast.IdLid (_, y)))) when x = y -> l + | _ -> + if Ast.is_irrefut_patt p + then + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "List"), + Ast.IdLid (_loc, "map"))), + Ast.ExFun (_loc, Ast.McArr (_loc, p, Ast.ExNil _loc, e))), + l) + else + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "List"), + Ast.IdLid (_loc, "fold_right"))), + Ast.ExFun (_loc, + Ast.McOr (_loc, + Ast.McArr (_loc, p, + Ast.ExId (_loc, Ast.IdUid (_loc, "True")), + Ast.ExApp (_loc, + Ast.ExFun (_loc, + Ast.McArr (_loc, + Ast.PaId (_loc, Ast.IdLid (_loc, "x")), + Ast.ExNil _loc, + Ast.ExFun (_loc, + Ast.McArr (_loc, + Ast.PaId (_loc, Ast.IdLid (_loc, "xs")), + Ast.ExNil _loc, + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdUid (_loc, "::")), + Ast.ExId (_loc, + Ast.IdLid (_loc, "x"))), + Ast.ExId (_loc, + Ast.IdLid (_loc, "xs"))))))), + e)), + Ast.McArr (_loc, Ast.PaAny _loc, Ast.ExNil _loc, + Ast.ExFun (_loc, + Ast.McArr (_loc, + Ast.PaId (_loc, Ast.IdLid (_loc, "l")), + Ast.ExNil _loc, + Ast.ExId (_loc, Ast.IdLid (_loc, "l")))))))), + l), + Ast.ExId (_loc, Ast.IdUid (_loc, "[]"))) + let filter _loc p b l = + if Ast.is_irrefut_patt p + then + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "List"), + Ast.IdLid (_loc, "filter"))), + Ast.ExFun (_loc, Ast.McArr (_loc, p, Ast.ExNil _loc, b))), + l) + else + Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "List"), + Ast.IdLid (_loc, "filter"))), + Ast.ExFun (_loc, + Ast.McOr (_loc, + Ast.McArr (_loc, p, + Ast.ExId (_loc, Ast.IdUid (_loc, "True")), b), + Ast.McArr (_loc, Ast.PaAny _loc, Ast.ExNil _loc, + Ast.ExId (_loc, Ast.IdUid (_loc, "False")))))), + l) + let concat _loc l = + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdAcc (_loc, Ast.IdUid (_loc, "List"), + Ast.IdLid (_loc, "concat"))), + l) + let rec compr _loc e = + function + | [ `gen ((p, l)) ] -> map _loc p e l + | `gen ((p, l)) :: `cond b :: items -> + compr _loc e ((`gen ((p, (filter _loc p b l)))) :: items) + | `gen ((p, l)) :: ((`gen ((_, _)) :: _ as is)) -> + concat _loc (map _loc p (compr _loc e is) l) + | _ -> raise Stream.Failure + let _ = + Gram.delete_rule expr + [ Gram.Skeyword "["; + Gram.Snterm + (Gram.Entry.obj + (sem_expr_for_list : 'sem_expr_for_list Gram.Entry.t)); + Gram.Skeyword "]" ] + let is_revised = + try + (Gram.delete_rule expr + [ Gram.Skeyword "["; + Gram.Snterm + (Gram.Entry.obj + (sem_expr_for_list : 'sem_expr_for_list Gram.Entry.t)); + Gram.Skeyword "::"; + Gram.Snterm (Gram.Entry.obj (expr : 'expr Gram.Entry.t)); + Gram.Skeyword "]" ]; + true) + with | Not_found -> false + let comprehension_or_sem_expr_for_list = + Gram.Entry.mk "comprehension_or_sem_expr_for_list" + let _ = + let _ = (expr : 'expr Gram.Entry.t) + and _ = + (comprehension_or_sem_expr_for_list : + 'comprehension_or_sem_expr_for_list Gram.Entry.t) in + let grammar_entry_create = Gram.Entry.mk in + let item : 'item Gram.Entry.t = grammar_entry_create "item" + in + (Gram.extend (expr : 'expr Gram.Entry.t) + ((fun () -> + ((Some (Camlp4.Sig.Grammar.Level "simple")), + [ (None, None, + [ ([ Gram.Skeyword "["; + Gram.Snterm + (Gram.Entry.obj + (comprehension_or_sem_expr_for_list : + 'comprehension_or_sem_expr_for_list Gram. + Entry.t)); + Gram.Skeyword "]" ], + (Gram.Action.mk + (fun _ (e : 'comprehension_or_sem_expr_for_list) + _ (_loc : Loc.t) -> (e : 'expr)))) ]) ])) + ()); + Gram.extend + (comprehension_or_sem_expr_for_list : + 'comprehension_or_sem_expr_for_list Gram.Entry.t) + ((fun () -> + (None, + [ (None, None, + [ ([ Gram.Snterml + (Gram.Entry.obj (expr : 'expr Gram.Entry.t), + "top") ], + (Gram.Action.mk + (fun (e : 'expr) (_loc : Loc.t) -> + (Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, Ast.IdUid (_loc, "::")), + e), + Ast.ExId (_loc, Ast.IdUid (_loc, "[]"))) : + 'comprehension_or_sem_expr_for_list)))); + ([ Gram.Snterml + (Gram.Entry.obj (expr : 'expr Gram.Entry.t), + "top"); + Gram.Skeyword "|"; + Gram.Slist1sep + (Gram.Snterm + (Gram.Entry.obj (item : 'item Gram.Entry.t)), + Gram.Skeyword ";") ], + (Gram.Action.mk + (fun (l : 'item list) _ (e : 'expr) + (_loc : Loc.t) -> + (compr _loc e l : + 'comprehension_or_sem_expr_for_list)))); + ([ Gram.Snterml + (Gram.Entry.obj (expr : 'expr Gram.Entry.t), + "top"); + Gram.Skeyword ";" ], + (Gram.Action.mk + (fun _ (e : 'expr) (_loc : Loc.t) -> + (Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, Ast.IdUid (_loc, "::")), + e), + Ast.ExId (_loc, Ast.IdUid (_loc, "[]"))) : + 'comprehension_or_sem_expr_for_list)))); + ([ Gram.Snterml + (Gram.Entry.obj (expr : 'expr Gram.Entry.t), + "top"); + Gram.Skeyword ";"; + Gram.Snterm + (Gram.Entry.obj + (sem_expr_for_list : + 'sem_expr_for_list Gram.Entry.t)) ], + (Gram.Action.mk + (fun (mk : 'sem_expr_for_list) _ (e : 'expr) + (_loc : Loc.t) -> + (Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, Ast.IdUid (_loc, "::")), + e), + mk + (Ast.ExId (_loc, Ast.IdUid (_loc, "[]")))) : + 'comprehension_or_sem_expr_for_list)))) ]) ])) + ()); + Gram.extend (item : 'item Gram.Entry.t) + ((fun () -> + (None, + [ (None, None, + [ ([ Gram.Snterml + (Gram.Entry.obj (expr : 'expr Gram.Entry.t), + "top") ], + (Gram.Action.mk + (fun (e : 'expr) (_loc : Loc.t) -> + (`cond e : 'item)))); + ([ Gram.Snterm + (Gram.Entry.obj + (test_patt_lessminus : + 'test_patt_lessminus Gram.Entry.t)); + Gram.Snterm + (Gram.Entry.obj (patt : 'patt Gram.Entry.t)); + Gram.Skeyword "<-"; + Gram.Snterml + (Gram.Entry.obj (expr : 'expr Gram.Entry.t), + "top") ], + (Gram.Action.mk + (fun (e : 'expr) _ (p : 'patt) _ (_loc : Loc.t) + -> (`gen ((p, e)) : 'item)))) ]) ])) + ())) + let _ = + if is_revised + then + (let _ = (expr : 'expr Gram.Entry.t) + and _ = + (comprehension_or_sem_expr_for_list : + 'comprehension_or_sem_expr_for_list Gram.Entry.t) + in + Gram.extend + (comprehension_or_sem_expr_for_list : + 'comprehension_or_sem_expr_for_list Gram.Entry.t) + ((fun () -> + (None, + [ (None, None, + [ ([ Gram.Snterml + (Gram.Entry.obj (expr : 'expr Gram.Entry.t), + "top"); + Gram.Skeyword "::"; + Gram.Snterm + (Gram.Entry.obj (expr : 'expr Gram.Entry.t)) ], + (Gram.Action.mk + (fun (last : 'expr) _ (e : 'expr) + (_loc : Loc.t) -> + (Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdUid (_loc, "::")), + e), + last) : + 'comprehension_or_sem_expr_for_list)))); + ([ Gram.Snterml + (Gram.Entry.obj (expr : 'expr Gram.Entry.t), + "top"); + Gram.Skeyword ";"; + Gram.Snterm + (Gram.Entry.obj + (sem_expr_for_list : + 'sem_expr_for_list Gram.Entry.t)); + Gram.Skeyword "::"; + Gram.Snterm + (Gram.Entry.obj (expr : 'expr Gram.Entry.t)) ], + (Gram.Action.mk + (fun (last : 'expr) _ + (mk : 'sem_expr_for_list) _ (e : 'expr) + (_loc : Loc.t) -> + (Ast.ExApp (_loc, + Ast.ExApp (_loc, + Ast.ExId (_loc, + Ast.IdUid (_loc, "::")), + e), + mk last) : + 'comprehension_or_sem_expr_for_list)))) ]) ])) + ())) + else () + end + let _ = let module M = Register.OCamlSyntaxExtension(Id)(Make) in () + end module P = struct (****************************************************************************) @@ -11889,7 +13307,7 @@ module B = * - Daniel de Rauglaudre: initial version * - Nicolas Pouillard: refactoring *) - (* $Id: camlp4boot.ml,v 1.2 2007/02/26 16:32:47 ertai Exp $ *) + (* $Id: Camlp4Bin.ml,v 1.14.2.3 2007/03/30 15:50:12 pouillar Exp $ *) open Camlp4 open PreCast.Syntax open PreCast @@ -11897,7 +13315,7 @@ module B = module CleanAst = Camlp4.Struct.CleanAst.Make(Ast) module SSet = Set.Make(String) let pa_r = "Camlp4OCamlRevisedParser" - (* value pa_rr = "Camlp4OCamlrrParser"; *) + let pa_rr = "Camlp4OCamlReloadedParser" let pa_o = "Camlp4OCamlParser" let pa_rp = "Camlp4OCamlRevisedParserParser" let pa_op = "Camlp4OCamlParserParser" @@ -11907,8 +13325,10 @@ module B = let pa_q = "Camlp4QuotationExpander" let pa_rq = "Camlp4OCamlRevisedQuotationExpander" let pa_oq = "Camlp4OCamlOriginalQuotationExpander" + let pa_l = "Camlp4ListComprehension" + open Register let dyn_loader = - ref (fun _ -> raise (Match_failure ("./camlp4/Camlp4Bin.ml", 42, 24))) + ref (fun _ -> raise (Match_failure ("./camlp4/Camlp4Bin.ml", 45, 24))) let rcall_callback = ref (fun () -> ()) let loaded_modules = ref SSet.empty let add_to_loaded_modules name = @@ -11921,7 +13341,9 @@ module B = let load = List.iter (fun n -> - if SSet.mem n !loaded_modules + if + (SSet.mem n !loaded_modules) || + (List.mem n !Register.loaded_modules) then () else (add_to_loaded_modules n; @@ -11932,10 +13354,13 @@ module B = ("pa_r.cmo" | "r" | "ocamlr" | "ocamlrevised" | "camlp4ocamlrevisedparser.cmo")) -> load [ pa_r ] - | (* | ("Parsers"|"", "rr" | "OCamlrr") -> load [pa_r; pa_rr] *) - (("Parsers" | ""), - ("pa_o.cmo" | "o" | "ocaml" | "camlp4ocamlparser.cmo")) - -> load [ pa_r; pa_o ] + | (("Parsers" | ""), + ("rr" | "reloaded" | "ocamlreloaded" | + "camlp4ocamlreloadedparser.cmo")) + -> load [ pa_rr ] + | (("Parsers" | ""), + ("pa_o.cmo" | "o" | "ocaml" | "camlp4ocamlparser.cmo")) -> + load [ pa_r; pa_o ] | (("Parsers" | ""), ("pa_rp.cmo" | "rp" | "rparser" | "camlp4ocamlrevisedparserparser.cmo")) @@ -11946,23 +13371,26 @@ module B = | (("Parsers" | ""), ("pa_extend.cmo" | "pa_extend_m.cmo" | "g" | "grammar" | "camlp4grammarparser.cmo")) - -> load [ pa_r; pa_g ] + -> load [ pa_g ] | (("Parsers" | ""), ("pa_macro.cmo" | "m" | "macro" | "camlp4macroparser.cmo")) -> - load [ pa_r; pa_m ] + load [ pa_m ] | (("Parsers" | ""), ("q" | "camlp4quotationexpander.cmo")) -> - load [ pa_r; pa_qb; pa_q ] + load [ pa_qb; pa_q ] | (("Parsers" | ""), - ("q_MLast.cmo" | "rq" | + ("q_mlast.cmo" | "rq" | "camlp4ocamlrevisedquotationexpander.cmo")) - -> load [ pa_r; pa_qb; pa_rq ] + -> load [ pa_qb; pa_rq ] | (("Parsers" | ""), ("oq" | "camlp4ocamloriginalquotationexpander.cmo")) -> load [ pa_r; pa_o; pa_qb; pa_oq ] | (("Parsers" | ""), "rf") -> - load [ pa_r; pa_rp; pa_qb; pa_q; pa_g; pa_m ] + load [ pa_r; pa_rp; pa_qb; pa_q; pa_g; pa_l; pa_m ] | (("Parsers" | ""), "of") -> - load [ pa_r; pa_o; pa_rp; pa_op; pa_qb; pa_rq; pa_g; pa_m ] + load + [ pa_r; pa_o; pa_rp; pa_op; pa_qb; pa_rq; pa_g; pa_l; pa_m ] + | (("Parsers" | ""), ("comp" | "camlp4listcomprehension.cmo")) -> + load [ pa_l ] | (("Filters" | ""), ("lift" | "camlp4astlifter.cmo")) -> load [ "Camlp4AstLifter" ] | (("Filters" | ""), ("exn" | "camlp4exceptiontracer.cmo")) -> @@ -11984,11 +13412,9 @@ module B = | (("Printers" | ""), ("pr_r.cmo" | "r" | "ocamlr" | "camlp4ocamlrevisedprinter.cmo")) -> Register.enable_ocamlr_printer () - | (* | ("Printers"|"", "rr" | "OCamlrr" | "Camlp4Printers/OCamlrr.cmo") -> *) - (* Register.enable_ocamlrr_printer () *) - (("Printers" | ""), - ("pr_o.cmo" | "o" | "ocaml" | "camlp4ocamlprinter.cmo")) - -> Register.enable_ocaml_printer () + | (("Printers" | ""), + ("pr_o.cmo" | "o" | "ocaml" | "camlp4ocamlprinter.cmo")) -> + Register.enable_ocaml_printer () | (("Printers" | ""), ("pr_dump.cmo" | "p" | "dumpocaml" | "camlp4ocamlastdumper.cmo")) -> Register.enable_dump_ocaml_ast_printer () @@ -12019,7 +13445,7 @@ module B = | None -> None) in let loc = Loc.mk name in - (Warning.current := print_warning; + (current_warning := print_warning; let ic = if name = "-" then stdin else open_in_bin name in let cs = Stream.of_channel ic in let clear () = if name = "-" then () else close_in ic in @@ -12040,14 +13466,13 @@ module B = function | Ast.StDir (loc, n, (Ast.ExStr (_, s))) -> Some ((loc, n, s)) | _ -> None - open Register let process_intf dyn_loader name = process dyn_loader name CurrentParser.parse_interf CurrentPrinter. - print_interf new CleanAst.clean_ast#sig_item AstFilters. + print_interf (new CleanAst.clean_ast)#sig_item AstFilters. fold_interf_filters gind let process_impl dyn_loader name = process dyn_loader name CurrentParser.parse_implem CurrentPrinter. - print_implem new CleanAst.clean_ast#str_item AstFilters. + print_implem (new CleanAst.clean_ast)#str_item AstFilters. fold_implem_filters gimd let just_print_the_version () = (printf "%s@." Camlp4_config.version; exit 0) diff --git a/camlp4/boot/camlp4boot.ml4 b/camlp4/boot/camlp4boot.ml4 index 582ce9c2..4c4c46d1 100644 --- a/camlp4/boot/camlp4boot.ml4 +++ b/camlp4/boot/camlp4boot.ml4 @@ -5,5 +5,6 @@ module Rp = struct INCLUDE "camlp4/Camlp4Parsers/Camlp4OCamlRevisedParserParser. module G = struct INCLUDE "camlp4/Camlp4Parsers/Camlp4GrammarParser.ml"; end; module M = struct INCLUDE "camlp4/Camlp4Parsers/Camlp4MacroParser.ml"; end; module D = struct INCLUDE "camlp4/Camlp4Parsers/Camlp4DebugParser.ml"; end; +module L = struct INCLUDE "camlp4/Camlp4Parsers/Camlp4ListComprehension.ml"; end; module P = struct INCLUDE "camlp4/Camlp4Printers/Camlp4OCamlAstDumper.ml"; end; module B = struct INCLUDE "camlp4/Camlp4Bin.ml"; end; diff --git a/camlp4/camlp4fulllib.mllib b/camlp4/camlp4fulllib.mllib new file mode 100644 index 00000000..311d478b --- /dev/null +++ b/camlp4/camlp4fulllib.mllib @@ -0,0 +1,42 @@ +Camlp4 +Linenum +Misc +Warnings +Location +Config +Camlp4_config +Myocamlbuild_config +Longident + +Camlp4Parsers/Camlp4AstLoader +Camlp4Parsers/Camlp4DebugParser +Camlp4Parsers/Camlp4GrammarParser +Camlp4Parsers/Camlp4ListComprehension +Camlp4Parsers/Camlp4MacroParser +Camlp4Parsers/Camlp4OCamlOriginalQuotationExpander +Camlp4Parsers/Camlp4OCamlParser +Camlp4Parsers/Camlp4OCamlParserParser +Camlp4Parsers/Camlp4OCamlRevisedParser +Camlp4Parsers/Camlp4OCamlRevisedParserParser +Camlp4Parsers/Camlp4OCamlRevisedQuotationExpander +Camlp4Parsers/Camlp4QuotationCommon +Camlp4Parsers/Camlp4QuotationExpander + +Camlp4Printers/Camlp4AstDumper +Camlp4Printers/Camlp4AutoPrinter +Camlp4Printers/Camlp4NullDumper +Camlp4Printers/Camlp4OCamlAstDumper +Camlp4Printers/Camlp4OCamlPrinter +Camlp4Printers/Camlp4OCamlRevisedPrinter + +Camlp4Filters/Camlp4AstLifter +Camlp4Filters/Camlp4ExceptionTracer +Camlp4Filters/Camlp4FoldGenerator +Camlp4Filters/Camlp4LocationStripper +Camlp4Filters/Camlp4MapGenerator +Camlp4Filters/Camlp4MetaGenerator +Camlp4Filters/Camlp4Profiler +Camlp4Filters/Camlp4Tracer +Camlp4Filters/Camlp4TrashRemover + +Camlp4Top diff --git a/camlp4/examples/_tags b/camlp4/examples/_tags new file mode 100644 index 00000000..18742e40 --- /dev/null +++ b/camlp4/examples/_tags @@ -0,0 +1,8 @@ +"apply_operator.ml" or "type_quotation.ml": camlp4rf, use_camlp4 +"lambda_quot.ml": camlp4rf, use_camlp4_full +"lambda_quot_o.ml": camlp4of, use_camlp4_full +"macros.ml" or "dirac.ml" or "puzzle.ml" or : camlp4of, use_camlp4 +"test_macros.ml": pp(camlp4of ./macros.cmo) +"lambda_test.ml": pp(camlp4of ./lambda_quot_o.cmo) +: camlp4of, use_camlp4_full, use_dynlink +<{free_vars_test,poly_rec}.*>: camlp4rf, use_camlp4 diff --git a/camlp4/examples/apply_operator.ml b/camlp4/examples/apply_operator.ml new file mode 100644 index 00000000..2d4d2cb0 --- /dev/null +++ b/camlp4/examples/apply_operator.ml @@ -0,0 +1,6 @@ +open Camlp4.PreCast; +AstFilters.register_str_item_filter + (Ast.map_expr + (fun + [ <:expr@loc< \& $e1$ $e2$ >> -> <:expr@loc< $e1$ $e2$ >> + | e -> e ]))#str_item; diff --git a/camlp4/examples/apply_operator_test.ml b/camlp4/examples/apply_operator_test.ml new file mode 100644 index 00000000..6644b943 --- /dev/null +++ b/camlp4/examples/apply_operator_test.ml @@ -0,0 +1 @@ +f& g& h x diff --git a/camlp4/examples/lambda_quot.ml b/camlp4/examples/lambda_quot.ml new file mode 100644 index 00000000..654511af --- /dev/null +++ b/camlp4/examples/lambda_quot.ml @@ -0,0 +1,38 @@ +open Camlp4.PreCast; +module CamlSyntax = Camlp4OCamlParser.Make (Camlp4OCamlRevisedParser.Make Syntax); + +value expr_of_string = CamlSyntax.Gram.parse_string CamlSyntax.expr_eoi; + +module LambdaGram = MakeGram Lexer; + +value term = LambdaGram.Entry.mk "term"; +value term_eoi = LambdaGram.Entry.mk "lambda term quotation"; + +Camlp4_config.antiquotations.val := True; + +EXTEND LambdaGram + GLOBAL: term term_eoi; + term: + [ "top" + [ "fun"; v = var; "->"; t = term -> <:expr< `Lam $v$ $t$ >> ] + | "app" + [ t1 = SELF; t2 = SELF -> <:expr< `App $t1$ $t2$ >> ] + | "simple" + [ `ANTIQUOT (""|"term") a -> expr_of_string _loc a + | v = var -> <:expr< `Var $v$ >> + | "("; t = term; ")" -> t ] + ]; + var: + [[ v = LIDENT -> <:expr< $str:v$ >> + | `ANTIQUOT (""|"var") a -> expr_of_string _loc a + ]]; + term_eoi: + [[ t = term; `EOI -> t ]]; +END; + +value expand_lambda_quot_expr loc _loc_name_opt quotation_contents = + LambdaGram.parse_string term_eoi loc quotation_contents; + +Syntax.Quotation.add "lam" Syntax.Quotation.DynAst.expr_tag expand_lambda_quot_expr; + +Syntax.Quotation.default.val := "lam"; diff --git a/camlp4/examples/lambda_test.ml b/camlp4/examples/lambda_test.ml new file mode 100644 index 00000000..746aea44 --- /dev/null +++ b/camlp4/examples/lambda_test.ml @@ -0,0 +1,13 @@ +let id = << fun x -> x >> +(* Imported and traduced from CCT *) +let zero = << fun s -> fun z -> z >> +let succ = << fun n -> fun s -> fun z -> s n >> +let one = << $succ$ $zero$ >> +let iota = << fun x -> z >> +let rho = << fun m -> fun r -> (s m (m r iota r)) >> +let rec_nat = + << fun n -> fun s -> fun z -> n $rho$ $iota$ $rho$ >> +let plus = << fun n -> fun m -> $rec_nat$ n (fun n -> fun p -> $succ$ p) m >> +let times = << fun n -> fun m -> $rec_nat$ n (fun n -> fun p -> $plus$ m p) $zero$ >> +let fact = << fun n -> $rec_nat$ n (fun n -> fun p -> $times$ ($succ$ n) p) $one$ >> + diff --git a/camlp4/examples/macros.ml b/camlp4/examples/macros.ml new file mode 100644 index 00000000..fe7b7392 --- /dev/null +++ b/camlp4/examples/macros.ml @@ -0,0 +1,67 @@ +open Camlp4.PreCast;; +let foldr_funs = ref [];; +let foldl_funs = ref [];; +AstFilters.register_str_item_filter begin + Ast.map_expr begin function + | <:expr@loc< def_foldr $lid:name$ $e$ >> -> + foldr_funs := (name, e) :: !foldr_funs; <:expr@loc<()>> + | <:expr@loc< def_foldl $lid:name$ $e$ >> -> + foldl_funs := (name, e) :: !foldl_funs; <:expr@loc<()>> + | e -> e + end +end#str_item;; +AstFilters.register_str_item_filter begin + Ast.map_expr begin function + | <:expr@loc< $lid:name$($tup:e$) >> when List.mem_assoc name !foldl_funs -> + let op = List.assoc name !foldl_funs in + let rec foldl = + function + | [] -> assert false + | [x] -> x + | x :: xs -> <:expr@loc< $op$ $foldl xs$ $x$ >> + in foldl (List.rev (Ast.list_of_expr e [])) + | <:expr@loc< $lid:name$($tup:e$) >> when List.mem_assoc name !foldr_funs -> + let op = List.assoc name !foldr_funs in + let rec foldr = + function + | [] -> assert false + | [x] -> x + | x :: xs -> <:expr@loc< $op$ $x$ $foldr xs$ >> + in foldr (Ast.list_of_expr e []) + | e -> e + end +end#str_item;; +(* + +AstFilters.register_str_item_filter begin + Ast.map_expr begin function + | <:expr@loc< foldl($lid:op$, $e$) >> -> + let rec foldl = + function + | [] -> assert false + | [x] -> x + | x :: xs -> <:expr@loc< $lid:op$ $foldl xs$ $x$ >> + in foldl (List.rev (Ast.list_of_expr e [])) + | <:expr@loc< foldr($lid:op$, $e$) >> -> + let rec foldr = + function + | [] -> assert false + | [x] -> x + | x :: xs -> <:expr@loc< $lid:op$ $x$ $foldr xs$ >> + in foldr (Ast.list_of_expr e []) + | e -> e + end +end#str_item;; + +AstFilters.register_str_item_filter begin + Ast.map_expr begin function + | <:expr@loc< \!+ ($tup:e$) >> -> + begin match Ast.list_of_expr e [] with + | [] | [_] -> assert false + | x :: xs -> List.fold_left (fun acc x -> <:expr@loc< $acc$ + $x$ >>) x xs + end + | <:expr< \!+ $e$ >> -> e + | e -> e + end +end#str_item;; +*) diff --git a/camlp4/examples/parse_files.ml b/camlp4/examples/parse_files.ml new file mode 100644 index 00000000..3e7e30fb --- /dev/null +++ b/camlp4/examples/parse_files.ml @@ -0,0 +1,31 @@ +open Camlp4.PreCast;; + +module CamlGram = MakeGram(Lexer);; + +module Caml = + Camlp4.Printers.OCaml.Make + (Camlp4OCamlParser.Make + (Camlp4OCamlRevisedParser.Make + (Camlp4.OCamlInitSyntax.Make(Ast)(Gram)(Quotation))));; + +let parse f = + let ic = open_in f in + let strm = Stream.of_channel ic in + let res = Caml.parse_implem (Loc.mk f) strm in + close_in ic; res;; + +let ghost = Loc.ghost;; + +let main () = + let a = parse "apply_operator_test.ml" in + let b = parse "global_handler_test.ml" in + Caml.print_implem + <:str_item@ghost< + module Apply_operator_test = struct $a$ end;; + module Global_handler_test = struct $b$ end >> +;; + +try main () +with e -> + Format.eprintf "error: %a@." Camlp4.ErrorHandler.print e; + exit 1;; diff --git a/camlp4/examples/test_macros.ml b/camlp4/examples/test_macros.ml new file mode 100644 index 00000000..1e1b172b --- /dev/null +++ b/camlp4/examples/test_macros.ml @@ -0,0 +1,15 @@ +(* DEFINE F(x, y, z) = x + y * z;; *) +(* F(F(1, 2, 3), 4, 5);; *) + +(* !+ (1, 2, 3, 4);; *) + +(* foldl(( + ), 1, 2, 3, 4);; *) +(* foldr(cons, 1, 2, 3, []);; *) + +let cons x xs = x :: xs;; + +def_foldl ( !+ ) ( + );; +def_foldr ( !:: ) cons;; + +!+ (1, 2, 3, 4);; +!:: (1, 2, 3, []);; diff --git a/camlp4/examples/test_type_quotation.ml b/camlp4/examples/test_type_quotation.ml new file mode 100644 index 00000000..772dfcfc --- /dev/null +++ b/camlp4/examples/test_type_quotation.ml @@ -0,0 +1,3 @@ +type t1 = <:power< 6 | int >> +type t2 = <:power< 3 | int -> int >> -> int +type t3 = <:power< 3 | int -> <:power< 2 | int >> >> -> int diff --git a/camlp4/examples/type_quotation.ml b/camlp4/examples/type_quotation.ml new file mode 100644 index 00000000..5dae046f --- /dev/null +++ b/camlp4/examples/type_quotation.ml @@ -0,0 +1,18 @@ +open Camlp4.PreCast; + +value rec mk_tuple _loc t n = + if n <= 1 then t else <:ctyp< $t$ * $mk_tuple _loc t (n - 1)$ >>; + +value ctyp_eoi = Gram.Entry.mk "ctyp eoi"; + +EXTEND Gram + ctyp_eoi: [[ t = Syntax.ctyp; `EOI -> t ]]; +END; + +value exp _loc _ s = + Scanf.sscanf s " %d | %[^!]" begin fun n s -> + let t = Syntax.Gram.parse_string ctyp_eoi _loc(* not accurate *) s in + <:ctyp< $tup:mk_tuple _loc t n$ >> + end; + +Quotation.add "power" Quotation.DynAst.ctyp_tag exp; diff --git a/config/Makefile.msvc b/config/Makefile.msvc index e8aae0b3..2e794134 100644 --- a/config/Makefile.msvc +++ b/config/Makefile.msvc @@ -11,7 +11,7 @@ # # ######################################################################### -# $Id: Makefile.msvc,v 1.21 2007/03/01 14:20:33 xleroy Exp $ +# $Id: Makefile.msvc,v 1.21.2.2 2007/05/12 13:50:20 pouillar Exp $ # Configuration for Windows, Visual C++ compiler @@ -92,17 +92,21 @@ NATIVECCLIBS=advapi32.lib ### How to invoke the C preprocessor CPP=cl /nologo /EP -### How to merge a .manifest (if any) in a .exe or .dll -MERGEMANIFEST=test ! -f $(1).manifest || mt -nologo -outputresource:$(1) -manifest $(1).manifest && rm -f $(1).manifest -#ml let mergemanifest out = Printf.sprintf "test ! -f %s.manifest || mt -nologo -outputresource:%s -manifest %s.manifest && rm -f %s.manifest" out out out out;; +### How to merge a .manifest (if any) in a .exe +MERGEMANIFESTEXE=test ! -f $(1).manifest || mt -nologo -outputresource:$(1) -manifest $(1).manifest && rm -f $(1).manifest +#ml let mergemanifestexe out = Printf.sprintf "test ! -f %s.manifest || mt -nologo -outputresource:%s -manifest %s.manifest && rm -f %s.manifest" out out out out;; ### How to build an EXE -MKEXE=$(BYTECC) /Fe$(1) $(2) && ($(MERGEMANIFEST)) -#ml let mkexe out files opts = Printf.sprintf "%s /Fe%s %s %s && (%s)" bytecc out opts files (mergemanifest out);; +MKEXE=$(BYTECC) /Fe$(1) $(2) && ($(MERGEMANIFESTEXE)) +#ml let mkexe out files opts = Printf.sprintf "%s /Fe%s %s %s && (%s)" bytecc out opts files (mergemanifestexe out);; + +### How to merge a .manifest (if any) in a .dll +MERGEMANIFESTDLL=test ! -f $(1).manifest || mt -nologo -outputresource:"$(1);\#2" -manifest $(1).manifest && rm -f $(1).manifest +#ml let mergemanifestdll out = Printf.sprintf "test ! -f %s.manifest || mt -nologo -outputresource:\"%s;\\#2\" -manifest %s.manifest && rm -f %s.manifest" out out out out;; ### How to build a DLL -MKDLL=link /nologo /dll /out:$(1) /implib:$(2) $(3) && ($(MERGEMANIFEST)) -#ml let mkdll out implib files opts = Printf.sprintf "link /nologo /dll /out:%s /implib:%s %s %s && (%s)" out implib opts files (mergemanifest out);; +MKDLL=link /nologo /dll /out:$(1) /implib:$(2) $(3) && ($(MERGEMANIFESTDLL)) +#ml let mkdll out implib files opts = Printf.sprintf "link /nologo /dll /out:%s /implib:%s %s %s && (%s)" out implib opts files (mergemanifestdll out);; ### How to build a static library MKLIB=link /lib /nologo /out:$(1) $(2) diff --git a/configure b/configure index 15272f76..13ddcedb 100755 --- a/configure +++ b/configure @@ -13,7 +13,7 @@ # # ######################################################################### -# $Id: configure,v 1.244.4.1 2007/03/06 16:02:09 xleroy Exp $ +# $Id: configure,v 1.244.4.2 2007/05/03 12:49:56 xleroy Exp $ configure_options="$*" prefix=/usr/local @@ -488,7 +488,7 @@ mksharedlibrpath='' if test $withsharedlibs = "yes"; then case "$host" in - *-*-linux-gnu|*-*-linux|*-*-freebsd[3-9]*|*-*-gnu*) + *-*-linux-gnu|*-*-linux|*-*-freebsd[3-9]*|*-*-netbsd*|*-*-gnu*) sharedcccompopts="-fPIC" mksharedlib="$bytecc -shared -o" bytecclinkopts="$bytecclinkopts -Wl,-E" diff --git a/man/ocaml.m b/man/ocaml.m index 7f7e5a64..47c263a7 100644 --- a/man/ocaml.m +++ b/man/ocaml.m @@ -25,7 +25,7 @@ The command is the toplevel system for Objective Caml, that permits interactive use of the Objective Caml system through a read-eval-print loop. In this mode, the system repeatedly reads Caml -phrases from the input, then typechecks, compile and evaluate +phrases from the input, then typechecks, compiles and evaluates them, then prints the inferred type and result value, if any. The system prints a # (sharp) prompt before reading each phrase. diff --git a/myocamlbuild.ml b/myocamlbuild.ml index d5c17192..0e522f0e 100644 --- a/myocamlbuild.ml +++ b/myocamlbuild.ml @@ -826,7 +826,7 @@ dep ["ocaml"; "compile"; "file:camlp4/Camlp4/Sig.ml"] mk_camlp4_bin "camlp4" [];; mk_camlp4 "camlp4boot" ~unix:false - [pa_r; pa_qc; pa_q; pa_rp; pa_g; pa_macro; pa_debug] [pr_dump] [top_rprint];; + [pa_r; pa_qc; pa_q; pa_rp; pa_g; pa_macro; pa_debug; pa_l] [pr_dump] [top_rprint];; mk_camlp4 "camlp4r" [pa_r; pa_rp] [pr_a] [top_rprint];; mk_camlp4 "camlp4rf" @@ -861,7 +861,7 @@ Pathname.define_context "otherlibs/labltk/browser" file_rule "otherlibs/labltk/compiler/copyright" ~dep:"otherlibs/labltk/compiler/copyright" ~prod:"otherlibs/labltk/compiler/copyright.ml" - ~cache:(fun _ -> "0.1") + ~cache:(fun _ _ -> "0.1") begin fun _ oc -> Printf.fprintf oc "let copyright = \"%a\";;\n\ let write ~w = w copyright;;" @@ -1036,7 +1036,7 @@ rule "labltktop" let labltk_installdir = C.libdir/"labltk" in file_rule "labltk" ~prod:"otherlibs/labltk/lib/labltk" - ~cache:(fun _ -> labltk_installdir) + ~cache:(fun _ _ -> labltk_installdir) begin fun _ oc -> Printf.fprintf oc "#!/bin/sh\n\ diff --git a/ocamlbuild/ChangeLog b/ocamlbuild/ChangeLog index 2992ecf0..a844e38b 100644 --- a/ocamlbuild/ChangeLog +++ b/ocamlbuild/ChangeLog @@ -1,3 +1,86 @@ +2007-03-22 Nicolas Pouillard + + Allow to receive the build function in {custom,file}_rule. + + * rule.ml, + * rule.mli, + * signatures.mli: Ditto. + * ocaml_specific.ml: Update. + + * command.ml, + * command.mli: Add a function to get string and tags. + + * ocamldep.ml, + * ocamldep.mli: Make tag based dependencies. + + * ocaml_compiler.ml: Do the pack as one command to be sure running the + remove. + + * test/test8/myocamlbuild.ml, + * test/good-output: Update. + +2007-03-21 Nicolas Pouillard + + Fix the previous fix. + + * ocaml_compiler.ml: Remove the empty file. + * test/good-output: Update. + +2007-03-21 Nicolas Pouillard + + [native pack] use touch instead of mv and cmp. + + * ocaml_compiler.ml: This version is will force ocamlopt to do the + right thing. + * test/good-output: Update. + +2007-03-20 Nicolas Pouillard + + Two bugs, two fixes. + + * ocaml_tools.ml: Add pp flags to interface inference. + * ocaml_specific.ml: Add a rule for packing with a cmi that already + exists. + * test/good-output: Update. + * Makefile: Change the default location. + +2007-03-13 Nicolas Pouillard + + Fix a bug in expand_module. + + * ocaml_utils.ml: Handle correctly pathnames instead of just basenames. + +2007-03-13 Nicolas Pouillard + + Use sys_file_exists instead of Sys.file_exists. + + * my_unix.ml: Since Sys.file_exists don't treat well captial letters. + * my_std.ml: Fix a bug. + * pathname.ml: Here is a an exception to the previous rule so, put a + comment. + +2007-03-11 Nicolas Pouillard + + Fix the List.union order. + + * my_std.ml: Fix and improve List.union. + * pathname.ml: Use it and fix merge_include_dirs. + * test/good-output: Update since the union order was wrong. + +2007-03-11 Nicolas Pouillard + + Re fix menhir and include dirs. + + * ocaml_tools.ml: Specifiy ocamlc and -I with --ocamlc. + +2007-03-11 Nicolas Pouillard + + Fix a bug: Add include directories to menhir. + + * ocaml_tools.ml: Ditto. + * my_std.ml, + * signatures.mli: Specification typo. + 2007-03-07 Nicolas Pouillard Handle specially archives files during an import. diff --git a/ocamlbuild/Makefile b/ocamlbuild/Makefile index b8d780ad..e2cb570b 100644 --- a/ocamlbuild/Makefile +++ b/ocamlbuild/Makefile @@ -1,7 +1,7 @@ .PHONY: all byte native profile debug ppcache doc ifndef INSTALL_PREFIX -INSTALL_PREFIX := /usr/local +INSTALL_PREFIX := $(PWD)/_install endif ifndef INSTALL_LIB @@ -25,7 +25,7 @@ OCAMLBUILD_OPTIONS := $(OCAMLBUILD_OPTIONS) $(O) endif ifeq ($(wildcard ./boot/oc*build),./boot/ocamlbuild) -OCAMLBUILD=INSTALL_LIB=$(INSTALL_LIB) $(OCAMLBUILDCMD) -build-dir $(BUILDDIR) -no-links $(OCAMLBUILD_OPTIONS) +OCAMLBUILD=INSTALL_LIB=$(INSTALL_LIB) INSTALL_BIN=$(INSTALL_BIN) $(OCAMLBUILDCMD) -build-dir $(BUILDDIR) -no-links $(OCAMLBUILD_OPTIONS) LIBS=ocamlbuildlib ocamlbuildlightlib PROGRAMS=ocamlbuild ocamlbuildlight BYTE=$(LIBS:=.cma) $(PROGRAMS:=.byte) diff --git a/ocamlbuild/command.ml b/ocamlbuild/command.ml index 22256e41..97755693 100644 --- a/ocamlbuild/command.ml +++ b/ocamlbuild/command.ml @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: command.ml,v 1.1 2007/02/07 08:59:13 ertai Exp $ *) +(* $Id: command.ml,v 1.1.4.1 2007/03/23 16:34:48 pouillar Exp $ *) (* Original author: Nicolas Pouillard *) (* Command *) @@ -151,12 +151,16 @@ let rec string_of_command_spec_with_calls call_with_tags call_with_target resolv let string_of_command_spec x = string_of_command_spec_with_calls ignore ignore false x -let string_print_of_command_spec spec = +let string_target_and_tags_of_command_spec spec = let rtags = ref Tags.empty in let rtarget = ref "" in let s = string_of_command_spec_with_calls ((:=) rtags) ((:=) rtarget) true spec in let target = if !rtarget = "" then s else !rtarget in - (s, (fun quiet pretend () -> if not quiet then Log.event ~pretend s target !rtags)) + s, target, !rtags + +let string_print_of_command_spec spec = + let s, target, tags = string_target_and_tags_of_command_spec spec in + (s, (fun quiet pretend () -> if not quiet then Log.event ~pretend s target tags)) (* ***) let rec print f = diff --git a/ocamlbuild/command.mli b/ocamlbuild/command.mli index 0a12f938..8fc6da75 100644 --- a/ocamlbuild/command.mli +++ b/ocamlbuild/command.mli @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: command.mli,v 1.1 2007/02/07 08:59:13 ertai Exp $ *) +(* $Id: command.mli,v 1.1.4.1 2007/03/23 16:34:48 pouillar Exp $ *) (* Original author: Nicolas Pouillard *) (* Command *) @@ -19,6 +19,8 @@ include Signatures.COMMAND with type tags = Tags.t (** {6 For system use only, not for the casual user} *) +val string_target_and_tags_of_command_spec : spec -> string * string * Tags.t + (** Same as [to_string]. *) val to_string_for_digest : t -> string diff --git a/ocamlbuild/examples/example_with_C/_tags b/ocamlbuild/examples/example_with_C/_tags new file mode 100644 index 00000000..769cb463 --- /dev/null +++ b/ocamlbuild/examples/example_with_C/_tags @@ -0,0 +1 @@ +<*caml.o>: output_obj diff --git a/ocamlbuild/examples/example_with_C/fib.ml b/ocamlbuild/examples/example_with_C/fib.ml new file mode 100644 index 00000000..ef6dbd43 --- /dev/null +++ b/ocamlbuild/examples/example_with_C/fib.ml @@ -0,0 +1,5 @@ +let x = X.x + +let rec fib n = if n <= 1 then 1 else fib (n - 1) + fib (n - 2) + +let () = Callback.register "fib" fib diff --git a/ocamlbuild/examples/example_with_C/fibwrap.c b/ocamlbuild/examples/example_with_C/fibwrap.c new file mode 100644 index 00000000..cc2104b6 --- /dev/null +++ b/ocamlbuild/examples/example_with_C/fibwrap.c @@ -0,0 +1,7 @@ + /* -*- C -*- */ +#include +#include +int fib(int n) +{ + return Int_val(caml_callback(*caml_named_value("fib"), Val_int(n))); +} diff --git a/ocamlbuild/examples/example_with_C/main.c b/ocamlbuild/examples/example_with_C/main.c new file mode 100644 index 00000000..c7f6bb5d --- /dev/null +++ b/ocamlbuild/examples/example_with_C/main.c @@ -0,0 +1,10 @@ + /* -*- C -*- */ +#include +#include +extern int fib(int); +int main(int argc, char** argv) +{ + caml_startup(argv); + printf("fib(12) = %d\n", fib(12)); + return 0; +} diff --git a/ocamlbuild/examples/example_with_C/myocamlbuild.ml b/ocamlbuild/examples/example_with_C/myocamlbuild.ml new file mode 100644 index 00000000..f53df7e1 --- /dev/null +++ b/ocamlbuild/examples/example_with_C/myocamlbuild.ml @@ -0,0 +1,35 @@ +open Ocamlbuild_plugin;; +open Command;; + +let cc = A"cc";; +let ar = A"ar";; + +dispatch begin function +| After_rules -> + let libasmrun = !*Ocamlbuild_pack.Ocaml_utils.stdlib_dir/"libasmrun.a" in + + flag ["ocaml"; "link"; "output_obj"] (A"-output-obj"); + + rule "output C obj" + ~deps:["%.cmx"; "%.o"] + ~prod:"%caml.o" + (Ocamlbuild_pack.Ocaml_compiler.native_link "%.cmx" "%caml.o"); + + rule "build C lib" + ~deps:["%wrap.o"; "%caml.o"] + ~prod:"lib%.a" + begin fun env _ -> + let wrap_o = env "%wrap.o" and caml_o = env "%caml.o" + and lib_a = env "lib%.a" in + Seq[cp libasmrun lib_a; + Cmd(S[ar; A"r"; Px lib_a; P caml_o; P wrap_o])] + end; + rule "build main" + ~deps:["libfib.a"; "main.o"] + ~prod:"main" + begin fun _ _ -> + Cmd(S[cc; P"main.o"; P"libfib.a"; A"-o"; Px"main"]) + end; +| _ -> () +end + diff --git a/ocamlbuild/examples/example_with_C/x.ml b/ocamlbuild/examples/example_with_C/x.ml new file mode 100644 index 00000000..7fecab12 --- /dev/null +++ b/ocamlbuild/examples/example_with_C/x.ml @@ -0,0 +1 @@ +let x = 42 diff --git a/ocamlbuild/main.ml b/ocamlbuild/main.ml index 2c54e9f2..07370453 100644 --- a/ocamlbuild/main.ml +++ b/ocamlbuild/main.ml @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: main.ml,v 1.8 2007/03/01 14:40:11 pouillar Exp $ *) +(* $Id: main.ml,v 1.8.2.1 2007/04/12 13:19:02 pouillar Exp $ *) (* Original author: Berke Durak *) open My_std open Log @@ -134,6 +134,8 @@ let proceed () = dprintf 3 "include directories are:@ %a" print_string_list !Options.include_dirs; Options.entry := Some entry; + List.iter Configuration.parse_string !Options.tag_lines; + Hooks.call_hook Hooks.Before_rules; Ocaml_specific.init (); Hooks.call_hook Hooks.After_rules; diff --git a/ocamlbuild/my_std.ml b/ocamlbuild/my_std.ml index 5bfeefd3..dcb91053 100644 --- a/ocamlbuild/my_std.ml +++ b/ocamlbuild/my_std.ml @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: my_std.ml,v 1.2 2007/02/22 16:51:39 ertai Exp $ *) +(* $Id: my_std.ml,v 1.2.2.2 2007/03/13 10:28:53 pouillar Exp $ *) (* Original author: Nicolas Pouillard *) open Format @@ -109,15 +109,16 @@ module List = struct | None -> acc end xs [] + let rec rev_append_uniq acc = + function + | [] -> acc + | x :: xs -> + if mem x acc then rev_append_uniq acc xs + else rev_append_uniq (x :: acc) xs + let union a b = - let rec self a b = - if a = [] then b else - match b with - | [] -> a - | x :: xs -> - if mem x a then self a xs - else self (x :: a) xs - in rev (self (rev a) b) + rev (rev_append_uniq (rev_append_uniq [] a) b) + end module String = struct @@ -169,7 +170,7 @@ module String = struct end in loop 0; text - (*** is_prefix : is v a prefix of u ? *) + (*** is_prefix : is u a prefix of v ? *) let is_prefix u v = let m = String.length u and n = String.length v @@ -215,10 +216,12 @@ let sys_readdir, reset_readdir_cache, reset_readdir_cache_for = let sys_file_exists x = let dirname = Filename.dirname x in let basename = Filename.basename x in - if basename = Filename.current_dir_name then true else match sys_readdir dirname with | Outcome.Bad _ -> false - | Outcome.Good a -> try Array.iter (fun x -> if x = basename then raise Exit) a; false with Exit -> true + | Outcome.Good a -> + if basename = Filename.current_dir_name then true else + try Array.iter (fun x -> if x = basename then raise Exit) a; false + with Exit -> true let sys_command = match Sys.os_type with diff --git a/ocamlbuild/my_unix.ml b/ocamlbuild/my_unix.ml index ef64b798..3d403c7b 100644 --- a/ocamlbuild/my_unix.ml +++ b/ocamlbuild/my_unix.ml @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: my_unix.ml,v 1.2 2007/02/26 16:36:33 ertai Exp $ *) +(* $Id: my_unix.ml,v 1.2.2.1 2007/03/13 10:28:53 pouillar Exp $ *) (* Original author: Nicolas Pouillard *) open My_std open Format @@ -51,7 +51,7 @@ let is_degraded = true let stat f = { stat_key = f; stat_file_kind = - if Sys.file_exists f then + if sys_file_exists f then if Sys.is_directory f then FK_dir else diff --git a/ocamlbuild/ocaml_compiler.ml b/ocamlbuild/ocaml_compiler.ml index 7a408bf4..0aaa1f36 100644 --- a/ocamlbuild/ocaml_compiler.ml +++ b/ocamlbuild/ocaml_compiler.ml @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: ocaml_compiler.ml,v 1.5.2.2 2007/03/04 15:36:20 pouillar Exp $ *) +(* $Id: ocaml_compiler.ml,v 1.5.2.3 2007/04/27 07:20:50 pouillar Exp $ *) (* Original author: Nicolas Pouillard *) open My_std open Format @@ -78,11 +78,16 @@ let ocamlopt_link_prog = ocamlopt_link N let ocamlopt_p tags deps out = let dirnames = List.union [] (List.map Pathname.dirname deps) in let include_flags = List.fold_right ocaml_add_include_flag dirnames [] in - let cmi = cmi_of out and cmitmp = Pathname.update_extensions "cmitmp" out in - Seq[mv cmi cmitmp; - Cmd (S [!Options.ocamlopt; A"-pack"; forpack_flags out tags; T tags; S include_flags; - atomize_paths deps; flags_of_pathname out; (* FIXME: P (cmi_of out);*) A"-o"; Px out]); - cmp cmitmp cmi] + let mli = Pathname.update_extensions "mli" out in + let cmd = + S [!Options.ocamlopt; A"-pack"; forpack_flags out tags; T tags; + S include_flags; atomize_paths deps; flags_of_pathname out; + A"-o"; Px out] in + if (*FIXME true ||*) Pathname.exists mli then Cmd cmd + else + let rm = S[A"rm"; A"-f"; P mli] in + Cmd(S[A"touch"; P mli; Sh" ; if "; cmd; Sh" ; then "; rm; Sh" ; else "; + rm; Sh" ; exit 1; fi"]) let native_lib_linker tags = if Tags.mem "ocamlmklib" tags then diff --git a/ocamlbuild/ocaml_specific.ml b/ocamlbuild/ocaml_specific.ml index 99721c29..e5d45144 100644 --- a/ocamlbuild/ocaml_specific.ml +++ b/ocamlbuild/ocaml_specific.ml @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: ocaml_specific.ml,v 1.6.2.1 2007/03/04 16:13:53 pouillar Exp $ *) +(* $Id: ocaml_specific.ml,v 1.6.2.8 2007/05/10 13:32:07 pouillar Exp $ *) (* Original author: Nicolas Pouillard *) open My_std open Format @@ -79,6 +79,12 @@ rule "ocaml: mlpack & d.cmo* -> d.cmo & cmi" ~deps:["%.mlpack"; "%.cmi"] (Ocaml_compiler.byte_debug_pack_mlpack "%.mlpack" "%.d.cmo");; +rule "ocaml: mlpack & cmo* & cmi -> cmo" + ~tags:["ocaml"; "byte"] + ~prod:"%.cmo" + ~deps:["%.mli"; "%.cmi"; "%.mlpack"] + (Ocaml_compiler.byte_pack_mlpack "%.mlpack" "%.cmo");; + rule "ocaml: mlpack & cmo* -> cmo & cmi" ~tags:["ocaml"; "byte"] ~prods:["%.cmo"; "%.cmi"] @@ -308,6 +314,7 @@ flag ["ocaml"; "link"] begin end;; flag ["ocaml"; "ocamlyacc"] (atomize !Options.ocaml_yaccflags);; +flag ["ocaml"; "menhir"] (atomize !Options.ocaml_yaccflags);; flag ["ocaml"; "ocamllex"] (atomize !Options.ocaml_lexflags);; @@ -326,6 +333,14 @@ let camlp4_flags camlp4s = camlp4_flags ["camlp4o"; "camlp4r"; "camlp4of"; "camlp4rf"; "camlp4orf"];; +let camlp4_flags' camlp4s = + List.iter begin fun (camlp4, flags) -> + flag ["ocaml"; "pp"; camlp4] flags + end camlp4s;; + +camlp4_flags' ["camlp4orr", S[A"camlp4of"; A"-parser"; A"reloaded"]; + "camlp4rrr", S[A"camlp4rf"; A"-parser"; A"reloaded"]];; + ocaml_lib ~extern:true ~native:false "dynlink";; ocaml_lib ~extern:true "unix";; ocaml_lib ~extern:true "str";; @@ -333,11 +348,18 @@ ocaml_lib ~extern:true "bigarray";; ocaml_lib ~extern:true "nums";; ocaml_lib ~extern:true "dbm";; ocaml_lib ~extern:true "graphics";; +ocaml_lib ~extern:true ~tag_name:"use_toplevel" "toplevellib";; ocaml_lib ~extern:true ~dir:"+labltk" "labltk";; +ocaml_lib ~extern:true ~dir:"+ocamldoc" "ocamldoc";; +ocaml_lib ~extern:true ~dir:"+ocamlbuild" ~tag_name:"use_ocamlbuild" "ocamlbuildlib";; + ocaml_lib ~extern:true ~dir:"+camlp4" ~tag_name:"use_camlp4" "camlp4lib";; ocaml_lib ~extern:true ~dir:"+camlp4" ~tag_name:"use_old_camlp4" "camlp4";; -ocaml_lib ~extern:true ~dir:"+ocamldoc" "ocamldoc";; -ocaml_lib ~extern:true ~dir:"+ocamlbuild" "ocamlbuild";; +ocaml_lib ~extern:true ~dir:"+camlp4" ~tag_name:"use_camlp4_full" "camlp4fulllib";; +flag ["ocaml"; "compile"; "use_camlp4_full"] + (S[A"-I"; A"+camlp4/Camlp4Parsers"; + A"-I"; A"+camlp4/Camlp4Printers"; + A"-I"; A"+camlp4/Camlp4Filters"]);; flag ["ocaml"; "debug"; "compile"; "byte"] (A "-g");; flag ["ocaml"; "debug"; "link"; "byte"; "program"] (A "-g");; @@ -345,8 +367,11 @@ flag ["ocaml"; "debug"; "pack"; "byte"] (A "-g");; flag ["ocaml"; "debug"; "compile"; "native"] (A "-g");; flag ["ocaml"; "debug"; "link"; "native"; "program"] (A "-g");; flag ["ocaml"; "debug"; "pack"; "native"] (A "-g");; +flag ["ocaml"; "link"; "native"; "output_obj"] (A"-output-obj");; +flag ["ocaml"; "link"; "byte"; "output_obj"] (A"-output-obj");; flag ["ocaml"; "dtypes"; "compile"] (A "-dtypes");; flag ["ocaml"; "rectypes"; "compile"] (A "-rectypes");; +flag ["ocaml"; "rectypes"; "infer_interface"] (A "-rectypes");; flag ["ocaml"; "linkall"; "link"] (A "-linkall");; flag ["ocaml"; "link"; "profile"; "native"] (A "-p");; flag ["ocaml"; "link"; "program"; "custom"; "byte"] (A "-custom");; @@ -385,7 +410,7 @@ let install_lib = lazy (try Sys.getenv "INSTALL_LIB" with Not_found -> !*stdlib_ let install_bin = lazy (My_std.getenv ~default:"/usr/local/bin" "INSTALL_BIN") in file_rule "ocamlbuild_where.ml" ~prod:"%ocamlbuild_where.ml" - ~cache:(fun _ -> Printf.sprintf "lib:%S, bin:%S" !*install_lib !*install_bin) + ~cache:(fun _ _ -> Printf.sprintf "lib:%S, bin:%S" !*install_lib !*install_bin) begin fun _ oc -> Printf.fprintf oc "let bindir = ref %S;;\n" !*install_bin; Printf.fprintf oc "let libdir = ref %S;;\n" !*install_lib diff --git a/ocamlbuild/ocaml_tools.ml b/ocamlbuild/ocaml_tools.ml index b72fa688..e60a3158 100644 --- a/ocamlbuild/ocaml_tools.ml +++ b/ocamlbuild/ocaml_tools.ml @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: ocaml_tools.ml,v 1.2 2007/02/08 16:53:39 ertai Exp $ *) +(* $Id: ocaml_tools.ml,v 1.2.4.3 2007/04/04 18:08:59 pouillar Exp $ *) (* Original author: Nicolas Pouillard *) open My_std open Pathname.Operators @@ -20,7 +20,8 @@ open Ocaml_utils let ocamlyacc mly env _build = let mly = env mly in - Cmd(S[!Options.ocamlyacc; T(tags_of_pathname mly++"ocaml"++"parser"++"ocamlyacc"); + let ocamlyacc = if !Options.ocamlyacc = N then V"OCAMLYACC" else !Options.ocamlyacc in + Cmd(S[ocamlyacc; T(tags_of_pathname mly++"ocaml"++"parser"++"ocamlyacc"); flags_of_pathname mly; Px mly]) let ocamllex mll env _build = @@ -30,14 +31,18 @@ let ocamllex mll env _build = let infer_interface ml mli env build = let ml = env ml and mli = env mli in + let tags = tags_of_pathname ml++"ocaml" in Ocaml_compiler.prepare_compile build ml; - Cmd(S[!Options.ocamlc; ocaml_include_flags ml; A"-i"; - T(tags_of_pathname ml++"ocaml"++"infer_interface"); P ml; Sh">"; Px mli]) + Cmd(S[!Options.ocamlc; ocaml_ppflags tags; ocaml_include_flags ml; A"-i"; + T(tags++"infer_interface"); P ml; Sh">"; Px mli]) let menhir mly env build = let mly = env mly in + let menhir = if !Options.ocamlyacc = N then V"MENHIR" else !Options.ocamlyacc in Ocaml_compiler.prepare_compile build mly; - Cmd(S[!Options.ocamlyacc; T(tags_of_pathname mly++"ocaml"++"parser"++"menhir"); + Cmd(S[menhir; + A"--ocamlc"; Quote(S[!Options.ocamlc; ocaml_include_flags mly]); + T(tags_of_pathname mly++"ocaml"++"parser"++"menhir"); A"--infer"; flags_of_pathname mly; Px mly]) let ocamldoc_c tags arg odoc = diff --git a/ocamlbuild/ocaml_utils.ml b/ocamlbuild/ocaml_utils.ml index 0e71dc69..f122007b 100644 --- a/ocamlbuild/ocaml_utils.ml +++ b/ocamlbuild/ocaml_utils.ml @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: ocaml_utils.ml,v 1.3.2.1 2007/03/02 17:10:27 pouillar Exp $ *) +(* $Id: ocaml_utils.ml,v 1.3.2.2 2007/03/13 10:28:53 pouillar Exp $ *) (* Original author: Nicolas Pouillard *) open My_std open Format @@ -52,11 +52,14 @@ let module_importance modpath x = else if ignore_stdlib x then `just_try else `mandatory let expand_module include_dirs module_name exts = + let dirname = Pathname.dirname module_name in + let basename = Pathname.basename module_name in + let module_name_cap = dirname/(String.capitalize basename) in + let module_name_uncap = dirname/(String.uncapitalize basename) in List.fold_right begin fun include_dir -> List.fold_right begin fun ext acc -> - let module_name_ext = module_name-.-ext in - include_dir/(String.uncapitalize module_name_ext) :: - include_dir/(String.capitalize module_name_ext) :: acc + include_dir/(module_name_uncap-.-ext) :: + include_dir/(module_name_cap-.-ext) :: acc end exts end include_dirs [] diff --git a/ocamlbuild/ocamldep.ml b/ocamlbuild/ocamldep.ml index 7773b4ce..ad650c88 100644 --- a/ocamlbuild/ocamldep.ml +++ b/ocamlbuild/ocamldep.ml @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: ocamldep.ml,v 1.2 2007/02/08 16:53:39 ertai Exp $ *) +(* $Id: ocamldep.ml,v 1.2.4.2 2007/04/04 18:08:59 pouillar Exp $ *) (* Original author: Nicolas Pouillard *) open My_std open Log @@ -27,13 +27,14 @@ let ocamldep_command arg = flags_of_pathname arg; A "-modules"] let menhir_ocamldep_command arg out = + let menhir = if !Options.ocamlyacc = N then V"MENHIR" else !Options.ocamlyacc in let tags = tags_of_pathname arg++"ocaml"++"menhir_ocamldep" in - Cmd (S [!Options.ocamlyacc; T tags; A"--raw-depend"; - A"--ocamldep"; Quote (ocamldep_command arg); - P arg; Sh ">"; Px out]) + S [menhir; T tags; A"--raw-depend"; + A"--ocamldep"; Quote (ocamldep_command arg); + P arg; Sh ">"; Px out] let ocamldep_command arg out = - Cmd (S[ocamldep_command arg; P arg; Sh ">"; Px out]) + S[ocamldep_command arg; P arg; Sh ">"; Px out] let module_dependencies = Hashtbl.create 103 let module_dependencies_of module_path = @@ -49,11 +50,16 @@ let register_module_dependencies module_path deps = let depends name ?tags ~prod ~dep ?insert ?(ocamldep_command=ocamldep_command) () = Rule.custom_rule name ?tags ~prod ~dep ?insert - ~cache:(fun env -> Command.to_string (ocamldep_command (env dep) (env prod))) + ~cache: begin fun env build -> + let cmd = ocamldep_command (env dep) (env prod) in + let str, _, tags = Command.string_target_and_tags_of_command_spec cmd in + let _ = Rule.build_deps_of_tags build (tags++"dont_link_with") in + str + end begin fun env ~cached -> let arg = env dep in let out = env prod in - let cmd = ocamldep_command arg out in + let cmd = Cmd (ocamldep_command arg out) in let () = dprintf 6 "ocamldep: %a %a" Pathname.print arg Command.print cmd in if not (Pathname.exists arg) then raise (Error(sbprintf "Ocamldep.ocamldep: no input file (%a)" Pathname.print arg)) diff --git a/ocamlbuild/ocamldep.mli b/ocamlbuild/ocamldep.mli index 791f518a..f396ba9a 100644 --- a/ocamlbuild/ocamldep.mli +++ b/ocamlbuild/ocamldep.mli @@ -9,11 +9,11 @@ (* *) (***********************************************************************) -(* $Id: ocamldep.mli,v 1.2 2007/02/08 16:53:39 ertai Exp $ *) +(* $Id: ocamldep.mli,v 1.2.4.1 2007/03/23 16:34:48 pouillar Exp $ *) (* Original author: Nicolas Pouillard *) exception Error of string -val ocamldep_command : Pathname.t -> Pathname.t -> Command.t -val menhir_ocamldep_command : Pathname.t -> Pathname.t -> Command.t +val ocamldep_command : Pathname.t -> Pathname.t -> Command.spec +val menhir_ocamldep_command : Pathname.t -> Pathname.t -> Command.spec val module_dependencies_of : Pathname.t -> ([ `mandatory | `just_try ] * string) list val register_module_dependencies : Pathname.t -> string list -> unit val depends : @@ -22,5 +22,5 @@ val depends : prod:string -> dep:string -> ?insert:[`top | `before of string | `after of string | `bottom] -> - ?ocamldep_command:(Pathname.t -> Pathname.t -> Command.t) -> + ?ocamldep_command:(Pathname.t -> Pathname.t -> Command.spec) -> unit -> unit diff --git a/ocamlbuild/options.ml b/ocamlbuild/options.ml index 602e0c3a..ab536c8c 100644 --- a/ocamlbuild/options.ml +++ b/ocamlbuild/options.ml @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: options.ml,v 1.7.2.2 2007/03/04 16:13:53 pouillar Exp $ *) +(* $Id: options.ml,v 1.7.2.4 2007/04/12 13:19:02 pouillar Exp $ *) (* Original author: Nicolas Pouillard *) let version = "ocamlbuild 0.1";; @@ -62,12 +62,12 @@ let mk_virtual_solvers = let () = mk_virtual_solvers ["ocamlc"; "ocamlopt"; "ocamldep"; "ocamldoc"; - "ocamlyacc"; "ocamllex"; "ocamlmklib"; "ocamlmktop"] + "ocamlyacc"; "menhir"; "ocamllex"; "ocamlmklib"; "ocamlmktop"] let ocamlc = ref (V"OCAMLC") let ocamlopt = ref (V"OCAMLOPT") let ocamldep = ref (V"OCAMLDEP") let ocamldoc = ref (V"OCAMLDOC") -let ocamlyacc = ref (V"OCAMLYACC") +let ocamlyacc = ref N let ocamllex = ref (V"OCAMLLEX") let ocamlmklib = ref (V"OCAMLMKLIB") let ocamlmktop = ref (V"OCAMLMKTOP") @@ -89,6 +89,7 @@ let ocaml_lexflags_internal = ref [] let program_args_internal = ref [] let ignore_list_internal = ref [] let tags_internal = ref [["quiet"]] +let tag_lines_internal = ref [] let show_tags_internal = ref [] let my_include_dirs = ref [[Filename.current_dir_name]] @@ -150,6 +151,7 @@ let spec = "-pp", String (add_to ocaml_ppflags_internal), " (idem)"; "-tag", String (add_to' tags_internal), " Add to default tags"; "-tags", String (add_to tags_internal), " (idem)"; + "-tag-line", String (add_to' tag_lines_internal), " Use this line of tags (as in _tags)"; "-show-tags", String (add_to' show_tags_internal), " Show tags that applies on that pathname"; "-ignore", String (add_to ignore_list_internal), " Don't try to build these modules"; @@ -165,8 +167,7 @@ let spec = "-no-sanitize", Clear sanitize, " Do not generate sanitization script"; "-nothing-should-be-rebuilt", Set nothing_should_be_rebuilt, " Fail if something needs to be rebuilt"; "-classic-display", Set Log.classic_display, " Display executed commands the old-fashioned way"; - "-use-menhir", Unit(fun () -> use_menhir := true; ocamlyacc := A"menhir"), - " Use menhir instead of ocamlyacc"; + "-use-menhir", Set use_menhir, " Use menhir instead of ocamlyacc"; "-j", Set_int Command.jobs, " Allow N jobs at once (0 for unlimited)"; @@ -200,6 +201,7 @@ let ocaml_lexflags = ref [] let program_args = ref [] let ignore_list = ref [] let tags = ref [] +let tag_lines = ref [] let show_tags = ref [] let init () = @@ -218,6 +220,7 @@ let init () = reorder ocaml_lexflags ocaml_lexflags_internal; reorder program_args program_args_internal; reorder tags tags_internal; + reorder tag_lines tag_lines_internal; reorder ignore_list ignore_list_internal; reorder show_tags show_tags_internal; diff --git a/ocamlbuild/pathname.ml b/ocamlbuild/pathname.ml index af13359c..36f8ee44 100644 --- a/ocamlbuild/pathname.ml +++ b/ocamlbuild/pathname.ml @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: pathname.ml,v 1.1 2007/02/07 08:59:14 ertai Exp $ *) +(* $Id: pathname.ml,v 1.1.4.2 2007/03/13 10:28:53 pouillar Exp $ *) (* Original author: Nicolas Pouillard *) open My_std open Format @@ -103,6 +103,7 @@ let clean_up_links entry = let pathname = in_source_dir (path/name) in if link_to_dir pathname !Options.build_dir then let z = readlink pathname in + (* Here is one exception where one can use Sys.file_exists directly *) (if not (Sys.file_exists z) then Shell.rm pathname; false) else true @@ -145,25 +146,6 @@ let root = mk "__root__" let context_table = Hashtbl.create 107 -let merge_include_dirs a b = - let rec aux a b = - match a, b with - | [], _ -> b - | _, [] -> a - | _, x::xs -> - if List.mem x a then aux a xs - else aux (x :: a) xs - in List.rev (aux (List.rev a) b) - -let define_context dir context = - let dir = if dir = "" then current_dir_name else dir in - try - let context = merge_include_dirs context (Hashtbl.find context_table dir) in - Hashtbl.replace context_table dir context - with Not_found -> - let context = merge_include_dirs context (!Options.include_dirs) in - Hashtbl.add context_table dir context - let rec include_dirs_of dir = try Hashtbl.find context_table dir with Not_found -> dir :: List.filter (fun dir' -> dir <> dir') !Options.include_dirs @@ -175,6 +157,10 @@ let include_dirs_of s = in res *) +let define_context dir context = + let dir = if dir = "" then current_dir_name else dir in + Hashtbl.replace context_table dir& List.union context& include_dirs_of dir + let in_build_dir p = if is_relative p then p else diff --git a/ocamlbuild/rule.ml b/ocamlbuild/rule.ml index 83de289a..a9ffe258 100644 --- a/ocamlbuild/rule.ml +++ b/ocamlbuild/rule.ml @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: rule.ml,v 1.2.2.1 2007/03/07 10:36:34 pouillar Exp $ *) +(* $Id: rule.ml,v 1.2.2.3 2007/04/04 18:08:13 pouillar Exp $ *) (* Original author: Nicolas Pouillard *) open My_std open Format @@ -97,9 +97,10 @@ let exists2 find p rs = let all_deps_of_tags = ref [] let cons deps acc = - List.fold_left begin fun acc dep -> - if List.mem dep acc then acc else dep :: acc - end acc deps + List.rev& + List.fold_left begin fun acc dep -> + if List.mem dep acc then acc else dep :: acc + end acc deps let deps_of_tags tags = List.fold_left begin fun acc (xtags, xdeps) -> @@ -270,15 +271,15 @@ let rule name ?(tags=[]) ?(prods=[]) ?(deps=[]) ?prod ?dep ?(insert = `bottom) c code = code } let file_rule name ?tags ~prod ?deps ?dep ?insert ~cache action = - rule name ?tags ~prod ?dep ?deps ?insert begin fun env _ -> - raise (Code_digest (cache env, (fun cached -> + rule name ?tags ~prod ?dep ?deps ?insert begin fun env build -> + raise (Code_digest (cache env build, (fun cached -> if not cached then with_output_file (env prod) (action env)))) end let custom_rule name ?tags ?prods ?prod ?deps ?dep ?insert ~cache action = - rule name ?tags ?prods ?prod ?dep ?deps ?insert begin fun env _ -> - raise (Code_digest (cache env, fun cached -> action env ~cached)) + rule name ?tags ?prods ?prod ?dep ?deps ?insert begin fun env build -> + raise (Code_digest (cache env build, fun cached -> action env ~cached)) end module Common_commands = struct diff --git a/ocamlbuild/rule.mli b/ocamlbuild/rule.mli index f88aceb0..660f335e 100644 --- a/ocamlbuild/rule.mli +++ b/ocamlbuild/rule.mli @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: rule.mli,v 1.2.2.1 2007/03/07 10:36:34 pouillar Exp $ *) +(* $Id: rule.mli,v 1.2.2.2 2007/03/23 16:34:48 pouillar Exp $ *) (* Original author: Nicolas Pouillard *) open My_std open Resource @@ -40,7 +40,7 @@ val file_rule : string -> ?deps:string list -> ?dep:string -> ?insert:[`top | `before of string | `after of string | `bottom] -> - cache:(env -> string) -> + cache:(env -> builder -> string) -> (env -> out_channel -> unit) -> unit val custom_rule : string -> @@ -50,7 +50,7 @@ val custom_rule : string -> ?deps:string list -> ?dep:string -> ?insert:[`top | `before of string | `after of string | `bottom] -> - cache:(env -> string) -> + cache:(env -> builder -> string) -> (env -> cached:bool -> unit) -> unit (** [copy_rule name ?insert source destination] *) diff --git a/ocamlbuild/signatures.mli b/ocamlbuild/signatures.mli index 521e5f8c..ca1f8c04 100644 --- a/ocamlbuild/signatures.mli +++ b/ocamlbuild/signatures.mli @@ -9,7 +9,7 @@ (* *) (***********************************************************************) -(* $Id: signatures.mli,v 1.8 2007/02/26 17:05:30 ertai Exp $ *) +(* $Id: signatures.mli,v 1.8.2.3 2007/04/12 13:19:02 pouillar Exp $ *) (* Original author: Nicolas Pouillard *) (** This module contains all module signatures that the user could use to build an ocamlbuild plugin. *) @@ -64,7 +64,7 @@ module type STRING = sig val eq_sub_strings : string -> int -> string -> int -> int -> bool - (** [is_prefix u v] is v a prefix of u ? *) + (** [is_prefix u v] is u a prefix of v ? *) val is_prefix : string -> string -> bool (** [is_suffix u v] : is v a suffix of u ? *) val is_suffix : string -> string -> bool @@ -372,6 +372,7 @@ module type OPTIONS = sig val program_args : string list ref val ignore_list : string list ref val tags : string list ref + val tag_lines : string list ref val show_tags : string list ref val ext_obj : string ref @@ -452,7 +453,7 @@ module type PLUGIN = sig ?deps:string list -> ?dep:string -> ?insert:[`top | `before of string | `after of string | `bottom] -> - cache:(env -> string) -> + cache:(env -> builder -> string) -> (env -> out_channel -> unit) -> unit val custom_rule : string -> @@ -462,7 +463,7 @@ module type PLUGIN = sig ?deps:string list -> ?dep:string -> ?insert:[`top | `before of string | `after of string | `bottom] -> - cache:(env -> string) -> + cache:(env -> builder -> string) -> (env -> cached:bool -> unit) -> unit (** [copy_rule name ?insert source destination] *) diff --git a/otherlibs/labltk/support/Makefile b/otherlibs/labltk/support/Makefile index 1fb848bc..3e315bfc 100644 --- a/otherlibs/labltk/support/Makefile +++ b/otherlibs/labltk/support/Makefile @@ -34,9 +34,9 @@ install: lib$(LIBNAME).a $(PUB) installopt: opt @if test -d $(INSTALLDIR); then : ; else mkdir $(INSTALLDIR); fi cp $(PUBMLI:.mli=.cmx) $(INSTALLDIR) - if test -f tkthread.o; then \ - cp tkthread.o $(INSTALLDIR); \ - chmod 644 $(INSTALLDIR)/tkthread.o; \ + if test -f tkthread.cmx; then \ + cp tkthread.cmx tkthread.o $(INSTALLDIR); \ + chmod 644 $(INSTALLDIR)/tkthread.cmx $(INSTALLDIR)/tkthread.o; \ fi clean : diff --git a/otherlibs/labltk/support/tkthread.ml b/otherlibs/labltk/support/tkthread.ml index c106cdf4..0c3c1515 100644 --- a/otherlibs/labltk/support/tkthread.ml +++ b/otherlibs/labltk/support/tkthread.ml @@ -12,7 +12,7 @@ (* *) (***********************************************************************) -(* $Id: tkthread.ml,v 1.1 2004/10/18 02:42:50 garrigue Exp $ *) +(* $Id: tkthread.ml,v 1.1.16.1 2007/04/10 03:29:46 garrigue Exp $ *) let jobs : (unit -> unit) Queue.t = Queue.create () let m = Mutex.create () @@ -26,7 +26,7 @@ let cannot_sync () = | Some id -> Thread.id (Thread.self ()) = id let gui_safe () = - not (Sys.os_type = "Win32") || !loop_id = Some(Thread.id (Thread.self ())) + !loop_id = Some(Thread.id (Thread.self ())) let has_jobs () = not (with_jobs Queue.is_empty) let n_jobs () = with_jobs Queue.length @@ -52,9 +52,9 @@ let rec job_timer () = let thread_main () = try + loop_id := Some (Thread.id (Thread.self ())); ignore (Protocol.openTk()); job_timer(); - loop_id := Some (Thread.id (Thread.self ())); Protocol.mainLoop(); loop_id := None; with exn -> diff --git a/otherlibs/labltk/support/tkthread.mli b/otherlibs/labltk/support/tkthread.mli index dce3eaa0..3e4d6151 100644 --- a/otherlibs/labltk/support/tkthread.mli +++ b/otherlibs/labltk/support/tkthread.mli @@ -12,9 +12,10 @@ (* *) (***********************************************************************) -(* $Id: tkthread.mli,v 1.2 2004/10/18 02:59:33 garrigue Exp $ *) +(* $Id: tkthread.mli,v 1.2.16.1 2007/04/10 03:29:46 garrigue Exp $ *) -(* Basic functions *) +(* Helper functions for using LablTk with threads. + To use, add tkthread.cmo or tkthread.cmx to your command line *) (** Start the main loop in a new GUI thread. Do not use recursively. *) val start : unit -> Thread.t @@ -24,8 +25,8 @@ val thread_main : unit -> unit val top : Widget.toplevel Widget.widget (* Jobs are needed for Windows, as you cannot do GUI work from - another thread. - Even under Unix some calls need to come from the main thread. + another thread. This is apparently true on OSX/Aqua too. + And even using X11 some calls need to come from the main thread. The basic idea is to either use async (if you don't need a result) or sync whenever you call a Tk related function from another thread (for instance with the threaded toplevel). @@ -36,6 +37,7 @@ val top : Widget.toplevel Widget.widget val async : ('a -> unit) -> 'a -> unit (** Add a synchronous job (to do in the main thread) *) val sync : ('a -> 'b) -> 'a -> 'b -(** Whether it is safe to call most Tk functions directly from - the current thread *) +(** Whether the current thread is the GUI thread. + Note that when using X11 it is generally safe to call + most Tk functions from other threads too. *) val gui_safe : unit -> bool diff --git a/parsing/printast.ml b/parsing/printast.ml index 51f5e405..754e65df 100644 --- a/parsing/printast.ml +++ b/parsing/printast.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: printast.ml,v 1.30 2006/04/05 02:28:13 garrigue Exp $ *) +(* $Id: printast.ml,v 1.30.8.1 2007/04/25 19:59:29 doligez Exp $ *) open Asttypes;; open Format;; @@ -89,7 +89,14 @@ let line i f s (*...*) = fprintf f s (*...*) ;; -let list i f ppf l = List.iter (f i ppf) l;; +let list i f ppf l = + match l with + | [] -> line i ppf "[]\n"; + | h::t -> + line i ppf "[\n"; + List.iter (f (i+1) ppf) l; + line i ppf "]\n"; +;; let option i f ppf x = match x with @@ -361,9 +368,11 @@ and class_type_field i ppf x = | Pctf_virt (s, pf, ct, loc) -> line i ppf "Pctf_virt \"%s\" %a %a\n" s fmt_private_flag pf fmt_location loc; + core_type (i+1) ppf ct; | Pctf_meth (s, pf, ct, loc) -> line i ppf "Pctf_meth \"%s\" %a %a\n" s fmt_private_flag pf fmt_location loc; + core_type (i+1) ppf ct; | Pctf_cstr (ct1, ct2, loc) -> line i ppf "Pctf_cstr %a\n" fmt_location loc; core_type i ppf ct1; @@ -619,11 +628,11 @@ and core_type_x_core_type_x_location i ppf (ct1, ct2, l) = core_type (i+1) ppf ct2; and string_x_core_type_list_x_location i ppf (s, l, loc) = - string i ppf s; + line i ppf "\"%s\" %a\n" s fmt_location loc; list (i+1) core_type ppf l; and string_x_mutable_flag_x_core_type_x_location i ppf (s, mf, ct, loc) = - line i ppf "\"%s\" %a\n" s fmt_mutable_flag mf; + line i ppf "\"%s\" %a %a\n" s fmt_mutable_flag mf fmt_location loc; core_type (i+1) ppf ct; and string_list_x_location i ppf (l, loc) = diff --git a/stdlib/scanf.mli b/stdlib/scanf.mli index 8882cf9f..1c393481 100644 --- a/stdlib/scanf.mli +++ b/stdlib/scanf.mli @@ -11,14 +11,14 @@ (* *) (***********************************************************************) -(* $Id: scanf.mli,v 1.69 2007/01/22 08:51:29 weis Exp $ *) +(* $Id: scanf.mli,v 1.69.4.1 2007/04/26 16:57:37 doligez Exp $ *) (** Formatted input functions. *) (** {6 Functional input with format strings.} *) (** The formatted input functions provided by module [Scanf] are functionals - that apply the values they read in the input to their function argument. + that apply their function argument to the values they read in the input. The specification of the values to read is simply given by a format string (the same format strings as those used to print material using module {!Printf} or module {!Format}). @@ -26,11 +26,12 @@ As an example, consider the formatted input function [scanf] that reads from standard input; a typical call to [scanf] is simply [scanf fmt f], meaning that [f] should be applied to the arguments read according to the - format string [fmt]. For instance, if [f] is defined as [let f x = x + 1], then - [scanf "%d" f] will read a decimal integer [i] from [stdin] and return - [f i]; thus, if we enter [41] at the keyboard, [scanf "%d" f] evaluates to [42]. + format string [fmt]. For instance, if [f] is defined as [let f x = x + 1], + then [scanf "%d" f] will read a decimal integer [i] from [stdin] and return + [f i]; thus, if we enter [41] at the keyboard, [scanf "%d" f] evaluates to + [42]. - This module provides general formatted input functions that reads from any + This module provides general formatted input functions that read from any kind of input, including strings, files, or anything that can return characters. Hence, a typical call to a formatted input function [bscan] is @@ -54,20 +55,20 @@ module Scanning : sig type scanbuf;; (** The type of scanning buffers. A scanning buffer is the source from which a - formatted input function gets characters. The scanning buffer holds the current - state of the scan, plus a function to get the next char from the input, and - a token buffer to store the string matched so far. + formatted input function gets characters. The scanning buffer holds the + current state of the scan, plus a function to get the next char from the + input, and a token buffer to store the string matched so far. - Note: a scan may often require to examine one character in advance; - when this ``lookahead'' character does not belong to the token read, - it is stored back in the scanning buffer and becomes the next - character read. *) + Note: a scan may often require to examine one character in advance; + when this ``lookahead'' character does not belong to the token read, + it is stored back in the scanning buffer and becomes the next + character read. *) val stdib : scanbuf;; (** The scanning buffer reading from [stdin]. [stdib] is equivalent to [Scanning.from_channel stdin]. - Note: when input is read interactively from [stdin], the carriage return + Note: when input is read interactively from [stdin], the newline character that triggers the evaluation is incorporated in the input; thus, scanning specifications must properly skip this character (simply add a ['\n'] as the last character of the format string). *) @@ -118,7 +119,7 @@ val name_of_input : scanbuf -> string;; end;; exception Scan_failure of string;; -(** The exception that formatted input functions raise when the input cannot be +(** The exception raised by formatted input functions when the input cannot be read according to the given format. *) type ('a, 'b, 'c, 'd) scanner = @@ -147,7 +148,7 @@ val bscanf : Scanning.scanbuf -> ('a, 'b, 'c, 'd) scanner;; (** [bscanf ib fmt r1 ... rN f] reads arguments for the function [f] from the scanning buffer [ib] according to the format string [fmt], and applies [f] to these values. - This application of [f] is the result of the whole construct. + The result of this call to [f] is returned as the result of [bscanf]. For instance, if [f] is the function [fun s i -> i + 1], then [Scanf.sscanf "x = 1" "%s = %i" f] returns [2]. @@ -164,7 +165,7 @@ val bscanf : Scanning.scanbuf -> ('a, 'b, 'c, 'd) scanner;; Among plain characters the space character (ASCII code 32) has a special meaning: it matches ``whitespace'', that is any number of tab, - space, newline and carriage return characters. Hence, a space in the format + space, line feed and carriage return characters. Hence, a space in the format matches any amount of whitespace in the input. Conversion specifications consist in the [%] character, followed by @@ -210,7 +211,7 @@ val bscanf : Scanning.scanbuf -> ('a, 'b, 'c, 'd) scanner;; - [\[ range \]]: reads characters that matches one of the characters mentioned in the range of characters [range] (or not mentioned in it, if the range starts with [^]). Reads a [string] that can be - empty, if no character in the input matches the range. The set of + empty, if the next input character does not match the range. The set of characters from [c1] to [c2] (inclusively) is denoted by [c1-c2]. Hence, [%\[0-9\]] returns a string representing a decimal number or an empty string if no decimal digit is found; similarly, @@ -238,18 +239,18 @@ val bscanf : Scanning.scanbuf -> ('a, 'b, 'c, 'd) scanner;; - [!]: matches the end of input condition. - [%]: matches one [%] character in the input. - Following the [%] character introducing a conversion, there may be + Following the [%] character that introduces a conversion, there may be the special flag [_]: the conversion that follows occurs as usual, but the resulting value is discarded. For instance, if [f] is the function [fun i -> i + 1], then [Scanf.sscanf "x = 1" "%_s = %i" f] returns [2]. - The field widths are composed of an optional integer literal + The field width is composed of an optional integer literal indicating the maximal width of the token to read. For instance, [%6d] reads an integer, having at most 6 decimal digits; [%4f] reads a float with at most 4 characters; and [%8\[\\000-\\255\]] returns the next 8 characters (or all the characters still available, - if less than 8 characters are available in the input). + if fewer than 8 characters are available in the input). Scanning indications appear just after the string conversions [%s] and [%\[ range \]] to delimit the end of the token. A scanning @@ -258,7 +259,7 @@ val bscanf : Scanning.scanbuf -> ('a, 'b, 'c, 'd) scanner;; just before the next matching [c] (which is skipped). If no [c] character is encountered, the string token spreads as much as possible. For instance, ["%s@\t"] reads a string up to the next - tabulation character or to the end of input. If a scanning + tab character or to the end of input. If a scanning indication [\@c] does not follow a string conversion, it is treated as a plain [c] character. @@ -302,8 +303,8 @@ val fscanf : in_channel -> ('a, 'b, 'c, 'd) scanner;; Warning: since all formatted input functions operate from a scanning buffer, be aware that each [fscanf] invocation must allocate a new - fresh scanning buffer (unless careful use of partial evaluation in - the program). Hence, there are chances that some characters seem + fresh scanning buffer (unless you make careful use of partial + application). Hence, there are chances that some characters seem to be skipped (in fact they are pending in the previously used scanning buffer). This happens in particular when calling [fscanf] again after a scan involving a format that necessitated some look ahead @@ -314,7 +315,7 @@ val fscanf : in_channel -> ('a, 'b, 'c, 'd) scanner;; to allocate the scanning buffer reading from file [f]. This method is not only clearer it is also faster, since scanning - buffers to files are optimized for fast bufferized reading. *) + buffers to files are optimized for fast buffered reading. *) val sscanf : string -> ('a, 'b, 'c, 'd) scanner;; (** Same as {!Scanf.bscanf}, but reads from the given string. *) @@ -328,8 +329,8 @@ val kscanf : ('a, 'b, 'c, 'd) scanner;; (** Same as {!Scanf.bscanf}, but takes an additional function argument [ef] that is called in case of error: if the scanning process or - some conversion fails, the scanning function aborts and applies the - error handling function [ef] to the scanning buffer and the + some conversion fails, the scanning function aborts and calls the + error handling function [ef] with the scanning buffer and the exception that aborted the scanning process. *) val bscanf_format : @@ -338,8 +339,8 @@ val bscanf_format : (** [bscanf_format ib fmt f] reads a format string token from the scannning buffer [ib], according to the given format string [fmt], and applies [f] to the resulting format string value. - Raises [Scan_failure] if the format string value read has not the same type - as [fmt]. *) + Raise [Scan_failure] if the format string value read doesn't have the + same type as [fmt]. *) val sscanf_format : string -> ('a, 'b, 'c, 'd, 'e, 'f) format6 -> @@ -351,5 +352,5 @@ val format_from_string : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> ('a, 'b, 'c, 'd, 'e, 'f) format6;; (** [format_from_string s fmt] converts a string argument to a format string, according to the given format string [fmt]. - Raises [Scan_failure] if [s], considered as a format string, has not the same - type as [fmt]. *) + Raise [Scan_failure] if [s], considered as a format string, doesn't + have the same type as [fmt]. *) diff --git a/typing/oprint.ml b/typing/oprint.ml index a08c67f2..6605da19 100644 --- a/typing/oprint.ml +++ b/typing/oprint.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: oprint.ml,v 1.24 2006/04/21 06:17:30 garrigue Exp $ *) +(* $Id: oprint.ml,v 1.24.8.1 2007/04/26 14:34:50 doligez Exp $ *) open Format open Outcometree @@ -391,20 +391,20 @@ and print_out_type_decl kwd ppf (name, args, ty, priv, constraints) = | _ -> ty in let print_private ppf = function - Asttypes.Private -> fprintf ppf "private " + Asttypes.Private -> fprintf ppf " private" | Asttypes.Public -> () in let rec print_out_tkind ppf = function | Otyp_abstract -> () | Otyp_record lbls -> - fprintf ppf " = %a{%a@;<1 -2>}" + fprintf ppf " =%a {%a@;<1 -2>}" print_private priv (print_list_init print_out_label (fun ppf -> fprintf ppf "@ ")) lbls | Otyp_sum constrs -> - fprintf ppf " =@;<1 2>%a%a" + fprintf ppf " =%a@;<1 2>%a" print_private priv (print_list print_out_constr (fun ppf -> fprintf ppf "@ | ")) constrs | ty -> - fprintf ppf " =@;<1 2>%a%a" + fprintf ppf " =%a@;<1 2>%a" print_private priv !out_type ty in diff --git a/typing/typecore.ml b/typing/typecore.ml index 4d8ac807..691eb494 100644 --- a/typing/typecore.ml +++ b/typing/typecore.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: typecore.ml,v 1.190 2007/02/27 04:54:05 garrigue Exp $ *) +(* $Id: typecore.ml,v 1.190.2.1 2007/05/02 02:10:54 garrigue Exp $ *) (* Typechecking for the core language *) @@ -1812,10 +1812,16 @@ and type_expect ?in_function env sexp ty_expected = raise(Error(loc, Too_many_arguments (in_function <> None, ty_fun))) in - if is_optional l then begin - try unify env ty_arg (type_option(newvar())) - with Unify _ -> assert false - end; + let ty_arg = + if is_optional l then + let tv = newvar() in + begin + try unify env ty_arg (type_option tv) + with Unify _ -> assert false + end; + type_option tv + else ty_arg + in let cases, partial = type_cases ~in_function:(loc,ty_fun) env ty_arg ty_res (Some sexp.pexp_loc) caselist in diff --git a/typing/typedecl.ml b/typing/typedecl.ml index 0346d7b1..e552b016 100644 --- a/typing/typedecl.ml +++ b/typing/typedecl.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: typedecl.ml,v 1.76.6.1 2007/03/05 01:24:10 garrigue Exp $ *) +(* $Id: typedecl.ml,v 1.76.6.2 2007/03/12 13:14:26 garrigue Exp $ *) (**** Typing of type definitions ****) @@ -369,6 +369,7 @@ let check_recursion env loc path decl to_check = Ctype.correct_abbrev env path decl.type_params body with Ctype.Recursive_abbrev -> raise(Error(loc, Recursive_abbrev (Path.name path))) + | Ctype.Unify trace -> raise(Error(loc, Type_clash trace)) end; (* Check that recursion is regular *) if decl.type_params = [] then () else diff --git a/typing/typemod.ml b/typing/typemod.ml index 5bd3921d..6c8e8eec 100644 --- a/typing/typemod.ml +++ b/typing/typemod.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: typemod.ml,v 1.78 2007/02/23 13:44:51 ertai Exp $ *) +(* $Id: typemod.ml,v 1.78.2.1 2007/04/26 09:43:13 xleroy Exp $ *) (* Type-checking of the module language *) @@ -788,30 +788,33 @@ let type_implementation sourcefile outputprefix modulename initial_env ast = Misc.try_finally (fun () -> type_structure initial_env ast) (fun () -> Stypes.dump (outputprefix ^ ".annot")) in + let simple_sg = simplify_signature sg in Typecore.force_delayed_checks (); if !Clflags.print_types then begin - fprintf std_formatter "%a@." Printtyp.signature (simplify_signature sg); - (str, Tcoerce_none) + fprintf std_formatter "%a@." Printtyp.signature simple_sg; + (str, Tcoerce_none) (* result is ignored by Compile.implementation *) end else begin - let coercion = - let sourceintf = - Misc.chop_extension_if_any sourcefile ^ !Config.interface_suffix in - if Sys.file_exists sourceintf then begin - let intf_file = - try - find_in_path_uncap !Config.load_path (modulename ^ ".cmi") - with Not_found -> - raise(Error(Location.none, Interface_not_compiled sourceintf)) in - let dclsig = Env.read_signature modulename intf_file in - Includemod.compunit sourcefile sg intf_file dclsig - end else begin - check_nongen_schemes finalenv str; - normalize_signature finalenv sg; - if not !Clflags.dont_write_files then - Env.save_signature sg modulename (outputprefix ^ ".cmi"); - Tcoerce_none - end in - (str, coercion) + let sourceintf = + Misc.chop_extension_if_any sourcefile ^ !Config.interface_suffix in + if Sys.file_exists sourceintf then begin + let intf_file = + try + find_in_path_uncap !Config.load_path (modulename ^ ".cmi") + with Not_found -> + raise(Error(Location.none, Interface_not_compiled sourceintf)) in + let dclsig = Env.read_signature modulename intf_file in + let coercion = Includemod.compunit sourcefile sg intf_file dclsig in + (str, coercion) + end else begin + check_nongen_schemes finalenv str; + normalize_signature finalenv sg; + let coercion = + Includemod.compunit sourcefile sg + "(inferred signature)" simple_sg in + if not !Clflags.dont_write_files then + Env.save_signature simple_sg modulename (outputprefix ^ ".cmi"); + (str, coercion) + end end (* "Packaging" of several compilation units into one unit diff --git a/typing/typetexp.ml b/typing/typetexp.ml index 7d60b33b..4f615abb 100644 --- a/typing/typetexp.ml +++ b/typing/typetexp.ml @@ -271,8 +271,9 @@ let rec transl_type env policy styp = try let f' = List.assoc l fields in let ty = mkfield l f and ty' = mkfield l f' in - if equal env false [ty] [ty'] then fields - else raise(Error(loc, Constructor_mismatch (ty,ty'))) + if equal env false [ty] [ty'] then fields else + try unify env ty ty'; fields + with Unify trace -> raise(Error(loc, Constructor_mismatch (ty,ty'))) with Not_found -> (l, f) :: fields in diff --git a/win32caml/inria.h b/win32caml/inria.h index 22223aa2..fc1e7e59 100644 --- a/win32caml/inria.h +++ b/win32caml/inria.h @@ -10,7 +10,7 @@ /* */ /***********************************************************************/ -/* $Id: inria.h,v 1.5 2004/06/17 07:33:44 xleroy Exp $ */ +/* $Id: inria.h,v 1.5.18.1 2007/05/12 09:20:51 xleroy Exp $ */ /*------------------------------------------------------------------------ Module: D:\lcc\inria\inria.h @@ -63,6 +63,14 @@ #include "editbuffer.h" #include "history.h" +#if _MSC_VER <= 1200 +#define GetWindowLongPtr GetWindowLong +#define SetWindowLongPtr SetWindowLong +#define DWLP_USER DWL_USER +#define GWLP_WNDPROC GWL_WNDPROC +#define LONG_PTR DWORD +#endif + // In this structure should go eventually all global variables scattered // through the program. typedef struct _programParams { -- 2.30.2