Up

module Syntax

: sig
#
type terminal = string
#
type nonterminal = string
#
type symbol = string
#
type identifier = string
#
type filename = string
#
type trailer = string
#
type action = Action.t
#
type token_associativity =
# | LeftAssoc
# | RightAssoc
# | NonAssoc
# | UndefinedAssoc
#
type precedence_level =
# | UndefinedPrecedence
# | PrecedenceLevel of Mark.t * int * Lexing.position * Lexing.position
#
type token_properties = {
# tk_filename
: filename;
# tk_ocamltype
: Stretch.ocamltype option;
# tk_position
: Positions.t;
# mutable tk_associativity
: token_associativity;
# mutable tk_priority
: precedence_level;
# mutable tk_is_declared
: bool;
}
#
type parameter =
# | ParameterVar of symbol Positions.located
# | ParameterApp of symbol Positions.located * parameters
#
type parameters = parameter list
#
type declaration =
# | DCode of Stretch.t
# | DParameter of Stretch.ocamltype
# | DToken of Stretch.ocamltype option * terminal
# | DStart of nonterminal
# | DTokenProperties of terminal * token_associativity * precedence_level
# | DType of Stretch.ocamltype * parameter
#
type branch_shift_precedence = symbol Positions.located option
#
type branch_reduce_precedence = precedence_level
#
type producer = identifier Positions.located option * parameter
#
type parameterized_branch = {
# pr_branch_position
: Positions.t;
# pr_producers
: producer list;
# pr_action
: action;
# pr_branch_shift_precedence
: branch_shift_precedence;
# pr_branch_reduce_precedence
: branch_reduce_precedence;
}
#
type parameterized_rule = {
# pr_public_flag
: bool;
# pr_inline_flag
: bool;
# pr_nt
: nonterminal;
# pr_positions
: Positions.t list;
# pr_parameters
: symbol list;
# pr_branches
: parameterized_branch list;
}
end