StateTree -> reduce trace by recalling Builder on base call
This commit is contained in:
parent
0327cd8a28
commit
255e78f034
4 changed files with 10 additions and 10 deletions
|
@ -21,7 +21,6 @@ public class JavaFile extends JavaElement{
|
||||||
JavaFile setPackage(Bag bag){
|
JavaFile setPackage(Bag bag){
|
||||||
this.pack = bag.<List<Token>>get();
|
this.pack = bag.<List<Token>>get();
|
||||||
System.out.println("setPackage "+pack);
|
System.out.println("setPackage "+pack);
|
||||||
System.out.println(Thread.currentThread().getStackTrace().length+" traces");
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ public class BinaryStateTree<E> extends StateTree<E>{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
<B> B internalSeed(TokenValidator validator, E element){
|
BuilderStateTree<E, ?> internalSeed(TokenValidator validator, E element){
|
||||||
return ((this.condition.apply(validator)) ? success : fail).internalSeed(validator, element);
|
return ((this.condition.apply(validator)) ? success : fail).internalSeed(validator, element);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ public class RedirectStateTree<E, T extends E> extends StateTree<T>{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
<B> B internalSeed(TokenValidator validator, T element){
|
BuilderStateTree<T, ?> internalSeed(TokenValidator validator, T element){
|
||||||
Bag currentBag = validator.getBag();
|
Bag currentBag = validator.getBag();
|
||||||
Bag localBag = new Bag();
|
Bag localBag = new Bag();
|
||||||
|
|
||||||
|
|
|
@ -25,32 +25,33 @@ public class StateTree<E>{
|
||||||
TokenValidator validator = new TokenValidator(tokenizer.getTokens().toArray(new Token[0]));
|
TokenValidator validator = new TokenValidator(tokenizer.getTokens().toArray(new Token[0]));
|
||||||
while(validator.hasNext()) {
|
while(validator.hasNext()) {
|
||||||
System.out.println("seed");
|
System.out.println("seed");
|
||||||
E build = internalSeed(validator, container);
|
BuilderStateTree<E, ?> build = internalSeed(validator, container);
|
||||||
System.out.println("Validate "+validator.MAX_VALIDATE+"/"+tokenizer.getTokens().size()+" tokens !");
|
System.out.println("Validate "+validator.MAX_VALIDATE+"/"+tokenizer.getTokens().size()+" tokens !");
|
||||||
if(build == null) break;
|
if(build == null) break;
|
||||||
|
build.build(validator, container);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
<B> B internalSeed(TokenValidator validator, E element){
|
BuilderStateTree<E, ?> internalSeed(TokenValidator validator, E element){
|
||||||
for(StateTree<E> child : this.childs){
|
for(StateTree<E> child : this.childs){
|
||||||
TokenValidator branch = validator.branch();
|
TokenValidator branch = validator.branch();
|
||||||
if(child.checker == null){
|
if(child.checker == null){
|
||||||
E builded = child.internalSeed(branch, element);
|
BuilderStateTree<E, ?> builded = child.internalSeed(branch, element);
|
||||||
if(builded != null){
|
if(builded != null){
|
||||||
validator.merge(branch);
|
validator.merge(branch);
|
||||||
return (B) builded;
|
return builded;
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(child.checker.apply(branch)){
|
if(child.checker.apply(branch)){
|
||||||
E builded = child.internalSeed(branch, element);
|
BuilderStateTree<E, ?> builded = child.internalSeed(branch, element);
|
||||||
if(builded != null){
|
if(builded != null){
|
||||||
validator.merge(branch);
|
validator.merge(branch);
|
||||||
return (B) builded;
|
return builded;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(this.builder != null) return (B) this.builder.build(validator, element);
|
if(this.builder != null) return this.builder;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue