| OLD | NEW |
| 1 let global = this; | 1 let global = this; |
| 2 function decompileAST(ast) { | 2 function decompileAST(ast) { |
| 3 let func = global["decompile" + ast.type]; | 3 let func = global["decompile" + ast.type]; |
| 4 if (!func) | 4 if (!func) |
| 5 throw "Unknown type " + ast.type; | 5 throw "Unknown type " + ast.type; |
| 6 return func(ast); | 6 return func(ast); |
| 7 } | 7 } |
| 8 | 8 |
| 9 function decompileProgram(ast) { | 9 function decompileProgram(ast) { |
| 10 return [decompileAST(stmt) for each (stmt in ast.body)].join('\n'); | 10 return [decompileAST(stmt) for each (stmt in ast.body)].join('\n'); |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 str += "("; | 127 str += "("; |
| 128 if (ast.left.type == "VariableDeclaration") | 128 if (ast.left.type == "VariableDeclaration") |
| 129 str += decompileVariableDeclaration(ast.left, true); | 129 str += decompileVariableDeclaration(ast.left, true); |
| 130 else | 130 else |
| 131 str += decompileAST(ast.left); | 131 str += decompileAST(ast.left); |
| 132 str += " in " + decompileExpr(ast.right, ast) + ") "; | 132 str += " in " + decompileExpr(ast.right, ast) + ") "; |
| 133 str += decompileAST(ast.body); | 133 str += decompileAST(ast.body); |
| 134 return str; | 134 return str; |
| 135 } | 135 } |
| 136 | 136 |
| 137 function decompileForOfStatement(ast) { |
| 138 let str = "for ("; |
| 139 if (ast.left.type == "VariableDeclaration") |
| 140 str += decompileVariableDeclaration(ast.left, true); |
| 141 else |
| 142 str += decompileAST(ast.left); |
| 143 str += " of " + decompileExpr(ast.right, ast) + ") "; |
| 144 str += decompileAST(ast.body); |
| 145 return str; |
| 146 } |
| 147 |
| 137 function decompileLetStatement(ast) { | 148 function decompileLetStatement(ast) { |
| 138 let str = "let ("; | 149 let str = "let ("; |
| 139 str += [d ? decompileAST(d) : ' ' for each (d in ast.head)].join(', '); | 150 str += [d ? decompileAST(d) : ' ' for each (d in ast.head)].join(', '); |
| 140 str += ") " + decompileAST(ast.body); | 151 str += ") " + decompileAST(ast.body); |
| 141 return str; | 152 return str; |
| 142 } | 153 } |
| 143 | 154 |
| 144 function decompileDebuggerStatement(ast) { | 155 function decompileDebuggerStatement(ast) { |
| 145 return "debugger;"; | 156 return "debugger;"; |
| 146 } | 157 } |
| (...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 477 return "<!--" + ast.comment + "-->"; | 488 return "<!--" + ast.comment + "-->"; |
| 478 } | 489 } |
| 479 | 490 |
| 480 function decompileXMLProcessingInstruction(ast) { | 491 function decompileXMLProcessingInstruction(ast) { |
| 481 return "<?" + ast.target + (ast.contents ? " " + ast.contents : "") + "?>"; | 492 return "<?" + ast.target + (ast.contents ? " " + ast.contents : "") + "?>"; |
| 482 } | 493 } |
| 483 | 494 |
| 484 function process_js(ast) { | 495 function process_js(ast) { |
| 485 _print(decompileAST(ast)); | 496 _print(decompileAST(ast)); |
| 486 } | 497 } |
| OLD | NEW |