package net.jangaroo.jooc.ast;
import java.io.IOException;
/**
* Visitor for the ActionScript abstract syntax tree.
*/
public interface AstVisitor {
void visitTypeRelation(TypeRelation typeRelation) throws IOException;
void visitAnnotationParameter(AnnotationParameter annotationParameter) throws IOException;
void visitExtends(Extends anExtends) throws IOException;
void visitInitializer(Initializer initializer) throws IOException;
void visitObjectField(ObjectField objectField) throws IOException;
void visitForInitializer(ForInitializer forInitializer) throws IOException;
void visitCompilationUnit(CompilationUnit compilationUnit) throws IOException;
void visitIde(Ide ide) throws IOException;
void visitQualifiedIde(QualifiedIde qualifiedIde) throws IOException;
void visitIdeWithTypeParam(IdeWithTypeParam ideWithTypeParam) throws IOException;
void visitNamespacedIde(NamespacedIde namespacedIde) throws IOException;
void visitImplements(Implements anImplements) throws IOException;
void visitType(Type type) throws IOException;
void visitObjectLiteral(ObjectLiteral objectLiteral) throws IOException;
void visitIdeExpression(IdeExpr ideExpr) throws IOException;
<T extends Expr> void visitParenthesizedExpr(ParenthesizedExpr<T> parenthesizedExpr) throws IOException;
void visitArrayLiteral(ArrayLiteral arrayLiteral) throws IOException;
void visitLiteralExpr(LiteralExpr literalExpr) throws IOException;
void visitPostfixOpExpr(PostfixOpExpr postfixOpExpr) throws IOException;
void visitDotExpr(DotExpr dotExpr) throws IOException;
void visitPrefixOpExpr(PrefixOpExpr prefixOpExpr) throws IOException;
void visitBinaryOpExpr(BinaryOpExpr binaryOpExpr) throws IOException;
void visitAssignmentOpExpr(AssignmentOpExpr assignmentOpExpr) throws IOException;
void visitInfixOpExpr(InfixOpExpr infixOpExpr) throws IOException;
void visitAsExpr(AsExpr asExpr) throws IOException;
void visitIsExpr(IsExpr isExpr) throws IOException;
void visitConditionalExpr(ConditionalExpr conditionalExpr) throws IOException;
void visitArrayIndexExpr(ArrayIndexExpr arrayIndexExpr) throws IOException;
<T extends AstNode> void visitCommaSeparatedList(CommaSeparatedList<T> nodeTypeCommaSeparatedList) throws IOException;
void visitParameters(Parameters parameters) throws IOException;
void visitFunctionExpr(FunctionExpr functionExpr) throws IOException;
void visitVectorLiteral(VectorLiteral vectorLiteral) throws IOException;
void visitApplyExpr(ApplyExpr applyExpr) throws IOException;
void visitNewExpr(NewExpr newExpr) throws IOException;
void visitClassBody(ClassBody classBody) throws IOException;
void visitBlockStatement(BlockStatement blockStatement) throws IOException;
void visitDefaultStatement(DefaultStatement defaultStatement) throws IOException;
void visitLabeledStatement(LabeledStatement labeledStatement) throws IOException;
void visitIfStatement(IfStatement ifStatement) throws IOException;
void visitCaseStatement(CaseStatement caseStatement) throws IOException;
void visitTryStatement(TryStatement tryStatement) throws IOException;
void visitCatch(Catch aCatch) throws IOException;
void visitForInStatement(ForInStatement forInStatement) throws IOException;
void visitWhileStatement(WhileStatement whileStatement) throws IOException;
void visitForStatement(ForStatement forStatement) throws IOException;
void visitDoStatement(DoStatement doStatement) throws IOException;
void visitSwitchStatement(SwitchStatement switchStatement) throws IOException;
void visitSemicolonTerminatedStatement(SemicolonTerminatedStatement semicolonTerminatedStatement) throws IOException;
void visitContinueStatement(ContinueStatement continueStatement) throws IOException;
void visitBreakStatement(BreakStatement breakStatement) throws IOException;
void visitThrowStatement(ThrowStatement throwStatement) throws IOException;
void visitReturnStatement(ReturnStatement returnStatement) throws IOException;
void visitEmptyStatement(EmptyStatement emptyStatement) throws IOException;
void visitEmptyDeclaration(EmptyDeclaration emptyDeclaration) throws IOException;
void visitParameter(Parameter parameter) throws IOException;
void visitVariableDeclaration(VariableDeclaration variableDeclaration) throws IOException;
void visitFunctionDeclaration(FunctionDeclaration functionDeclaration) throws IOException;
void visitClassDeclaration(ClassDeclaration classDeclaration) throws IOException;
void visitPredefinedTypeDeclaration(PredefinedTypeDeclaration predefinedTypeDeclaration) throws IOException;
void visitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration) throws IOException;
void visitPackageDeclaration(PackageDeclaration packageDeclaration) throws IOException;
void visitSuperConstructorCallStatement(SuperConstructorCallStatement superConstructorCallStatement) throws IOException;
void visitAnnotation(Annotation annotation) throws IOException;
void visitUseNamespaceDirective(UseNamespaceDirective useNamespaceDirective) throws IOException;
void visitImportDirective(ImportDirective importDirective) throws IOException;
}