package fmlib
Module Make.ParserSource
include Interfaces.PARSER
A parser p is a sink of token. As long as it signals needs_more p more token can be pushed into the parser via put token p or the input stream can be ended via put_end p.
If the parser does not need more token (has_ended p is equivalent to not (needs_more p)), then it has either succeeded or failed.
If it has succeeded the final value is available via final p.
There are two types of failure:
- Syntax error: In that case
failed_expectations preturns the list of failed expectations.
- Semantic error: In that case
failed_semantic preturns the encountered semantic error.
The function state returns the user state.
The function lookaheads returns a pair. The first part of the pair is an array of unprocessed lookahead token and the second part is a flag indicating if the endtoken has been received via put_end.