Module B0_file

B0 file source and expansion.

Syntactic metadata

type smeta

Metadata attached to syntactic constructs.

loc m is the text source location of i.

val loc_errf : smeta -> ('aStdlib.Format.formatter, unit, string) Stdlib.format4 -> 'a

loc_errf smeta fmt formats an error for the location in smeta. The result should be printed as is on the TTY.

B0 files sources

type b0_boot = (string * smeta) list

The type for @@@B0.boot directive data. The list of strings.

type b0_include = (string * smeta) * (B00_std.Fpath.t * smeta)

The type for @@@B0.include directive data. The scope name and the included file.

type require = B00_ocaml.Lib.Name.t * smeta

The type for #require directive data. The library name.

type mod_use = B00_std.Fpath.t * smeta

The type for #mod_use directive data. The path to the module source.

type t

The type for B0 files sources.

val of_string : file:B00_std.Fpath.t -> string -> (t, string) Stdlib.result

of_string ~file s parses a B0 file from s. file is the file used for locations, it must be absolute.

val file : t -> B00_std.Fpath.t

file f is the B0 file's file.

val b0_boots : t -> b0_boot list

b0_boots f are the individual @@@B0.boot directives.

val b0_includes : t -> b0_include list

b0_includes f are the @@@B0.includes directives. The scope name and the included file.

val requires : t -> require list

requires s are the library names of the #require directives.

val mod_uses : t -> mod_use list

mod_uses s are the file path of the #mod_use directives.

val ocaml_unit : t -> string * smeta

ocaml_unit s is the script's OCaml implementation unit.

val pp_dump : t B00_std.Fmt.t

pp_dump dumps the parsed B0 file.

val pp_locs : t B00_std.Fmt.t

pp_locs dumps the source text locations of s.

Expanded sources

type expanded

The type for sources with expanded expanded directives and scoping instructions in place.

val expand : t -> (expanded, string) Stdlib.result

expand f expands f's includes.

val expanded_file_manifest : expanded -> B00_std.Fpath.t list

expanded_file_manifest e are all the files that contributed to the expansion of e (including the unexpanded source).

val expanded_b0_boots : expanded -> b0_boot list

expanded_b0_boots e are all the found during expansion.

val expanded_b0_includes : expanded -> b0_include list

expanded_b0_includes e are the expanded file includes whose scope names have been qualified.

val expanded_requires : expanded -> require list

expanded_requires e are all the requires that were found. This has duplicates.

val expanded_src : expanded -> string

expanded_src e is the expanded source with B0_def.Scopeing and mod_uses spliced in instructions and the call to B0_driver.main.