1 /*******************************************************************************
 
   2  * Copyright (c) 2000, 2001, 2002 International Business Machines Corp. and others.
 
   3  * All rights reserved. This program and the accompanying materials 
 
   4  * are made available under the terms of the Common Public License v0.5 
 
   5  * which accompanies this distribution, and is available at
 
   6  * http://www.eclipse.org/legal/cpl-v05.html
 
   9  *     IBM Corporation - initial API and implementation
 
  10  ******************************************************************************/
 
  11 package net.sourceforge.phpdt.internal.compiler;
 
  13 import net.sourceforge.phpdt.core.compiler.*;
 
  14 import net.sourceforge.phpdt.internal.compiler.ast.*; 
 
  15 import net.sourceforge.phpdt.internal.compiler.lookup.*;
 
  18  * A visitor interface for interating through the parse tree.
 
  20 public interface IAbstractSyntaxTreeVisitor {
 
  21         void acceptProblem(IProblem problem);
 
  22         void endVisit(AllocationExpression allocationExpression, BlockScope scope);
 
  23         void endVisit(AND_AND_Expression and_and_Expression, BlockScope scope);
 
  24         void endVisit(AnonymousLocalTypeDeclaration anonymousTypeDeclaration, BlockScope scope);
 
  25         void endVisit(Argument argument, BlockScope scope);
 
  26         void endVisit(ArrayAllocationExpression arrayAllocationExpression, BlockScope scope);
 
  27         void endVisit(ArrayInitializer arrayInitializer, BlockScope scope);
 
  28         void endVisit(ArrayQualifiedTypeReference arrayQualifiedTypeReference, BlockScope scope);
 
  29         void endVisit(ArrayQualifiedTypeReference arrayQualifiedTypeReference, ClassScope scope);
 
  30         void endVisit(ArrayReference arrayReference, BlockScope scope);
 
  31         void endVisit(ArrayTypeReference arrayTypeReference, BlockScope scope);
 
  32         void endVisit(ArrayTypeReference arrayTypeReference, ClassScope scope);
 
  33         void endVisit(AssertStatement assertStatement, BlockScope scope);
 
  34         void endVisit(Assignment assignment, BlockScope scope);
 
  35         void endVisit(BinaryExpression binaryExpression, BlockScope scope);
 
  36         void endVisit(Block block, BlockScope scope);
 
  37         void endVisit(Break breakStatement, BlockScope scope);
 
  38         void endVisit(Case caseStatement, BlockScope scope);
 
  39         void endVisit(CastExpression castExpression, BlockScope scope);
 
  40         void endVisit(CharLiteral charLiteral, BlockScope scope);
 
  41         void endVisit(ClassLiteralAccess classLiteral, BlockScope scope);
 
  42         void endVisit(Clinit clinit, ClassScope scope);
 
  43         void endVisit(CompilationUnitDeclaration compilationUnitDeclaration, CompilationUnitScope scope);
 
  44         void endVisit(CompoundAssignment compoundAssignment, BlockScope scope);
 
  45         void endVisit(ConditionalExpression conditionalExpression, BlockScope scope);
 
  46         void endVisit(ConstructorDeclaration constructorDeclaration, ClassScope scope);
 
  47         void endVisit(Continue continueStatement, BlockScope scope);
 
  48         void endVisit(DefaultCase defaultCaseStatement, BlockScope scope);
 
  49         void endVisit(DoStatement doStatement, BlockScope scope);
 
  50         void endVisit(DoubleLiteral doubleLiteral, BlockScope scope);
 
  51         void endVisit(EqualExpression equalExpression, BlockScope scope);
 
  52         void endVisit(EmptyStatement statement, BlockScope scope);
 
  53         void endVisit(ExplicitConstructorCall explicitConstructor, BlockScope scope);
 
  54         void endVisit(ExtendedStringLiteral extendedStringLiteral, BlockScope scope);
 
  55         void endVisit(FalseLiteral falseLiteral, BlockScope scope);
 
  56         void endVisit(FieldDeclaration fieldDeclaration, MethodScope scope);
 
  57         void endVisit(FieldReference fieldReference, BlockScope scope);
 
  58         void endVisit(FloatLiteral floatLiteral, BlockScope scope);
 
  59         void endVisit(ForStatement forStatement, BlockScope scope);
 
  60         void endVisit(IfStatement ifStatement, BlockScope scope);
 
  61         void endVisit(ImportReference importRef, CompilationUnitScope scope);
 
  62         void endVisit(Initializer initializer, MethodScope scope);
 
  63         void endVisit(InstanceOfExpression instanceOfExpression, BlockScope scope);
 
  64         void endVisit(IntLiteral intLiteral, BlockScope scope);
 
  65         void endVisit(LabeledStatement labeledStatement, BlockScope scope);
 
  66         void endVisit(LocalDeclaration localDeclaration, BlockScope scope);
 
  67         void endVisit(LocalTypeDeclaration localTypeDeclaration, BlockScope scope);
 
  68         void endVisit(LongLiteral longLiteral, BlockScope scope);
 
  69         void endVisit(MemberTypeDeclaration memberTypeDeclaration, ClassScope scope);
 
  70         void endVisit(MessageSend messageSend, BlockScope scope);
 
  71         void endVisit(MethodDeclaration methodDeclaration, ClassScope scope);
 
  72         void endVisit(NullLiteral nullLiteral, BlockScope scope);
 
  73         void endVisit(OR_OR_Expression or_or_Expression, BlockScope scope);
 
  74         void endVisit(PostfixExpression postfixExpression, BlockScope scope);
 
  75         void endVisit(PrefixExpression prefixExpression, BlockScope scope);
 
  76         void endVisit(QualifiedAllocationExpression qualifiedAllocationExpression, BlockScope scope);
 
  77         void endVisit(QualifiedNameReference qualifiedNameReference, BlockScope scope);
 
  78         void endVisit(QualifiedSuperReference qualifiedSuperReference, BlockScope scope);
 
  79         void endVisit(QualifiedThisReference qualifiedThisReference, BlockScope scope);
 
  80         void endVisit(QualifiedTypeReference qualifiedTypeReference, BlockScope scope);
 
  81         void endVisit(QualifiedTypeReference qualifiedTypeReference, ClassScope scope);
 
  82         void endVisit(ReturnStatement returnStatement, BlockScope scope);
 
  83         void endVisit(SingleNameReference singleNameReference, BlockScope scope);
 
  84         void endVisit(SingleTypeReference singleTypeReference, BlockScope scope);
 
  85         void endVisit(SingleTypeReference singleTypeReference, ClassScope scope);
 
  86         void endVisit(StringLiteral stringLiteral, BlockScope scope);
 
  87         void endVisit(SuperReference superReference, BlockScope scope);
 
  88         void endVisit(SwitchStatement switchStatement, BlockScope scope);
 
  89         void endVisit(SynchronizedStatement synchronizedStatement, BlockScope scope);
 
  90         void endVisit(ThisReference thisReference, BlockScope scope);
 
  91         void endVisit(ThrowStatement throwStatement, BlockScope scope);
 
  92         void endVisit(TrueLiteral trueLiteral, BlockScope scope);
 
  93         void endVisit(TryStatement tryStatement, BlockScope scope);
 
  94         void endVisit(TypeDeclaration typeDeclaration, CompilationUnitScope scope);
 
  95         void endVisit(UnaryExpression unaryExpression, BlockScope scope);
 
  96         void endVisit(WhileStatement whileStatement, BlockScope scope);
 
  97         boolean visit(AllocationExpression allocationExpression, BlockScope scope);
 
  98         boolean visit(AND_AND_Expression and_and_Expression, BlockScope scope);
 
  99         boolean visit(AnonymousLocalTypeDeclaration anonymousTypeDeclaration, BlockScope scope);
 
 100         boolean visit(Argument argument, BlockScope scope);
 
 101         boolean visit(ArrayAllocationExpression arrayAllocationExpression, BlockScope scope);
 
 102         boolean visit(ArrayInitializer arrayInitializer, BlockScope scope);
 
 103         boolean visit(ArrayQualifiedTypeReference arrayQualifiedTypeReference, BlockScope scope);
 
 104         boolean visit(ArrayQualifiedTypeReference arrayQualifiedTypeReference, ClassScope scope);
 
 105         boolean visit(ArrayReference arrayReference, BlockScope scope);
 
 106         boolean visit(ArrayTypeReference arrayTypeReference, BlockScope scope);
 
 107         boolean visit(ArrayTypeReference arrayTypeReference, ClassScope scope);
 
 108         boolean visit(AssertStatement assertStatement, BlockScope scope);
 
 109         boolean visit(Assignment assignment, BlockScope scope);
 
 110         boolean visit(BinaryExpression binaryExpression, BlockScope scope);
 
 111         boolean visit(Block block, BlockScope scope);
 
 112         boolean visit(Break breakStatement, BlockScope scope);
 
 113         boolean visit(Case caseStatement, BlockScope scope);
 
 114         boolean visit(CastExpression castExpression, BlockScope scope);
 
 115         boolean visit(CharLiteral charLiteral, BlockScope scope);
 
 116         boolean visit(ClassLiteralAccess classLiteral, BlockScope scope);
 
 117         boolean visit(Clinit clinit, ClassScope scope);
 
 118         boolean visit(CompilationUnitDeclaration compilationUnitDeclaration, CompilationUnitScope scope);
 
 119         boolean visit(CompoundAssignment compoundAssignment, BlockScope scope);
 
 120         boolean visit(ConditionalExpression conditionalExpression, BlockScope scope);
 
 121         boolean visit(ConstructorDeclaration constructorDeclaration, ClassScope scope);
 
 122         boolean visit(Continue continueStatement, BlockScope scope);
 
 123         boolean visit(DefaultCase defaultCaseStatement, BlockScope scope);
 
 124         boolean visit(DoStatement doStatement, BlockScope scope);
 
 125         boolean visit(DoubleLiteral doubleLiteral, BlockScope scope);
 
 126         boolean visit(EqualExpression equalExpression, BlockScope scope);
 
 127         boolean visit(EmptyStatement statement, BlockScope scope);
 
 128         boolean visit(ExplicitConstructorCall explicitConstructor, BlockScope scope);
 
 129         boolean visit(ExtendedStringLiteral extendedStringLiteral, BlockScope scope);
 
 130         boolean visit(FalseLiteral falseLiteral, BlockScope scope);
 
 131         boolean visit(FieldDeclaration fieldDeclaration, MethodScope scope);
 
 132         boolean visit(FieldReference fieldReference, BlockScope scope);
 
 133         boolean visit(FloatLiteral floatLiteral, BlockScope scope);
 
 134         boolean visit(ForStatement forStatement, BlockScope scope);
 
 135         boolean visit(IfStatement ifStatement, BlockScope scope);
 
 136         boolean visit(ImportReference importRef, CompilationUnitScope scope);
 
 137         boolean visit(Initializer initializer, MethodScope scope);
 
 138         boolean visit(InstanceOfExpression instanceOfExpression, BlockScope scope);
 
 139         boolean visit(IntLiteral intLiteral, BlockScope scope);
 
 140         boolean visit(LabeledStatement labeledStatement, BlockScope scope);
 
 141         boolean visit(LocalDeclaration localDeclaration, BlockScope scope);
 
 142         boolean visit(LocalTypeDeclaration localTypeDeclaration, BlockScope scope);
 
 143         boolean visit(LongLiteral longLiteral, BlockScope scope);
 
 144         boolean visit(MemberTypeDeclaration memberTypeDeclaration, ClassScope scope);
 
 145         boolean visit(MessageSend messageSend, BlockScope scope);
 
 146         boolean visit(MethodDeclaration methodDeclaration, ClassScope scope);
 
 147         boolean visit(NullLiteral nullLiteral, BlockScope scope);
 
 148         boolean visit(OR_OR_Expression or_or_Expression, BlockScope scope);
 
 149         boolean visit(PostfixExpression postfixExpression, BlockScope scope);
 
 150         boolean visit(PrefixExpression prefixExpression, BlockScope scope);
 
 151         boolean visit(QualifiedAllocationExpression qualifiedAllocationExpression, BlockScope scope);
 
 152         boolean visit(QualifiedNameReference qualifiedNameReference, BlockScope scope);
 
 153         boolean visit(QualifiedSuperReference qualifiedSuperReference, BlockScope scope);
 
 154         boolean visit(QualifiedThisReference qualifiedThisReference, BlockScope scope);
 
 155         boolean visit(QualifiedTypeReference qualifiedTypeReference, BlockScope scope);
 
 156         boolean visit(QualifiedTypeReference qualifiedTypeReference, ClassScope scope);
 
 157         boolean visit(ReturnStatement returnStatement, BlockScope scope);
 
 158         boolean visit(SingleNameReference singleNameReference, BlockScope scope);
 
 159         boolean visit(SingleTypeReference singleTypeReference, BlockScope scope);
 
 160         boolean visit(SingleTypeReference singleTypeReference, ClassScope scope);
 
 161         boolean visit(StringLiteral stringLiteral, BlockScope scope);
 
 162         boolean visit(SuperReference superReference, BlockScope scope);
 
 163         boolean visit(SwitchStatement switchStatement, BlockScope scope);
 
 164         boolean visit(SynchronizedStatement synchronizedStatement, BlockScope scope);
 
 165         boolean visit(ThisReference thisReference, BlockScope scope);
 
 166         boolean visit(ThrowStatement throwStatement, BlockScope scope);
 
 167         boolean visit(TrueLiteral trueLiteral, BlockScope scope);
 
 168         boolean visit(TryStatement tryStatement, BlockScope scope);
 
 169         boolean visit(TypeDeclaration typeDeclaration, CompilationUnitScope scope);
 
 170         boolean visit(UnaryExpression unaryExpression, BlockScope scope);
 
 171         boolean visit(WhileStatement whileStatement, BlockScope scope);