diff --git a/src/be/jeffcheasey88/peeratcode/parser/Parser.java b/src/be/jeffcheasey88/peeratcode/parser/Parser.java index 9072f03..71592c7 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/Parser.java +++ b/src/be/jeffcheasey88/peeratcode/parser/Parser.java @@ -42,8 +42,7 @@ public class Parser{ int character = 1; for(Token token : confirmed){ while(token.getLineNumber() != line){ - writer.write("\n"); - line++; + writer.write("\n"+(++line)); character = 1; } while(token.getCharacterNumber() != character){ diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java index fa0842d..7c6d862 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java @@ -86,8 +86,8 @@ public class JavaParser extends Parser { //- Value //- Enum Value //- Annotation - //- Operation //- Variable + //- Operation //- Function //- Class //- Interface @@ -165,74 +165,6 @@ public class JavaParser extends Parser { StateTree value_container = new StateTree<>(); - StateTree value_left = new StateTree<>(); - StateTree value_parenthesis = value_container.then((validator) -> validator.validate((token) -> token.getValue().equals("("))); - StateTree value_cast = value_parenthesis.then(new RedirectStateTree<>(type, (global, local) -> global.set(null))) - .then((validator) -> validator.validate((token) -> token.getValue().equals(")"))) - .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); - value_parenthesis_end.then(value_left); - value_container.then((validator) -> validator.validate((token) -> token.getValue().equals("!"))).then(value_container); - value_container.then((validator) -> validator.validate((token) -> token.getValue().equals("-"))).then(value_container); - value_container.then((validator) -> validator.validate((token) -> token.getValue().equals("+"))).then(value_container); - value_container.then((validator) -> validator.validate((token) -> token.getValue().equals("~"))).then(value_container); - value_container.then(new RedirectStateTree<>(value, (global, local) -> global.set(null))).then(value_left); - value_left.end((a,b) -> a); - StateTree value_equals = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("="))); - value_equals.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); - value_equals.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); - StateTree value_minus = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("<"))).loop(); - value_minus.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); - value_minus.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); - StateTree value_max = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals(">"))).loop(); - value_max.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); - value_max.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); - value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("!")) && validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); - value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("|")) && validator.validate((token) -> token.getValue().equals("|"))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); - value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("&")) && validator.validate((token) -> token.getValue().equals("&"))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); - StateTree value_plus = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("+"))); - value_plus.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); - value_plus.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); - value_plus.then((validator) -> validator.validate((token) -> token.getValue().equals("+"))).end((a,b) -> a); - StateTree value_min = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("-"))); - value_min.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); - value_min.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); - value_min.then((validator) -> validator.validate((token) -> token.getValue().equals("-"))).end((a,b) -> a); - 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); - value_left.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(":"))) - .then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))) - .end((a,b) -> a); - value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("instanceof"))) - .then(new RedirectStateTree<>(type, (global, local) -> global.set(null))) - .end((a,b) -> a); - StateTree value_instance = value.then((validator) -> validator.validate((token) -> token.getValue().equals("new"))); StateTree value_name = new StateTree(); value.then(value_name); @@ -256,8 +188,8 @@ public class JavaParser extends Parser { value_name.end((a,b) -> a); StateTree value_call = value_name.then((validator) -> validator.validate((token) -> token.getValue().equals("."))); - value_call.then(value_name); value_call.end((a,b) -> a); + value_call.then(value_name); StateTree value_array_begin = value_name.then((validator) -> validator.validate((token) -> token.getValue().equals("["))); StateTree value_array_end = value_array_begin.then((validator) -> validator.validate((token) -> token.getValue().equals("]"))); value_array_begin.then(new RedirectStateTree<>(value_container, (global, local) -> global.set("inside", local))) @@ -285,18 +217,110 @@ public class JavaParser extends Parser { if(count == null) count = 0; global.set("arg"+count, local); global.set("args", (count+1)); + System.out.println("inside of method call"); })); value_arg.then((validator) -> validator.validate((token) -> token.getValue().equals(","))) .then(value_arg); value_arg.then(value_arg_end); + + StateTree value_left = new StateTree<>(); + value_container.then((v) -> v.validate((t) -> { + System.out.println("value container "+t); + return false; + })); + StateTree value_parenthesis = value_container.then((validator) -> validator.validate((token) -> token.getValue().equals("("))); + value_parenthesis.then((v) -> v.validate((t) -> { + System.out.println("value parenthesis "+t); + return false; + })); + StateTree value_cast = value_parenthesis.then(new RedirectStateTree<>(type, (global, local) -> System.out.println("can u casted ?"))) + .then((validator) -> validator.validate((token) -> token.getValue().equals(")"))) + .then(new RedirectStateTree<>(value_container, (global, local) -> System.out.println("casted"))); + 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) -> System.out.println("in a container"))) + .then((validator) -> validator.validate((token) -> token.getValue().equals(")"))); + value_parenthesis_end.end((a,b) -> { + System.out.println("we got a container"); + return a; + }); + value_parenthesis_end.then((v) -> v.validate((t) -> { + System.out.println("so then, left or call ?"); + return false; + })); + value_parenthesis_end.then(value_call); + value_parenthesis_end.then(value_left); + value_container.then((validator) -> validator.validate((token) -> token.getValue().equals("!"))).then(value_container); + value_container.then((validator) -> validator.validate((token) -> token.getValue().equals("-"))).then(value_container); + value_container.then((validator) -> validator.validate((token) -> token.getValue().equals("+"))).then(value_container); + value_container.then((validator) -> validator.validate((token) -> token.getValue().equals("~"))).then(value_container); + StateTree value_inside = value_container.then(new RedirectStateTree<>(value, (global, local) -> global.set(null))); + value_inside.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("]"))) + .then(value_left); + value_inside.then(value_left); + value_left.end((a,b) -> a); + StateTree value_equals = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("="))); + value_equals.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + value_equals.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + StateTree value_minus = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("<"))).loop(); + value_minus.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + value_minus.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + StateTree value_max = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals(">"))).loop(); + value_max.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + value_max.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("!")) && validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("|")) && validator.validate((token) -> token.getValue().equals("|"))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("&")) && validator.validate((token) -> token.getValue().equals("&"))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("&"))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + StateTree value_plus = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("+"))); + value_plus.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + value_plus.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + value_plus.then((validator) -> validator.validate((token) -> token.getValue().equals("+"))).end((a,b) -> a); + StateTree value_min = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("-"))); + value_min.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + value_min.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a); + value_min.then((validator) -> validator.validate((token) -> token.getValue().equals("-"))).end((a,b) -> a); + 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); + value_left.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(":"))) + .then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))) + .end((a,b) -> a); + value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("instanceof"))) + .then(new RedirectStateTree<>(type, (global, local) -> global.set(null))) + .end((a,b) -> a); + value.then((validator) -> { if(validator.validate((token) -> token.getValue().equals("'"))){ validator.validate((token) -> token.getValue().equals("\\")); + return - validator.validate( - (token) -> true, - (bag, token) -> bag.set(token)) && - validator.validate((token) -> token.getValue().equals("'")); + validator.validate((token) -> token.getValue().equals("'")) + || + (validator.validate((token) -> !token.getValue().equals("'")) + && validator.validate((token) -> token.getValue().equals("'"))); } return false; }).end((a,b) -> a); @@ -370,6 +394,25 @@ public class JavaParser extends Parser { StateTree function_container = new StateTree<>(); function_container.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))).end((a,b) -> a); + //VARIABLE + InitialStateTree variable = new InitialStateTree<>(); + variable.multiple(annotation); + StateTree variable_mod = variable.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local))); + StateTree variable_type = variable.then(new RedirectStateTree<>(type, (global, local) -> global.set("type", local))); + variable_mod.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); + StateTree variable_value = variable_name.then((validator) -> validator.validate((token) -> token.getValue().equals("="))) + .then(new RedirectStateTree<>(value_container, (global, local) -> global.set("value", local))); + variable_value.then(variable_split); + variable_value.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))) + .end((a,b) -> a); + //OPERATION StateTree operation = new StateTree<>(); StateTree operation_name = operation.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))); @@ -390,7 +433,7 @@ public class JavaParser extends Parser { operation_value.then((validator) -> validator.validate((token) -> token.getValue().equals(","))).then(operation_value); StateTree operation_return = operation.then((validator) -> validator.validate((token) -> token.getValue().equals("return"))); - operation_return.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))) + operation_return.then(new RedirectStateTree<>(value_container, (global, local) -> System.out.println("return value"))) .then((validator) -> validator.validate((token) -> token.getValue().equals(";"))) .end((a,b) -> a); operation_return.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))) @@ -467,9 +510,35 @@ public class JavaParser extends Parser { .unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))) .end((a,b) -> a); + StateTree switch_cases = new StateTree<>(); + StateTree switch_case_begin = switch_cases.then((validator) -> validator.validate((token) -> token.getValue().equals("case"))); + StateTree switch_case = switch_case_begin.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))) + .then((validator) -> validator.validate((token) -> token.getValue().equals(":"))); + switch_case.then(switch_case_begin); + switch_case.end((a,b) -> a) + .multiple(function_container); + + switch_cases.then((validator) -> validator.validate((token) -> token.getValue().equals("default"))) + .then((validator) -> validator.validate((token) -> token.getValue().equals(":"))) + .end((a,b) -> a) + .multiple(function_container); + + + operation.then((validator) -> validator.validate((token) -> token.getValue().equals("switch"))) + .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(")")) + && validator.validate((token) -> token.getValue().equals("{"))) + .end((a,b) -> a) + .multiple(switch_cases) + .unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))) + .end((a,b) -> a); + 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_first_part = new StateTree<>(); + operation_for.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))) + .then(operation_for_first_part); 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); @@ -482,9 +551,15 @@ public class JavaParser extends Parser { .end((a,b) -> a); operation_for_second_part.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))) .then(operation_for_index); + operation_for.then(new RedirectStateTree<>(variable, (global, local) -> global.set(null))) + .then(operation_for_first_part); StateTree operation_for_init = operation_for.then(new RedirectStateTree<>(type, (global, local) -> global.set(null))) .then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))); operation_for_init.then(operation_for_first_part); + operation_for.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME))) + .then((validator) -> validator.validate((token) -> token.getValue().equals("="))) + .then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))) + .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(")"))); @@ -515,25 +590,6 @@ public class JavaParser extends Parser { .then((validator) -> validator.validate((token) -> token.getValue().equals(")"))) .end((a,b) -> a); - //VARIABLE - InitialStateTree variable = new InitialStateTree<>(); - variable.multiple(annotation); - StateTree variable_mod = variable.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local))); - StateTree variable_type = variable.then(new RedirectStateTree<>(type, (global, local) -> global.set("type", local))); - variable_mod.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); - StateTree variable_value = variable_name.then((validator) -> validator.validate((token) -> token.getValue().equals("="))) - .then(new RedirectStateTree<>(value_container, (global, local) -> global.set("value", local))); - variable_value.then(variable_split); - variable_value.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))) - .end((a,b) -> a); - function_container.then(variable); function_container.then(operation); @@ -552,7 +608,7 @@ public class JavaParser extends Parser { StateTree function_name = function.then((validator) -> validator.validate( (token) -> token.getType().equals(TokenType.NAME), - (bag, token) -> bag.set(token))); + (bag, token) -> bag.set("mais ?",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(")"))); @@ -595,6 +651,12 @@ public class JavaParser extends Parser { clazz_container.then(function); clazz_container.then(variable); + clazz_container.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); + braces_container.then(clazz_container); //CLASS @@ -738,6 +800,8 @@ public class JavaParser extends Parser { setTokenizer(tokenizer); setStateTree(main); + + System.out.println("init"); } public static int getModifier(String modifier){ @@ -760,7 +824,7 @@ public class JavaParser extends Parser { } public static void main(String[] args) throws Exception{ - File file = new File("C:\\Users\\jeffc\\eclipse-workspace\\BotDiscordSql\\src\\be\\jeffcheasey\\challenge\\bot\\parser\\RequestType.java"); + File file = new File("C:\\Users\\jeffc\\eclipse-workspace\\Eclipse_Lhoist_Xavier_plan2Track_IT1\\app\\src\\main\\java\\be\\helmo\\plan2track\\planner\\domain\\Assembly.java"); BufferedReader reader = new BufferedReader(new FileReader(file)); @@ -772,7 +836,7 @@ public class JavaParser extends Parser { System.out.println((System.currentTimeMillis()-time)+"ms"); - System.out.println(TokenValidator.MAX_VALIDATE); + System.out.println(TokenValidator.MAX_VALIDATE+" / "+TokenValidator.TOKENS); parser.build(new BufferedWriter(new FileWriter(new File("/home/ParserV2.txt")))); }