diff --git a/src/passes/1-parser/cameligo/.Eval.ml.tag b/src/passes/1-parser/cameligo/.Eval.ml.tag deleted file mode 100644 index 64605f41b..000000000 --- a/src/passes/1-parser/cameligo/.Eval.ml.tag +++ /dev/null @@ -1 +0,0 @@ -ocamlc: -w -42 \ No newline at end of file diff --git a/src/passes/1-parser/cameligo/.EvalMain.ml.tag b/src/passes/1-parser/cameligo/.EvalMain.ml.tag deleted file mode 100644 index a2d1d3b41..000000000 --- a/src/passes/1-parser/cameligo/.EvalMain.ml.tag +++ /dev/null @@ -1 +0,0 @@ -ocamlc: -w -58 diff --git a/src/passes/1-parser/pascaligo/Stubs/Simple_utils.ml b/src/passes/1-parser/pascaligo/Stubs/Simple_utils.ml deleted file mode 100644 index 0360af1b5..000000000 --- a/src/passes/1-parser/pascaligo/Stubs/Simple_utils.ml +++ /dev/null @@ -1,2 +0,0 @@ -module Region = Region -module Pos = Pos diff --git a/src/passes/1-parser/reasonligo/LexerMain.ml b/src/passes/1-parser/reasonligo/LexerMain.ml index f84e56c92..b49af81ff 100644 --- a/src/passes/1-parser/reasonligo/LexerMain.ml +++ b/src/passes/1-parser/reasonligo/LexerMain.ml @@ -1,44 +1,40 @@ -(* Driver for the lexer of ReasonLIGO *) +(** Driver for the LIGO lexer *) -(* Error printing and exception tracing *) +let extension = ".religo" +let options = EvalOpt.read "ReasonLIGO" extension +(** Error printing and exception tracing +*) let () = Printexc.record_backtrace true -(* Running the lexer on the source *) - -let options = EvalOpt.read "ReasonLIGO" ".religo" - -open EvalOpt - let external_ text = Utils.highlight (Printf.sprintf "External error: %s" text); exit 1;; -(* Path for CPP inclusions (#include) *) +(** {1 Preprocessing the input source and opening the input channels} *) +(** Path for CPP inclusions (#include) +*) let lib_path = - match options.libs with + match options#libs with [] -> "" | libs -> let mk_I dir path = Printf.sprintf " -I %s%s" dir path in List.fold_right mk_I libs "" -(* Preprocessing the input source and opening the input channels *) - let prefix = - match options.input with + match options#input with None | Some "-" -> "temp" | Some file -> Filename.(file |> basename |> remove_extension) -let suffix = ".pp.religo" +let suffix = ".pp" ^ extension let pp_input = - if Utils.String.Set.mem "cpp" options.verbose + if Utils.String.Set.mem "cpp" options#verbose then prefix ^ suffix else let pp_input, pp_out = Filename.open_temp_file prefix suffix in close_out pp_out; pp_input let cpp_cmd = - - match options.input with + match options#input with None | Some "-" -> Printf.sprintf "cpp -traditional-cpp%s - > %s" lib_path pp_input @@ -47,16 +43,14 @@ let cpp_cmd = lib_path file pp_input let () = - if Utils.String.Set.mem "cpp" options.verbose + if Utils.String.Set.mem "cpp" options#verbose then Printf.eprintf "%s\n%!" cpp_cmd; if Sys.command cpp_cmd <> 0 then external_ (Printf.sprintf "the command \"%s\" failed." cpp_cmd) -(* Running the lexer on the input file *) +(** {1 Running the lexer on the input file} *) -module Lexer = Lexer.Make (LexToken) +module Log = LexerLog.Make (Lexer.Make (LexToken)) -module Log = LexerLog.Make (Lexer) - -let () = Log.trace ~offsets:options.offsets - options.mode (Some pp_input) options.cmd +let () = Log.trace ~offsets:options#offsets + options#mode (Some pp_input) options#cmd diff --git a/src/passes/1-parser/reasonligo/ParserMain.ml b/src/passes/1-parser/reasonligo/ParserMain.ml index 424f38dfb..30fd040dd 100644 --- a/src/passes/1-parser/reasonligo/ParserMain.ml +++ b/src/passes/1-parser/reasonligo/ParserMain.ml @@ -1,27 +1,24 @@ -(* Driver for the parser of ReasonLIGO *) +(** Driver for the LIGO parser *) -(* Error printing and exception tracing *) +let extension = ".religo" +let options = EvalOpt.read "ReasonLIGO" extension +(** Error printing and exception tracing +*) let () = Printexc.record_backtrace true -(* Reading the command-line options *) - -let options = EvalOpt.read "ReasonLIGO" ".religo" - -open EvalOpt - -(* Auxiliary functions *) - +(** Auxiliary functions +*) let sprintf = Printf.sprintf -(* Extracting the input file *) - +(** Extracting the input file +*) let file = - match options.input with + match options#input with None | Some "-" -> false | Some _ -> true -(* Error printing and exception tracing *) +(** {1 Error printing and exception tracing} *) let () = Printexc.record_backtrace true @@ -35,35 +32,35 @@ let error_to_string = function | _ -> assert false let print_error ?(offsets=true) mode Region.{region; value} ~file = - let msg = error_to_string value in - let reg = region#to_string ~file ~offsets mode in + let msg = error_to_string value in + let reg = region#to_string ~file ~offsets mode in Utils.highlight (sprintf "Parse error %s:\n%s%!" reg msg) -(* Path for CPP inclusions (#include) *) +(** {1 Preprocessing the input source and opening the input channels} *) +(** Path for CPP inclusions (#include) +*) let lib_path = - match options.libs with + match options#libs with [] -> "" | libs -> let mk_I dir path = Printf.sprintf " -I %s%s" dir path - in List.fold_right mk_I libs "" - -(* Preprocessing the input source and opening the input channels *) + in List.fold_right mk_I libs "" let prefix = - match options.input with + match options#input with None | Some "-" -> "temp" | Some file -> Filename.(file |> basename |> remove_extension) -let suffix = ".pp.religo" +let suffix = ".pp" ^ extension let pp_input = - if Utils.String.Set.mem "cpp" options.verbose + if Utils.String.Set.mem "cpp" options#verbose then prefix ^ suffix else let pp_input, pp_out = Filename.open_temp_file prefix suffix in close_out pp_out; pp_input let cpp_cmd = - match options.input with + match options#input with None | Some "-" -> Printf.sprintf "cpp -traditional-cpp%s - > %s" lib_path pp_input @@ -72,12 +69,12 @@ let cpp_cmd = lib_path file pp_input let () = - if Utils.String.Set.mem "cpp" options.verbose + if Utils.String.Set.mem "cpp" options#verbose then Printf.eprintf "%s\n%!" cpp_cmd; if Sys.command cpp_cmd <> 0 then external_ (Printf.sprintf "the command \"%s\" failed." cpp_cmd) -(* Instanciating the lexer *) +(** {1 Instanciating the lexer} *) module Lexer = Lexer.Make (LexToken) @@ -88,37 +85,49 @@ let Lexer.{read; buffer; get_pos; get_last; close} = and cout = stdout -let log = Log.output_token ~offsets:options.offsets - options.mode options.cmd cout +let log = Log.output_token ~offsets:options#offsets + options#mode options#cmd cout and close_all () = close (); close_out cout -(* Tokeniser *) +(** {1 Tokeniser} *) let tokeniser = read ~log -(* Main *) +(** {1 Main} *) let () = try let ast = Parser.contract tokeniser buffer in - if Utils.String.Set.mem "ast" options.verbose + if Utils.String.Set.mem "ast" options#verbose then let buffer = Buffer.create 131 in + let state = ParserLog.mk_state + ~offsets:options#offsets + ~mode:options#mode + ~buffer in begin - Parser_cameligo.ParserLog.offsets := options.offsets; - Parser_cameligo.ParserLog.mode := options.mode; - Parser_cameligo.ParserLog.print_tokens buffer ast; + ParserLog.pp_ast state ast; + Buffer.output_buffer stdout buffer + end + else if Utils.String.Set.mem "ast-tokens" options#verbose + then let buffer = Buffer.create 131 in + let state = ParserLog.mk_state + ~offsets:options#offsets + ~mode:options#mode + ~buffer in + begin + ParserLog.print_tokens state ast; Buffer.output_buffer stdout buffer end with Lexer.Error err -> close_all (); - Lexer.print_error ~offsets:options.offsets - options.mode err ~file + Lexer.print_error ~offsets:options#offsets + options#mode err ~file | Parser.Error -> let region = get_last () in let error = Region.{region; value=ParseError} in let () = close_all () in - print_error ~offsets:options.offsets - options.mode error ~file + print_error ~offsets:options#offsets + options#mode error ~file | Sys_error msg -> Utils.highlight msg