mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-05 22:38:44 +00:00
Sync
This commit is contained in:
parent
80b391aff1
commit
f47d872df1
5 changed files with 15 additions and 13 deletions
|
|
@ -16,8 +16,8 @@ fun printColl ([m, _]) {
|
|||
| MNode (k, v, b, l, r) ->
|
||||
printf ("** key = %s, bf = %d **\n", k.string, b);
|
||||
printf (off);
|
||||
printf (" values :\n");
|
||||
iter (fun ([x, _]) {printf (off); printf (" %s\n", x.string)}, v);
|
||||
printf (" values : %s\n", v.string);
|
||||
-- iter (fun ([x, _]) {printf (off); printf (" %s\n", x.string)}, v);
|
||||
inner (" " ++ off, l);
|
||||
inner (" " ++ off, r)
|
||||
esac
|
||||
|
|
@ -34,7 +34,7 @@ public fun validateColl ([t, compare]) {
|
|||
if verify (k)
|
||||
then
|
||||
var lh = inner (l, fun (x) {compare (x, k) < 0}),
|
||||
rh = inner (r, fun (x) {compare (x, k) > 0});
|
||||
rh = inner (r, fun (x) {compare (x, k) > 0});
|
||||
|
||||
if bf == lh - rh
|
||||
then 1 + if lh > rh then lh else rh fi
|
||||
|
|
@ -260,7 +260,7 @@ public fun isEmptySet (s) {
|
|||
}
|
||||
|
||||
public fun addSet (s, v) {
|
||||
insertColl (s, v, true, Set)
|
||||
insertColl (s, v, true, Set)
|
||||
}
|
||||
|
||||
public fun memSet (s, v) {
|
||||
|
|
@ -317,10 +317,6 @@ public fun lookupMemo (mm@[p, m], v) {
|
|||
| _ -> false
|
||||
esac;
|
||||
|
||||
if f then
|
||||
skip -- printf ("Looked up 0x%.8x | 0x%.8x | %s\n", mm, v, v.string)
|
||||
fi;
|
||||
|
||||
case
|
||||
fun (x) {
|
||||
case p of
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ fun createMatcher (buf, pos, line, col) {
|
|||
if x < y then x else y fi
|
||||
}
|
||||
|
||||
-- printf ("Matching regexp %s against %s...\n", r.string, substring (buf, pos, min (10, buf.length - pos)));
|
||||
-- printf ("Matching regexp %x against %s...\n", r, substring (buf, pos, min (10, buf.length - pos)));
|
||||
|
||||
if (n := regexpMatch (r[0], buf, pos)) >= 0
|
||||
then Succ (substring (buf, pos, n), shift (n))
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ public fun memo (f) {
|
|||
case findHashTab (deref (tab), f) of
|
||||
Some (t) -> t
|
||||
esac;
|
||||
|
||||
if log then printf ("Applying memoized parser to %s\n", s.string) fi;
|
||||
case findMap (deref (t), s) of
|
||||
None ->
|
||||
|
|
@ -53,6 +54,7 @@ public fun memo (f) {
|
|||
})]);
|
||||
f (fun (r) {
|
||||
--r := lookupMemo (restab, r);
|
||||
|
||||
if log then printf ("Running continuation with result %s\n", r.string) fi;
|
||||
case findMap (deref (t), s) of
|
||||
Some ([ks, rs]) ->
|
||||
|
|
@ -117,7 +119,7 @@ public fun seq (a, b) {
|
|||
a (fun (ar) {
|
||||
case ar of
|
||||
Succ (x, s) -> b (x) (k) (s)
|
||||
| _ -> k (ar)
|
||||
| _ -> k (ar)
|
||||
esac
|
||||
}) (s)
|
||||
}
|
||||
|
|
@ -130,7 +132,7 @@ public infixr |> after | (a, b) {seq (a, b)}
|
|||
public infix @ at * (a, f) {
|
||||
fun (k) {
|
||||
fun (s) {
|
||||
a (fun (x) {k (case x of
|
||||
a (fun (x) {k (case x of
|
||||
Succ (x, s) -> Succ (f (x), s)
|
||||
| _ -> x
|
||||
esac)}) (s)
|
||||
|
|
@ -142,7 +144,7 @@ public infix @@ at * ([name, a], f) {
|
|||
fun (k) {
|
||||
fun (s) {
|
||||
var aa =
|
||||
a (fun (x) {k (case x of
|
||||
a (fun (x) {k (case x of
|
||||
Succ (x, s) -> Succ (f (x), s)
|
||||
| _ -> x
|
||||
esac)});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue