@@ -8,11 +8,6 @@ let parse : string -> Ast.ParserClause.t list attempt = function
88 if in_channel_length inc = 0 then error @@ Error. EmptyFile str
99 else ok @@ Parser. parse str (In_channel. input_all inc)
1010
11- let preprocess (preprocessor : Preprocessor.t ) :
12- Ast.ParserClause. t list -> Preprocessor. output attempt =
13- fun decls_queries ->
14- ok @@ Preprocessor. group_clauses preprocessor decls_queries
15-
1611let compile' (step : Ast.Clause.t list * Compiler.Types.t -> Compiler.Types.t )
1712 (compiler : Compiler.Types.t ) :
1813 Ast.Clause. t list -> Compiler.Types. t attempt =
4439type preprocessed_files = Ast.Clause .t BatFingerTree .t BatMap.String .t
4540type preprocessed_result = Preprocessor.DependencyGraph .t * preprocessed_files
4641
42+ let preprocess filepath =
43+ Error. map @@ Preprocessor. run (Preprocessor. initialize filepath)
44+
4745(* FIXME: hook up dependency information and sort the file list before compiling *)
4846(* TODO: compilation cache *)
4947let compile ({ sakura_module_name } : Compiler.Types.cli )
5048 (persist : Compiler.Types.Persist.t ) (filepaths : string list ) :
5149 unit attempt =
52- let is_sakura_file filepath = Filename. extension filepath = " .skr" in
5350 let sakura_filename = sakura_module_name ^ " .skr" in
54- let sakura_files, karuta_files = BatList. partition is_sakura_file filepaths in
51+ let sakura_files, karuta_files =
52+ BatList. partition Preprocessor. is_sakura_file filepaths
53+ in
5554 let * sakura_output =
5655 sakura_files
5756 |> Error. fold (fun parsed filepath ->
5857 parse filepath |> Error. map (List. append parsed))
59- || > preprocess ( Preprocessor. initialize sakura_filename)
58+ |> preprocess sakura_filename
6059 in
6160 let compile_one_file (preprocessed : preprocessed_files ) filepath externals =
6261 let compiler_config =
63- if is_sakura_file filepath then
62+ if Preprocessor. is_sakura_file filepath then
6463 (module Sakura : Compiler.Types.COMPILER_CONFIG )
6564 else (module Karuta : Compiler.Types.COMPILER_CONFIG )
6665 in
@@ -81,7 +80,7 @@ let compile ({ sakura_module_name } : Compiler.Types.cli)
8180 { (Preprocessor. initialize filepath) with dependencies }
8281 in
8382 let * { dependencies; clauses } =
84- filepath |> parse ||> preprocess preprocessor
83+ filepath |> parse |> Error. map @@ Preprocessor. run preprocessor
8584 in
8685 ok (dependencies, BatMap.String. add filepath clauses preprocessed)
8786 in
0 commit comments