26 lines
660 B
Java
26 lines
660 B
Java
package be.jeffcheasey88.peeratcode.parser.state;
|
|
|
|
import java.util.function.BiFunction;
|
|
|
|
import be.jeffcheasey88.peeratcode.parser.Bag;
|
|
import be.jeffcheasey88.peeratcode.parser.TokenValidator;
|
|
|
|
public class BuilderStateTree<E, B> extends StateTree<B>{
|
|
|
|
private BiFunction<E, TokenValidator, B> builder;
|
|
|
|
public BuilderStateTree(BiFunction<E, TokenValidator, B> builder){
|
|
super();
|
|
this.builder = builder;
|
|
}
|
|
|
|
B build(TokenValidator validator, E element){
|
|
B build = this.builder.apply(element, validator.pullValidated());
|
|
validator.pushValidated();
|
|
validator.setBag(new Bag());
|
|
|
|
super.internalSeed(validator, build);
|
|
|
|
return build;
|
|
}
|
|
}
|