package dev.peerat.parser.java.operation; import java.util.List; import java.util.function.Function; import dev.peerat.parser.java.JavaElement; import dev.peerat.parser.java.Operation; import dev.peerat.parser.java.value.Value; import dev.peerat.parser.java.visitor.JavaVisitor; import dev.peerat.parser.visitor.bag.ListVisitorBag; import dev.peerat.parser.visitor.bag.VisitorBag; public class AssignOperation extends Operation{ private Value left; private Value right; public AssignOperation(Value left, Value right){ this.left = left; this.right = right; } public Value left(){ return left; } public Value right(){ return right; } @Override public void build(Builder builder) throws Exception{ left.build(builder); builder.append("="); right.build(builder); } @Override public E find(Function finder){ return finder.apply(left) ? (E)left : finder.apply(right) ? (E)right : null; } @Override public void findAll(Function finder, List list){ if(finder.apply(left)) list.add((E) left); left.findAll(finder, list); if(finder.apply(right)) list.add((E) right); right.findAll(finder, list); } @Override public VisitorBag visit(JavaVisitor visitor) { if(visitor.canVisit(getClass())) return visitor.visit(this); VisitorBag bag = new ListVisitorBag(); bag.compute(left.visit(visitor).toList().toArray()); bag.compute(right.visit(visitor).toList().toArray()); return bag; } }