|
|
|
@ -203,24 +203,17 @@ NumericLiteral "number"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DecimalLiteral
|
|
|
|
|
= before:DecimalIntegerLiteral
|
|
|
|
|
"."
|
|
|
|
|
after:DecimalDigits?
|
|
|
|
|
exponent:ExponentPart? {
|
|
|
|
|
return parseFloat(before + "." + after + exponent);
|
|
|
|
|
}
|
|
|
|
|
/ "." after:DecimalDigits exponent:ExponentPart? {
|
|
|
|
|
return parseFloat("." + after + exponent);
|
|
|
|
|
}
|
|
|
|
|
/ before:DecimalIntegerLiteral exponent:ExponentPart? {
|
|
|
|
|
return parseFloat(before + exponent);
|
|
|
|
|
= parts:$(DecimalIntegerLiteral "." DecimalDigits? ExponentPart?) {
|
|
|
|
|
return parseFloat(parts);
|
|
|
|
|
}
|
|
|
|
|
/ parts:$("." DecimalDigits ExponentPart?) { return parseFloat(parts); }
|
|
|
|
|
/ parts:$(DecimalIntegerLiteral ExponentPart?) { return parseFloat(parts); }
|
|
|
|
|
|
|
|
|
|
DecimalIntegerLiteral
|
|
|
|
|
= "0" / digit:NonZeroDigit digits:DecimalDigits? { return digit + digits; }
|
|
|
|
|
= "0" / NonZeroDigit DecimalDigits?
|
|
|
|
|
|
|
|
|
|
DecimalDigits
|
|
|
|
|
= digits:DecimalDigit+ { return digits.join(""); }
|
|
|
|
|
= DecimalDigit+
|
|
|
|
|
|
|
|
|
|
DecimalDigit
|
|
|
|
|
= [0-9]
|
|
|
|
@ -229,18 +222,16 @@ NonZeroDigit
|
|
|
|
|
= [1-9]
|
|
|
|
|
|
|
|
|
|
ExponentPart
|
|
|
|
|
= indicator:ExponentIndicator integer:SignedInteger {
|
|
|
|
|
return indicator + integer;
|
|
|
|
|
}
|
|
|
|
|
= ExponentIndicator SignedInteger
|
|
|
|
|
|
|
|
|
|
ExponentIndicator
|
|
|
|
|
= [eE]
|
|
|
|
|
|
|
|
|
|
SignedInteger
|
|
|
|
|
= sign:[-+]? digits:DecimalDigits { return sign + digits; }
|
|
|
|
|
= [-+]? DecimalDigits
|
|
|
|
|
|
|
|
|
|
HexIntegerLiteral
|
|
|
|
|
= "0" [xX] digits:HexDigit+ { return parseInt("0x" + digits.join("")); }
|
|
|
|
|
= "0" [xX] digits:$HexDigit+ { return parseInt("0x" + digits); }
|
|
|
|
|
|
|
|
|
|
HexDigit
|
|
|
|
|
= [0-9a-fA-F]
|
|
|
|
@ -300,13 +291,13 @@ EscapeCharacter
|
|
|
|
|
/ "u"
|
|
|
|
|
|
|
|
|
|
HexEscapeSequence
|
|
|
|
|
= "x" h1:HexDigit h2:HexDigit {
|
|
|
|
|
return String.fromCharCode(parseInt("0x" + h1 + h2));
|
|
|
|
|
= "x" digits:$(HexDigit HexDigit) {
|
|
|
|
|
return String.fromCharCode(parseInt("0x" + digits));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
UnicodeEscapeSequence
|
|
|
|
|
= "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));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
RegularExpressionLiteral "regular expression"
|
|
|
|
|