peer-at-code-parser-java/src/dev/peerat/parser/java/value/MethodCallValue.java

76 lines
1.8 KiB
Java

package dev.peerat.parser.java.value;
import java.util.Collection;
import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate;
import dev.peerat.parser.Token;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.visitor.TokenVisitor;
import dev.peerat.parser.visitor.Visitor;
import dev.peerat.parser.visitor.VisitorBag;
public class MethodCallValue extends Value{
private Value base;
private Token generic;
private Token token;
private List<Value> parameters;
public MethodCallValue(Value base, Token generic, Token token, List<Value> parameters){
this.base = base;
this.generic = generic;
this.token = token;
this.parameters = parameters;
}
public Value base(){
return this.base;
}
public Token getGeneric(){
return this.generic;
}
public Token getToken(){
return token;
}
public List<Value> getParameters(){
return this.parameters;
}
@Override
public <E extends JavaElement> E find(Predicate<JavaElement> finder) {
// TODO Auto-generated method stub
return null;
}
@Override
public <E extends JavaElement> void findAll(Predicate<JavaElement> finder, Collection<E> collector) {
// TODO Auto-generated method stub
}
@Override
public VisitorBag visit(Visitor<JavaElement> visitor){
if(visitor.canVisit(getClass())) return visitor.visit(this);
VisitorBag bag = new VisitorBag();
if(base != null) bag.merge(base.visit(visitor));
System.out.println("go on "+parameters);
for(Value value : parameters) bag.merge(value.visit(visitor));
return bag;
}
@Override
public VisitorBag visit(TokenVisitor visitor){
VisitorBag bag = new VisitorBag();
return bag;
}
@Override
public String toString(){
return "[MethodCallValue] "+base+".<"+generic+">"+token+"("+parameters+")";
}
}