From 3aeba124e322d55783efb00b4389cb2ad338a499 Mon Sep 17 00:00:00 2001 From: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com> Date: Mon, 14 Aug 2023 16:05:00 +0200 Subject: [PATCH] AutoTest -> 94.151% --- .../peeratcode/parser/java/JavaParser.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java index a4daf8b..807de3f 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java @@ -117,7 +117,9 @@ public class JavaParser extends Parser { validator.validate( (token) -> token.getType().equals(TokenType.NAME), (bag, token) -> bag.set(token))); - StateTree type_begin = type_.then((validator) -> validator.validate((token) -> token.getValue().equals("<"))); + StateTree gen = new StateTree<>(); + type_.then(gen); + StateTree type_begin = gen.then((validator) -> validator.validate((token) -> token.getValue().equals("<"))); StateTree type_generic = type_begin.then(new RedirectStateTree<>(type, (global, local) -> global.set(null))); StateTree type_generic_end = type_generic.then((validator) -> validator.validate((token) -> token.getValue().equals(">"))); StateTree type_generic_split = type_generic.then((validator) -> validator.validate((token) -> token.getValue().equals(","))); @@ -334,16 +336,18 @@ public class JavaParser extends Parser { //ENUM VALUE StateTree enum_value = new StateTree<>(); - enum_value.then((validator) -> validator.validate((token) -> token.getValue().equals(",")) || validator.validate((token) -> token.getValue().equals(";"))).end((a,b) -> a); StateTree enum_name = enum_value.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME))); enum_name.end((a,b) -> a); + enum_name.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))).end((a,b) -> a); + enum_name.then((validator) -> validator.validate((token) -> token.getValue().equals(","))).then(enum_name); StateTree enum_arg = enum_name.then((validator) -> validator.validate((token) -> token.getValue().equals("("))) .then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))); StateTree enum_end = enum_arg.then((validator) -> validator.validate((token) -> token.getValue().equals(")"))); enum_end.end((a,b) -> a); - enum_end.then((validator) -> validator.validate((token) -> token.getValue().equals(",")) || validator.validate((token) -> token.getValue().equals(";"))).end((a,b) -> a); + enum_end.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))).end((a,b) -> a); enum_arg.then((validator) -> validator.validate((token) -> token.getValue().equals(","))) .then(enum_arg); + enum_end.then((validator) -> validator.validate((token) -> token.getValue().equals(","))).then(enum_name); //ANNOTATION StateTree annotation = new StateTree<>(); @@ -540,15 +544,16 @@ public class JavaParser extends Parser { function_static.multiple(function_container); function_static.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a); StateTree function_mod = function.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local))); - StateTree function_generic = function.then(new RedirectStateTree<>(type_begin, (global, local) -> global.set("generic", local))); + StateTree function_generic = function.then(new RedirectStateTree<>(gen, (global, local) -> global.set("generic", local))); StateTree function_type = function.then(new RedirectStateTree<>(type, (global, local) -> global.set("type", local))); function_mod.then(function_generic); function_mod.then(function_type); function_generic.then(function_type); - StateTree function_name = function_type.then((validator) -> validator.validate( + StateTree function_name = function.then((validator) -> validator.validate( (token) -> token.getType().equals(TokenType.NAME), (bag, token) -> bag.set(token))); + function_type.then(function_name); StateTree function_begin = function_name.then((validator) -> validator.validate((token) -> token.getValue().equals("("))); StateTree function_end = function_begin.then((validator) -> validator.validate((token) -> token.getValue().equals(")"))); function_end.then((validator) -> validator.validate((token) -> token.getValue().equals("{"))) @@ -635,14 +640,17 @@ public class JavaParser extends Parser { clazz_.then(interfaces); interface_mod.then(interfaces); + InitialStateTree mult_clazz_container = new InitialStateTree<>(); + mult_clazz_container.multiple(clazz_container); + //ENUM StateTree enums = new StateTree<>(); StateTree enum_base = enums.then((validator) -> validator.validate((token) -> token.getValue().equals("enum"))) .then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME))); enum_base.then((validator) -> validator.validate((token) -> token.getValue().equals("{"))) .end((a,b) -> a) - .multiple(enum_value) - .multiple(clazz_container) + .unique(enum_value) + .unique(mult_clazz_container) .unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a); StateTree enum_mod = clazz_.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local)));