#region license
// Copyright (c) 2009 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 astgen.boo.
//

namespace Boo.Lang.Compiler.Ast
{
	using System;
	
	public interface IAstVisitor
	{
		void OnCompileUnit(CompileUnit node);
		void OnExplicitMemberInfo(ExplicitMemberInfo node);
		void OnSimpleTypeReference(SimpleTypeReference node);
		void OnArrayTypeReference(ArrayTypeReference node);
		void OnCallableTypeReference(CallableTypeReference node);
		void OnGenericTypeReference(GenericTypeReference node);
		void OnGenericTypeDefinitionReference(GenericTypeDefinitionReference node);
		void OnCallableDefinition(CallableDefinition node);
		void OnNamespaceDeclaration(NamespaceDeclaration node);
		void OnImport(Import node);
		void OnModule(Module node);
		void OnClassDefinition(ClassDefinition node);
		void OnStructDefinition(StructDefinition 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 OnBlockExpression(BlockExpression node);
		void OnMethod(Method node);
		void OnConstructor(Constructor node);
		void OnDestructor(Destructor node);
		void OnParameterDeclaration(ParameterDeclaration node);
		void OnGenericParameterDeclaration(GenericParameterDeclaration node);
		void OnDeclaration(Declaration node);
		void OnAttribute(Attribute node);
		void OnStatementModifier(StatementModifier node);
		void OnGotoStatement(GotoStatement node);
		void OnLabelStatement(LabelStatement 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 OnBreakStatement(BreakStatement node);
		void OnContinueStatement(ContinueStatement 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 OnConditionalExpression(ConditionalExpression node);
		void OnReferenceExpression(ReferenceExpression node);
		void OnMemberReferenceExpression(MemberReferenceExpression node);
		void OnGenericReferenceExpression(GenericReferenceExpression node);
		void OnQuasiquoteExpression(QuasiquoteExpression node);
		void OnStringLiteralExpression(StringLiteralExpression node);
		void OnCharLiteralExpression(CharLiteralExpression 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 OnSpliceExpression(SpliceExpression node);
		void OnSpliceTypeReference(SpliceTypeReference node);
		void OnSpliceMemberReferenceExpression(SpliceMemberReferenceExpression node);
		void OnSpliceTypeMember(SpliceTypeMember node);
		void OnSpliceParameterDeclaration(SpliceParameterDeclaration node);
		void OnExpressionInterpolationExpression(ExpressionInterpolationExpression node);
		void OnHashLiteralExpression(HashLiteralExpression node);
		void OnListLiteralExpression(ListLiteralExpression node);
		void OnArrayLiteralExpression(ArrayLiteralExpression node);
		void OnGeneratorExpression(GeneratorExpression node);
		void OnExtendedGeneratorExpression(ExtendedGeneratorExpression node);
		void OnSlice(Slice node);
		void OnSlicingExpression(SlicingExpression node);
		void OnTryCastExpression(TryCastExpression node);
		void OnCastExpression(CastExpression node);
		void OnTypeofExpression(TypeofExpression node);
		void OnCustomStatement(CustomStatement node);
		void OnStatementTypeMember(StatementTypeMember node);

	}
}

