type t type node = [ `Grammar ] Node.t type p_type = [ `Parameter ] type n_type = [ `NonTerminal ] type t_type = [ `Terminal ] type any_type = [ p_type | n_type | t_type ] type symbol = [ any_type ] Node.t type p_symbol = p_type Node.t type n_symbol = n_type Node.t type t_symbol = t_type Node.t type tn_symbol = [ n_type | t_type ] Node.t type partial = | Leaf of node | Node of tn_symbol * partial array val is_terminal : [< any_type ] Node.t -> bool val is_non_terminal : [< any_type ] Node.t -> bool val is_parameter : [< any_type ] Node.t -> bool external get_symbol_at : t -> symbol -> node -> symbol = "caml_grammar_get_symbol_at" external first_child : t -> symbol -> node -> node = "caml_grammar_first_child" external next_sibling : t -> symbol -> node -> node = "caml_grammar_next_sibling" external start_first_child : t -> node -> node = "caml_grammar_start_first_child" external start_next_sibling : t -> node -> node = "caml_grammar_start_next_sibling" external parameter : [< any_type ] Node.t -> p_symbol = "%identity" external terminal : [< any_type ] Node.t -> t_symbol = "%identity" external non_terminal : [< any_type ] Node.t -> n_symbol = "%identity" external get_id1 : t -> n_symbol -> tn_symbol = "caml_grammar_get_id1" external get_id2 : t -> n_symbol -> tn_symbol = "caml_grammar_get_id2" val get_param_pos : n_symbol -> int external nil_symbol : t -> t_symbol = "caml_grammar_nil_id" val num_params : n_symbol -> int val num_children : [< t_type | n_type ] Node.t -> int external is_nil : t -> t_symbol -> bool = "caml_grammar_is_nil" val tag : t_symbol -> Tag.t val symbol : n_symbol -> int val tag_operations : t -> Tag.operations val load : string -> bool -> t