package pratter

  1. Overview
  2. Docs
An extended Pratt parser

Install

Dune Dependency

Authors

Maintainers

Sources

pratter-2.0.0.tar.gz
sha512=89fc9d0645e55dda7201a2cb47fe7bee774db92892c528efcbec179f270563088b1fab1d8d25ebca97b389947c2741f7a05127996cd1a4e3c7fe726be45ab835

doc/pratter/Pratter/index.html

Module PratterSource

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.

Sourcetype 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.

Sourcetype priority = float

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

Sourcetype operator =
  1. | Infix of associativity
    (*

    Infix operator with an associativity.

    *)
  2. | Prefix
  3. | Postfix

A type to designate operators and their properties.

Sourcemodule type SUPPORT = sig ... end

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

Sourcemodule Make (Sup : SUPPORT) : sig ... end
OCaml

Innovation. Community. Security.