AutoTest -> 63.115%
This commit is contained in:
parent
e0e78c2612
commit
477ebf082d
2 changed files with 161 additions and 45 deletions
|
@ -78,11 +78,15 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
//- Modifier
|
//- Modifier
|
||||||
//- Type
|
//- Type
|
||||||
//- Value
|
//- Value
|
||||||
|
//- Enum Value
|
||||||
//- Annotation
|
//- Annotation
|
||||||
//- Operation
|
//- Operation
|
||||||
//- Variable
|
//- Variable
|
||||||
//- Function
|
//- Function
|
||||||
//- Class
|
//- Class
|
||||||
|
//- Interface
|
||||||
|
//- Enum
|
||||||
|
//- Annotation Clazz
|
||||||
//- Import
|
//- Import
|
||||||
//- Package
|
//- Package
|
||||||
|
|
||||||
|
@ -107,34 +111,31 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
validator.validate(
|
validator.validate(
|
||||||
(token) -> token.getType().equals(TokenType.NAME),
|
(token) -> token.getType().equals(TokenType.NAME),
|
||||||
(bag, token) -> bag.set(token)));
|
(bag, token) -> bag.set(token)));
|
||||||
StateTree<JavaElement> type_generic_begin = type_.then((validator) -> validator.validate(
|
StateTree<JavaElement> type_begin = type_.then((validator) -> validator.validate((token) -> token.getValue().equals("<")));
|
||||||
(token) -> token.getValue().equals("<"),
|
StateTree<JavaElement> type_generic = type_begin.then(new RedirectStateTree<>(type, (global, local) -> global.set(null)));
|
||||||
(bag, token) -> bag.set(bag.<Token>get().concat(token))));
|
StateTree<JavaElement> type_generic_end = type_generic.then((validator) -> validator.validate((token) -> token.getValue().equals(">")));
|
||||||
StateTree<JavaElement> type_generic_name = type_generic_begin.then((validator) ->
|
StateTree<JavaElement> type_generic_split = type_generic.then((validator) -> validator.validate((token) -> token.getValue().equals(",")));
|
||||||
validator.validate(
|
type_generic_split.then(type_generic);
|
||||||
(token) -> token.getType().equals(TokenType.NAME),
|
|
||||||
(bag, token) -> bag.set(token)));
|
type_begin.then((validator) -> validator.validate((token) -> token.getValue().equals("?")))
|
||||||
StateTree<JavaElement> type_generic_split = type_generic_name.then((validator) -> validator.validate(
|
.then((validator) -> validator.validate((token) -> token.getValue().equals("extends")))
|
||||||
(token) -> token.getValue().equals(","),
|
.then(new RedirectStateTree<>(type, (global, local) -> global.set(null)))
|
||||||
(bag, token) -> bag.set(bag.<Token>get().concat(token))));
|
.then(type_generic_end);
|
||||||
StateTree<JavaElement> type_generic_end = type_generic_name.then((validator) -> validator.validate(
|
|
||||||
(token) -> token.getValue().equals(">"),
|
type_begin.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)))
|
||||||
(bag, token) -> bag.set(bag.<Token>get().concat(token)))).loop();
|
.then((validator) -> validator.validate((token) -> token.getValue().equals("extends")))
|
||||||
StateTree<JavaElement> type_array_begin = type_.then((validator) -> validator.validate((token) -> token.getValue().equals("[")));
|
.then(new RedirectStateTree<>(type, (global, local) -> global.set(null)))
|
||||||
StateTree<JavaElement> type_array_end = type_array_begin.then((validator) -> validator.validate((token) -> token.getValue().equals("]")));
|
.then(type_generic_end);
|
||||||
|
|
||||||
type_.end((a,b) -> a);
|
type_.end((a,b) -> a);
|
||||||
type_generic_name.then(type_array_begin);
|
|
||||||
type_generic_split.then(type_generic_name);
|
|
||||||
type_generic_end.end((a,b) -> a);
|
type_generic_end.end((a,b) -> a);
|
||||||
type_generic_end.then(type_generic_name);
|
|
||||||
type_generic_end.then(type_generic_split);
|
StateTree<JavaElement> type_array_begin = type_.then((validator) -> validator.validate((token) -> token.getValue().equals("[")));
|
||||||
|
StateTree<JavaElement> type_array_end = type_array_begin.then((validator) -> validator.validate((token) -> token.getValue().equals("]")));
|
||||||
type_generic_end.then(type_array_begin);
|
type_generic_end.then(type_array_begin);
|
||||||
type_array_end.end((a,b) -> a);
|
|
||||||
type_array_end.then(type_array_begin);
|
type_array_end.then(type_array_begin);
|
||||||
type_array_end.then(type_generic_split);
|
type_array_end.end((a,b) -> a);
|
||||||
type_array_end.then(type_array_end);
|
|
||||||
type_array_end.then(type_generic_end);
|
|
||||||
|
|
||||||
StateTree<JavaElement> clazz_container = new StateTree<>();
|
StateTree<JavaElement> clazz_container = new StateTree<>();
|
||||||
|
|
||||||
|
@ -142,6 +143,10 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
StateTree<JavaElement> value = new StateTree<>();
|
StateTree<JavaElement> value = new StateTree<>();
|
||||||
|
|
||||||
StateTree<JavaElement> value_container = new StateTree<>();
|
StateTree<JavaElement> value_container = new StateTree<>();
|
||||||
|
value_container.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(")")))
|
||||||
|
.end((a,b) -> a);
|
||||||
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_left = value_container.then(new RedirectStateTree<>(value, (global, local) -> global.set(null)));
|
StateTree<JavaElement> value_left = value_container.then(new RedirectStateTree<>(value, (global, local) -> global.set(null)));
|
||||||
value_left.end((a,b) -> a);
|
value_left.end((a,b) -> a);
|
||||||
|
@ -156,6 +161,27 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
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_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("|")) && 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_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);
|
||||||
|
|
||||||
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>();
|
||||||
|
@ -245,9 +271,23 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
return false;
|
return false;
|
||||||
}).end((a,b) -> a);
|
}).end((a,b) -> a);
|
||||||
|
|
||||||
|
//ENUM VALUE
|
||||||
|
StateTree<JavaElement> enum_value = new StateTree<>();
|
||||||
|
StateTree<JavaElement> enum_name = enum_value.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
|
||||||
|
enum_name.end((a,b) -> a);
|
||||||
|
StateTree<JavaElement> enum_arg = enum_name.then((validator) -> validator.validate((token) -> token.getValue().equals("(")))
|
||||||
|
.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)));
|
||||||
|
StateTree<JavaElement> 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_arg.then((validator) -> validator.validate((token) -> token.getValue().equals(",")))
|
||||||
|
.then(enum_arg);
|
||||||
|
|
||||||
//ANNOTATION
|
//ANNOTATION
|
||||||
StateTree<JavaElement> annotation = new StateTree<>();
|
StateTree<JavaElement> annotation = new StateTree<>();
|
||||||
StateTree<JavaElement> annotation_name = annotation.then((validator) -> validator.validate((token) -> token.getValue().equals("@")))
|
StateTree<JavaElement> annotation_name = annotation.then((validator) ->
|
||||||
|
validator.validate((token) -> token.getValue().equals("@")) &&
|
||||||
|
!validator.validate((token) -> token.getValue().equals("interface")))
|
||||||
.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
|
.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
|
||||||
annotation_name.then((validator) -> validator.validate((token) -> token.getValue().equals("."))).then(annotation_name);
|
annotation_name.then((validator) -> validator.validate((token) -> token.getValue().equals("."))).then(annotation_name);
|
||||||
annotation_name.end((a,b) -> a);
|
annotation_name.end((a,b) -> a);
|
||||||
|
@ -315,19 +355,34 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
operation_if.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
operation_if.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
||||||
.end((a,b) -> a)
|
.end((a,b) -> a)
|
||||||
.multiple(function_container)
|
.multiple(function_container)
|
||||||
.then((validator) -> validator.validate((token) -> token.getValue().equals("}")))
|
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}")))
|
||||||
.end((a,b) -> a);
|
.end((a,b) -> a);
|
||||||
|
|
||||||
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("(")));
|
||||||
|
StateTree<JavaElement> operation_for_init = operation_for.then(new RedirectStateTree<>(type, (global, local) -> global.set(null)))
|
||||||
|
.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
|
||||||
|
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((validator) -> validator.validate((token) -> token.getValue().equals(")")));
|
||||||
|
operation_foreach.end((a,b) -> a);
|
||||||
|
operation_foreach.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<JavaElement> operation_while = operation.then((validator) -> validator.validate((token) -> token.getValue().equals("while")))
|
||||||
.then((validator) -> validator.validate((token) -> token.getValue().equals("(")))
|
.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(")")));
|
||||||
.end((a,b) -> a);
|
operation_while.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
||||||
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("while")))
|
.end((a,b) -> a)
|
||||||
.then((validator) -> validator.validate((token) -> token.getValue().equals("(")))
|
.multiple(function_container)
|
||||||
.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)))
|
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}")))
|
||||||
.then((validator) -> validator.validate((token) -> token.getValue().equals(")")))
|
|
||||||
.end((a,b) -> a);
|
.end((a,b) -> a);
|
||||||
|
|
||||||
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("synchronized")))
|
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("synchronized")))
|
||||||
.then((validator) -> validator.validate((token) -> token.getValue().equals("(")))
|
.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)))
|
||||||
|
@ -371,9 +426,11 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
(bag, token) -> bag.set(token)));
|
(bag, token) -> bag.set(token)));
|
||||||
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(")")));
|
||||||
BuilderStateTree<JavaElement,JavaElement> function_start = function_end.then((validator) -> validator.validate((token) -> token.getValue().equals("{"))).end((a,b) -> a);
|
function_end.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
||||||
function_start.multiple(function_container);
|
.end((a,b) -> a)
|
||||||
function_start.unique((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);
|
||||||
|
function_end.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))).end((a,b) -> a);
|
||||||
|
|
||||||
StateTree<JavaElement> function_throws = function_end.then((validator) -> validator.validate((token) -> token.getValue().equals("throws")))
|
StateTree<JavaElement> function_throws = function_end.then((validator) -> validator.validate((token) -> token.getValue().equals("throws")))
|
||||||
.then(new RedirectStateTree<>(type, (global, local) -> global.set(null)));
|
.then(new RedirectStateTree<>(type, (global, local) -> global.set(null)));
|
||||||
|
@ -381,10 +438,16 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
function_start_throws.multiple(function_container);
|
function_start_throws.multiple(function_container);
|
||||||
function_start_throws.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a);
|
function_start_throws.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a);
|
||||||
function_throws.then((validator) -> validator.validate((token) -> token.getValue().equals(","))).then(function_throws);
|
function_throws.then((validator) -> validator.validate((token) -> token.getValue().equals(","))).then(function_throws);
|
||||||
|
function_throws.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))).end((a,b) -> a);
|
||||||
|
|
||||||
|
|
||||||
StateTree<JavaElement> function_arg_type = function_begin.then(new RedirectStateTree<>(type, (global, local) -> global.set(null)));
|
StateTree<JavaElement> function_arg_type = function_begin.then(new RedirectStateTree<>(type, (global, local) -> global.set(null)));
|
||||||
StateTree<JavaElement> function_arg_name = function_arg_type.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
|
StateTree<JavaElement> function_arg_name = function_arg_type.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
|
||||||
|
function_arg_type.then((validator) ->
|
||||||
|
validator.validate((token) -> token.getValue().equals(".")) &&
|
||||||
|
validator.validate((token) -> token.getValue().equals(".")) &&
|
||||||
|
validator.validate((token) -> token.getValue().equals(".")))
|
||||||
|
.then(function_arg_name);
|
||||||
function_arg_name.then((validator) -> validator.validate((token) -> token.getValue().equals(","))).then(function_arg_type);
|
function_arg_name.then((validator) -> validator.validate((token) -> token.getValue().equals(","))).then(function_arg_type);
|
||||||
function_arg_name.then(function_end);
|
function_arg_name.then(function_end);
|
||||||
|
|
||||||
|
@ -399,7 +462,10 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
StateTree<JavaElement> clazz_base = clazz.then((validator) -> validator.validate((token) -> token.getValue().equals("class")))
|
StateTree<JavaElement> clazz_base = clazz.then((validator) -> validator.validate((token) -> token.getValue().equals("class")))
|
||||||
.then(new RedirectStateTree<>(type, (global, local) -> global.set("name", local.get())));
|
.then(new RedirectStateTree<>(type, (global, local) -> global.set("name", local.get())));
|
||||||
clazz_base.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
clazz_base.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
||||||
.<JavaElement>end((JavaElement, bag) -> new Class(bag)).multiple(clazz_container);
|
.<JavaElement>end((JavaElement, bag) -> new Class(bag))
|
||||||
|
.multiple(clazz_container)
|
||||||
|
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}")))
|
||||||
|
.end((a,b) -> a);
|
||||||
StateTree<JavaElement> clazz_implement = clazz_base.then((validator) -> validator.validate((token) -> token.getValue().equals("implements")));
|
StateTree<JavaElement> clazz_implement = clazz_base.then((validator) -> validator.validate((token) -> token.getValue().equals("implements")));
|
||||||
StateTree<JavaElement> clazz_implement_name = clazz_implement.then(new RedirectStateTree<>(type, (global, local) -> {
|
StateTree<JavaElement> clazz_implement_name = clazz_implement.then(new RedirectStateTree<>(type, (global, local) -> {
|
||||||
Token token = global.get("implement");
|
Token token = global.get("implement");
|
||||||
|
@ -409,17 +475,66 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
}));
|
}));
|
||||||
clazz_implement_name.then((validator) -> validator.validate((token) -> token.getValue().equals(","))).then(clazz_implement_name);
|
clazz_implement_name.then((validator) -> validator.validate((token) -> token.getValue().equals(","))).then(clazz_implement_name);
|
||||||
clazz_implement_name.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
clazz_implement_name.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
||||||
.<JavaElement>end((JavaElement, bag) -> new Class(bag)).multiple(clazz_container);
|
.<JavaElement>end((JavaElement, bag) -> new Class(bag))
|
||||||
|
.multiple(clazz_container)
|
||||||
|
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}")))
|
||||||
|
.end((a,b) -> a);
|
||||||
StateTree<JavaElement> clazz_extend = clazz_base.then((validator) -> validator.validate((token) -> token.getValue().equals("extends")))
|
StateTree<JavaElement> clazz_extend = clazz_base.then((validator) -> validator.validate((token) -> token.getValue().equals("extends")))
|
||||||
.then(new RedirectStateTree<>(type, (global, local) -> global.set("extend", local.get())));
|
.then(new RedirectStateTree<>(type, (global, local) -> global.set("extend", local.get())));
|
||||||
clazz_extend.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
clazz_extend.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
||||||
.<JavaElement>end((JavaElement, bag) -> new Class(bag)).multiple(clazz_container);
|
.<JavaElement>end((JavaElement, bag) -> new Class(bag))
|
||||||
|
.multiple(clazz_container)
|
||||||
|
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}")))
|
||||||
|
.end((a,b) -> a);
|
||||||
clazz_extend.then(clazz_implement);
|
clazz_extend.then(clazz_implement);
|
||||||
|
|
||||||
|
|
||||||
StateTree<JavaElement> clazz_mod = clazz_.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local)));
|
StateTree<JavaElement> clazz_mod = clazz_.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local)));
|
||||||
|
clazz_.then(clazz);
|
||||||
clazz_mod.then(clazz);
|
clazz_mod.then(clazz);
|
||||||
|
|
||||||
|
//INTERFACE
|
||||||
|
StateTree<JavaElement> interfaces = new StateTree<>();
|
||||||
|
StateTree<JavaElement> interface_base = interfaces.then((validator) -> validator.validate((token) -> token.getValue().equals("interface")))
|
||||||
|
.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
|
||||||
|
interface_base.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
||||||
|
.end((a,b) -> a)
|
||||||
|
.multiple(clazz_container)
|
||||||
|
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a);
|
||||||
|
|
||||||
|
StateTree<JavaElement> interface_mod = clazz_.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local)));
|
||||||
|
clazz_.then(interfaces);
|
||||||
|
interface_mod.then(interfaces);
|
||||||
|
|
||||||
|
//ENUM
|
||||||
|
StateTree<JavaElement> enums = new StateTree<>();
|
||||||
|
StateTree<JavaElement> 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((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a);
|
||||||
|
|
||||||
|
StateTree<JavaElement> enum_mod = clazz_.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local)));
|
||||||
|
clazz_.then(enums);
|
||||||
|
enum_mod.then(enums);
|
||||||
|
|
||||||
|
//ANNOTATION CLAZZ
|
||||||
|
StateTree<JavaElement> def_annos = new StateTree<>();
|
||||||
|
StateTree<JavaElement> def_anno_base = def_annos.then((validator) ->
|
||||||
|
validator.validate((token) -> token.getValue().equals("@")) &&
|
||||||
|
validator.validate((token) -> token.getValue().equals("interface")))
|
||||||
|
.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
|
||||||
|
def_anno_base.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
||||||
|
.end((a,b) -> a)
|
||||||
|
.multiple(clazz_container)
|
||||||
|
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a);
|
||||||
|
|
||||||
|
StateTree<JavaElement> def_anno_mod = clazz_.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local)));
|
||||||
|
clazz_.then(def_annos);
|
||||||
|
def_anno_mod.then(def_annos);
|
||||||
|
|
||||||
//IMPORT
|
//IMPORT
|
||||||
StateTree<JavaElement> importState = new StateTree<>();
|
StateTree<JavaElement> importState = new StateTree<>();
|
||||||
importState.then((validator) -> {
|
importState.then((validator) -> {
|
||||||
|
@ -489,7 +604,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\\AdminSys\\src\\be\\lhoistxavier\\Main.java");
|
File file = new File("C:\\Users\\jeffc\\eclipse-workspace\\adventofcode\\src\\be\\jeffcheasey88\\Main.java");
|
||||||
|
|
||||||
BufferedReader reader = new BufferedReader(new FileReader(file));
|
BufferedReader reader = new BufferedReader(new FileReader(file));
|
||||||
|
|
||||||
|
|
|
@ -100,25 +100,26 @@ public class BuilderStateTree<E, B> extends StateTree<B>{
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T extends StateTree<B>> StateTree<B> multiple(StateTree<B> child){
|
public <T extends BuilderStateTree<E,B>> BuilderStateTree<E,B> multiple(StateTree<B> child){
|
||||||
this.multiple.add(child);
|
this.multiple.add(child);
|
||||||
return child;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T extends StateTree<B>> StateTree<B> multiple(Function<TokenValidator, Boolean> checker){
|
public <T extends BuilderStateTree<E,B>> BuilderStateTree<E,B> multiple(Function<TokenValidator, Boolean> checker){
|
||||||
StateTree<B> state = new StateTree<>();
|
StateTree<B> state = new StateTree<>();
|
||||||
state.checker = checker;
|
state.checker = checker;
|
||||||
return multiple(state);
|
return multiple(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T extends StateTree<B>> StateTree<B> unique(StateTree<B> child){
|
public <T extends BuilderStateTree<E,B>> BuilderStateTree<E,B> unique(StateTree<B> child){
|
||||||
this.unique.add(child);
|
this.unique.add(child);
|
||||||
return child;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T extends StateTree<B>> StateTree<B> unique(Function<TokenValidator, Boolean> checker){
|
public <T extends StateTree<B>> StateTree<B> unique(Function<TokenValidator, Boolean> checker){
|
||||||
StateTree<B> state = new StateTree<>();
|
StateTree<B> state = new StateTree<>();
|
||||||
state.checker = checker;
|
state.checker = checker;
|
||||||
return unique(state);
|
unique(state);
|
||||||
|
return state;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue