AutoTest -> 19.669%

This commit is contained in:
jeffcheasey88 2023-07-26 10:42:55 +02:00
parent 59e54f8111
commit 28dd9cd7b1
2 changed files with 70 additions and 31 deletions

View file

@ -119,7 +119,6 @@ public class JavaParser extends Parser<JavaElement> {
type_.end((a,b) -> a); type_.end((a,b) -> a);
type_generic_name.then(type_array_begin); type_generic_name.then(type_array_begin);
type_generic_begin.then(type_generic_name);
type_generic_split.then(type_generic_name); 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_name);
@ -135,12 +134,28 @@ public class JavaParser extends Parser<JavaElement> {
//VALUE //VALUE
StateTree<JavaElement> value = new StateTree<>(); StateTree<JavaElement> value = new StateTree<>();
StateTree<JavaElement> value_container = new StateTree<>();
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)));
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);
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);
value_instance = value_instance value_instance = value_instance
.then(new RedirectStateTree<>(value_name, (global, local) -> { .then(new RedirectStateTree<>(value_name, (global, local) -> global.set(null)));
}));
value_name = value_name.then((validator) -> validator.validate( value_name = value_name.then((validator) -> validator.validate(
(token) -> token.getType().equals(TokenType.NAME), (token) -> token.getType().equals(TokenType.NAME),
(bag, token) -> { (bag, token) -> {
@ -150,23 +165,33 @@ public class JavaParser extends Parser<JavaElement> {
bag.set(current); bag.set(current);
})); }));
value_name.end((a,b) -> a); value_name.end((a,b) -> a);
value_instance.end((a,b) -> a); StateTree<JavaElement> instance = value_instance.end((a,b) -> a);
value_instance.then((validator) -> validator.validate((token) -> token.getValue().equals("{"))) instance.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
.end((a,b) -> a) .end((a,b) -> a)
.multiple(clazz_container); .multiple(clazz_container);
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.then(value_name);
StateTree<JavaElement> value_array = value_name.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("]")));
value_array.end((a,b) -> a);
value_array.then(value_call);
StateTree<JavaElement> value_arg_begin = value_name.then((validator) -> validator.validate((token) -> token.getValue().equals("("))); StateTree<JavaElement> value_arg_begin = value_name.then((validator) -> validator.validate((token) -> token.getValue().equals("(")));
StateTree<JavaElement> value_arg_end = value_arg_begin.then((validator) -> validator.validate((token) -> token.getValue().equals(")"))); StateTree<JavaElement> value_arg_end = value_arg_begin.then((validator) -> validator.validate((token) -> token.getValue().equals(")")));
value_arg_end.end((a,b) -> a); value_arg_end.end((a,b) -> a);
value_arg_end.then(value_call); value_arg_end.then(value_call);
StateTree<JavaElement> value_generic_begin = value_name.then((validator) -> validator.validate((token) -> token.getValue().equals("<"))); StateTree<JavaElement> value_generic_begin = value_name.then((validator) -> validator.validate((token) -> token.getValue().equals("<")));
StateTree<JavaElement> value_generic_name = value_generic_begin.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
StateTree<JavaElement> value_generic_split = value_generic_name.then((validator) -> validator.validate((token) -> token.getValue().equals(",")));
StateTree<JavaElement> value_generic_end = value_generic_begin.then((validator) -> validator.validate((token) -> token.getValue().equals(">"))); StateTree<JavaElement> value_generic_end = value_generic_begin.then((validator) -> validator.validate((token) -> token.getValue().equals(">")));
value_generic_end.then(value_arg_begin); value_generic_end.then(value_arg_begin);
StateTree<JavaElement> value_arg = value_arg_begin.then(new RedirectStateTree<>(value, (global, local) -> { value_generic_end.then(value_generic_name);
value_generic_end.then(value_generic_split);
value_generic_name.then(value_generic_begin);
value_generic_split.then(value_generic_name);
StateTree<JavaElement> value_arg = value_arg_begin.then(new RedirectStateTree<>(value_container, (global, local) -> {
Integer count = global.get("args"); Integer count = global.get("args");
if(count == null) count = 0; if(count == null) count = 0;
global.set("arg"+count, local); global.set("arg"+count, local);
@ -174,6 +199,7 @@ public class JavaParser extends Parser<JavaElement> {
})); }));
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.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("\\"));
@ -206,9 +232,10 @@ public class JavaParser extends Parser<JavaElement> {
//OPERATION //OPERATION
StateTree<JavaElement> operation = new StateTree<>(); StateTree<JavaElement> operation = new StateTree<>();
StateTree<JavaElement> operation_name = operation.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME))); StateTree<JavaElement> operation_name = operation.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)));
operation_name.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))).end((a,b) -> a);
operation_name.then((validator) -> validator.validate((token) -> token.getValue().equals("="))) operation_name.then((validator) -> validator.validate((token) -> token.getValue().equals("=")))
.then(new RedirectStateTree<>(value, (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); .end((a,b) -> a);
StateTree<JavaElement> operation_call = operation_name.then((validator) -> validator.validate((token) -> token.getValue().equals("."))); StateTree<JavaElement> operation_call = operation_name.then((validator) -> validator.validate((token) -> token.getValue().equals(".")));
@ -218,20 +245,22 @@ public class JavaParser extends Parser<JavaElement> {
operation_end.then(operation_call); operation_end.then(operation_call);
operation_end.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))) operation_end.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
.end((a,b) -> a); .end((a,b) -> a);
StateTree<JavaElement> operation_value = operation_begin.then(new RedirectStateTree<>(value, (global, local) -> global.set(null))); StateTree<JavaElement> operation_value = operation_begin.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)));
operation_value.then(operation_end); operation_value.then(operation_end);
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);
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("return"))) StateTree<JavaElement> operation_return = operation.then((validator) -> validator.validate((token) -> token.getValue().equals("return")));
.then(new RedirectStateTree<>(value, (global, local) -> global.set(null))) operation_return.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); .end((a,b) -> a);
operation_return.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
.end((a,b) -> a);
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("throw"))) operation.then((validator) -> validator.validate((token) -> token.getValue().equals("throw")))
.then(new RedirectStateTree<>(value, (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); .end((a,b) -> a);
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("do"))) operation.then((validator) -> validator.validate((token) -> token.getValue().equals("do")))
.then(new RedirectStateTree<>(value, (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); .end((a,b) -> a);
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("else"))) operation.then((validator) -> validator.validate((token) -> token.getValue().equals("else")))
@ -246,28 +275,29 @@ public class JavaParser extends Parser<JavaElement> {
.end((a,b) -> a); .end((a,b) -> a);
StateTree<JavaElement> operation_if = operation.then((validator) -> validator.validate((token) -> token.getValue().equals("if"))) StateTree<JavaElement> operation_if = operation.then((validator) -> validator.validate((token) -> token.getValue().equals("if")))
.then((validator) -> validator.validate((token) -> token.getValue().equals("("))) .then((validator) -> validator.validate((token) -> token.getValue().equals("(")))
.then(new RedirectStateTree<>(value, (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); .end((a,b) -> a);
operation_if.then(operation); operation_if.then(operation);
operation_if.then((validator) -> validator.validate((token) -> token.getValue().equals("{"))) operation_if.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
.then(new RedirectStateTree<>(function_container, (global, local) -> global.set(null))) .end((a,b) -> a)
.multiple(function_container)
.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.then((validator) -> validator.validate((token) -> token.getValue().equals("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("(")))
.then(new RedirectStateTree<>(value, (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); .end((a,b) -> a);
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("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, (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); .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, (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); .end((a,b) -> a);
@ -284,7 +314,7 @@ public class JavaParser extends Parser<JavaElement> {
StateTree<JavaElement> variable_split = variable_name.then((validator) -> validator.validate((token) -> token.getValue().equals(","))); StateTree<JavaElement> variable_split = variable_name.then((validator) -> validator.validate((token) -> token.getValue().equals(",")));
variable_split.then(variable_name); variable_split.then(variable_name);
StateTree<JavaElement> variable_value = variable_name.then((validator) -> validator.validate((token) -> token.getValue().equals("="))) StateTree<JavaElement> variable_value = variable_name.then((validator) -> validator.validate((token) -> token.getValue().equals("=")))
.then(new RedirectStateTree<>(value, (global, local) -> global.set("value", local))); .then(new RedirectStateTree<>(value_container, (global, local) -> global.set("value", local)));
variable_value.then(variable_split); variable_value.then(variable_split);
variable_value.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))) variable_value.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
.end((a,b) -> a); .end((a,b) -> a);
@ -423,7 +453,8 @@ 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\\peer-at-code-parseur\\src\\be\\jeffcheasey88\\peeratcode\\parser\\java\\JavaParser.java"); File file = new File("C:\\Users\\jeffc\\eclipse-workspace\\AdminSys\\src\\be\\lhoistxavier\\Main.java");
BufferedReader reader = new BufferedReader(new FileReader(file)); BufferedReader reader = new BufferedReader(new FileReader(file));
time = System.currentTimeMillis(); time = System.currentTimeMillis();

View file

@ -3,34 +3,42 @@ import java.io.BufferedWriter;
import java.io.File; import java.io.File;
import java.io.FileReader; import java.io.FileReader;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.junit.jupiter.api.Test; import be.jeffcheasey88.peeratcode.parser.Parser;
import be.jeffcheasey88.peeratcode.parser.TokenValidator; import be.jeffcheasey88.peeratcode.parser.TokenValidator;
import be.jeffcheasey88.peeratcode.parser.java.JavaElement;
import be.jeffcheasey88.peeratcode.parser.java.JavaFile; import be.jeffcheasey88.peeratcode.parser.java.JavaFile;
import be.jeffcheasey88.peeratcode.parser.java.JavaParser; import be.jeffcheasey88.peeratcode.parser.java.JavaParser;
class GlobalCover { class GlobalCover {
@Test public static void main(String[] args) throws Exception {
new GlobalCover().workspace();
}
void workspace() throws Exception{ void workspace() throws Exception{
List<File> files = files(new File("C:\\Users\\jeffc\\eclipse-workspace")); List<File> files = files(new File("C:\\Users\\jeffc\\eclipse-workspace"));
long validated = 0; long validated = 0;
long tokens = 0; long tokens = 0;
int count = 0; int count = 0;
boolean hasWriten = false;
long time = System.currentTimeMillis(); long time = System.currentTimeMillis();
for(File file : files){ for(File file : files){
if(file.getName().endsWith(".java")){ if(file.getName().endsWith(".java")){
BufferedReader reader = new BufferedReader(new FileReader(file)); BufferedReader reader = new BufferedReader(new FileReader(file));
new JavaParser().parse(reader, new JavaFile()); Parser<JavaElement> parser = new JavaParser();
parser.parse(reader, new JavaFile());
reader.close(); reader.close();
if((!hasWriten) && TokenValidator.MAX_VALIDATE < TokenValidator.TOKENS){
parser.build(new BufferedWriter(new FileWriter(new File("/home/ParserV2.txt"))));
hasWriten = true;
}
validated += TokenValidator.MAX_VALIDATE; validated += TokenValidator.MAX_VALIDATE;
tokens += TokenValidator.TOKENS; tokens += TokenValidator.TOKENS;
System.out.println(file+" "+validated+" / "+tokens); System.out.println(file+" "+validated+" / "+tokens);