// Generated from PreprocessorParser.g4 by ANTLR 4.13.2
package cloud.lesh.CPUSim64;
import org.antlr.v4.runtime.tree.ParseTreeVisitor;

/**
 * This interface defines a complete generic visitor for a parse tree produced
 * by {@link PreprocessorParser}.
 *
 * @param <T> The return type of the visit operation. Use {@link Void} for
 * operations with no return type.
 */
public interface PreprocessorParserVisitor<T> extends ParseTreeVisitor<T> {
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#preproc}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPreproc(PreprocessorParser.PreprocContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#codeLine}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCodeLine(PreprocessorParser.CodeLineContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#directive}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDirective(PreprocessorParser.DirectiveContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#infoDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInfoDir(PreprocessorParser.InfoDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#errorDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitErrorDir(PreprocessorParser.ErrorDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#includeDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIncludeDir(PreprocessorParser.IncludeDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#defineDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDefineDir(PreprocessorParser.DefineDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#undefDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitUndefDir(PreprocessorParser.UndefDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#callDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCallDir(PreprocessorParser.CallDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#macroDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMacroDir(PreprocessorParser.MacroDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#argList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArgList(PreprocessorParser.ArgListContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#callArg}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCallArg(PreprocessorParser.CallArgContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#defFuncDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDefFuncDir(PreprocessorParser.DefFuncDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#defMacroDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDefMacroDir(PreprocessorParser.DefMacroDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#paramList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitParamList(PreprocessorParser.ParamListContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#globalDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitGlobalDir(PreprocessorParser.GlobalDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#svarDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSvarDir(PreprocessorParser.SvarDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#varDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitVarDir(PreprocessorParser.VarDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#fvarDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFvarDir(PreprocessorParser.FvarDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#identList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIdentList(PreprocessorParser.IdentListContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#returnDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitReturnDir(PreprocessorParser.ReturnDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#freturnDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFreturnDir(PreprocessorParser.FreturnDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#ifBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIfBlock(PreprocessorParser.IfBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#ifDefBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIfDefBlock(PreprocessorParser.IfDefBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#ifNDefBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIfNDefBlock(PreprocessorParser.IfNDefBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#elseifClause}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitElseifClause(PreprocessorParser.ElseifClauseContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#elseClause}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitElseClause(PreprocessorParser.ElseClauseContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#forBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitForBlock(PreprocessorParser.ForBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#whileBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitWhileBlock(PreprocessorParser.WhileBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#doWhileBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDoWhileBlock(PreprocessorParser.DoWhileBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#breakDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBreakDir(PreprocessorParser.BreakDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#continueDir}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitContinueDir(PreprocessorParser.ContinueDirContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#ifCondBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIfCondBlock(PreprocessorParser.IfCondBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#ifCondSRBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIfCondSRBlock(PreprocessorParser.IfCondSRBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#elseifCondClause}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitElseifCondClause(PreprocessorParser.ElseifCondClauseContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#elseCondClause}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitElseCondClause(PreprocessorParser.ElseCondClauseContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#syncBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSyncBlock(PreprocessorParser.SyncBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#block}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBlock(PreprocessorParser.BlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#expr}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExpr(PreprocessorParser.ExprContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#primary}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimary(PreprocessorParser.PrimaryContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#cmpOp}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCmpOp(PreprocessorParser.CmpOpContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#literal}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLiteral(PreprocessorParser.LiteralContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#constExpr}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConstExpr(PreprocessorParser.ConstExprContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#addExpr}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAddExpr(PreprocessorParser.AddExprContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#mulExpr}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMulExpr(PreprocessorParser.MulExprContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#unaryExpr}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitUnaryExpr(PreprocessorParser.UnaryExprContext ctx);
	/**
	 * Visit a parse tree produced by {@link PreprocessorParser#const}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConst(PreprocessorParser.ConstContext ctx);
}