peer-at-code-parser-java/src/dev/peerat/parser/state/BinaryStateTree.java
2023-10-26 08:22:03 +02:00

34 lines
760 B
Java

package dev.peerat.parser.state;
import java.util.function.Function;
import dev.peerat.parser.TokenValidator;
public class BinaryStateTree<E> extends StateTree<E>{
private Function<TokenValidator, Boolean> condition;
private StateTree<E> success;
private StateTree<E> fail;
public BinaryStateTree(Function<TokenValidator, Boolean> checker){
super();
this.condition = checker;
}
@Override
BuilderStateTree<E, ?> internalSeed(TokenValidator validator, E element){
return ((this.condition.apply(validator)) ? success : fail).internalSeed(validator, element);
}
public StateTree<E> success(StateTree<E> state){
success = state;
return state;
}
public StateTree<E> fail(StateTree<E> state){
fail = state;
return state;
}
}