package nl.uva.bromance.QL.typechecking;
import nl.uva.bromance.QL.ast.QLNode;
import nl.uva.bromance.QL.ast.QLNodeVisitorInterface;
import nl.uva.bromance.QL.ast.nodes.Calculation;
import nl.uva.bromance.QL.ast.nodes.Form;
import nl.uva.bromance.QL.ast.nodes.Question;
import nl.uva.bromance.QL.ast.nodes.Questionnaire;
import nl.uva.bromance.QL.controlstructures.Else;
import nl.uva.bromance.QL.controlstructures.If;
import nl.uva.bromance.QL.controlstructures.IfSequence;
import nl.uva.bromance.QL.expressions.unary.Variable;
import nl.uva.bromance.QL.exceptions.TypeCheckingError;
import java.util.List;
public class SymbolTableBuilderVisitor implements QLNodeVisitorInterface
{
private SymbolTable symbolTable = new SymbolTable();
private List<TypeCheckingError> exceptions;
public SymbolTable build(QLNode node, List<TypeCheckingError> exceptions)
{
this.exceptions = exceptions;
node.accept(this);
return symbolTable;
}
@Override
public void visit(QLNode qlNode)
{
}
@Override
public void visit(Form form)
{
}
@Override
public void visit(Question question)
{
question.addToSymbolTable(symbolTable, exceptions);
}
@Override
public void visit(Questionnaire questionnaire)
{
}
@Override
public void visit(If _if)
{
}
@Override
public void visit(Calculation calc)
{
calc.addToSymbolTable(symbolTable, exceptions);
}
@Override
public void visit(Variable var)
{
}
@Override
public void visit()
{
}
@Override
public void exit(If _f)
{
}
@Override
public void visit(Else _else) {
}
@Override
public void visit(IfSequence sequence) {
}
@Override
public void exit(IfSequence sequence) {
}
}