package pratter

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

This modules defines a functor whose image is a parser for terms with applications, infix, prefix or postfix operators. These terms are specified in the argument of the functor.

The algorithm implemented is an extension of the Pratt parser. The Shunting Yard algorithm could also be used.

type associativity =
  1. | Left
    (*

    If + is a left associative operator, x + y + z is parsed (x + y) + z.

    *)
  2. | Right
    (*

    If + is a right associative operator, x + y + z is parsed x + (y + z).

    *)
  3. | Neither
    (*

    If + is not associative, then (x + y) + z is not x + (y + z) and x + y + z results in a syntax error.

    *)

Associativity of an operator.

type priority = float

Priority of operators, also called binding power. If * has a higher priority than +, than x + y * z is parsed x + (y * z).

type operator =
  1. | Infix of associativity
    (*

    Infix operator with an associativity.

    *)
  2. | Prefix
  3. | Postfix

A type to designate operators and their properties.

module type SUPPORT = sig ... end

Types and utilities on terms that are to be Pratt parsed.

module Make (Sup : SUPPORT) : sig ... end