OLD | NEW |
1 // This script rewrites AST to be compatible with JavaScript 1.5 and decompiles | 1 // This script rewrites AST to be compatible with JavaScript 1.5 and decompiles |
2 // the modified tree then | 2 // the modified tree then |
3 | 3 |
4 include("../scripts/astDecompile.js"); | 4 include("../scripts/astDecompile.js"); |
5 include("../utils/beautify.js"); | 5 include("../utils/beautify.js"); |
6 | 6 |
7 let headerPrinted = false; | 7 let headerPrinted = false; |
8 | 8 |
9 // See https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API for | 9 // See https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API for |
10 // AST structure. | 10 // AST structure. |
11 | 11 |
12 let options = { | 12 let options = { |
13 filename: null, | 13 filename: null, |
14 module: false, | 14 module: false, |
15 autoload: "", | 15 autoload: "", |
16 varIndex: 0, | 16 varIndex: 0, |
17 indent_size: 2, | 17 indent_size: 2, |
18 preserve_newlines: false, | 18 preserve_newlines: false, |
19 brace_style: "expand", | 19 brace_style: "expand", |
20 source_repo: "" | 20 source_repo: "" |
21 }; | 21 }; |
22 let global = this; | |
23 | 22 |
24 function Literal(value) | 23 function Literal(value) |
25 { | 24 { |
26 return { | 25 return { |
27 type: "Literal", | 26 type: "Literal", |
28 value: value | 27 value: value |
29 }; | 28 }; |
30 } | 29 } |
31 | 30 |
32 function Identifier(varname) | 31 function Identifier(varname) |
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
429 } | 428 } |
430 | 429 |
431 return ast; | 430 return ast; |
432 } | 431 } |
433 | 432 |
434 function modifyFunctionDeclaration(ast) | 433 function modifyFunctionDeclaration(ast) |
435 { | 434 { |
436 return modifyFunctionExpression(ast); | 435 return modifyFunctionExpression(ast); |
437 } | 436 } |
438 | 437 |
439 function modifyArrowExpression(ast) | 438 function modifyArrowFunctionExpression(ast) |
440 { | 439 { |
441 if (ast.body.type != "BlockStatement") { | 440 if (ast.body.type != "BlockStatement") { |
442 // Convert expressions to block statements. | 441 // Convert expressions to block statements. |
443 // (a) => a + 1 | 442 // (a) => a + 1 |
444 // | 443 // |
445 // Change into: | 444 // Change into: |
446 // (a) => { return a + 1; } | 445 // (a) => { return a + 1; } |
447 ast.body = { | 446 ast.body = { |
448 type: "BlockStatement", | 447 type: "BlockStatement", |
449 body: [ | 448 body: [ |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
580 _print(decompileAST({ | 579 _print(decompileAST({ |
581 type: "ExpressionStatement", | 580 type: "ExpressionStatement", |
582 expression: { | 581 expression: { |
583 type: "CallExpression", | 582 type: "CallExpression", |
584 callee: Identifier("require"), | 583 callee: Identifier("require"), |
585 arguments: [Literal(module)] | 584 arguments: [Literal(module)] |
586 } | 585 } |
587 })); | 586 })); |
588 } | 587 } |
589 }; | 588 }; |
OLD | NEW |