| Index: scripts/astDecompile.js |
| diff --git a/scripts/astDecompile.js b/scripts/astDecompile.js |
| index 49143a6631c8bf463d8f7037ac3b37714d30bac9..7436bac0947307f7089bd5ba3a6c385d47c63797 100644 |
| --- a/scripts/astDecompile.js |
| +++ b/scripts/astDecompile.js |
| @@ -7,7 +7,7 @@ function decompileAST(ast) { |
| } |
| function decompileProgram(ast) { |
| - return [decompileAST(stmt) for each (stmt in ast.body)].join('\n'); |
| + return ast.body.map(decompileAST).join('\n'); |
| } |
| /* Statements */ |
| @@ -15,8 +15,7 @@ function decompileEmptyStatement(ast) { |
| return ";" |
| } |
| function decompileBlockStatement(ast) { |
| - return '{\n' + [decompileAST(stmt) for each (stmt in ast.body)].join('\n') + |
| - '\n}\n'; |
| + return '{\n' + ast.body.map(decompileAST).join('\n') + '\n}\n'; |
| } |
| function decompileExpressionStatement(ast) { |
| @@ -50,11 +49,10 @@ function decompileWithStatement(ast) { |
| function decompileSwitchStatement(ast) { |
| let str = "switch (" + decompileAST(ast.discriminant) + ") {\n"; |
| let cases = []; |
| - for each (let scase in ast.cases) { |
| + for (let scase of ast.cases) { |
| let casestr = scase.test ? "case " + decompileAST(scase.test) : "default"; |
| casestr += ":\n"; |
| - casestr += [decompileAST(stmt) for each (stmt in scase.consequent)] |
| - .join('\n'); |
| + casestr += scase.consequent.map(decompileAST).join('\n'); |
| cases.push(casestr); |
| } |
| str += cases.join('\n') + '\n}\n'; |
| @@ -80,7 +78,7 @@ function decompileTryStatement(ast) { |
| handlers = ast.handlers; |
| let handler_strs = []; |
| - for each (let handler in handlers) { |
| + for (let handler of handlers) { |
| let handler_str = "catch (" + decompileAST(handler.param); |
| if (handler.guard) |
| handler_str += " if " + decompileAST(handler.guard); |
| @@ -147,7 +145,7 @@ function decompileForOfStatement(ast) { |
| function decompileLetStatement(ast) { |
| let str = "let ("; |
| - str += [d ? decompileAST(d) : ' ' for each (d in ast.head)].join(', '); |
| + str += ast.head.map(d => d ? decompileAST(d) : ' ').join(', '); |
| str += ") " + decompileAST(ast.body); |
| return str; |
| } |
| @@ -163,14 +161,14 @@ function decompileFunctionDeclaration(ast, init, name_ast) { |
| else if (name_ast) |
| str += decompileAST(name_ast); |
| str += "("; |
| - str += [decompileAST(param) for each (param in ast.params)].join(', '); |
| + str += ast.params.map(decompileAST).join(', '); |
| str += ") " + decompileAST(ast.body); |
| return str; |
| } |
| function decompileVariableDeclaration(ast, excludeSemi) { |
| let inits = []; |
| - for each (let initializer in ast.declarations) { |
| + for (let initializer of ast.declarations) { |
| inits.push(decompileAST(initializer)); |
| } |
| return ast.kind + " " + inits.join(', ') + (excludeSemi ? "" : ";"); |
| @@ -227,14 +225,14 @@ function decompileThisExpression(ast) { |
| function decompileArrayExpression(ast) { |
| if (ast.elements) |
| - return "[" + [el ? decompileAST(el) : "" for each (el in ast.elements)]. |
| + return "[" + ast.elements.map(el => el ? decompileAST(el) : ""). |
| join(", ") + "]"; |
| return "[]"; |
| } |
| function decompileObjectExpression(ast) { |
| let props = []; |
| - for each (let prop in ast.properties) { |
| + for (let prop of ast.properties) { |
| if (prop.kind == "init") |
| props.push(decompileAST(prop.key) + ": " + decompileAST(prop.value)); |
| else if (prop.kind == "get" || prop.kind == "set") |
| @@ -256,7 +254,7 @@ function decompileArrowExpression(ast) { |
| } |
| function decompileSequenceExpression(ast) { |
| - return "(" + [decompileExpr(e, ast) for each (e in ast.expressions)].join(", ") + ")"; |
| + return "(" + ast.expressions.map(e => decompileExpr(e, ast)).join(", ") + ")"; |
| } |
| function decompileUnaryExpression(ast) { |
| @@ -298,14 +296,14 @@ function decompileConditionalExpression(ast) { |
| function decompileNewExpression(ast) { |
| let str = "new " + decompileAST(ast.callee, ast) + "("; |
| if (ast.arguments) |
| - str += [decompileAST(arg) for each (arg in ast.arguments)].join(", "); |
| + str += ast.arguments.map(decompileAST).join(", "); |
| str += ")"; |
| return str; |
| } |
| function decompileCallExpression(ast) { |
| return decompileExpr(ast.callee, ast) + "(" + |
| - [decompileAST(param) for each (param in ast.arguments)] + ")"; |
| + ast.arguments.map(decompileAST) + ")"; |
| } |
| function decompileMemberExpression(ast) { |
| @@ -337,8 +335,8 @@ function decompileYieldExpression(ast) { |
| function decompileComprehensionExpression(ast, paren) { |
| let str = (paren ? paren.l : "[") + decompileAST(ast.body); |
| - for each (let block in ast.blocks) { |
| - str += (block.each ? " for each " : " for ") |
| + for (let block of ast.blocks) { |
| + str += (block.each ? " for each " : " for "); |
| str += "(" + decompileAST(block.left) + " in "; |
| str += decompileAST(block.right) + ")"; |
| } |
| @@ -367,14 +365,13 @@ function decompileLetExpression(ast) { |
| function decompileObjectPattern(ast) { |
| let str = "{"; |
| - str += [decompileAST(p.key) + ": " + decompileAST(p.value) |
| - for each (p in ast.properties)].join(', '); |
| + str += ast.properties.map(p => decompileAST(p.key) + ": " + |
| + decompileAST(p.value)).join(', '); |
| return str + "}"; |
| } |
| function decompileArrayPattern(ast) { |
| - return "[" + |
| - [e ? decompileAST(e) : ' ' for each (e in ast.elements)].join(', ') + "]"; |
| + return "[" + ast.elements.map(e => e ? decompileAST(e) : ' ').join(', ') + "]"; |
| } |
| function decompileIdentifier(ast) { return ast.name; } |
| @@ -389,11 +386,14 @@ function sanitize(str, q) { |
| if (x == '\r') return '\\r'; |
| if (x == '\t') return '\\t'; |
| if (x == '\v') return '\\v'; |
| - let val = x.charCodeAt(0) |
| + let val = x.charCodeAt(0); |
| if (x < ' ') return '\\x' + (val - val % 16) / 16 + (val % 16); |
| return x; |
| } |
| - return [replace(x) for each (x in str)].join(''); |
| + let result = ""; |
| + for (let char of str) |
| + result += replace(char); |
| + return result; |
| } |
| function decompileLiteral(ast) { |
| @@ -404,100 +404,6 @@ function decompileLiteral(ast) { |
| return ast.value; |
| } |
| -/* E4X */ |
| -function decompileXMLDefaultDeclaration(ast) { |
| - return "default xml namespace = " + decompileAST(ast.namespace) + ";"; |
| -} |
| - |
| -function decompileXMLAnyName(ast) { |
| - return "*"; |
| -} |
| - |
| -function decompileXMLQualifiedIdentifier(ast) { |
| - let str = decompileAST(ast.left) + "::"; |
| - if (ast.computed) |
| - str += "["; |
| - str += decompileAST(ast.right); |
| - if (ast.computed) |
| - str += "]"; |
| - return str; |
| -} |
| - |
| -function decompileXMLFunctionQualifiedIdentifier(ast) { |
| - let str = "function::"; |
| - if (ast.computed) |
| - str += "["; |
| - str += decompileAST(ast.right); |
| - if (ast.computed) |
| - str += "]"; |
| - return str; |
| -} |
| - |
| -function decompileXMLAttributeSelector(ast) { |
| - return "@" + decompileAST(ast.attribute); |
| -} |
| - |
| -function decompileXMLFilterExpression(ast) { |
| - return decompileAST(ast.left) + ".(" + decompileAST(ast.right) + ")"; |
| -} |
| - |
| -function decompileXMLElement(ast) { |
| - return [decompileAST(xml) for each (xml in ast.contents)].join(''); |
| -} |
| - |
| -function decompileXMLList(ast) { |
| - return "<>" + [decompileAST(xml) for each (xml in ast.contents)].join("") + "</>"; |
| -} |
| - |
| -function decompileXMLEscape(ast) { |
| - return "{" + decompileAST(ast.expression) + "}"; |
| -} |
| - |
| -function decompileXMLText(ast) { |
| - return ast.text; |
| -} |
| - |
| -function tagJoin(strings) { |
| - let str = strings[0]; |
| - for (let i = 1; i < strings.length; i++) |
| - str += (i % 2 ? ' ' : '=') + strings[i]; |
| - return str; |
| -} |
| - |
| -function decompileXMLStartTag(ast) { |
| - return "<" + tagJoin([decompileAST(xml) for each (xml in ast.contents)]) + ">"; |
| -} |
| - |
| -function decompileXMLEndTag(ast) { |
| - return "</" + tagJoin([decompileAST(xml) for each (xml in ast.contents)]) + ">"; |
| -} |
| - |
| -function decompileXMLPointTag(ast) { |
| - return "<" + tagJoin([decompileAST(xml) for each (xml in ast.contents)]) + "/>"; |
| -} |
| - |
| -function decompileXMLName(ast) { |
| - if (typeof ast.contents == "string") |
| - return ast.contents + " "; |
| - return [decompileAST(xml) for each (xml in ast.contents)].join(''); |
| -} |
| - |
| -function decompileXMLAttribute(ast) { |
| - return '"' + ast.value + '"'; |
| -} |
| - |
| -function decompileXMLCdata(ast) { |
| - return "<![CDATA[" + ast.contents + "]]>"; |
| -} |
| - |
| -function decompileXMLComment(ast) { |
| - return "<!--" + ast.comment + "-->"; |
| -} |
| - |
| -function decompileXMLProcessingInstruction(ast) { |
| - return "<?" + ast.target + (ast.contents ? " " + ast.contents : "") + "?>"; |
| -} |
| - |
| function process_js(ast) { |
| _print(decompileAST(ast)); |
| } |