Fix bag + Refractor Values
This commit is contained in:
parent
d7add3503b
commit
65d454625d
35 changed files with 926 additions and 393 deletions
|
@ -18,6 +18,12 @@ public class Bag{
|
|||
path = Thread.currentThread().getStackTrace()[2].toString();
|
||||
}
|
||||
|
||||
public Bag(Bag bag){
|
||||
this.map = new HashMap<>(bag.map);
|
||||
this.value = bag.value;
|
||||
this.path = bag.path;
|
||||
}
|
||||
|
||||
public <E> E get(){
|
||||
return (E) this.value;
|
||||
}
|
||||
|
|
|
@ -33,6 +33,10 @@ public class Token{
|
|||
|
||||
//line & character start & end ?
|
||||
public Token concat(Token token){
|
||||
StackTraceElement[] stack = Thread.currentThread().getStackTrace();
|
||||
System.out.println(token.getValue()+":");
|
||||
for(int i = 1; i < stack.length; i++) System.out.println(stack[i]);
|
||||
System.out.println();
|
||||
return new Token(line, character, value+token.getValue(), TokenType.GROUP);
|
||||
}
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ public class TokenValidator{
|
|||
}
|
||||
|
||||
public TokenValidator branch(){
|
||||
TokenValidator branch = new TokenValidator(bag);
|
||||
TokenValidator branch = new TokenValidator(new Bag(bag));
|
||||
branch.elements = this.elements;
|
||||
branch.index = Math.max(0, this.validated-1);
|
||||
branch.validated = this.validated;
|
||||
|
|
|
@ -6,6 +6,7 @@ import java.util.Map.Entry;
|
|||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class Annotation extends JavaElement{
|
||||
|
||||
|
|
|
@ -18,10 +18,6 @@ import dev.peerat.parser.Tokenizer;
|
|||
import dev.peerat.parser.java.Annotation.AnnotableBuffer;
|
||||
import dev.peerat.parser.java.Function.FunctionContainer;
|
||||
import dev.peerat.parser.java.Operation.OperationContainer;
|
||||
import dev.peerat.parser.java.Value.BiValue;
|
||||
import dev.peerat.parser.java.Value.InstanceValue;
|
||||
import dev.peerat.parser.java.Value.LambdaValue;
|
||||
import dev.peerat.parser.java.Value.MethodCallValue;
|
||||
import dev.peerat.parser.java.Variable.VariableContainer;
|
||||
import dev.peerat.parser.java.operation.AssignOperation;
|
||||
import dev.peerat.parser.java.operation.BreakOperation;
|
||||
|
@ -33,6 +29,12 @@ import dev.peerat.parser.java.operation.ReturnOperation;
|
|||
import dev.peerat.parser.java.operation.SynchronizedOperation;
|
||||
import dev.peerat.parser.java.operation.ThrowOperation;
|
||||
import dev.peerat.parser.java.operation.WhileOperation;
|
||||
import dev.peerat.parser.java.value.BiValue;
|
||||
import dev.peerat.parser.java.value.InstanceValue;
|
||||
import dev.peerat.parser.java.value.LambdaValue;
|
||||
import dev.peerat.parser.java.value.MethodCallValue;
|
||||
import dev.peerat.parser.java.value.StaticValue;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
import dev.peerat.parser.state.BuilderStateTree;
|
||||
import dev.peerat.parser.state.InitialStateTree;
|
||||
import dev.peerat.parser.state.RedirectStateTree;
|
||||
|
@ -302,12 +304,13 @@ public class JavaParser extends Parser<JavaElement> {
|
|||
StateTree<JavaElement> function_container = new StateTree<>();
|
||||
function_container.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))).end((a,b) -> a);
|
||||
|
||||
|
||||
//VALUE
|
||||
BiFunction<JavaElement, Bag, JavaElement> value_builder = (parent, bag) -> {
|
||||
if(bag.has("right")){
|
||||
|
||||
if(!(bag.get("left") instanceof Value)) bag.set("left", new Value(bag.<Token>get("left")));
|
||||
if(!(bag.get("right") instanceof Value)) bag.set("right", new Value(bag.<Token>get("right")));
|
||||
if(!(bag.get("left") instanceof Value)) bag.set("left", new StaticValue(bag.<Token>get("left")));
|
||||
if(!(bag.get("right") instanceof Value)) bag.set("right", new StaticValue(bag.<Token>get("right")));
|
||||
|
||||
BiValue result = new BiValue(
|
||||
|
||||
|
@ -326,7 +329,7 @@ public class JavaParser extends Parser<JavaElement> {
|
|||
};
|
||||
|
||||
//STRING CONCAT
|
||||
StateTree<JavaElement> value = new StateTree<>();
|
||||
StateTree<JavaElement> value = new StateTree<>();
|
||||
|
||||
StateTree<JavaElement> value_container = new StateTree<>();
|
||||
|
||||
|
@ -347,7 +350,7 @@ public class JavaParser extends Parser<JavaElement> {
|
|||
(token) -> token.getType().equals(TokenType.STRING) || token.getType().equals(TokenType.CHAR),
|
||||
(bag, token) -> bag.set(token)))
|
||||
.end((parent,bag) -> {
|
||||
bag.set(new Value(bag.<Token>get()));
|
||||
bag.set(new StaticValue(bag.<Token>get()));
|
||||
return null;
|
||||
});
|
||||
|
||||
|
@ -371,7 +374,7 @@ public class JavaParser extends Parser<JavaElement> {
|
|||
else global.set(global.<Token>get().concat(local.get()));
|
||||
}));
|
||||
value_name.end((parent,bag) -> {
|
||||
Value result = new Value(bag.<Token>get());
|
||||
Value result = new StaticValue(bag.<Token>get());
|
||||
bag.set(result);
|
||||
return null;
|
||||
});
|
||||
|
@ -385,7 +388,7 @@ public class JavaParser extends Parser<JavaElement> {
|
|||
(bag, token) -> {
|
||||
Value prev = bag.get("prev");
|
||||
if(prev == null){
|
||||
bag.set("prev", new Value(bag.<Token>get()));
|
||||
bag.set("prev", new StaticValue(bag.<Token>get()));
|
||||
}else{
|
||||
Integer paramters = bag.get("args");
|
||||
List<Value> list = null;
|
||||
|
@ -504,18 +507,18 @@ public class JavaParser extends Parser<JavaElement> {
|
|||
value_inside.then(value_left);
|
||||
value_left.end((parent, bag) -> {
|
||||
if(bag.get("left") instanceof Value) bag.set(bag.get("left"));
|
||||
else bag.set(new Value(bag.<Token>get("left")));
|
||||
else bag.set(new StaticValue(bag.<Token>get("left")));
|
||||
return null;
|
||||
});
|
||||
StateTree<JavaElement> value_equals = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "=")));
|
||||
value_equals.then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_equals.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "=="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
StateTree<JavaElement> value_minus = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("<"), (bag, token) -> bag.set("action", "<?"))).loop();
|
||||
StateTree<JavaElement> value_minus = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("<"), (bag, token) -> bag.set("action", "<"))).loop();
|
||||
value_minus.then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_minus.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "<?="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
StateTree<JavaElement> value_max = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals(">"), (bag, token) -> bag.set("action", ">?"))).loop();
|
||||
value_minus.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "<="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
StateTree<JavaElement> value_max = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals(">"), (bag, token) -> bag.set("action", ">"))).loop();
|
||||
value_max.then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_max.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", ">?="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_max.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", ">="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("!")) && validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "!="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
StateTree<JavaElement> value_or = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("|"), (bag, token) -> bag.set("action", "|")));
|
||||
value_or.then((validator) -> validator.validate((token) -> token.getValue().equals("|"), (bag, token) -> bag.set("action", "||"))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
|
@ -560,6 +563,8 @@ public class JavaParser extends Parser<JavaElement> {
|
|||
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<>();
|
||||
|
@ -1302,4 +1307,284 @@ public class JavaParser extends Parser<JavaElement> {
|
|||
// jFile.build(builder);
|
||||
// builder.build(new BufferedWriter(new FileWriter(new File("/home/ParserV2.txt"))));
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* VALUES
|
||||
*
|
||||
|
||||
|
||||
|
||||
//VALUE
|
||||
BiFunction<JavaElement, Bag, JavaElement> value_builder = (parent, bag) -> {
|
||||
if(bag.has("right")){
|
||||
|
||||
if(!(bag.get("left") instanceof Value)) bag.set("left", new Value(bag.<Token>get("left")));
|
||||
if(!(bag.get("right") instanceof Value)) bag.set("right", new Value(bag.<Token>get("right")));
|
||||
|
||||
BiValue result = new BiValue(
|
||||
|
||||
bag.get("left"),
|
||||
|
||||
bag.get("action"),
|
||||
|
||||
bag.get("right"));
|
||||
bag.set(result);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
BiConsumer<Bag, Bag> value_right = (global, local) -> {
|
||||
global.set("right", local.get("left"));
|
||||
};
|
||||
|
||||
//STRING CONCAT
|
||||
StateTree<JavaElement> value = new StateTree<>();
|
||||
|
||||
StateTree<JavaElement> value_container = new StateTree<>();
|
||||
|
||||
StateTree<JavaElement> value_list = new StateTree<>();
|
||||
StateTree<JavaElement> value_list_element = value_list.then(new RedirectStateTree<>(value_container, (global, local) -> {
|
||||
List<Value> list = global.get();
|
||||
if(list == null){
|
||||
list = new ArrayList<>();
|
||||
global.set(list);
|
||||
}
|
||||
list.add(local.get());
|
||||
}));
|
||||
value_list_element.end();
|
||||
value_list_element.then((validator) -> validator.validate((token) -> token.getValue().equals(",")))
|
||||
.then(value_list_element);
|
||||
|
||||
value.then((validator) -> validator.validate(
|
||||
(token) -> token.getType().equals(TokenType.STRING) || token.getType().equals(TokenType.CHAR),
|
||||
(bag, token) -> bag.set(token)))
|
||||
.end((parent,bag) -> {
|
||||
bag.set(new Value(bag.<Token>get()));
|
||||
return null;
|
||||
});
|
||||
|
||||
StateTree<JavaElement> value_instance = value.then((validator) -> validator.validate(
|
||||
(token) -> token.getValue().equals("new"),
|
||||
(bag, token) -> bag.set("newit", token)));
|
||||
StateTree<JavaElement> value_name = new StateTree<JavaElement>();
|
||||
value.then(value_name);
|
||||
value_instance.then(new RedirectStateTree<>(value_name, (global, local) -> {
|
||||
System.out.println(local.get()+"");
|
||||
if(global.has("newit")) global.set(new InstanceValue(global.<Token>get("newit"), local.<MethodCallValue>get().getToken(), local.<MethodCallValue>get().getParameters()));
|
||||
else global.set(local.get());
|
||||
}))
|
||||
.end((a,b) -> 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(new RedirectStateTree<>(type, (global, local) -> {
|
||||
if(global.get() == null) global.set(local.get());
|
||||
else global.set(global.<Token>get().concat(local.get()));
|
||||
}));
|
||||
value_name.end((parent,bag) -> {
|
||||
Value result = new Value(bag.<Token>get());
|
||||
bag.set(result);
|
||||
return null;
|
||||
});
|
||||
|
||||
value_name.then((validator) -> validator.validate((token) -> token.getValue().equals(":")) && validator.validate((token) -> token.getValue().equals(":")))
|
||||
.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)))
|
||||
.end((a,b) -> a);
|
||||
|
||||
StateTree<JavaElement> value_call = value_name.then((validator) -> validator.validate(
|
||||
(token) -> token.getValue().equals("."),
|
||||
(bag, token) -> {
|
||||
Value prev = bag.get("prev");
|
||||
if(prev == null){
|
||||
bag.set("prev", new Value(bag.<Token>get()));
|
||||
}else{
|
||||
Integer paramters = bag.get("args");
|
||||
List<Value> list = null;
|
||||
if(paramters != null){
|
||||
list = new ArrayList<>();
|
||||
for(int i = 0; i < paramters; i++) list.add(bag.<Bag>get("arg"+i).get());
|
||||
bag.remove("args");
|
||||
}
|
||||
MethodCallValue methodCall = new MethodCallValue(prev, bag.get("gen"), bag.get(), list);
|
||||
bag.set("prev", methodCall);
|
||||
bag.remove("gen");
|
||||
}
|
||||
bag.set(new Token(token.getLineNumber(), token.getCharacterNumber(), "", TokenType.GROUP));
|
||||
}));
|
||||
value_call.end((a,b) -> a);
|
||||
value_call.then(new RedirectStateTree<>(gen, (global, local) -> global.set("gen", global.<Token>get().concat(local.get())))).then(value_name);
|
||||
value_call.then(value_name);
|
||||
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((parent,bag) -> {
|
||||
//to change
|
||||
bag.set(new MethodCallValue(null, null, bag.get(), null));
|
||||
return parent;
|
||||
})
|
||||
.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
||||
.end((a,b) -> a)
|
||||
.multiple(value_list)
|
||||
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a);
|
||||
value_array_end.then(value_call);
|
||||
value_array_end.then(value_array_begin);
|
||||
|
||||
StateTree<JavaElement> value_arg_begin = value_name.then((validator) -> validator.validate(
|
||||
(token) -> token.getValue().equals("("),
|
||||
(bag, token) -> bag.set(bag.<Token>get().concat(token))));
|
||||
StateTree<JavaElement> value_arg_end = value_arg_begin.then((validator) -> validator.validate(
|
||||
(token) -> token.getValue().equals(")"),
|
||||
(bag, token) -> bag.set(bag.<Token>get().concat(token))));
|
||||
value_arg_end.end((parent,bag) -> {
|
||||
Integer paramters = bag.get("args");
|
||||
List<Value> list = null;
|
||||
if(paramters != null){
|
||||
list = new ArrayList<>();
|
||||
for(int i = 0; i < paramters; i++) list.add(bag.<Bag>get("arg"+i).get());
|
||||
}
|
||||
|
||||
MethodCallValue methodCall = new MethodCallValue(bag.get("prev"), bag.get("gen"), bag.get(), list);
|
||||
bag.set(methodCall);
|
||||
return null;
|
||||
});
|
||||
value_arg_end.then(value_call);
|
||||
value_arg_end.then(value_array_begin);
|
||||
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(">")));
|
||||
value_generic_end.then(value_arg_begin);
|
||||
value_generic_end.then(value_generic_name);
|
||||
value_generic_end.then(value_generic_split);
|
||||
value_generic_name.then(value_generic_begin);
|
||||
value_generic_name.then(value_generic_end);
|
||||
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");
|
||||
if(count == null) count = 0;
|
||||
global.set("arg"+count, local);
|
||||
global.set("args", (count+1));
|
||||
}));
|
||||
value_arg.then((validator) -> validator.validate((token) -> token.getValue().equals(",")))
|
||||
.then(value_arg);
|
||||
value_arg.then(value_arg_end);
|
||||
|
||||
StateTree<JavaElement> value_left = new StateTree<>();
|
||||
|
||||
StateTree<JavaElement> value_parenthesis = value_container.then((validator) -> validator.validate((token) -> token.getValue().equals("(")));
|
||||
StateTree<JavaElement> value_cast = value_parenthesis.then(new RedirectStateTree<>(type, (global, local) -> global.set(null)))
|
||||
.then((validator) -> validator.validate((token) -> token.getValue().equals(")")))
|
||||
.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)));
|
||||
value_cast.then(value_left);
|
||||
StateTree<JavaElement> value_lambda_arg = value_parenthesis.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME)));
|
||||
value_lambda_arg.then((validator) -> validator.validate((token) -> token.getValue().equals(",")))
|
||||
.then(value_lambda_arg);
|
||||
StateTree<JavaElement> value_lambda = value_parenthesis.then((validator) ->
|
||||
validator.validate((token) -> token.getValue().equals(")")) &&
|
||||
validator.validate((token) -> token.getValue().equals("-")) &&
|
||||
validator.validate((token) -> token.getValue().equals(">")));
|
||||
value_lambda.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
||||
.<JavaElement>end((a,bag) -> {
|
||||
bag.set(new LambdaValue(null, new ArrayList<>()));
|
||||
return a;
|
||||
})
|
||||
.multiple(function_container)
|
||||
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a);
|
||||
value_lambda.then(new RedirectStateTree<>(value_container, (global, local) -> global.set("in", local.get()))).end((a,bag) ->{
|
||||
bag.set(new LambdaValue(null, bag.<Value>get("in")));
|
||||
return a;
|
||||
});
|
||||
value_lambda_arg.then(value_lambda);
|
||||
StateTree<JavaElement> value_parenthesis_end = value_parenthesis.then(new RedirectStateTree<>(value_container, (global, local) -> global.set("left", local.get())))
|
||||
.then((validator) -> validator.validate((token) -> token.getValue().equals(")")));
|
||||
value_parenthesis_end.end();
|
||||
value_parenthesis_end.then(value_call);
|
||||
value_parenthesis_end.then(value_left);
|
||||
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);
|
||||
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_inside = value_container.then(new RedirectStateTree<>(value, (global, local) -> {
|
||||
global.set("left", local.get());
|
||||
}));
|
||||
value_inside.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(value_left);
|
||||
value_inside.then(value_left);
|
||||
value_left.end((parent, bag) -> {
|
||||
if(bag.get("left") instanceof Value) bag.set(bag.get("left"));
|
||||
else bag.set(new Value(bag.<Token>get("left")));
|
||||
return null;
|
||||
});
|
||||
StateTree<JavaElement> value_equals = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "=")));
|
||||
value_equals.then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_equals.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "=="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
StateTree<JavaElement> value_minus = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("<"), (bag, token) -> bag.set("action", "<"))).loop();
|
||||
value_minus.then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_minus.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "<="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
StateTree<JavaElement> value_max = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals(">"), (bag, token) -> bag.set("action", ">"))).loop();
|
||||
value_max.then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_max.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", ">="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("!")) && validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "!="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
StateTree<JavaElement> value_or = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("|"), (bag, token) -> bag.set("action", "|")));
|
||||
value_or.then((validator) -> validator.validate((token) -> token.getValue().equals("|"), (bag, token) -> bag.set("action", "||"))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_or.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "|="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_or.then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
StateTree<JavaElement> value_and = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("&"), (bag, token) -> bag.set("action", "&")));
|
||||
value_and.then((validator) -> validator.validate((token) -> token.getValue().equals("&"), (bag, token) -> bag.set("action", "&&"))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_and.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "&="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_and.then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
StateTree<JavaElement> value_plus = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("+"), (bag, token) -> bag.set("action", "+")));
|
||||
value_plus.then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_plus.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "+="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_plus.then((validator) -> validator.validate((token) -> token.getValue().equals("+"), (bag, token) -> bag.set("action", "++"))).end(value_builder);
|
||||
StateTree<JavaElement> value_min = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("-"), (bag, token) -> bag.set("action", "-")));
|
||||
value_min.then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_min.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "-="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_min.then((validator) -> validator.validate((token) -> token.getValue().equals("-"), (bag, token) -> bag.set("action", "--"))).end(value_builder);
|
||||
StateTree<JavaElement> value_div = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("/"), (bag, token) -> bag.set("action", "/")));
|
||||
value_div.then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_div.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "/="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
StateTree<JavaElement> value_mod = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("%"), (bag, token) -> bag.set("action", "%")));
|
||||
value_mod.then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_mod.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "%="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
StateTree<JavaElement> value_xor = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("^"), (bag, token) -> bag.set("action", "^")));
|
||||
value_xor.then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_xor.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "^="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
StateTree<JavaElement> value_mult = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("*"), (bag, token) -> bag.set("action", "*")));
|
||||
value_mult.then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_mult.then((validator) -> validator.validate((token) -> token.getValue().equals("="), (bag, token) -> bag.set("action", "*="))).then(new RedirectStateTree<>(value_container, value_right)).end(value_builder);
|
||||
value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("?")))
|
||||
.then(new RedirectStateTree<>(value_container, value_right))
|
||||
.then((validator) -> validator.validate((token) -> token.getValue().equals(":"), (bag, token) -> bag.set("action", "?:")))
|
||||
.then(new RedirectStateTree<>(value_container, value_right))
|
||||
.end(value_builder);
|
||||
StateTree<JavaElement> value_instanceof = value_left.then((validator) -> validator.validate((token) -> token.getValue().equals("instanceof"), (bag, token) -> bag.set("action", "instanceof")))
|
||||
.then(new RedirectStateTree<>(type, value_right));
|
||||
value_instanceof.end(value_builder);
|
||||
value_instanceof.then(value_left);
|
||||
|
||||
braces_container.then(clazz_container);
|
||||
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);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
}
|
||||
|
|
|
@ -1,331 +0,0 @@
|
|||
package dev.peerat.parser.java;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.Operation.OperationContainer;
|
||||
import dev.peerat.parser.java.Variable.VariableContainer;
|
||||
|
||||
public class Value extends JavaElement{
|
||||
|
||||
private Token token;
|
||||
private JavaElement content;
|
||||
|
||||
Value(){}
|
||||
|
||||
public Value(Token token){
|
||||
this.token = token;
|
||||
}
|
||||
|
||||
public Value(JavaElement content){
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public Token getToken(){
|
||||
return this.token;
|
||||
}
|
||||
|
||||
public JavaElement getContent(){
|
||||
return this.content;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(){
|
||||
return "Value[token="+token+", content="+content+"]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Builder builder) throws Exception{
|
||||
if(token != null){
|
||||
builder.append(token);
|
||||
}else{
|
||||
content.build(builder);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
|
||||
return content != null ? finder.apply(content) ? (E) content : null : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list) {
|
||||
if(content != null){
|
||||
if(finder.apply(content)) list.add((E) content);
|
||||
content.findAll(finder, list);
|
||||
}
|
||||
}
|
||||
|
||||
public static class BiValue extends Value{
|
||||
|
||||
private Value left;
|
||||
private String action;
|
||||
private Value right;
|
||||
|
||||
public BiValue(Value left, String action, Value right){
|
||||
this.left = left;
|
||||
this.action = action;
|
||||
this.right = right;
|
||||
}
|
||||
|
||||
public Value left(){
|
||||
return left;
|
||||
}
|
||||
|
||||
public String getAction(){
|
||||
return this.action;
|
||||
}
|
||||
|
||||
public Value right(){
|
||||
return right;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(){
|
||||
return left+" "+action+" "+right;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Builder builder) throws Exception{
|
||||
left.build(builder);
|
||||
builder.append(action);
|
||||
right.build(builder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
|
||||
return finder.apply(left) ? (E) left : finder.apply(right) ? (E) right : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
|
||||
if(finder.apply(left)) list.add((E)left);
|
||||
left.findAll(finder, list);
|
||||
if(finder.apply(right)) list.add((E)right);
|
||||
right.findAll(finder, list);
|
||||
}
|
||||
}
|
||||
|
||||
public static class TriValue extends Value{
|
||||
|
||||
private Value check;
|
||||
private Value success;
|
||||
private Value fail;
|
||||
|
||||
public TriValue(){}
|
||||
|
||||
public Value getChecker(){
|
||||
return check;
|
||||
}
|
||||
|
||||
public Value success(){
|
||||
return success;
|
||||
}
|
||||
|
||||
public Value fail(){
|
||||
return fail;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Builder builder) throws Exception {
|
||||
check.build(builder);
|
||||
builder.append("?");
|
||||
success.build(builder);
|
||||
builder.append(":");
|
||||
fail.build(builder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
|
||||
return finder.apply(check) ? (E) check : finder.apply(success) ? (E) success : finder.apply(fail) ? (E) fail : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
|
||||
if(finder.apply(check)) list.add((E)check);
|
||||
check.findAll(finder, list);
|
||||
if(finder.apply(success)) list.add((E)success);
|
||||
success.findAll(finder, list);
|
||||
if(finder.apply(fail)) list.add((E)fail);
|
||||
fail.findAll(finder, list);
|
||||
}
|
||||
}
|
||||
|
||||
public static class MethodCallValue extends Value{
|
||||
|
||||
private Value base;
|
||||
private Token generic;
|
||||
private Token token;
|
||||
private List<Value> parameters;
|
||||
|
||||
public MethodCallValue(Value base, Token generic, Token token, List<Value> parameters){
|
||||
this.base = base;
|
||||
this.generic = generic;
|
||||
this.token = token;
|
||||
this.parameters = parameters;
|
||||
}
|
||||
|
||||
public Value base(){
|
||||
return this.base;
|
||||
}
|
||||
|
||||
public Token getGeneric(){
|
||||
return this.generic;
|
||||
}
|
||||
|
||||
public Token getToken(){
|
||||
return token;
|
||||
}
|
||||
|
||||
public List<Value> getParameters(){
|
||||
return this.parameters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(){
|
||||
return base+"."+((generic == null ? "":generic.getValue()))+token.getValue()+((parameters == null ? "":parameters));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Builder builder) throws Exception{
|
||||
builder.append(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
|
||||
if(finder.apply(base)) return (E) base;
|
||||
if(parameters != null){
|
||||
for(Value value : parameters){
|
||||
if(finder.apply(value)) return (E) value;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
|
||||
if(finder.apply(base)) list.add((E) base);
|
||||
base.findAll(finder, list);
|
||||
if(parameters != null){
|
||||
for(Value value : parameters){
|
||||
if(finder.apply(value)) list.add((E) value);
|
||||
value.findAll(finder, list);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class InstanceValue extends Value{
|
||||
|
||||
private Token newer;
|
||||
private Token token;
|
||||
private List<Value> parameters;
|
||||
|
||||
public InstanceValue(Token newer, Token token, List<Value> parameters){
|
||||
this.newer = newer;
|
||||
this.token = token;
|
||||
this.parameters = parameters;
|
||||
}
|
||||
|
||||
public Token getNewer(){
|
||||
return this.newer;
|
||||
}
|
||||
|
||||
public Token getToken(){
|
||||
return token;
|
||||
}
|
||||
|
||||
public List<Value> getParameters(){
|
||||
return this.parameters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(){
|
||||
return newer.getValue()+" "+token.getValue()+((parameters == null ? "":parameters));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Builder builder) throws Exception{
|
||||
builder.append(newer);
|
||||
builder.append(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
|
||||
if(parameters != null){
|
||||
for(Value value : parameters){
|
||||
if(finder.apply(value)) return (E) value;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
|
||||
if(parameters != null){
|
||||
for(Value value : parameters){
|
||||
if(finder.apply(value)) list.add((E) value);
|
||||
value.findAll(finder, list);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//TO FILL
|
||||
public static class LambdaValue extends Value implements OperationContainer, VariableContainer{
|
||||
|
||||
private List<Token> parameters;
|
||||
private List<JavaElement> operations;
|
||||
|
||||
public LambdaValue(List<Token> parameters, List<JavaElement> operations){
|
||||
this.parameters = parameters;
|
||||
this.operations = operations;
|
||||
}
|
||||
|
||||
public LambdaValue(List<Token> parameters, Value value){
|
||||
this.parameters = parameters;
|
||||
this.operations = new ArrayList<>();
|
||||
this.operations.add(value);
|
||||
}
|
||||
|
||||
public List<Token> getParameters(){
|
||||
return this.parameters;
|
||||
}
|
||||
|
||||
public List<JavaElement> getOperations(){
|
||||
return this.operations;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addVariable(Variable variable){
|
||||
this.operations.add(variable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOperation(Operation operation) {
|
||||
this.operations.add(operation);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString(){
|
||||
return "("+parameters+") -> {"+operations+"}";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Builder builder) throws Exception{
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,13 +1,13 @@
|
|||
package dev.peerat.parser.java;
|
||||
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.TokenType;
|
||||
import dev.peerat.parser.java.Annotation.Annotable;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class Variable extends Annotable{
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import java.util.function.Function;
|
|||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Operation;
|
||||
import dev.peerat.parser.java.Value;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class AssignOperation extends Operation{
|
||||
|
||||
|
|
|
@ -4,8 +4,8 @@ import java.util.List;
|
|||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Value;
|
||||
import dev.peerat.parser.java.Variable;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class ForOperation extends OperationBag{
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import java.util.function.Function;
|
|||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Value;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class ForeachOperation extends OperationBag{
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ import java.util.List;
|
|||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Value;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class IfOperation extends OperationBag{
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ import java.util.function.Function;
|
|||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Operation;
|
||||
import dev.peerat.parser.java.Value;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class MethodCallOperation extends Operation{
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import java.util.function.Function;
|
|||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Operation;
|
||||
import dev.peerat.parser.java.Value;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class ReturnOperation extends Operation{
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ import java.util.List;
|
|||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Value;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class SynchronizedOperation extends OperationBag{
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import java.util.function.Function;
|
|||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Operation;
|
||||
import dev.peerat.parser.java.Value;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class ThrowOperation extends Operation{
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ import java.util.List;
|
|||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Value;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class WhileOperation extends OperationBag{
|
||||
|
||||
|
|
37
src/dev/peerat/parser/java/value/ArrayValue.java
Normal file
37
src/dev/peerat/parser/java/value/ArrayValue.java
Normal file
|
@ -0,0 +1,37 @@
|
|||
package dev.peerat.parser.java.value;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
|
||||
public class ArrayValue extends Value{
|
||||
|
||||
private Value[] values;
|
||||
|
||||
public ArrayValue(Value[] values){
|
||||
this.values = values;
|
||||
}
|
||||
|
||||
public Value[] getValues(){
|
||||
return this.values;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
47
src/dev/peerat/parser/java/value/BiValue.java
Normal file
47
src/dev/peerat/parser/java/value/BiValue.java
Normal file
|
@ -0,0 +1,47 @@
|
|||
package dev.peerat.parser.java.value;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
|
||||
public class BiValue extends Value{
|
||||
|
||||
private Value left;
|
||||
private String action;
|
||||
private Value right;
|
||||
|
||||
public BiValue(Value left, String action, Value right){
|
||||
this.left = left;
|
||||
this.action = action;
|
||||
this.right = right;
|
||||
}
|
||||
|
||||
public Value left(){
|
||||
return left;
|
||||
}
|
||||
|
||||
public String getAction(){
|
||||
return this.action;
|
||||
}
|
||||
|
||||
public Value right(){
|
||||
return right;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list) {
|
||||
|
||||
}
|
||||
|
||||
}
|
37
src/dev/peerat/parser/java/value/InnerElementValue.java
Normal file
37
src/dev/peerat/parser/java/value/InnerElementValue.java
Normal file
|
@ -0,0 +1,37 @@
|
|||
package dev.peerat.parser.java.value;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
|
||||
public class InnerElementValue extends Value{
|
||||
|
||||
private JavaElement element;
|
||||
|
||||
public InnerElementValue(JavaElement element){
|
||||
this.element = element;
|
||||
}
|
||||
|
||||
public JavaElement getElement(){
|
||||
return this.element;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
48
src/dev/peerat/parser/java/value/InstanceValue.java
Normal file
48
src/dev/peerat/parser/java/value/InstanceValue.java
Normal file
|
@ -0,0 +1,48 @@
|
|||
package dev.peerat.parser.java.value;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
|
||||
public class InstanceValue extends Value{
|
||||
|
||||
private Token newer;
|
||||
private Token token;
|
||||
private List<Value> parameters;
|
||||
|
||||
public InstanceValue(Token newer, Token token, List<Value> parameters){
|
||||
this.newer = newer;
|
||||
this.token = token;
|
||||
this.parameters = parameters;
|
||||
}
|
||||
|
||||
public Token getNewer(){
|
||||
return this.newer;
|
||||
}
|
||||
|
||||
public Token getToken(){
|
||||
return token;
|
||||
}
|
||||
|
||||
public List<Value> getParameters(){
|
||||
return this.parameters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list) {
|
||||
|
||||
}
|
||||
|
||||
}
|
64
src/dev/peerat/parser/java/value/LambdaValue.java
Normal file
64
src/dev/peerat/parser/java/value/LambdaValue.java
Normal file
|
@ -0,0 +1,64 @@
|
|||
package dev.peerat.parser.java.value;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Operation;
|
||||
import dev.peerat.parser.java.Variable;
|
||||
import dev.peerat.parser.java.Operation.OperationContainer;
|
||||
import dev.peerat.parser.java.Variable.VariableContainer;
|
||||
|
||||
public class LambdaValue extends Value implements OperationContainer, VariableContainer{
|
||||
|
||||
private List<Token> parameters;
|
||||
private List<JavaElement> operations;
|
||||
|
||||
public LambdaValue(List<Token> parameters, List<JavaElement> operations){
|
||||
this.parameters = parameters;
|
||||
this.operations = operations;
|
||||
}
|
||||
|
||||
public LambdaValue(List<Token> parameters, Value value){
|
||||
this.parameters = parameters;
|
||||
this.operations = new ArrayList<>();
|
||||
this.operations.add(value);
|
||||
}
|
||||
|
||||
public List<Token> getParameters(){
|
||||
return this.parameters;
|
||||
}
|
||||
|
||||
public List<JavaElement> getOperations(){
|
||||
return this.operations;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addVariable(Variable variable){
|
||||
this.operations.add(variable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOperation(Operation operation) {
|
||||
this.operations.add(operation);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
54
src/dev/peerat/parser/java/value/MethodCallValue.java
Normal file
54
src/dev/peerat/parser/java/value/MethodCallValue.java
Normal file
|
@ -0,0 +1,54 @@
|
|||
package dev.peerat.parser.java.value;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
|
||||
public class MethodCallValue extends Value{
|
||||
|
||||
private Value base;
|
||||
private Token generic;
|
||||
private Token token;
|
||||
private List<Value> parameters;
|
||||
|
||||
public MethodCallValue(Value base, Token generic, Token token, List<Value> parameters){
|
||||
this.base = base;
|
||||
this.generic = generic;
|
||||
this.token = token;
|
||||
this.parameters = parameters;
|
||||
}
|
||||
|
||||
public Value base(){
|
||||
return this.base;
|
||||
}
|
||||
|
||||
public Token getGeneric(){
|
||||
return this.generic;
|
||||
}
|
||||
|
||||
public Token getToken(){
|
||||
return token;
|
||||
}
|
||||
|
||||
public List<Value> getParameters(){
|
||||
return this.parameters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list) {
|
||||
|
||||
}
|
||||
|
||||
}
|
41
src/dev/peerat/parser/java/value/ModifierValue.java
Normal file
41
src/dev/peerat/parser/java/value/ModifierValue.java
Normal file
|
@ -0,0 +1,41 @@
|
|||
package dev.peerat.parser.java.value;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
|
||||
public class ModifierValue extends Value{
|
||||
|
||||
private Token modifier;
|
||||
private Value value;
|
||||
|
||||
public ModifierValue(Token modifier, Value value){
|
||||
this.modifier = modifier;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public Token getModifier(){
|
||||
return this.modifier;
|
||||
}
|
||||
|
||||
public Value getValue(){
|
||||
return this.value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list) {
|
||||
|
||||
}
|
||||
}
|
38
src/dev/peerat/parser/java/value/StaticValue.java
Normal file
38
src/dev/peerat/parser/java/value/StaticValue.java
Normal file
|
@ -0,0 +1,38 @@
|
|||
package dev.peerat.parser.java.value;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
|
||||
public class StaticValue extends Value{
|
||||
|
||||
private Token token;
|
||||
|
||||
public StaticValue(Token token){
|
||||
this.token = token;
|
||||
}
|
||||
|
||||
public Token getToken(){
|
||||
return this.token;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
47
src/dev/peerat/parser/java/value/TriValue.java
Normal file
47
src/dev/peerat/parser/java/value/TriValue.java
Normal file
|
@ -0,0 +1,47 @@
|
|||
package dev.peerat.parser.java.value;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
|
||||
public class TriValue extends Value{
|
||||
|
||||
private Value check;
|
||||
private Value success;
|
||||
private Value fail;
|
||||
|
||||
public TriValue(Value check, Value success, Value fail){
|
||||
this.check = check;
|
||||
this.success = success;
|
||||
this.fail = fail;
|
||||
}
|
||||
|
||||
public Value getChecker(){
|
||||
return check;
|
||||
}
|
||||
|
||||
public Value success(){
|
||||
return success;
|
||||
}
|
||||
|
||||
public Value fail(){
|
||||
return fail;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Builder builder) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list) {
|
||||
|
||||
}
|
||||
|
||||
}
|
5
src/dev/peerat/parser/java/value/Value.java
Normal file
5
src/dev/peerat/parser/java/value/Value.java
Normal file
|
@ -0,0 +1,5 @@
|
|||
package dev.peerat.parser.java.value;
|
||||
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
|
||||
public abstract class Value extends JavaElement{}
|
|
@ -11,10 +11,8 @@ import dev.peerat.parser.Parser;
|
|||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.TokenType;
|
||||
import dev.peerat.parser.TokenValidator;
|
||||
import dev.peerat.parser.java.Annotation;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Value;
|
||||
import dev.peerat.parser.java.Annotation.AnnotableBuffer;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
import dev.peerat.parser.state.RedirectStateTree;
|
||||
import dev.peerat.parser.state.StateTree;
|
||||
|
||||
|
|
|
@ -6,7 +6,6 @@ import java.util.ArrayList;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.BiFunction;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
@ -16,9 +15,6 @@ import dev.peerat.parser.Parser;
|
|||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.TokenType;
|
||||
import dev.peerat.parser.TokenValidator;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Value;
|
||||
import dev.peerat.parser.java.Variable;
|
||||
import dev.peerat.parser.java.Operation.OperationContainer;
|
||||
import dev.peerat.parser.java.operation.AssignOperation;
|
||||
import dev.peerat.parser.java.operation.BreakOperation;
|
||||
|
@ -34,6 +30,7 @@ import dev.peerat.parser.java.operation.SynchronizedOperation;
|
|||
import dev.peerat.parser.java.operation.ThrowOperation;
|
||||
import dev.peerat.parser.java.operation.TryOperation;
|
||||
import dev.peerat.parser.java.operation.WhileOperation;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
import dev.peerat.parser.state.RedirectStateTree;
|
||||
import dev.peerat.parser.state.StateTree;
|
||||
|
||||
|
|
|
@ -14,9 +14,9 @@ import dev.peerat.parser.Parser;
|
|||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.TokenType;
|
||||
import dev.peerat.parser.TokenValidator;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Value;
|
||||
import dev.peerat.parser.java.Value.BiValue;
|
||||
import dev.peerat.parser.java.value.BiValue;
|
||||
import dev.peerat.parser.java.value.StaticValue;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
import dev.peerat.parser.state.RedirectStateTree;
|
||||
import dev.peerat.parser.state.StateTree;
|
||||
|
||||
|
@ -58,7 +58,7 @@ public class ValueTests {
|
|||
value.then(value_name);
|
||||
value_instance.then(new RedirectStateTree<>(value_name, (global, local) -> global.set(local.get())))
|
||||
.end((parent, bag) -> {
|
||||
Value result = new Value(bag.<Token>get());
|
||||
Value result = new StaticValue(bag.<Token>get());
|
||||
bag.set(result);
|
||||
return result;
|
||||
})
|
||||
|
@ -70,7 +70,7 @@ public class ValueTests {
|
|||
global.set(local.get());
|
||||
}));
|
||||
value_name.end((parent,bag) -> {
|
||||
Value result = new Value(bag.<Token>get());
|
||||
Value result = new StaticValue(bag.<Token>get());
|
||||
bag.set(result);
|
||||
return null;
|
||||
});
|
||||
|
@ -237,7 +237,7 @@ public class ValueTests {
|
|||
}
|
||||
return false;
|
||||
}).end((parent,bag) -> {
|
||||
bag.set(new Value(bag.<Token>get()));
|
||||
bag.set(new StaticValue(bag.<Token>get()));
|
||||
return null;
|
||||
});
|
||||
|
||||
|
|
|
@ -14,12 +14,9 @@ import dev.peerat.parser.Parser;
|
|||
import dev.peerat.parser.Token;
|
||||
import dev.peerat.parser.TokenType;
|
||||
import dev.peerat.parser.TokenValidator;
|
||||
import dev.peerat.parser.java.Class;
|
||||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Value;
|
||||
import dev.peerat.parser.java.Variable;
|
||||
import dev.peerat.parser.java.Annotation.AnnotableBuffer;
|
||||
import dev.peerat.parser.java.Variable.VariableContainer;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
import dev.peerat.parser.state.InitialStateTree;
|
||||
import dev.peerat.parser.state.RedirectStateTree;
|
||||
import dev.peerat.parser.state.StateTree;
|
||||
|
|
|
@ -15,8 +15,9 @@ import dev.peerat.parser.java.Class;
|
|||
import dev.peerat.parser.java.ClassBase;
|
||||
import dev.peerat.parser.java.Enumeration;
|
||||
import dev.peerat.parser.java.Interface;
|
||||
import dev.peerat.parser.java.Value;
|
||||
import dev.peerat.parser.java.element.BaseElementTests;
|
||||
import dev.peerat.parser.java.value.StaticValue;
|
||||
import dev.peerat.parser.java.value.Value;
|
||||
|
||||
public class ClazzAnnotation extends BaseElementTests{
|
||||
|
||||
|
@ -79,7 +80,7 @@ public class ClazzAnnotation extends BaseElementTests{
|
|||
Annotation annotation = annotations.get(0);
|
||||
assertEquals("Test", annotation.getName().getValue());
|
||||
assertNotNull(annotation.getParameters());
|
||||
Value value = annotation.getParameters().get(null);
|
||||
StaticValue value = (StaticValue) annotation.getParameters().get(null);
|
||||
assertNotNull(value);
|
||||
Token token = value.getToken();
|
||||
assertNotNull(token);
|
||||
|
@ -103,7 +104,7 @@ public class ClazzAnnotation extends BaseElementTests{
|
|||
assertEquals(1, annotation.getParameters().size());
|
||||
Entry<Token, Value> entry = annotation.getParameters().entrySet().iterator().next();
|
||||
assertEquals("offset", entry.getKey().getValue());
|
||||
assertEquals("8", entry.getValue().getToken().getValue());
|
||||
assertEquals("8", ((StaticValue)entry.getValue()).getToken().getValue());
|
||||
});
|
||||
|
||||
register(
|
||||
|
|
|
@ -7,6 +7,7 @@ import dev.peerat.parser.java.Function;
|
|||
import dev.peerat.parser.java.Operation;
|
||||
import dev.peerat.parser.java.element.BaseElementTests;
|
||||
import dev.peerat.parser.java.operation.AssignOperation;
|
||||
import dev.peerat.parser.java.value.StaticValue;
|
||||
|
||||
public class AssignOperationTest extends BaseElementTests{
|
||||
|
||||
|
@ -27,8 +28,8 @@ public class AssignOperationTest extends BaseElementTests{
|
|||
Operation op = checkOperation(function.getElements().get(1));
|
||||
assertTrue(op instanceof AssignOperation);
|
||||
AssignOperation assign = (AssignOperation)op;
|
||||
assertEquals("i", assign.left().getToken().getValue());
|
||||
assertEquals("4", assign.right().getToken().getValue());
|
||||
assertEquals("i", ((StaticValue)assign.left()).getToken().getValue());
|
||||
assertEquals("4", ((StaticValue)assign.right()).getToken().getValue());
|
||||
});
|
||||
|
||||
register(
|
||||
|
@ -48,8 +49,8 @@ public class AssignOperationTest extends BaseElementTests{
|
|||
Operation op = checkOperation(function.getElements().get(2));
|
||||
assertTrue(op instanceof AssignOperation);
|
||||
AssignOperation assign = (AssignOperation)op;
|
||||
assertEquals("i", assign.left().getToken().getValue());
|
||||
assertEquals("j", assign.right().getToken().getValue());
|
||||
assertEquals("i", ((StaticValue)assign.left()).getToken().getValue());
|
||||
assertEquals("j", ((StaticValue)assign.right()).getToken().getValue());
|
||||
});
|
||||
}
|
||||
}
|
154
test/dev/peerat/parser/java/element/value/ValueInCondition.java
Normal file
154
test/dev/peerat/parser/java/element/value/ValueInCondition.java
Normal file
|
@ -0,0 +1,154 @@
|
|||
package dev.peerat.parser.java.element.value;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import dev.peerat.parser.java.Function;
|
||||
import dev.peerat.parser.java.Operation;
|
||||
import dev.peerat.parser.java.element.BaseElementTests;
|
||||
import dev.peerat.parser.java.operation.IfOperation;
|
||||
import dev.peerat.parser.java.value.BiValue;
|
||||
import dev.peerat.parser.java.value.StaticValue;
|
||||
|
||||
public class ValueInCondition extends BaseElementTests{
|
||||
|
||||
{
|
||||
register(
|
||||
"package be.jeffcheasey88;"
|
||||
+ ""
|
||||
+ "public static class Test{ "
|
||||
+ " void test(){ "
|
||||
+ " if(a){}"
|
||||
+ "}"
|
||||
+ "}",
|
||||
(javafile) -> {
|
||||
Function function = checkFunction(checkClass(javafile).getElements().get(0));
|
||||
assertEquals(1, function.getElements().size());
|
||||
Operation op = checkOperation(function.getElements().get(0));
|
||||
assertTrue(op instanceof IfOperation);
|
||||
IfOperation condition = (IfOperation)op;
|
||||
System.out.println(condition.getCondition());
|
||||
assertEquals("a", ((StaticValue)condition.getCondition()).getToken().getValue());
|
||||
});
|
||||
|
||||
register(
|
||||
"package be.jeffcheasey88;"
|
||||
+ ""
|
||||
+ "public static class Test{ "
|
||||
+ " void test(){ "
|
||||
+ " if(a && b){}"
|
||||
+ "}"
|
||||
+ "}",
|
||||
(javafile) -> {
|
||||
Function function = checkFunction(checkClass(javafile).getElements().get(0));
|
||||
assertEquals(1, function.getElements().size());
|
||||
Operation op = checkOperation(function.getElements().get(0));
|
||||
assertTrue(op instanceof IfOperation);
|
||||
IfOperation condition = (IfOperation)op;
|
||||
BiValue value = (BiValue)condition.getCondition();
|
||||
assertEquals("a", ((StaticValue)value.left()).getToken().getValue());
|
||||
assertEquals("b", ((StaticValue)value.right()).getToken().getValue());
|
||||
assertEquals("&&", value.getAction());
|
||||
});
|
||||
|
||||
register(
|
||||
"package be.jeffcheasey88;"
|
||||
+ ""
|
||||
+ "public static class Test{ "
|
||||
+ " void test(){ "
|
||||
+ " if(a || b){}"
|
||||
+ "}"
|
||||
+ "}",
|
||||
(javafile) -> {
|
||||
Function function = checkFunction(checkClass(javafile).getElements().get(0));
|
||||
assertEquals(1, function.getElements().size());
|
||||
Operation op = checkOperation(function.getElements().get(0));
|
||||
assertTrue(op instanceof IfOperation);
|
||||
IfOperation condition = (IfOperation)op;
|
||||
BiValue value = (BiValue)condition.getCondition();
|
||||
assertEquals("a", ((StaticValue)value.left()).getToken().getValue());
|
||||
assertEquals("b", ((StaticValue)value.right()).getToken().getValue());
|
||||
assertEquals("||", value.getAction());
|
||||
});
|
||||
|
||||
register(
|
||||
"package be.jeffcheasey88;"
|
||||
+ ""
|
||||
+ "public static class Test{ "
|
||||
+ " void test(){ "
|
||||
+ " if(a || (b)){}"
|
||||
+ "}"
|
||||
+ "}",
|
||||
(javafile) -> {
|
||||
Function function = checkFunction(checkClass(javafile).getElements().get(0));
|
||||
assertEquals(1, function.getElements().size());
|
||||
Operation op = checkOperation(function.getElements().get(0));
|
||||
assertTrue(op instanceof IfOperation);
|
||||
IfOperation condition = (IfOperation)op;
|
||||
BiValue value = (BiValue)condition.getCondition();
|
||||
assertEquals("a", ((StaticValue)value.left()).getToken().getValue());
|
||||
assertEquals("b", ((StaticValue)value.right()).getToken().getValue());
|
||||
assertEquals("||", value.getAction());
|
||||
});
|
||||
|
||||
register(
|
||||
"package be.jeffcheasey88;"
|
||||
+ ""
|
||||
+ "public static class Test{ "
|
||||
+ " void test(){ "
|
||||
+ " if(((a || ((b))))){}"
|
||||
+ "}"
|
||||
+ "}",
|
||||
(javafile) -> {
|
||||
Function function = checkFunction(checkClass(javafile).getElements().get(0));
|
||||
assertEquals(1, function.getElements().size());
|
||||
Operation op = checkOperation(function.getElements().get(0));
|
||||
assertTrue(op instanceof IfOperation);
|
||||
IfOperation condition = (IfOperation)op;
|
||||
BiValue value = (BiValue)condition.getCondition();
|
||||
assertEquals("a", ((StaticValue)value.left()).getToken().getValue());
|
||||
assertEquals("b", ((StaticValue)value.right()).getToken().getValue());
|
||||
assertEquals("||", value.getAction());
|
||||
});
|
||||
|
||||
register(
|
||||
"package be.jeffcheasey88;"
|
||||
+ ""
|
||||
+ "public static class Test{ "
|
||||
+ " void test(){ "
|
||||
+ " if(a > 2){}"
|
||||
+ "}"
|
||||
+ "}",
|
||||
(javafile) -> {
|
||||
Function function = checkFunction(checkClass(javafile).getElements().get(0));
|
||||
assertEquals(1, function.getElements().size());
|
||||
Operation op = checkOperation(function.getElements().get(0));
|
||||
assertTrue(op instanceof IfOperation);
|
||||
IfOperation condition = (IfOperation)op;
|
||||
BiValue value = (BiValue)condition.getCondition();
|
||||
assertEquals("a", ((StaticValue)value.left()).getToken().getValue());
|
||||
assertEquals("2", ((StaticValue)value.right()).getToken().getValue());
|
||||
assertEquals(">", value.getAction());
|
||||
});
|
||||
|
||||
register(
|
||||
"package be.jeffcheasey88;"
|
||||
+ ""
|
||||
+ "public static class Test{ "
|
||||
+ " void test(){ "
|
||||
+ " if(a <= 2){}"
|
||||
+ "}"
|
||||
+ "}",
|
||||
(javafile) -> {
|
||||
Function function = checkFunction(checkClass(javafile).getElements().get(0));
|
||||
assertEquals(1, function.getElements().size());
|
||||
Operation op = checkOperation(function.getElements().get(0));
|
||||
assertTrue(op instanceof IfOperation);
|
||||
IfOperation condition = (IfOperation)op;
|
||||
BiValue value = (BiValue)condition.getCondition();
|
||||
assertEquals("a", ((StaticValue)value.left()).getToken().getValue());
|
||||
assertEquals("2", ((StaticValue)value.right()).getToken().getValue());
|
||||
assertEquals(">", value.getAction());
|
||||
});
|
||||
}
|
||||
}
|
|
@ -12,6 +12,7 @@ import dev.peerat.parser.java.Class;
|
|||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Variable;
|
||||
import dev.peerat.parser.java.element.BaseElementTests;
|
||||
import dev.peerat.parser.java.value.StaticValue;
|
||||
|
||||
public class VariableInClass extends BaseElementTests{
|
||||
|
||||
|
@ -97,7 +98,7 @@ public class VariableInClass extends BaseElementTests{
|
|||
assertEquals(Modifier.PRIVATE+Modifier.FINAL, variable.getModifier());
|
||||
assertEquals("int", variable.getType().getValue());
|
||||
assertEquals("i", variable.getName().getValue());
|
||||
assertEquals("4", variable.getValue().getToken().getValue());
|
||||
assertEquals("4", ((StaticValue)variable.getValue()).getToken().getValue());
|
||||
});
|
||||
|
||||
register(
|
||||
|
@ -118,7 +119,7 @@ public class VariableInClass extends BaseElementTests{
|
|||
assertEquals(Modifier.PRIVATE+Modifier.FINAL, variable.getModifier());
|
||||
assertEquals("int", variable.getType().getValue());
|
||||
assertEquals("i", variable.getName().getValue());
|
||||
assertEquals("4", variable.getValue().getToken().getValue());
|
||||
assertEquals("4", ((StaticValue)variable.getValue()).getToken().getValue());
|
||||
|
||||
element = elements.get(1);
|
||||
assertNotNull(element);
|
||||
|
@ -148,7 +149,7 @@ public class VariableInClass extends BaseElementTests{
|
|||
assertEquals(Modifier.PRIVATE+Modifier.FINAL, variable.getModifier());
|
||||
assertEquals("int", variable.getType().getValue());
|
||||
assertEquals("i", variable.getName().getValue());
|
||||
assertEquals("4", variable.getValue().getToken().getValue());
|
||||
assertEquals("4", ((StaticValue)variable.getValue()).getToken().getValue());
|
||||
|
||||
element = elements.get(1);
|
||||
assertNotNull(element);
|
||||
|
@ -157,7 +158,7 @@ public class VariableInClass extends BaseElementTests{
|
|||
assertEquals(Modifier.PRIVATE+Modifier.FINAL, variable.getModifier());
|
||||
assertEquals("int", variable.getType().getValue());
|
||||
assertEquals("j", variable.getName().getValue());
|
||||
assertEquals("6", variable.getValue().getToken().getValue());
|
||||
assertEquals("6", ((StaticValue)variable.getValue()).getToken().getValue());
|
||||
});
|
||||
|
||||
register(
|
||||
|
@ -179,7 +180,7 @@ public class VariableInClass extends BaseElementTests{
|
|||
assertEquals(Modifier.PRIVATE+Modifier.FINAL, variable.getModifier());
|
||||
assertEquals("int", variable.getType().getValue());
|
||||
assertEquals("i", variable.getName().getValue());
|
||||
assertEquals("4", variable.getValue().getToken().getValue());
|
||||
assertEquals("4", ((StaticValue)variable.getValue()).getToken().getValue());
|
||||
|
||||
element = elements.get(1);
|
||||
assertNotNull(element);
|
||||
|
@ -188,7 +189,7 @@ public class VariableInClass extends BaseElementTests{
|
|||
assertEquals(Modifier.PRIVATE+Modifier.FINAL, variable.getModifier());
|
||||
assertEquals("int", variable.getType().getValue());
|
||||
assertEquals("j", variable.getName().getValue());
|
||||
assertEquals("6", variable.getValue().getToken().getValue());
|
||||
assertEquals("6", ((StaticValue)variable.getValue()).getToken().getValue());
|
||||
|
||||
element = elements.get(2);
|
||||
assertNotNull(element);
|
||||
|
|
|
@ -11,6 +11,7 @@ import dev.peerat.parser.java.Function;
|
|||
import dev.peerat.parser.java.JavaElement;
|
||||
import dev.peerat.parser.java.Variable;
|
||||
import dev.peerat.parser.java.element.BaseElementTests;
|
||||
import dev.peerat.parser.java.value.StaticValue;
|
||||
|
||||
public class VariableInMethod extends BaseElementTests{
|
||||
|
||||
|
@ -60,7 +61,7 @@ public class VariableInMethod extends BaseElementTests{
|
|||
assertEquals(0, variable.getModifier());
|
||||
assertEquals("int", variable.getType().getValue());
|
||||
assertEquals("i", variable.getName().getValue());
|
||||
assertEquals("4", variable.getValue().getToken().getValue());
|
||||
assertEquals("4", ((StaticValue)variable.getValue()).getToken().getValue());
|
||||
});
|
||||
|
||||
register(
|
||||
|
@ -84,7 +85,7 @@ public class VariableInMethod extends BaseElementTests{
|
|||
assertEquals(0, variable.getModifier());
|
||||
assertEquals("int", variable.getType().getValue());
|
||||
assertEquals("i", variable.getName().getValue());
|
||||
assertEquals("4", variable.getValue().getToken().getValue());
|
||||
assertEquals("4", ((StaticValue)variable.getValue()).getToken().getValue());
|
||||
|
||||
variable = checkVariable(elements.get(1));
|
||||
assertEquals(0, variable.getModifier());
|
||||
|
@ -114,13 +115,13 @@ public class VariableInMethod extends BaseElementTests{
|
|||
assertEquals(0, variable.getModifier());
|
||||
assertEquals("int", variable.getType().getValue());
|
||||
assertEquals("i", variable.getName().getValue());
|
||||
assertEquals("4", variable.getValue().getToken().getValue());
|
||||
assertEquals("4", ((StaticValue)variable.getValue()).getToken().getValue());
|
||||
|
||||
variable = checkVariable(elements.get(1));
|
||||
assertEquals(0, variable.getModifier());
|
||||
assertEquals("int", variable.getType().getValue());
|
||||
assertEquals("j", variable.getName().getValue());
|
||||
assertEquals("6", variable.getValue().getToken().getValue());
|
||||
assertEquals("6", ((StaticValue)variable.getValue()).getToken().getValue());
|
||||
});
|
||||
|
||||
register(
|
||||
|
@ -145,13 +146,13 @@ public class VariableInMethod extends BaseElementTests{
|
|||
assertEquals(0, variable.getModifier());
|
||||
assertEquals("int", variable.getType().getValue());
|
||||
assertEquals("i", variable.getName().getValue());
|
||||
assertEquals("4", variable.getValue().getToken().getValue());
|
||||
assertEquals("4", ((StaticValue)variable.getValue()).getToken().getValue());
|
||||
|
||||
variable = checkVariable(elements.get(1));
|
||||
assertEquals(0, variable.getModifier());
|
||||
assertEquals("int", variable.getType().getValue());
|
||||
assertEquals("j", variable.getName().getValue());
|
||||
assertEquals("6", variable.getValue().getToken().getValue());
|
||||
assertEquals("6", ((StaticValue)variable.getValue()).getToken().getValue());
|
||||
|
||||
variable = checkVariable(elements.get(2));
|
||||
assertEquals(0, variable.getModifier());
|
||||
|
|
Loading…
Add table
Reference in a new issue