// Generated from C:\Users\EUGENIO CARVALHO\Desktop\projects\Ivannosys\src\grammar\IvannosysGrammar.g4 by ANTLR 4.2.2
package grammar;

    import java.util.HashMap;
    import java.util.Stack;

import org.antlr.v4.runtime.misc.NotNull;
import org.antlr.v4.runtime.tree.ParseTreeVisitor;

/**
 * This interface defines a complete generic visitor for a parse tree produced
 * by {@link IvannosysGrammarParser}.
 *
 * @param <T> The return type of the visit operation. Use {@link Void} for
 * operations with no return type.
 */
public interface IvannosysGrammarVisitor<T> extends ParseTreeVisitor<T> {
	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExpression(@NotNull IvannosysGrammarParser.ExpressionContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#expression_list}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExpression_list(@NotNull IvannosysGrammarParser.Expression_listContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#func_literal}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFunc_literal(@NotNull IvannosysGrammarParser.Func_literalContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#func_spec}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFunc_spec(@NotNull IvannosysGrammarParser.Func_specContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#def_block}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDef_block(@NotNull IvannosysGrammarParser.Def_blockContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#arrayType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArrayType(@NotNull IvannosysGrammarParser.ArrayTypeContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#def_switch}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDef_switch(@NotNull IvannosysGrammarParser.Def_switchContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#test}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTest(@NotNull IvannosysGrammarParser.TestContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#assign_modify}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAssign_modify(@NotNull IvannosysGrammarParser.Assign_modifyContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#expression_list_typed}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExpression_list_typed(@NotNull IvannosysGrammarParser.Expression_list_typedContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#dec_var_part}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDec_var_part(@NotNull IvannosysGrammarParser.Dec_var_partContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#type}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitType(@NotNull IvannosysGrammarParser.TypeContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#catch_exception}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCatch_exception(@NotNull IvannosysGrammarParser.Catch_exceptionContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#dec_const_part}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDec_const_part(@NotNull IvannosysGrammarParser.Dec_const_partContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#unary_expr}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitUnary_expr(@NotNull IvannosysGrammarParser.Unary_exprContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#def_for}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDef_for(@NotNull IvannosysGrammarParser.Def_forContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#fallthroughStmt}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFallthroughStmt(@NotNull IvannosysGrammarParser.FallthroughStmtContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#import_part}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitImport_part(@NotNull IvannosysGrammarParser.Import_partContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#programPart}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitProgramPart(@NotNull IvannosysGrammarParser.ProgramPartContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#for_each}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFor_each(@NotNull IvannosysGrammarParser.For_eachContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#def_interface}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDef_interface(@NotNull IvannosysGrammarParser.Def_interfaceContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#build_stmt}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBuild_stmt(@NotNull IvannosysGrammarParser.Build_stmtContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#mapType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMapType(@NotNull IvannosysGrammarParser.MapTypeContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#try_catch}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTry_catch(@NotNull IvannosysGrammarParser.Try_catchContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#increment}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIncrement(@NotNull IvannosysGrammarParser.IncrementContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#index}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIndex(@NotNull IvannosysGrammarParser.IndexContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#buildtags}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBuildtags(@NotNull IvannosysGrammarParser.BuildtagsContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#def_case}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDef_case(@NotNull IvannosysGrammarParser.Def_caseContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#callExpr}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCallExpr(@NotNull IvannosysGrammarParser.CallExprContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#init}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInit(@NotNull IvannosysGrammarParser.InitContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#for_clause}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFor_clause(@NotNull IvannosysGrammarParser.For_clauseContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#throwStmt}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitThrowStmt(@NotNull IvannosysGrammarParser.ThrowStmtContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#composite}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitComposite(@NotNull IvannosysGrammarParser.CompositeContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#id_list}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitId_list(@NotNull IvannosysGrammarParser.Id_listContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitStatement(@NotNull IvannosysGrammarParser.StatementContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#initialization}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInitialization(@NotNull IvannosysGrammarParser.InitializationContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#flux_control}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFlux_control(@NotNull IvannosysGrammarParser.Flux_controlContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#return_stmt}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitReturn_stmt(@NotNull IvannosysGrammarParser.Return_stmtContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#return_dec}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitReturn_dec(@NotNull IvannosysGrammarParser.Return_decContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#def_assign_op}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDef_assign_op(@NotNull IvannosysGrammarParser.Def_assign_opContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#indexedType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIndexedType(@NotNull IvannosysGrammarParser.IndexedTypeContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#def_if}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDef_if(@NotNull IvannosysGrammarParser.Def_ifContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#finally_try}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFinally_try(@NotNull IvannosysGrammarParser.Finally_tryContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#range}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRange(@NotNull IvannosysGrammarParser.RangeContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#element_list}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitElement_list(@NotNull IvannosysGrammarParser.Element_listContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#structType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitStructType(@NotNull IvannosysGrammarParser.StructTypeContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#label_stmt}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLabel_stmt(@NotNull IvannosysGrammarParser.Label_stmtContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#keyed_element}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitKeyed_element(@NotNull IvannosysGrammarParser.Keyed_elementContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#def_function}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDef_function(@NotNull IvannosysGrammarParser.Def_functionContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#primitive_value}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimitive_value(@NotNull IvannosysGrammarParser.Primitive_valueContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#baseType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBaseType(@NotNull IvannosysGrammarParser.BaseTypeContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#def_if_block}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDef_if_block(@NotNull IvannosysGrammarParser.Def_if_blockContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#delete}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDelete(@NotNull IvannosysGrammarParser.DeleteContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#base_stmt}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBase_stmt(@NotNull IvannosysGrammarParser.Base_stmtContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#def_type}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDef_type(@NotNull IvannosysGrammarParser.Def_typeContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#dec_var_short}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDec_var_short(@NotNull IvannosysGrammarParser.Dec_var_shortContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#fieldDecl}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFieldDecl(@NotNull IvannosysGrammarParser.FieldDeclContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#expression_seletor}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExpression_seletor(@NotNull IvannosysGrammarParser.Expression_seletorContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#dec_var}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDec_var(@NotNull IvannosysGrammarParser.Dec_varContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#qualifiedId}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitQualifiedId(@NotNull IvannosysGrammarParser.QualifiedIdContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#buildtag}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBuildtag(@NotNull IvannosysGrammarParser.BuildtagContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#statement_list}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitStatement_list(@NotNull IvannosysGrammarParser.Statement_listContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#anon_field}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAnon_field(@NotNull IvannosysGrammarParser.Anon_fieldContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#newstmt}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitNewstmt(@NotNull IvannosysGrammarParser.NewstmtContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#dec_const}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDec_const(@NotNull IvannosysGrammarParser.Dec_constContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#operand}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitOperand(@NotNull IvannosysGrammarParser.OperandContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#imports}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitImports(@NotNull IvannosysGrammarParser.ImportsContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#primary_expr}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimary_expr(@NotNull IvannosysGrammarParser.Primary_exprContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#literalType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLiteralType(@NotNull IvannosysGrammarParser.LiteralTypeContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#inc_dec}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInc_dec(@NotNull IvannosysGrammarParser.Inc_decContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#arguments}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArguments(@NotNull IvannosysGrammarParser.ArgumentsContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#literal_value}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLiteral_value(@NotNull IvannosysGrammarParser.Literal_valueContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#typename}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTypename(@NotNull IvannosysGrammarParser.TypenameContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#receive_type}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitReceive_type(@NotNull IvannosysGrammarParser.Receive_typeContext ctx);

	/**
	 * Visit a parse tree produced by {@link IvannosysGrammarParser#literal}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLiteral(@NotNull IvannosysGrammarParser.LiteralContext ctx);
}