MenhirSdk.Cmly_format
type attributes = attribute list
type terminal_def = {
t_name : string; |
t_kind : [ `REGULAR | `ERROR | `EOF | `PSEUDO ]; |
t_type : ocamltype option; |
t_attributes : attributes; |
}
type nonterminal_def = {
n_name : string; |
n_kind : [ `REGULAR | `START ]; |
n_mangled_name : string; |
n_type : ocamltype option; |
n_positions : range list; |
n_nullable : bool; |
n_first : terminal list; |
n_attributes : attributes; |
}
type producer_def = symbol * identifier * attributes
type production_def = {
p_kind : [ `REGULAR | `START ]; |
p_lhs : nonterminal; |
p_rhs : producer_def array; |
p_positions : range list; |
p_action : action option; |
p_attributes : attributes; |
}
type lr1_state_def = {
lr1_lr0 : lr0; |
lr1_transitions : (symbol * lr1) list; |
lr1_reductions : (terminal * production list) list; |
}
type grammar = {
g_basename : string; |
g_preludes : string list; |
g_postludes : string list; |
g_terminals : terminal_def array; |
g_nonterminals : nonterminal_def array; |
g_productions : production_def array; |
g_lr0_states : lr0_state_def array; |
g_lr1_states : lr1_state_def array; |
g_entry_points : (nonterminal * production * lr1) list; |
g_attributes : attributes; |
g_parameters : string list; |
}