peer-at-code-parser-java/src/dev/peerat/parser/java/value/TriValue.java
2025-04-27 21:59:00 +02:00

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;
}
}