2020-01-30 23:36:15 +03:00
|
|
|
import Ostap;
|
|
|
|
|
import Fun;
|
|
|
|
|
|
|
|
|
|
fun gen (depth) {
|
|
|
|
|
if depth == 0
|
|
|
|
|
then "a"
|
|
|
|
|
else gen (depth-1) ++ "*" ++ gen (depth-1)
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
local a = token ("a"),
|
2020-04-11 21:09:51 +03:00
|
|
|
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)}],
|
2020-01-31 01:30:03 +03:00
|
|
|
exp = expr ({[Left, {add, sub}], [Left, {mul, div}]}, a) (id),
|
2020-01-30 23:36:15 +03:00
|
|
|
i;
|
|
|
|
|
|
2020-03-22 21:58:11 +03:00
|
|
|
printf ("%s\n", parseString (exp |> bypass (eof), gen (5)).string)
|