AutoTest -> 98.06%
This commit is contained in:
parent
2740382354
commit
ff27fd1d79
1 changed files with 62 additions and 13 deletions
|
@ -6,7 +6,6 @@ import java.io.File;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -117,6 +116,8 @@ 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)));
|
||||||
|
type_.then((validator) -> validator.validate((token) -> token.getValue().equals(".")))
|
||||||
|
.then(type_);
|
||||||
StateTree<JavaElement> gen = new StateTree<>();
|
StateTree<JavaElement> gen = new StateTree<>();
|
||||||
type_.then(gen);
|
type_.then(gen);
|
||||||
StateTree<JavaElement> type_begin = gen.then((validator) -> validator.validate((token) -> token.getValue().equals("<")));
|
StateTree<JavaElement> type_begin = gen.then((validator) -> validator.validate((token) -> token.getValue().equals("<")));
|
||||||
|
@ -283,9 +284,14 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
value_max.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a);
|
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_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_or = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("|")));
|
||||||
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_or.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))).end((a,b) -> a);
|
value_or.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a);
|
||||||
|
value_or.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a);
|
||||||
|
StateTree<JavaElement> value_and = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("&")));
|
||||||
|
value_and.then((validator) -> validator.validate((token) -> token.getValue().equals("&"))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a);
|
||||||
|
value_and.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a);
|
||||||
|
value_and.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("+")));
|
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(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("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a);
|
||||||
|
@ -300,6 +306,9 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
StateTree<JavaElement> value_mod = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("%")));
|
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(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);
|
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_xor = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("^")));
|
||||||
|
value_xor.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a);
|
||||||
|
value_xor.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("*")));
|
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(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_mult.then((validator) -> validator.validate((token) -> token.getValue().equals("="))).then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))).end((a,b) -> a);
|
||||||
|
@ -540,9 +549,18 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
StateTree<JavaElement> operation_for_first_part = operation_for.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_modifier = operation_for.then((validator) -> validator.validate((token) -> getModifier(token.getValue()) > 0));
|
||||||
|
operation_for_modifier.then(operation_for_modifier);
|
||||||
|
|
||||||
|
StateTree<JavaElement> operation_for_type = operation_for.then(new RedirectStateTree<>(type, (global, local) -> global.set(null)));
|
||||||
|
operation_for_modifier.then(operation_for_type);
|
||||||
|
|
||||||
StateTree<JavaElement> operation_for_assign = operation_for.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
|
StateTree<JavaElement> operation_for_assign = operation_for.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
|
||||||
|
operation_for_modifier.then(operation_for_assign);
|
||||||
|
operation_for_type.then(operation_for_assign);
|
||||||
|
|
||||||
StateTree<JavaElement> operation_for_assign_end = operation_for_assign.then((validator) -> validator.validate((token) -> token.getValue().equals("=")))
|
StateTree<JavaElement> operation_for_assign_end = operation_for_assign.then((validator) -> validator.validate((token) -> token.getValue().equals("=")))
|
||||||
.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
|
.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)));
|
||||||
|
|
||||||
operation_for_assign.then(operation_for_assign);
|
operation_for_assign.then(operation_for_assign);
|
||||||
operation_for_assign.then(operation_for_first_part);
|
operation_for_assign.then(operation_for_first_part);
|
||||||
|
@ -555,18 +573,26 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
|
|
||||||
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((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)))
|
operation_for_first_part.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)))
|
||||||
.then(operation_for_second_part);
|
.then(operation_for_second_part);
|
||||||
|
|
||||||
StateTree<JavaElement> operation_for_end = operation_for_second_part.then((validator) -> validator.validate((token) -> token.getValue().equals(")")));
|
StateTree<JavaElement> operation_for_end = operation_for_second_part.then((validator) -> validator.validate((token) -> token.getValue().equals(")")));
|
||||||
operation_for_end.end((a,b) -> a);
|
operation_for_end.end((a,b) -> a);
|
||||||
|
|
||||||
|
operation_for_end.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
||||||
|
.end((a,b) -> a)
|
||||||
|
.multiple(function_container)
|
||||||
|
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}")))
|
||||||
|
.end((a,b) -> a);
|
||||||
|
|
||||||
operation_for_assign.then((validator) -> validator.validate((token) -> token.getValue().equals(":")))
|
operation_for_assign.then((validator) -> validator.validate((token) -> token.getValue().equals(":")))
|
||||||
.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)))
|
.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)))
|
||||||
.then(operation_for_end);
|
.then(operation_for_end);
|
||||||
|
|
||||||
operation_for_second_part.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)))
|
StateTree<JavaElement> operation_for_update = operation_for_second_part.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)));
|
||||||
.then(operation_for_end);
|
operation_for_update.then(operation_for_end);
|
||||||
|
operation_for_update.then((validator) -> validator.validate((token) -> token.getValue().equals(",")))
|
||||||
|
.then(operation_for_update);
|
||||||
|
|
||||||
StateTree<JavaElement> operation_while = operation.then((validator) -> validator.validate((token) -> token.getValue().equals("while")))
|
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("(")))
|
||||||
|
@ -588,6 +614,10 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
.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(")")))
|
||||||
|
.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);
|
.end((a,b) -> a);
|
||||||
|
|
||||||
function_container.then(variable);
|
function_container.then(variable);
|
||||||
|
@ -703,11 +733,15 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
StateTree<JavaElement> interfaces = new StateTree<>();
|
StateTree<JavaElement> interfaces = new StateTree<>();
|
||||||
StateTree<JavaElement> interface_base = interfaces.then((validator) -> validator.validate((token) -> token.getValue().equals("interface")))
|
StateTree<JavaElement> interface_base = interfaces.then((validator) -> 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)));
|
||||||
interface_base.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
StateTree<JavaElement> interface_start = interface_base.then((validator) -> validator.validate((token) -> token.getValue().equals("{")));
|
||||||
.end((a,b) -> a)
|
interface_start.end((a,b) -> a)
|
||||||
.multiple(clazz_container)
|
.multiple(clazz_container)
|
||||||
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a);
|
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a);
|
||||||
|
|
||||||
|
interface_base.then((validator) -> validator.validate((token) -> token.getValue().equals("extends")))
|
||||||
|
.then(new RedirectStateTree<>(type, (global, local) -> global.set(null)))
|
||||||
|
.then(interface_start);
|
||||||
|
|
||||||
StateTree<JavaElement> interface_mod = clazz_.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local)));
|
StateTree<JavaElement> interface_mod = clazz_.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local)));
|
||||||
clazz_.then(interfaces);
|
clazz_.then(interfaces);
|
||||||
interface_mod.then(interfaces);
|
interface_mod.then(interfaces);
|
||||||
|
@ -726,13 +760,28 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
StateTree<JavaElement> enums = new StateTree<>();
|
StateTree<JavaElement> enums = new StateTree<>();
|
||||||
StateTree<JavaElement> enum_base = enums.then((validator) -> validator.validate((token) -> token.getValue().equals("enum")))
|
StateTree<JavaElement> enum_base = enums.then((validator) -> validator.validate((token) -> token.getValue().equals("enum")))
|
||||||
.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
|
.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
|
||||||
enum_base.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
|
||||||
.end((a,b) -> a)
|
StateTree<JavaElement> enum_start = enum_base.then((validator) -> validator.validate((token) -> token.getValue().equals("{")));
|
||||||
|
enum_start.end((a,b) -> a)
|
||||||
.unique(enum_value)
|
.unique(enum_value)
|
||||||
.unique(mult_clazz_container)
|
.unique(mult_clazz_container)
|
||||||
.unique(debug)
|
.unique(debug)
|
||||||
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a);
|
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a);
|
||||||
|
|
||||||
|
StateTree<JavaElement> enum_implement = enum_base.then((validator) -> validator.validate((token) -> token.getValue().equals("implements")));
|
||||||
|
StateTree<JavaElement> enum_implement_name = enum_implement.then(new RedirectStateTree<>(type, (global, local) -> {
|
||||||
|
Token token = global.get("implement");
|
||||||
|
if(token == null) token = local.get();
|
||||||
|
else token = token.concat(local.get());
|
||||||
|
global.set("implement", token);
|
||||||
|
}));
|
||||||
|
enum_implement_name.then((validator) -> validator.validate((token) -> token.getValue().equals(","))).then(enum_implement_name);
|
||||||
|
enum_implement_name.then(enum_start);
|
||||||
|
StateTree<JavaElement> enum_extend = enum_base.then((validator) -> validator.validate((token) -> token.getValue().equals("extends")))
|
||||||
|
.then(new RedirectStateTree<>(type, (global, local) -> global.set("extend", local.get())));
|
||||||
|
enum_extend.then(enum_start);
|
||||||
|
enum_extend.then(enum_implement);
|
||||||
|
|
||||||
StateTree<JavaElement> enum_mod = clazz_.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local)));
|
StateTree<JavaElement> enum_mod = clazz_.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local)));
|
||||||
clazz_.then(enums);
|
clazz_.then(enums);
|
||||||
enum_mod.then(enums);
|
enum_mod.then(enums);
|
||||||
|
|
Loading…
Add table
Reference in a new issue