Improved support for Java 7 numeric literals
This commit is contained in:
parent
9bd3e965ef
commit
f5ed71d2b9
|
@ -500,7 +500,7 @@ qualifiedName
|
|||
;
|
||||
|
||||
literal
|
||||
: integerLiteral
|
||||
: IntegerLiteral
|
||||
| FloatingPointLiteral
|
||||
| CharacterLiteral
|
||||
| StringLiteral
|
||||
|
@ -508,12 +508,6 @@ literal
|
|||
| 'null'
|
||||
;
|
||||
|
||||
integerLiteral
|
||||
: HexLiteral
|
||||
| OctalLiteral
|
||||
| DecimalLiteral
|
||||
;
|
||||
|
||||
// ANNOTATIONS
|
||||
|
||||
annotations
|
||||
|
@ -880,37 +874,216 @@ VOID : 'void';
|
|||
VOLATILE : 'volatile';
|
||||
WHILE : 'while';
|
||||
|
||||
HexLiteral : '0' ('x'|'X') HexDigit+ IntegerTypeSuffix? ;
|
||||
// §3.10.1 Integer Literals
|
||||
|
||||
DecimalLiteral : ('0' | '1'..'9' '0'..'9'*) IntegerTypeSuffix? ;
|
||||
|
||||
OctalLiteral : '0' ('0'..'7')+ IntegerTypeSuffix? ;
|
||||
IntegerLiteral
|
||||
: DecimalIntegerLiteral
|
||||
| HexIntegerLiteral
|
||||
| OctalIntegerLiteral
|
||||
| BinaryIntegerLiteral
|
||||
;
|
||||
|
||||
fragment
|
||||
HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
|
||||
DecimalIntegerLiteral
|
||||
: DecimalNumeral IntegerTypeSuffix?
|
||||
;
|
||||
|
||||
fragment
|
||||
IntegerTypeSuffix : ('l'|'L') ;
|
||||
HexIntegerLiteral
|
||||
: HexNumeral IntegerTypeSuffix?
|
||||
;
|
||||
|
||||
fragment
|
||||
OctalIntegerLiteral
|
||||
: OctalNumeral IntegerTypeSuffix?
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryIntegerLiteral
|
||||
: BinaryNumeral IntegerTypeSuffix?
|
||||
;
|
||||
|
||||
fragment
|
||||
IntegerTypeSuffix
|
||||
: [lL]
|
||||
;
|
||||
|
||||
fragment
|
||||
DecimalNumeral
|
||||
: '0'
|
||||
| NonZeroDigit (Digits? | Underscores Digits)
|
||||
;
|
||||
|
||||
fragment
|
||||
Digits
|
||||
: Digit (DigitsAndUnderscores? Digit)?
|
||||
;
|
||||
|
||||
fragment
|
||||
Digit
|
||||
: '0'
|
||||
| NonZeroDigit
|
||||
;
|
||||
|
||||
fragment
|
||||
NonZeroDigit
|
||||
: [1-9]
|
||||
;
|
||||
|
||||
fragment
|
||||
DigitsAndUnderscores
|
||||
: DigitOrUnderscore+
|
||||
;
|
||||
|
||||
fragment
|
||||
DigitOrUnderscore
|
||||
: Digit
|
||||
| '_'
|
||||
;
|
||||
|
||||
fragment
|
||||
Underscores
|
||||
: '_'+
|
||||
;
|
||||
|
||||
fragment
|
||||
HexNumeral
|
||||
: '0' [xX] HexDigits
|
||||
;
|
||||
|
||||
fragment
|
||||
HexDigits
|
||||
: HexDigit (HexDigitsAndUnderscores? HexDigit)?
|
||||
;
|
||||
|
||||
fragment
|
||||
HexDigit
|
||||
: [0-9a-fA-F]
|
||||
;
|
||||
|
||||
fragment
|
||||
HexDigitsAndUnderscores
|
||||
: HexDigitOrUnderscore+
|
||||
;
|
||||
|
||||
fragment
|
||||
HexDigitOrUnderscore
|
||||
: HexDigit
|
||||
| '_'
|
||||
;
|
||||
|
||||
fragment
|
||||
OctalNumeral
|
||||
: '0' Underscores? OctalDigits
|
||||
;
|
||||
|
||||
fragment
|
||||
OctalDigits
|
||||
: OctalDigit (OctalDigitsAndUnderscores? OctalDigit)?
|
||||
;
|
||||
|
||||
fragment
|
||||
OctalDigit
|
||||
: [0-7]
|
||||
;
|
||||
|
||||
fragment
|
||||
OctalDigitsAndUnderscores
|
||||
: OctalDigitOrUnderscore+
|
||||
;
|
||||
|
||||
fragment
|
||||
OctalDigitOrUnderscore
|
||||
: OctalDigit
|
||||
| '_'
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryNumeral
|
||||
: '0' [bB] BinaryDigits
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryDigits
|
||||
: BinaryDigit (BinaryDigitsAndUnderscores? BinaryDigit)?
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryDigit
|
||||
: [01]
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryDigitsAndUnderscores
|
||||
: BinaryDigitOrUnderscore+
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryDigitOrUnderscore
|
||||
: BinaryDigit
|
||||
| '_'
|
||||
;
|
||||
|
||||
// §3.10.2 Floating-Point Literals
|
||||
|
||||
FloatingPointLiteral
|
||||
: ('0'..'9')+ '.' ('0'..'9')* Exponent? FloatTypeSuffix?
|
||||
| '.' ('0'..'9')+ Exponent? FloatTypeSuffix?
|
||||
| ('0'..'9')+ Exponent FloatTypeSuffix?
|
||||
| ('0'..'9')+ FloatTypeSuffix
|
||||
| '0' ('x'|'X')
|
||||
( HexDigit+ ('.' HexDigit*)? HexExponent FloatTypeSuffix?
|
||||
| '.' HexDigit+ HexExponent FloatTypeSuffix?
|
||||
)
|
||||
;
|
||||
: DecimalFloatingPointLiteral
|
||||
| HexadecimalFloatingPointLiteral
|
||||
;
|
||||
|
||||
fragment
|
||||
Exponent : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
|
||||
DecimalFloatingPointLiteral
|
||||
: Digits '.' Digits? ExponentPart? FloatTypeSuffix?
|
||||
| '.' Digits ExponentPart? FloatTypeSuffix?
|
||||
| Digits ExponentPart FloatTypeSuffix?
|
||||
| Digits FloatTypeSuffix
|
||||
;
|
||||
|
||||
fragment
|
||||
HexExponent : ('p'|'P') ('+'|'-')? ('0'..'9')+ ;
|
||||
ExponentPart
|
||||
: ExponentIndicator SignedInteger
|
||||
;
|
||||
|
||||
fragment
|
||||
FloatTypeSuffix : ('f'|'F'|'d'|'D') ;
|
||||
ExponentIndicator
|
||||
: [eE]
|
||||
;
|
||||
|
||||
fragment
|
||||
SignedInteger
|
||||
: Sign? Digits
|
||||
;
|
||||
|
||||
fragment
|
||||
Sign
|
||||
: [+-]
|
||||
;
|
||||
|
||||
fragment
|
||||
FloatTypeSuffix
|
||||
: [fFdD]
|
||||
;
|
||||
|
||||
fragment
|
||||
HexadecimalFloatingPointLiteral
|
||||
: HexSignificand BinaryExponent FloatTypeSuffix?
|
||||
;
|
||||
|
||||
fragment
|
||||
HexSignificand
|
||||
: HexNumeral '.'?
|
||||
| '0' [xX] HexDigits? '.' HexDigits
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryExponent
|
||||
: BinaryExponentIndicator SignedInteger
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryExponentIndicator
|
||||
: [pP]
|
||||
;
|
||||
|
||||
// §3.10.3 Boolean Literals
|
||||
|
||||
|
|
|
@ -497,7 +497,7 @@ qualifiedName
|
|||
;
|
||||
|
||||
literal
|
||||
: integerLiteral
|
||||
: IntegerLiteral
|
||||
| FloatingPointLiteral
|
||||
| CharacterLiteral
|
||||
| StringLiteral
|
||||
|
@ -505,12 +505,6 @@ literal
|
|||
| 'null'
|
||||
;
|
||||
|
||||
integerLiteral
|
||||
: HexLiteral
|
||||
| OctalLiteral
|
||||
| DecimalLiteral
|
||||
;
|
||||
|
||||
// ANNOTATIONS
|
||||
|
||||
annotations
|
||||
|
@ -982,37 +976,216 @@ VOID : 'void';
|
|||
VOLATILE : 'volatile';
|
||||
WHILE : 'while';
|
||||
|
||||
HexLiteral : '0' ('x'|'X') HexDigit+ IntegerTypeSuffix? ;
|
||||
// §3.10.1 Integer Literals
|
||||
|
||||
DecimalLiteral : ('0' | '1'..'9' '0'..'9'*) IntegerTypeSuffix? ;
|
||||
|
||||
OctalLiteral : '0' ('0'..'7')+ IntegerTypeSuffix? ;
|
||||
IntegerLiteral
|
||||
: DecimalIntegerLiteral
|
||||
| HexIntegerLiteral
|
||||
| OctalIntegerLiteral
|
||||
| BinaryIntegerLiteral
|
||||
;
|
||||
|
||||
fragment
|
||||
HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
|
||||
DecimalIntegerLiteral
|
||||
: DecimalNumeral IntegerTypeSuffix?
|
||||
;
|
||||
|
||||
fragment
|
||||
IntegerTypeSuffix : ('l'|'L') ;
|
||||
HexIntegerLiteral
|
||||
: HexNumeral IntegerTypeSuffix?
|
||||
;
|
||||
|
||||
fragment
|
||||
OctalIntegerLiteral
|
||||
: OctalNumeral IntegerTypeSuffix?
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryIntegerLiteral
|
||||
: BinaryNumeral IntegerTypeSuffix?
|
||||
;
|
||||
|
||||
fragment
|
||||
IntegerTypeSuffix
|
||||
: [lL]
|
||||
;
|
||||
|
||||
fragment
|
||||
DecimalNumeral
|
||||
: '0'
|
||||
| NonZeroDigit (Digits? | Underscores Digits)
|
||||
;
|
||||
|
||||
fragment
|
||||
Digits
|
||||
: Digit (DigitsAndUnderscores? Digit)?
|
||||
;
|
||||
|
||||
fragment
|
||||
Digit
|
||||
: '0'
|
||||
| NonZeroDigit
|
||||
;
|
||||
|
||||
fragment
|
||||
NonZeroDigit
|
||||
: [1-9]
|
||||
;
|
||||
|
||||
fragment
|
||||
DigitsAndUnderscores
|
||||
: DigitOrUnderscore+
|
||||
;
|
||||
|
||||
fragment
|
||||
DigitOrUnderscore
|
||||
: Digit
|
||||
| '_'
|
||||
;
|
||||
|
||||
fragment
|
||||
Underscores
|
||||
: '_'+
|
||||
;
|
||||
|
||||
fragment
|
||||
HexNumeral
|
||||
: '0' [xX] HexDigits
|
||||
;
|
||||
|
||||
fragment
|
||||
HexDigits
|
||||
: HexDigit (HexDigitsAndUnderscores? HexDigit)?
|
||||
;
|
||||
|
||||
fragment
|
||||
HexDigit
|
||||
: [0-9a-fA-F]
|
||||
;
|
||||
|
||||
fragment
|
||||
HexDigitsAndUnderscores
|
||||
: HexDigitOrUnderscore+
|
||||
;
|
||||
|
||||
fragment
|
||||
HexDigitOrUnderscore
|
||||
: HexDigit
|
||||
| '_'
|
||||
;
|
||||
|
||||
fragment
|
||||
OctalNumeral
|
||||
: '0' Underscores? OctalDigits
|
||||
;
|
||||
|
||||
fragment
|
||||
OctalDigits
|
||||
: OctalDigit (OctalDigitsAndUnderscores? OctalDigit)?
|
||||
;
|
||||
|
||||
fragment
|
||||
OctalDigit
|
||||
: [0-7]
|
||||
;
|
||||
|
||||
fragment
|
||||
OctalDigitsAndUnderscores
|
||||
: OctalDigitOrUnderscore+
|
||||
;
|
||||
|
||||
fragment
|
||||
OctalDigitOrUnderscore
|
||||
: OctalDigit
|
||||
| '_'
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryNumeral
|
||||
: '0' [bB] BinaryDigits
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryDigits
|
||||
: BinaryDigit (BinaryDigitsAndUnderscores? BinaryDigit)?
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryDigit
|
||||
: [01]
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryDigitsAndUnderscores
|
||||
: BinaryDigitOrUnderscore+
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryDigitOrUnderscore
|
||||
: BinaryDigit
|
||||
| '_'
|
||||
;
|
||||
|
||||
// §3.10.2 Floating-Point Literals
|
||||
|
||||
FloatingPointLiteral
|
||||
: ('0'..'9')+ '.' ('0'..'9')* Exponent? FloatTypeSuffix?
|
||||
| '.' ('0'..'9')+ Exponent? FloatTypeSuffix?
|
||||
| ('0'..'9')+ Exponent FloatTypeSuffix?
|
||||
| ('0'..'9')+ FloatTypeSuffix
|
||||
| '0' ('x'|'X')
|
||||
( HexDigit+ ('.' HexDigit*)? HexExponent FloatTypeSuffix?
|
||||
| '.' HexDigit+ HexExponent FloatTypeSuffix?
|
||||
)
|
||||
;
|
||||
: DecimalFloatingPointLiteral
|
||||
| HexadecimalFloatingPointLiteral
|
||||
;
|
||||
|
||||
fragment
|
||||
Exponent : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
|
||||
DecimalFloatingPointLiteral
|
||||
: Digits '.' Digits? ExponentPart? FloatTypeSuffix?
|
||||
| '.' Digits ExponentPart? FloatTypeSuffix?
|
||||
| Digits ExponentPart FloatTypeSuffix?
|
||||
| Digits FloatTypeSuffix
|
||||
;
|
||||
|
||||
fragment
|
||||
HexExponent : ('p'|'P') ('+'|'-')? ('0'..'9')+ ;
|
||||
ExponentPart
|
||||
: ExponentIndicator SignedInteger
|
||||
;
|
||||
|
||||
fragment
|
||||
FloatTypeSuffix : ('f'|'F'|'d'|'D') ;
|
||||
ExponentIndicator
|
||||
: [eE]
|
||||
;
|
||||
|
||||
fragment
|
||||
SignedInteger
|
||||
: Sign? Digits
|
||||
;
|
||||
|
||||
fragment
|
||||
Sign
|
||||
: [+-]
|
||||
;
|
||||
|
||||
fragment
|
||||
FloatTypeSuffix
|
||||
: [fFdD]
|
||||
;
|
||||
|
||||
fragment
|
||||
HexadecimalFloatingPointLiteral
|
||||
: HexSignificand BinaryExponent FloatTypeSuffix?
|
||||
;
|
||||
|
||||
fragment
|
||||
HexSignificand
|
||||
: HexNumeral '.'?
|
||||
| '0' [xX] HexDigits? '.' HexDigits
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryExponent
|
||||
: BinaryExponentIndicator SignedInteger
|
||||
;
|
||||
|
||||
fragment
|
||||
BinaryExponentIndicator
|
||||
: [pP]
|
||||
;
|
||||
|
||||
// §3.10.3 Boolean Literals
|
||||
|
||||
|
|
Loading…
Reference in New Issue