remove the yacc parser
The large diff in boot/menhir/parser_menhir.ml comes from the fact that the token list is now included in it, instead of being merely a reference to the yacc parsers' Parser.token type.master
parent
ffbc03860b
commit
e6ecea4008
58
.depend
58
.depend
|
@ -89,6 +89,9 @@ parsing/builtin_attributes.cmo : utils/warnings.cmi parsing/parsetree.cmi \
|
|||
parsing/builtin_attributes.cmx : utils/warnings.cmx parsing/parsetree.cmi \
|
||||
parsing/location.cmx parsing/asttypes.cmi parsing/builtin_attributes.cmi
|
||||
parsing/builtin_attributes.cmi : parsing/parsetree.cmi parsing/location.cmi
|
||||
parsing/camlinternalMenhirLib.cmo : parsing/camlinternalMenhirLib.cmi
|
||||
parsing/camlinternalMenhirLib.cmx : parsing/camlinternalMenhirLib.cmi
|
||||
parsing/camlinternalMenhirLib.cmi :
|
||||
parsing/depend.cmo : parsing/parsetree.cmi utils/misc.cmi \
|
||||
parsing/longident.cmi parsing/location.cmi utils/clflags.cmi \
|
||||
parsing/builtin_attributes.cmi parsing/asttypes.cmi parsing/depend.cmi
|
||||
|
@ -102,11 +105,13 @@ parsing/docstrings.cmo : utils/warnings.cmi parsing/parsetree.cmi \
|
|||
parsing/docstrings.cmx : utils/warnings.cmx parsing/parsetree.cmi \
|
||||
parsing/location.cmx parsing/docstrings.cmi
|
||||
parsing/docstrings.cmi : parsing/parsetree.cmi parsing/location.cmi
|
||||
parsing/lexer.cmo : utils/warnings.cmi parsing/parser.cmi utils/misc.cmi \
|
||||
parsing/location.cmi parsing/docstrings.cmi parsing/lexer.cmi
|
||||
parsing/lexer.cmx : utils/warnings.cmx parsing/parser.cmx utils/misc.cmx \
|
||||
parsing/location.cmx parsing/docstrings.cmx parsing/lexer.cmi
|
||||
parsing/lexer.cmi : parsing/parser.cmi parsing/location.cmi
|
||||
parsing/lexer.cmo : utils/warnings.cmi parsing/parser_menhir.cmi \
|
||||
utils/misc.cmi parsing/location.cmi parsing/docstrings.cmi \
|
||||
parsing/lexer.cmi
|
||||
parsing/lexer.cmx : utils/warnings.cmx parsing/parser_menhir.cmx \
|
||||
utils/misc.cmx parsing/location.cmx parsing/docstrings.cmx \
|
||||
parsing/lexer.cmi
|
||||
parsing/lexer.cmi : parsing/parser_menhir.cmi parsing/location.cmi
|
||||
parsing/location.cmo : utils/warnings.cmi utils/terminfo.cmi utils/misc.cmi \
|
||||
utils/clflags.cmi utils/build_path_prefix_map.cmi parsing/location.cmi
|
||||
parsing/location.cmx : utils/warnings.cmx utils/terminfo.cmx utils/misc.cmx \
|
||||
|
@ -115,15 +120,12 @@ parsing/location.cmi : utils/warnings.cmi
|
|||
parsing/longident.cmo : utils/misc.cmi parsing/longident.cmi
|
||||
parsing/longident.cmx : utils/misc.cmx parsing/longident.cmi
|
||||
parsing/longident.cmi :
|
||||
parsing/camlinternalMenhirLib.cmo : parsing/camlinternalMenhirLib.cmi
|
||||
parsing/camlinternalMenhirLib.cmx : parsing/camlinternalMenhirLib.cmi
|
||||
parsing/camlinternalMenhirLib.cmi :
|
||||
parsing/parse.cmo : parsing/syntaxerr.cmi parsing/parser_menhir.cmi \
|
||||
parsing/parser.cmi parsing/location.cmi parsing/lexer.cmi \
|
||||
parsing/docstrings.cmi parsing/parse.cmi
|
||||
parsing/location.cmi parsing/lexer.cmi parsing/docstrings.cmi \
|
||||
parsing/parse.cmi
|
||||
parsing/parse.cmx : parsing/syntaxerr.cmx parsing/parser_menhir.cmx \
|
||||
parsing/parser.cmx parsing/location.cmx parsing/lexer.cmx \
|
||||
parsing/docstrings.cmx parsing/parse.cmi
|
||||
parsing/location.cmx parsing/lexer.cmx parsing/docstrings.cmx \
|
||||
parsing/parse.cmi
|
||||
parsing/parse.cmi : parsing/parsetree.cmi
|
||||
parsing/parser.cmo : parsing/syntaxerr.cmi parsing/parsetree.cmi \
|
||||
parsing/longident.cmi parsing/location.cmi parsing/docstrings.cmi \
|
||||
|
@ -136,15 +138,15 @@ parsing/parser.cmx : parsing/syntaxerr.cmx parsing/parsetree.cmi \
|
|||
parsing/parser.cmi : parsing/parsetree.cmi parsing/location.cmi \
|
||||
parsing/docstrings.cmi
|
||||
parsing/parser_menhir.cmo : parsing/syntaxerr.cmi parsing/parsetree.cmi \
|
||||
parsing/parser.cmi parsing/camlinternalMenhirLib.cmi parsing/longident.cmi \
|
||||
parsing/location.cmi parsing/docstrings.cmi utils/clflags.cmi \
|
||||
parsing/asttypes.cmi parsing/ast_helper.cmi parsing/parser_menhir.cmi
|
||||
parsing/longident.cmi parsing/location.cmi parsing/docstrings.cmi \
|
||||
utils/clflags.cmi parsing/camlinternalMenhirLib.cmi parsing/asttypes.cmi \
|
||||
parsing/ast_helper.cmi parsing/parser_menhir.cmi
|
||||
parsing/parser_menhir.cmx : parsing/syntaxerr.cmx parsing/parsetree.cmi \
|
||||
parsing/parser.cmx parsing/camlinternalMenhirLib.cmx parsing/longident.cmx \
|
||||
parsing/location.cmx parsing/docstrings.cmx utils/clflags.cmx \
|
||||
parsing/asttypes.cmi parsing/ast_helper.cmx parsing/parser_menhir.cmi
|
||||
parsing/parser_menhir.cmi : parsing/parsetree.cmi parsing/parser.cmi \
|
||||
parsing/camlinternalMenhirLib.cmi
|
||||
parsing/longident.cmx parsing/location.cmx parsing/docstrings.cmx \
|
||||
utils/clflags.cmx parsing/camlinternalMenhirLib.cmx parsing/asttypes.cmi \
|
||||
parsing/ast_helper.cmx parsing/parser_menhir.cmi
|
||||
parsing/parser_menhir.cmi : parsing/parsetree.cmi parsing/location.cmi \
|
||||
parsing/docstrings.cmi parsing/camlinternalMenhirLib.cmi
|
||||
parsing/parsetree.cmi : parsing/longident.cmi parsing/location.cmi \
|
||||
parsing/asttypes.cmi
|
||||
parsing/pprintast.cmo : parsing/parsetree.cmi utils/misc.cmi \
|
||||
|
@ -2394,15 +2396,15 @@ driver/main_args.cmx : utils/warnings.cmx utils/profile.cmx utils/config.cmx \
|
|||
utils/clflags.cmx driver/main_args.cmi
|
||||
driver/main_args.cmi :
|
||||
driver/makedepend.cmo : driver/pparse.cmi parsing/parsetree.cmi \
|
||||
parsing/parser.cmi parsing/parse.cmi utils/misc.cmi parsing/longident.cmi \
|
||||
parsing/location.cmi parsing/lexer.cmi parsing/depend.cmi \
|
||||
utils/config.cmi driver/compplugin.cmi driver/compenv.cmi \
|
||||
utils/clflags.cmi driver/makedepend.cmi
|
||||
parsing/parser_menhir.cmi parsing/parse.cmi utils/misc.cmi \
|
||||
parsing/longident.cmi parsing/location.cmi parsing/lexer.cmi \
|
||||
parsing/depend.cmi utils/config.cmi driver/compplugin.cmi \
|
||||
driver/compenv.cmi utils/clflags.cmi driver/makedepend.cmi
|
||||
driver/makedepend.cmx : driver/pparse.cmx parsing/parsetree.cmi \
|
||||
parsing/parser.cmx parsing/parse.cmx utils/misc.cmx parsing/longident.cmx \
|
||||
parsing/location.cmx parsing/lexer.cmx parsing/depend.cmx \
|
||||
utils/config.cmx driver/compplugin.cmx driver/compenv.cmx \
|
||||
utils/clflags.cmx driver/makedepend.cmi
|
||||
parsing/parser_menhir.cmx parsing/parse.cmx utils/misc.cmx \
|
||||
parsing/longident.cmx parsing/location.cmx parsing/lexer.cmx \
|
||||
parsing/depend.cmx utils/config.cmx driver/compplugin.cmx \
|
||||
driver/compenv.cmx utils/clflags.cmx driver/makedepend.cmi
|
||||
driver/makedepend.cmi :
|
||||
driver/optcompile.cmo : bytecomp/translmod.cmi bytecomp/simplif.cmi \
|
||||
utils/profile.cmi bytecomp/printlambda.cmi utils/misc.cmi \
|
||||
|
|
12
Makefile
12
Makefile
|
@ -78,7 +78,7 @@ UTILS=utils/config.cmo utils/build_path_prefix_map.cmo utils/misc.cmo \
|
|||
|
||||
PARSING=parsing/location.cmo parsing/longident.cmo \
|
||||
parsing/docstrings.cmo parsing/syntaxerr.cmo \
|
||||
parsing/ast_helper.cmo parsing/parser.cmo \
|
||||
parsing/ast_helper.cmo \
|
||||
parsing/camlinternalMenhirLib.cmo parsing/parser_menhir.cmo \
|
||||
parsing/lexer.cmo parsing/parse.cmo parsing/printast.cmo \
|
||||
parsing/pprintast.cmo \
|
||||
|
@ -857,16 +857,6 @@ natruntop:
|
|||
otherlibs/dynlink/dynlink.cmxa: otherlibs/dynlink/natdynlink.ml
|
||||
$(MAKE) -C otherlibs/dynlink allopt
|
||||
|
||||
# The parser
|
||||
|
||||
parsing/parser.mli parsing/parser.ml: parsing/parser.mly
|
||||
$(CAMLYACC) $(YACCFLAGS) $<
|
||||
|
||||
partialclean::
|
||||
rm -f parsing/parser.mli parsing/parser.ml parsing/parser.output
|
||||
|
||||
beforedepend:: parsing/parser.mli parsing/parser.ml
|
||||
|
||||
# The lexer
|
||||
|
||||
parsing/lexer.ml: parsing/lexer.mll
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
MENHIR ?= menhir
|
||||
|
||||
MENHIRFLAGS := --explain --ocamlc "$(CAMLC) $(COMPFLAGS)" --infer\
|
||||
--lalr --strict --table --external-tokens Parser\
|
||||
--lalr --strict --table \
|
||||
--unused-token COMMENT --unused-token DOCSTRING --unused-token EOL\
|
||||
--unused-token GREATERRBRACKET --fixed-exception
|
||||
|
||||
|
@ -40,12 +40,13 @@ import-menhirLib:
|
|||
# would be easy to generate a parser and keep an incompatible version of
|
||||
# menhirLib, which would fail at compile-time.
|
||||
#
|
||||
# We assume that parser.ml and parser_menhir.ml depend
|
||||
# on the same modules, so that the dependency on
|
||||
# parsing/parser.cmo makes --infer work: the .cmi
|
||||
# of all modules that parser{_menhir}.mly semantic
|
||||
# actions depend on have already been built.
|
||||
promote-menhir: parsing/parser_menhir.mly parsing/parser.cmo
|
||||
# TODO review this in the wake of yacc parser's removal:
|
||||
# # We assume that parser.ml and parser_menhir.ml depend
|
||||
# # on the same modules, so that the dependency on
|
||||
# # parsing/parser.cmo makes --infer work: the .cmi
|
||||
# # of all modules that parser{_menhir}.mly semantic
|
||||
# # actions depend on have already been built.
|
||||
promote-menhir: parsing/parser_menhir.mly
|
||||
$(MAKE) import-menhirLib
|
||||
$(MENHIR) $(MENHIRFLAGS) parsing/parser_menhir.mly
|
||||
cp $(addprefix parsing/parser_menhir.,ml mli) boot/menhir
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,7 +1,126 @@
|
|||
|
||||
(* The type of tokens. *)
|
||||
|
||||
type token = Parser.token
|
||||
type token =
|
||||
| WITH
|
||||
| WHILE
|
||||
| WHEN
|
||||
| VIRTUAL
|
||||
| VAL
|
||||
| UNDERSCORE
|
||||
| UIDENT of (string)
|
||||
| TYPE
|
||||
| TRY
|
||||
| TRUE
|
||||
| TO
|
||||
| TILDE
|
||||
| THEN
|
||||
| STRUCT
|
||||
| STRING of (string * string option)
|
||||
| STAR
|
||||
| SIG
|
||||
| SEMISEMI
|
||||
| SEMI
|
||||
| RPAREN
|
||||
| REC
|
||||
| RBRACKET
|
||||
| RBRACE
|
||||
| QUOTE
|
||||
| QUESTION
|
||||
| PRIVATE
|
||||
| PREFIXOP of (string)
|
||||
| PLUSEQ
|
||||
| PLUSDOT
|
||||
| PLUS
|
||||
| PERCENT
|
||||
| OR
|
||||
| OPTLABEL of (string)
|
||||
| OPEN
|
||||
| OF
|
||||
| OBJECT
|
||||
| NONREC
|
||||
| NEW
|
||||
| MUTABLE
|
||||
| MODULE
|
||||
| MINUSGREATER
|
||||
| MINUSDOT
|
||||
| MINUS
|
||||
| METHOD
|
||||
| MATCH
|
||||
| LPAREN
|
||||
| LIDENT of (string)
|
||||
| LET
|
||||
| LESSMINUS
|
||||
| LESS
|
||||
| LBRACKETPERCENTPERCENT
|
||||
| LBRACKETPERCENT
|
||||
| LBRACKETLESS
|
||||
| LBRACKETGREATER
|
||||
| LBRACKETBAR
|
||||
| LBRACKETATATAT
|
||||
| LBRACKETATAT
|
||||
| LBRACKETAT
|
||||
| LBRACKET
|
||||
| LBRACELESS
|
||||
| LBRACE
|
||||
| LAZY
|
||||
| LABEL of (string)
|
||||
| INT of (string * char option)
|
||||
| INITIALIZER
|
||||
| INHERIT
|
||||
| INFIXOP4 of (string)
|
||||
| INFIXOP3 of (string)
|
||||
| INFIXOP2 of (string)
|
||||
| INFIXOP1 of (string)
|
||||
| INFIXOP0 of (string)
|
||||
| INCLUDE
|
||||
| IN
|
||||
| IF
|
||||
| HASHOP of (string)
|
||||
| HASH
|
||||
| GREATERRBRACKET
|
||||
| GREATERRBRACE
|
||||
| GREATER
|
||||
| FUNCTOR
|
||||
| FUNCTION
|
||||
| FUN
|
||||
| FOR
|
||||
| FLOAT of (string * char option)
|
||||
| FALSE
|
||||
| EXTERNAL
|
||||
| EXCEPTION
|
||||
| EQUAL
|
||||
| EOL
|
||||
| EOF
|
||||
| END
|
||||
| ELSE
|
||||
| DOWNTO
|
||||
| DOTOP of (string)
|
||||
| DOTDOT
|
||||
| DOT
|
||||
| DONE
|
||||
| DOCSTRING of (Docstrings.docstring)
|
||||
| DO
|
||||
| CONSTRAINT
|
||||
| COMMENT of (string * Location.t)
|
||||
| COMMA
|
||||
| COLONGREATER
|
||||
| COLONEQUAL
|
||||
| COLONCOLON
|
||||
| COLON
|
||||
| CLASS
|
||||
| CHAR of (char)
|
||||
| BEGIN
|
||||
| BARRBRACKET
|
||||
| BARBAR
|
||||
| BAR
|
||||
| BANG
|
||||
| BACKQUOTE
|
||||
| ASSERT
|
||||
| AS
|
||||
| AND
|
||||
| AMPERSAND
|
||||
| AMPERAMPER
|
||||
|
||||
(* This exception is raised by the monolithic API functions. *)
|
||||
|
||||
|
|
|
@ -236,6 +236,7 @@ let rec lexical_approximation lexbuf =
|
|||
- always skip the token after a backquote
|
||||
*)
|
||||
try
|
||||
let module Parser = Parser_menhir in
|
||||
let rec process after_lident lexbuf =
|
||||
match Lexer.token lexbuf with
|
||||
| Parser.UIDENT name ->
|
||||
|
|
|
@ -165,11 +165,6 @@ let parse (type a) (kind : a ast_kind) lexbuf : a =
|
|||
| Structure -> Parse.implementation lexbuf
|
||||
| Signature -> Parse.interface lexbuf
|
||||
|
||||
let parse_menhir (type a) (kind : a ast_kind) lexbuf : a =
|
||||
match kind with
|
||||
| Structure -> Parse.implementation_menhir lexbuf
|
||||
| Signature -> Parse.interface_menhir lexbuf
|
||||
|
||||
let file_aux ~tool_name inputfile (type a) parse_fun invariant_fun
|
||||
(kind : a ast_kind) : a =
|
||||
let ast_magic = magic_of_kind kind in
|
||||
|
@ -256,7 +251,6 @@ module InterfaceHooks = Misc.MakeHooks(struct
|
|||
type t = Parsetree.signature
|
||||
end)
|
||||
|
||||
let yacc = "yacc"
|
||||
let menhir = "menhir"
|
||||
|
||||
let choose_parsers parser_table =
|
||||
|
@ -279,8 +273,7 @@ let choose_parsers parser_table =
|
|||
|
||||
let parse_implementation ~tool_name sourcefile =
|
||||
let parse = choose_parsers [
|
||||
(yacc, parse Structure);
|
||||
(menhir, parse_menhir Structure)
|
||||
(menhir, parse Structure)
|
||||
] in
|
||||
parse_file ~tool_name Ast_invariants.structure
|
||||
parse Printast.implementation Structure sourcefile
|
||||
|
@ -288,8 +281,7 @@ let parse_implementation ~tool_name sourcefile =
|
|||
|
||||
let parse_interface ~tool_name sourcefile =
|
||||
let parse = choose_parsers [
|
||||
(yacc, parse Signature);
|
||||
(menhir, parse_menhir Signature)
|
||||
(menhir, parse Signature)
|
||||
] in
|
||||
parse_file ~tool_name Ast_invariants.signature
|
||||
parse Printast.interface Signature sourcefile
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
(* The lexical analyzer *)
|
||||
|
||||
val init : unit -> unit
|
||||
val token: Lexing.lexbuf -> Parser.token
|
||||
val token: Lexing.lexbuf -> Parser_menhir.token
|
||||
val skip_hash_bang: Lexing.lexbuf -> unit
|
||||
|
||||
type error =
|
||||
|
@ -39,7 +39,7 @@ val in_string : unit -> bool;;
|
|||
val print_warnings : bool ref
|
||||
val handle_docstrings: bool ref
|
||||
val comments : unit -> (string * Location.t) list
|
||||
val token_with_comments : Lexing.lexbuf -> Parser.token
|
||||
val token_with_comments : Lexing.lexbuf -> Parser_menhir.token
|
||||
|
||||
(*
|
||||
[set_preprocessor init preprocessor] registers [init] as the function
|
||||
|
@ -54,5 +54,5 @@ changes its behavior to accept backslash-newline as a token-separating blank.
|
|||
|
||||
val set_preprocessor :
|
||||
(unit -> unit) ->
|
||||
((Lexing.lexbuf -> Parser.token) -> Lexing.lexbuf -> Parser.token) ->
|
||||
((Lexing.lexbuf -> Parser_menhir.token) -> Lexing.lexbuf -> Parser_menhir.token) ->
|
||||
unit
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
{
|
||||
open Lexing
|
||||
open Misc
|
||||
open Parser
|
||||
open Parser_menhir
|
||||
|
||||
type error =
|
||||
| Illegal_character of char
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
|
||||
(* Skip tokens to the end of the phrase *)
|
||||
|
||||
module Parser = Parser_menhir
|
||||
|
||||
let last_token = ref Parser.EOF
|
||||
|
||||
let token lexbuf =
|
||||
|
@ -63,17 +65,6 @@ let wrap parsing_fun lexbuf =
|
|||
then maybe_skip_phrase lexbuf;
|
||||
raise(Syntaxerr.Error(Syntaxerr.Other loc))
|
||||
|
||||
let wrap_yacc parsing_fun =
|
||||
wrap (fun lexbuf -> parsing_fun token lexbuf)
|
||||
|
||||
let implementation = wrap_yacc Parser.implementation
|
||||
and interface = wrap_yacc Parser.interface
|
||||
and toplevel_phrase = wrap_yacc Parser.toplevel_phrase
|
||||
and use_file = wrap_yacc Parser.use_file
|
||||
and core_type = wrap_yacc Parser.parse_core_type
|
||||
and expression = wrap_yacc Parser.parse_expression
|
||||
and pattern = wrap_yacc Parser.parse_pattern
|
||||
|
||||
let rec loop lexbuf in_error checkpoint =
|
||||
let module I = Parser_menhir.MenhirInterpreter in
|
||||
match checkpoint with
|
||||
|
@ -123,10 +114,10 @@ let wrap_menhir entry lexbuf =
|
|||
let initial = entry lexbuf.Lexing.lex_curr_p in
|
||||
wrap (fun lexbuf -> loop lexbuf false initial) lexbuf
|
||||
|
||||
let implementation_menhir = wrap_menhir Parser_menhir.Incremental.implementation
|
||||
and interface_menhir = wrap_menhir Parser_menhir.Incremental.interface
|
||||
and toplevel_phrase_menhir = wrap_menhir Parser_menhir.Incremental.toplevel_phrase
|
||||
and use_file_menhir = wrap_menhir Parser_menhir.Incremental.use_file
|
||||
and core_type_menhir = wrap_menhir Parser_menhir.Incremental.parse_core_type
|
||||
and expression_menhir = wrap_menhir Parser_menhir.Incremental.parse_expression
|
||||
and pattern_menhir = wrap_menhir Parser_menhir.Incremental.parse_pattern
|
||||
let implementation = wrap_menhir Parser_menhir.Incremental.implementation
|
||||
and interface = wrap_menhir Parser_menhir.Incremental.interface
|
||||
and toplevel_phrase = wrap_menhir Parser_menhir.Incremental.toplevel_phrase
|
||||
and use_file = wrap_menhir Parser_menhir.Incremental.use_file
|
||||
and core_type = wrap_menhir Parser_menhir.Incremental.parse_core_type
|
||||
and expression = wrap_menhir Parser_menhir.Incremental.parse_expression
|
||||
and pattern = wrap_menhir Parser_menhir.Incremental.parse_pattern
|
||||
|
|
|
@ -22,11 +22,3 @@ val use_file : Lexing.lexbuf -> Parsetree.toplevel_phrase list
|
|||
val core_type : Lexing.lexbuf -> Parsetree.core_type
|
||||
val expression : Lexing.lexbuf -> Parsetree.expression
|
||||
val pattern : Lexing.lexbuf -> Parsetree.pattern
|
||||
|
||||
val implementation_menhir : Lexing.lexbuf -> Parsetree.structure
|
||||
val interface_menhir : Lexing.lexbuf -> Parsetree.signature
|
||||
val toplevel_phrase_menhir : Lexing.lexbuf -> Parsetree.toplevel_phrase
|
||||
val use_file_menhir : Lexing.lexbuf -> Parsetree.toplevel_phrase list
|
||||
val core_type_menhir : Lexing.lexbuf -> Parsetree.core_type
|
||||
val expression_menhir : Lexing.lexbuf -> Parsetree.expression
|
||||
val pattern_menhir : Lexing.lexbuf -> Parsetree.pattern
|
||||
|
|
2697
parsing/parser.mly
2697
parsing/parser.mly
File diff suppressed because it is too large
Load Diff
|
@ -114,8 +114,8 @@ let remove_printer = Printer.remove_printer
|
|||
|
||||
(* Hooks for parsing functions *)
|
||||
|
||||
let parse_toplevel_phrase = ref Parse.toplevel_phrase_menhir
|
||||
let parse_use_file = ref Parse.use_file_menhir
|
||||
let parse_toplevel_phrase = ref Parse.toplevel_phrase
|
||||
let parse_use_file = ref Parse.use_file
|
||||
let print_location = Location.print_loc
|
||||
let print_error = Location.print_report
|
||||
let print_warning = Location.print_warning
|
||||
|
|
Loading…
Reference in New Issue