diff options
author | Alex Auvolat <alex.auvolat@ansys.com> | 2014-07-15 11:35:12 +0200 |
---|---|---|
committer | Alex Auvolat <alex.auvolat@ansys.com> | 2014-07-15 11:35:12 +0200 |
commit | 4e66de932b91e91e4cadd943ff8859d6f69f57e1 (patch) | |
tree | ced73719216f2f1fd2eb9057001079a39dbad68e /main.ml | |
parent | 7205927e18ea355a619e95b1036aac9b94a22667 (diff) | |
download | scade-analyzer-4e66de932b91e91e4cadd943ff8859d6f69f57e1.tar.gz scade-analyzer-4e66de932b91e91e4cadd943ff8859d6f69f57e1.zip |
Clean up & comment a bit.
Diffstat (limited to 'main.ml')
-rw-r--r-- | main.ml | 20 |
1 files changed, 18 insertions, 2 deletions
@@ -1,3 +1,5 @@ +open Lexing + open Cmdline open Ast @@ -108,6 +110,20 @@ let options = [ "Scopes for which to introduce a 'init' variable in analysis."; ] +let parse_file (filename : string) : prog = + let f = open_in filename in + let lex = from_channel f in + try + lex.lex_curr_p <- { lex.lex_curr_p with pos_fname = filename; }; + Parser.file Lexer.token lex + with + | Parser.Error -> + Util.error (Printf.sprintf "Parse error (invalid syntax) near %s" + (Util.string_of_position lex.lex_start_p)) + | Failure "lexing: empty token" -> + Util.error (Printf.sprintf "Parse error (invalid token) near %s" + (Util.string_of_position lex.lex_start_p)) + let do_test_interpret prog verbose = let f0 _ = false in let s0 = Interpret.init_state (Typing.root_prog prog "test" f0 f0) in @@ -150,7 +166,7 @@ let () = end; try - let prog = File_parser.parse_file !ifile in + let prog = parse_file !ifile in if !dump then Ast_printer.print_prog Format.std_formatter prog; let prog = Rename.rename_prog prog in @@ -211,6 +227,6 @@ let () = | Util.LocError(l, e) -> Format.eprintf "Error: %s@." e; List.iter - (fun loc -> Format.eprintf "At: %s@." (Ast_printer.string_of_extent loc)) + (fun loc -> Format.eprintf "At: %s@." (Util.string_of_extent loc)) l |