package ql.semantics;
import ql.ast.form.Form;
import ql.ast.form.FormVisitor;
import ql.ast.statement.*;
/**
* Created by bore on 13/02/15.
*/
public class QuestionCollector implements FormVisitor<Void>, StatVisitor<Void>
{
private final Questions questions;
public static Questions collect(Form f)
{
QuestionCollector visitor = new QuestionCollector();
f.accept(visitor);
return visitor.questions;
}
private QuestionCollector()
{
this.questions = new Questions();
}
@Override
public Void visit(Form form)
{
for (Statement statement : form.getBody())
{
statement.accept(this);
}
return null;
}
@Override
public Void visit(IfCondition condition)
{
for (Statement statement : condition.getBody())
{
statement.accept(this);
}
return null;
}
@Override
public Void visit(Question q)
{
this.questions.put(q);
return null;
}
@Override
public Void visit(CalculatedQuestion q)
{
this.questions.put(q);
return null;
}
}