AST findAll....with recursivity.............

This commit is contained in:
jeffcheasey88 2023-11-06 11:36:13 +01:00
parent 33cb38b9ba
commit d93c8c0f93
20 changed files with 107 additions and 5 deletions

View file

@ -67,6 +67,7 @@ public class Annotation extends JavaElement{
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
for(Value value : this.values.values()){
if(finder.apply(value)) list.add((E)value);
value.findAll(finder, list);
}
}
}

View file

@ -95,11 +95,13 @@ public class AnnotationClass extends ClassBase{
if(annotations != null){
for(Annotation annotation : this.annotations){
if(finder.apply(annotation)) list.add((E) annotation);
annotation.findAll(finder, list);
}
}
if(elements != null){
for(JavaElement element : this.elements){
if(finder.apply(element)) list.add((E) element);
element.findAll(finder, list);
}
}
}

View file

@ -110,11 +110,13 @@ public class Class extends ClassBase{
if(annotations != null){
for(Annotation annotation : this.annotations){
if(finder.apply(annotation)) list.add((E) annotation);
annotation.findAll(finder, list);
}
}
if(elements != null){
for(JavaElement element : this.elements){
if(finder.apply(element)) list.add((E) element);
element.findAll(finder, list);
}
}
}

View file

@ -100,11 +100,13 @@ public class Enumeration extends ClassBase{
if(annotations != null){
for(Annotation annotation : this.annotations){
if(finder.apply(annotation)) list.add((E) annotation);
annotation.findAll(finder, list);
}
}
if(elements != null){
for(JavaElement element : this.elements){
if(finder.apply(element)) list.add((E) element);
element.findAll(finder, list);
}
}
}

View file

@ -152,16 +152,19 @@ public class Function extends JavaElement implements VariableContainer, Operatio
if(annotations != null){
for(Annotation annotation : this.annotations){
if(finder.apply(annotation)) list.add((E) annotation);
annotation.findAll(finder, list);
}
}
if(parameters != null){
for(Variable param : this.parameters){
if(finder.apply(param)) list.add((E) param);
param.findAll(finder, list);
}
}
if(elements != null){
for(JavaElement content : this.elements){
if(finder.apply(content)) list.add((E) content);
content.findAll(finder, list);
}
}
}

View file

@ -100,11 +100,13 @@ public class Interface extends ClassBase{
if(annotations != null){
for(Annotation annotation : this.annotations){
if(finder.apply(annotation)) list.add((E) annotation);
annotation.findAll(finder, list);
}
}
if(elements != null){
for(JavaElement element : this.elements){
if(finder.apply(element)) list.add((E) element);
element.findAll(finder, list);
}
}
}

View file

@ -96,8 +96,10 @@ public class JavaFile extends JavaElement implements ClassContainer, AnnotableBu
@Override
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
if(finder.apply(mainClazz)) list.add((E) mainClazz);
mainClazz.findAll(finder, list);
for(ClassBase clazz : subClazz){
if(finder.apply(clazz)) list.add((E) clazz);
clazz.findAll(finder, list);
}
}
}

View file

@ -49,7 +49,10 @@ public class Value extends JavaElement{
@Override
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list) {
if(content != null && finder.apply(content)) list.add((E) content);
if(content != null){
if(finder.apply(content)) list.add((E) content);
content.findAll(finder, list);
}
}
public static class BiValue extends Value{
@ -96,7 +99,9 @@ public class Value extends JavaElement{
@Override
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
if(finder.apply(left)) list.add((E)left);
left.findAll(finder, list);
if(finder.apply(right)) list.add((E)right);
right.findAll(finder, list);
}
}
@ -137,8 +142,11 @@ public class Value extends JavaElement{
@Override
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
if(finder.apply(check)) list.add((E)check);
check.findAll(finder, list);
if(finder.apply(success)) list.add((E)success);
success.findAll(finder, list);
if(finder.apply(fail)) list.add((E)fail);
fail.findAll(finder, list);
}
}

View file

@ -103,8 +103,12 @@ public class Variable extends JavaElement{
if(annotations != null){
for(Annotation annotation : this.annotations){
if(finder.apply(annotation)) list.add((E)annotation);
annotation.findAll(finder, list);
}
}
if(value != null && finder.apply(value)) list.add((E)value);
if(value != null){
if(finder.apply(value)) list.add((E)value);
value.findAll(finder, list);
}
}
}

View file

@ -40,6 +40,8 @@ public class AssignOperation extends Operation{
@Override
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
if(finder.apply(left)) list.add((E) left);
left.findAll(finder, list);
if(finder.apply(right)) list.add((E) right);
right.findAll(finder, list);
}
}

