mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-30 10:38:19 +00:00
local -> var; scope reformatted; singleton is killed finally
This commit is contained in:
parent
5ae88f820d
commit
216e716251
11067 changed files with 12168 additions and 12173 deletions
|
|
@ -1,6 +1,6 @@
|
|||
import Collection;
|
||||
|
||||
local s = emptySet (compare), i;
|
||||
var s = emptySet (compare), i;
|
||||
|
||||
for i := 0, i < 100, i := i+1
|
||||
do
|
||||
|
|
@ -33,8 +33,8 @@ od;
|
|||
|
||||
printf ("List set: %s\n", internalOf (listSet ({1, 2, 3, 4, 5}, compare)).string);
|
||||
|
||||
{
|
||||
local u = union (listSet ({1, 2, 3, 4, 5}, compare), listSet ({11, 22, 33, 44, 55}, compare)), u1;
|
||||
(
|
||||
var u = union (listSet ({1, 2, 3, 4, 5}, compare), listSet ({11, 22, 33, 44, 55}, compare)), u1;
|
||||
|
||||
validateColl (u);
|
||||
|
||||
|
|
@ -46,5 +46,5 @@ printf ("List set: %s\n", internalOf (listSet ({1, 2, 3, 4, 5}, compare)).string
|
|||
|
||||
printf ("Set difference: %s\n", internalOf (u1).string);
|
||||
printf ("Elements: %s\n", elements (u1).string)
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import Matcher;
|
||||
|
||||
local m = initMatcher (" -- asdasdakm ,m.,msd .,m.,asd\n \n\n abc");
|
||||
var m = initMatcher (" -- asdasdakm ,m.,msd .,m.,asd\n \n\n abc");
|
||||
|
||||
local
|
||||
var
|
||||
lident = createRegexp ("[a-z][a-zA-Z_]*", "lowercase identifier"),
|
||||
uident = createRegexp ("[A-Z][a-zA-Z_]*", "uppercase identifier"),
|
||||
ws = createRegexp ("\\([ \t\n]\\|--[^\n]*\n\\)*", "whitespace"),
|
||||
|
|
@ -53,7 +53,7 @@ infixr || after |> (l, r) {
|
|||
}
|
||||
}
|
||||
|
||||
local expr = lid @ fun (s) {Lid (s)} || const @ fun (s) {Dec (s)},
|
||||
var expr = lid @ fun (s) {Lid (s)} || const @ fun (s) {Dec (s)},
|
||||
assn = lid |> fun (id) {token (":=") |> fun (s) {expr @ fun (e) {Assn (id, e)}}};
|
||||
|
||||
printf ("%s\n", case assn (initMatcher ("x:=3")) of Fail (err) -> err | Succ (s, _) -> s.string esac)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import Collection;
|
||||
|
||||
local s = emptyMap (compare), i;
|
||||
var s = emptyMap (compare), i;
|
||||
|
||||
for i := 0, i < 100, i := i+1
|
||||
do
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ fun f (x, y) {
|
|||
fun () {x+y}
|
||||
}
|
||||
|
||||
local t = emptyMemo (),
|
||||
var t = emptyMemo (),
|
||||
a = lookupMemo (t, "abc"),
|
||||
b = lookupMemo (t, [1, 2, 3, 4, "abc"]),
|
||||
c = lookupMemo (t, f (5, 6));
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import Collection;
|
||||
|
||||
local a = {1, 2, 3}, b = {1, 2, 3}, t = emptyHashTab (16, hash, compare);
|
||||
var a = {1, 2, 3}, b = {1, 2, 3}, t = emptyHashTab (16, hash, compare);
|
||||
|
||||
t := addHashTab (t, a, 100);
|
||||
printf ("HashTab internal structure: %s\n", internalOf (t).string);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import Fun;
|
||||
|
||||
local fact = fix (fun (self) {fun (n) {if n <= 1 then 1 else n * self (n-1) fi}});
|
||||
var fact = fix (fun (self) {fun (n) {if n <= 1 then 1 else n * self (n-1) fi}});
|
||||
|
||||
printf ("%d\n", fact (3));
|
||||
printf ("%d\n", fact (5));
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import Ostap;
|
||||
import Matcher;
|
||||
|
||||
local a = token ("a"), acc;
|
||||
var a = token ("a"), acc;
|
||||
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@ fun many (a) {
|
|||
memo (
|
||||
eta (
|
||||
empty @ lift({})
|
||||
| many (a) |> fun (as) {a @ fun (x) {as +++ singleton (x)}}
|
||||
| many (a) |> fun (as) {a @ fun (x) {as +++ {x}}}
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
local a = token ("a"), b = token ("b");
|
||||
local bad_alter = a | a |> fun (x) {b @ fun (y) {x ++ y}};
|
||||
var a = token ("a"), b = token ("b");
|
||||
var bad_alter = a | a |> fun (x) {b @ fun (y) {x ++ y}};
|
||||
|
||||
--logOn ();
|
||||
printf ("Parsing ""aaa"" with many ... %s\n", parseString (many (a) |> bypass (eof), "aaa").string);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import Ostap;
|
||||
import Fun;
|
||||
|
||||
local a = token ("a"),
|
||||
var 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)}],
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ fun gen (depth) {
|
|||
fi
|
||||
}
|
||||
|
||||
local a = token ("a"),
|
||||
var 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)}],
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import Ostap;
|
||||
import Fun;
|
||||
|
||||
local a = token ("a"),
|
||||
var 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)}],
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@ import Ostap;
|
|||
import Fun;
|
||||
import List;
|
||||
|
||||
local a = token ("a"),
|
||||
var 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);
|
||||
exp = expr ({[Nona, {eq}], [Right, {add, sub}], [Left, {mul, div}]}, a);
|
||||
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), "a+a-a").string);
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), "a*a/a*a").string);
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@ import Ostap;
|
|||
import Fun;
|
||||
import List;
|
||||
|
||||
local a = token ("a"),
|
||||
var 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);
|
||||
exp = expr ({[Nona, {eq}], [Right, {add, sub}], [Left, {mul, div}]}, a);
|
||||
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), "a=a").string);
|
||||
printf ("%s\n", parseString (exp |> bypass (eof), "a*a=a*a").string);
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@ import Ostap;
|
|||
import Fun;
|
||||
import List;
|
||||
|
||||
local a = token ("a") @ lift(fun (a) {if a then "a" else "b" fi}),
|
||||
var 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);
|
||||
exp = expr ({[Nona, {eq}], [Right, {add, sub}], [Left, {mul, div}]}, a);
|
||||
|
||||
fun unpack (x, y) {
|
||||
case x of
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
local x = lazy (for local i; i := 0, i<10, i := i + 1 do printf ("Lazy body: %d\n", i) od; 100);
|
||||
var x = lazy (for var i; i := 0, i<10, i := i + 1 do printf ("Lazy body: %d\n", i) od; 100);
|
||||
|
||||
printf ("First force: %d\n", force (x));
|
||||
printf ("Second force: %d\n", force (x))
|
||||
|
|
@ -12,7 +12,7 @@ fun not (x) {
|
|||
}
|
||||
|
||||
fun test (a, b) {
|
||||
local f = normalize (a =?= b);
|
||||
var f = normalize (a =?= b);
|
||||
|
||||
printf ("%s =?= %s = %d\n", a.string, b.string, f);
|
||||
printf ("symmetricity: %s\n", if normalize (b =?= a) == not (f) then "ok" else "fail" fi)
|
||||
|
|
@ -37,8 +37,8 @@ test ([1, 2, 3], S (1, 2, 3));
|
|||
test ("abc", [1, 2, 3]);
|
||||
test (1, [1, 2, 3]);
|
||||
|
||||
{
|
||||
local a = [1], b = [1];
|
||||
(
|
||||
var a = [1], b = [1];
|
||||
|
||||
a [0] := a;
|
||||
b [0] := b;
|
||||
|
|
@ -62,4 +62,4 @@ test (1, [1, 2, 3]);
|
|||
b[0] := a;
|
||||
|
||||
printf ("%d\n", a =?= b)
|
||||
}
|
||||
)
|
||||
|
|
@ -9,7 +9,7 @@ fun insert (tree, value) {
|
|||
esac
|
||||
}
|
||||
|
||||
local i, tree = Empty;
|
||||
var i, tree = Empty;
|
||||
|
||||
for i := 0, i <= 10, i := i+1 do
|
||||
printf ("%s\n", tree.string);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
fun collect_ints_acc (v, tail) {
|
||||
local i;
|
||||
var i;
|
||||
|
||||
case v of
|
||||
a@#val -> Cons (a, tail)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
local lists = [
|
||||
var lists = [
|
||||
{},
|
||||
{1, 2, 3, 4},
|
||||
{1 : {}, {2, 3}, {4, {5, 6}}},
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ printf ("Cloning string: %s\n", clone ("abc"));
|
|||
printf ("Cloning array: %s\n", clone ([1, 2, 3, 4, 5]).string);
|
||||
printf ("Cloning sexp: %s\n", clone (A (1, 2, 3, 4, 5)).string);
|
||||
|
||||
{
|
||||
local c = f (5, 6), cc = clone (c);
|
||||
(
|
||||
var c = f (5, 6), cc = clone (c);
|
||||
|
||||
printf ("Cloning closure: address %s, %d, %d\n", if cc[0] == c[0] then "ok" else "fail" fi, c[1], c[2])
|
||||
}
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
local i;
|
||||
var i;
|
||||
|
||||
printf ("Number of commands-line arguments: %d\n", sysargs.length);
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ fun pure(v) {
|
|||
empty @ lift(v)
|
||||
}
|
||||
|
||||
local parse =
|
||||
var parse =
|
||||
token(".") |> fun(e1) {
|
||||
token(".") |> fun(e2) {
|
||||
pure(Dot(e1, e2)) }};
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
local sq = syntax (e1=token ["a"] e2=token ["b"] {Seq (e1, e2)}),
|
||||
var 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)});
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
local sq = syntax (e1=token ["a"] e2=token ["b"] {Seq (e1, e2)}),
|
||||
var 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)});
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import Fun;
|
|||
import Data;
|
||||
|
||||
fun genCyclicArrays (n, eq, cross) {
|
||||
local f = ref (true);
|
||||
var f = ref (true);
|
||||
|
||||
fun genrec (n, stacka, stackb, depth) {
|
||||
fun peek (k, stack) {
|
||||
|
|
@ -24,14 +24,14 @@ fun genCyclicArrays (n, eq, cross) {
|
|||
x -> [x, clone (x)]
|
||||
esac
|
||||
else
|
||||
local a = split (n, random (n+1)),
|
||||
var a = split (n, random (n+1)),
|
||||
b = mapArray (id, a),
|
||||
index = initArray (random (a.length + 1), fun (_) {random (a.length)});
|
||||
|
||||
fun shared (i) {
|
||||
local found = false;
|
||||
var found = false;
|
||||
|
||||
for local j=0;, j < index.length && 1 - found, j := j + 1
|
||||
for var j=0;, j < index.length && 1 - found, j := j + 1
|
||||
do
|
||||
found := i == index[j]
|
||||
od;
|
||||
|
|
@ -39,7 +39,7 @@ fun genCyclicArrays (n, eq, cross) {
|
|||
found
|
||||
}
|
||||
|
||||
for local i=0;, i < a.length, i := i + 1
|
||||
for var i=0;, i < a.length, i := i + 1
|
||||
do
|
||||
if shared (i)
|
||||
then
|
||||
|
|
@ -89,7 +89,7 @@ fun not (x) {0 - x}
|
|||
|
||||
disableGC ();
|
||||
|
||||
for local i=0;, i<25, i:=i+1
|
||||
for var i=0;, i<25, i:=i+1
|
||||
do
|
||||
case genCyclicArrays (1000, true, false) of
|
||||
[a, b] ->
|
||||
|
|
@ -98,7 +98,7 @@ do
|
|||
esac
|
||||
od;
|
||||
|
||||
for local i=0;, i<25, i:=i+1
|
||||
for var i=0;, i<25, i:=i+1
|
||||
do
|
||||
case genCyclicArrays (1000, true, true) of
|
||||
[a, b] ->
|
||||
|
|
@ -107,19 +107,19 @@ do
|
|||
esac
|
||||
od;
|
||||
|
||||
for local i=0;, i<25, i:=i+1
|
||||
for var i=0;, i<25, i:=i+1
|
||||
do
|
||||
case genCyclicArrays (1000, false, false) of
|
||||
[a, b] -> local x = normalize (a =?= b);
|
||||
[a, b] -> var x = normalize (a =?= b);
|
||||
printf ("%d\n", x != 0);
|
||||
printf ("%d\n", not (x) == normalize (b =?= a))
|
||||
esac
|
||||
od;
|
||||
|
||||
for local i=0;, i<25, i:=i+1
|
||||
for var i=0;, i<25, i:=i+1
|
||||
do
|
||||
case genCyclicArrays (1000, false, true) of
|
||||
[a, b] -> local x = normalize (a =?= b);
|
||||
[a, b] -> var x = normalize (a =?= b);
|
||||
printf ("%d\n", x != 0);
|
||||
printf ("%d\n", not (x) == normalize (b =?= a))
|
||||
esac
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue