package edu.parser.QL;
import edu.parser.QL.nodes.AbstractNode;
import edu.parser.QL.nodes.Form;
import edu.parser.QL.nodes.question.Question;
import edu.parser.QL.nodes.statement.ElseClause;
import edu.parser.QL.nodes.statement.IfStatement;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Steven Kok on 06/03/2015.
*/
public class QuestionRetriever extends QLVisitorImpl {
private final List<Question> allQuestions = new ArrayList<>();
public List<Question> retrieveQuestions(Form form) {
allQuestions.clear();
visit(form);
return allQuestions;
}
@Override
public AbstractNode visit(Form form) {
visitStatements(form.getElements());
return form;
}
@Override
public AbstractNode visit(IfStatement ifStatement) {
if (ifStatement.getElseClause().isPresent()) {
visit(ifStatement.getElseClause().get());
}
visitStatements(ifStatement.getStatements());
return ifStatement;
}
@Override
public AbstractNode visit(ElseClause elseClause) {
visitStatements(elseClause.getStatements());
return elseClause;
}
@Override
public AbstractNode visit(Question question) {
allQuestions.add(question);
return question;
}
}