Library
Module
Module type
Parameter
Class
Class type
Parser for CUDF related documents
Error during parsing (syntax error, type error, ...). Arguments are error message and error location.
val from_in_channel :
?typedecl:Cudf_conf.stanza_typedecl ->
in_channel ->
cudf_parser
create a CUDF parser reading data from an input channel
val from_IO_in_channel :
?typedecl:Cudf_conf.stanza_typedecl ->
IO.input ->
cudf_parser
create a CUDF parser reading data from an Extlib input channel
val from_file : ?typedecl:Cudf_conf.stanza_typedecl -> string -> cudf_parser
create a CUDF parser reading data from a file
val close : cudf_parser -> unit
Dispose a CUDF parser.
Afterwards, the parser should not be used any longer
"parse_*" functions offer plain syntax parsing, with no semantic interpretation of what is being parsed. "load_*" functions offer the latter, hence also checking for semantic constraints (such as the lack of key duplication).
All full parsing function are granted to raise only Cudf_parser.Parse_error
; finer grained exception are mapped to it.
val parse :
cudf_parser ->
Cudf.preamble option * Cudf.package list * Cudf.request option
parse a CUDF document (or a universe) as a whole
val load :
cudf_parser ->
Cudf.preamble option * Cudf.universe * Cudf.request option
same as Cudf_parser.parse
, but additionally loads the package list as an abstract Cudf.universe
.
Note: to load compact universes (i.e. only containing package names, versions, and installed status) that will be tested as solutions you should use Cudf_parser.load_solution
instead: the present function does not expand missing metadata with respect to the initial status.
val load_solution :
cudf_parser ->
Cudf.universe ->
Cudf.preamble option * Cudf.universe
Load a solution wrt to a given CUDF document, whose universe is given.
Solution format is as per Appendix B of CUDF 2.0 spec
val parse_from_file :
?typedecl:Cudf_conf.stanza_typedecl ->
string ->
Cudf.preamble option * Cudf.package list * Cudf.request option
Shorthand: parse a file given its name
val load_from_file :
?typedecl:Cudf_conf.stanza_typedecl ->
string ->
Cudf.preamble option * Cudf.universe * Cudf.request option
Shorthand: load from a file given its name
val load_solution_from_file :
string ->
Cudf.universe ->
Cudf.preamble option * Cudf.universe
Shorthand: load a solution from a file given its name
val parse_item : cudf_parser -> Cudf.cudf_item
Parse the next information item (either a package description, a user request, or a preamble) from the given input channel.
Beware that parsing is stateful; in particular when the preamble is parsed, the list of allowed properties for future package stanzas is internally updated.
The following parsing function usually raise fine grained exceptions such as Cudf_types.Syntax_error
and Cudf_types.Type_error
.
val parse_stanza : cudf_parser -> loc_map * string Cudf_types.stanza
Parse a file stanza (i.e., a RFC822-like stanza, with the notable simplification that all field/value pairs are one-liners). Strip any heading blanks lines leading to the first available field/value pair.
val type_check_stanza :
?locs:loc_map ->
string Cudf_types.stanza ->
Cudf_types.typedecl ->
Cudf_types.typed_value Cudf_types.stanza
Type check an untyped stanza according to a given set of type declarations. Also take care of default values, adding missing properties where needed; fail if a required property is missing.