|
@ -789,6 +789,11 @@ function parse(tokens) { |
|
|
return parseIf(tokens, linenum, charnum); |
|
|
return parseIf(tokens, linenum, charnum); |
|
|
} |
|
|
} |
|
|
else if (toktype === "left_paren") { |
|
|
else if (toktype === "left_paren") { |
|
|
|
|
|
if (tokens.length == 0) { |
|
|
|
|
|
throw error.JSyntaxError(linenum, |
|
|
|
|
|
charnum, |
|
|
|
|
|
"Unexpected end of source"); |
|
|
|
|
|
} |
|
|
if (fst(tokens)[0] === "lambda") { |
|
|
if (fst(tokens)[0] === "lambda") { |
|
|
tokens.pop(); |
|
|
tokens.pop(); |
|
|
var parsed = parseLambda(tokens, linenum, charnum); |
|
|
var parsed = parseLambda(tokens, linenum, charnum); |
|
@ -810,7 +815,6 @@ function parseFull(tokenized) { |
|
|
var ast = []; |
|
|
var ast = []; |
|
|
var typeBindings = {}; |
|
|
var typeBindings = {}; |
|
|
var current; |
|
|
var current; |
|
|
try { |
|
|
|
|
|
while (tokenized.length > 0) { |
|
|
while (tokenized.length > 0) { |
|
|
current = closure.annotate_fvs(desugarer.desugar(parse(tokenized), typeBindings)); |
|
|
current = closure.annotate_fvs(desugarer.desugar(parse(tokenized), typeBindings)); |
|
|
ast.push(current); |
|
|
ast.push(current); |
|
@ -819,15 +823,6 @@ function parseFull(tokenized) { |
|
|
"ast" : ast, |
|
|
"ast" : ast, |
|
|
"types" : typeBindings |
|
|
"types" : typeBindings |
|
|
}; |
|
|
}; |
|
|
} catch (e) { |
|
|
|
|
|
if (e.stxerror !== undefined) { |
|
|
|
|
|
e.stxerror(); |
|
|
|
|
|
console.error("Tokenization error"); |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
console.log(e.errormessage); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
export default { parse : function(str) { |
|
|
export default { parse : function(str) { |
|
|