📄 types.java
字号:
public static final int EXPRESSION = 1900; // all of the below 1900 series public static final int OPERATOR_EXPRESSION = 1901; // "."-"<<" public static final int SYNTH_EXPRESSION = 1902; // cast, ternary, and closure expression public static final int KEYWORD_EXPRESSION = 1903; // new, this, super, instanceof, true, false, null public static final int LITERAL_EXPRESSION = 1904; // LITERAL public static final int ARRAY_EXPRESSION = 1905; // "[" public static final int SIMPLE_EXPRESSION = 1910; // LITERAL, this, true, false, null public static final int COMPLEX_EXPRESSION = 1911; // SIMPLE_EXPRESSION, and various molecules // // TYPE GROUPS (OPERATIONS SUPPORT) public static final int PARAMETER_TERMINATORS = 2000; // ")", "," public static final int ARRAY_ITEM_TERMINATORS = 2001; // "]", "," public static final int TYPE_LIST_TERMINATORS = 2002; // "implements", "throws", "{", "," public static final int OPTIONAL_DATATYPE_FOLLOWERS = 2003; // identifier, "[", "." public static final int SWITCH_BLOCK_TERMINATORS = 2004; // "case", "default", "}" public static final int SWITCH_ENTRIES = 2005; // "case", "default" public static final int METHOD_CALL_STARTERS = 2006; // LITERAL, "(", "{" public static final int UNSAFE_OVER_NEWLINES = 2007; // things the expression parser should cross lines for in it doesn't have to public static final int PRECLUDES_CAST_OPERATOR = 2008; // anything that prevents (X) from being a cast //--------------------------------------------------------------------------- // TYPE HIERARCHIES /** * Given two types, returns true if the second describes the first. */ public static boolean ofType( int specific, int general ) { if( general == specific ) { return true; } switch( general ) { case ANY: return true; case NOT_EOF: return specific >= UNKNOWN && specific <= SYNTH_VARIABLE_DECLARATION; case GENERAL_END_OF_STATEMENT: switch( specific ) { case EOF: case NEWLINE: case SEMICOLON: return true; } break; case ANY_END_OF_STATEMENT: switch( specific ) { case EOF: case NEWLINE: case SEMICOLON: case RIGHT_CURLY_BRACE: return true; } break; case ASSIGNMENT_OPERATOR: return specific == EQUAL || (specific >= PLUS_EQUAL && specific <= POWER_EQUAL) || (specific >= LOGICAL_OR_EQUAL && specific <= LOGICAL_AND_EQUAL) || (specific >= LEFT_SHIFT_EQUAL && specific <= RIGHT_SHIFT_UNSIGNED_EQUAL) || (specific >= BITWISE_OR_EQUAL && specific <= BITWISE_XOR_EQUAL); case COMPARISON_OPERATOR: return specific >= COMPARE_NOT_EQUAL && specific <= COMPARE_TO; case MATH_OPERATOR: return (specific >= PLUS && specific <= RIGHT_SHIFT_UNSIGNED) || (specific >= NOT && specific <= LOGICAL_AND) || (specific >= BITWISE_OR && specific <= BITWISE_XOR); case LOGICAL_OPERATOR: return specific >= NOT && specific <= LOGICAL_AND; case BITWISE_OPERATOR: return (specific >= BITWISE_OR && specific <= BITWISE_XOR) || specific == BITWISE_NEGATION; case RANGE_OPERATOR: return specific == DOT_DOT || specific == DOT_DOT_DOT; case REGEX_COMPARISON_OPERATOR: return specific == FIND_REGEX || specific == MATCH_REGEX; case DEREFERENCE_OPERATOR: return specific == DOT || specific == NAVIGATE; case PREFIX_OPERATOR: switch( specific ) { case MINUS: case PLUS_PLUS: case MINUS_MINUS: return true; } /* FALL THROUGH */ case PURE_PREFIX_OPERATOR: switch( specific ) { case REGEX_PATTERN: case NOT: case PREFIX_PLUS: case PREFIX_PLUS_PLUS: case PREFIX_MINUS: case PREFIX_MINUS_MINUS: case SYNTH_CAST: return true; } break; case POSTFIX_OPERATOR: switch( specific ) { case PLUS_PLUS: case POSTFIX_PLUS_PLUS: case MINUS_MINUS: case POSTFIX_MINUS_MINUS: return true; } break; case INFIX_OPERATOR: switch( specific ) { case DOT: case NAVIGATE: case LOGICAL_OR: case LOGICAL_AND: case BITWISE_OR: case BITWISE_AND: case BITWISE_XOR: case LEFT_SHIFT: case RIGHT_SHIFT: case RIGHT_SHIFT_UNSIGNED: case FIND_REGEX: case MATCH_REGEX: case DOT_DOT: case DOT_DOT_DOT: case KEYWORD_INSTANCEOF: return true; } return (specific >= COMPARE_NOT_EQUAL && specific <= COMPARE_TO) || (specific >= PLUS && specific <= MOD_EQUAL) || specific == EQUAL || (specific >= PLUS_EQUAL && specific <= POWER_EQUAL) || (specific >= LOGICAL_OR_EQUAL && specific <= LOGICAL_AND_EQUAL) || (specific >= LEFT_SHIFT_EQUAL && specific <= RIGHT_SHIFT_UNSIGNED_EQUAL) || (specific >= BITWISE_OR_EQUAL && specific <= BITWISE_XOR_EQUAL); case PREFIX_OR_INFIX_OPERATOR: switch( specific ) { case POWER: case PLUS: case MINUS: case PREFIX_PLUS: case PREFIX_MINUS: return true; } break; case KEYWORD: return specific >= KEYWORD_PRIVATE && specific <= KEYWORD_GOTO; case SYMBOL: return specific >= NEWLINE && specific <= PIPE; case LITERAL: return specific >= STRING && specific <= DECIMAL_NUMBER; case NUMBER: return specific == INTEGER_NUMBER || specific == DECIMAL_NUMBER; case SIGN: switch( specific ) { case PLUS: case MINUS: return true; } break; case NAMED_VALUE: return specific >= KEYWORD_TRUE && specific <= KEYWORD_NULL; case TRUTH_VALUE: return specific == KEYWORD_TRUE || specific == KEYWORD_FALSE; case TYPE_NAME: if( specific == IDENTIFIER ) { return true; } /* FALL THROUGH */ case PRIMITIVE_TYPE: return specific >= KEYWORD_VOID && specific <= KEYWORD_CHAR; case CREATABLE_TYPE_NAME: if( specific == IDENTIFIER ) { return true; } /* FALL THROUGH */ case CREATABLE_PRIMITIVE_TYPE: return specific >= KEYWORD_BOOLEAN && specific <= KEYWORD_CHAR; case LOOP: switch( specific ) { case KEYWORD_DO: case KEYWORD_WHILE: case KEYWORD_FOR: return true; } break; case RESERVED_KEYWORD: return specific >= KEYWORD_CONST && specific <= KEYWORD_GOTO; case KEYWORD_IDENTIFIER: switch( specific ) { case KEYWORD_CLASS: case KEYWORD_INTERFACE: case KEYWORD_MIXIN: case KEYWORD_DEF: case KEYWORD_DEFMACRO: case KEYWORD_IN: case KEYWORD_PROPERTY: return true; } break; case SYNTHETIC: return specific >= SYNTH_COMPILATION_UNIT && specific <= SYNTH_VARIABLE_DECLARATION; case TYPE_DECLARATION: return specific >= KEYWORD_CLASS && specific <= KEYWORD_MIXIN; case DECLARATION_MODIFIER: return specific >= KEYWORD_PRIVATE && specific <= KEYWORD_STATIC; case MATCHED_CONTAINER: switch( specific ) { case LEFT_CURLY_BRACE: case RIGHT_CURLY_BRACE: case LEFT_SQUARE_BRACKET: case RIGHT_SQUARE_BRACKET: case LEFT_PARENTHESIS: case RIGHT_PARENTHESIS: return true; } break; case LEFT_OF_MATCHED_CONTAINER: switch( specific ) { case LEFT_CURLY_BRACE: case LEFT_SQUARE_BRACKET: case LEFT_PARENTHESIS: return true; } break; case RIGHT_OF_MATCHED_CONTAINER: switch( specific ) { case RIGHT_CURLY_BRACE: case RIGHT_SQUARE_BRACKET: case RIGHT_PARENTHESIS: return true; } break; case PARAMETER_TERMINATORS: return specific == RIGHT_PARENTHESIS || specific == COMMA; case ARRAY_ITEM_TERMINATORS: return specific == RIGHT_SQUARE_BRACKET || specific == COMMA; case TYPE_LIST_TERMINATORS: switch( specific ) { case KEYWORD_IMPLEMENTS: case KEYWORD_THROWS: case LEFT_CURLY_BRACE: case COMMA: return true; } break; case OPTIONAL_DATATYPE_FOLLOWERS: switch( specific ) { case IDENTIFIER: case LEFT_SQUARE_BRACKET: case DOT: return true; } break; case SWITCH_BLOCK_TERMINATORS: if( specific == RIGHT_CURLY_BRACE ) { return true; } /* FALL THROUGH */ case SWITCH_ENTRIES: return specific == KEYWORD_CASE || specific == KEYWORD_DEFAULT; case METHOD_CALL_STARTERS: if( specific >= STRING && specific <= DECIMAL_NUMBER ) { return true; } switch( specific ) { case LEFT_PARENTHESIS: case GSTRING_START: case SYNTH_GSTRING: case KEYWORD_NEW: return true; } break; case UNSAFE_OVER_NEWLINES: if( ofType(specific, SYMBOL) ) { switch( specific ) { case LEFT_CURLY_BRACE: case LEFT_PARENTHESIS: case LEFT_SQUARE_BRACKET: case PLUS: case PLUS_PLUS: case MINUS: case MINUS_MINUS: case REGEX_PATTERN: case NOT: return true; } return false;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -