diff --git a/closure_conversion.js b/closure_conversion.js index c4e72fb..ff8e104 100644 --- a/closure_conversion.js +++ b/closure_conversion.js @@ -137,6 +137,7 @@ function closure_convert_all(stx) { stx.thenexp = closure_convert_all(stx.thenexp); return stx; } + break; case "Definition": stx.val = closure_convert_all(stx.val); return stx; diff --git a/desugar.js b/desugar.js index acbd464..16fadad 100644 --- a/desugar.js +++ b/desugar.js @@ -64,7 +64,7 @@ function desugar(stx) { case "Name": return stx; case "Application": - if ((stx.func.func != undefined ) && + if ((stx.func.func !== undefined ) && (stx.func.func.ident === "::")) { /* It's a type application probably (will be verified later) * In this case we actually *add* syntax here to differentiate type applications diff --git a/parse.js b/parse.js index b197d6d..6415f2f 100755 --- a/parse.js +++ b/parse.js @@ -640,4 +640,4 @@ module.exports = { parse : function(str) { tokenize : tokenizer.tokenize }; var istr = fs.readFileSync('/dev/stdin').toString(); -console.log(parseFull(tokenizer.tokenize(istr)).map(pprint.pprint)); +parseFull(tokenizer.tokenize(istr)).map(pprint.pprint); diff --git a/tokenize.js b/tokenize.js index cb2d6bb..a4f37d1 100755 --- a/tokenize.js +++ b/tokenize.js @@ -392,14 +392,15 @@ var defop_pattern = ["defop", "integer", "constructor", "left_paren", "identifier", "identifier", "identifier", "right_paren"]; +function checkPattern(x, i) { + return x === defop_pattern[i]; +} + function tokenizeFull(input) { var matchop; var initialPass = tokenizeHelp(input, _.constant(false), true).reverse(); for (var i = 0; i < initialPass.length; i++) { - if (initialPass.slice(i, i+8).map(_.first).every( - function(x, i) { - return x === defop_pattern[i]; - })) { + if (initialPass.slice(i, i+8).map(_.first).every(checkPattern)) { rep.OPInfo[initialPass[i+5][1]] = [parseInt(initialPass[i+1][1], 10), initialPass[i+2][1]]; }