blob: 672c69522cf4f770220e66fc8b87dc7dbc978228 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
open Ast
open Ast_printer
open Lexing
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 ->
Printf.eprintf "Parse error (invalid syntax) near %s\n"
(string_of_position lex.lex_start_p);
failwith "Parse error"
| Failure "lexing: empty token" ->
Printf.eprintf "Parse error (invalid token) near %s\n"
(string_of_position lex.lex_start_p);
failwith "Parse error"
|