| package com.github.javaparser; |
| |
| import static com.github.javaparser.GeneratedJavaParserConstants.*; |
| import static com.github.javaparser.utils.Utils.EOL; |
| |
| /** |
| * Complements GeneratedJavaParserConstants |
| */ |
| public class TokenTypes { |
| public static boolean isWhitespace(int kind) { |
| return getCategory(kind).isWhitespace(); |
| } |
| |
| public static boolean isEndOfLineToken(int kind) { |
| return getCategory(kind).isEndOfLine(); |
| } |
| |
| public static boolean isWhitespaceOrComment(int kind) { |
| return getCategory(kind).isWhitespaceOrComment(); |
| } |
| |
| public static boolean isSpaceOrTab(int kind) { |
| return getCategory(kind).isWhitespaceButNotEndOfLine(); |
| } |
| |
| public static boolean isComment(int kind) { |
| return getCategory(kind).isComment(); |
| } |
| |
| /** |
| * @return the kind of EOL token to use on the platform you're running on. |
| */ |
| public static int eolTokenKind() { |
| if (EOL.equals("\n")) { |
| return UNIX_EOL; |
| } |
| if (EOL.equals("\r\n")) { |
| return WINDOWS_EOL; |
| } |
| if (EOL.equals("\r")) { |
| return OLD_MAC_EOL; |
| } |
| throw new AssertionError("Unknown EOL character sequence"); |
| } |
| |
| /** |
| * @return the token kind for a single space. |
| */ |
| public static int spaceTokenKind() { |
| return SPACE; |
| } |
| |
| /** |
| * Category of a token, a little more detailed than |
| * <a href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.5">The JLS</a>. |
| */ |
| public static JavaToken.Category getCategory(int kind) { |
| switch (kind) { |
| case WINDOWS_EOL: |
| case UNIX_EOL: |
| case OLD_MAC_EOL: |
| return JavaToken.Category.EOL; |
| case EOF: |
| case SPACE: |
| case CTRL_Z: |
| return JavaToken.Category.WHITESPACE_NO_EOL; |
| case SINGLE_LINE_COMMENT: |
| case JAVADOC_COMMENT: |
| case MULTI_LINE_COMMENT: |
| return JavaToken.Category.COMMENT; |
| case ABSTRACT: |
| case ASSERT: |
| case BOOLEAN: |
| case BREAK: |
| case BYTE: |
| case CASE: |
| case CATCH: |
| case CHAR: |
| case CLASS: |
| case CONST: |
| case CONTINUE: |
| case _DEFAULT: |
| case DO: |
| case DOUBLE: |
| case ELSE: |
| case ENUM: |
| case EXTENDS: |
| case FALSE: |
| case FINAL: |
| case FINALLY: |
| case FLOAT: |
| case FOR: |
| case GOTO: |
| case IF: |
| case IMPLEMENTS: |
| case IMPORT: |
| case INSTANCEOF: |
| case INT: |
| case INTERFACE: |
| case LONG: |
| case NATIVE: |
| case NEW: |
| case NULL: |
| case PACKAGE: |
| case PRIVATE: |
| case PROTECTED: |
| case PUBLIC: |
| case RETURN: |
| case SHORT: |
| case STATIC: |
| case STRICTFP: |
| case SUPER: |
| case SWITCH: |
| case SYNCHRONIZED: |
| case THIS: |
| case THROW: |
| case THROWS: |
| case TRANSIENT: |
| case TRUE: |
| case TRY: |
| case VOID: |
| case VOLATILE: |
| case WHILE: |
| case REQUIRES: |
| case TO: |
| case WITH: |
| case OPEN: |
| case OPENS: |
| case USES: |
| case MODULE: |
| case EXPORTS: |
| case PROVIDES: |
| case TRANSITIVE: |
| return JavaToken.Category.KEYWORD; |
| case LONG_LITERAL: |
| case INTEGER_LITERAL: |
| case DECIMAL_LITERAL: |
| case HEX_LITERAL: |
| case OCTAL_LITERAL: |
| case BINARY_LITERAL: |
| case FLOATING_POINT_LITERAL: |
| case DECIMAL_FLOATING_POINT_LITERAL: |
| case DECIMAL_EXPONENT: |
| case HEXADECIMAL_FLOATING_POINT_LITERAL: |
| case HEXADECIMAL_EXPONENT: |
| case CHARACTER_LITERAL: |
| case STRING_LITERAL: |
| return JavaToken.Category.LITERAL; |
| case IDENTIFIER: |
| return JavaToken.Category.IDENTIFIER; |
| case LPAREN: |
| case RPAREN: |
| case LBRACE: |
| case RBRACE: |
| case LBRACKET: |
| case RBRACKET: |
| case SEMICOLON: |
| case COMMA: |
| case DOT: |
| case AT: |
| return JavaToken.Category.SEPARATOR; |
| case ASSIGN: |
| case LT: |
| case BANG: |
| case TILDE: |
| case HOOK: |
| case COLON: |
| case EQ: |
| case LE: |
| case GE: |
| case NE: |
| case SC_OR: |
| case SC_AND: |
| case INCR: |
| case DECR: |
| case PLUS: |
| case MINUS: |
| case STAR: |
| case SLASH: |
| case BIT_AND: |
| case BIT_OR: |
| case XOR: |
| case REM: |
| case LSHIFT: |
| case PLUSASSIGN: |
| case MINUSASSIGN: |
| case STARASSIGN: |
| case SLASHASSIGN: |
| case ANDASSIGN: |
| case ORASSIGN: |
| case XORASSIGN: |
| case REMASSIGN: |
| case LSHIFTASSIGN: |
| case RSIGNEDSHIFTASSIGN: |
| case RUNSIGNEDSHIFTASSIGN: |
| case ELLIPSIS: |
| case ARROW: |
| case DOUBLECOLON: |
| case RUNSIGNEDSHIFT: |
| case RSIGNEDSHIFT: |
| case GT: |
| return JavaToken.Category.OPERATOR; |
| // The following are tokens that are only used internally by the lexer |
| case ENTER_JAVADOC_COMMENT: |
| case ENTER_MULTILINE_COMMENT: |
| case COMMENT_CONTENT: |
| case HEX_DIGITS: |
| case LETTER: |
| case UNICODE_ESCAPE: |
| case PART_LETTER: |
| default: |
| throw new AssertionError("Invalid token kind " + kind); |
| } |
| } |
| } |