package uva.TaxForm.AST.Utils; import uva.TaxForm.AST.Node; import uva.TaxForm.AST.NodeQuestion.Question; import uva.TaxForm.AST.NodeVar.Var; import uva.TaxForm.antlr4.TaxFormParser.QuestionContext; public class UtilsNode { public static <T> Question<T> setQuestionValues(QuestionContext ctx, Node node) { Question<T> question = new Question<T>(); node.add(question); question.setLabel(ctx.label().getText()); question.setLevel(node.getLevel() + 1); Var<T> var = new Var<T>(); question.setVar(var); var.setName(ctx.varName().getText()); return question; } public static Var<?> getVarInTree(String name, Node tree) { Var<?> var = new Var<>(); if (tree.getNodes().size() > 0) { for (int i=0; i<tree.getNodes().size(); i++) { if (tree.getNodes().get(i).getClass().equals(uva.TaxForm.AST.NodeQuestion.Question.class)) { Question<?> q = (Question<?>) tree.getNodes().get(i); if (q.getVar().getName().equals(name)) { var = (Var<?>) q.getVar(); } } else { UtilsNode.getVarInTree(name, tree.getNodes().get(i)); } } } return var; } }