@Override public ASTNode transform(org.kframework.kil.ListBuiltin node) throws TransformerException { ArrayList<Term> elementsLeft = new ArrayList<Term>(node.elementsLeft().size()); for (org.kframework.kil.Term entry : node.elementsLeft()) { Term newEntry = (Term) entry.accept(this); elementsLeft.add(newEntry); } ArrayList<Term> elementsRight = new ArrayList<Term>(node.elementsRight().size()); for (org.kframework.kil.Term entry : node.elementsRight()) { Term newEntry = (Term) entry.accept(this); elementsRight.add(newEntry); } Term base = null; if (node.hasViewBase()) { assert node.viewBase() instanceof org.kframework.kil.Variable : "The viewbase " + node.viewBase() + " must be a variable"; base = (Variable) node.viewBase().accept(this); } else { Collection<org.kframework.kil.Term> baseTerms = node.baseTerms(); if (!baseTerms.isEmpty()) { assert baseTerms.size() == 1 : "Don't know how to handle multiple base terms for now."; Iterator<org.kframework.kil.Term> iterator = baseTerms.iterator(); base = (Term) iterator.next().accept(this); } } return BuiltinList.of(base, 0, 0, elementsLeft, elementsRight); }
@Override public ASTNode visit(org.kframework.kil.ListBuiltin node, Void _void) { BuiltinList.Builder builder = BuiltinList.builder(termContext); for (org.kframework.kil.Term element : node.elementsLeft()) { builder.addItem((Term) this.visitNode(element)); } for (org.kframework.kil.Term term : node.baseTerms()) { builder.concatenate((Term) this.visitNode(term)); } for (org.kframework.kil.Term element : node.elementsRight()) { builder.addItem((Term) this.visitNode(element)); } return builder.build(); }