- let stms =
- try
- CicTextualParser2.parse_statements (Stream.of_channel ic)
- with
- (CicTextualParser2.Parse_error _) as exc ->
- prerr_endline ("Unable to parse: " ^ file);
- prerr_endline (MatitaExcPp.to_string exc);
- exit 1
- in
- close_in ic;
- List.iter
- (function
- | TA.Executable (_, TA.Command (_, TA.Set (_, "baseuri", uri))) ->
- let uri = MatitaMisc.strip_trailing_slash uri in
- baseuri := (uri, file) :: !baseuri
- | TA.Executable (_, TA.Command
- (_, TA.Alias (_, TA.Ident_alias(_, uri)))) ->
- Hashtbl.add aliases file uri
- | TA.Executable (_, TA.Command (_, TA.Include (_, path))) ->
- Hashtbl.add deps file (find path)
- | _ -> ())
- stms;
+ let istream = Stream.of_channel ic in
+ (try
+ while true do
+ try
+ match GrafiteParser.parse_statement istream with
+ | TA.Executable (_, TA.Command (_, TA.Set (_, "baseuri", uri))) ->
+ let uri = MatitaMisc.strip_trailing_slash uri in
+ baseuris := uri :: !baseuris
+ | TA.Executable (_, TA.Command
+ (_, TA.Alias (_, TA.Ident_alias(_, uri)))) ->
+ Hashtbl.add aliases file uri
+ | TA.Executable (_, TA.Command (_, TA.Include (_, path))) ->
+ if path <> "coq.ma" then
+ (try
+ Hashtbl.add deps file (MatitaMisc.obj_file_of_script (find path))
+ with
+ Sys_error _ ->
+ MatitaLog.error
+ ("In file " ^ file ^ " unable to include " ^ path)
+ )
+ | _ -> ()
+ with
+ CicNotationParser.Parse_error _ as exn ->
+ prerr_endline ("Unable to parse: " ^ file);
+ prerr_endline (MatitaExcPp.to_string exn);
+ ()
+ done
+ with
+ | End_of_file -> close_in ic);