View file

@ -60,4 +60,26 @@ public class ForOperation extends OperationBag{
}
return super.find(finder);
}
@Override
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
if(init_vars != null){
for(Variable variable : this.init_vars){
if(finder.apply(variable)) list.add((E)variable);
variable.findAll(finder, list);
}
}
if(init_values != null){
for(Value value : this.init_values){
if(finder.apply(value)) list.add((E)value);
value.findAll(finder, list);
}
}
if(finder.apply(condition)) list.add((E)condition);
for(Value value : this.updates){
if(finder.apply(value)) list.add((E)value);
value.findAll(finder, list);
}
super.findAll(finder, list);
}
}

View file

@ -1,5 +1,6 @@
package dev.peerat.parser.java.operation;
import java.util.List;
import java.util.function.Function;
import dev.peerat.parser.Token;
@ -37,4 +38,11 @@ public class ForeachOperation extends OperationBag{
if(finder.apply(iterator)) return (E)iterator;
return super.find(finder);
}
@Override
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
if(finder.apply(iterator)) list.add((E)iterator);
iterator.findAll(finder, list);
super.findAll(finder, list);
}
}

View file

@ -1,5 +1,6 @@
package dev.peerat.parser.java.operation;
import java.util.List;
import java.util.function.Function;
import dev.peerat.parser.java.JavaElement;
@ -22,4 +23,11 @@ public class IfOperation extends OperationBag{
if(finder.apply(condition)) return (E)condition;
return super.find(finder);
}
@Override
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
if(finder.apply(condition)) list.add((E)condition);
condition.findAll(finder, list);
super.find(finder);
}
}

View file

@ -57,9 +57,14 @@ public class MethodCallOperation extends Operation{
@Override
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
if(finder.apply(start)) list.add((E)start);
if(previous != null) if(finder.apply(previous)) list.add((E) previous);
start.findAll(finder, list);
if(previous != null){
if(finder.apply(previous)) list.add((E) previous);
previous.findAll(finder, list);
}
for(Value param : this.parameters){
if(finder.apply(param)) list.add((E)param);
param.findAll(finder, list);
}
}
}

View file

@ -43,6 +43,7 @@ public class OperationBag extends Operation implements VariableContainer, Operat
if(elements != null){
for(JavaElement element : this.elements){
if(finder.apply(element)) list.add((E)element);
element.findAll(finder, list);
}
}
}

View file

@ -31,6 +31,9 @@ public class ReturnOperation extends Operation{
@Override
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
if(value != null && finder.apply(value)) list.add((E) value);
if(value != null){
if(finder.apply(value)) list.add((E) value);
value.findAll(finder, list);
}
}
}

View file

@ -1,5 +1,6 @@
package dev.peerat.parser.java.operation;
import java.util.List;
import java.util.function.Function;
import dev.peerat.parser.java.JavaElement;
@ -23,4 +24,11 @@ public class SynchronizedOperation extends OperationBag{
if(finder.apply(value)) return (E)value;
return super.find(finder);
}
@Override
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
if(finder.apply(value)) list.add((E)value);
value.findAll(finder, list);
super.findAll(finder, list);
}
}

View file

@ -33,6 +33,7 @@ public class ThrowOperation extends Operation{
@Override
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
if(finder.apply(value)) list.add((E) value);
value.findAll(finder, list);
}
}

View file

@ -1,5 +1,6 @@
package dev.peerat.parser.java.operation;
import java.util.List;
import java.util.function.Function;
import dev.peerat.parser.java.JavaElement;
@ -26,4 +27,13 @@ public class TryOperation extends OperationBag{
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
return resource != null ? finder.apply(resource) ? (E)resource : super.find(finder) : super.find(finder);
}
@Override
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
if(resource != null){
if(finder.apply(resource)) list.add((E) resource);
resource.findAll(finder, list);
}
super.findAll(finder, list);
}
}

View file

@ -1,5 +1,6 @@
package dev.peerat.parser.java.operation;
import java.util.List;
import java.util.function.Function;
import dev.peerat.parser.java.JavaElement;
@ -13,7 +14,7 @@ public class WhileOperation extends OperationBag{
this.condition = condition;
}
public Value getCondition(){
public Value getCondition(){s
return this.condition;
}
@ -22,4 +23,11 @@ public class WhileOperation extends OperationBag{
if(finder.apply(condition)) return (E)condition;
return super.find(finder);
}
@Override
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
if(finder.apply(condition)) list.add((E) condition);
condition.findAll(finder, list);
super.findAll(finder, list);
}
}