package ast.walking;
import java.util.Stack;
import ast.ASTNode;
import ast.declarations.ClassDefStatement;
import ast.expressions.Argument;
import ast.expressions.AssignmentExpr;
import ast.expressions.CallExpression;
import ast.expressions.Identifier;
import ast.expressions.MemberAccess;
import ast.expressions.PrimaryExpression;
import ast.expressions.UnaryExpression;
import ast.functionDef.FunctionDef;
import ast.functionDef.Parameter;
import ast.functionDef.ParameterList;
import ast.statements.BreakStatement;
import ast.statements.CompoundStatement;
import ast.statements.Condition;
import ast.statements.ContinueStatement;
import ast.statements.DoStatement;
import ast.statements.ExpressionStatement;
import ast.statements.ForStatement;
import ast.statements.GotoStatement;
import ast.statements.IdentifierDeclStatement;
import ast.statements.IfStatement;
import ast.statements.Label;
import ast.statements.ReturnStatement;
import ast.statements.SwitchStatement;
import ast.statements.WhileStatement;
import databaseNodes.FileDatabaseNode;
public class ASTNodeVisitor
{
protected FileDatabaseNode currentFileNode;
protected Stack<Long> contextStack;
public void handleStartOfUnit(FileDatabaseNode aCurrentFileNode)
{
currentFileNode = aCurrentFileNode;
contextStack = new Stack<Long>();
}
public void visit(ASTNode item)
{
visitChildren(item);
}
public void visit(ParameterList item)
{
defaultHandler(item);
}
public void visit(Parameter item)
{
defaultHandler(item);
}
public void visit(FunctionDef item)
{
defaultHandler(item);
}
public void visit(ClassDefStatement item)
{
defaultHandler(item);
}
public void visit(IdentifierDeclStatement statementItem)
{
defaultHandler(statementItem);
}
public void visit(ExpressionStatement statementItem)
{
defaultHandler(statementItem);
}
public void visit(CallExpression expression)
{
defaultHandler(expression);
}
public void visit(Condition expression)
{
defaultHandler(expression);
}
public void visit(AssignmentExpr expression)
{
defaultHandler(expression);
}
public void visit(PrimaryExpression expression)
{
defaultHandler(expression);
}
public void visit(Identifier expression)
{
defaultHandler(expression);
}
public void visit(MemberAccess expression)
{
defaultHandler(expression);
}
public void visit(UnaryExpression expression)
{
defaultHandler(expression);
}
public void visit(Argument expression)
{
defaultHandler(expression);
}
public void visit(ReturnStatement expression)
{
defaultHandler(expression);
}
public void visit(GotoStatement expression)
{
defaultHandler(expression);
}
public void visit(ContinueStatement expression)
{
defaultHandler(expression);
}
public void visit(BreakStatement expression)
{
defaultHandler(expression);
}
public void visit(CompoundStatement expression)
{
defaultHandler(expression);
}
public void visit(IfStatement expression)
{
defaultHandler(expression);
}
public void visit(ForStatement expression)
{
defaultHandler(expression);
}
public void visit(WhileStatement expression)
{
defaultHandler(expression);
}
public void visit(DoStatement expression)
{
defaultHandler(expression);
}
public void visit(Label expression)
{
defaultHandler(expression);
}
public void visit(SwitchStatement expression)
{
defaultHandler(expression);
}
public void defaultHandler(ASTNode item)
{
// by default, redirect to visit(ASTNode item)
visit((ASTNode) item);
}
public void visitChildren(ASTNode item)
{
int nChildren = item.getChildCount();
for (int i = 0; i < nChildren; i++)
{
ASTNode child = item.getChild(i);
child.accept(this);
}
}
}