module Faustexp:Module: Faustexp Description: dimension estimation and delay estimation of faust expressions.`sig`

..`end`

`exception Beam_Matching_Error of ``string`

Exception raised in beam matching of faust expressions.

`exception NotYetDone`

Exception raised in case that the branch under call hasn't yet been programed.

`val delay : ``Types.faust_exp -> int`

val delay : faust_exp -> int, returns the number of delays estimated staticly.
Attention: delays of "@" is estimated as 10 constant,
delays of "vectorize" and "serialize" haven't been implemented,
delays of "rdtable" hasn't been implemented.

`val exp_of_string : ``string -> Types.faust_exp`

val exp_of_string : string -> faust_exp, faust expression parser.

`val get_root : ``Types.dimension -> int * int`

val get_root : dimension -> int * int, returns the root of dimension tree.

`val subtree : ``Types.dimension -> int -> Types.dimension`

val subtree : dimention -> int -> dimension, returns a subtree of dimension tree.

`val subtree_left : ``Types.dimension -> Types.dimension`

val subtree_left : dimension -> dimension, returns the left subtree of dimension tree.

`val subtree_right : ``Types.dimension -> Types.dimension`

val subtree_right : dimension -> dimension, returns the right subtree of dimension tree.

`val d_par : ``int * int -> int * int -> int * int`

val d_par : int * int -> int * int -> int * int, process dimension for constructor "par(,)",
which is the addition of two dimensions.

`val d_seq : ``'a * 'b -> 'b * 'c -> 'a * 'c`

val d_seq : int * int -> int * int -> int * int, process dimension for constructor "seq(:)",
which is (size of input beam of first exp, size of output beam of second exp)
along with beam matching.

`val d_split : ``'a * int -> int * 'b -> 'a * 'b`

val d_split : int * int -> int * int -> int * int, process dimension for constructor "split(<:)",
which is (size of input beam of first exp, size of output beam of second exp)
along with beam matching.

`val d_merge : ``'a * int -> int * 'b -> 'a * 'b`

val d_merge : int * int -> int * int -> int * int, process dimension for constructor "merge(:>)",
which is (size of input beam of first exp, size of output beam of second exp)
along with beam matching.

`val d_rec : ``int * 'a -> 'a * int -> int * 'a`

val d_rec : int * int -> int * int -> int * int, process dimension for constructor "rec(~)",
which is (size of input beam of first exp - size of output beam of second exp,
size of output beam of first exp)
along with beam matching.

`val dim : ``Types.faust_exp -> Types.dimension`

val dim : faust_exp -> int * int, returns dimension for faust expression,
along with beam matching.

`val print_exp : ``Types.faust_exp -> unit`

val print_exp : faust_exp -> unit, print to console the input faust expression.