34 lines
760 B
Java
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;
|
|
}
|
|
}
|