59 lines
1.2 KiB
Java
59 lines
1.2 KiB
Java
package dev.peerat.parser.java.value;
|
|
|
|
import java.util.List;
|
|
import java.util.function.Function;
|
|
|
|
import dev.peerat.parser.java.JavaElement;
|
|
import dev.peerat.parser.visitor.Visitor;
|
|
import dev.peerat.parser.visitor.VisitorBag;
|
|
|
|
public class TriValue extends Value{
|
|
|
|
private Value check;
|
|
private Value success;
|
|
private Value fail;
|
|
|
|
public TriValue(Value check, Value success, Value fail){
|
|
this.check = check;
|
|
this.success = success;
|
|
this.fail = fail;
|
|
}
|
|
|
|
public Value getChecker(){
|
|
return check;
|
|
}
|
|
|
|
public Value success(){
|
|
return success;
|
|
}
|
|
|
|
public Value fail(){
|
|
return fail;
|
|
}
|
|
|
|
@Override
|
|
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public String toString(){
|
|
return "[TriValue] "+check+" ? "+success+" : "+fail;
|
|
}
|
|
|
|
@Override
|
|
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
|
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
|
VisitorBag bag = new VisitorBag();
|
|
bag.merge(check.visit(visitor));
|
|
bag.merge(success.visit(visitor));
|
|
bag.merge(fail.visit(visitor));
|
|
return bag;
|
|
}
|
|
|
|
}
|