aboutsummaryrefslogtreecommitdiff
path: root/lib/statements.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/statements.js')
-rw-r--r--lib/statements.js74
1 files changed, 0 insertions, 74 deletions
diff --git a/lib/statements.js b/lib/statements.js
deleted file mode 100644
index b59c08f..0000000
--- a/lib/statements.js
+++ /dev/null
@@ -1,74 +0,0 @@
-var getStatementEvaluators = function(evaluate) {
- return {
- 'statement-sequence': function(dataset, children, context) {
- var retval = null;
- children.forEach(function(child) {
- retval = evaluate(child, context);
- });
- return retval;
- },
-
- 'while': function(dataset, children, context) {
- var condition = children[0];
- var body = children[1];
- while (evaluate(condition, context)) {
- evaluate(body, context);
- }
- },
-
- 'compare': function(dataset, children, context) {
- var operator = binaryOperators[dataset.op];
- var lhs = evaluate(children[0], context);
- var rhs = evaluate(children[1], context);
- var result = operator(lhs, rhs);
- return result;
- },
-
- 'variable': function(dataset, children, context) {
- return context[dataset.name];
- },
-
- 'constant': function(dataset, children, context) {
- return stringToType(dataset.val, dataset.type);
- },
-
- 'branch': function(dataset, children, context) {
- var condition = children[0];
- var ifBody = children[1];
-
- // else is optional
- if (children.length > 2) {
- var elseBody = children[2];
- }
-
- if (evaluate(condition, context)) {
- return evaluate(ifBody, context);
- } else if (elseBody) {
- return evaluate(elseBody, context);
- }
- },
-
- 'assign': function(dataset, children, context) {
- context[dataset.name] = evaluate(children[0], context);
- return context[dataset.name];
- },
-
- 'bin-op': function(dataset, children, context) {
- var operator = binaryOperators[dataset.op];
- var lhs = evaluate(children[0], context);
- var rhs = evaluate(children[1], context);
- return operator(lhs, rhs);
- },
-
- 'return': function(dataset, children, context) {
- return evaluate(children[0], context);
- },
-
- 'print': function(dataset, children, context) {
- var args = children.map(function(child) {
- return evaluate(child, context);
- });
- console.log.apply(this, args);
- }
- };
-};