aboutsummaryrefslogtreecommitdiff
path: root/cordova/node_modules/pegjs/examples/arithmetics.pegjs
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/examples/arithmetics.pegjs
parent76f7b3678d3f1ff99c3935a774d420453b0c3cb9 (diff)
downloadWeatherApp-dcdfc94cb39dfe2c39925a0145ffa45e2d061c30.tar.xz
WeatherApp-dcdfc94cb39dfe2c39925a0145ffa45e2d061c30.zip
Initial Upload via GIT
Diffstat (limited to 'cordova/node_modules/pegjs/examples/arithmetics.pegjs')
-rw-r--r--cordova/node_modules/pegjs/examples/arithmetics.pegjs40
1 files changed, 40 insertions, 0 deletions
diff --git a/cordova/node_modules/pegjs/examples/arithmetics.pegjs b/cordova/node_modules/pegjs/examples/arithmetics.pegjs
new file mode 100644
index 0000000..e7bdc44
--- /dev/null
+++ b/cordova/node_modules/pegjs/examples/arithmetics.pegjs
@@ -0,0 +1,40 @@
+/*
+ * Simple Arithmetics Grammar
+ * ==========================
+ *
+ * Accepts expressions like "2 * (3 + 4)" and computes their value.
+ */
+
+Expression
+ = head:Term tail:(_ ("+" / "-") _ Term)* {
+ var result = head, i;
+
+ for (i = 0; i < tail.length; i++) {
+ if (tail[i][1] === "+") { result += tail[i][3]; }
+ if (tail[i][1] === "-") { result -= tail[i][3]; }
+ }
+
+ return result;
+ }
+
+Term
+ = head:Factor tail:(_ ("*" / "/") _ Factor)* {
+ var result = head, i;
+
+ for (i = 0; i < tail.length; i++) {
+ if (tail[i][1] === "*") { result *= tail[i][3]; }
+ if (tail[i][1] === "/") { result /= tail[i][3]; }
+ }
+
+ return result;
+ }
+
+Factor
+ = "(" _ expr:Expression _ ")" { return expr; }
+ / Integer
+
+Integer "integer"
+ = [0-9]+ { return parseInt(text(), 10); }
+
+_ "whitespace"
+ = [ \t\n\r]*