diff --git a/examples/json.pegjs b/examples/json.pegjs index f2a34b1..7bbbabd 100644 --- a/examples/json.pegjs +++ b/examples/json.pegjs @@ -65,33 +65,33 @@ char / "\\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)); + / "\\u" digits:$(hexDigit hexDigit hexDigit hexDigit) { + return String.fromCharCode(parseInt("0x" + digits)); } 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_); } + = parts:$(int frac exp) _ { return parseFloat(parts); } + / parts:$(int frac) _ { return parseFloat(parts); } + / parts:$(int exp) _ { return parseFloat(parts); } + / parts:$(int) _ { return parseFloat(parts); } int - = digit19:digit19 digits:digits { return digit19 + digits; } - / digit:digit - / "-" digit19:digit19 digits:digits { return "-" + digit19 + digits; } - / "-" digit:digit { return "-" + digit; } + = digit19 digits + / digit + / "-" digit19 digits + / "-" digit frac - = "." digits:digits { return "." + digits; } + = "." digits exp - = e:e digits:digits { return e + digits; } + = e digits digits - = digits:digit+ { return digits.join(""); } + = digit+ e - = e:[eE] sign:[+-]? { return e + sign; } + = [eE] [+-]? /* * The following rules are not present in the original JSON gramar, but they are