AutoTest -> 95.663%
This commit is contained in:
parent
2132defaec
commit
d5a3e6dad4
2 changed files with 163 additions and 100 deletions
|
@ -42,8 +42,7 @@ public class Parser<E>{
|
||||||
int character = 1;
|
int character = 1;
|
||||||
for(Token token : confirmed){
|
for(Token token : confirmed){
|
||||||
while(token.getLineNumber() != line){
|
while(token.getLineNumber() != line){
|
||||||
writer.write("\n");
|
writer.write("\n"+(++line));
|
||||||
line++;
|
|
||||||
character = 1;
|
character = 1;
|
||||||
}
|
}
|
||||||
while(token.getCharacterNumber() != character){
|
while(token.getCharacterNumber() != character){
|
||||||
|
|
|
@ -86,8 +86,8 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
//- Value
|
//- Value
|
||||||
//- Enum Value
|
//- Enum Value
|
||||||
//- Annotation
|
//- Annotation
|
||||||
//- Operation
|
|
||||||
//- Variable
|
//- Variable
|
||||||
|
//- Operation
|
||||||
//- Function
|
//- Function
|
||||||
//- Class
|
//- Class
|
||||||
//- Interface
|
//- Interface
|
||||||
|
@ -165,74 +165,6 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
|
|
||||||
StateTree<JavaElement> value_container = new StateTree<>();
|
StateTree<JavaElement> value_container = new StateTree<>();
|
||||||
|
|
||||||
StateTree<JavaElement> value_left = new StateTree<>();
|
|
||||||
StateTree<JavaElement> value_parenthesis = value_container.then((validator) -> validator.validate((token) -> token.getValue().equals("(")));
|
|
||||||
StateTree<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> value_instance = value.then((validator) -> validator.validate((token) -> token.getValue().equals("new")));
|
StateTree<JavaElement> value_instance = value.then((validator) -> validator.validate((token) -> token.getValue().equals("new")));
|
||||||
StateTree<JavaElement> value_name = new StateTree<JavaElement>();
|
StateTree<JavaElement> value_name = new StateTree<JavaElement>();
|
||||||
value.then(value_name);
|
value.then(value_name);
|
||||||
|
@ -256,8 +188,8 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
value_name.end((a,b) -> a);
|
value_name.end((a,b) -> a);
|
||||||
|
|
||||||
StateTree<JavaElement> value_call = value_name.then((validator) -> validator.validate((token) -> token.getValue().equals(".")));
|
StateTree<JavaElement> 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.end((a,b) -> a);
|
||||||
|
value_call.then(value_name);
|
||||||
StateTree<JavaElement> value_array_begin = value_name.then((validator) -> validator.validate((token) -> token.getValue().equals("[")));
|
StateTree<JavaElement> value_array_begin = value_name.then((validator) -> validator.validate((token) -> token.getValue().equals("[")));
|
||||||
StateTree<JavaElement> value_array_end = value_array_begin.then((validator) -> validator.validate((token) -> token.getValue().equals("]")));
|
StateTree<JavaElement> 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)))
|
value_array_begin.then(new RedirectStateTree<>(value_container, (global, local) -> global.set("inside", local)))
|
||||||
|
@ -285,18 +217,110 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
if(count == null) count = 0;
|
if(count == null) count = 0;
|
||||||
global.set("arg"+count, local);
|
global.set("arg"+count, local);
|
||||||
global.set("args", (count+1));
|
global.set("args", (count+1));
|
||||||
|
System.out.println("inside of method call");
|
||||||
}));
|
}));
|
||||||
value_arg.then((validator) -> validator.validate((token) -> token.getValue().equals(",")))
|
value_arg.then((validator) -> validator.validate((token) -> token.getValue().equals(",")))
|
||||||
.then(value_arg);
|
.then(value_arg);
|
||||||
value_arg.then(value_arg_end);
|
value_arg.then(value_arg_end);
|
||||||
|
|
||||||
|
StateTree<JavaElement> value_left = new StateTree<>();
|
||||||
|
value_container.then((v) -> v.validate((t) -> {
|
||||||
|
System.out.println("value container "+t);
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
StateTree<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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<JavaElement> 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) -> {
|
value.then((validator) -> {
|
||||||
if(validator.validate((token) -> token.getValue().equals("'"))){
|
if(validator.validate((token) -> token.getValue().equals("'"))){
|
||||||
validator.validate((token) -> token.getValue().equals("\\"));
|
validator.validate((token) -> token.getValue().equals("\\"));
|
||||||
|
|
||||||
return
|
return
|
||||||
validator.validate(
|
validator.validate((token) -> token.getValue().equals("'"))
|
||||||
(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("'")));
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}).end((a,b) -> a);
|
}).end((a,b) -> a);
|
||||||
|
@ -370,6 +394,25 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
StateTree<JavaElement> function_container = new StateTree<>();
|
StateTree<JavaElement> function_container = new StateTree<>();
|
||||||
function_container.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))).end((a,b) -> a);
|
function_container.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))).end((a,b) -> a);
|
||||||
|
|
||||||
|
//VARIABLE
|
||||||
|
InitialStateTree<JavaElement> variable = new InitialStateTree<>();
|
||||||
|
variable.multiple(annotation);
|
||||||
|
StateTree<JavaElement> variable_mod = variable.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local)));
|
||||||
|
StateTree<JavaElement> variable_type = variable.then(new RedirectStateTree<>(type, (global, local) -> global.set("type", local)));
|
||||||
|
variable_mod.then(variable_type);
|
||||||
|
StateTree<JavaElement> 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<JavaElement> variable_split = variable_name.then((validator) -> validator.validate((token) -> token.getValue().equals(",")));
|
||||||
|
variable_split.then(variable_name);
|
||||||
|
StateTree<JavaElement> 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
|
//OPERATION
|
||||||
StateTree<JavaElement> operation = new StateTree<>();
|
StateTree<JavaElement> operation = new StateTree<>();
|
||||||
StateTree<JavaElement> operation_name = operation.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)));
|
StateTree<JavaElement> operation_name = operation.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)));
|
||||||
|
@ -390,7 +433,7 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
operation_value.then((validator) -> validator.validate((token) -> token.getValue().equals(","))).then(operation_value);
|
operation_value.then((validator) -> validator.validate((token) -> token.getValue().equals(","))).then(operation_value);
|
||||||
|
|
||||||
StateTree<JavaElement> operation_return = operation.then((validator) -> validator.validate((token) -> token.getValue().equals("return")));
|
StateTree<JavaElement> 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(";")))
|
.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
|
||||||
.end((a,b) -> a);
|
.end((a,b) -> a);
|
||||||
operation_return.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
|
operation_return.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
|
||||||
|
@ -467,9 +510,35 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}")))
|
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}")))
|
||||||
.end((a,b) -> a);
|
.end((a,b) -> a);
|
||||||
|
|
||||||
|
StateTree<JavaElement> switch_cases = new StateTree<>();
|
||||||
|
StateTree<JavaElement> switch_case_begin = switch_cases.then((validator) -> validator.validate((token) -> token.getValue().equals("case")));
|
||||||
|
StateTree<JavaElement> 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<JavaElement> operation_for = operation.then((validator) -> validator.validate((token) -> token.getValue().equals("for")))
|
StateTree<JavaElement> operation_for = operation.then((validator) -> validator.validate((token) -> token.getValue().equals("for")))
|
||||||
.then((validator) -> validator.validate((token) -> token.getValue().equals("(")));
|
.then((validator) -> validator.validate((token) -> token.getValue().equals("(")));
|
||||||
StateTree<JavaElement> operation_for_first_part = operation_for.then((validator) -> validator.validate((token) -> token.getValue().equals(";")));
|
StateTree<JavaElement> operation_for_first_part = new StateTree<>();
|
||||||
|
operation_for.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
|
||||||
|
.then(operation_for_first_part);
|
||||||
StateTree<JavaElement> operation_for_second_part = operation_for_first_part.then((validator) -> validator.validate((token) -> token.getValue().equals(";")));
|
StateTree<JavaElement> 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)))
|
operation_for_first_part.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)))
|
||||||
.then(operation_for_second_part);
|
.then(operation_for_second_part);
|
||||||
|
@ -482,9 +551,15 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
.end((a,b) -> a);
|
.end((a,b) -> a);
|
||||||
operation_for_second_part.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)))
|
operation_for_second_part.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)))
|
||||||
.then(operation_for_index);
|
.then(operation_for_index);
|
||||||
|
operation_for.then(new RedirectStateTree<>(variable, (global, local) -> global.set(null)))
|
||||||
|
.then(operation_for_first_part);
|
||||||
StateTree<JavaElement> operation_for_init = operation_for.then(new RedirectStateTree<>(type, (global, local) -> global.set(null)))
|
StateTree<JavaElement> operation_for_init = operation_for.then(new RedirectStateTree<>(type, (global, local) -> global.set(null)))
|
||||||
.then(new RedirectStateTree<>(value_container, (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_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<JavaElement> operation_foreach = operation_for_init.then((validator) -> validator.validate((token) -> token.getValue().equals(":")))
|
StateTree<JavaElement> operation_foreach = operation_for_init.then((validator) -> validator.validate((token) -> token.getValue().equals(":")))
|
||||||
.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)))
|
.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(")")));
|
||||||
|
@ -515,25 +590,6 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
.then((validator) -> validator.validate((token) -> token.getValue().equals(")")))
|
.then((validator) -> validator.validate((token) -> token.getValue().equals(")")))
|
||||||
.end((a,b) -> a);
|
.end((a,b) -> a);
|
||||||
|
|
||||||
//VARIABLE
|
|
||||||
InitialStateTree<JavaElement> variable = new InitialStateTree<>();
|
|
||||||
variable.multiple(annotation);
|
|
||||||
StateTree<JavaElement> variable_mod = variable.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local)));
|
|
||||||
StateTree<JavaElement> variable_type = variable.then(new RedirectStateTree<>(type, (global, local) -> global.set("type", local)));
|
|
||||||
variable_mod.then(variable_type);
|
|
||||||
StateTree<JavaElement> 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<JavaElement> variable_split = variable_name.then((validator) -> validator.validate((token) -> token.getValue().equals(",")));
|
|
||||||
variable_split.then(variable_name);
|
|
||||||
StateTree<JavaElement> 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(variable);
|
||||||
function_container.then(operation);
|
function_container.then(operation);
|
||||||
|
|
||||||
|
@ -552,7 +608,7 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
|
|
||||||
StateTree<JavaElement> function_name = function.then((validator) -> validator.validate(
|
StateTree<JavaElement> function_name = function.then((validator) -> validator.validate(
|
||||||
(token) -> token.getType().equals(TokenType.NAME),
|
(token) -> token.getType().equals(TokenType.NAME),
|
||||||
(bag, token) -> bag.set(token)));
|
(bag, token) -> bag.set("mais ?",token)));
|
||||||
function_type.then(function_name);
|
function_type.then(function_name);
|
||||||
StateTree<JavaElement> function_begin = function_name.then((validator) -> validator.validate((token) -> token.getValue().equals("(")));
|
StateTree<JavaElement> function_begin = function_name.then((validator) -> validator.validate((token) -> token.getValue().equals("(")));
|
||||||
StateTree<JavaElement> function_end = function_begin.then((validator) -> validator.validate((token) -> token.getValue().equals(")")));
|
StateTree<JavaElement> function_end = function_begin.then((validator) -> validator.validate((token) -> token.getValue().equals(")")));
|
||||||
|
@ -595,6 +651,12 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
clazz_container.then(function);
|
clazz_container.then(function);
|
||||||
clazz_container.then(variable);
|
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);
|
braces_container.then(clazz_container);
|
||||||
|
|
||||||
//CLASS
|
//CLASS
|
||||||
|
@ -738,6 +800,8 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
|
|
||||||
setTokenizer(tokenizer);
|
setTokenizer(tokenizer);
|
||||||
setStateTree(main);
|
setStateTree(main);
|
||||||
|
|
||||||
|
System.out.println("init");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int getModifier(String modifier){
|
public static int getModifier(String modifier){
|
||||||
|
@ -760,7 +824,7 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception{
|
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));
|
BufferedReader reader = new BufferedReader(new FileReader(file));
|
||||||
|
|
||||||
|
@ -772,7 +836,7 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
|
|
||||||
System.out.println((System.currentTimeMillis()-time)+"ms");
|
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"))));
|
parser.build(new BufferedWriter(new FileWriter(new File("/home/ParserV2.txt"))));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue