All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.main.lombok.ast.AstVisitor Maven / Gradle / Ivy

/*
 * Copyright (C) 2010 The Project Lombok Authors.
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
package lombok.ast;

/**
 * Implement this class and hand yourself to the {@link lombok.ast.Node#accept(AstVisitor)} method to get
 * a specific method called for each type of {@code Node}.
 * 

* For each method, return {@code true} to indicate you've handled the type, and {@code false} to * indicate you haven't. The difference is: If you return {@code false} the children of the node * you didn't handle get passed to the implementation of this class instead. *

* If you return {@code false}, then after all children visit calls have been performed, the * {@link #endVisit(Node)} method is called to signal all children have been visited. * * @see ForwardingAstVisitor */ public abstract class AstVisitor { //Basics public abstract boolean visitTypeReference(TypeReference node); public abstract boolean visitTypeReferencePart(TypeReferencePart node); public abstract boolean visitVariableReference(VariableReference node); public abstract boolean visitIdentifier(Identifier node); public abstract boolean visitIntegralLiteral(IntegralLiteral node); public abstract boolean visitFloatingPointLiteral(FloatingPointLiteral node); public abstract boolean visitBooleanLiteral(BooleanLiteral node); public abstract boolean visitCharLiteral(CharLiteral node); public abstract boolean visitStringLiteral(StringLiteral node); public abstract boolean visitNullLiteral(NullLiteral node); //Expressions public abstract boolean visitBinaryExpression(BinaryExpression node); public abstract boolean visitUnaryExpression(UnaryExpression node); public abstract boolean visitInlineIfExpression(InlineIfExpression node); public abstract boolean visitCast(Cast node); public abstract boolean visitInstanceOf(InstanceOf node); public abstract boolean visitConstructorInvocation(ConstructorInvocation node); public abstract boolean visitMethodInvocation(MethodInvocation node); public abstract boolean visitSelect(Select node); public abstract boolean visitArrayAccess(ArrayAccess node); public abstract boolean visitArrayCreation(ArrayCreation node); public abstract boolean visitArrayInitializer(ArrayInitializer node); public abstract boolean visitAnnotationValueArray(AnnotationValueArray node); public abstract boolean visitArrayDimension(ArrayDimension node); public abstract boolean visitClassLiteral(ClassLiteral node); public abstract boolean visitSuper(Super node); public abstract boolean visitThis(This node); //Statements public abstract boolean visitLabelledStatement(LabelledStatement node); public abstract boolean visitExpressionStatement(ExpressionStatement node); public abstract boolean visitIf(If node); public abstract boolean visitFor(For node); public abstract boolean visitForEach(ForEach node); public abstract boolean visitTry(Try node); public abstract boolean visitCatch(Catch node); public abstract boolean visitWhile(While node); public abstract boolean visitDoWhile(DoWhile node); public abstract boolean visitSynchronized(Synchronized node); public abstract boolean visitBlock(Block node); public abstract boolean visitAssert(Assert node); public abstract boolean visitEmptyStatement(EmptyStatement node); public abstract boolean visitSwitch(Switch node); public abstract boolean visitCase(Case node); public abstract boolean visitDefault(Default node); public abstract boolean visitBreak(Break node); public abstract boolean visitContinue(Continue node); public abstract boolean visitReturn(Return node); public abstract boolean visitThrow(Throw node); //Structural public abstract boolean visitVariableDeclaration(VariableDeclaration node); public abstract boolean visitVariableDefinition(VariableDefinition node); public abstract boolean visitVariableDefinitionEntry(VariableDefinitionEntry node); public abstract boolean visitTypeVariable(TypeVariable node); public abstract boolean visitKeywordModifier(KeywordModifier node); public abstract boolean visitModifiers(Modifiers node); public abstract boolean visitAnnotation(Annotation node); public abstract boolean visitAnnotationElement(AnnotationElement node); public abstract boolean visitNormalTypeBody(NormalTypeBody node); public abstract boolean visitEnumTypeBody(EnumTypeBody enumTypeBody); public abstract boolean visitEmptyDeclaration(EmptyDeclaration node); //Class Bodies public abstract boolean visitMethodDeclaration(MethodDeclaration node); public abstract boolean visitConstructorDeclaration(ConstructorDeclaration node); public abstract boolean visitSuperConstructorInvocation(SuperConstructorInvocation node); public abstract boolean visitAlternateConstructorInvocation(AlternateConstructorInvocation node); public abstract boolean visitInstanceInitializer(InstanceInitializer node); public abstract boolean visitStaticInitializer(StaticInitializer node); public abstract boolean visitClassDeclaration(ClassDeclaration node); public abstract boolean visitInterfaceDeclaration(InterfaceDeclaration node); public abstract boolean visitEnumDeclaration(EnumDeclaration node); public abstract boolean visitEnumConstant(EnumConstant node); public abstract boolean visitAnnotationDeclaration(AnnotationDeclaration node); public abstract boolean visitAnnotationMethodDeclaration(AnnotationMethodDeclaration node); public abstract boolean visitCompilationUnit(CompilationUnit node); public abstract boolean visitPackageDeclaration(PackageDeclaration node); public abstract boolean visitImportDeclaration(ImportDeclaration node); //Various public abstract boolean visitParseArtefact(Node node); public abstract boolean visitComment(Comment node); /** * If a visitX method return {@code false}, then first all children are visited, and then this {@code endVisit} method is called. *

* NB: If {@code true} is returned from a visitX method, no {@code endVisit} call is made for that {@code Node}. */ public abstract void endVisit(Node node); }