package dev.peerat.parser.state; import java.util.ArrayList; import java.util.List; import dev.peerat.parser.TokenValidator; public class InitialStateTree extends StateTree{ private List> multiple; public InitialStateTree(){ super(); this.multiple = new ArrayList<>(); } @Override BuilderStateTree internalSeed(TokenValidator validator, E element){ BuilderStateTree builded; for(StateTree state : this.multiple){ TokenValidator branch; if(state.checker == null){ while((builded = state.internalSeed((branch = validator.branch()), element)) != null){ validator.merge(branch); builded.build(validator, element); } }else{ while(state.checker.test((branch = validator.branch()))){ builded = state.internalSeed(branch, element); if(builded == null) break; validator.merge(branch); builded.build(validator, element); } } } return super.internalSeed(validator, element); } public > StateTree multiple(StateTree child){ this.multiple.add(child); return child; } }