From 3844a6cf06eea62fc116a82f47c85394db2008a4 Mon Sep 17 00:00:00 2001 From: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com> Date: Sat, 21 Oct 2023 11:59:20 +0200 Subject: [PATCH] [AST] add getters --- .../peeratcode/parser/java/Annotation.java | 4 ++ .../peeratcode/parser/java/Class.java | 44 ++++++++++++++----- .../peeratcode/parser/java/Function.java | 32 ++++++++++++++ .../peeratcode/parser/java/Import.java | 23 ++++++++++ .../peeratcode/parser/java/JavaFile.java | 34 ++++++++------ .../peeratcode/parser/java/JavaParser.java | 20 ++++++--- .../peeratcode/parser/java/Variable.java | 26 ++++++++++- 7 files changed, 150 insertions(+), 33 deletions(-) create mode 100644 src/be/jeffcheasey88/peeratcode/parser/java/Import.java diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/Annotation.java b/src/be/jeffcheasey88/peeratcode/parser/java/Annotation.java index 960212b..e3908ec 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/Annotation.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/Annotation.java @@ -31,6 +31,10 @@ public class Annotation extends JavaElement{ public Token getName(){ return name; } + + public Map getParameters(){ + return this.values; + } @Override public E find(Function finder){ diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/Class.java b/src/be/jeffcheasey88/peeratcode/parser/java/Class.java index bd167b6..486a4b0 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/Class.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/Class.java @@ -52,6 +52,38 @@ public class Class extends JavaElement implements AnnotableBuffer, ClassContaine public void addClass(Class clazz){ this.elements.add(clazz); } + + public List getAnnotations(){ + return this.annotations; + } + + public Token getName(){ + return this.name; + } + + public Token getExtension(){ + return this.extend; + } + + public Token getImplementations(){ + return this.implement; + } + + public List getElements(){ + return this.elements; + } + + @Override + public void addAnnotationBuffer(Annotation annotation){ + if(annotationBuffer == null) annotationBuffer = new ArrayList<>(); + annotationBuffer.add(annotation); + } + + public List getAnnotationBuffer(){ + List list = this.annotationBuffer; + this.annotationBuffer = null; + return list; + } @Override public E find(java.util.function.Function finder){ @@ -67,18 +99,6 @@ public class Class extends JavaElement implements AnnotableBuffer, ClassContaine } return null; } - - @Override - public void addAnnotationBuffer(Annotation annotation){ - if(annotationBuffer == null) annotationBuffer = new ArrayList<>(); - annotationBuffer.add(annotation); - } - - public List getAnnotationBuffer(){ - List list = this.annotationBuffer; - this.annotationBuffer = null; - return list; - } } diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/Function.java b/src/be/jeffcheasey88/peeratcode/parser/java/Function.java index 983939a..630b58c 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/Function.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/Function.java @@ -58,6 +58,38 @@ public class Function extends JavaElement implements VariableContainer, Operatio public void addOperation(Operation operation) { this.elements.add(operation); } + + public List 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 getParameters(){ + return this.parameters; + } + + public List getThrowables(){ + return this.throwables; + } + + public List getElements(){ + return this.elements; + } @Override public E find(java.util.function.Function finder){ diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/Import.java b/src/be/jeffcheasey88/peeratcode/parser/java/Import.java new file mode 100644 index 0000000..2e4c682 --- /dev/null +++ b/src/be/jeffcheasey88/peeratcode/parser/java/Import.java @@ -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; + } + +} diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/JavaFile.java b/src/be/jeffcheasey88/peeratcode/parser/java/JavaFile.java index 047e340..98d5003 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/JavaFile.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/JavaFile.java @@ -12,8 +12,8 @@ public class JavaFile extends JavaElement implements ClassContainer, AnnotableBu private List annotationBuffer; - private List pack; - private List> imports; + private Token pack; + private List imports; private Class mainClazz; private List subClazz; @@ -23,28 +23,36 @@ public class JavaFile extends JavaElement implements ClassContainer, AnnotableBu } JavaFile setPackage(Bag bag){ - this.pack = bag.>get(); -// System.out.println("setPackage "+pack); + this.pack = bag.get(); return this; } - JavaFile addImport(Bag bag){ - this.imports.add(bag.>get()); -// System.out.println("addImport "+imports.get(imports.size()-1)); + JavaFile addImport(Import value){ + this.imports.add(value); return this; } -// Class setClass(Class clazz){ -// this.mainClazz = clazz; -//// System.out.println("setClass "+clazz); -// return clazz; -// } - @Override public void addClass(Class clazz){ if(mainClazz == null) this.mainClazz = clazz; else subClazz.add(clazz); } + + public Token getPackage(){ + return this.pack; + } + + public List getImports(){ + return this.imports; + } + + public Class getMainClass(){ + return this.mainClazz; + } + + public List getSubClasses(){ + return this.subClazz; + } @Override public E find(Function finder){ diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java index 9d77ae5..34e3578 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java @@ -945,8 +945,7 @@ public class JavaParser extends Parser { StateTree importState = new StateTree<>(); importState.then((validator) -> { if(validator.validate( - (token) -> token.getValue().equals("import"), - (bag, token) -> bag.set(new LinkedList<>()))){ + (token) -> token.getValue().equals("import"))){ validator.validate( (token) -> token.getValue().equals("static"), @@ -954,14 +953,18 @@ public class JavaParser extends Parser { while(validator.validate( (token) -> !token.getValue().equals(";"), - (bag, token) -> bag.>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 false; }).end((parent, bag) -> { - ((JavaFile)parent).addImport(bag); + ((JavaFile)parent).addImport(new Import(bag.has("static"), bag.get())); return parent; }); @@ -971,12 +974,15 @@ public class JavaParser extends Parser { //PACKAGE StateTree pack = main.then((validator) -> { if(validator.validate( - (token) -> token.getValue().equals("package"), - (bag, token) -> bag.set(new LinkedList<>()))){ + (token) -> token.getValue().equals("package"))){ while(validator.validate( (token) -> !token.getValue().equals(";"), - (bag, token) -> bag.>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(";")); } diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/Variable.java b/src/be/jeffcheasey88/peeratcode/parser/java/Variable.java index 5d0f949..33ed184 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/Variable.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/Variable.java @@ -43,7 +43,31 @@ public class Variable extends JavaElement{ public String toString(){ return "Variable[mod="+mod+", type="+type+", name="+name+", elips="+elips+", value="+value+"]"; } - + + public List 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 public E find(Function finder){ if(annotations != null){