Remove ElementBuilder -> will become a Printer in a different package later.
This commit is contained in:
parent
e98ad587c1
commit
f4cf250de0
56 changed files with 85 additions and 438 deletions
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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>{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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(){}
|
||||
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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;}
|
||||
|
||||
|
|
|
@ -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{
|
||||
|
||||
|
|
|
@ -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{
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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{
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue