Remove ElementBuilder -> will become a Printer in a different package later.

This commit is contained in:
jeffcheasey88 2025-04-24 16:44:03 +02:00
parent e98ad587c1
commit f4cf250de0
56 changed files with 85 additions and 438 deletions

View file

@ -1,48 +0,0 @@
package dev.peerat.parser;
import java.io.BufferedWriter;
import java.util.LinkedList;
import java.util.List;
public interface ElementBuilder{
void build(Builder builder) throws Exception;
public static class Builder{
private List<Token> tokens;
public Builder(){
this.tokens = new LinkedList<>();
this.tokens.add(new Token(1,1,"", TokenType.GROUP));
}
public void append(Token token){
if(token == null) throw new NullPointerException();
this.tokens.add(token);
}
public void append(String value){
Token last = tokens.get(tokens.size()-1);
append(new Token(last.getLineNumber(), last.getCharacterNumber()+last.getValue().length(), value, TokenType.GROUP));
}
public void build(BufferedWriter writer) throws Exception{
int character = 1;
int line = 1;
for(Token token : tokens){
while(line < token.getLineNumber()){
writer.write("\n");
line++;
}
while(character < token.getCharacterNumber()){
writer.write(" ");
character++;
}
writer.write(token.getValue());
character+=token.getValue().length();
}
}
}
}

View file

