spider-src 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/Gemfile +7 -0
- data/LICENSE.txt +74 -0
- data/README.md +37 -0
- data/Rakefile +25 -0
- data/lib/spider-src/support/spider/.eslintrc +17 -0
- data/lib/spider-src/support/spider/.npmignore +9 -0
- data/lib/spider-src/support/spider/.travis.yml +7 -0
- data/lib/spider-src/support/spider/.yo-rc.json +3 -0
- data/lib/spider-src/support/spider/CHANGELOG.md +64 -0
- data/lib/spider-src/support/spider/Gruntfile.js +97 -0
- data/lib/spider-src/support/spider/Gruntfile.spider +93 -0
- data/lib/spider-src/support/spider/LICENSE +201 -0
- data/lib/spider-src/support/spider/README.md +50 -0
- data/lib/spider-src/support/spider/cli.js +119 -0
- data/lib/spider-src/support/spider/lib/ast/CaseClause.js +179 -0
- data/lib/spider-src/support/spider/lib/ast/CatchClause.js +26 -0
- data/lib/spider-src/support/spider/lib/ast/ExportBatchSpecifier.js +19 -0
- data/lib/spider-src/support/spider/lib/ast/ExportSpecifier.js +33 -0
- data/lib/spider-src/support/spider/lib/ast/ImportDefaultSpecifier.js +23 -0
- data/lib/spider-src/support/spider/lib/ast/ImportNamespaceSpecifier.js +23 -0
- data/lib/spider-src/support/spider/lib/ast/ImportSpecifier.js +40 -0
- data/lib/spider-src/support/spider/lib/ast/Node.js +93 -0
- data/lib/spider-src/support/spider/lib/ast/Parameter.js +229 -0
- data/lib/spider-src/support/spider/lib/ast/Program.js +58 -0
- data/lib/spider-src/support/spider/lib/ast/Property.js +32 -0
- data/lib/spider-src/support/spider/lib/ast/Range.js +257 -0
- data/lib/spider-src/support/spider/lib/ast/VariableDeclarator.js +29 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/ArrayExpression.js +41 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/ArrayPattern.js +45 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/AssignmentExpression.js +29 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/BinaryExpression.js +104 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/CallExpression.js +139 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/ConditionalExpression.js +31 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/CurryCallExpression.js +102 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/ExistentialExpression.js +83 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/ForInExpression.js +116 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/FunctionExpression.js +157 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/InExpression.js +99 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/LogicalExpression.js +50 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/MemberExpression.js +43 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/NewExpression.js +46 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/NullCheckCallExpression.js +132 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/NullCoalescingExpression.js +114 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/NullPropagatingExpression.js +161 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/ObjectExpression.js +39 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/ObjectPattern.js +49 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/RangeMemberExpression.js +157 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/SplatExpression.js +48 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/SuperExpression.js +170 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/ThisExpression.js +22 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/UnaryExpression.js +147 -0
- data/lib/spider-src/support/spider/lib/ast/expressions/UpdateExpression.js +26 -0
- data/lib/spider-src/support/spider/lib/ast/literals/BooleanLiteral.js +24 -0
- data/lib/spider-src/support/spider/lib/ast/literals/Identifier.js +60 -0
- data/lib/spider-src/support/spider/lib/ast/literals/NullLiteral.js +24 -0
- data/lib/spider-src/support/spider/lib/ast/literals/NumberLiteral.js +24 -0
- data/lib/spider-src/support/spider/lib/ast/literals/RegularExpressionLiteral.js +25 -0
- data/lib/spider-src/support/spider/lib/ast/literals/StringLiteral.js +90 -0
- data/lib/spider-src/support/spider/lib/ast/literals/UndefinedLiteral.js +30 -0
- data/lib/spider-src/support/spider/lib/ast/statements/BlockStatement.js +47 -0
- data/lib/spider-src/support/spider/lib/ast/statements/BreakStatement.js +19 -0
- data/lib/spider-src/support/spider/lib/ast/statements/ContinueStatement.js +19 -0
- data/lib/spider-src/support/spider/lib/ast/statements/DebuggerStatement.js +19 -0
- data/lib/spider-src/support/spider/lib/ast/statements/DoWhileStatement.js +25 -0
- data/lib/spider-src/support/spider/lib/ast/statements/ExportDeclarationStatement.js +51 -0
- data/lib/spider-src/support/spider/lib/ast/statements/ExpressionStatement.js +22 -0
- data/lib/spider-src/support/spider/lib/ast/statements/FallthroughStatement.js +74 -0
- data/lib/spider-src/support/spider/lib/ast/statements/ForInStatement.js +79 -0
- data/lib/spider-src/support/spider/lib/ast/statements/ForOfStatement.js +98 -0
- data/lib/spider-src/support/spider/lib/ast/statements/ForStatement.js +43 -0
- data/lib/spider-src/support/spider/lib/ast/statements/FunctionDeclarationStatement.js +104 -0
- data/lib/spider-src/support/spider/lib/ast/statements/GoStatement.js +41 -0
- data/lib/spider-src/support/spider/lib/ast/statements/IfStatement.js +32 -0
- data/lib/spider-src/support/spider/lib/ast/statements/ImportDeclarationStatement.js +40 -0
- data/lib/spider-src/support/spider/lib/ast/statements/PushStatement.js +37 -0
- data/lib/spider-src/support/spider/lib/ast/statements/ReturnStatement.js +26 -0
- data/lib/spider-src/support/spider/lib/ast/statements/SwitchStatement.js +159 -0
- data/lib/spider-src/support/spider/lib/ast/statements/ThrowStatement.js +22 -0
- data/lib/spider-src/support/spider/lib/ast/statements/TryStatement.js +36 -0
- data/lib/spider-src/support/spider/lib/ast/statements/UntilStatement.js +31 -0
- data/lib/spider-src/support/spider/lib/ast/statements/UseStatement.js +49 -0
- data/lib/spider-src/support/spider/lib/ast/statements/VariableDeclarationStatement.js +36 -0
- data/lib/spider-src/support/spider/lib/ast/statements/WhileStatement.js +25 -0
- data/lib/spider-src/support/spider/lib/ast.js +16 -0
- data/lib/spider-src/support/spider/lib/parser.js +14878 -0
- data/lib/spider-src/support/spider/lib/spider.js +217 -0
- data/lib/spider-src/support/spider/package.json +61 -0
- data/lib/spider-src/support/spider/spider-script.js +6 -0
- data/lib/spider-src/support/spider/src/ast/CaseClause.spider +179 -0
- data/lib/spider-src/support/spider/src/ast/CatchClause.spider +30 -0
- data/lib/spider-src/support/spider/src/ast/ExportBatchSpecifier.spider +19 -0
- data/lib/spider-src/support/spider/src/ast/ExportSpecifier.spider +37 -0
- data/lib/spider-src/support/spider/src/ast/ImportDefaultSpecifier.spider +25 -0
- data/lib/spider-src/support/spider/src/ast/ImportNamespaceSpecifier.spider +25 -0
- data/lib/spider-src/support/spider/src/ast/ImportSpecifier.spider +44 -0
- data/lib/spider-src/support/spider/src/ast/Node.spider +104 -0
- data/lib/spider-src/support/spider/src/ast/Parameter.spider +233 -0
- data/lib/spider-src/support/spider/src/ast/Program.spider +109 -0
- data/lib/spider-src/support/spider/src/ast/Property.spider +36 -0
- data/lib/spider-src/support/spider/src/ast/Range.spider +291 -0
- data/lib/spider-src/support/spider/src/ast/VariableDeclarator.spider +33 -0
- data/lib/spider-src/support/spider/src/ast/expressions/ArrayExpression.spider +32 -0
- data/lib/spider-src/support/spider/src/ast/expressions/ArrayPattern.spider +37 -0
- data/lib/spider-src/support/spider/src/ast/expressions/AssignmentExpression.spider +34 -0
- data/lib/spider-src/support/spider/src/ast/expressions/BinaryExpression.spider +125 -0
- data/lib/spider-src/support/spider/src/ast/expressions/CallExpression.spider +149 -0
- data/lib/spider-src/support/spider/src/ast/expressions/ConditionalExpression.spider +34 -0
- data/lib/spider-src/support/spider/src/ast/expressions/CurryCallExpression.spider +109 -0
- data/lib/spider-src/support/spider/src/ast/expressions/ExistentialExpression.spider +102 -0
- data/lib/spider-src/support/spider/src/ast/expressions/ForInExpression.spider +140 -0
- data/lib/spider-src/support/spider/src/ast/expressions/FunctionExpression.spider +183 -0
- data/lib/spider-src/support/spider/src/ast/expressions/InExpression.spider +114 -0
- data/lib/spider-src/support/spider/src/ast/expressions/LogicalExpression.spider +62 -0
- data/lib/spider-src/support/spider/src/ast/expressions/MemberExpression.spider +57 -0
- data/lib/spider-src/support/spider/src/ast/expressions/NewExpression.spider +40 -0
- data/lib/spider-src/support/spider/src/ast/expressions/NullCheckCallExpression.spider +151 -0
- data/lib/spider-src/support/spider/src/ast/expressions/NullCoalescingExpression.spider +151 -0
- data/lib/spider-src/support/spider/src/ast/expressions/NullPropagatingExpression.spider +190 -0
- data/lib/spider-src/support/spider/src/ast/expressions/ObjectExpression.spider +30 -0
- data/lib/spider-src/support/spider/src/ast/expressions/ObjectPattern.spider +42 -0
- data/lib/spider-src/support/spider/src/ast/expressions/RangeMemberExpression.spider +179 -0
- data/lib/spider-src/support/spider/src/ast/expressions/SplatExpression.spider +49 -0
- data/lib/spider-src/support/spider/src/ast/expressions/SuperExpression.spider +235 -0
- data/lib/spider-src/support/spider/src/ast/expressions/ThisExpression.spider +21 -0
- data/lib/spider-src/support/spider/src/ast/expressions/UnaryExpression.spider +158 -0
- data/lib/spider-src/support/spider/src/ast/expressions/UpdateExpression.spider +28 -0
- data/lib/spider-src/support/spider/src/ast/literals/BooleanLiteral.spider +23 -0
- data/lib/spider-src/support/spider/src/ast/literals/Identifier.spider +68 -0
- data/lib/spider-src/support/spider/src/ast/literals/NullLiteral.spider +23 -0
- data/lib/spider-src/support/spider/src/ast/literals/NumberLiteral.spider +23 -0
- data/lib/spider-src/support/spider/src/ast/literals/RegularExpressionLiteral.spider +24 -0
- data/lib/spider-src/support/spider/src/ast/literals/StringLiteral.spider +91 -0
- data/lib/spider-src/support/spider/src/ast/literals/UndefinedLiteral.spider +30 -0
- data/lib/spider-src/support/spider/src/ast/statements/BlockStatement.spider +45 -0
- data/lib/spider-src/support/spider/src/ast/statements/BreakStatement.spider +19 -0
- data/lib/spider-src/support/spider/src/ast/statements/ContinueStatement.spider +19 -0
- data/lib/spider-src/support/spider/src/ast/statements/DebuggerStatement.spider +19 -0
- data/lib/spider-src/support/spider/src/ast/statements/DoWhileStatement.spider +28 -0
- data/lib/spider-src/support/spider/src/ast/statements/ExportDeclarationStatement.spider +46 -0
- data/lib/spider-src/support/spider/src/ast/statements/ExpressionStatement.spider +22 -0
- data/lib/spider-src/support/spider/src/ast/statements/FallthroughStatement.spider +85 -0
- data/lib/spider-src/support/spider/src/ast/statements/ForInStatement.spider +92 -0
- data/lib/spider-src/support/spider/src/ast/statements/ForOfStatement.spider +117 -0
- data/lib/spider-src/support/spider/src/ast/statements/ForStatement.spider +51 -0
- data/lib/spider-src/support/spider/src/ast/statements/FunctionDeclarationStatement.spider +115 -0
- data/lib/spider-src/support/spider/src/ast/statements/GoStatement.spider +44 -0
- data/lib/spider-src/support/spider/src/ast/statements/IfStatement.spider +38 -0
- data/lib/spider-src/support/spider/src/ast/statements/ImportDeclarationStatement.spider +33 -0
- data/lib/spider-src/support/spider/src/ast/statements/PushStatement.spider +40 -0
- data/lib/spider-src/support/spider/src/ast/statements/ReturnStatement.spider +28 -0
- data/lib/spider-src/support/spider/src/ast/statements/SwitchStatement.spider +161 -0
- data/lib/spider-src/support/spider/src/ast/statements/ThrowStatement.spider +23 -0
- data/lib/spider-src/support/spider/src/ast/statements/TryStatement.spider +42 -0
- data/lib/spider-src/support/spider/src/ast/statements/UntilStatement.spider +36 -0
- data/lib/spider-src/support/spider/src/ast/statements/UseStatement.spider +62 -0
- data/lib/spider-src/support/spider/src/ast/statements/VariableDeclarationStatement.spider +34 -0
- data/lib/spider-src/support/spider/src/ast/statements/WhileStatement.spider +28 -0
- data/lib/spider-src/support/spider/src/ast.spider +80 -0
- data/lib/spider-src/support/spider/src/spider.pegjs +1434 -0
- data/lib/spider-src/support/spider/src/spider.spider +276 -0
- data/lib/spider-src/support/spider/test/spider_test.js +1787 -0
- data/lib/spider-src/version.rb +5 -0
- data/lib/spider-src.rb +37 -0
- data/spider-src.gemspec +24 -0
- data/test/test_spider_src.rb +33 -0
- 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
|