// Generated from Minijava.g4 by ANTLR 4.4
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 MinijavaParser}.
*
* @param The return type of the visit operation. Use {@link Void} for
* operations with no return type.
*/
public interface MinijavaVisitor extends ParseTreeVisitor {
/**
* Visit a parse tree produced by the {@code thisExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitThisExpression(@NotNull MinijavaParser.ThisExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code variableAssignmentStatement}
* labeled alternative in {@link MinijavaParser#statement}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitVariableAssignmentStatement(@NotNull MinijavaParser.VariableAssignmentStatementContext ctx);
/**
* Visit a parse tree produced by the {@code powExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitPowExpression(@NotNull MinijavaParser.PowExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code addExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitAddExpression(@NotNull MinijavaParser.AddExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code arrayInstantiationExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitArrayInstantiationExpression(@NotNull MinijavaParser.ArrayInstantiationExpressionContext ctx);
/**
* Visit a parse tree produced by {@link MinijavaParser#elseBlock}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitElseBlock(@NotNull MinijavaParser.ElseBlockContext ctx);
/**
* Visit a parse tree produced by {@link MinijavaParser#type}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitType(@NotNull MinijavaParser.TypeContext ctx);
/**
* Visit a parse tree produced by the {@code andExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitAndExpression(@NotNull MinijavaParser.AndExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code ltExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitLtExpression(@NotNull MinijavaParser.LtExpressionContext ctx);
/**
* Visit a parse tree produced by {@link MinijavaParser#parameter}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitParameter(@NotNull MinijavaParser.ParameterContext ctx);
/**
* Visit a parse tree produced by the {@code arrayAccessExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitArrayAccessExpression(@NotNull MinijavaParser.ArrayAccessExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code nestedStatement}
* labeled alternative in {@link MinijavaParser#statement}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitNestedStatement(@NotNull MinijavaParser.NestedStatementContext ctx);
/**
* Visit a parse tree produced by {@link MinijavaParser#mainClass}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitMainClass(@NotNull MinijavaParser.MainClassContext ctx);
/**
* Visit a parse tree produced by {@link MinijavaParser#parameterList}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitParameterList(@NotNull MinijavaParser.ParameterListContext ctx);
/**
* Visit a parse tree produced by {@link MinijavaParser#fieldDeclaration}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitFieldDeclaration(@NotNull MinijavaParser.FieldDeclarationContext ctx);
/**
* Visit a parse tree produced by the {@code methodCallExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitMethodCallExpression(@NotNull MinijavaParser.MethodCallExpressionContext ctx);
/**
* Visit a parse tree produced by {@link MinijavaParser#localDeclaration}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitLocalDeclaration(@NotNull MinijavaParser.LocalDeclarationContext ctx);
/**
* Visit a parse tree produced by the {@code ifElseStatement}
* labeled alternative in {@link MinijavaParser#statement}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitIfElseStatement(@NotNull MinijavaParser.IfElseStatementContext ctx);
/**
* Visit a parse tree produced by {@link MinijavaParser#methodDeclaration}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitMethodDeclaration(@NotNull MinijavaParser.MethodDeclarationContext ctx);
/**
* Visit a parse tree produced by {@link MinijavaParser#varDeclaration}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitVarDeclaration(@NotNull MinijavaParser.VarDeclarationContext ctx);
/**
* Visit a parse tree produced by {@link MinijavaParser#whileBlock}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitWhileBlock(@NotNull MinijavaParser.WhileBlockContext ctx);
/**
* Visit a parse tree produced by the {@code intLitExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitIntLitExpression(@NotNull MinijavaParser.IntLitExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code booleanLitExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitBooleanLitExpression(@NotNull MinijavaParser.BooleanLitExpressionContext ctx);
/**
* Visit a parse tree produced by {@link MinijavaParser#ifBlock}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitIfBlock(@NotNull MinijavaParser.IfBlockContext ctx);
/**
* Visit a parse tree produced by the {@code subExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitSubExpression(@NotNull MinijavaParser.SubExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code mulExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitMulExpression(@NotNull MinijavaParser.MulExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code identifierExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitIdentifierExpression(@NotNull MinijavaParser.IdentifierExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code notExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitNotExpression(@NotNull MinijavaParser.NotExpressionContext ctx);
/**
* Visit a parse tree produced by {@link MinijavaParser#classDeclaration}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitClassDeclaration(@NotNull MinijavaParser.ClassDeclarationContext ctx);
/**
* Visit a parse tree produced by the {@code arrayAssignmentStatement}
* labeled alternative in {@link MinijavaParser#statement}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitArrayAssignmentStatement(@NotNull MinijavaParser.ArrayAssignmentStatementContext ctx);
/**
* Visit a parse tree produced by the {@code printStatement}
* labeled alternative in {@link MinijavaParser#statement}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitPrintStatement(@NotNull MinijavaParser.PrintStatementContext ctx);
/**
* Visit a parse tree produced by {@link MinijavaParser#goal}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitGoal(@NotNull MinijavaParser.GoalContext ctx);
/**
* Visit a parse tree produced by {@link MinijavaParser#methodBody}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitMethodBody(@NotNull MinijavaParser.MethodBodyContext ctx);
/**
* Visit a parse tree produced by the {@code whileStatement}
* labeled alternative in {@link MinijavaParser#statement}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitWhileStatement(@NotNull MinijavaParser.WhileStatementContext ctx);
/**
* Visit a parse tree produced by the {@code parenExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitParenExpression(@NotNull MinijavaParser.ParenExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code objectInstantiationExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitObjectInstantiationExpression(@NotNull MinijavaParser.ObjectInstantiationExpressionContext ctx);
/**
* Visit a parse tree produced by the {@code arrayLengthExpression}
* labeled alternative in {@link MinijavaParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitArrayLengthExpression(@NotNull MinijavaParser.ArrayLengthExpressionContext ctx);
}