Continue massaging Ostap

This commit is contained in:
Dmitry Boulytchev 2020-01-30 23:36:15 +03:00
parent 848fd31dc4
commit b4ba38a0f7
8 changed files with 84 additions and 31 deletions

View file

@ -1,12 +1,13 @@
import Ostap;
import Expr;
import Fun;
local a = token ("a"),
add = token ("+") @ lift (fun (l, r) {Add (l, r)}),
sub = token ("-") @ lift (fun (l, r) {Sub (l, r)}),
mul = token ("*") @ lift (fun (l, r) {Mul (l, r)}),
div = token ("/") @ lift (fun (l, r) {Div (l, r)}),
exp = expr ({{add, sub}, {mul, div}}, 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);
printf ("%s\n", parseString (exp |> bypass (eof), "a").string);
printf ("%s\n", parseString (exp |> bypass (eof), "a+a").string);