diff options
| author | Kumar Priyansh <[email protected]> | 2019-01-19 12:37:14 +0530 |
|---|---|---|
| committer | Kumar Priyansh <[email protected]> | 2019-01-19 12:37:14 +0530 |
| commit | dcdfc94cb39dfe2c39925a0145ffa45e2d061c30 (patch) | |
| tree | 4f6379d955555b298c0e7b83a67e264240ee5614 /cordova/node_modules/pegjs/lib/compiler/asts.js | |
| parent | 76f7b3678d3f1ff99c3935a774d420453b0c3cb9 (diff) | |
| download | WeatherApp-dcdfc94cb39dfe2c39925a0145ffa45e2d061c30.tar.xz WeatherApp-dcdfc94cb39dfe2c39925a0145ffa45e2d061c30.zip | |
Initial Upload via GIT
Diffstat (limited to 'cordova/node_modules/pegjs/lib/compiler/asts.js')
| -rw-r--r-- | cordova/node_modules/pegjs/lib/compiler/asts.js | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/cordova/node_modules/pegjs/lib/compiler/asts.js b/cordova/node_modules/pegjs/lib/compiler/asts.js new file mode 100644 index 0000000..7dac649 --- /dev/null +++ b/cordova/node_modules/pegjs/lib/compiler/asts.js @@ -0,0 +1,65 @@ +"use strict"; + +var arrays = require("../utils/arrays"), + visitor = require("./visitor"); + +/* AST utilities. */ +var asts = { + findRule: function(ast, name) { + return arrays.find(ast.rules, function(r) { return r.name === name; }); + }, + + indexOfRule: function(ast, name) { + return arrays.indexOf(ast.rules, function(r) { return r.name === name; }); + }, + + alwaysConsumesOnSuccess: function(ast, node) { + function consumesTrue() { return true; } + function consumesFalse() { return false; } + + function consumesExpression(node) { + return consumes(node.expression); + } + + var consumes = visitor.build({ + rule: consumesExpression, + named: consumesExpression, + + choice: function(node) { + return arrays.every(node.alternatives, consumes); + }, + + action: consumesExpression, + + sequence: function(node) { + return arrays.some(node.elements, consumes); + }, + + labeled: consumesExpression, + text: consumesExpression, + simple_and: consumesFalse, + simple_not: consumesFalse, + optional: consumesFalse, + zero_or_more: consumesFalse, + one_or_more: consumesExpression, + group: consumesExpression, + semantic_and: consumesFalse, + semantic_not: consumesFalse, + + rule_ref: function(node) { + return consumes(asts.findRule(ast, node.name)); + }, + + literal: function(node) { + return node.value !== ""; + }, + + "class": consumesTrue, + any: consumesTrue + }); + + return consumes(node); + } +}; + +module.exports = asts; |
