package fmlib_parse

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type t

Type of the parser.

Feeding Tokens

type token = char

Type of the tokens.

val needs_more : t -> bool

needs_more p Does the parser p need more tokens?

val put : token -> t -> t

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.

val put_end : t -> t

put_end p Push and end token into the parser p.

val run_on_stream : token Stream.t -> t -> t

run_on_stream str p Run the parser p on the stream of tokens str.

Success

type final = Position.range * Token.t

Type of the final result.

val has_succeeded : t -> bool

has_succeeded p Has the parser p succeeded?

val final : t -> final

final p The final object constructed by the parser p in case of success.

Precondition: has_succeeded p

Syntax Errors

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?

val failed_expectations : t -> expect list

failed_expectations p The failed expectations due to a syntax error.

Precondition: has_failed_syntax p

Lookahead

val first_lookahead_token : t -> token option

The first lookahead character or None if there is no character in the lookahead buffer.

Position

val position : t -> Position.t

Line and column number of the current position of the lexer.

Restart

A lexer does not consume the entire input stream. It just consumes characters until a token has been recognized. In case of the successful recognition of a token, it returns the token (see final). Then it can be restarted to recognize the next token.

val restart : t -> t

Next lexer, ready to recognize the next token of the input stream.

All lookaheads from the previous lexer are pushed onto the new lexer which starts a the position where the previous lexer finished.

OCaml

Innovation. Community. Security.