mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-24 15:48:47 +00:00
Expr.expr --- associativity
This commit is contained in:
parent
b4ba38a0f7
commit
4c031ce95f
11 changed files with 98 additions and 17 deletions
3
stdlib/regression/orig/test13.log
Normal file
3
stdlib/regression/orig/test13.log
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Succ (Add ("a", Sub ("a", "a")))
|
||||
Succ (Mul (Div (Mul ("a", "a"), "a"), "a"))
|
||||
Succ (Add (Mul ("a", "a"), Sub (Div ("a", "a"), Mul ("a", "a"))))
|
||||
3
stdlib/regression/orig/test14.log
Normal file
3
stdlib/regression/orig/test14.log
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Succ (Add ("a", Sub ("a", "a")))
|
||||
Succ (Mul (Div (Mul ("a", "a"), "a"), "a"))
|
||||
Succ (Add (Mul ("a", "a"), Sub (Div ("a", "a"), Mul ("a", "a"))))
|
||||
4
stdlib/regression/orig/test15.log
Normal file
4
stdlib/regression/orig/test15.log
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
Succ (Eq ("a", "a"))
|
||||
Succ (Eq (Mul ("a", "a"), Mul ("a", "a")))
|
||||
Succ (Eq (Add (Mul ("a", "a"), Sub (Div ("a", "a"), Mul ("a", "a"))), Sub (Mul ("a", "a"), "a")))
|
||||
Fail ({""*" expected at"}, 1, 2)
|
||||
12
stdlib/regression/test09.expr
Normal file
12
stdlib/regression/test09.expr
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
import Ostap;
|
||||
import Matcher;
|
||||
|
||||
local a = token ("a"), acc;
|
||||
|
||||
initOstap ();
|
||||
|
||||
printf ("Parsing a*| against ""aa""... %s\n", parseString (rep0 (a) |> fun (x) {eof @ lift (x)}, "aa").string);
|
||||
printf ("Parsing a+| against ""aa""... %s\n", parseString (rep (a) |> fun (x) {eof @ lift (x)}, "aa").string);
|
||||
printf ("Parsing list(a)| against ""a""... %s\n", parseString (list (a) |> bypass (eof), "a").string);
|
||||
printf ("Parsing list(a)| against ""a,a""... %s\n", parseString (list (a) |> bypass (eof), "a,a").string);
|
||||
printf ("Parsing list0(a)| against """"... %s\n", parseString (list0 (a) |> bypass (eof), "").string)
|
||||
|
|
@ -7,7 +7,7 @@ local a = token ("a"),
|
|||
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);
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ local a = token ("a"),
|
|||
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),
|
||||
exp = expr ({[Left, {add, sub}], [Left, {mul, div}]}, a) (id),
|
||||
i;
|
||||
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), gen (10)).string)
|
||||
|
|
|
|||
14
stdlib/regression/test13.expr
Normal file
14
stdlib/regression/test13.expr
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import Ostap;
|
||||
import Expr;
|
||||
import Fun;
|
||||
|
||||
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 ({[Right, {add, sub}], [Left, {mul, div}]}, a) (id);
|
||||
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), "a+a-a").string);
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), "a*a/a*a").string);
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), "a*a+a/a-a*a").string)
|
||||
16
stdlib/regression/test14.expr
Normal file
16
stdlib/regression/test14.expr
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
import Ostap;
|
||||
import Expr;
|
||||
import Fun;
|
||||
import List;
|
||||
|
||||
local a = token ("a"),
|
||||
eq = [token ("="), fun (l, r) {Eq (l, r)}],
|
||||
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 ({[Nona, singleton (eq)], [Right, {add, sub}], [Left, {mul, div}]}, a) (id);
|
||||
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), "a+a-a").string);
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), "a*a/a*a").string);
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), "a*a+a/a-a*a").string)
|
||||
17
stdlib/regression/test15.expr
Normal file
17
stdlib/regression/test15.expr
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
import Ostap;
|
||||
import Expr;
|
||||
import Fun;
|
||||
import List;
|
||||
|
||||
local a = token ("a"),
|
||||
eq = [token ("="), fun (l, r) {Eq (l, r)}],
|
||||
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 ({[Nona, singleton (eq)], [Right, {add, sub}], [Left, {mul, div}]}, a) (id);
|
||||
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), "a=a").string);
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), "a*a=a*a").string);
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), "a*a+a/a-a*a=a*a-a").string);
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), "a=a=a+a").string)
|
||||
Loading…
Add table
Add a link
Reference in a new issue