home
/
code
/
tiger.ml.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Expand status notes
[tiger.ml.git]
/
compiler
/
src
/
exe
/
tigerc.ml
diff --git
a/compiler/src/exe/tigerc.ml
b/compiler/src/exe/tigerc.ml
index
708ff17
..
c6be0d8
100644
(file)
--- a/
compiler/src/exe/tigerc.ml
+++ b/
compiler/src/exe/tigerc.ml
@@
-1,16
+1,19
@@
+let lexbuf_set_filename lb filename : unit =
+ let Lexing.({lex_start_p; lex_curr_p; _}) = lb in
+ lb.Lexing.lex_start_p <- {lex_start_p with Lexing.pos_fname = filename};
+ lb.Lexing.lex_curr_p <- {lex_curr_p with Lexing.pos_fname = filename}
+
let () =
let path_to_program_file = Sys.argv.(1) in
let ic = open_in path_to_program_file in
let lexbuf = Lexing.from_channel ic in
let () =
let path_to_program_file = Sys.argv.(1) in
let ic = open_in path_to_program_file in
let lexbuf = Lexing.from_channel ic in
+ lexbuf_set_filename lexbuf path_to_program_file;
(match Tiger.Parser.program Tiger.Lexer.token lexbuf with
(match Tiger.Parser.program Tiger.Lexer.token lexbuf with
- | exception Parsing.Parse_error ->
- let
- Lexing.({lex_curr_p = {pos_lnum; pos_bol; pos_cnum; _}; _}) = lexbuf
- in
- Printf.printf
- "Syntax error in file %S, around line: %d, column: %d\n"
- path_to_program_file pos_lnum (pos_cnum - pos_bol)
+ | exception Tiger.Error.T error ->
+ Printf.eprintf "%s\n" (Tiger.Error.to_string error);
+ exit 1;
| absyn ->
| absyn ->
+ Tiger.Semant.transProg absyn;
print_endline (Tiger.Absyn.to_string absyn)
);
close_in ic;
print_endline (Tiger.Absyn.to_string absyn)
);
close_in ic;
This page took
0.026025 seconds
and
4
git commands to generate.