cordova-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From shaz...@apache.org
Subject [03/51] [partial] ios commit: CB-9827 Implement and expose PlatformApi for iOS
Date Thu, 03 Dec 2015 02:33:35 GMT
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/26cca47e/bin/node_modules/xcode/node_modules/pegjs/examples/json.pegjs
----------------------------------------------------------------------
diff --git a/bin/node_modules/xcode/node_modules/pegjs/examples/json.pegjs b/bin/node_modules/xcode/node_modules/pegjs/examples/json.pegjs
new file mode 100644
index 0000000..f2a34b1
--- /dev/null
+++ b/bin/node_modules/xcode/node_modules/pegjs/examples/json.pegjs
@@ -0,0 +1,120 @@
+/* JSON parser based on the grammar described at http://json.org/. */
+
+/* ===== Syntactical Elements ===== */
+
+start
+  = _ object:object { return object; }
+
+object
+  = "{" _ "}" _                 { return {};      }
+  / "{" _ members:members "}" _ { return members; }
+
+members
+  = head:pair tail:("," _ pair)* {
+      var result = {};
+      result[head[0]] = head[1];
+      for (var i = 0; i < tail.length; i++) {
+        result[tail[i][2][0]] = tail[i][2][1];
+      }
+      return result;
+    }
+
+pair
+  = name:string ":" _ value:value { return [name, value]; }
+
+array
+  = "[" _ "]" _                   { return [];       }
+  / "[" _ elements:elements "]" _ { return elements; }
+
+elements
+  = head:value tail:("," _ value)* {
+      var result = [head];
+      for (var i = 0; i < tail.length; i++) {
+        result.push(tail[i][2]);
+      }
+      return result;
+    }
+
+value
+  = string
+  / number
+  / object
+  / array
+  / "true" _  { return true;   }
+  / "false" _ { return false;  }
+  // FIXME: We can't return null here because that would mean parse failure.
+  / "null" _  { return "null"; }
+
+/* ===== Lexical Elements ===== */
+
+string "string"
+  = '"' '"' _             { return "";    }
+  / '"' chars:chars '"' _ { return chars; }
+
+chars
+  = chars:char+ { return chars.join(""); }
+
+char
+  // In the original JSON grammar: "any-Unicode-character-except-"-or-\-or-control-character"
+  = [^"\\\0-\x1F\x7f]
+  / '\\"'  { return '"';  }
+  / "\\\\" { return "\\"; }
+  / "\\/"  { return "/";  }
+  / "\\b"  { return "\b"; }
+  / "\\f"  { return "\f"; }
+  / "\\n"  { return "\n"; }
+  / "\\r"  { return "\r"; }
+  / "\\t"  { return "\t"; }
+  / "\\u" h1:hexDigit h2:hexDigit h3:hexDigit h4:hexDigit {
+      return String.fromCharCode(parseInt("0x" + h1 + h2 + h3 + h4));
+    }
+
+number "number"
+  = int_:int frac:frac exp:exp _ { return parseFloat(int_ + frac + exp); }
+  / int_:int frac:frac _         { return parseFloat(int_ + frac);       }
+  / int_:int exp:exp _           { return parseFloat(int_ + exp);        }
+  / int_:int _                   { return parseFloat(int_);              }
+
+int
+  = digit19:digit19 digits:digits     { return digit19 + digits;       }
+  / digit:digit
+  / "-" digit19:digit19 digits:digits { return "-" + digit19 + digits; }
+  / "-" digit:digit                   { return "-" + digit;            }
+
+frac
+  = "." digits:digits { return "." + digits; }
+
+exp
+  = e:e digits:digits { return e + digits; }
+
+digits
+  = digits:digit+ { return digits.join(""); }
+
+e
+  = e:[eE] sign:[+-]? { return e + sign; }
+
+/*
+ * The following rules are not present in the original JSON gramar, but they are
+ * assumed to exist implicitly.
+ *
+ * FIXME: Define them according to ECMA-262, 5th ed.
+ */
+
+digit
+  = [0-9]
+
+digit19
+  = [1-9]
+
+hexDigit
+  = [0-9a-fA-F]
+
+/* ===== Whitespace ===== */
+
+_ "whitespace"
+  = whitespace*
+
+// Whitespace is undefined in the original JSON grammar, so I assume a simple
+// conventional definition consistent with ECMA-262, 5th ed.
+whitespace
+  = [ \t\n\r]


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


Mime
View raw message