diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java index 29c0b1a..711c4cd 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java @@ -35,11 +35,20 @@ public class JavaParser extends Parser { public void parse(BufferedReader reader) throws Exception{ int lineNumber = 0; String line; + boolean longCommentary = false; while((line = reader.readLine()) != null){ lineNumber++; for(int i = 0; i < line.length(); i++){ char c = line.charAt(i); + if(longCommentary){ + if(c == '*' && (i < line.length()-1 && line.charAt(i+1) == '/')){ + longCommentary = false; + i++; + } + System.out.print(c); + continue; + } Token token; if(isNameValid(c)){ String value = ""; @@ -53,7 +62,11 @@ public class JavaParser extends Parser { i = j-1; }else if(Character.isWhitespace(c)) continue; else{ - if(c == '/' && (i == line.length()-1 || line.charAt(i+1) == '/')) break; + if(c == '/' && (i < line.length()-1 && line.charAt(i+1) == '/')) break; + if(c == '/' && (i < line.length()-1 && line.charAt(i+1) == '*')){ + longCommentary = true; + continue; + } token = new Token(lineNumber, i+1, ""+c, TokenType.DELIMITER); } getTokens().add(token); @@ -131,6 +144,7 @@ public class JavaParser extends Parser { StateTree clazz_container = new StateTree<>(); + clazz_container.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))).end((a,b) -> a); StateTree braces_container = new StateTree<>(); //VALUE @@ -178,6 +192,9 @@ public class JavaParser extends Parser { StateTree value_div = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("/"))); value_div.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); value_div.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + StateTree value_mod = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("%"))); + value_mod.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + value_mod.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); StateTree value_mult = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("*"))); value_mult.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); value_mult.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); @@ -217,6 +234,7 @@ public class JavaParser extends Parser { .then(value_array_end); value_array_end.end((a,b) -> a); value_array_end.then(value_call); + value_array_end.then(value_array_begin); StateTree value_arg_begin = value_name.then((validator) -> validator.validate((token) -> token.getValue().equals("("))); StateTree value_arg_end = value_arg_begin.then((validator) -> validator.validate((token) -> token.getValue().equals(")"))); @@ -315,6 +333,7 @@ public class JavaParser extends Parser { annotation_begin.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).then(annotation_end); StateTree function_container = new StateTree<>(); + function_container.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))).end((a,b) -> a); //OPERATION StateTree operation = new StateTree<>(); @@ -679,7 +698,7 @@ public class JavaParser extends Parser { } public static void main(String[] args) throws Exception{ - File file = new File("C:\\Users\\jeffc\\eclipse-workspace\\B1PRB_Janvier2021_Oral_LhoistXavier\\src\\be\\lhoistxavier\\packet\\ClientPacket.java"); + File file = new File("C:\\Users\\jeffc\\eclipse-workspace\\B2MATH-1S2122-LhoistXavier\\src\\crypto\\Adfgvx.java"); BufferedReader reader = new BufferedReader(new FileReader(file)); diff --git a/test/GlobalCover.java b/test/GlobalCover.java index f6bddaa..e10c744 100644 --- a/test/GlobalCover.java +++ b/test/GlobalCover.java @@ -38,6 +38,7 @@ class GlobalCover { if((!hasWriten) && TokenValidator.MAX_VALIDATE < TokenValidator.TOKENS){ parser.build(new BufferedWriter(new FileWriter(new File("/home/ParserV2.txt")))); hasWriten = true; + System.out.println("Write of file "+file.getAbsolutePath()); } validated += TokenValidator.MAX_VALIDATE;