-
Notifications
You must be signed in to change notification settings - Fork 0
/
parse_tree.mli
24 lines (15 loc) · 709 Bytes
/
parse_tree.mli
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(** Parse tree type which is recursively built up during parse. *)
type t
(** Create "leaves" for tokens. *)
val create : Symbol.Token.t -> t
(** Build a parse tree from trees of child symbols. It is assumed that the input list corresponds to the production's right-hand side. *)
val compose : Production.t -> t list -> t
(** Get value at the root of a parse tree. @raise Failure if it is a terminal leaf node. *)
val value : t -> float
(** Print the parse tree to stdout. *)
val pretty_print : t -> unit
(* Converters *)
(** Basic tree type without values in branch nodes. *)
type tree = Lf of Symbol.Token.t | Br of tree list
(** Convert a parse tree to basic tree type. *)
val to_tree : t -> tree