#region license
// Copyright (c) 2003, 2004, Rodrigo B. de Oliveira (rbo@acm.org)
// All rights reserved.
// 
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
// 
//     * Redistributions of source code must retain the above copyright notice,
//     this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above copyright notice,
//     this list of conditions and the following disclaimer in the documentation
//     and/or other materials provided with the distribution.
//     * Neither the name of Rodrigo B. de Oliveira nor the names of its
//     contributors may be used to endorse or promote products derived from this
//     software without specific prior written permission.
// 
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#endregion

//
// DO NOT EDIT THIS FILE!
//
// This file was generated automatically by
// astgenerator.boo on 12/9/2004 16:02:59
//

namespace Boo.Lang.Compiler.Ast
{
	using System;
	
	public interface IAstVisitor
	{
		void OnCompileUnit(CompileUnit node);
		void OnSimpleTypeReference(SimpleTypeReference node);
		void OnArrayTypeReference(ArrayTypeReference node);
		void OnCallableTypeReference(CallableTypeReference node);
		void OnCallableDefinition(CallableDefinition node);
		void OnNamespaceDeclaration(NamespaceDeclaration node);
		void OnImport(Import node);
		void OnModule(Module node);
		void OnClassDefinition(ClassDefinition node);
		void OnInterfaceDefinition(InterfaceDefinition node);
		void OnEnumDefinition(EnumDefinition node);
		void OnEnumMember(EnumMember node);
		void OnField(Field node);
		void OnProperty(Property node);
		void OnEvent(Event node);
		void OnLocal(Local node);
		void OnCallableBlockExpression(CallableBlockExpression node);
		void OnMethod(Method node);
		void OnConstructor(Constructor node);
		void OnParameterDeclaration(ParameterDeclaration node);
		void OnDeclaration(Declaration node);
		void OnAttribute(Attribute node);
		void OnStatementModifier(StatementModifier node);
		void OnBlock(Block node);
		void OnDeclarationStatement(DeclarationStatement node);
		void OnMacroStatement(MacroStatement node);
		void OnTryStatement(TryStatement node);
		void OnExceptionHandler(ExceptionHandler node);
		void OnIfStatement(IfStatement node);
		void OnUnlessStatement(UnlessStatement node);
		void OnForStatement(ForStatement node);
		void OnWhileStatement(WhileStatement node);
		void OnGivenStatement(GivenStatement node);
		void OnWhenClause(WhenClause node);
		void OnBreakStatement(BreakStatement node);
		void OnContinueStatement(ContinueStatement node);
		void OnRetryStatement(RetryStatement node);
		void OnReturnStatement(ReturnStatement node);
		void OnYieldStatement(YieldStatement node);
		void OnRaiseStatement(RaiseStatement node);
		void OnUnpackStatement(UnpackStatement node);
		void OnExpressionStatement(ExpressionStatement node);
		void OnOmittedExpression(OmittedExpression node);
		void OnExpressionPair(ExpressionPair node);
		void OnMethodInvocationExpression(MethodInvocationExpression node);
		void OnUnaryExpression(UnaryExpression node);
		void OnBinaryExpression(BinaryExpression node);
		void OnReferenceExpression(ReferenceExpression node);
		void OnMemberReferenceExpression(MemberReferenceExpression node);
		void OnStringLiteralExpression(StringLiteralExpression node);
		void OnTimeSpanLiteralExpression(TimeSpanLiteralExpression node);
		void OnIntegerLiteralExpression(IntegerLiteralExpression node);
		void OnDoubleLiteralExpression(DoubleLiteralExpression node);
		void OnNullLiteralExpression(NullLiteralExpression node);
		void OnSelfLiteralExpression(SelfLiteralExpression node);
		void OnSuperLiteralExpression(SuperLiteralExpression node);
		void OnBoolLiteralExpression(BoolLiteralExpression node);
		void OnRELiteralExpression(RELiteralExpression node);
		void OnExpressionInterpolationExpression(ExpressionInterpolationExpression node);
		void OnHashLiteralExpression(HashLiteralExpression node);
		void OnListLiteralExpression(ListLiteralExpression node);
		void OnArrayLiteralExpression(ArrayLiteralExpression node);
		void OnGeneratorExpression(GeneratorExpression node);
		void OnSlicingExpression(SlicingExpression node);
		void OnAsExpression(AsExpression node);
		void OnCastExpression(CastExpression node);
		void OnTypeofExpression(TypeofExpression node);

	}
}
