Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- tree grammar JavaToGeneric;
- options {
- memoize = true;
- backtrack = true;
- language = Java;
- output = AST;
- tokenVocab = Java;
- ASTLabelType = CommonTree;
- filter = true;
- }
- @treeparser::header {
- package org.apiwatch.grammars;
- }
- // Starting point for parsing a Java file.
- sourceFile
- : ^(JAVA_SOURCE annotationList packageDeclaration? importDeclaration* typeDeclaration*)
- ;
- packageDeclaration
- : ^(PACKAGE qualifiedIdentifier)
- ;
- importDeclaration
- : ^(IMPORT STATIC? qualifiedIdentifier DOTSTAR?)
- ;
- typeDeclaration
- : ^(CLASS modifierList IDENT {System.out.println("Class: " + $IDENT.text);} genericTypeParameterList? extendsClause? implementsClause? classTopLevelScope)
- | ^(INTERFACE modifierList IDENT genericTypeParameterList? extendsClause? interfaceTopLevelScope)
- | ^(ENUM modifierList IDENT implementsClause? enumTopLevelScope)
- | ^(AT modifierList IDENT annotationTopLevelScope)
- ;
- extendsClause // actually 'type' for classes and 'type+' for interfaces, but this has
- // been resolved by the parser grammar.
- : ^(EXTENDS_CLAUSE type+)
- ;
- implementsClause
- : ^(IMPLEMENTS_CLAUSE type+)
- ;
- genericTypeParameterList
- : ^(GENERIC_TYPE_PARAM_LIST genericTypeParameter+)
- ;
- genericTypeParameter
- : ^(IDENT bound?)
- ;
- bound
- : ^(EXTENDS_BOUND_LIST type+)
- ;
- enumTopLevelScope
- : ^(ENUM_TOP_LEVEL_SCOPE enumConstant+ classTopLevelScope?)
- ;
- enumConstant
- : ^(IDENT annotationList .? classTopLevelScope?)
- ;
- classTopLevelScope
- : ^(CLASS_TOP_LEVEL_SCOPE classScopeDeclarations*)
- ;
- classScopeDeclarations
- : ^(CLASS_INSTANCE_INITIALIZER block)
- | ^(CLASS_STATIC_INITIALIZER block)
- | ^(FUNCTION_METHOD_DECL modifierList genericTypeParameterList? type IDENT {System.out.println("Method: " + $IDENT.text);} formalParameterList arrayDeclaratorList? throwsClause? block?)
- | ^(VOID_METHOD_DECL modifierList genericTypeParameterList? IDENT {System.out.println("Method: " + $IDENT.text);} formalParameterList throwsClause? block?)
- | ^(VAR_DECLARATION modifierList type variableDeclaratorList)
- | ^(CONSTRUCTOR_DECL modifierList genericTypeParameterList? formalParameterList throwsClause? block)
- | typeDeclaration
- ;
- interfaceTopLevelScope
- : ^(INTERFACE_TOP_LEVEL_SCOPE interfaceScopeDeclarations*)
- ;
- interfaceScopeDeclarations
- : ^(FUNCTION_METHOD_DECL modifierList genericTypeParameterList? type IDENT formalParameterList arrayDeclaratorList? throwsClause?)
- | ^(VOID_METHOD_DECL modifierList genericTypeParameterList? IDENT formalParameterList throwsClause?)
- // Interface constant declarations have been switched to variable
- // declarations by 'java.g'; the parser has already checked that
- // there's an obligatory initializer.
- | ^(VAR_DECLARATION modifierList type variableDeclaratorList)
- | typeDeclaration
- ;
- variableDeclaratorList
- : ^(VAR_DECLARATOR_LIST variableDeclarator+)
- ;
- variableDeclarator
- : ^(VAR_DECLARATOR variableDeclaratorId .?)
- ;
- variableDeclaratorId
- : ^(IDENT arrayDeclaratorList?)
- ;
- arrayDeclarator
- : LBRACK RBRACK
- ;
- arrayDeclaratorList
- : ^(ARRAY_DECLARATOR_LIST ARRAY_DECLARATOR*)
- ;
- throwsClause
- : ^(THROWS_CLAUSE qualifiedIdentifier+)
- ;
- modifierList
- : ^(MODIFIER_LIST modifier*)
- ;
- modifier
- : PUBLIC
- | PROTECTED
- | PRIVATE
- | STATIC
- | ABSTRACT
- | NATIVE
- | SYNCHRONIZED
- | TRANSIENT
- | VOLATILE
- | STRICTFP
- | localModifier
- ;
- localModifierList
- : ^(LOCAL_MODIFIER_LIST localModifier*)
- ;
- localModifier
- : FINAL
- | annotation
- ;
- type
- : ^(TYPE (primitiveType | qualifiedTypeIdent) arrayDeclaratorList?)
- ;
- qualifiedTypeIdent
- : ^(QUALIFIED_TYPE_IDENT typeIdent+)
- ;
- typeIdent
- : ^(IDENT genericTypeArgumentList?)
- ;
- primitiveType
- : BOOLEAN
- | CHAR
- | BYTE
- | SHORT
- | INT
- | LONG
- | FLOAT
- | DOUBLE
- ;
- genericTypeArgumentList
- : ^(GENERIC_TYPE_ARG_LIST genericTypeArgument+)
- ;
- genericTypeArgument
- : type
- | ^(QUESTION genericWildcardBoundType?)
- ;
- genericWildcardBoundType
- : ^(EXTENDS type)
- | ^(SUPER type)
- ;
- formalParameterList
- : ^(FORMAL_PARAM_LIST formalParameterStandardDecl* formalParameterVarargDecl?)
- ;
- formalParameterStandardDecl
- : ^(FORMAL_PARAM_STD_DECL localModifierList type variableDeclaratorId)
- ;
- formalParameterVarargDecl
- : ^(FORMAL_PARAM_VARARG_DECL localModifierList type variableDeclaratorId)
- ;
- qualifiedIdentifier
- : IDENT
- | ^(DOT qualifiedIdentifier IDENT)
- ;
- // ANNOTATIONS
- annotationList
- : ^(ANNOTATION_LIST annotation*)
- ;
- annotation
- : ^(AT qualifiedIdentifier .?)
- ;
- annotationTopLevelScope
- : ^(ANNOTATION_TOP_LEVEL_SCOPE annotationScopeDeclarations*)
- ;
- annotationScopeDeclarations
- : ^(ANNOTATION_METHOD_DECL modifierList type IDENT .?)
- | ^(VAR_DECLARATION modifierList type variableDeclaratorList)
- | typeDeclaration
- ;
- // STATEMENTS / BLOCKS
- block
- : ^(BLOCK_SCOPE .*)
- ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement