diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java index e298446..35d3677 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java @@ -169,6 +169,19 @@ public class JavaParser extends Parser { .then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))); value_cast.end((a,b) -> a); value_cast.then(value_left); + StateTree value_lambda_arg = value_parenthesis.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME))); + value_lambda_arg.then((validator) -> validator.validate((token) -> token.getValue().equals(","))) + .then(value_lambda_arg); + StateTree value_lambda = value_parenthesis.then((validator) -> + validator.validate((token) -> token.getValue().equals(")")) && + validator.validate((token) -> token.getValue().equals("-")) && + validator.validate((token) -> token.getValue().equals(">"))); + value_lambda.then((validator) -> validator.validate((token) -> token.getValue().equals("{"))) + .end((a,b) -> a).end((a,b) -> a) + .multiple(braces_container) + .unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a); + value_lambda.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + value_lambda_arg.then(value_lambda); StateTree value_parenthesis_end = value_parenthesis.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))) .then((validator) -> validator.validate((token) -> token.getValue().equals(")"))); value_parenthesis_end.end((a,b) -> a); @@ -316,6 +329,7 @@ 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); StateTree enum_arg = enum_name.then((validator) -> validator.validate((token) -> token.getValue().equals("(")))