Library
Module
Module type
Parameter
Class
Class type
Generate the parser with a lexer and a token parser.
The generated parser parses a stream of characters. The lexer is used to convert the stream of characters into a stream of tokens of type Position.range * Token.t
which are fed into the token parser.
The type of tokens is char.
type token = char
Type of syntax expectations:
type expect = string * Indent.expectation option
module Lex : Interfaces.LEXER with type final = Position.range * Token.t
module Parse :
Interfaces.FULL_PARSER
with type state = State.t
and type token = Position.range * Token.t
and type expect = string * Indent.expectation option
and type final = Final.t
and type semantic = Semantic.t
include Interfaces.NORMAL_PARSER
with type token = char
and type final = Final.t
and type expect = string * Indent.expectation option
and type semantic = Semantic.t
and type state = State.t
type item = token
In order to conform to the interface Fmlib_std.Interfaces.SINK
.
val needs_more : t -> bool
needs_more p
Does the parser p
need more tokens?
put tok p
Push token tok
into the parser p
.
Even if the parser has ended, more tokens can be pushed into the parser. The parser stores the token as lookahead token.
If the parser has already received the end of the token stream via put_end
, then all subsequent tokens are ignored.
type final = Final.t
Type of the final result.
val has_succeeded : t -> bool
has_succeeded p
Has the parser p
succeeded?
final p
The final object constructed by the parser p
in case of success.
Precondition: has_succeeded p
type expect = string * Indent.expectation option
Type of expectations.
val has_failed_syntax : t -> bool
has_failed_syntax p
Has the parser p
failed with a syntax error?
failed_expectations p
The failed expectations due to a syntax error.
Precondition: has_failed_syntax p
type semantic = Semantic.t
Type of semantic errors.
val has_failed_semantic : t -> bool
Has the parser failed because of a semantic error?
The semantic error encountered.
Precondition: A semantic error has occurred.
type state = State.t
Type of the state of the parser (in many cases unit
)
val position : t -> Position.t
The current position in the input.
val range : t -> Position.range
The current range in the input; usually the range of the first lookahead token. In case of a syntax error this is the unexpected token i.e. the token which caused the syntax error.
val run_on_channel : in_channel -> t -> t
run_on_channel ch p
Run the parser p
on the channel ch
.