📄 java.g
字号:
-> ^(EXTENDS_BOUND_LIST[$EXTENDS, "EXTENDS_BOUND_LIST"] type+)
;
enumTypeDeclaration[CommonTree modifiers]
: ENUM IDENT implementsClause? enumBody
-> ^(ENUM {$modifiers} IDENT implementsClause? enumBody)
;
enumBody
: LCURLY enumScopeDeclarations RCURLY
-> ^(ENUM_TOP_LEVEL_SCOPE[$LCURLY, "ENUM_TOP_LEVEL_SCOPE"] enumScopeDeclarations)
;
enumScopeDeclarations
: enumConstants (COMMA!)? enumClassScopeDeclarations?
;
enumClassScopeDeclarations
: SEMI classScopeDeclarations*
-> ^(CLASS_TOP_LEVEL_SCOPE[$SEMI, "CLASS_TOP_LEVEL_SCOPE"] classScopeDeclarations*)
;
enumConstants
: enumConstant (COMMA! enumConstant)*
;
enumConstant
: annotationList IDENT^ arguments? classBody?
;
interfaceTypeDeclaration[CommonTree modifiers]
: INTERFACE IDENT genericTypeParameterList? interfaceExtendsClause? interfaceBody
-> ^(INTERFACE {$modifiers} IDENT genericTypeParameterList? interfaceExtendsClause? interfaceBody)
;
typeList
: type (COMMA! type)*
;
classBody
: LCURLY classScopeDeclarations* RCURLY
-> ^(CLASS_TOP_LEVEL_SCOPE[$LCURLY, "CLASS_TOP_LEVEL_SCOPE"] classScopeDeclarations*)
;
interfaceBody
: LCURLY interfaceScopeDeclarations* RCURLY
-> ^(INTERFACE_TOP_LEVEL_SCOPE[$LCURLY, "CLASS_TOP_LEVEL_SCOPE"] interfaceScopeDeclarations*)
;
classScopeDeclarations
: block -> ^(CLASS_INSTANCE_INITIALIZER block)
| STATIC block -> ^(CLASS_STATIC_INITIALIZER[$STATIC, "CLASS_STATIC_INITIALIZER"] block)
| modifierList
( genericTypeParameterList?
( type IDENT formalParameterList arrayDeclaratorList? throwsClause? (block | SEMI)
-> ^(FUNCTION_METHOD_DECL modifierList genericTypeParameterList? type IDENT formalParameterList arrayDeclaratorList? throwsClause? block?)
| VOID IDENT formalParameterList throwsClause? (block | SEMI)
-> ^(VOID_METHOD_DECL modifierList genericTypeParameterList? IDENT formalParameterList throwsClause? block?)
| ident=IDENT formalParameterList throwsClause? block
-> ^(CONSTRUCTOR_DECL[$ident, "CONSTRUCTOR_DECL"] modifierList genericTypeParameterList? formalParameterList throwsClause? block)
)
| type classFieldDeclaratorList SEMI
-> ^(VAR_DECLARATION modifierList type classFieldDeclaratorList)
)
| typeDeclaration
| SEMI!
;
interfaceScopeDeclarations
: modifierList
( genericTypeParameterList?
( type IDENT formalParameterList arrayDeclaratorList? throwsClause? SEMI
-> ^(FUNCTION_METHOD_DECL modifierList genericTypeParameterList? type IDENT formalParameterList arrayDeclaratorList? throwsClause?)
| VOID IDENT formalParameterList throwsClause? SEMI
-> ^(VOID_METHOD_DECL modifierList genericTypeParameterList? IDENT formalParameterList throwsClause?)
)
| type interfaceFieldDeclaratorList SEMI
-> ^(VAR_DECLARATION modifierList type interfaceFieldDeclaratorList)
)
| typeDeclaration
| SEMI!
;
classFieldDeclaratorList
: classFieldDeclarator (COMMA classFieldDeclarator)*
-> ^(VAR_DECLARATOR_LIST classFieldDeclarator+)
;
classFieldDeclarator
: variableDeclaratorId (ASSIGN variableInitializer)?
-> ^(VAR_DECLARATOR variableDeclaratorId variableInitializer?)
;
interfaceFieldDeclaratorList
: interfaceFieldDeclarator (COMMA interfaceFieldDeclarator)*
-> ^(VAR_DECLARATOR_LIST interfaceFieldDeclarator+)
;
interfaceFieldDeclarator
: variableDeclaratorId ASSIGN variableInitializer
-> ^(VAR_DECLARATOR variableDeclaratorId variableInitializer)
;
variableDeclaratorId
: IDENT^ arrayDeclaratorList?
;
variableInitializer
: arrayInitializer
| expression
;
arrayDeclarator
: LBRACK RBRACK
-> ^(ARRAY_DECLARATOR)
;
arrayDeclaratorList
: arrayDeclarator+
-> ^(ARRAY_DECLARATOR_LIST arrayDeclarator+)
;
arrayInitializer
: LCURLY (variableInitializer (COMMA variableInitializer)* COMMA?)? RCURLY
-> ^(ARRAY_INITIALIZER[$LCURLY, "ARRAY_INITIALIZER"] variableInitializer*)
;
throwsClause
: THROWS qualifiedIdentList
-> ^(THROWS_CLAUSE[$THROWS, "THROWS_CLAUSE"] qualifiedIdentList)
;
modifierList
: modifier*
-> ^(MODIFIER_LIST modifier*)
;
modifier
: PUBLIC
| PROTECTED
| PRIVATE
| STATIC
| ABSTRACT
| NATIVE
| SYNCHRONIZED
| TRANSIENT
| VOLATILE
| STRICTFP
| localModifier
;
localModifierList
: localModifier*
-> ^(LOCAL_MODIFIER_LIST localModifier*)
;
localModifier
: FINAL
| annotation
;
type
: simpleType
| objectType
;
simpleType // including static arrays of simple type elements
: primitiveType arrayDeclaratorList?
-> ^(TYPE primitiveType arrayDeclaratorList?)
;
objectType // including static arrays of object type reference elements
: qualifiedTypeIdent arrayDeclaratorList?
-> ^(TYPE qualifiedTypeIdent arrayDeclaratorList?)
;
objectTypeSimplified
: qualifiedTypeIdentSimplified arrayDeclaratorList?
-> ^(TYPE qualifiedTypeIdentSimplified arrayDeclaratorList?)
;
qualifiedTypeIdent
: typeIdent (DOT typeIdent)*
-> ^(QUALIFIED_TYPE_IDENT typeIdent+)
;
qualifiedTypeIdentSimplified
: typeIdentSimplified (DOT typeIdentSimplified)*
-> ^(QUALIFIED_TYPE_IDENT typeIdentSimplified+)
;
typeIdent
: IDENT^ genericTypeArgumentList?
;
typeIdentSimplified
: IDENT^ genericTypeArgumentListSimplified?
;
primitiveType
: BOOLEAN
| CHAR
| BYTE
| SHORT
| INT
| LONG
| FLOAT
| DOUBLE
;
genericTypeArgumentList
: LESS_THAN genericTypeArgument (COMMA genericTypeArgument)* genericTypeListClosing
-> ^(GENERIC_TYPE_ARG_LIST[$LESS_THAN, "GENERIC_TYPE_ARG_LIST"] genericTypeArgument+)
;
genericTypeArgument
: type
| QUESTION genericWildcardBoundType?
-> ^(QUESTION genericWildcardBoundType?)
;
genericWildcardBoundType
: (EXTENDS | SUPER)^ type
;
genericTypeArgumentListSimplified
: LESS_THAN genericTypeArgumentSimplified (COMMA genericTypeArgumentSimplified)* genericTypeListClosing
-> ^(GENERIC_TYPE_ARG_LIST[$LESS_THAN, "GENERIC_TYPE_ARG_LIST"] genericTypeArgumentSimplified+)
;
genericTypeArgumentSimplified
: type
| QUESTION
;
qualifiedIdentList
: qualifiedIdentifier (COMMA! qualifiedIdentifier)*
;
formalParameterList
: LPAREN
( // Contains at least one standard argument declaration and optionally a variable argument declaration.
formalParameterStandardDecl (COMMA formalParameterStandardDecl)* (COMMA formalParameterVarArgDecl)?
-> ^(FORMAL_PARAM_LIST[$LPAREN, "FORMAL_PARAM_LIST"] formalParameterStandardDecl+ formalParameterVarArgDecl?)
// Contains a variable argument declaration only.
| formalParameterVarArgDecl
-> ^(FORMAL_PARAM_LIST[$LPAREN, "FORMAL_PARAM_LIST"] formalParameterVarArgDecl)
// Contains nothing.
| -> ^(FORMAL_PARAM_LIST[$LPAREN, "FORMAL_PARAM_LIST"])
)
RPAREN
;
formalParameterStandardDecl
: localModifierList type variableDeclaratorId
-> ^(FORMAL_PARAM_STD_DECL localModifierList type variableDeclaratorId)
;
formalParameterVarArgDecl
: localModifierList type ELLIPSIS variableDeclaratorId
-> ^(FORMAL_PARAM_VARARG_DECL localModifierList type variableDeclaratorId)
;
qualifiedIdentifier
: ( IDENT -> IDENT
)
( DOT ident=IDENT -> ^(DOT $qualifiedIdentifier $ident)
)*
;
// ANNOTATIONS
annotationList
: annotation*
-> ^(ANNOTATION_LIST annotation*)
;
annotation
: AT^ qualifiedIdentifier annotationInit?
;
annotationInit
: LPAREN annotationInitializers RPAREN
-> ^(ANNOTATION_INIT_BLOCK[$LPAREN, "ANNOTATION_INIT_BLOCK"] annotationInitializers)
;
annotationInitializers
: annotationInitializer (COMMA annotationInitializer)*
-> ^(ANNOTATION_INIT_KEY_LIST annotationInitializer+)
| annotationElementValue // implicite initialization of the annotation field 'value'
-> ^(ANNOTATION_INIT_DEFAULT_KEY annotationElementValue)
;
annotationInitializer
: IDENT^ ASSIGN! annotationElementValue
;
annotationElementValue
: annotationElementValueExpression
| annotation
| annotationElementValueArrayInitializer
;
annotationElementValueExpression
: conditionalExpression
-> ^(EXPR conditionalExpression)
;
annotationElementValueArrayInitializer
: LCURLY (annotationElementValue (COMMA annotationElementValue)*)? (COMMA)? RCURLY
-> ^(ANNOTATION_INIT_ARRAY_ELEMENT[$LCURLY, "ANNOTATION_ELEM_VALUE_ARRAY_INIT"] annotationElementValue*)
;
annotationTypeDeclaration[CommonTree modifiers]
: AT INTERFACE IDENT annotationBody
-> ^(AT {$modifiers} IDENT annotationBody)
;
annotationBody
: LCURLY annotationScopeDeclarations* RCURLY
-> ^(ANNOTATION_TOP_LEVEL_SCOPE[$LCURLY, "CLASS_TOP_LEVEL_SCOPE"] annotationScopeDeclarations*)
;
annotationScopeDeclarations
: modifierList type
( IDENT LPAREN RPAREN annotationDefaultValue? SEMI
-> ^(ANNOTATION_METHOD_DECL modifierList type IDENT annotationDefaultValue?)
| classFieldDeclaratorList SEMI
-> ^(VAR_DECLARATION modifierList type classFieldDeclaratorList)
)
| typeDeclaration
;
annotationDefaultValue
: DEFAULT^ annotationElementValue
;
// STATEMENTS / BLOCKS
block
: LCURLY blockStatement* RCURLY
-> ^(BLOCK_SCOPE[$LCURLY, "BLOCK_SCOPE"] blockStatement*)
;
blockStatement
: localVariableDeclaration SEMI!
| typeDeclaration
| statement
;
localVariableDeclaration
: localModifierList type classFieldDeclaratorList
-> ^(VAR_DECLARATION localModifierList type classFieldDeclaratorList)
;
statement
: block
| ASSERT expr1=expression
( COLON expr2=expression SEMI -> ^(ASSERT $expr1 $expr2)
| SEMI -> ^(ASSERT $expr1)
)
| IF parenthesizedExpression ifStat=statement
( ELSE elseStat=statement -> ^(IF parenthesizedExpression $ifStat $elseStat)
| -> ^(IF parenthesizedExpression $ifStat)
)
| FOR LPAREN
( forInit SEMI forCondition SEMI forUpdater RPAREN statement -> ^(FOR forInit forCondition forUpdater statement)
| localModifierList type IDENT COLON expression RPAREN statement
-> ^(FOR_EACH[$FOR, "FOR_EACH"] localModifierList type IDENT expression statement)
)
| WHILE parenthesizedExpression statement -> ^(WHILE parenthesizedExpression statement)
| DO statement WHILE parenthesizedExpression SEMI -> ^(DO statement parenthesizedExpression)
| TRY block (catches finallyClause? | finallyClause) -> ^(TRY block catches? finallyClause?)
| SWITCH parenthesizedExpression LCURLY switchBlockLabels RCURLY -> ^(SWITCH parenthesizedExpression switchBlockLabels)
| SYNCHRONIZED parenthesizedExpression block -> ^(SYNCHRONIZED parenthesizedExpression block)
| RETURN expression? SEMI -> ^(RETURN expression?)
| THROW expression SEMI -> ^(THROW expression)
| BREAK IDENT? SEMI -> ^(BREAK IDENT?)
| CONTINUE IDENT? SEMI -> ^(CONTINUE IDENT?)
| IDENT COLON statement -> ^(LABELED_STATEMENT IDENT statement)
| expression SEMI!
| SEMI // Preserve empty statements.
;
catches
: catchClause+
-> ^(CATCH_CLAUSE_LIST catchClause+)
;
catchClause
: CATCH^ LPAREN! formalParameterStandardDecl RPAREN! block
;
finallyClause
: FINALLY block
-> block
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -