(* Generate a fresh variable from a given prefix, e.g. "counter" -> "counter$1" *) val fresh_var : string -> string (* Generate an Ast.loc tuple from Lexing data structures *) val loc_from_lexpos : Lexing.position -> Lexing.position -> Ast.loc (* Default transformation traversal for AST nodes *) val transform_children : (Ast.node -> Ast.node) -> Ast.node -> Ast.node (* Transform all nodes in a list *) val transform_all : (Ast.node -> Ast.node) -> Ast.node list -> Ast.node list (*val visit_children : (Ast.node -> unit) -> Ast.node -> unit*) (* Extract location from node *) val locof : Ast.node -> Ast.loc (* Print file location to stderr *) val prerr_loc : Ast.loc -> unit (* Print file location to stderr *) val prerr_loc_msg : Ast.loc -> string -> int -> unit (* Flatten Block nodes into the given array of nodes *) val flatten_blocks : Ast.node list -> Ast.node list (* Get function / expression type *) val ctypeof : Ast.node -> Ast.ctype (* Extract the node list from a Block node *) val block_body : Ast.node -> Ast.node list