X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=code%2Fparse.js;h=08ac5f047377cf2ba9b9b9ee394a834866b49f80;hp=4d2bc8d6b027d3b40b96d12737b8c33b5fa11b3f;hb=3641a9827575d2eba30d316395eb3db7c45a1477;hpb=492cb946fbc21f0d3db9de9bd57bd755bf4ca620 diff --git a/code/parse.js b/code/parse.js index 4d2bc8d6..08ac5f04 100644 --- a/code/parse.js +++ b/code/parse.js @@ -208,8 +208,16 @@ var make_parse = function () { constant("I", make_lam(x, xx)); constant("B", make_lam3(u, v, x, make_app(uu, make_app(vv, xx)))); constant("C", make_lam3(u, v, x, make_app3(uu, xx, vv))); - constant("W", make_lam2(u, v, make_app3(uu, vv, vv))); + + // trush \uv.vu = CI constant("T", make_lam2(u, v, make_app(vv, uu))); + // mockingbird \u.uu = SII + constant("M", make_lam(u, make_app(uu, uu))); + // warbler \uv.uvv = C(BM(BBT) = C(BS(C(BBI)I))I + constant("W", make_lam2(u, v, make_app3(uu, vv, vv))); + // lark \uv.u(vv) = CBM = BWB + constant("L", make_lam2(u, v, make_app(uu, make_app(vv, vv)))); + // Y is SLL } make_constants(); @@ -233,9 +241,11 @@ var make_parse = function () { return t; } else { t.first = []; - while (token.arity === "name") { - t.first.push(n); - n = token; + while (token.arity === "name" || token.id === "\\") { + if (token.id !== "\\") { + t.first.push(n); + n = token; + } advance(); } if (token.arity === "literal" && t.first.length === 0) {