aboutsummaryrefslogtreecommitdiff
path: root/cordova/node_modules/pegjs/lib/compiler/asts.js
diff options
context:
space:
mode:
authorKumar Priyansh <[email protected]>2019-01-19 12:37:14 +0530
committerKumar Priyansh <[email protected]>2019-01-19 12:37:14 +0530
commitdcdfc94cb39dfe2c39925a0145ffa45e2d061c30 (patch)
tree4f6379d955555b298c0e7b83a67e264240ee5614 /cordova/node_modules/pegjs/lib/compiler/asts.js
parent76f7b3678d3f1ff99c3935a774d420453b0c3cb9 (diff)
downloadWeatherApp-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.js65
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;