1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
\DOC fix
\TYPE {fix : string -> ('a -> 'b) -> 'a -> 'b}
\SYNOPSIS
Applies parser and fails if it raises {Noparse}.
\DESCRIBE
Parsers raise {Noparse} to indicate that they were not able to make any
progress at all. If {p} is such a parser, {fix s p} gives a new parser where
a {Noparse} exception from {p} will result in a {Failure s} exception, but is
otherwise the same as {p}.
\FAILURE
The immediate call {fix s p} never fails, but the resulting parser may.
\COMMENTS
This is one of a suite of combinators for manipulating ``parsers''. A parser is
simply a function whose OCaml type is some instance of
{:('a)list -> 'b * ('a)list}. The function should take a list of objects of
type {:'a} (e.g. characters or tokens), parse as much of it as possible from
left to right, and return a pair consisting of the object derived from parsing
(e.g. a term or a special syntax tree) and the list of elements that were not
processed.
\SEEALSO
++, |||, >>, a, atleast, elistof, finished, leftbin, listof, many, nothing,
possibly, rightbin, some.
\ENDDOC
|