mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-06 06:48:48 +00:00
More Ostap tests
This commit is contained in:
parent
4c031ce95f
commit
4ed4101ad9
2 changed files with 34 additions and 0 deletions
6
stdlib/regression/orig/test16.log
Normal file
6
stdlib/regression/orig/test16.log
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
Succ (Eq ("a", "a"))
|
||||||
|
Succ (Eq ("b", "b"))
|
||||||
|
Succ (Eq (Mul ("a", "a"), Mul ("a", "a")))
|
||||||
|
Succ (Eq (Mul ("b", "b"), Mul ("b", "b")))
|
||||||
|
Succ (Eq (Add (Mul ("a", "a"), Sub (Div ("a", "a"), Mul ("a", "a"))), Sub (Mul ("a", "a"), "a")))
|
||||||
|
Succ (Eq (Add (Mul ("b", "b"), Sub (Div ("b", "b"), Mul ("b", "b"))), Sub (Mul ("b", "b"), "b")))
|
||||||
28
stdlib/regression/test16.expr
Normal file
28
stdlib/regression/test16.expr
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
import Ostap;
|
||||||
|
import Expr;
|
||||||
|
import Fun;
|
||||||
|
import List;
|
||||||
|
|
||||||
|
local a = token ("a") @ lift(fun (a) {if a then "a" else "b" fi}),
|
||||||
|
eq = [token ("="), fun (l, r) {fun (a) {Eq (l (a), r (a))}}],
|
||||||
|
add = [token ("+"), fun (l, r) {fun (a) {Add (l (a), r (a))}}],
|
||||||
|
sub = [token ("-"), fun (l, r) {fun (a) {Sub (l (a), r (a))}}],
|
||||||
|
mul = [token ("*"), fun (l, r) {fun (a) {Mul (l (a), r (a))}}],
|
||||||
|
div = [token ("/"), fun (l, r) {fun (a) {Div (l (a), r (a))}}],
|
||||||
|
exp = expr ({[Nona, singleton (eq)], [Right, {add, sub}], [Left, {mul, div}]}, a) (id);
|
||||||
|
|
||||||
|
fun unpack (x, y) {
|
||||||
|
case x of
|
||||||
|
Fail (_) -> x
|
||||||
|
| Succ (z) -> Succ (z (y))
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("%s\n", unpack (parseString (exp |> bypass (eof), "a=a"), true).string);
|
||||||
|
printf ("%s\n", unpack (parseString (exp |> bypass (eof), "a=a"), false).string);
|
||||||
|
|
||||||
|
printf ("%s\n", unpack (parseString (exp |> bypass (eof), "a*a=a*a"), true).string);
|
||||||
|
printf ("%s\n", unpack (parseString (exp |> bypass (eof), "a*a=a*a"), false).string);
|
||||||
|
|
||||||
|
printf ("%s\n", unpack (parseString (exp |> bypass (eof), "a*a+a/a-a*a=a*a-a"), true).string);
|
||||||
|
printf ("%s\n", unpack (parseString (exp |> bypass (eof), "a*a+a/a-a*a=a*a-a"), false).string)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue