From 1e9e51dae1c01bab7562911b958c47528b8011c8 Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Sun, 28 Sep 2025 22:53:30 +0200 Subject: java: Add tokens Only parses Java 8 tokens for now. --- data/java-8/tokens.grammar | 385 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 385 insertions(+) create mode 100644 data/java-8/tokens.grammar (limited to 'data') diff --git a/data/java-8/tokens.grammar b/data/java-8/tokens.grammar new file mode 100644 index 0000000..3521ac0 --- /dev/null +++ b/data/java-8/tokens.grammar @@ -0,0 +1,385 @@ +InputElement: + WhiteSpace + Comment + Token + +Token: + Identifier + Keyword + Literal + Separator + Operator + +Comment: + TraditionalComment + EndOfLineComment + +TraditionalComment: + / * CommentTail + +CommentTail: + * CommentTailStar + NotStar CommentTail + +CommentTailStar: + / + * CommentTailStar + NotStarNotSlash CommentTail + +NotStar: + InputCharacter but not * + LineTerminator + +NotStarNotSlash: + InputCharacter but not * or / + LineTerminator + +EndOfLineComment: + / / {InputCharacter} + +Identifier: + IdentifierChars but not Keyword or BooleanLiteral or NullLiteral + +IdentifierChars: + JavaLetter {JavaLetterOrDigit} + +Keyword: + abstract + continue + for + new + switch + assert + default + if + package + synchronized + boolean + do + goto + private + this + break + double + implements + protected + throw + byte + else + import + public + throws + case + enum + instanceof + return + transient + catch + extends + int + short + try + char + final + interface + static + void + class + finally + long + strictfp + volatile + const + float + native + super + while + +Literal: + IntegerLiteral + FloatingPointLiteral + BooleanLiteral + CharacterLiteral + StringLiteral + NullLiteral + +IntegerLiteral: + DecimalIntegerLiteral + HexIntegerLiteral + OctalIntegerLiteral + BinaryIntegerLiteral + +DecimalIntegerLiteral: + DecimalNumeral [IntegerTypeSuffix] + +HexIntegerLiteral: + HexNumeral [IntegerTypeSuffix] + +OctalIntegerLiteral: + OctalNumeral [IntegerTypeSuffix] + +BinaryIntegerLiteral: + BinaryNumeral [IntegerTypeSuffix] + +IntegerTypeSuffix: + l + L + +DecimalNumeral: + 0 + NonZeroDigit [Digits] + NonZeroDigit Underscores Digits + +NonZeroDigit: + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + +Digits: + Digit + Digit [DigitsAndUnderscores] Digit + +Digit: + 0 + NonZeroDigit + +DigitsAndUnderscores: + DigitOrUnderscore {DigitOrUnderscore} + +DigitOrUnderscore: + Digit + _ + +Underscores: + _ {_} + +HexNumeral: + 0 x HexDigits + 0 X HexDigits + +HexDigits: + HexDigit + HexDigit [HexDigitsAndUnderscores] HexDigit + +HexDigit: + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + a + b + c + d + e + f + A + B + C + D + E + F + +HexDigitsAndUnderscores: + HexDigitOrUnderscore {HexDigitOrUnderscore} + +HexDigitOrUnderscore: + HexDigit + _ + +OctalNumeral: + 0 OctalDigits + 0 Underscores OctalDigits + +OctalDigits: + OctalDigit + OctalDigit [OctalDigitsAndUnderscores] OctalDigit + +OctalDigit: + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + +OctalDigitsAndUnderscores: + OctalDigitOrUnderscore {OctalDigitOrUnderscore} + +OctalDigitOrUnderscore: + OctalDigit + _ + +BinaryNumeral: + 0 b BinaryDigits + 0 B BinaryDigits + +BinaryDigits: + BinaryDigit + BinaryDigit [BinaryDigitsAndUnderscores] BinaryDigit + +BinaryDigit: + 0 + 1 + +BinaryDigitsAndUnderscores: + BinaryDigitOrUnderscore {BinaryDigitOrUnderscore} + +BinaryDigitOrUnderscore: + BinaryDigit + _ + +FloatingPointLiteral: + DecimalFloatingPointLiteral + HexadecimalFloatingPointLiteral + +DecimalFloatingPointLiteral: + Digits . [Digits] [ExponentPart] [FloatTypeSuffix] + . Digits [ExponentPart] [FloatTypeSuffix] + Digits ExponentPart [FloatTypeSuffix] + Digits [ExponentPart] FloatTypeSuffix + +ExponentPart: + ExponentIndicator SignedInteger + +ExponentIndicator: + e + E + +SignedInteger: + [Sign] Digits + +Sign: + + + - + +FloatTypeSuffix: + f + F + d + D + +HexadecimalFloatingPointLiteral: + HexSignificand BinaryExponent [FloatTypeSuffix] + +HexSignificand: + HexNumeral [.] + 0 x [HexDigits] . HexDigits + 0 X [HexDigits] . HexDigits + +BinaryExponent: + BinaryExponentIndicator SignedInteger + +BinaryExponentIndicator: + p + P + +BooleanLiteral: + true + false + +CharacterLiteral: + ' SingleCharacter ' + ' EscapeSequence ' + +SingleCharacter: + InputCharacter but not ' or \ + +StringLiteral: + " {StringCharacter} " + +StringCharacter: + InputCharacter but not " or \ + EscapeSequence + +EscapeSequence: + \ b + \ t + \ n + \ f + \ r + \ " + \ ' + \ \ + OctalEscape + +OctalEscape: + \ OctalDigit + \ OctalDigit OctalDigit + \ ZeroToThree OctalDigit OctalDigit + +ZeroToThree: + 0 + 1 + 2 + 3 + +NullLiteral: + null + +Separator: + ( + ) + { + } + [ + ] + ; + , + . + ... + @ + :: + +Operator: + = + > + < + ! + ~ + ? + : + -> + == + >= + <= + != + && + || + ++ + -- + + + - + * + / + & + | + ^ + % + << + >> + >>> + += + -= + *= + /= + &= + |= + ^= + %= + <<= + >>= + >>>= -- cgit v1.3