mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-06 06:48:48 +00:00
Continue massaging Ostap
This commit is contained in:
parent
848fd31dc4
commit
b4ba38a0f7
8 changed files with 84 additions and 31 deletions
|
|
@ -1,6 +1,6 @@
|
|||
Succ ("a")
|
||||
Succ (Add ("a", "a"))
|
||||
Succ (Sub ("a", "a"))
|
||||
Succ (Add ("a", Sub ("a", "a")))
|
||||
Succ (Sub (Add ("a", "a"), "a"))
|
||||
Succ (Add ("a", Mul ("a", "a")))
|
||||
Succ (Sub (Mul ("a", "a"), Div ("a", "a")))
|
||||
|
|
|
|||
1
stdlib/regression/orig/test12.log
Normal file
1
stdlib/regression/orig/test12.log
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -14,6 +14,6 @@ fun many (a) {
|
|||
local a = token ("a"), b = token ("b");
|
||||
local bad_alter = a | a |> fun (x) {b @ fun (y) {x ++ y}};
|
||||
|
||||
initOstap ();
|
||||
--logOn ();
|
||||
printf ("Parsing ""aaa"" with many ... %s\n", parseString (many (a) |> bypass (eof), "aaa").string);
|
||||
printf ("Parsing ""ab"" with bad_alter ... %s\n", parseString (bad_alter |> bypass (eof), "ab").string)
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
20
stdlib/regression/test12.expr
Normal file
20
stdlib/regression/test12.expr
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
import Ostap;
|
||||
import Expr;
|
||||
import Fun;
|
||||
|
||||
fun gen (depth) {
|
||||
if depth == 0
|
||||
then "a"
|
||||
else gen (depth-1) ++ "*" ++ gen (depth-1)
|
||||
fi
|
||||
}
|
||||
|
||||
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 ({[left, {add, sub}], [left, {mul, div}]}, a) (id),
|
||||
i;
|
||||
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), gen (10)).string)
|
||||
Loading…
Add table
Add a link
Reference in a new issue