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