Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: utils/dumpast.js

Issue 29350140: Issue 4353 - Remove non standard for each syntax (Closed)
Patch Set: Created Aug. 24, 2016, 11:08 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 /** 1 /**
2 * Dumps the tree of the ast rooted at the given point. 2 * Dumps the tree of the ast rooted at the given point.
3 */ 3 */
4 function dump_ast(ast, prefix) { 4 function dump_ast(ast, prefix) {
5 if (ast == null) 5 if (ast == null)
6 return; 6 return;
7 if (!prefix) 7 if (!prefix)
8 prefix = ""; 8 prefix = "";
9 let str = prefix + "+ "; 9 let str = prefix + "+ ";
10 for (let key in ast) { 10 for (let key in ast) {
11 if (key == 'column' || key == 'line' || key == 'kids') 11 if (key == 'column' || key == 'line' || key == 'kids')
12 continue; 12 continue;
13 let val = (key == 'op' ? decode_op(ast[key]) : 13 let val = (key == 'op' ? decode_op(ast[key]) :
14 key == 'type' ? decode_type(ast[key]) : 14 key == 'type' ? decode_type(ast[key]) :
15 key == 'flags' ? ('0x' + ast[key].toString(16)) : ast[key]); 15 key == 'flags' ? ('0x' + ast[key].toString(16)) : ast[key]);
16 str += key + ": " + val + "; "; 16 str += key + ": " + val + "; ";
17 } 17 }
18 str += ast.line + ":" + ast.column; 18 str += ast.line + ":" + ast.column;
19 _print(str); 19 _print(str);
20 prefix += " "; 20 prefix += " ";
21 » for each (let kid in ast.kids) { 21 » for (let kid of ast.kids) {
22 dump_ast(kid, prefix); 22 dump_ast(kid, prefix);
23 } 23 }
24 } 24 }
25 25
26 var global = this; 26 var global = this;
27 var optable = null, toktable; 27 var optable = null, toktable;
28 function decode_op(opcode) { 28 function decode_op(opcode) {
29 if (!optable) { 29 if (!optable) {
30 optable = []; 30 optable = [];
31 for (let key in global) { 31 for (let key in global) {
(...skipping 26 matching lines...) Expand all
58 if (!prefix) 58 if (!prefix)
59 prefix = ""; 59 prefix = "";
60 let str = prefix + "+ "; 60 let str = prefix + "+ ";
61 _print(prefix + ast.type + " @ " + ast.location + ":"); 61 _print(prefix + ast.type + " @ " + ast.location + ":");
62 for (let key in ast) { 62 for (let key in ast) {
63 if (key == 'type' || key == 'location' || key == 'visit') 63 if (key == 'type' || key == 'location' || key == 'visit')
64 continue; 64 continue;
65 let val = ast[key]; 65 let val = ast[key];
66 if (val instanceof Array) { 66 if (val instanceof Array) {
67 _print(prefix + " + " + key + ": ["); 67 _print(prefix + " + " + key + ": [");
68 for each (let kind in val) { 68 for (let kind of val) {
69 dump_trueast(kind, prefix + " "); 69 dump_trueast(kind, prefix + " ");
70 } 70 }
71 _print(prefix + " ]"); 71 _print(prefix + " ]");
72 } else if (val instanceof Object && "type" in val) { 72 } else if (val instanceof Object && "type" in val) {
73 _print(prefix + " + " + key + ":"); 73 _print(prefix + " + " + key + ":");
74 dump_trueast(val, prefix + " "); 74 dump_trueast(val, prefix + " ");
75 } else { 75 } else {
76 _print(prefix + " + " + key + ": " + val); 76 _print(prefix + " + " + key + ": " + val);
77 } 77 }
78 } 78 }
79 } 79 }
OLDNEW
« scripts/decompile.js ('K') | « utils/comments.js ('k') | utils/jstypes.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld