ReturnOperation in parent
This commit is contained in:
parent
6b1ce3a1f4
commit
c768eb2c63
1 changed files with 14 additions and 3 deletions
|
@ -23,8 +23,10 @@ import dev.peerat.parser.TokenValidator;
|
||||||
import dev.peerat.parser.Tokenizer;
|
import dev.peerat.parser.Tokenizer;
|
||||||
import dev.peerat.parser.java.Annotation.AnnotableBuffer;
|
import dev.peerat.parser.java.Annotation.AnnotableBuffer;
|
||||||
import dev.peerat.parser.java.Function.FunctionContainer;
|
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.BiValue;
|
||||||
import dev.peerat.parser.java.Variable.VariableContainer;
|
import dev.peerat.parser.java.Variable.VariableContainer;
|
||||||
|
import dev.peerat.parser.java.operation.ReturnOperation;
|
||||||
import dev.peerat.parser.state.BuilderStateTree;
|
import dev.peerat.parser.state.BuilderStateTree;
|
||||||
import dev.peerat.parser.state.InitialStateTree;
|
import dev.peerat.parser.state.InitialStateTree;
|
||||||
import dev.peerat.parser.state.RedirectStateTree;
|
import dev.peerat.parser.state.RedirectStateTree;
|
||||||
|
@ -555,11 +557,20 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
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);
|
||||||
|
|
||||||
StateTree<JavaElement> operation_return = operation.then((validator) -> validator.validate((token) -> token.getValue().equals("return")));
|
StateTree<JavaElement> operation_return = operation.then((validator) -> validator.validate((token) -> token.getValue().equals("return")));
|
||||||
operation_return.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)))
|
operation_return.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(local.get())))
|
||||||
.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
|
.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
|
||||||
.end((a,b) -> a);
|
.end((parent,bag) -> {
|
||||||
|
ReturnOperation op = new ReturnOperation(bag.get());
|
||||||
|
if(parent instanceof OperationContainer) ((OperationContainer)parent).addOperation(op);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
operation_return.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
|
operation_return.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
|
||||||
.end((a,b) -> a);
|
.end((parent,bag) -> {
|
||||||
|
ReturnOperation op = new ReturnOperation(bag.get());
|
||||||
|
if(parent instanceof OperationContainer) ((OperationContainer)parent).addOperation(op);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("throw")))
|
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("throw")))
|
||||||
.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)))
|
.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)))
|
||||||
.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
|
.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
|
||||||
|
|
Loading…
Add table
Reference in a new issue