@ -2,7 +2,7 @@ package dev.peerat.parser.java;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.function.BiFunction;
import java.util.function.Function;
import dev.peerat.parser.Token;
@ -50,15 +50,6 @@ public class Annotation extends JavaElement{
return false;
}
@Override
public void build(Builder builder) throws Exception{
if(annotations != null){
for(Annotation annotation : this.annotations){
annotation.build(builder);
}
}
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
if(annotations != null){
@ -100,24 +91,6 @@ public class Annotation extends JavaElement{
return this.values;
}
@Override
public void build(Builder builder) throws Exception{
System.out.println("build annotation "+name+" | "+values);
builder.append(name);
if(values != null && values.size() > 0){
builder.append("(");
for(Entry<Token,Value> entry : values.entrySet()){
if(entry.getKey() != null){
builder.append(entry.getKey());
builder.append("=");
}
entry.getValue().build(builder);
builder.append(","); //replace by iterator splitter method
}
builder.append(")");
}
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
if(this.values != null){
@ -150,4 +123,5 @@ public class Annotation extends JavaElement{
return bag;
}
}

View file

@ -41,25 +41,6 @@ public class AnnotationClass extends ClassBase{
return this.elements;
}
@Override
public void build(Builder builder) throws Exception{
super.build(builder);
builder.append("@interface");
builder.append(getName());
if(extend != null){
builder.append(" extends ");
builder.append(extend);
}
builder.append("{");
if(elements != null){
for(JavaElement element : this.elements){
element.build(builder);
}
}
builder.append("}");
}
@Override
public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> finder){
E annotation = super.find(finder);

View file

@ -52,29 +52,6 @@ public class Class extends ClassBase{
return this.elements;
}
@Override
public void build(Builder builder) throws Exception{
super.build(builder);
builder.append("class ");
builder.append(getName());
if(extend != null){
builder.append(" extends ");
builder.append(extend);
}
if(implement != null){
builder.append(" implements ");
builder.append(implement);
}
builder.append("{");
if(elements != null){
for(JavaElement element : this.elements){
element.build(builder);
}
}
builder.append("}");
}
@Override
public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> finder){
E annotation = super.find(finder);

View file

@ -46,25 +46,6 @@ public class Enumeration extends ClassBase{
return this.elements;
}
@Override
public void build(Builder builder) throws Exception{
super.build(builder);
builder.append("enum");
builder.append(getName());
if(extend != null){
builder.append(" extends ");
builder.append(extend);
}
builder.append("{");
if(elements != null){
for(JavaElement element : this.elements){
element.build(builder);
}
}
builder.append("}");
}
@Override
public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> finder){
E annotation = super.find(finder);

View file

@ -7,8 +7,9 @@ import java.util.List;
import dev.peerat.parser.Token;
import dev.peerat.parser.TokenType;
import dev.peerat.parser.java.Annotation.Annotable;
import dev.peerat.parser.java.Operation.OperationContainer;
import dev.peerat.parser.java.Variable.VariableContainer;
import dev.peerat.parser.java.operation.Operation;
import dev.peerat.parser.java.operation.Operation.OperationContainer;
import dev.peerat.parser.java.value.Value;
import dev.peerat.parser.java.value.Value.ValueContainer;
import dev.peerat.parser.java.visitor.JavaVisitor;
@ -97,41 +98,6 @@ public class Function extends Annotable implements VariableContainer, OperationC
return this.elements;
}
@Override
public void build(Builder builder) throws Exception{
super.build(builder);
String mod = Modifier.toString(this.mod);
builder.append(new Token(type.getLineNumber(), type.getCharacterNumber()-(mod.length()+1), mod, TokenType.GROUP));
builder.append(" ");
if(generic != null){
builder.append(generic);
builder.append(" ");
}
builder.append(type);
builder.append(" ");
builder.append(name);
builder.append("(");
if(parameters != null){
for(Variable param : this.parameters){
param.build(builder);
}
}
builder.append(")");
if(throwables != null){
builder.append("throws");
for(Token token : throwables){
builder.append(token);
}
}
builder.append("{");
if(elements != null){
for(JavaElement content : this.elements){
content.build(builder);
}
}
builder.append("}");
}
@Override
public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> finder){
E annotation = super.find(finder);

View file

@ -25,11 +25,6 @@ public class Import extends JavaElement{
return this.value;
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return null;

View file

@ -46,25 +46,6 @@ public class Interface extends ClassBase{
return this.elements;
}
@Override
public void build(Builder builder) throws Exception{
super.build(builder);
builder.append("interface");
builder.append(getName());
if(extend != null){
builder.append(" extends ");
builder.append(extend);
}
builder.append("{");
if(elements != null){
for(JavaElement element : this.elements){
element.build(builder);
}
}
builder.append("}");
}
@Override
public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> finder){
E annotation = super.find(finder);

View file

@ -3,11 +3,10 @@ package dev.peerat.parser.java;
import java.util.List;
import java.util.function.Function;
import dev.peerat.parser.ElementBuilder;
import dev.peerat.parser.java.visitor.JavaVisitor;
import dev.peerat.parser.visitor.VisitorBag;
public abstract class JavaElement implements ElementBuilder{
public abstract class JavaElement{
public abstract <E extends JavaElement> E find(Function<JavaElement, Boolean> finder);

View file

@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import dev.peerat.parser.Bag;
import dev.peerat.parser.Token;
import dev.peerat.parser.java.Annotation.AnnotableBuffer;
import dev.peerat.parser.java.visitor.JavaVisitor;
@ -66,24 +65,6 @@ public class JavaFile extends JavaElement implements ClassContainer, AnnotableBu
return list;
}
@Override
public void build(Builder builder) throws Exception {
builder.append("package ");
builder.append(pack);
builder.append(";");
for(Import imp : imports){
builder.append("import ");
if(imp.isStatic()) builder.append("static ");
builder.append(imp.getValue());
}
mainClazz.build(builder);
for(ClassBase clazz : subClazz){
clazz.build(builder);
}
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
if(finder.apply(mainClazz)) return (E) mainClazz;

View file

@ -1,11 +1,9 @@
package dev.peerat.parser.java;
import java.lang.reflect.Modifier;
import java.util.List;
import java.util.function.Function;
import dev.peerat.parser.Token;
import dev.peerat.parser.TokenType;
import dev.peerat.parser.java.Annotation.Annotable;
import dev.peerat.parser.java.value.Value;
import dev.peerat.parser.java.visitor.JavaVisitor;
@ -67,23 +65,6 @@ public class Variable extends Annotable{
return this.value;
}
@Override
public void build(Builder builder) throws Exception{
super.build(builder);
String mod = Modifier.toString(this.mod);
builder.append(new Token(type.getLineNumber(), type.getCharacterNumber()-(mod.length()+1), mod, TokenType.GROUP));
builder.append(" ");
builder.append(type);
if(elips) builder.append("...");
builder.append(" ");
builder.append(name);
if(value != null){
builder.append("=");
value.build(builder);
}
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
E annotation = super.find(finder);

View file

@ -1,7 +1,7 @@
package dev.peerat.parser.java.builder;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.operation.Operation;
import dev.peerat.parser.java.value.Value;
public abstract class JavaBuilder<T extends JavaElement>{

View file

@ -105,8 +105,8 @@ public class JavaFunctionBuilder extends JavaModifiableBuilder<JavaFunctionBuild
Function result = new Function(
this.annotations,
this.mod,
new Token(0,0, this.generic, null),
new Token(0,0, this.type, null),
this.generic == null ? null : new Token(0,0, this.generic, null),
this.type == null ? null : new Token(0,0, this.type, null),
new Token(0,0, this.name, null),
this.parameters,
this.throwables

View file

@ -6,8 +6,8 @@ import java.util.function.Function;
import dev.peerat.parser.Parser;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.JavaParser;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.Operation.OperationContainer;
import dev.peerat.parser.java.operation.Operation;
import dev.peerat.parser.java.operation.Operation.OperationContainer;
import dev.peerat.parser.java.tree.JavaTreeType;
import dev.peerat.parser.java.visitor.JavaVisitor;
import dev.peerat.parser.visitor.VisitorBag;
@ -34,11 +34,6 @@ public class JavaOperationBuilder extends JavaBuilder<Operation>{
JavaOperationBuilder.this.operation = operation;
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return null;

View file

@ -127,11 +127,6 @@ public class JavaValueBuilder extends JavaBuilder<Value>{
JavaValueBuilder.this.value = value;
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return null;

View file

@ -4,7 +4,6 @@ import java.util.List;
import java.util.function.Function;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.value.Value;
import dev.peerat.parser.java.visitor.JavaVisitor;
import dev.peerat.parser.visitor.VisitorBag;
@ -27,13 +26,6 @@ public class AssignOperation extends Operation{
return right;
}
@Override
public void build(Builder builder) throws Exception{
left.build(builder);
builder.append("=");
right.build(builder);
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
return finder.apply(left) ? (E)left : finder.apply(right) ? (E)right : null;

View file

@ -4,7 +4,6 @@ import java.util.List;
import java.util.function.Function;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.visitor.JavaVisitor;
import dev.peerat.parser.visitor.VisitorBag;
@ -12,11 +11,6 @@ public class BreakOperation extends Operation{
public BreakOperation(){}
@Override
public void build(Builder builder) throws Exception{
builder.append("break;");
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
return null;

View file

@ -25,11 +25,6 @@ public class CatchOperation extends OperationBag{
return this.name;
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);

View file

@ -4,17 +4,11 @@ import java.util.List;
import java.util.function.Function;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.visitor.JavaVisitor;
import dev.peerat.parser.visitor.VisitorBag;
public class ContinueOperation extends Operation{
@Override
public void build(Builder builder) throws Exception{
builder.append("continue;");
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
return null;

View file

@ -5,11 +5,6 @@ import dev.peerat.parser.visitor.VisitorBag;
public class DoOperation extends OperationBag{
@Override
public void build(Builder builder) throws Exception {
}
@Override
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);

View file

@ -5,11 +5,6 @@ import dev.peerat.parser.visitor.VisitorBag;
public class ElseOperation extends OperationBag{
@Override
public void build(Builder builder) throws Exception {
}
@Override
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);

View file

@ -5,11 +5,6 @@ import dev.peerat.parser.visitor.VisitorBag;
public class FinallyOperation extends OperationBag{
@Override
public void build(Builder builder) throws Exception {
}
@Override
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);

View file

@ -89,11 +89,6 @@ public class ForOperation extends OperationBag{
super.findAll(finder, list);
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);

View file

@ -48,11 +48,6 @@ public class ForeachOperation extends OperationBag{
super.findAll(finder, list);
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);

View file

@ -34,11 +34,6 @@ public class IfOperation extends OperationBag{
super.findAll(finder, list);
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);

View file

@ -1,4 +1,6 @@
package dev.peerat.parser.java;
package dev.peerat.parser.java.operation;
import dev.peerat.parser.java.JavaElement;
public abstract class Operation extends JavaElement{
@ -10,5 +12,4 @@ public abstract class Operation extends JavaElement{
public Operation(){}
}

View file

@ -5,10 +5,9 @@ import java.util.List;
import java.util.function.Function;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.Variable;
import dev.peerat.parser.java.Operation.OperationContainer;
import dev.peerat.parser.java.Variable.VariableContainer;
import dev.peerat.parser.java.operation.Operation.OperationContainer;
import dev.peerat.parser.java.value.Value;
import dev.peerat.parser.java.value.Value.ValueContainer;
import dev.peerat.parser.java.visitor.JavaVisitor;

View file

@ -4,7 +4,6 @@ import java.util.List;
import java.util.function.Function;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.value.Value;
import dev.peerat.parser.java.visitor.JavaVisitor;
import dev.peerat.parser.visitor.VisitorBag;
@ -21,11 +20,6 @@ public class ReturnOperation extends Operation{
return this.value;
}
@Override
public void build(Builder builder) throws Exception {
value.build(builder);
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
return value != null ? finder.apply(value) ? (E)value : null : null;

View file

@ -4,7 +4,6 @@ import java.util.List;
import java.util.function.Function;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.visitor.JavaVisitor;
import dev.peerat.parser.visitor.VisitorBag;
@ -12,10 +11,6 @@ public class SwitchOperation extends Operation{
//+ AND OBJECT FOR CONTAINING EVERY CASE OP
@Override
public void build(Builder builder) throws Exception{
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return null;

View file

@ -34,11 +34,6 @@ public class SynchronizedOperation extends OperationBag{
super.findAll(finder, list);
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);

View file

@ -4,7 +4,6 @@ import java.util.List;
import java.util.function.Function;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.value.Value;
import dev.peerat.parser.java.visitor.JavaVisitor;
import dev.peerat.parser.visitor.VisitorBag;
@ -21,12 +20,6 @@ public class ThrowOperation extends Operation{
return this.value;
}
@Override
public void build(Builder builder) throws Exception {
builder.append(" throw ");
value.build(builder);
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return finder.apply(value) ? (E)value : null;

View file

@ -39,11 +39,6 @@ public class TryOperation extends OperationBag{
super.findAll(finder, list);
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);

View file

@ -33,11 +33,6 @@ public class WhileOperation extends OperationBag{
super.findAll(finder, list);
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);

View file

@ -1,5 +1,6 @@
package dev.peerat.parser.java.tree;
import dev.peerat.parser.Bag;
import dev.peerat.parser.Token;
import dev.peerat.parser.java.Annotation.AnnotableBuffer;
import dev.peerat.parser.java.Class;
@ -67,7 +68,7 @@ public class ClassTree extends SyntaxTree<JavaElement> {
clazz_extend.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
.<JavaElement>end((parent, bag) -> {
Class current = new Class((((AnnotableBuffer) parent).getAnnotationBuffer()),
bag.get("modifier") == null ? 0 : bag.get("modifier"),
bag.get("modifier") == null ? 0 : bag.<Bag>get("modifier").get(),
bag.get("name"),
bag.get("extend"), bag.get("implement"));
if (parent instanceof ClassContainer)

View file

@ -2,7 +2,6 @@ package dev.peerat.parser.java.tree;
import dev.peerat.parser.TokenType;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.Operation.OperationContainer;
import dev.peerat.parser.java.operation.AssignOperation;
import dev.peerat.parser.java.operation.BreakOperation;
import dev.peerat.parser.java.operation.ContinueOperation;
@ -12,6 +11,7 @@ import dev.peerat.parser.java.operation.ReturnOperation;
import dev.peerat.parser.java.operation.SynchronizedOperation;
import dev.peerat.parser.java.operation.ThrowOperation;
import dev.peerat.parser.java.operation.WhileOperation;
import dev.peerat.parser.java.operation.Operation.OperationContainer;
import dev.peerat.parser.java.value.BiValue;
import dev.peerat.parser.java.value.MethodCallValue;
import dev.peerat.parser.java.value.Value;

View file

@ -25,11 +25,6 @@ public class ArrayAccessValue extends Value{
return this.access;
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return null;
@ -42,7 +37,9 @@ public class ArrayAccessValue extends Value{
@Override
public VisitorBag visit(JavaVisitor<?> visitor) {
return null;
if(visitor.canVisit(getClass())) return visitor.visit(this);
VisitorBag bag = new VisitorBag();
return bag;
}
}

View file

@ -19,11 +19,6 @@ public class ArrayValue extends Value{
return this.values;
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return null;
@ -38,9 +33,6 @@ public class ArrayValue extends Value{
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);
VisitorBag bag = new VisitorBag();
for(Value value : this.values){
bag.merge(value.visit(visitor));
}
return bag;
}

View file

@ -31,11 +31,6 @@ public class BiValue extends Value{
return right;
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return null;
@ -55,8 +50,6 @@ public class BiValue extends Value{
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);
VisitorBag bag = new VisitorBag();
bag.merge(left.visit(visitor));
bag.merge(right.visit(visitor));
return bag;
}
}

View file

@ -26,11 +26,6 @@ public class CastValue extends Value{
return this.value;
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return null;
@ -43,7 +38,9 @@ public class CastValue extends Value{
@Override
public VisitorBag visit(JavaVisitor<?> visitor) {
return null;
if(visitor.canVisit(getClass())) return visitor.visit(this);
VisitorBag bag = new VisitorBag();
return bag;
}

View file

@ -62,11 +62,6 @@ public class InstanceValue extends Value implements VariableContainer, FunctionC
return list;
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return null;
@ -81,10 +76,6 @@ public class InstanceValue extends Value implements VariableContainer, FunctionC
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);
VisitorBag bag = new VisitorBag();
if(this.parameters != null)
for(Value value : this.parameters){
bag.merge(value.visit(visitor));
}
return bag;
}

View file

@ -6,10 +6,10 @@ import java.util.function.Function;
import dev.peerat.parser.Token;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.Variable;
import dev.peerat.parser.java.Operation.OperationContainer;
import dev.peerat.parser.java.Variable.VariableContainer;
import dev.peerat.parser.java.operation.Operation;
import dev.peerat.parser.java.operation.Operation.OperationContainer;
import dev.peerat.parser.java.value.Value.ValueContainer;
import dev.peerat.parser.java.visitor.JavaVisitor;
import dev.peerat.parser.visitor.VisitorBag;
@ -52,11 +52,6 @@ public class LambdaValue extends Value implements OperationContainer, VariableCo
this.operations.add(value);
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return null;

View file

@ -38,11 +38,6 @@ public class MethodCallValue extends Value{
return this.parameters;
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return null;
@ -57,11 +52,6 @@ public class MethodCallValue extends Value{
public VisitorBag visit(JavaVisitor<?> visitor){
if(visitor.canVisit(getClass())) return visitor.visit(this);
VisitorBag bag = new VisitorBag();
bag.merge(this.base.visit(visitor));
if(this.parameters != null)
for(Value value : this.parameters){
bag.merge(value.visit(visitor));
}
return bag;
}

View file

@ -26,11 +26,6 @@ public class ModifierValue extends Value{
return this.value;
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return null;
@ -50,7 +45,6 @@ public class ModifierValue extends Value{
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);
VisitorBag bag = new VisitorBag();
bag.merge(value.visit(visitor));
return bag;
}
}

View file

@ -20,11 +20,6 @@ public class StaticValue extends Value{
return this.token;
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return null;
@ -44,6 +39,7 @@ public class StaticValue extends Value{
@Override
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);
return null;
VisitorBag bag = new VisitorBag();
return bag;
}
}

View file

@ -31,11 +31,6 @@ public class TriValue extends Value{
return fail;
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return null;
@ -55,11 +50,6 @@ public class TriValue extends Value{
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);
VisitorBag bag = new VisitorBag();
bag.merge(this.check.visit(visitor));
bag.merge(this.success.visit(visitor));
bag.merge(this.fail.visit(visitor));
return bag;
}

View file

@ -26,11 +26,6 @@ public class VariableAccessValue extends Value{
return this.variable;
}
@Override
public void build(Builder builder) throws Exception {
}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
return null;
@ -45,7 +40,6 @@ public class VariableAccessValue extends Value{
public VisitorBag visit(JavaVisitor<?> visitor) {
if(visitor.canVisit(getClass())) return visitor.visit(this);
VisitorBag bag = new VisitorBag();
bag.merge(this.base.visit(visitor));
return bag;
}

View file

@ -1,6 +1,6 @@
package dev.peerat.parser.java.visitor.operation;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.operation.Operation;
import dev.peerat.parser.java.visitor.JavaVisitor;
import dev.peerat.parser.visitor.VisitorBag;

View file

@ -0,0 +1,50 @@
package dev.peerat.parser.java.visitor.value;
import dev.peerat.parser.java.value.ArrayAccessValue;
import dev.peerat.parser.java.value.Value;
import dev.peerat.parser.java.visitor.JavaVisitor;
import dev.peerat.parser.visitor.Visitor;
import dev.peerat.parser.visitor.VisitorBag;
public class JavaArrayAccessValueVisitor extends JavaVisitor<ArrayAccessValue>{
private Visitor<Value> basePredicate;
private Visitor<Value> accessPredicate;
public JavaArrayAccessValueVisitor(){
super(ArrayAccessValue.class);
}
public JavaArrayAccessValueVisitor checkBase(Visitor<Value> visitor){
this.basePredicate = visitor;
return this;
}
public JavaArrayAccessValueVisitor accessor(Visitor<Value> visitor){
this.accessPredicate = visitor;
return this;
}
@Override
public VisitorBag visitElement(ArrayAccessValue element){
VisitorBag bag = new VisitorBag();
if(this.basePredicate != null){
VisitorBag visited = this.basePredicate.visit(element.base());
bag.merge(visited);
if(!visited.isValidated()) return bag;
}
if(this.accessPredicate != null){
VisitorBag visited = this.accessPredicate.visit(element.getAccessor());
bag.merge(visited);
if(!visited.isValidated()) return bag;
}
bag.compute(element);
return bag;
}
}

View file

@ -15,7 +15,6 @@ import dev.peerat.parser.Parser;
import dev.peerat.parser.Token;
import dev.peerat.parser.TokenType;
import dev.peerat.parser.TokenValidator;
import dev.peerat.parser.java.Operation.OperationContainer;
import dev.peerat.parser.java.operation.AssignOperation;
import dev.peerat.parser.java.operation.BreakOperation;
import dev.peerat.parser.java.operation.CatchOperation;
@ -30,6 +29,7 @@ import dev.peerat.parser.java.operation.SynchronizedOperation;
import dev.peerat.parser.java.operation.ThrowOperation;
import dev.peerat.parser.java.operation.TryOperation;
import dev.peerat.parser.java.operation.WhileOperation;
import dev.peerat.parser.java.operation.Operation.OperationContainer;
import dev.peerat.parser.java.value.Value;
import dev.peerat.parser.state.RedirectStateTree;
import dev.peerat.parser.state.StateTree;

View file

@ -58,9 +58,6 @@ public class ValueTypesTests {
return this.value;
}
@Override
public void build(Builder builder) throws Exception {}
@Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){return null;}

View file

@ -21,8 +21,8 @@ import dev.peerat.parser.java.Interface;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.JavaFile;
import dev.peerat.parser.java.JavaParser;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.Variable;
import dev.peerat.parser.java.operation.Operation;
public class BaseElementTests{

View file

@ -4,9 +4,9 @@ import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;
import dev.peerat.parser.java.Function;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.element.BaseElementTests;
import dev.peerat.parser.java.operation.AssignOperation;
import dev.peerat.parser.java.operation.Operation;
import dev.peerat.parser.java.value.StaticValue;
public class AssignOperationTest extends BaseElementTests{

View file

@ -4,11 +4,11 @@ import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;
import dev.peerat.parser.java.Function;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.element.BaseElementTests;
import dev.peerat.parser.java.operation.BreakOperation;
import dev.peerat.parser.java.operation.ContinueOperation;
import dev.peerat.parser.java.operation.ForOperation;
import dev.peerat.parser.java.operation.Operation;
import dev.peerat.parser.java.operation.ReturnOperation;
import dev.peerat.parser.java.operation.WhileOperation;

View file

@ -4,10 +4,10 @@ import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;
import dev.peerat.parser.java.Function;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.element.BaseElementTests;
import dev.peerat.parser.java.operation.BreakOperation;
import dev.peerat.parser.java.operation.ForOperation;
import dev.peerat.parser.java.operation.Operation;
public class TryCatchFinallyOperationTest extends BaseElementTests{

View file

@ -6,9 +6,9 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import dev.peerat.parser.java.Function;
import dev.peerat.parser.java.JavaFile;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.element.BaseElementTests;
import dev.peerat.parser.java.operation.IfOperation;
import dev.peerat.parser.java.operation.Operation;
import dev.peerat.parser.java.value.BiValue;
import dev.peerat.parser.java.value.StaticValue;
import dev.peerat.parser.java.value.Value;

View file

@ -4,9 +4,9 @@ import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;
import dev.peerat.parser.java.Function;
import dev.peerat.parser.java.Operation;
import dev.peerat.parser.java.element.BaseElementTests;
import dev.peerat.parser.java.operation.IfOperation;
import dev.peerat.parser.java.operation.Operation;
import dev.peerat.parser.java.value.BiValue;
import dev.peerat.parser.java.value.StaticValue;