Fix build on RedirectStateTree

This commit is contained in:
jeffcheasey88 2023-08-11 02:33:58 +02:00
parent 477ebf082d
commit 34645fab9b
3 changed files with 27 additions and 13 deletions

View file

@ -15,6 +15,7 @@ public class Bag{
public Bag(){ public Bag(){
this.map = new HashMap<>(); this.map = new HashMap<>();
path = Thread.currentThread().getStackTrace()[2].toString();
} }
public <E> E get(){ public <E> E get(){

View file

@ -138,6 +138,7 @@ public class JavaParser extends Parser<JavaElement> {
StateTree<JavaElement> clazz_container = new StateTree<>(); StateTree<JavaElement> clazz_container = new StateTree<>();
StateTree<JavaElement> braces_container = new StateTree<>();
//VALUE //VALUE
StateTree<JavaElement> value = new StateTree<>(); StateTree<JavaElement> value = new StateTree<>();
@ -186,8 +187,15 @@ public class JavaParser extends Parser<JavaElement> {
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.then(new RedirectStateTree<>(value_name, (global, local) -> global.set(local)))
.then(new RedirectStateTree<>(value_name, (global, local) -> global.set(null))); .end((a,b) -> {
System.out.println("new "+b);
return a;
})
.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
.end((a,b) -> a)
.multiple(braces_container)
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a);
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) -> {
@ -195,20 +203,18 @@ public class JavaParser extends Parser<JavaElement> {
if(current == null) current = token; if(current == null) current = token;
else current = current.concat(token); else current = current.concat(token);
bag.set(current); bag.set(current);
System.out.println("set bag "+bag);
})); }));
value_name.end((a,b) -> a); value_name.end((a,b) -> a);
StateTree<JavaElement> instance = value_instance.end((a,b) -> a);
instance.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
.end((a,b) -> a)
.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("["))) StateTree<JavaElement> value_array_begin = value_name.then((validator) -> validator.validate((token) -> token.getValue().equals("[")));
.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null))) StateTree<JavaElement> value_array_end = value_array_begin.then((validator) -> validator.validate((token) -> token.getValue().equals("]")));
.then((validator) -> validator.validate((token) -> token.getValue().equals("]"))); value_array_begin.then(new RedirectStateTree<>(value_container, (global, local) -> global.set("inside", local)))
value_array.end((a,b) -> a); .then(value_array_end);
value_array.then(value_call); value_array_end.end((a,b) -> a);
value_array_end.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(")")));
@ -271,6 +277,11 @@ public class JavaParser extends Parser<JavaElement> {
return false; return false;
}).end((a,b) -> a); }).end((a,b) -> a);
StateTree<JavaElement> braces_array = braces_container.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)));
braces_array.then((validator) -> validator.validate((token) -> token.getValue().equals(",")))
.then(braces_array);
braces_array.end((a,b) -> a);
//ENUM VALUE //ENUM VALUE
StateTree<JavaElement> enum_value = new StateTree<>(); StateTree<JavaElement> enum_value = new StateTree<>();
StateTree<JavaElement> enum_name = enum_value.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME))); StateTree<JavaElement> enum_name = enum_value.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
@ -455,6 +466,8 @@ public class JavaParser extends Parser<JavaElement> {
clazz_container.then(function); clazz_container.then(function);
clazz_container.then(variable); clazz_container.then(variable);
braces_container.then(clazz_container);
//CLASS //CLASS
StateTree<JavaElement> clazz_ = new StateTree<>(); StateTree<JavaElement> clazz_ = new StateTree<>();
StateTree<JavaElement> clazz = new StateTree<>(); StateTree<JavaElement> clazz = new StateTree<>();
@ -604,7 +617,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\\adventofcode\\src\\be\\jeffcheasey88\\Main.java"); File file = new File("C:\\Users\\jeffc\\eclipse-workspace\\B1PRB_Janvier2021_Oral_LhoistXavier\\src\\be\\lhoistxavier\\GameFrame.java");
BufferedReader reader = new BufferedReader(new FileReader(file)); BufferedReader reader = new BufferedReader(new FileReader(file));

View file

@ -25,7 +25,7 @@ public class RedirectStateTree<E, T extends E> extends StateTree<T>{
branch.setBag(localBag); branch.setBag(localBag);
BuilderStateTree<E, ?> builded = redirect.internalSeed(branch, (E) element); BuilderStateTree<E, ?> builded = redirect.internalSeed(branch, (E) element);
if(builded == null) return null; if(builded == null) return null;
builded.build(validator, element); builded.build(branch, element);
this.group.accept(currentBag, localBag); this.group.accept(currentBag, localBag);
branch.setBag(currentBag); branch.setBag(currentBag);