1 // Copyright 2020 Google LLC 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package com.google.api.generator.engine.ast; 16 17 public interface AstNodeVisitor { 18 /** Writes the syntatically-correct Java code representation of this node. */ visit(IdentifierNode identifier)19 public void visit(IdentifierNode identifier); 20 visit(TypeNode type)21 public void visit(TypeNode type); 22 visit(ScopeNode scope)23 public void visit(ScopeNode scope); 24 visit(AnnotationNode annotation)25 public void visit(AnnotationNode annotation); 26 visit(ArrayExpr expr)27 public void visit(ArrayExpr expr); 28 visit(ConcreteReference reference)29 public void visit(ConcreteReference reference); 30 visit(VaporReference reference)31 public void visit(VaporReference reference); 32 33 /** =============================== EXPRESSIONS =============================== */ visit(ValueExpr valueExpr)34 public void visit(ValueExpr valueExpr); 35 visit(VariableExpr variableExpr)36 public void visit(VariableExpr variableExpr); 37 visit(TernaryExpr tenaryExpr)38 public void visit(TernaryExpr tenaryExpr); 39 visit(AssignmentExpr assignmentExpr)40 public void visit(AssignmentExpr assignmentExpr); 41 visit(MethodInvocationExpr methodInvocationExpr)42 public void visit(MethodInvocationExpr methodInvocationExpr); 43 visit(CastExpr castExpr)44 public void visit(CastExpr castExpr); 45 visit(AnonymousClassExpr anonymousClassExpr)46 public void visit(AnonymousClassExpr anonymousClassExpr); 47 visit(ThrowExpr throwExpr)48 public void visit(ThrowExpr throwExpr); 49 visit(InstanceofExpr instanceofExpr)50 public void visit(InstanceofExpr instanceofExpr); 51 visit(NewObjectExpr newObjectExpr)52 public void visit(NewObjectExpr newObjectExpr); 53 visit(EnumRefExpr enumRefExpr)54 public void visit(EnumRefExpr enumRefExpr); 55 visit(ReturnExpr returnExpr)56 public void visit(ReturnExpr returnExpr); 57 visit(ReferenceConstructorExpr referenceConstructorExpr)58 public void visit(ReferenceConstructorExpr referenceConstructorExpr); 59 visit(ArithmeticOperationExpr arithmeticOperationExpr)60 public void visit(ArithmeticOperationExpr arithmeticOperationExpr); 61 visit(UnaryOperationExpr unaryOperationExpr)62 public void visit(UnaryOperationExpr unaryOperationExpr); 63 visit(RelationalOperationExpr relationalOperationExpr)64 public void visit(RelationalOperationExpr relationalOperationExpr); 65 visit(LogicalOperationExpr logicalOperationExpr)66 public void visit(LogicalOperationExpr logicalOperationExpr); 67 visit(AssignmentOperationExpr assignmentOperationExpr)68 public void visit(AssignmentOperationExpr assignmentOperationExpr); 69 visit(LambdaExpr lambdaExpr)70 public void visit(LambdaExpr lambdaExpr); 71 72 /** =============================== COMMENT =============================== */ visit(LineComment lineComment)73 public void visit(LineComment lineComment); 74 visit(BlockComment blockComment)75 public void visit(BlockComment blockComment); 76 visit(JavaDocComment javaDocComment)77 public void visit(JavaDocComment javaDocComment); 78 79 /** =============================== STATEMENTS =============================== */ visit(ExprStatement exprStatement)80 public void visit(ExprStatement exprStatement); 81 visit(BlockStatement blockStatement)82 public void visit(BlockStatement blockStatement); 83 visit(IfStatement ifStatement)84 public void visit(IfStatement ifStatement); 85 visit(ForStatement forStatement)86 public void visit(ForStatement forStatement); 87 visit(GeneralForStatement generalForStatement)88 public void visit(GeneralForStatement generalForStatement); 89 visit(WhileStatement whileStatement)90 public void visit(WhileStatement whileStatement); 91 visit(TryCatchStatement tryCatchStatement)92 public void visit(TryCatchStatement tryCatchStatement); 93 visit(SynchronizedStatement synchronizedStatement)94 public void visit(SynchronizedStatement synchronizedStatement); 95 visit(CommentStatement commentStatement)96 public void visit(CommentStatement commentStatement); 97 visit(EmptyLineStatement emptyLineStatement)98 public void visit(EmptyLineStatement emptyLineStatement); 99 visit(BreakStatement breakStatement)100 public void visit(BreakStatement breakStatement); 101 102 /** =============================== OTHER =============================== */ visit(MethodDefinition methodDefinition)103 public void visit(MethodDefinition methodDefinition); 104 visit(ClassDefinition classDefinition)105 public void visit(ClassDefinition classDefinition); 106 visit(PackageInfoDefinition packageInfoDefinition)107 public void visit(PackageInfoDefinition packageInfoDefinition); 108 } 109