From 5925132f2148df0c439a5aafa59bddde2b82f22a Mon Sep 17 00:00:00 2001 From: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com> Date: Fri, 11 Aug 2023 19:46:49 +0200 Subject: [PATCH] AutoTest -> 70.437% --- .../peeratcode/parser/java/JavaParser.java | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java index 2661f4c..17c474d 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java @@ -340,9 +340,12 @@ public class JavaParser extends Parser { .then((validator) -> validator.validate((token) -> token.getValue().equals(";"))) .end((a,b) -> a); operation.then((validator) -> validator.validate((token) -> token.getValue().equals("do"))) - .then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))) - .then((validator) -> validator.validate((token) -> token.getValue().equals(";"))) + .then((validator) -> validator.validate((token) -> token.getValue().equals("{"))) + .end((a,b) -> a) + .multiple(function_container) + .unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))) .end((a,b) -> a); + StateTree operation_else = operation.then((validator) -> validator.validate((token) -> token.getValue().equals("else"))) .end((a,b) -> a); operation_else.then(operation); @@ -406,8 +409,22 @@ public class JavaParser extends Parser { StateTree operation_for = operation.then((validator) -> validator.validate((token) -> token.getValue().equals("for"))) .then((validator) -> validator.validate((token) -> token.getValue().equals("("))); + StateTree operation_for_first_part = operation_for.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))); + StateTree operation_for_second_part = operation_for_first_part.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))); + operation_for_first_part.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))) + .then(operation_for_second_part); + StateTree operation_for_index = operation_for_second_part.then((validator) -> validator.validate((token) -> token.getValue().equals(")"))); + operation_for_index.end((a,b) -> a); + operation_for_index.then((validator) -> validator.validate((token) -> token.getValue().equals("{"))) + .end((a,b) -> a) + .multiple(function_container) + .unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))) + .end((a,b) -> a); + operation_for_second_part.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))) + .then(operation_for_index); StateTree operation_for_init = operation_for.then(new RedirectStateTree<>(type, (global, local) -> global.set(null))) - .then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME))); + .then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))); + operation_for_init.then(operation_for_first_part); StateTree operation_foreach = operation_for_init.then((validator) -> validator.validate((token) -> token.getValue().equals(":"))) .then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))) .then((validator) -> validator.validate((token) -> token.getValue().equals(")"))); @@ -429,6 +446,9 @@ public class JavaParser extends Parser { .unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))) .end((a,b) -> a); + operation_while.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))) + .end((a,b) -> a); + operation.then((validator) -> validator.validate((token) -> token.getValue().equals("synchronized"))) .then((validator) -> validator.validate((token) -> token.getValue().equals("("))) .then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))) @@ -646,6 +666,7 @@ public class JavaParser extends Parser { case "native": return Modifier.NATIVE; case "abstract": return Modifier.ABSTRACT; case "strictfp": return Modifier.STRICT; + case "default": return Modifier.STRICT; default: break; } return 0;