%{ open Types %} %token CONST %token IDENT %token LPAR RPAR SEQ SPLIT MERGE PAR REC EOF POINT %right SPLIT MERGE %right SEQ %right PAR %left REC %left POINT %start main %type main %% main: faust_exp EOF { $1 }; faust_exp: CONST { Const(N (int_of_string $1)) } | CONST POINT { Const(R (float_of_string $1)) } | CONST POINT CONST { Const(R (float_of_string ($1 ^ "." ^ $3))) } | IDENT { Ident($1) } | LPAR faust_exp RPAR { $2 } | faust_exp PAR faust_exp { Par($1,$3) } | faust_exp SPLIT faust_exp { Split($1,$3) } | faust_exp MERGE faust_exp { Merge($1,$3) } | faust_exp SEQ faust_exp { Seq($1,$3) } | faust_exp REC faust_exp { Rec($1,$3) };