spider-src 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/Gemfile +7 -0
  4. data/LICENSE.txt +74 -0
  5. data/README.md +37 -0
  6. data/Rakefile +25 -0
  7. data/lib/spider-src/support/spider/.eslintrc +17 -0
  8. data/lib/spider-src/support/spider/.npmignore +9 -0
  9. data/lib/spider-src/support/spider/.travis.yml +7 -0
  10. data/lib/spider-src/support/spider/.yo-rc.json +3 -0
  11. data/lib/spider-src/support/spider/CHANGELOG.md +64 -0
  12. data/lib/spider-src/support/spider/Gruntfile.js +97 -0
  13. data/lib/spider-src/support/spider/Gruntfile.spider +93 -0
  14. data/lib/spider-src/support/spider/LICENSE +201 -0
  15. data/lib/spider-src/support/spider/README.md +50 -0
  16. data/lib/spider-src/support/spider/cli.js +119 -0
  17. data/lib/spider-src/support/spider/lib/ast/CaseClause.js +179 -0
  18. data/lib/spider-src/support/spider/lib/ast/CatchClause.js +26 -0
  19. data/lib/spider-src/support/spider/lib/ast/ExportBatchSpecifier.js +19 -0
  20. data/lib/spider-src/support/spider/lib/ast/ExportSpecifier.js +33 -0
  21. data/lib/spider-src/support/spider/lib/ast/ImportDefaultSpecifier.js +23 -0
  22. data/lib/spider-src/support/spider/lib/ast/ImportNamespaceSpecifier.js +23 -0
  23. data/lib/spider-src/support/spider/lib/ast/ImportSpecifier.js +40 -0
  24. data/lib/spider-src/support/spider/lib/ast/Node.js +93 -0
  25. data/lib/spider-src/support/spider/lib/ast/Parameter.js +229 -0
  26. data/lib/spider-src/support/spider/lib/ast/Program.js +58 -0
  27. data/lib/spider-src/support/spider/lib/ast/Property.js +32 -0
  28. data/lib/spider-src/support/spider/lib/ast/Range.js +257 -0
  29. data/lib/spider-src/support/spider/lib/ast/VariableDeclarator.js +29 -0
  30. data/lib/spider-src/support/spider/lib/ast/expressions/ArrayExpression.js +41 -0
  31. data/lib/spider-src/support/spider/lib/ast/expressions/ArrayPattern.js +45 -0
  32. data/lib/spider-src/support/spider/lib/ast/expressions/AssignmentExpression.js +29 -0
  33. data/lib/spider-src/support/spider/lib/ast/expressions/BinaryExpression.js +104 -0
  34. data/lib/spider-src/support/spider/lib/ast/expressions/CallExpression.js +139 -0
  35. data/lib/spider-src/support/spider/lib/ast/expressions/ConditionalExpression.js +31 -0
  36. data/lib/spider-src/support/spider/lib/ast/expressions/CurryCallExpression.js +102 -0
  37. data/lib/spider-src/support/spider/lib/ast/expressions/ExistentialExpression.js +83 -0
  38. data/lib/spider-src/support/spider/lib/ast/expressions/ForInExpression.js +116 -0
  39. data/lib/spider-src/support/spider/lib/ast/expressions/FunctionExpression.js +157 -0
  40. data/lib/spider-src/support/spider/lib/ast/expressions/InExpression.js +99 -0
  41. data/lib/spider-src/support/spider/lib/ast/expressions/LogicalExpression.js +50 -0
  42. data/lib/spider-src/support/spider/lib/ast/expressions/MemberExpression.js +43 -0
  43. data/lib/spider-src/support/spider/lib/ast/expressions/NewExpression.js +46 -0
  44. data/lib/spider-src/support/spider/lib/ast/expressions/NullCheckCallExpression.js +132 -0
  45. data/lib/spider-src/support/spider/lib/ast/expressions/NullCoalescingExpression.js +114 -0
  46. data/lib/spider-src/support/spider/lib/ast/expressions/NullPropagatingExpression.js +161 -0
  47. data/lib/spider-src/support/spider/lib/ast/expressions/ObjectExpression.js +39 -0
  48. data/lib/spider-src/support/spider/lib/ast/expressions/ObjectPattern.js +49 -0
  49. data/lib/spider-src/support/spider/lib/ast/expressions/RangeMemberExpression.js +157 -0
  50. data/lib/spider-src/support/spider/lib/ast/expressions/SplatExpression.js +48 -0
  51. data/lib/spider-src/support/spider/lib/ast/expressions/SuperExpression.js +170 -0
  52. data/lib/spider-src/support/spider/lib/ast/expressions/ThisExpression.js +22 -0
  53. data/lib/spider-src/support/spider/lib/ast/expressions/UnaryExpression.js +147 -0
  54. data/lib/spider-src/support/spider/lib/ast/expressions/UpdateExpression.js +26 -0
  55. data/lib/spider-src/support/spider/lib/ast/literals/BooleanLiteral.js +24 -0
  56. data/lib/spider-src/support/spider/lib/ast/literals/Identifier.js +60 -0
  57. data/lib/spider-src/support/spider/lib/ast/literals/NullLiteral.js +24 -0
  58. data/lib/spider-src/support/spider/lib/ast/literals/NumberLiteral.js +24 -0
  59. data/lib/spider-src/support/spider/lib/ast/literals/RegularExpressionLiteral.js +25 -0
  60. data/lib/spider-src/support/spider/lib/ast/literals/StringLiteral.js +90 -0
  61. data/lib/spider-src/support/spider/lib/ast/literals/UndefinedLiteral.js +30 -0
  62. data/lib/spider-src/support/spider/lib/ast/statements/BlockStatement.js +47 -0
  63. data/lib/spider-src/support/spider/lib/ast/statements/BreakStatement.js +19 -0
  64. data/lib/spider-src/support/spider/lib/ast/statements/ContinueStatement.js +19 -0
  65. data/lib/spider-src/support/spider/lib/ast/statements/DebuggerStatement.js +19 -0
  66. data/lib/spider-src/support/spider/lib/ast/statements/DoWhileStatement.js +25 -0
  67. data/lib/spider-src/support/spider/lib/ast/statements/ExportDeclarationStatement.js +51 -0
  68. data/lib/spider-src/support/spider/lib/ast/statements/ExpressionStatement.js +22 -0
  69. data/lib/spider-src/support/spider/lib/ast/statements/FallthroughStatement.js +74 -0
  70. data/lib/spider-src/support/spider/lib/ast/statements/ForInStatement.js +79 -0
  71. data/lib/spider-src/support/spider/lib/ast/statements/ForOfStatement.js +98 -0
  72. data/lib/spider-src/support/spider/lib/ast/statements/ForStatement.js +43 -0
  73. data/lib/spider-src/support/spider/lib/ast/statements/FunctionDeclarationStatement.js +104 -0
  74. data/lib/spider-src/support/spider/lib/ast/statements/GoStatement.js +41 -0
  75. data/lib/spider-src/support/spider/lib/ast/statements/IfStatement.js +32 -0
  76. data/lib/spider-src/support/spider/lib/ast/statements/ImportDeclarationStatement.js +40 -0
  77. data/lib/spider-src/support/spider/lib/ast/statements/PushStatement.js +37 -0
  78. data/lib/spider-src/support/spider/lib/ast/statements/ReturnStatement.js +26 -0
  79. data/lib/spider-src/support/spider/lib/ast/statements/SwitchStatement.js +159 -0
  80. data/lib/spider-src/support/spider/lib/ast/statements/ThrowStatement.js +22 -0
  81. data/lib/spider-src/support/spider/lib/ast/statements/TryStatement.js +36 -0
  82. data/lib/spider-src/support/spider/lib/ast/statements/UntilStatement.js +31 -0
  83. data/lib/spider-src/support/spider/lib/ast/statements/UseStatement.js +49 -0
  84. data/lib/spider-src/support/spider/lib/ast/statements/VariableDeclarationStatement.js +36 -0
  85. data/lib/spider-src/support/spider/lib/ast/statements/WhileStatement.js +25 -0
  86. data/lib/spider-src/support/spider/lib/ast.js +16 -0
  87. data/lib/spider-src/support/spider/lib/parser.js +14878 -0
  88. data/lib/spider-src/support/spider/lib/spider.js +217 -0
  89. data/lib/spider-src/support/spider/package.json +61 -0
  90. data/lib/spider-src/support/spider/spider-script.js +6 -0
  91. data/lib/spider-src/support/spider/src/ast/CaseClause.spider +179 -0
  92. data/lib/spider-src/support/spider/src/ast/CatchClause.spider +30 -0
  93. data/lib/spider-src/support/spider/src/ast/ExportBatchSpecifier.spider +19 -0
  94. data/lib/spider-src/support/spider/src/ast/ExportSpecifier.spider +37 -0
  95. data/lib/spider-src/support/spider/src/ast/ImportDefaultSpecifier.spider +25 -0
  96. data/lib/spider-src/support/spider/src/ast/ImportNamespaceSpecifier.spider +25 -0
  97. data/lib/spider-src/support/spider/src/ast/ImportSpecifier.spider +44 -0
  98. data/lib/spider-src/support/spider/src/ast/Node.spider +104 -0
  99. data/lib/spider-src/support/spider/src/ast/Parameter.spider +233 -0
  100. data/lib/spider-src/support/spider/src/ast/Program.spider +109 -0
  101. data/lib/spider-src/support/spider/src/ast/Property.spider +36 -0
  102. data/lib/spider-src/support/spider/src/ast/Range.spider +291 -0
  103. data/lib/spider-src/support/spider/src/ast/VariableDeclarator.spider +33 -0
  104. data/lib/spider-src/support/spider/src/ast/expressions/ArrayExpression.spider +32 -0
  105. data/lib/spider-src/support/spider/src/ast/expressions/ArrayPattern.spider +37 -0
  106. data/lib/spider-src/support/spider/src/ast/expressions/AssignmentExpression.spider +34 -0
  107. data/lib/spider-src/support/spider/src/ast/expressions/BinaryExpression.spider +125 -0
  108. data/lib/spider-src/support/spider/src/ast/expressions/CallExpression.spider +149 -0
  109. data/lib/spider-src/support/spider/src/ast/expressions/ConditionalExpression.spider +34 -0
  110. data/lib/spider-src/support/spider/src/ast/expressions/CurryCallExpression.spider +109 -0
  111. data/lib/spider-src/support/spider/src/ast/expressions/ExistentialExpression.spider +102 -0
  112. data/lib/spider-src/support/spider/src/ast/expressions/ForInExpression.spider +140 -0
  113. data/lib/spider-src/support/spider/src/ast/expressions/FunctionExpression.spider +183 -0
  114. data/lib/spider-src/support/spider/src/ast/expressions/InExpression.spider +114 -0
  115. data/lib/spider-src/support/spider/src/ast/expressions/LogicalExpression.spider +62 -0
  116. data/lib/spider-src/support/spider/src/ast/expressions/MemberExpression.spider +57 -0
  117. data/lib/spider-src/support/spider/src/ast/expressions/NewExpression.spider +40 -0
  118. data/lib/spider-src/support/spider/src/ast/expressions/NullCheckCallExpression.spider +151 -0
  119. data/lib/spider-src/support/spider/src/ast/expressions/NullCoalescingExpression.spider +151 -0
  120. data/lib/spider-src/support/spider/src/ast/expressions/NullPropagatingExpression.spider +190 -0
  121. data/lib/spider-src/support/spider/src/ast/expressions/ObjectExpression.spider +30 -0
  122. data/lib/spider-src/support/spider/src/ast/expressions/ObjectPattern.spider +42 -0
  123. data/lib/spider-src/support/spider/src/ast/expressions/RangeMemberExpression.spider +179 -0
  124. data/lib/spider-src/support/spider/src/ast/expressions/SplatExpression.spider +49 -0
  125. data/lib/spider-src/support/spider/src/ast/expressions/SuperExpression.spider +235 -0
  126. data/lib/spider-src/support/spider/src/ast/expressions/ThisExpression.spider +21 -0
  127. data/lib/spider-src/support/spider/src/ast/expressions/UnaryExpression.spider +158 -0
  128. data/lib/spider-src/support/spider/src/ast/expressions/UpdateExpression.spider +28 -0
  129. data/lib/spider-src/support/spider/src/ast/literals/BooleanLiteral.spider +23 -0
  130. data/lib/spider-src/support/spider/src/ast/literals/Identifier.spider +68 -0
  131. data/lib/spider-src/support/spider/src/ast/literals/NullLiteral.spider +23 -0
  132. data/lib/spider-src/support/spider/src/ast/literals/NumberLiteral.spider +23 -0
  133. data/lib/spider-src/support/spider/src/ast/literals/RegularExpressionLiteral.spider +24 -0
  134. data/lib/spider-src/support/spider/src/ast/literals/StringLiteral.spider +91 -0
  135. data/lib/spider-src/support/spider/src/ast/literals/UndefinedLiteral.spider +30 -0
  136. data/lib/spider-src/support/spider/src/ast/statements/BlockStatement.spider +45 -0
  137. data/lib/spider-src/support/spider/src/ast/statements/BreakStatement.spider +19 -0
  138. data/lib/spider-src/support/spider/src/ast/statements/ContinueStatement.spider +19 -0
  139. data/lib/spider-src/support/spider/src/ast/statements/DebuggerStatement.spider +19 -0
  140. data/lib/spider-src/support/spider/src/ast/statements/DoWhileStatement.spider +28 -0
  141. data/lib/spider-src/support/spider/src/ast/statements/ExportDeclarationStatement.spider +46 -0
  142. data/lib/spider-src/support/spider/src/ast/statements/ExpressionStatement.spider +22 -0
  143. data/lib/spider-src/support/spider/src/ast/statements/FallthroughStatement.spider +85 -0
  144. data/lib/spider-src/support/spider/src/ast/statements/ForInStatement.spider +92 -0
  145. data/lib/spider-src/support/spider/src/ast/statements/ForOfStatement.spider +117 -0
  146. data/lib/spider-src/support/spider/src/ast/statements/ForStatement.spider +51 -0
  147. data/lib/spider-src/support/spider/src/ast/statements/FunctionDeclarationStatement.spider +115 -0
  148. data/lib/spider-src/support/spider/src/ast/statements/GoStatement.spider +44 -0
  149. data/lib/spider-src/support/spider/src/ast/statements/IfStatement.spider +38 -0
  150. data/lib/spider-src/support/spider/src/ast/statements/ImportDeclarationStatement.spider +33 -0
  151. data/lib/spider-src/support/spider/src/ast/statements/PushStatement.spider +40 -0
  152. data/lib/spider-src/support/spider/src/ast/statements/ReturnStatement.spider +28 -0
  153. data/lib/spider-src/support/spider/src/ast/statements/SwitchStatement.spider +161 -0
  154. data/lib/spider-src/support/spider/src/ast/statements/ThrowStatement.spider +23 -0
  155. data/lib/spider-src/support/spider/src/ast/statements/TryStatement.spider +42 -0
  156. data/lib/spider-src/support/spider/src/ast/statements/UntilStatement.spider +36 -0
  157. data/lib/spider-src/support/spider/src/ast/statements/UseStatement.spider +62 -0
  158. data/lib/spider-src/support/spider/src/ast/statements/VariableDeclarationStatement.spider +34 -0
  159. data/lib/spider-src/support/spider/src/ast/statements/WhileStatement.spider +28 -0
  160. data/lib/spider-src/support/spider/src/ast.spider +80 -0
  161. data/lib/spider-src/support/spider/src/spider.pegjs +1434 -0
  162. data/lib/spider-src/support/spider/src/spider.spider +276 -0
  163. data/lib/spider-src/support/spider/test/spider_test.js +1787 -0
  164. data/lib/spider-src/version.rb +5 -0
  165. data/lib/spider-src.rb +37 -0
  166. data/spider-src.gemspec +24 -0
  167. data/test/test_spider_src.rb +33 -0
  168. metadata +225 -0
