mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-06 06:48:48 +00:00
Ostap expr combinator (no associativity, no attributes yet)
This commit is contained in:
parent
33ec55e76e
commit
d93995c444
3 changed files with 95 additions and 0 deletions
6
stdlib/regression/orig/test11.log
Normal file
6
stdlib/regression/orig/test11.log
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
Succ ("a")
|
||||
Succ (Add ("a", "a"))
|
||||
Succ (Sub ("a", "a"))
|
||||
Succ (Add ("a", Sub ("a", "a")))
|
||||
Succ (Add ("a", Mul ("a", "a")))
|
||||
Succ (Sub (Mul ("a", "a"), Div ("a", "a")))
|
||||
16
stdlib/regression/test11.expr
Normal file
16
stdlib/regression/test11.expr
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
import Ostap;
|
||||
import Expr;
|
||||
|
||||
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);
|
||||
|
||||
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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue