MenhirSdk.Cmly_formattype attributes = attribute listtype 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 * attributestype 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; | 
}