Compare commits
No commits in common. "ce15d7e4351f9ec297e01cd6136b4de3ba87bf96" and "e98ad587c161c4b91609faa6ccf86bd7d8b7183d" have entirely different histories.
ce15d7e435
...
e98ad587c1
81 changed files with 486 additions and 1154 deletions
48
src/dev/peerat/parser/ElementBuilder.java
Normal file
48
src/dev/peerat/parser/ElementBuilder.java
Normal file
|
@ -0,0 +1,48 @@
|
|||
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,13 +2,12 @@ package dev.peerat.parser.java;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.Token;
|
||||
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 Annotation extends JavaElement{
|
||||
|
@ -51,6 +50,15 @@ 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){
|
||||
|
@ -92,6 +100,24 @@ 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){
|
||||
|
@ -113,7 +139,7 @@ public class Annotation extends JavaElement{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
|
||||
|
@ -124,5 +150,4 @@ public class Annotation extends JavaElement{
|
|||
|
||||
return bag;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@ import java.util.List;
|
|||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class AnnotationClass extends ClassBase{
|
||||
|
@ -42,6 +41,25 @@ 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);
|
||||
|
@ -67,7 +85,7 @@ public class AnnotationClass extends ClassBase{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@ import java.util.List;
|
|||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class Class extends ClassBase{
|
||||
|
@ -53,6 +52,29 @@ 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);
|
||||
|
@ -78,15 +100,13 @@ public class Class extends ClassBase{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
System.out.println("VISIT CLASS "+visitor);
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
|
||||
bag.merge(super.visit(visitor));
|
||||
|
||||
for(JavaElement element : this.elements){
|
||||
System.out.println("VISIT CLASS "+visitor+" -> "+element);
|
||||
bag.merge(element.visit(visitor));
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,6 @@ import dev.peerat.parser.java.Annotation.AnnotableBuffer;
|
|||
import dev.peerat.parser.java.Function.FunctionContainer;
|
||||
import dev.peerat.parser.java.Variable.VariableContainer;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
|
||||
|
@ -48,7 +47,7 @@ public abstract class ClassBase extends Annotable implements AnnotableBuffer, Cl
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor){
|
||||
public VisitorBag visit(JavaVisitor<?> visitor){
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
List<Annotation> annotations = getAnnotations();
|
||||
|
|
|
@ -5,7 +5,6 @@ import java.util.List;
|
|||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class Enumeration extends ClassBase{
|
||||
|
@ -47,6 +46,25 @@ 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);
|
||||
|
@ -72,7 +90,7 @@ public class Enumeration extends ClassBase{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
|
||||
|
|
|
@ -7,13 +7,11 @@ 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;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class Function extends Annotable implements VariableContainer, OperationContainer, ValueContainer{
|
||||
|
@ -99,6 +97,41 @@ 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);
|
||||
|
@ -135,7 +168,7 @@ public class Function extends Annotable implements VariableContainer, OperationC
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor){
|
||||
public VisitorBag visit(JavaVisitor<?> visitor){
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@ import java.util.function.Function;
|
|||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class Import extends JavaElement{
|
||||
|
@ -26,6 +25,11 @@ 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;
|
||||
|
@ -37,7 +41,7 @@ public class Import extends JavaElement{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@ import java.util.List;
|
|||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class Interface extends ClassBase{
|
||||
|
@ -47,6 +46,25 @@ 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);
|
||||
|
@ -72,7 +90,7 @@ public class Interface extends ClassBase{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor){
|
||||
public VisitorBag visit(JavaVisitor<?> visitor){
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
|
||||
|
|
|
@ -3,14 +3,15 @@ package dev.peerat.parser.java;
|
|||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.ElementBuilder;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public abstract class JavaElement{
|
||||
public abstract class JavaElement implements ElementBuilder{
|
||||
|
||||
public abstract <E extends JavaElement> E find(Function<JavaElement, Boolean> finder);
|
||||
|
||||
public abstract <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list);
|
||||
|
||||
public abstract VisitorBag visit(Visitor<JavaElement> visitor);
|
||||
public abstract VisitorBag visit(JavaVisitor<?> visitor);
|
||||
}
|
|
@ -4,10 +4,10 @@ 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;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class JavaFile extends JavaElement implements ClassContainer, AnnotableBuffer{
|
||||
|
@ -66,6 +66,24 @@ 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;
|
||||
|
@ -86,7 +104,7 @@ public class JavaFile extends JavaElement implements ClassContainer, AnnotableBu
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor){
|
||||
public VisitorBag visit(JavaVisitor<?> visitor){
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
package dev.peerat.parser.java.operation;
|
||||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
package dev.peerat.parser.java;
|
||||
|
||||
public abstract class Operation extends JavaElement{
|
||||
|
||||
|
@ -11,5 +9,6 @@ public abstract class Operation extends JavaElement{
|
|||
}
|
||||
|
||||
public Operation(){}
|
||||
|
||||
|
||||
}
|
|
@ -1,12 +1,14 @@
|
|||
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.visitor.Visitor;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class Variable extends Annotable{
|
||||
|
@ -64,7 +66,24 @@ public class Variable extends Annotable{
|
|||
public Value getValue(){
|
||||
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);
|
||||
|
@ -83,7 +102,7 @@ public class Variable extends Annotable{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor){
|
||||
public VisitorBag visit(JavaVisitor<?> visitor){
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package dev.peerat.parser.java.builder;
|
||||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.operation.Operation;
|
||||
import dev.peerat.parser.java.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,
|
||||
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.generic, null),
|
||||
new Token(0,0, this.type, null),
|
||||
new Token(0,0, this.name, null),
|
||||
this.parameters,
|
||||
this.throwables
|
||||
|
|
|
@ -6,11 +6,10 @@ 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.Operation;
|
||||
import dev.peerat.parser.java.operation.Operation.OperationContainer;
|
||||
import dev.peerat.parser.java.Operation;
|
||||
import dev.peerat.parser.java.Operation.OperationContainer;
|
||||
import dev.peerat.parser.java.tree.JavaTreeType;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class JavaOperationBuilder extends JavaBuilder<Operation>{
|
||||
|
@ -35,6 +34,11 @@ 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;
|
||||
|
@ -46,7 +50,7 @@ public class JavaOperationBuilder extends JavaBuilder<Operation>{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
@ -24,7 +24,6 @@ import dev.peerat.parser.java.value.Value;
|
|||
import dev.peerat.parser.java.value.VariableAccessValue;
|
||||
import dev.peerat.parser.java.value.Value.ValueContainer;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class JavaValueBuilder extends JavaBuilder<Value>{
|
||||
|
@ -128,6 +127,11 @@ 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;
|
||||
|
@ -139,7 +143,7 @@ public class JavaValueBuilder extends JavaBuilder<Value>{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,9 +4,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.value.Value;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class AssignOperation extends Operation{
|
||||
|
@ -27,6 +27,13 @@ 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;
|
||||
|
@ -41,7 +48,7 @@ public class AssignOperation extends Operation{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
bag.merge(left.visit(visitor));
|
||||
|
|
|
@ -4,14 +4,19 @@ 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.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
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;
|
||||
|
@ -21,7 +26,7 @@ public class BreakOperation extends Operation{
|
|||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -3,9 +3,7 @@ package dev.peerat.parser.java.operation;
|
|||
import java.util.List;
|
||||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class CatchOperation extends OperationBag{
|
||||
|
@ -28,7 +26,12 @@ public class CatchOperation extends OperationBag{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
return super.visit(visitor);
|
||||
}
|
||||
|
|
|
@ -4,12 +4,17 @@ 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.Visitor;
|
||||
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;
|
||||
|
@ -19,7 +24,7 @@ public class ContinueOperation extends Operation{
|
|||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -1,14 +1,17 @@
|
|||
package dev.peerat.parser.java.operation;
|
||||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class DoOperation extends OperationBag{
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
return super.visit(visitor);
|
||||
}
|
||||
|
|
|
@ -1,14 +1,17 @@
|
|||
package dev.peerat.parser.java.operation;
|
||||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class ElseOperation extends OperationBag{
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
return super.visit(visitor);
|
||||
}
|
||||
|
|
|
@ -1,14 +1,17 @@
|
|||
package dev.peerat.parser.java.operation;
|
||||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class FinallyOperation extends OperationBag{
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
return super.visit(visitor);
|
||||
}
|
||||
|
|
|
@ -7,7 +7,6 @@ import dev.peerat.parser.java.JavaElement;
|
|||
import dev.peerat.parser.java.Variable;
|
||||
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 ForOperation extends OperationBag{
|
||||
|
@ -91,7 +90,12 @@ public class ForOperation extends OperationBag{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
if(init_vars != null)
|
||||
|
|
|
@ -7,7 +7,6 @@ import dev.peerat.parser.Token;
|
|||
import dev.peerat.parser.java.JavaElement;
|
||||
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 ForeachOperation extends OperationBag{
|
||||
|
@ -50,7 +49,12 @@ public class ForeachOperation extends OperationBag{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
bag.merge(this.iterator.visit(visitor));
|
||||
|
|
|
@ -6,7 +6,6 @@ import java.util.function.Function;
|
|||
import dev.peerat.parser.java.JavaElement;
|
||||
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 IfOperation extends OperationBag{
|
||||
|
@ -36,7 +35,12 @@ public class IfOperation extends OperationBag{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
bag.merge(condition.visit(visitor));
|
||||
|
|
|
@ -5,13 +5,13 @@ 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;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public abstract class OperationBag extends Operation implements VariableContainer, OperationContainer, ValueContainer{
|
||||
|
@ -62,7 +62,7 @@ public abstract class OperationBag extends Operation implements VariableContaine
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor){
|
||||
public VisitorBag visit(JavaVisitor<?> visitor){
|
||||
VisitorBag bag = new VisitorBag();
|
||||
for(JavaElement element : this.elements){
|
||||
bag.merge(element.visit(visitor));
|
||||
|
|
|
@ -4,9 +4,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.value.Value;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class ReturnOperation extends Operation{
|
||||
|
@ -21,6 +21,11 @@ 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;
|
||||
|
@ -35,7 +40,7 @@ public class ReturnOperation extends Operation{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
if(this.value != null) bag.merge(this.value.visit(visitor));
|
||||
|
|
|
@ -4,14 +4,18 @@ 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.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
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;
|
||||
|
@ -21,7 +25,7 @@ public class SwitchOperation extends Operation{
|
|||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,6 @@ import java.util.function.Function;
|
|||
import dev.peerat.parser.java.JavaElement;
|
||||
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 SynchronizedOperation extends OperationBag{
|
||||
|
@ -36,7 +35,12 @@ public class SynchronizedOperation extends OperationBag{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
bag.merge(this.value.visit(visitor));
|
||||
|
|
|
@ -4,9 +4,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.value.Value;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class ThrowOperation extends Operation{
|
||||
|
@ -20,6 +20,12 @@ public class ThrowOperation extends Operation{
|
|||
public Value getValue(){
|
||||
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) {
|
||||
|
@ -33,7 +39,7 @@ public class ThrowOperation extends Operation{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
bag.merge(this.value.visit(visitor));
|
||||
|
|
|
@ -6,7 +6,6 @@ import java.util.function.Function;
|
|||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Variable;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class TryOperation extends OperationBag{
|
||||
|
@ -41,7 +40,12 @@ public class TryOperation extends OperationBag{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
if(this.resource != null) bag.merge(this.resource.visit(visitor));
|
||||
|
|
|
@ -6,7 +6,6 @@ import java.util.function.Function;
|
|||
import dev.peerat.parser.java.JavaElement;
|
||||
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 WhileOperation extends OperationBag{
|
||||
|
@ -35,7 +34,12 @@ public class WhileOperation extends OperationBag{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
bag.merge(this.condition.visit(visitor));
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
package dev.peerat.parser.java.printer;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.Annotation;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class JavaAnnotationPrinter extends JavaPrinter<Annotation>{
|
||||
|
||||
@Override
|
||||
public void print(Annotation element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception {
|
||||
writer.write(buffer);
|
||||
writer.write("@");
|
||||
writer.write(element.getName());
|
||||
Map<Token, Value> map = element.getParameters();
|
||||
if(map != null && !map.isEmpty()){
|
||||
writer.write("(");
|
||||
Iterator<Entry<Token, Value>> iterator = map.entrySet().iterator();
|
||||
while(iterator.hasNext()){
|
||||
Entry<Token, Value> entry = iterator.next();
|
||||
writer.write(entry.getKey());
|
||||
writer.write("=");
|
||||
Value value = entry.getValue();
|
||||
provider.getPrinter(value).print(value, writer, buffer, provider);
|
||||
if(iterator.hasNext()) writer.write(",");
|
||||
}
|
||||
writer.write(")");
|
||||
}
|
||||
writer.write("\n");
|
||||
}
|
||||
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
package dev.peerat.parser.java.printer;
|
||||
|
||||
import java.lang.reflect.Modifier;
|
||||
|
||||
import dev.peerat.parser.java.Class;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Variable;
|
||||
|
||||
public class JavaClassPrinter extends JavaPrinter<dev.peerat.parser.java.Class>{
|
||||
|
||||
@Override
|
||||
public void print(Class element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception {
|
||||
writer.write(buffer+Modifier.toString(element.getModifier())+" class ");
|
||||
writer.write(element.getName());
|
||||
if(element.getExtension() != null){
|
||||
writer.write(" extends ");
|
||||
writer.write(element.getExtension());
|
||||
}
|
||||
if(element.getImplementations() != null){
|
||||
writer.write(" implements ");
|
||||
writer.write(element.getImplementations());
|
||||
}
|
||||
writer.write("{\n");
|
||||
for(JavaElement content : element.getElements()){
|
||||
provider.getPrinter(content).print(content, writer, buffer+"\t", provider);
|
||||
if(content instanceof Variable) writer.write(";");
|
||||
writer.write("\n");
|
||||
}
|
||||
writer.write("}\n");
|
||||
}
|
||||
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
package dev.peerat.parser.java.printer;
|
||||
|
||||
import dev.peerat.parser.java.ClassBase;
|
||||
import dev.peerat.parser.java.Import;
|
||||
import dev.peerat.parser.java.JavaFile;
|
||||
|
||||
public class JavaFilePrinter extends JavaPrinter<JavaFile>{
|
||||
|
||||
@Override
|
||||
public void print(JavaFile element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception {
|
||||
if(element.getPackage() != null){
|
||||
writer.write("package ");
|
||||
writer.write(element.getPackage());
|
||||
writer.write(";\n");
|
||||
}
|
||||
for(Import imp : element.getImports()){
|
||||
provider.getPrinter(imp).print(imp, writer, buffer, provider);
|
||||
writer.write("\n");
|
||||
}
|
||||
|
||||
ClassBase clazz = element.getMainClass();
|
||||
provider.getPrinter(clazz).print(clazz, writer, buffer, provider);
|
||||
|
||||
for(ClassBase classes : element.getSubClasses()){
|
||||
provider.getPrinter(classes).print(classes, writer, buffer, provider);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,56 +0,0 @@
|
|||
package dev.peerat.parser.java.printer;
|
||||
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.Iterator;
|
||||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.Function;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Variable;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class JavaFunctionPrinter extends JavaPrinter<Function>{
|
||||
|
||||
@Override
|
||||
public void print(Function element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception {
|
||||
writer.write(buffer+Modifier.toString(element.getModifier())+" ");
|
||||
if(element.getGeneric() != null){
|
||||
writer.write(element.getGeneric());
|
||||
writer.write(" ");
|
||||
}
|
||||
if(element.getReturnType() != null){
|
||||
writer.write(element.getReturnType());
|
||||
writer.write(" ");
|
||||
}
|
||||
writer.write(element.getName());
|
||||
writer.write("(");
|
||||
if(element.getParameters() != null){
|
||||
Iterator<Variable> parameters = element.getParameters().iterator();
|
||||
while(parameters.hasNext()){
|
||||
Variable parameter = parameters.next();
|
||||
provider.getPrinter(parameter).print(parameter, writer, "", provider);
|
||||
if(parameters.hasNext()) writer.write(", ");
|
||||
}
|
||||
}
|
||||
writer.write(")");
|
||||
if(element.getThrowables() != null){
|
||||
Iterator<Token> throwables = element.getThrowables().iterator();
|
||||
if(throwables.hasNext()){
|
||||
writer.write(" throws ");
|
||||
while(throwables.hasNext()){
|
||||
Token token = throwables.next();
|
||||
writer.write(token);
|
||||
if(throwables.hasNext()) writer.write(",");
|
||||
}
|
||||
}
|
||||
}
|
||||
writer.write("{\n");
|
||||
for(JavaElement content : element.getElements()){
|
||||
provider.getPrinter(content).print(content, writer, buffer+"\t", provider);
|
||||
if(content instanceof Value) writer.write(";");
|
||||
writer.write("\n");
|
||||
}
|
||||
writer.write(buffer+"}");
|
||||
}
|
||||
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
package dev.peerat.parser.java.printer;
|
||||
|
||||
import dev.peerat.parser.java.Import;
|
||||
|
||||
public class JavaImportPrinter extends JavaPrinter<Import>{
|
||||
|
||||
@Override
|
||||
public void print(Import element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception {
|
||||
writer.write("import ");
|
||||
if(element.isStatic()) writer.write("static ");
|
||||
writer.write(element.getValue());
|
||||
writer.write(";");
|
||||
}
|
||||
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
package dev.peerat.parser.java.printer;
|
||||
|
||||
import dev.peerat.parser.java.operation.ReturnOperation;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class JavaOperationPrinter{
|
||||
|
||||
public static class JavaOperationReturnPrinter extends JavaPrinter<ReturnOperation>{
|
||||
|
||||
@Override
|
||||
public void print(ReturnOperation element, Writer writer, String buffer, JavaPrintProvider provider)throws Exception {
|
||||
writer.write(buffer+"return");
|
||||
Value value = element.getValue();
|
||||
if(value == null){
|
||||
writer.write(";");
|
||||
return;
|
||||
}
|
||||
writer.write(" ");
|
||||
provider.getPrinter(value).print(value, writer, "", provider);
|
||||
writer.write(";");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,105 +0,0 @@
|
|||
package dev.peerat.parser.java.printer;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.Annotation;
|
||||
import dev.peerat.parser.java.Function;
|
||||
import dev.peerat.parser.java.Import;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.JavaFile;
|
||||
import dev.peerat.parser.java.Variable;
|
||||
import dev.peerat.parser.java.operation.ReturnOperation;
|
||||
import dev.peerat.parser.java.printer.JavaOperationPrinter.JavaOperationReturnPrinter;
|
||||
import dev.peerat.parser.java.printer.JavaValuePrinter.JavaArrayAccessValuePrinter;
|
||||
import dev.peerat.parser.java.printer.JavaValuePrinter.JavaArrayValuePrinter;
|
||||
import dev.peerat.parser.java.printer.JavaValuePrinter.JavaBiValuePrinter;
|
||||
import dev.peerat.parser.java.printer.JavaValuePrinter.JavaCastValuePrinter;
|
||||
import dev.peerat.parser.java.printer.JavaValuePrinter.JavaInstanceValuePrinter;
|
||||
import dev.peerat.parser.java.printer.JavaValuePrinter.JavaLambdaValuePrinter;
|
||||
import dev.peerat.parser.java.printer.JavaValuePrinter.JavaMethodCallValuePrinter;
|
||||
import dev.peerat.parser.java.printer.JavaValuePrinter.JavaModifierValuePrinter;
|
||||
import dev.peerat.parser.java.printer.JavaValuePrinter.JavaStaticValuePrinter;
|
||||
import dev.peerat.parser.java.printer.JavaValuePrinter.JavaTriValuePrinter;
|
||||
import dev.peerat.parser.java.printer.JavaValuePrinter.JavaVariableAccessValuePrinter;
|
||||
import dev.peerat.parser.java.value.ArrayAccessValue;
|
||||
import dev.peerat.parser.java.value.ArrayValue;
|
||||
import dev.peerat.parser.java.value.BiValue;
|
||||
import dev.peerat.parser.java.value.CastValue;
|
||||
import dev.peerat.parser.java.value.InstanceValue;
|
||||
import dev.peerat.parser.java.value.LambdaValue;
|
||||
import dev.peerat.parser.java.value.MethodCallValue;
|
||||
import dev.peerat.parser.java.value.ModifierValue;
|
||||
import dev.peerat.parser.java.value.StaticValue;
|
||||
import dev.peerat.parser.java.value.TriValue;
|
||||
import dev.peerat.parser.java.value.VariableAccessValue;
|
||||
|
||||
public abstract class JavaPrinter<T extends JavaElement>{
|
||||
|
||||
public static JavaPrintProvider getProvider(){
|
||||
JavaPrintProvider provider = new JavaPrintProvider();
|
||||
provider.register(ArrayAccessValue.class, new JavaArrayAccessValuePrinter());
|
||||
provider.register(ArrayValue.class, new JavaArrayValuePrinter());
|
||||
provider.register(BiValue.class, new JavaBiValuePrinter());
|
||||
provider.register(CastValue.class, new JavaCastValuePrinter());
|
||||
provider.register(InstanceValue.class, new JavaInstanceValuePrinter());
|
||||
provider.register(LambdaValue.class, new JavaLambdaValuePrinter());
|
||||
provider.register(MethodCallValue.class, new JavaMethodCallValuePrinter());
|
||||
provider.register(ModifierValue.class, new JavaModifierValuePrinter());
|
||||
provider.register(StaticValue.class, new JavaStaticValuePrinter());
|
||||
provider.register(TriValue.class, new JavaTriValuePrinter());
|
||||
provider.register(VariableAccessValue.class, new JavaVariableAccessValuePrinter());
|
||||
|
||||
provider.register(ReturnOperation.class, new JavaOperationReturnPrinter());
|
||||
|
||||
provider.register(Import.class, new JavaImportPrinter());
|
||||
provider.register(Annotation.class, new JavaAnnotationPrinter());
|
||||
provider.register(Variable.class, new JavaVariablePrinter());
|
||||
provider.register(Function.class, new JavaFunctionPrinter());
|
||||
provider.register(dev.peerat.parser.java.Class.class, new JavaClassPrinter());
|
||||
provider.register(JavaFile.class, new JavaFilePrinter());
|
||||
return provider;
|
||||
}
|
||||
|
||||
public abstract void print(T element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception;
|
||||
|
||||
public static class JavaPrintProvider{
|
||||
|
||||
private Map<Class<?>, JavaPrinter<?>> map;
|
||||
|
||||
public JavaPrintProvider(){
|
||||
this.map = new HashMap<>();
|
||||
}
|
||||
|
||||
public void register(Class<?> type, JavaPrinter<?> printer){
|
||||
this.map.put(type, printer);
|
||||
}
|
||||
|
||||
public <T extends JavaElement> JavaPrinter<T> getPrinter(T type){
|
||||
return (JavaPrinter<T>) getPrinter(type.getClass());
|
||||
}
|
||||
|
||||
public <T extends JavaElement> JavaPrinter<T> getPrinter(Class<T> type){
|
||||
return (JavaPrinter<T>) this.map.get(type);
|
||||
}
|
||||
}
|
||||
|
||||
public static class Writer{
|
||||
|
||||
private BufferedWriter writer;
|
||||
|
||||
public Writer(BufferedWriter writer){
|
||||
this.writer = writer;
|
||||
}
|
||||
|
||||
public void write(String value) throws Exception{
|
||||
this.writer.write(value);
|
||||
}
|
||||
|
||||
public void write(Token token) throws Exception{
|
||||
write(token.getValue());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,208 +0,0 @@
|
|||
package dev.peerat.parser.java.printer;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.value.ArrayAccessValue;
|
||||
import dev.peerat.parser.java.value.ArrayValue;
|
||||
import dev.peerat.parser.java.value.BiValue;
|
||||
import dev.peerat.parser.java.value.CastValue;
|
||||
import dev.peerat.parser.java.value.InstanceValue;
|
||||
import dev.peerat.parser.java.value.LambdaValue;
|
||||
import dev.peerat.parser.java.value.LambdaValue.LambdaParameter;
|
||||
import dev.peerat.parser.java.value.MethodCallValue;
|
||||
import dev.peerat.parser.java.value.ModifierValue;
|
||||
import dev.peerat.parser.java.value.StaticValue;
|
||||
import dev.peerat.parser.java.value.TriValue;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
import dev.peerat.parser.java.value.VariableAccessValue;
|
||||
|
||||
public class JavaValuePrinter{
|
||||
|
||||
public static class JavaStaticValuePrinter extends JavaPrinter<StaticValue>{
|
||||
|
||||
public void print(StaticValue element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception {
|
||||
writer.write(buffer);
|
||||
writer.write(element.getToken());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class JavaBiValuePrinter extends JavaPrinter<BiValue>{
|
||||
|
||||
public void print(BiValue element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception{
|
||||
writer.write(buffer);
|
||||
Value left = element.left();
|
||||
provider.getPrinter(left).print(left, writer, "", provider);
|
||||
|
||||
writer.write(element.getAction());
|
||||
|
||||
Value right = element.right();
|
||||
provider.getPrinter(right).print(right, writer, "", provider);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class JavaTriValuePrinter extends JavaPrinter<TriValue>{
|
||||
|
||||
public void print(TriValue element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception{
|
||||
writer.write(buffer);
|
||||
Value value = element.getChecker();
|
||||
provider.getPrinter(value).print(value, writer, "", provider);
|
||||
|
||||
writer.write(" ? ");
|
||||
|
||||
value = element.success();
|
||||
provider.getPrinter(value).print(value, writer, "", provider);
|
||||
|
||||
writer.write(" : ");
|
||||
|
||||
value = element.fail();
|
||||
provider.getPrinter(value).print(value, writer, "", provider);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class JavaArrayAccessValuePrinter extends JavaPrinter<ArrayAccessValue>{
|
||||
|
||||
public void print(ArrayAccessValue element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception{
|
||||
writer.write(buffer);
|
||||
Value value = element.base();
|
||||
provider.getPrinter(value).print(value, writer, "", provider);
|
||||
writer.write("[");
|
||||
value = element.getAccessor();
|
||||
provider.getPrinter(value).print(value, writer, "", provider);
|
||||
writer.write("]");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class JavaArrayValuePrinter extends JavaPrinter<ArrayValue>{
|
||||
|
||||
public void print(ArrayValue element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception{
|
||||
writer.write(buffer+"{");
|
||||
Value[] values = element.getValues();
|
||||
for(int i = 0; i < values.length; i++){
|
||||
Value value = values[i];
|
||||
provider.getPrinter(value).print(value, writer, "", provider);
|
||||
if(i < values.length-1) writer.write(", ");
|
||||
}
|
||||
writer.write("}");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class JavaCastValuePrinter extends JavaPrinter<CastValue>{
|
||||
|
||||
public void print(CastValue element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception {
|
||||
writer.write(buffer+"(");
|
||||
writer.write("(");
|
||||
writer.write(element.getType());
|
||||
writer.write(")");
|
||||
Value value = element.getValue();
|
||||
provider.getPrinter(value).print(value, writer, "", provider);
|
||||
writer.write(")");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class JavaInstanceValuePrinter extends JavaPrinter<InstanceValue>{
|
||||
|
||||
public void print(InstanceValue element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception {
|
||||
writer.write(buffer+"new ");
|
||||
writer.write(element.getToken());
|
||||
writer.write("(");
|
||||
Iterator<Value> parameters = element.getParameters().iterator();
|
||||
while(parameters.hasNext()){
|
||||
Value value = parameters.next();
|
||||
provider.getPrinter(value).print(value, writer, "", provider);
|
||||
if(parameters.hasNext()) writer.write(", ");
|
||||
}
|
||||
writer.write(")");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class JavaLambdaValuePrinter extends JavaPrinter<LambdaValue>{
|
||||
|
||||
public void print(LambdaValue element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception {
|
||||
writer.write(buffer+"(");
|
||||
Iterator<LambdaParameter> parameters = element.getParameters().iterator();
|
||||
while(parameters.hasNext()){
|
||||
LambdaParameter parameter = parameters.next();
|
||||
if(parameter.getType() != null){
|
||||
writer.write(parameter.getType());
|
||||
writer.write(" ");
|
||||
}
|
||||
writer.write(parameter.getName());
|
||||
if(parameters.hasNext()) writer.write(", ");
|
||||
}
|
||||
writer.write(") -> ");
|
||||
if(element.getOperations().size() == 1){
|
||||
JavaElement value = element.getOperations().get(0);
|
||||
provider.getPrinter(value).print(value, writer, "", provider);
|
||||
}else{
|
||||
writer.write("{\n");
|
||||
Iterator<JavaElement> operations = element.getOperations().iterator();
|
||||
while(operations.hasNext()){
|
||||
JavaElement operation = operations.next();
|
||||
provider.getPrinter(operation).print(operation, writer, buffer+"\t", provider);
|
||||
if(operation instanceof Value) writer.write(";");
|
||||
writer.write("\n");
|
||||
}
|
||||
writer.write("}");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class JavaMethodCallValuePrinter extends JavaPrinter<MethodCallValue>{
|
||||
|
||||
public void print(MethodCallValue element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception {
|
||||
writer.write(buffer);
|
||||
Value base = element.base();
|
||||
if(base != null){
|
||||
provider.getPrinter(base).print(base, writer, "", provider);
|
||||
writer.write(".");
|
||||
}
|
||||
if(element.getGeneric() != null){
|
||||
writer.write("<");
|
||||
writer.write(element.getGeneric());
|
||||
writer.write(">");
|
||||
}
|
||||
writer.write(element.getToken());
|
||||
writer.write("(");
|
||||
Iterator<Value> parameters = element.getParameters().iterator();
|
||||
while(parameters.hasNext()){
|
||||
Value value = parameters.next();
|
||||
provider.getPrinter(value).print(value, writer, "", provider);
|
||||
if(parameters.hasNext()) writer.write(", ");
|
||||
}
|
||||
writer.write(")");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class JavaModifierValuePrinter extends JavaPrinter<ModifierValue>{
|
||||
|
||||
public void print(ModifierValue element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception{
|
||||
writer.write(buffer+element.getModifier());
|
||||
Value value = element.getValue();
|
||||
provider.getPrinter(value).print(value, writer, "", provider);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class JavaVariableAccessValuePrinter extends JavaPrinter<VariableAccessValue>{
|
||||
|
||||
public void print(VariableAccessValue element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception{
|
||||
writer.write(buffer);
|
||||
Value value = element.base();
|
||||
provider.getPrinter(value).print(value, writer, "", provider);
|
||||
writer.write(".");
|
||||
writer.write(element.getVariable());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
package dev.peerat.parser.java.printer;
|
||||
|
||||
import java.lang.reflect.Modifier;
|
||||
|
||||
import dev.peerat.parser.java.Variable;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class JavaVariablePrinter extends JavaPrinter<Variable>{
|
||||
|
||||
@Override
|
||||
public void print(Variable element, Writer writer, String buffer, JavaPrintProvider provider) throws Exception {
|
||||
writer.write(buffer+Modifier.toString(element.getModifier())+" ");
|
||||
writer.write(element.getType());
|
||||
writer.write(" ");
|
||||
writer.write(element.getName());
|
||||
if(element.getValue() != null){
|
||||
writer.write(" = ");
|
||||
Value value = element.getValue();
|
||||
provider.getPrinter(value).print(value, writer, "", provider);
|
||||
writer.write(";");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
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;
|
||||
|
@ -31,7 +30,7 @@ public class ClassTree extends SyntaxTree<JavaElement> {
|
|||
.then(new RedirectStateTree<>(type, (global, local) -> global.set("name", local.get())));
|
||||
clazz_base.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.<Bag>get("modifier").get(),bag.get("name"));
|
||||
Class current = new Class((((AnnotableBuffer) parent).getAnnotationBuffer()), bag.get("modifier") == null ? 0 : bag.get("modifier"),bag.get("name"));
|
||||
if (parent instanceof ClassContainer)
|
||||
((ClassContainer) parent).addClass(current);
|
||||
return current;
|
||||
|
@ -54,7 +53,7 @@ public class ClassTree extends SyntaxTree<JavaElement> {
|
|||
clazz_implement_name.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.<Bag>get("modifier").get(),
|
||||
bag.get("modifier") == null ? 0 : bag.get("modifier"),
|
||||
bag.get("name"),
|
||||
bag.get("extend"), bag.get("implement"));
|
||||
if (parent instanceof ClassContainer)
|
||||
|
@ -68,7 +67,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.<Bag>get("modifier").get(),
|
||||
bag.get("modifier") == null ? 0 : bag.get("modifier"),
|
||||
bag.get("name"),
|
||||
bag.get("extend"), bag.get("implement"));
|
||||
if (parent instanceof ClassContainer)
|
||||
|
|
|
@ -2,6 +2,7 @@ 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;
|
||||
|
@ -11,7 +12,6 @@ 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;
|
||||
|
|
|
@ -132,7 +132,6 @@ public class ValueTree extends SyntaxTree<JavaElement> { //TODO order tree by mo
|
|||
.end(ValueChainBuilder.build((builder) -> builder.buildStatic(), false));
|
||||
|
||||
value_operation.equals(">", action(">")).then(redirectRight).end(ValueChainBuilder.build((builder) -> builder.buildOperation(), false));
|
||||
value_operation.equals("=", action("=")).then(redirectRight).end(ValueChainBuilder.build((builder) -> builder.buildOperation(), false));
|
||||
value_operation.equals("<",action("<")).then(redirectRight).end(ValueChainBuilder.build((builder) -> builder.buildOperation(), false));
|
||||
value_operation.equals("<",action("<")).equals("<","action","<<").then(redirectRight).end(ValueChainBuilder.build((builder) -> builder.buildOperation(), false));
|
||||
value_operation.equals("+",action("+")).then(redirectRight).end(ValueChainBuilder.build((builder) -> builder.buildOperation(), false));
|
||||
|
|
|
@ -5,7 +5,6 @@ import java.util.function.Function;
|
|||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class ArrayAccessValue extends Value{
|
||||
|
@ -26,6 +25,11 @@ 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;
|
||||
|
@ -37,10 +41,8 @@ public class ArrayAccessValue extends Value{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
return bag;
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@ import java.util.function.Function;
|
|||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class ArrayValue extends Value{
|
||||
|
@ -20,6 +19,11 @@ 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;
|
||||
|
@ -31,9 +35,12 @@ public class ArrayValue extends Value{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@ import java.util.function.Function;
|
|||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class BiValue extends Value{
|
||||
|
@ -32,6 +31,11 @@ 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;
|
||||
|
@ -48,9 +52,11 @@ public class BiValue extends Value{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,6 @@ import java.util.function.Function;
|
|||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class CastValue extends Value{
|
||||
|
@ -27,6 +26,11 @@ 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;
|
||||
|
@ -38,10 +42,8 @@ public class CastValue extends Value{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
return bag;
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@ import dev.peerat.parser.java.JavaElement;
|
|||
import dev.peerat.parser.java.Variable;
|
||||
import dev.peerat.parser.java.Variable.VariableContainer;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class InstanceValue extends Value implements VariableContainer, FunctionContainer, AnnotableBuffer{ //TODO LIKE A CLASS, CAN CONTAINS CLASS
|
||||
|
@ -63,6 +62,11 @@ 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;
|
||||
|
@ -74,9 +78,13 @@ public class InstanceValue extends Value implements VariableContainer, FunctionC
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
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,13 +6,12 @@ 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.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class LambdaValue extends Value implements OperationContainer, VariableContainer, ValueContainer{
|
||||
|
@ -53,6 +52,11 @@ 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;
|
||||
|
@ -69,7 +73,7 @@ public class LambdaValue extends Value implements OperationContainer, VariableCo
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
for(JavaElement element : this.operations){
|
||||
|
|
|
@ -6,7 +6,6 @@ import java.util.function.Function;
|
|||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class MethodCallValue extends Value{
|
||||
|
@ -39,6 +38,11 @@ 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;
|
||||
|
@ -50,9 +54,14 @@ public class MethodCallValue extends Value{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor){
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,6 @@ import java.util.function.Function;
|
|||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class ModifierValue extends Value{
|
||||
|
@ -27,6 +26,11 @@ 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;
|
||||
|
@ -43,9 +47,10 @@ public class ModifierValue extends Value{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
bag.merge(value.visit(visitor));
|
||||
return bag;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,6 @@ import java.util.function.Function;
|
|||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class StaticValue extends Value{
|
||||
|
@ -21,6 +20,11 @@ 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;
|
||||
|
@ -38,9 +42,8 @@ public class StaticValue extends Value{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
public VisitorBag visit(JavaVisitor<?> visitor) {
|
||||
if(visitor.canVisit(getClass())) return visitor.visit(this);
|
||||
VisitorBag bag = new VisitorBag();
|
||||
return bag;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@ import java.util.function.Function;
|
|||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class TriValue extends Value{
|
||||
|
@ -32,6 +31,11 @@ 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;
|
||||
|
@ -48,9 +52,14 @@ public class TriValue extends Value{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,6 @@ import java.util.function.Function;
|
|||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class VariableAccessValue extends Value{
|
||||
|
@ -27,6 +26,11 @@ 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;
|
||||
|
@ -38,9 +42,10 @@ public class VariableAccessValue extends Value{
|
|||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor) {
|
||||
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,51 +1,17 @@
|
|||
package dev.peerat.parser.java.visitor;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import dev.peerat.parser.java.Import;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class JavaImportVisitor extends JavaVisitor<Import>{
|
||||
|
||||
//TODO CONCAT PREDICATE
|
||||
|
||||
private Predicate<String> namePredicate;
|
||||
private boolean staticPredicate;
|
||||
private boolean nonStaticPredicate;
|
||||
|
||||
public JavaImportVisitor(){
|
||||
super(Import.class);
|
||||
}
|
||||
|
||||
public JavaImportVisitor named(Predicate<String> predicate){
|
||||
this.namePredicate = predicate;
|
||||
return this;
|
||||
}
|
||||
|
||||
public JavaImportVisitor isStatic(){
|
||||
this.staticPredicate = true;
|
||||
this.nonStaticPredicate = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
public JavaImportVisitor isNotStatic(){
|
||||
this.staticPredicate = false;
|
||||
this.nonStaticPredicate = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visitElement(Import element){
|
||||
VisitorBag bag = new VisitorBag();
|
||||
|
||||
if(this.namePredicate != null){
|
||||
if(!this.namePredicate.test(element.getValue().getValue())) return bag;
|
||||
}
|
||||
|
||||
if((staticPredicate && !element.isStatic()) || (nonStaticPredicate && element.isStatic())) return bag;
|
||||
|
||||
bag.compute(element);
|
||||
return bag;
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,18 +2,7 @@ package dev.peerat.parser.java.visitor;
|
|||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.visitor.operation.JavaOperationVisitor;
|
||||
import dev.peerat.parser.java.visitor.value.JavaArrayAccessValueVisitor;
|
||||
import dev.peerat.parser.java.visitor.value.JavaArrayValueVisitor;
|
||||
import dev.peerat.parser.java.visitor.value.JavaBiValueVisitor;
|
||||
import dev.peerat.parser.java.visitor.value.JavaCastValueVisitor;
|
||||
import dev.peerat.parser.java.visitor.value.JavaInstanceValueVisitor;
|
||||
import dev.peerat.parser.java.visitor.value.JavaLambdaValueVisitor;
|
||||
import dev.peerat.parser.java.visitor.value.JavaMethodCallValueVisitor;
|
||||
import dev.peerat.parser.java.visitor.value.JavaModifierValueVisitor;
|
||||
import dev.peerat.parser.java.visitor.value.JavaStaticValueVisitor;
|
||||
import dev.peerat.parser.java.visitor.value.JavaTriValueVisitor;
|
||||
import dev.peerat.parser.java.visitor.value.JavaValueVisitor;
|
||||
import dev.peerat.parser.java.visitor.value.JavaVariableAccessValueVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
|
@ -86,50 +75,6 @@ public abstract class JavaVisitor<T extends JavaElement> extends Visitor<JavaEle
|
|||
return new JavaValueVisitor();
|
||||
}
|
||||
|
||||
public static JavaArrayAccessValueVisitor allArrayAccessValue(){
|
||||
return new JavaArrayAccessValueVisitor();
|
||||
}
|
||||
|
||||
public static JavaArrayValueVisitor allArrayValue(){
|
||||
return new JavaArrayValueVisitor();
|
||||
}
|
||||
|
||||
public static JavaBiValueVisitor allBiValue(){
|
||||
return new JavaBiValueVisitor();
|
||||
}
|
||||
|
||||
public static JavaCastValueVisitor allCastValue(){
|
||||
return new JavaCastValueVisitor();
|
||||
}
|
||||
|
||||
public static JavaInstanceValueVisitor allInstanceValue(){
|
||||
return new JavaInstanceValueVisitor();
|
||||
}
|
||||
|
||||
public static JavaLambdaValueVisitor allLambdaValue(){
|
||||
return new JavaLambdaValueVisitor();
|
||||
}
|
||||
|
||||
public static JavaMethodCallValueVisitor allMethodCallValue(){
|
||||
return new JavaMethodCallValueVisitor();
|
||||
}
|
||||
|
||||
public static JavaModifierValueVisitor allModifierValue(){
|
||||
return new JavaModifierValueVisitor();
|
||||
}
|
||||
|
||||
public static JavaStaticValueVisitor allStaticValue(){
|
||||
return new JavaStaticValueVisitor();
|
||||
}
|
||||
|
||||
public static JavaTriValueVisitor allTriValue(){
|
||||
return new JavaTriValueVisitor();
|
||||
}
|
||||
|
||||
public static JavaVariableAccessValueVisitor allVariableAccessValue(){
|
||||
return new JavaVariableAccessValueVisitor();
|
||||
}
|
||||
|
||||
public static JavaOperationVisitor allOperation(){
|
||||
return new JavaOperationVisitor();
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package dev.peerat.parser.java.visitor.operation;
|
||||
|
||||
import dev.peerat.parser.java.operation.Operation;
|
||||
import dev.peerat.parser.java.Operation;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
|
|
|
@ -1,50 +0,0 @@
|
|||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
package dev.peerat.parser.java.visitor.value;
|
||||
|
||||
import dev.peerat.parser.java.value.ArrayValue;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
|
||||
public class JavaArrayValueVisitor extends JavaVisitor<ArrayValue> {
|
||||
|
||||
public JavaArrayValueVisitor() {
|
||||
super(ArrayValue.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visitElement(ArrayValue element) {
|
||||
VisitorBag bag = new VisitorBag();
|
||||
bag.compute(element);
|
||||
return bag;
|
||||
}
|
||||
}
|
|
@ -1,62 +0,0 @@
|
|||
package dev.peerat.parser.java.visitor.value;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import dev.peerat.parser.Bag;
|
||||
import dev.peerat.parser.java.value.BiValue;
|
||||
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 JavaBiValueVisitor extends JavaVisitor<BiValue> {
|
||||
|
||||
private Visitor<Value> leftPredicate;
|
||||
private Predicate<String> actionPredicate;
|
||||
private Visitor<Value> rightPredicate;
|
||||
|
||||
public JavaBiValueVisitor() {
|
||||
super(BiValue.class);
|
||||
}
|
||||
|
||||
public JavaBiValueVisitor left(Visitor<Value> visitor) {
|
||||
leftPredicate = visitor;
|
||||
return this;
|
||||
}
|
||||
|
||||
public JavaBiValueVisitor action(Predicate<String> checker) {
|
||||
actionPredicate = checker;
|
||||
return this;
|
||||
}
|
||||
|
||||
public JavaBiValueVisitor right(Visitor<Value> visitor) {
|
||||
rightPredicate = visitor;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visitElement(BiValue element){
|
||||
VisitorBag bag = new VisitorBag();
|
||||
|
||||
if(leftPredicate != null){
|
||||
if(!leftPredicate.canVisit(element.left().getClass())) return bag;
|
||||
VisitorBag visited = leftPredicate.visit(element.left());
|
||||
if(!visited.isValidated()) return bag;
|
||||
bag.merge(visited);
|
||||
}
|
||||
|
||||
if(actionPredicate != null){
|
||||
if(!actionPredicate.test(element.getAction())) return bag;
|
||||
}
|
||||
|
||||
if(rightPredicate != null){
|
||||
if(!rightPredicate.canVisit(element.left().getClass())) return bag;
|
||||
VisitorBag visited = rightPredicate.visit(element.right());
|
||||
if(!visited.isValidated()) return bag;
|
||||
bag.merge(visited);
|
||||
}
|
||||
|
||||
bag.compute(element);
|
||||
return bag;
|
||||
}
|
||||
}
|
|
@ -1,46 +0,0 @@
|
|||
package dev.peerat.parser.java.visitor.value;
|
||||
|
||||
import dev.peerat.parser.java.value.CastValue;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class JavaCastValueVisitor extends JavaVisitor<CastValue> {
|
||||
private Predicate<String> typePredicate;
|
||||
private Visitor<Value> valuePredicate;
|
||||
|
||||
public JavaCastValueVisitor() {
|
||||
super(CastValue.class);
|
||||
}
|
||||
|
||||
public JavaCastValueVisitor type(Predicate<String> checker) {
|
||||
typePredicate = checker;
|
||||
return this;
|
||||
}
|
||||
|
||||
public JavaCastValueVisitor value(Visitor<Value> visitor) {
|
||||
valuePredicate = visitor;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visitElement(CastValue element) {
|
||||
VisitorBag bag = new VisitorBag();
|
||||
|
||||
if(typePredicate != null){
|
||||
if(!typePredicate.test(element.getType().getValue())) return bag;
|
||||
}
|
||||
|
||||
if(valuePredicate != null){
|
||||
if(!valuePredicate.canVisit(element.getValue().getClass())) return bag;
|
||||
VisitorBag visited = valuePredicate.visit(element.getValue());
|
||||
if(!visited.isValidated()) return bag;
|
||||
bag.merge(visited);
|
||||
}
|
||||
|
||||
bag.compute(element);
|
||||
return bag;
|
||||
}
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
package dev.peerat.parser.java.visitor.value;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import dev.peerat.parser.java.value.InstanceValue;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class JavaInstanceValueVisitor extends JavaVisitor<InstanceValue> {
|
||||
|
||||
private Predicate<String> namePredicate;
|
||||
|
||||
public JavaInstanceValueVisitor(){
|
||||
super(InstanceValue.class);
|
||||
}
|
||||
|
||||
public JavaInstanceValueVisitor named(Predicate<String> predicate){
|
||||
this.namePredicate = predicate;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visitElement(InstanceValue element) {
|
||||
VisitorBag bag = new VisitorBag();
|
||||
|
||||
if(namePredicate != null){
|
||||
if(!namePredicate.test(element.getToken().getValue())) return bag;
|
||||
}
|
||||
|
||||
bag.compute(element);
|
||||
return bag;
|
||||
}
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
package dev.peerat.parser.java.visitor.value;
|
||||
import dev.peerat.parser.java.value.LambdaValue;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
public class JavaLambdaValueVisitor extends JavaVisitor<LambdaValue>{
|
||||
|
||||
public JavaLambdaValueVisitor(){
|
||||
super(LambdaValue.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visitElement( LambdaValue element){
|
||||
VisitorBag bag = new VisitorBag();
|
||||
bag.compute(element);
|
||||
return bag;
|
||||
}
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
package dev.peerat.parser.java.visitor.value;
|
||||
import dev.peerat.parser.java.value.MethodCallValue;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
import dev.peerat.parser.Token;
|
||||
import java.util.function.Predicate;
|
||||
public class JavaMethodCallValueVisitor extends JavaVisitor<MethodCallValue>{
|
||||
public JavaMethodCallValueVisitor(){
|
||||
super(MethodCallValue.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visitElement( MethodCallValue element){
|
||||
VisitorBag bag = new VisitorBag();
|
||||
bag.compute(element);
|
||||
return bag;
|
||||
}
|
||||
}
|
|
@ -1,46 +0,0 @@
|
|||
package dev.peerat.parser.java.visitor.value;
|
||||
|
||||
import dev.peerat.parser.java.value.ModifierValue;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class JavaModifierValueVisitor extends JavaVisitor<ModifierValue> {
|
||||
private Predicate<String> modifierPredicate;
|
||||
private Visitor<Value> valuePredicate;
|
||||
|
||||
public JavaModifierValueVisitor() {
|
||||
super(ModifierValue.class);
|
||||
}
|
||||
|
||||
public JavaModifierValueVisitor modifier(Predicate<String> checker) {
|
||||
modifierPredicate = checker;
|
||||
return this;
|
||||
}
|
||||
|
||||
public JavaModifierValueVisitor value(Visitor<Value> visitor) {
|
||||
valuePredicate = visitor;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visitElement(ModifierValue element) {
|
||||
VisitorBag bag = new VisitorBag();
|
||||
|
||||
if(modifierPredicate != null){
|
||||
if(!modifierPredicate.test(element.getModifier().getValue())) return bag;
|
||||
}
|
||||
|
||||
if(valuePredicate != null){
|
||||
if(!valuePredicate.canVisit(element.getValue().getClass())) return bag;
|
||||
VisitorBag visited = valuePredicate.visit(element.getValue());
|
||||
if(!visited.isValidated()) return bag;
|
||||
bag.merge(visited);
|
||||
}
|
||||
|
||||
bag.compute(element);
|
||||
return bag;
|
||||
}
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
package dev.peerat.parser.java.visitor.value;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import dev.peerat.parser.java.value.StaticValue;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class JavaStaticValueVisitor extends JavaVisitor<StaticValue> {
|
||||
private Predicate<String> tokenPredicate;
|
||||
|
||||
public JavaStaticValueVisitor() {
|
||||
super(StaticValue.class);
|
||||
}
|
||||
|
||||
public JavaStaticValueVisitor token(Predicate<String> checker) {
|
||||
tokenPredicate = checker;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visitElement(StaticValue element){
|
||||
VisitorBag bag = new VisitorBag();
|
||||
|
||||
if(tokenPredicate != null){
|
||||
if(!tokenPredicate.test(element.getToken().getValue())) return bag;
|
||||
}
|
||||
|
||||
bag.compute(element);
|
||||
return bag;
|
||||
}
|
||||
}
|
|
@ -1,61 +0,0 @@
|
|||
package dev.peerat.parser.java.visitor.value;
|
||||
|
||||
import dev.peerat.parser.java.value.TriValue;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class JavaTriValueVisitor extends JavaVisitor<TriValue> {
|
||||
private Visitor<Value> checkPredicate;
|
||||
private Visitor<Value> successPredicate;
|
||||
private Visitor<Value> failPredicate;
|
||||
|
||||
public JavaTriValueVisitor() {
|
||||
super(TriValue.class);
|
||||
}
|
||||
|
||||
public JavaTriValueVisitor check(Visitor<Value> visitor) {
|
||||
checkPredicate = visitor;
|
||||
return this;
|
||||
}
|
||||
|
||||
public JavaTriValueVisitor success(Visitor<Value> visitor) {
|
||||
successPredicate = visitor;
|
||||
return this;
|
||||
}
|
||||
|
||||
public JavaTriValueVisitor fail(Visitor<Value> visitor) {
|
||||
failPredicate = visitor;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visitElement(TriValue element) {
|
||||
VisitorBag bag = new VisitorBag();
|
||||
|
||||
if(checkPredicate != null){
|
||||
if(!checkPredicate.canVisit(element.getChecker().getClass())) return bag;
|
||||
VisitorBag visited = checkPredicate.visit(element.getChecker());
|
||||
if(!visited.isValidated()) return bag;
|
||||
bag.merge(visited);
|
||||
}
|
||||
|
||||
if(successPredicate != null){
|
||||
if(!successPredicate.canVisit(element.success().getClass())) return bag;
|
||||
VisitorBag visited = successPredicate.visit(element.success());
|
||||
if(!visited.isValidated()) return bag;
|
||||
bag.merge(visited);
|
||||
}
|
||||
|
||||
if(failPredicate != null){
|
||||
if(!failPredicate.canVisit(element.fail().getClass())) return bag;
|
||||
VisitorBag visited = failPredicate.visit(element.fail());
|
||||
if(!visited.isValidated()) return bag;
|
||||
bag.merge(visited);
|
||||
}
|
||||
|
||||
bag.compute(element);
|
||||
return bag;
|
||||
}
|
||||
}
|
|
@ -14,4 +14,4 @@ public class JavaValueVisitor extends JavaVisitor<Value>{
|
|||
public VisitorBag visitElement(Value element){
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
package dev.peerat.parser.java.visitor.value;
|
||||
|
||||
import dev.peerat.parser.java.value.VariableAccessValue;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
public class JavaVariableAccessValueVisitor extends JavaVisitor<VariableAccessValue> {
|
||||
public JavaVariableAccessValueVisitor() {
|
||||
super(VariableAccessValue.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VisitorBag visitElement(VariableAccessValue element) {
|
||||
VisitorBag bag = new VisitorBag();
|
||||
bag.compute(element);
|
||||
return bag;
|
||||
}
|
||||
}
|
|
@ -7,7 +7,6 @@ import java.util.function.Predicate;
|
|||
public class Operator{
|
||||
|
||||
//Success ? Fail ?
|
||||
@SafeVarargs
|
||||
public static <E> Visitor<E> and(Visitor<E>... visitors){
|
||||
return new Visitor<E>(){
|
||||
@Override
|
||||
|
@ -38,7 +37,6 @@ public class Operator{
|
|||
|
||||
//Quid de si c'est empty ?
|
||||
//Quid de si on a un collect dans les 2 ? ou dans 1 qui sourtout ne sera peux être pas appeler ?
|
||||
@SafeVarargs
|
||||
public static <E> Visitor<E> or(Visitor<E>... visitors){
|
||||
return new Visitor<E>(){
|
||||
@Override
|
||||
|
|
|
@ -15,6 +15,7 @@ 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;
|
||||
|
@ -29,7 +30,6 @@ 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;
|
||||
|
|
|
@ -27,7 +27,6 @@ import dev.peerat.parser.java.value.Value;
|
|||
import dev.peerat.parser.java.value.Value.ValueContainer;
|
||||
import dev.peerat.parser.java.value.VariableAccessValue;
|
||||
import dev.peerat.parser.java.visitor.JavaVisitor;
|
||||
import dev.peerat.parser.visitor.Visitor;
|
||||
import dev.peerat.parser.visitor.VisitorBag;
|
||||
|
||||
@TestInstance(Lifecycle.PER_CLASS)
|
||||
|
@ -59,6 +58,9 @@ 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;}
|
||||
|
||||
|
@ -66,7 +68,7 @@ public class ValueTypesTests {
|
|||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){}
|
||||
|
||||
@Override
|
||||
public VisitorBag visit(Visitor<JavaElement> visitor){return null;}
|
||||
public VisitorBag visit(JavaVisitor<?> visitor){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