summaryrefslogtreecommitdiff
path: root/main.ml
diff options
context:
space:
mode:
authorAlex Auvolat <alex.auvolat@ansys.com>2014-07-15 11:35:12 +0200
committerAlex Auvolat <alex.auvolat@ansys.com>2014-07-15 11:35:12 +0200
commit4e66de932b91e91e4cadd943ff8859d6f69f57e1 (patch)
treeced73719216f2f1fd2eb9057001079a39dbad68e /main.ml
parent7205927e18ea355a619e95b1036aac9b94a22667 (diff)
downloadscade-analyzer-4e66de932b91e91e4cadd943ff8859d6f69f57e1.tar.gz
scade-analyzer-4e66de932b91e91e4cadd943ff8859d6f69f57e1.zip
Clean up & comment a bit.
Diffstat (limited to 'main.ml')
-rw-r--r--main.ml20
1 files changed, 18 insertions, 2 deletions
diff --git a/main.ml b/main.ml
index f85f6fb..55a3837 100644
--- a/main.ml
+++ b/main.ml
@@ -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