lama_byterun/stdlib/regression/test12.expr

21 lines
528 B
Text
Raw Normal View History

2020-01-30 23:36:15 +03:00
import Ostap;
import Expr;
import Fun;
fun gen (depth) {
if depth == 0
then "a"
else gen (depth-1) ++ "*" ++ gen (depth-1)
fi
}
local a = token ("a"),
add = [token ("+"), fun (l, r) {Add (l, r)}],
sub = [token ("-"), fun (l, r) {Sub (l, r)}],
mul = [token ("*"), fun (l, r) {Mul (l, r)}],
div = [token ("/"), fun (l, r) {Div (l, r)}],
exp = expr ({[left, {add, sub}], [left, {mul, div}]}, a) (id),
i;
printf ("%s\n", parseString (exp |> bypass (eof), gen (10)).string)