Library
Module
Module type
Parameter
Class
Class type
type error = [
| `OpConflict of Sup.term * Sup.term
Priority or associativiy conflict between two operators. In `OpConflict (t,o)
, operator o
generates a conflict which prevents term t
to be parsed.
| `UnexpectedInfix of Sup.term
An infix operator appears without left context. If +
is an infix operator, it is raised in, e.g., + x x
or x + + x x
.
| `UnexpectedPostfix of Sup.term
A postfix operator appears without left context. If !
is a postfix operator, it is raised in ! x
.
| `TooFewArguments
More arguments are expected. It is raised for instance on partial application of operators, such as x +
.
]
Errors that can be encountered while parsing a stream of terms.
expression tbl s
parses stream of tokens s
with table of operators tbl
. It transforms a sequence of applications to a structured application tree containing infix and prefix operators. For instance, assuming that +
is declared infix, it transforms 3 + 5 + 2
, represented as @(@(@(@(3,+),5),+),2)
(where @
is the application) into (@(+(@(+,3,5)),2)
.