package com.klq.typechecker; import com.klq.ast.impl.stmt.QuestionnaireNode; import com.klq.typechecker.error.AError; import java.util.ArrayList; import java.util.List; /** * Created by Juriaan on 28-2-2015. */ public class TypeChecker { private List<AError> errors; private QuestionnaireNode ast; public TypeChecker(QuestionnaireNode ast){ errors = new ArrayList<>(); this.ast = ast; } private QuestionTable firstPass(){ QuestionMapper mapper = new QuestionMapper(errors); ast.accept(mapper); return mapper.getTable(); } private void secondPass(QuestionTable table){ TypeCheckerVisitor visitor = new TypeCheckerVisitor(errors, table); ast.accept(visitor); } public void run(){ secondPass(firstPass()); } public boolean stopApplication(){ boolean answer = false; for(AError error : errors){ answer = error.getStopRunning(); } return answer; } public void printErrors(){ for(AError error : errors){ System.out.println(error.toString()); } } public List<AError> getErrors() { return errors; } }