package orsetto
Install
Dune Dependency
Authors
Maintainers
Sources
sha512=9b654edb663ae697563f150824047052f3b1bf760398f24bce6350553f031f73c46b6337239a1acd871e61238597ea92046809e3358290ff14d6ba671b449085
doc/orsetto.cf/Cf_chain_scan/Create/index.html
Module Cf_chain_scan.Create
Use Create(B)
to make a chain scanning module for B
.
Parameters
Signature
type chain = private
| Chain : {
separator : unit B.Scan.t;
header : ctrl;
trailer : ctrl;
fail : (B.Scan.mark -> 'x) option;
} -> chain
The type of a chain discipline.
val mk :
?xf:(B.Scan.mark -> 'x) ->
?a:[< ctrl ] ->
?b:[< ctrl ] ->
'r B.Scan.t ->
chain
Use mk separator
to make a chain discipline with separator
to scan for delimiters. Use ~a
and/or ~b
to control how leading/trailing delimiters are processed (respectively). For example, use ~b:`Opt
to specify that a trailing delimiter is optionally permitted.
val sep :
?xf:(B.Scan.mark -> 'x) ->
[< ctrl ] ->
'r ->
'r B.Scan.t ->
'r B.Scan.t
Use sep c r p
to make a parser for separator p
with optionality control c
.
If c
is `Non
then no input is consumed and r
is returned.
If c
is `Opt
then returns either the value recognized by p
, or r
if no value is recognized.
If c
is `Req
then acts as reqf ?xf p
.
val sep0 :
?xf:(B.Scan.mark -> 'x) ->
[< ctrl ] ->
unit B.Scan.t ->
bool B.Scan.t
Use sep0 c p
to make a parser for separator p
with optionality control c
, in the case that p
returns the unit type.
If c
is `Non
then no input is consumed and false
is returned.
If c
is `Opt
then returns a boolean value indicating whether p
recognized a separator.
If c
is `Req
then acts as reqf ?xf p >>= fun () -> return true
.
Use vis ~c ?a ?b f v
to compose a parser that recognizes a sequence of symbols in the input stream, delimited according to the chain discipline ~c
, by applying a visitor function f
at each sequence point to obtain its parser. The first sequence point is visited with the initializer v
.
If ~a
is used, then it specifies the minimum number of elements in the sequence. If ~b
is used then it specifies the maximum number of elements in the sequence. Composition raises Invalid_argument
if a < 0
or b < a
.
Use seq ?a ?b p
to create a new parser that recognizes a sequence of symbols in the input stream with p
, delimited according to the chain discipline ~c
.
If ~a
is used, then it specifies the minimum number of elements in the sequence. If ~b
is used then it specifies the maximum number of elements in the sequence. Composition raises Invalid_argument
if a < 0
or b < a
.