21 lines
862 B
Standard ML
21 lines
862 B
Standard ML
(** A program source file, read by the reader its extension names: [.fln] is
|
|
the indented syntax ([Indent_reader]), anything else the paren syntax
|
|
([Reader]). Both give the same [Form.t], so nothing past this point knows
|
|
which one a file was written in, and a program may mix them freely.
|
|
|
|
Only program sources come through here. The prelude, the wire protocol and
|
|
the registry's spellings are paren text the compiler writes itself, and
|
|
read it with [Reader] directly. *)
|
|
|
|
let indented_ext = ".fln"
|
|
let paren_ext = ".flan"
|
|
|
|
let is_indented path = Filename.check_suffix path indented_ext
|
|
|
|
(** A file a package directory contributes, in either syntax. *)
|
|
let is_source path =
|
|
Filename.check_suffix path paren_ext || is_indented path
|
|
|
|
let read_file path =
|
|
if is_indented path then Indent_reader.read_file path else Reader.read_file path
|