@@ -0,0 +1,50 @@
1
+ Spider
2
+ ===
3
+
4
+ [![NPM Version](http://img.shields.io/npm/v/spider-script.svg?style=flat)](https://www.npmjs.org/package/spider-script) [![Build Status](https://img.shields.io/travis/alongubkin/spider.svg?style=flat)](http://travis-ci.org/alongubkin/spider) [![Dependencies](http://img.shields.io/david/alongubkin/spider.svg?style=flat)](https://david-dm.org/alongubkin/spider) [![Test Coverage](http://img.shields.io/coveralls/alongubkin/spider.svg?style=flat)](https://coveralls.io/r/alongubkin/spider)
5
+
6
+ The Next-Gen Programming Language for the Web.
7
+
8
+ > **Note:** Spider is still work in progress. Make sure to star the project if you are interested!
9
+
10
+ [Documentation](http://spiderlang.org/)
11
+
12
+ ### Installation
13
+
14
+ npm install -g spider-script
15
+
16
+ ### Usage
17
+
18
+ Execute a script:
19
+
20
+ spider /path/to/script.spider
21
+
22
+ Compile a script:
23
+
24
+ spider -c /path/to/script.spider
25
+
26
+ ### Join the Community
27
+
28
+ * Website: http://spiderlang.org
29
+ * IRC: [#spiderlang](http://webchat.freenode.net/?channels=spiderlang) on Freenode
30
+ * IRC Logs: [#spiderlang](https://botbot.me/freenode/spiderlang/) on BotBot
31
+ * Q/A: [spiderlang](http://stackoverflow.com/questions/tagged/spiderlang) tag in StackOverflow
32
+ * [Google Group](http://groups.google.com/d/forum/spiderlang?hl=en)
33
+
34
+ ### Contributing
35
+
36
+ We need your help!
37
+
38
+ You can browse the [contributing-getting-started](https://github.com/alongubkin/spider/labels/contributing-getting-started) tag to find good issues to get started with.
39
+
40
+ 1. [Fork](https://github.com/alongubkin/spider/fork) the project
41
+ 2. Clone your forked repo: `git clone git@github.com:githubuser/spider.git`
42
+ 3. Create your feature/bugfix branch: `git checkout -b new-operator`
43
+ 4. Commit your changes to your new branch: `git commit -am 'Add a new operator'`
44
+ 5. Push to the branch: `git push origin new-operator`
45
+ 6. Create a new Pull Request!
46
+
47
+ Resources:
48
+
49
+ * [PEG.js](http://pegjs.majda.cz/) (Used for parsing)
50
+ * [Esprima Parser](http://esprima.org/demo/parse.html#]) (Good way to learn the SpiderMonkey AST)
@@ -0,0 +1,119 @@
1
+ #! /usr/bin/env node
2
+
3
+ "use strict";
4
+
5
+ var fs = require("fs"),
6
+ path = require("path"),
7
+ vm = require("vm"),
8
+ traceur = require("traceur"),
9
+ nomnom = require("nomnom"),
10
+ chalk = require("chalk"),
11
+ spider = require("./lib/spider");
12
+
13
+ var opts = nomnom
14
+ .option("files", {
15
+ position: 0,
16
+ help: "files to compile",
17
+ list: true
18
+ })
19
+ .option("compile", {
20
+ abbr: "c",
21
+ flag: true,
22
+ help: "compile to JavaScript and save as .js files"
23
+ })
24
+ .option("verbose", {
25
+ abbr: "v",
26
+ flag: true,
27
+ help: "verbose mode"
28
+ })
29
+ .option("disable-source-map", {
30
+ flag: true,
31
+ help: "disable source map files (.map) generation"
32
+ })
33
+ .option("target", {
34
+ choices: ["ES6", "ES5"],
35
+ default: "ES5",
36
+ help: "target"
37
+ })
38
+ .option("version", {
39
+ flag: true,
40
+ help: "display the version number",
41
+ callback: function () {
42
+ return "version " + require("./package.json").version;
43
+ }
44
+ })
45
+ .parse();
46
+
47
+ if (!opts.files) {
48
+ console.log(nomnom.getUsage());
49
+ process.exit(0);
50
+ }
51
+
52
+ var generateSourceMap = !opts['disable-source-map'] && opts.compile;
53
+ var problems = 0;
54
+
55
+ opts.files.forEach(function (fileName, fileIndex) {
56
+ var baseName = path.basename(fileName);
57
+
58
+ fs.readFile(baseName, "utf-8", function (error, content) {
59
+ var compilerOutput = spider.compile({
60
+ text: content,
61
+ fileName: baseName,
62
+ target: opts.target,
63
+ generateSourceMap: generateSourceMap
64
+ });
65
+
66
+ if (compilerOutput.errors.length > 0) {
67
+ console.log(spider.formatErrors(baseName, content, compilerOutput.errors));
68
+ problems += compilerOutput.errors.length;
69
+
70
+ if (problems > 0 &&
71
+ fileIndex === opts.files.length - 1) {
72
+ console.log(chalk.red(problems + (problems === 1 ? " problem" : " problems")));
73
+ }
74
+ } else {
75
+ if (opts.compile) {
76
+ var outFileNameWithoutExtension = fileName.substring(0,
77
+ fileName.lastIndexOf('.'));
78
+
79
+ writeFile(outFileNameWithoutExtension + ".js",
80
+ compilerOutput.result);
81
+
82
+ if (generateSourceMap) {
83
+ writeFile(outFileNameWithoutExtension + ".map",
84
+ compilerOutput.result);
85
+ }
86
+ } else {
87
+ var sandbox = {};
88
+ for (var key in global) {
89
+ sandbox[key] = global[key];
90
+ }
91
+ var Module, _module, _require;
92
+ Module = require('module');
93
+ sandbox.module = _module = new Module(outFileNameWithoutExtension || 'eval');
94
+ sandbox.require = _require = function(path) {
95
+ return Module._load(path, _module, true);
96
+ };
97
+ _module.filename = sandbox.__filename;
98
+ Object.getOwnPropertyNames(require).forEach(function(r){
99
+ if (r !== 'paths' && r !== 'arguments' && r !== 'caller') {
100
+ _require[r] = require[r];
101
+ }
102
+ })
103
+ _require.paths = _module.paths = Module._nodeModulePaths(process.cwd());
104
+ _require.resolve = function(request) {
105
+ return Module._resolveFilename(request, _module);
106
+ };
107
+ vm.runInNewContext(compilerOutput.result, sandbox);
108
+ }
109
+ }
110
+ });
111
+ });
112
+
113
+ function writeFile(fileName, content) {
114
+ fs.writeFile(fileName, content, function (error) {
115
+ if (error) {
116
+ return console.log(error);
117
+ }
118
+ });
119
+ }
@@ -0,0 +1,179 @@
1
+ $traceurRuntime.ModuleStore.getAnonymousModule(function() {
2
+ "use strict";
3
+ var Node = module.require("./Node").Node;
4
+ function CaseClause(tests, body) {
5
+ Node.call(this);
6
+ this.type = "CaseClause";
7
+ this.body = body;
8
+ this.body.parent = this;
9
+ this.tests = tests;
10
+ if (typeof this.tests !== "undefined" && this.tests !== null) {
11
+ for (var $__0 = this.tests[$traceurRuntime.toProperty(Symbol.iterator)](),
12
+ $__1; !($__1 = $__0.next()).done; ) {
13
+ var test = $__1.value;
14
+ {
15
+ test.parent = this;
16
+ }
17
+ }
18
+ }
19
+ }
20
+ CaseClause.prototype = Object.create(Node);
21
+ CaseClause.prototype.codegen = function(branchFallthrough) {
22
+ if (!Node.prototype.codegen.call(this)) {
23
+ return;
24
+ }
25
+ if (!(typeof this.tests !== "undefined" && this.tests !== null) && !branchFallthrough) {
26
+ return this.body.codegen();
27
+ }
28
+ this.type = "IfStatement";
29
+ this.switchCase = true;
30
+ var rangeError = false;
31
+ if (typeof this.tests !== "undefined" && this.tests !== null) {
32
+ for (var $__2 = this.tests[$traceurRuntime.toProperty(Symbol.iterator)](),
33
+ $__3; !($__3 = $__2.next()).done; ) {
34
+ var test = $__3.value;
35
+ {
36
+ var equalsToDiscriminant;
37
+ if (test.type === "Range") {
38
+ var fromCheck;
39
+ if (test.start) {
40
+ fromCheck = {
41
+ "type": "BinaryExpression",
42
+ "operator": ">=",
43
+ "left": this.parent.discriminant,
44
+ "right": test.start
45
+ };
46
+ }
47
+ var toCheck;
48
+ if (test.to) {
49
+ toCheck = {
50
+ "type": "BinaryExpression",
51
+ "operator": "<" + (test.operator === ".." ? "=" : ""),
52
+ "left": this.parent.discriminant,
53
+ "right": test.to
54
+ };
55
+ }
56
+ if (!!fromCheck && !!toCheck) {
57
+ equalsToDiscriminant = {
58
+ "type": "LogicalExpression",
59
+ "operator": "&&",
60
+ "left": fromCheck,
61
+ "right": toCheck
62
+ };
63
+ } else {
64
+ if (!!fromCheck || !!toCheck) {
65
+ equalsToDiscriminant = typeof fromCheck === "undefined" || fromCheck == null ? toCheck : fromCheck;
66
+ } else {
67
+ rangeError = test;
68
+ break;
69
+ }
70
+ }
71
+ } else {
72
+ if (test.type === "ArrayExpression") {
73
+ test = test.codegen();
74
+ equalsToDiscriminant = {
75
+ "type": "BinaryExpression",
76
+ "operator": ">=",
77
+ "left": {
78
+ "type": "MemberExpression",
79
+ "computed": false,
80
+ "object": this.parent.discriminant,
81
+ "property": {
82
+ "type": "Identifier",
83
+ "name": "length"
84
+ }
85
+ },
86
+ "right": {
87
+ "type": "Literal",
88
+ "value": test.elements.length
89
+ }
90
+ };
91
+ var i = 0;
92
+ for (var $__0 = test.elements[$traceurRuntime.toProperty(Symbol.iterator)](),
93
+ $__1; !($__1 = $__0.next()).done; ) {
94
+ var element = $__1.value;
95
+ {
96
+ if (typeof element !== "undefined" && element !== null) {
97
+ equalsToDiscriminant = {
98
+ "type": "LogicalExpression",
99
+ "operator": "&&",
100
+ "left": equalsToDiscriminant,
101
+ "right": {
102
+ "type": "BinaryExpression",
103
+ "operator": "===",
104
+ "left": {
105
+ "type": "MemberExpression",
106
+ "computed": true,
107
+ "object": this.parent.discriminant,
108
+ "property": {
109
+ "type": "Literal",
110
+ "value": i
111
+ }
112
+ },
113
+ "right": element
114
+ }
115
+ };
116
+ }
117
+ i++;
118
+ }
119
+ }
120
+ } else {
121
+ equalsToDiscriminant = {
122
+ "type": "BinaryExpression",
123
+ "operator": "===",
124
+ "left": this.parent.discriminant,
125
+ "right": test.codegen()
126
+ };
127
+ }
128
+ }
129
+ if (!this.test) {
130
+ this.test = equalsToDiscriminant;
131
+ } else {
132
+ this.test = {
133
+ "type": "LogicalExpression",
134
+ "operator": "||",
135
+ "left": this.test,
136
+ "right": equalsToDiscriminant
137
+ };
138
+ }
139
+ }
140
+ }
141
+ }
142
+ if (rangeError) {
143
+ Node.getErrorManager().error({
144
+ type: "EmptyRange",
145
+ message: "empty range in case clause is disallowed.",
146
+ loc: rangeError.loc
147
+ });
148
+ return null;
149
+ }
150
+ this.consequent = this.body.codegen();
151
+ if (branchFallthrough) {
152
+ var fallthroughTest = {
153
+ "type": "BinaryExpression",
154
+ "left": this.parent.fallthroughId,
155
+ "operator": "<",
156
+ "right": {
157
+ "type": "Literal",
158
+ "value": 2
159
+ }
160
+ };
161
+ if (!(typeof this.tests !== "undefined" && this.tests !== null)) {
162
+ this.test = fallthroughTest;
163
+ } else {
164
+ this.test = {
165
+ "type": "LogicalExpression",
166
+ "operator": "&&",
167
+ "left": fallthroughTest,
168
+ "right": this.test
169
+ };
170
+ }
171
+ }
172
+ this.alternate = null;
173
+ return this;
174
+ };
175
+ exports.CaseClause = CaseClause;
176
+ return {};
177
+ });
178
+
179
+ //# sourceMappingURL=CaseClause.map
@@ -0,0 +1,26 @@
1
+ $traceurRuntime.ModuleStore.getAnonymousModule(function() {
2
+ "use strict";
3
+ var Node = module.require("./Node").Node;
4
+ function CatchClause(param, body) {
5
+ Node.call(this);
6
+ this.type = "CatchClause";
7
+ this.param = param;
8
+ this.param.parent = this;
9
+ this.body = body;
10
+ this.body.parent = this;
11
+ }
12
+ CatchClause.prototype = Object.create(Node);
13
+ CatchClause.prototype.codegen = function() {
14
+ if (!Node.prototype.codegen.call(this)) {
15
+ return;
16
+ }
17
+ this.param = this.param.codegen(false);
18
+ this.defineIdentifier(this.param);
19
+ this.body = this.body.codegen();
20
+ return this;
21
+ };
22
+ exports.CatchClause = CatchClause;
23
+ return {};
24
+ });
25
+
26
+ //# sourceMappingURL=CatchClause.map
@@ -0,0 +1,19 @@
1
+ $traceurRuntime.ModuleStore.getAnonymousModule(function() {
2
+ "use strict";
3
+ var Node = module.require("./Node").Node;
4
+ function ExportBatchSpecifier() {
5
+ Node.call(this);
6
+ this.type = "ExportBatchSpecifier";
7
+ }
8
+ ExportBatchSpecifier.prototype = Object.create(Node);
9
+ ExportBatchSpecifier.prototype.codegen = function() {
10
+ if (!Node.prototype.codegen.call(this)) {
11
+ return;
12
+ }
13
+ return this;
14
+ };
15
+ exports.ExportBatchSpecifier = ExportBatchSpecifier;
16
+ return {};
17
+ });
18
+
19
+ //# sourceMappingURL=ExportBatchSpecifier.map
@@ -0,0 +1,33 @@
1
+ $traceurRuntime.ModuleStore.getAnonymousModule(function() {
2
+ "use strict";
3
+ var Node = module.require("./Node").Node;
4
+ function ExportSpecifier(id, alias) {
5
+ Node.call(this);
6
+ this.type = "ExportSpecifier";
7
+ this.id = id;
8
+ this.id.parent = this;
9
+ if (typeof alias !== "undefined" && alias !== null) {
10
+ this.alias = alias;
11
+ this.alias.parent = this;
12
+ }
13
+ }
14
+ ExportSpecifier.prototype = Object.create(Node);
15
+ ExportSpecifier.prototype.codegen = function() {
16
+ if (!Node.prototype.codegen.call(this)) {
17
+ return;
18
+ }
19
+ this.id = this.id.codegen(false);
20
+ Object.defineProperty(this, "name", {
21
+ value: typeof this.alias !== "undefined" && this.alias !== null ? {
22
+ "type": "Identifier",
23
+ "name": this.alias.name
24
+ } : null,
25
+ enumerable: true
26
+ });
27
+ return this;
28
+ };
29
+ exports.ExportSpecifier = ExportSpecifier;
30
+ return {};
31
+ });
32
+
33
+ //# sourceMappingURL=ExportSpecifier.map
@@ -0,0 +1,23 @@
1
+ $traceurRuntime.ModuleStore.getAnonymousModule(function() {
2
+ "use strict";
3
+ var Node = module.require("./Node").Node;
4
+ function ImportDefaultSpecifier(id) {
5
+ Node.call(this);
6
+ this.type = "ImportDefaultSpecifier";
7
+ this.id = id;
8
+ this.id.parent = this;
9
+ }
10
+ ImportDefaultSpecifier.prototype = Object.create(Node);
11
+ ImportDefaultSpecifier.prototype.codegen = function() {
12
+ if (!Node.prototype.codegen.call(this)) {
13
+ return;
14
+ }
15
+ this.id = this.id.codegen(false);
16
+ this.getContext().node.defineIdentifier(this.id);
17
+ return this;
18
+ };
19
+ exports.ImportDefaultSpecifier = ImportDefaultSpecifier;
20
+ return {};
21
+ });
22
+
23
+ //# sourceMappingURL=ImportDefaultSpecifier.map
@@ -0,0 +1,23 @@
1
+ $traceurRuntime.ModuleStore.getAnonymousModule(function() {
2
+ "use strict";
3
+ var Node = module.require("./Node").Node;
4
+ function ImportNamespaceSpecifier(id) {
5
+ Node.call(this);
6
+ this.type = "ImportNamespaceSpecifier";
7
+ this.id = id;
8
+ this.id.parent = this;
9
+ }
10
+ ImportNamespaceSpecifier.prototype = Object.create(Node);
11
+ ImportNamespaceSpecifier.prototype.codegen = function() {
12
+ if (!Node.prototype.codegen.call(this)) {
13
+ return;
14
+ }
15
+ this.id = this.id.codegen(false);
16
+ this.getContext().node.defineIdentifier(this.id);
17
+ return this;
18
+ };
19
+ exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;
20
+ return {};
21
+ });
22
+
23
+ //# sourceMappingURL=ImportNamespaceSpecifier.map
@@ -0,0 +1,40 @@
1
+ $traceurRuntime.ModuleStore.getAnonymousModule(function() {
2
+ "use strict";
3
+ var Node = module.require("./Node").Node;
4
+ function ImportSpecifier(id, alias) {
5
+ Node.call(this);
6
+ this.type = "ImportSpecifier";
7
+ if (typeof id !== "undefined" && id !== null) {
8
+ this.id = id;
9
+ this.id.parent = this;
10
+ }
11
+ if (typeof alias !== "undefined" && alias !== null) {
12
+ this.alias = alias;
13
+ this.alias.parent = this;
14
+ }
15
+ }
16
+ ImportSpecifier.prototype = Object.create(Node);
17
+ ImportSpecifier.prototype.codegen = function() {
18
+ if (!Node.prototype.codegen.call(this)) {
19
+ return;
20
+ }
21
+ if (typeof this.id !== "undefined" && this.id !== null) {
22
+ this.id = this.id.codegen(false);
23
+ } else {
24
+ this.type = "ImportNamespaceSpecifier";
25
+ }
26
+ Object.defineProperty(this, "name", {
27
+ value: typeof this.alias !== "undefined" && this.alias !== null ? {
28
+ "type": "Identifier",
29
+ "name": this.alias.name
30
+ } : null,
31
+ enumerable: true
32
+ });
33
+ this.getContext().node.defineIdentifier(this.alias == null ? this.id : this.alias);
34
+ return this;
35
+ };
36
+ exports.ImportSpecifier = ImportSpecifier;
37
+ return {};
38
+ });
39
+
40
+ //# sourceMappingURL=ImportSpecifier.map
@@ -0,0 +1,93 @@
1
+ $traceurRuntime.ModuleStore.getAnonymousModule(function() {
2
+ "use strict";
3
+ function Node() {
4
+ var self = this;
5
+ self.codeGenerated = false;
6
+ self.definedIdentifiers = [];
7
+ Object.defineProperty(self, "parent", {
8
+ value: null,
9
+ writable: true,
10
+ configurable: true,
11
+ enumerable: false
12
+ });
13
+ self.getContext = function() {
14
+ if (!!(self.type === "Program") || !!(self.type === "BlockStatement")) {
15
+ return {
16
+ node: self,
17
+ position: -1
18
+ };
19
+ }
20
+ if (!(typeof self.parent !== "undefined" && self.parent !== null)) {
21
+ return null;
22
+ }
23
+ var context = self.parent.getContext();
24
+ if (!(typeof context !== "undefined" && context !== null)) {
25
+ return null;
26
+ }
27
+ if (context.position === -1) {
28
+ return {
29
+ node: context.node,
30
+ position: context.node.body.indexOf(self)
31
+ };
32
+ } else {
33
+ return context;
34
+ }
35
+ };
36
+ self.defineIdentifier = function(identifier) {
37
+ self.definedIdentifiers.push(identifier);
38
+ };
39
+ self.isIdentifierDefined = function(name) {
40
+ var defined = false;
41
+ for (var $__0 = self.definedIdentifiers[$traceurRuntime.toProperty(Symbol.iterator)](),
42
+ $__1; !($__1 = $__0.next()).done; ) {
43
+ var identifier = $__1.value;
44
+ {
45
+ if (identifier.name === name) {
46
+ defined = true;
47
+ }
48
+ }
49
+ }
50
+ return !!defined || !!(!!self.parent && !!self.parent.isIdentifierDefined(name));
51
+ };
52
+ self.getDefinedIdentifier = function(name) {
53
+ var id;
54
+ for (var $__0 = self.definedIdentifiers[$traceurRuntime.toProperty(Symbol.iterator)](),
55
+ $__1; !($__1 = $__0.next()).done; ) {
56
+ var identifier = $__1.value;
57
+ {
58
+ if (identifier.name === name) {
59
+ id = identifier;
60
+ }
61
+ }
62
+ }
63
+ return typeof id === "undefined" || id == null ? self.parent ? self.parent.getDefinedIdentifier(name) : null : id;
64
+ };
65
+ self.blockWrap = function() {
66
+ if (self.type === "BlockStatement") {
67
+ return self;
68
+ }
69
+ var myParent = self.parent;
70
+ var blockStatement = module.require("./statements/BlockStatement");
71
+ var block = new blockStatement.BlockStatement([self]);
72
+ block.parent = myParent;
73
+ return block;
74
+ };
75
+ }
76
+ Node.prototype.codegen = function() {
77
+ if (this.codeGenerated) {
78
+ return false;
79
+ }
80
+ this.codeGenerated = true;
81
+ return true;
82
+ };
83
+ Node.setErrorManager = function(errorManager) {
84
+ this.errorManager = errorManager;
85
+ };
86
+ Node.getErrorManager = function() {
87
+ return this.errorManager;
88
+ };
89
+ exports.Node = Node;
90
+ return {};
91
+ });
92
+
93
+ //# sourceMappingURL=Node.map