[AST] add getters

This commit is contained in:
jeffcheasey88 2023-10-21 11:59:20 +02:00
parent 90007dc0d2
commit 3844a6cf06
7 changed files with 150 additions and 33 deletions

View file

@ -31,6 +31,10 @@ public class Annotation extends JavaElement{
public Token getName(){ public Token getName(){
return name; return name;
} }
public Map<Token, Value> getParameters(){
return this.values;
}
@Override @Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){ public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){

View file

@ -52,6 +52,38 @@ public class Class extends JavaElement implements AnnotableBuffer, ClassContaine
public void addClass(Class clazz){ public void addClass(Class clazz){
this.elements.add(clazz); this.elements.add(clazz);
} }
public List<Annotation> getAnnotations(){
return this.annotations;
}
public Token getName(){
return this.name;
}
public Token getExtension(){
return this.extend;
}
public Token getImplementations(){
return this.implement;
}
public List<JavaElement> getElements(){
return this.elements;
}
@Override
public void addAnnotationBuffer(Annotation annotation){
if(annotationBuffer == null) annotationBuffer = new ArrayList<>();
annotationBuffer.add(annotation);
}
public List<Annotation> getAnnotationBuffer(){
List<Annotation> list = this.annotationBuffer;
this.annotationBuffer = null;
return list;
}
@Override @Override
public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> finder){ public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> finder){
@ -67,18 +99,6 @@ public class Class extends JavaElement implements AnnotableBuffer, ClassContaine
} }
return null; return null;
} }
@Override
public void addAnnotationBuffer(Annotation annotation){
if(annotationBuffer == null) annotationBuffer = new ArrayList<>();
annotationBuffer.add(annotation);
}
public List<Annotation> getAnnotationBuffer(){
List<Annotation> list = this.annotationBuffer;
this.annotationBuffer = null;
return list;
}
} }

View file

@ -58,6 +58,38 @@ public class Function extends JavaElement implements VariableContainer, Operatio
public void addOperation(Operation operation) { public void addOperation(Operation operation) {
this.elements.add(operation); this.elements.add(operation);
} }
public List<Annotation> getAnnotations(){
return this.annotations;
}
public int getModifier(){
return this.mod;
}
public Token getGeneric(){
return this.generic;
}
public Token getReturnType(){
return this.type;
}
public Token getName(){
return this.name;
}
public List<Variable> getParameters(){
return this.parameters;
}
public List<Token> getThrowables(){
return this.throwables;
}
public List<JavaElement> getElements(){
return this.elements;
}
@Override @Override
public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> finder){ public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> finder){

View file

@ -0,0 +1,23 @@
package be.jeffcheasey88.peeratcode.parser.java;
import be.jeffcheasey88.peeratcode.parser.Token;
public class Import{
private boolean isStatic;
private Token value;
public Import(boolean isStatic, Token value){
this.isStatic = isStatic;
this.value = value;
}
public boolean isStatic(){
return this.isStatic;
}
public Token getValue(){
return this.value;
}
}

View file

@ -12,8 +12,8 @@ public class JavaFile extends JavaElement implements ClassContainer, AnnotableBu
private List<Annotation> annotationBuffer; private List<Annotation> annotationBuffer;
private List<Token> pack; private Token pack;
private List<List<Token>> imports; private List<Import> imports;
private Class mainClazz; private Class mainClazz;
private List<Class> subClazz; private List<Class> subClazz;
@ -23,28 +23,36 @@ public class JavaFile extends JavaElement implements ClassContainer, AnnotableBu
} }
JavaFile setPackage(Bag bag){ JavaFile setPackage(Bag bag){
this.pack = bag.<List<Token>>get(); this.pack = bag.<Token>get();
// System.out.println("setPackage "+pack);
return this; return this;
} }
JavaFile addImport(Bag bag){ JavaFile addImport(Import value){
this.imports.add(bag.<List<Token>>get()); this.imports.add(value);
// System.out.println("addImport "+imports.get(imports.size()-1));
return this; return this;
} }
// Class setClass(Class clazz){
// this.mainClazz = clazz;
//// System.out.println("setClass "+clazz);
// return clazz;
// }
@Override @Override
public void addClass(Class clazz){ public void addClass(Class clazz){
if(mainClazz == null) this.mainClazz = clazz; if(mainClazz == null) this.mainClazz = clazz;
else subClazz.add(clazz); else subClazz.add(clazz);
} }
public Token getPackage(){
return this.pack;
}
public List<Import> getImports(){
return this.imports;
}
public Class getMainClass(){
return this.mainClazz;
}
public List<Class> getSubClasses(){
return this.subClazz;
}
@Override @Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){ public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){

View file

@ -945,8 +945,7 @@ public class JavaParser extends Parser<JavaElement> {
StateTree<JavaElement> importState = new StateTree<>(); StateTree<JavaElement> importState = new StateTree<>();
importState.then((validator) -> { importState.then((validator) -> {
if(validator.validate( if(validator.validate(
(token) -> token.getValue().equals("import"), (token) -> token.getValue().equals("import"))){
(bag, token) -> bag.set(new LinkedList<>()))){
validator.validate( validator.validate(
(token) -> token.getValue().equals("static"), (token) -> token.getValue().equals("static"),
@ -954,14 +953,18 @@ public class JavaParser extends Parser<JavaElement> {
while(validator.validate( while(validator.validate(
(token) -> !token.getValue().equals(";"), (token) -> !token.getValue().equals(";"),
(bag, token) -> bag.<List<Token>>get().add(token)) (bag, token) -> {
Token current = bag.get();
if(current == null) bag.set(token);
else bag.set(current.concat(token));
})
); );
return validator.validate((token) -> token.getValue().equals(";")); return validator.validate((token) -> token.getValue().equals(";"));
} }
return false; return false;
}).<JavaElement>end((parent, bag) -> { }).<JavaElement>end((parent, bag) -> {
((JavaFile)parent).addImport(bag); ((JavaFile)parent).addImport(new Import(bag.has("static"), bag.get()));
return parent; return parent;
}); });
@ -971,12 +974,15 @@ public class JavaParser extends Parser<JavaElement> {
//PACKAGE //PACKAGE
StateTree<JavaElement> pack = main.then((validator) -> { StateTree<JavaElement> pack = main.then((validator) -> {
if(validator.validate( if(validator.validate(
(token) -> token.getValue().equals("package"), (token) -> token.getValue().equals("package"))){
(bag, token) -> bag.set(new LinkedList<>()))){
while(validator.validate( while(validator.validate(
(token) -> !token.getValue().equals(";"), (token) -> !token.getValue().equals(";"),
(bag, token) -> bag.<List<Token>>get().add(token)) (bag, token) -> {
Token current = bag.get();
if(current == null) bag.set(token);
else bag.set(current.concat(token));
})
); );
return validator.validate((token) -> token.getValue().equals(";")); return validator.validate((token) -> token.getValue().equals(";"));
} }

View file

@ -43,7 +43,31 @@ public class Variable extends JavaElement{
public String toString(){ public String toString(){
return "Variable[mod="+mod+", type="+type+", name="+name+", elips="+elips+", value="+value+"]"; return "Variable[mod="+mod+", type="+type+", name="+name+", elips="+elips+", value="+value+"]";
} }
public List<Annotation> getAnnotations(){
return this.annotations;
}
public int getModifier(){
return this.mod;
}
public Token getType(){
return this.type;
}
public Token getName(){
return this.name;
}
public boolean isElipsis(){
return this.elips;
}
public Value getValue(){
return this.value;
}
@Override @Override
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){ public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
if(annotations != null){ if(annotations != null){