import Ostap; import Fun; var 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); printf ("%s\n", parseString (exp |> bypass (eof), "a").string); printf ("%s\n", parseString (exp |> bypass (eof), "a+a").string); printf ("%s\n", parseString (exp |> bypass (eof), "a-a").string); printf ("%s\n", parseString (exp |> bypass (eof), "a+a-a").string); printf ("%s\n", parseString (exp |> bypass (eof), "a+a*a").string); printf ("%s\n", parseString (exp |> bypass (eof), "a*a-a/a").string)