Fix build on RedirectStateTree
This commit is contained in:
parent
477ebf082d
commit
34645fab9b
3 changed files with 27 additions and 13 deletions
|
@ -15,6 +15,7 @@ public class Bag{
|
|||
|
||||
public Bag(){
|
||||
this.map = new HashMap<>();
|
||||
path = Thread.currentThread().getStackTrace()[2].toString();
|
||||
}
|
||||
|
||||
public <E> E get(){
|
||||
|
|
|
@ -138,6 +138,7 @@ public class JavaParser extends Parser<JavaElement> {
|
|||
|
||||
|
||||
StateTree<JavaElement> clazz_container = new StateTree<>();
|
||||
StateTree<JavaElement> braces_container = new StateTree<>();
|
||||
|
||||
//VALUE
|
||||
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_name = new StateTree<JavaElement>();
|
||||
value.then(value_name);
|
||||
value_instance = value_instance
|
||||
.then(new RedirectStateTree<>(value_name, (global, local) -> global.set(null)));
|
||||
value_instance.then(new RedirectStateTree<>(value_name, (global, local) -> global.set(local)))
|
||||
.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(
|
||||
(token) -> token.getType().equals(TokenType.NAME),
|
||||
(bag, token) -> {
|
||||
|
@ -195,20 +203,18 @@ public class JavaParser extends Parser<JavaElement> {
|
|||
if(current == null) current = token;
|
||||
else current = current.concat(token);
|
||||
bag.set(current);
|
||||
System.out.println("set bag "+bag);
|
||||
}));
|
||||
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(".")));
|
||||
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_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("]")));
|
||||
value_array_begin.then(new RedirectStateTree<>(value_container, (global, local) -> global.set("inside", local)))
|
||||
.then(value_array_end);
|
||||
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_end = value_arg_begin.then((validator) -> validator.validate((token) -> token.getValue().equals(")")));
|
||||
|
@ -271,6 +277,11 @@ public class JavaParser extends Parser<JavaElement> {
|
|||
return false;
|
||||
}).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
|
||||
StateTree<JavaElement> enum_value = new StateTree<>();
|
||||
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(variable);
|
||||
|
||||
braces_container.then(clazz_container);
|
||||
|
||||
//CLASS
|
||||
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{
|
||||
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));
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ public class RedirectStateTree<E, T extends E> extends StateTree<T>{
|
|||
branch.setBag(localBag);
|
||||
BuilderStateTree<E, ?> builded = redirect.internalSeed(branch, (E) element);
|
||||
if(builded == null) return null;
|
||||
builded.build(validator, element);
|
||||
builded.build(branch, element);
|
||||
|
||||
this.group.accept(currentBag, localBag);
|
||||
branch.setBag(currentBag);
|
||||
|
|
Loading…
Add table
Reference in a new issue