4 let deps = Hashtbl.create (Array.length Sys.argv)
6 let aliases = Hashtbl.create (Array.length Sys.argv)
9 let uri_of_alias = function
10 | Ident_alias (_, uri)
11 | Symbol_alias (_, _, uri)
12 | Number_alias (_, uri) -> uri
16 U.buri_of_uri (U.uri_of_string alias)
20 Some (snd(List.find (fun (u, f) -> u = (buri alias)) !baseuri))
24 (*** TODO MANCANO LE URI VERBATIM DENTRO GLI AST DEI TERMINI ****)
27 for i = 1 to Array.length Sys.argv - 1 do
28 let file = Sys.argv.(i) in
29 let ic = open_in file in
32 CicTextualParser2.parse_statements (Stream.of_channel ic)
34 (CicTextualParser2.Parse_error _) as exc ->
35 prerr_endline ("Unable to parse: " ^ file);
36 prerr_endline (MatitaExcPp.to_string exc);
42 | TA.Executable (_, TA.Command (_, TA.Set (_, "baseuri", uri))) ->
43 let uri = MatitaMisc.strip_trailing_slash uri in
44 baseuri := (uri, file) :: !baseuri
45 | TA.Executable (_, TA.Command
46 (_, TA.Alias (_, TA.Ident_alias(_, uri)))) ->
47 Hashtbl.add aliases file uri
48 | TA.Executable (_, TA.Command (_, TA.Include (_, path))) ->
49 Hashtbl.add deps file path
54 let dep = resolve alias in
57 | Some d -> Hashtbl.add deps file d)
60 for i = 1 to Array.length Sys.argv - 1 do
61 let file = Sys.argv.(i) in
62 let deps = Hashtbl.find_all deps file in
63 let deps = List.fast_sort Pervasives.compare deps in
64 let deps = MatitaMisc.list_uniq deps in
66 List.map (fun x -> Pcre.replace ~pat:"ma$" ~templ:"moo" x) deps
68 let deps = file :: deps in
69 Printf.printf "%s: %s\n" (MatitaMisc.obj_file_of_script file)
70 (String.concat " " deps)