mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-06 06:48:48 +00:00
Better syntax syntax
This commit is contained in:
parent
7748144a8f
commit
690825f540
14 changed files with 129 additions and 43 deletions
4
stdlib/regression/orig/test28.log
Normal file
4
stdlib/regression/orig/test28.log
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
Succ (Seq ("a", "b"))
|
||||
Succ (Alt ("a"))
|
||||
Succ (Alt ("b"))
|
||||
Succ (Rep ({"a", "a", "a"}))
|
||||
4
stdlib/regression/orig/test29.log
Normal file
4
stdlib/regression/orig/test29.log
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
Succ (Seq ("a", "b"))
|
||||
Succ (Alt ("a"))
|
||||
Succ (Alt ("b"))
|
||||
Succ (Rep ({"a", "a", "a"}))
|
||||
|
|
@ -2,10 +2,10 @@ import Ostap;
|
|||
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)}],
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -9,10 +9,10 @@ fun gen (depth) {
|
|||
}
|
||||
|
||||
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)}],
|
||||
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;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@ import Ostap;
|
|||
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)}],
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@ 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)}],
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@ 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)}],
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@ 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))}}],
|
||||
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) {
|
||||
|
|
|
|||
8
stdlib/regression/test28.lama
Normal file
8
stdlib/regression/test28.lama
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
local sq = syntax (e1=token ("a") e2=token ("b") {Seq (e1, e2)}),
|
||||
al = syntax (e=(token ("a") | token ("b")) {Alt (e)}),
|
||||
rp = syntax (e=token ("a")* {Rep (e)});
|
||||
|
||||
printf ("%s\n", parseString (syntax (p=sq eof {p}), "ab").string);
|
||||
printf ("%s\n", parseString (syntax (p=al eof {p}), "a").string);
|
||||
printf ("%s\n", parseString (syntax (p=al eof {p}), "b").string);
|
||||
printf ("%s\n", parseString (syntax (p=rp eof {p}), "aaa").string)
|
||||
8
stdlib/regression/test29.lama
Normal file
8
stdlib/regression/test29.lama
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
local sq = syntax (e1=token ("a") e2=token ("b") {Seq (e1, e2)}),
|
||||
al = syntax (e=(token ("a") | token ("b")) {Alt (e)}),
|
||||
rp = syntax (e=token ("a")* {Rep (e)});
|
||||
|
||||
printf ("%s\n", parseString (syntax (sq -eof), "ab").string);
|
||||
printf ("%s\n", parseString (syntax (al -eof), "a").string);
|
||||
printf ("%s\n", parseString (syntax (al -eof), "b").string);
|
||||
printf ("%s\n", parseString (syntax (rp -eof), "aaa").string)
|
||||
Loading…
Add table
Add a link
Reference in a new issue