week11 tweaks
[lambda.git] / code / parse.js
index 9034e46..5cdeb40 100644 (file)
@@ -140,6 +140,9 @@ var make_parse = function () {
     symbol("(");
     symbol("\\").handler = lambda_handler;
     symbol("lambda").handler = lambda_handler;
     symbol("(");
     symbol("\\").handler = lambda_handler;
     symbol("lambda").handler = lambda_handler;
+    symbol("\u03bb").handler = lambda_handler;
+    // symbol("\u2203").handler = exists_handler;
+    // symbol("\u2200").handler = forall_handler;
     symbol(".");
 
        function make_constants() {
     symbol(".");
 
        function make_constants() {
@@ -208,8 +211,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("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)));
                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();
 
        }
        make_constants();
@@ -233,11 +244,11 @@ var make_parse = function () {
                 return t;
             } else {
                 t.first = [];
                 return t;
             } else {
                 t.first = [];
-                while (token.arity === "name" || token.id === "\\" || token.id === "lambda") {
-                   ;                    if (not (token.id === "\\" || token.id === "lambda") {
+                while (token.arity === "name" || token.id === "\\") {
+                   if (token.id !== "\\") {
                       t.first.push(n);
                       n = token;
                       t.first.push(n);
                       n = token;
-                     ;                 }
+                   }
                     advance();
                 }
                                if (token.arity === "literal" && t.first.length === 0) {
                     advance();
                 }
                                if (token.arity === "literal" && t.first.length === 0) {