parent
d6e3dd0551
commit
bc85016584
|
@ -69,12 +69,20 @@ let parse_camlp4 syntax str eos_is_error =
|
||||||
let loc, msg = get_camlp4_error_message exn in
|
let loc, msg = get_camlp4_error_message exn in
|
||||||
UTop.Error ([loc], msg)
|
UTop.Error ([loc], msg)
|
||||||
|
|
||||||
|
let filter phrase =
|
||||||
|
try
|
||||||
|
UTop.Value (AstFilters.fold_topphrase_filters (fun t filter -> filter t) phrase)
|
||||||
|
with exn ->
|
||||||
|
let loc, msg = get_camlp4_error_message exn in
|
||||||
|
UTop.Error ([loc], msg)
|
||||||
|
;;
|
||||||
|
|
||||||
let parse_toplevel_phrase_camlp4 str eos_is_error =
|
let parse_toplevel_phrase_camlp4 str eos_is_error =
|
||||||
match parse_camlp4 Syntax.top_phrase str eos_is_error with
|
match parse_camlp4 Syntax.top_phrase str eos_is_error with
|
||||||
| UTop.Value None ->
|
| UTop.Value None ->
|
||||||
raise UTop.Need_more
|
raise UTop.Need_more
|
||||||
| UTop.Value (Some ast) ->
|
| UTop.Value (Some ast) ->
|
||||||
UTop.Value (AstFilters.fold_topphrase_filters (fun t filter -> filter t) ast)
|
filter ast
|
||||||
| UTop.Error (locs, msg) ->
|
| UTop.Error (locs, msg) ->
|
||||||
UTop.Error (locs, msg)
|
UTop.Error (locs, msg)
|
||||||
|
|
||||||
|
@ -83,7 +91,7 @@ let parse_toplevel_phrase str eos_is_error =
|
||||||
| UTop.Value ast ->
|
| UTop.Value ast ->
|
||||||
convert_camlp4_toplevel_phrase ast
|
convert_camlp4_toplevel_phrase ast
|
||||||
| UTop.Error (locs, msg) ->
|
| UTop.Error (locs, msg) ->
|
||||||
UTop.Error (locs, msg)
|
UTop.Error (locs, msg)
|
||||||
|
|
||||||
let parse_use_file str eos_is_error =
|
let parse_use_file str eos_is_error =
|
||||||
match parse_camlp4 Syntax.use_file str eos_is_error with
|
match parse_camlp4 Syntax.use_file str eos_is_error with
|
||||||
|
@ -93,11 +101,12 @@ let parse_use_file str eos_is_error =
|
||||||
let rec loop phrases = function
|
let rec loop phrases = function
|
||||||
| [] -> UTop.Value (List.rev phrases)
|
| [] -> UTop.Value (List.rev phrases)
|
||||||
| (ast::more_asts) ->
|
| (ast::more_asts) ->
|
||||||
match convert_camlp4_toplevel_phrase
|
match filter ast with
|
||||||
(AstFilters.fold_topphrase_filters (fun t filter -> filter t) ast)
|
| UTop.Error _ as e -> e
|
||||||
with
|
| UTop.Value ast ->
|
||||||
| UTop.Value y -> loop (y::phrases) more_asts
|
match convert_camlp4_toplevel_phrase ast with
|
||||||
| UTop.Error (_,_) as e -> e
|
| UTop.Error _ as e -> e
|
||||||
|
| UTop.Value y -> loop (y::phrases) more_asts
|
||||||
in loop [] asts
|
in loop [] asts
|
||||||
| UTop.Error (locs, msg) ->
|
| UTop.Error (locs, msg) ->
|
||||||
UTop.Error (locs, msg)
|
UTop.Error (locs, msg)
|
||||||
|
|
Loading…
Reference in New Issue