peer-at-code-parser-java/src/be/jeffcheasey88/peeratcode/parser/state/BuilderStateTree.java
2023-07-05 10:31:14 +02:00

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