package pratter

  1. Overview
  2. Docs
An extended Pratt parser

Install

dune-project
 Dependency

Authors

Maintainers

Sources

pratter-1.2.1.tbz
sha256=7dd9a7b970d3f660a957a54ae257ac2228f8203a133f8ceb7a73ce61f0663833
sha512=040a36c6d61761701d7f93d620f5a466caa0d578f6dfb0a93028fd8f693b4abef8b22c9b7695971e21ce347865dfc84f26cc032f1c4bfc070ee6e87cd9a72318

doc/pratter/Pratter/index.html

Module PratterSource

This modules defines a functor whose image is a parser for terms with applications, binary and unary 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. | Bin of associativity
    (*

    Binary operator with an associativity.

    *)
  2. | Una
    (*

    Unary operator.

    *)

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.