diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java index af9b70c..961b536 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java @@ -43,6 +43,16 @@ public class JavaParser extends Parser { public JavaParser(){ Tokenizer tokenizer = new Tokenizer(); + //SUMMARY + //- Modifier + //- Type + //- Value + //- Variable + //- Class + //- Import + //- Package + + //MODIFIER StateTree modifier = new StateTree(); modifier.then((validator) -> { boolean mod = false; @@ -56,6 +66,7 @@ public class JavaParser extends Parser { return mod; }).end((a,b) -> a); + //TYPE StateTree type = new StateTree(); StateTree type_ = type.then((validator) -> validator.validate( @@ -82,13 +93,34 @@ public class JavaParser extends Parser { type_generic_end.then(type_generic_split); type_generic_end.end((a,b) -> a); + //VALUE + + + //VARIABLE + StateTree variable = new StateTree<>(); + StateTree variable_type = variable.then(new RedirectStateTree<>(type, (global, local) -> global.set("type", local))); + variable.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local))) + .then(variable_type); + StateTree variable_name = variable_type.then((validator) -> validator.validate( + (token) -> token.getType().equals(TokenType.NAME), + (bag, token) -> bag.set(token))); + variable_name.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))) + .end((a,b) -> new Variable(b)); + StateTree variable_split = variable_name.then((validator) -> validator.validate((token) -> token.getValue().equals(","))); + variable_split.then(variable_name); + variable_name.then((validator) -> validator.validate((token) -> token.getValue().equals("="))); + + StateTree clazz_container = new StateTree<>(); + clazz_container.then(variable); + + //CLASS StateTree clazz_ = new StateTree<>(); StateTree clazz = new StateTree<>(); StateTree clazz_base = clazz.then((validator) -> validator.validate((token) -> token.getValue().equals("class"))) .then(new RedirectStateTree<>(type, (global, local) -> global.set("name", local.get()))); clazz_base.then((validator) -> validator.validate((token) -> token.getValue().equals("{"))) - .end((javafile, bag) -> new Class(bag)); + .end((javafile, bag) -> new Class(bag)).multiple(clazz_container); StateTree clazz_implement = clazz_base.then((validator) -> validator.validate((token) -> token.getValue().equals("implements"))); StateTree clazz_implement_name = clazz_implement.then(new RedirectStateTree<>(type, (global, local) -> { Token token = global.get("implement"); @@ -98,17 +130,18 @@ public class JavaParser extends Parser { })); clazz_implement_name.then((validator) -> validator.validate((token) -> token.getValue().equals(","))).then(clazz_implement_name); clazz_implement_name.then((validator) -> validator.validate((token) -> token.getValue().equals("{"))) - .end((javafile, bag) -> new Class(bag)); + .end((javafile, bag) -> new Class(bag)).multiple(clazz_container); StateTree clazz_extend = clazz_base.then((validator) -> validator.validate((token) -> token.getValue().equals("extends"))) .then(new RedirectStateTree<>(type, (global, local) -> global.set("extend", local))); clazz_extend.then((validator) -> validator.validate((token) -> token.getValue().equals("{"))) - .end((javafile, bag) -> new Class(bag)); + .end((javafile, bag) -> new Class(bag)).multiple(clazz_container); clazz_extend.then(clazz_implement); StateTree clazz_mod = clazz_.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local))); clazz_mod.then(clazz); + //IMPORT StateTree importState = new StateTree<>(); importState.then((validator) -> { if(validator.validate( @@ -132,6 +165,7 @@ public class JavaParser extends Parser { StateTree main = new StateTree<>(); + //PACKAGE BuilderStateTree pack = main.then((validator) -> { if(validator.validate( (token) -> token.getValue().equals("package"), diff --git a/test/GlobalCover.java b/test/GlobalCover.java index 2d3b135..241742c 100644 --- a/test/GlobalCover.java +++ b/test/GlobalCover.java @@ -1,6 +1,11 @@ import java.io.BufferedReader; +import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; +import java.io.FileWriter; +import java.io.OutputStreamWriter; +import java.net.ServerSocket; +import java.net.Socket; import java.util.ArrayList; import java.util.List; @@ -32,8 +37,15 @@ class GlobalCover { count++; } } - System.out.println("Load time : "+((System.currentTimeMillis()-time)/1000.0)+"s"); - System.out.printf("%.3f%% ("+validated+") validated in "+count+" files !\n", ((validated/tokens)*100.0)); + + time = ((System.currentTimeMillis()-time)/1000); + + String data = "{\"hash\": "+System.currentTimeMillis()+",\"time\": "+time+",\"percentage\": "+String.format("%.3f", ((validated/tokens)*100.0)).replace(",", ".")+",\"validated\": "+validated+",\"files\": "+count+"}"; + File file = new File("/home/tmp_.txt"); + BufferedWriter writer = new BufferedWriter(new FileWriter(file)); + writer.write(data+"\n"); + writer.flush(); + writer.close(); } private List files(File dir){