Add Throw, Continue, Break, If and Synchronized operations
This commit is contained in:
parent
d319163f60
commit
9137136ef7
1 changed files with 37 additions and 8 deletions
|
@ -26,7 +26,12 @@ import dev.peerat.parser.java.Function.FunctionContainer;
|
||||||
import dev.peerat.parser.java.Operation.OperationContainer;
|
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.BreakOperation;
|
||||||
|
import dev.peerat.parser.java.operation.ContinueOperation;
|
||||||
|
import dev.peerat.parser.java.operation.IfOperation;
|
||||||
import dev.peerat.parser.java.operation.ReturnOperation;
|
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.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;
|
||||||
|
@ -571,10 +576,16 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
if(parent instanceof OperationContainer) ((OperationContainer)parent).addOperation(op);
|
if(parent instanceof OperationContainer) ((OperationContainer)parent).addOperation(op);
|
||||||
return null;
|
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(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) -> {
|
||||||
|
ThrowOperation op = new ThrowOperation(bag.get());
|
||||||
|
if(parent instanceof OperationContainer) ((OperationContainer)parent).addOperation(op);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("do")))
|
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("do")))
|
||||||
.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
||||||
.end((a,b) -> a)
|
.end((a,b) -> a)
|
||||||
|
@ -627,15 +638,29 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
|
|
||||||
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("continue")))
|
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("continue")))
|
||||||
.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
|
.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
|
||||||
.end((a,b) -> a);
|
.end((parent,bag) -> {
|
||||||
|
ContinueOperation op = new ContinueOperation();
|
||||||
|
if(parent instanceof OperationContainer) ((OperationContainer)parent).addOperation(op);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("break")))
|
operation.then((validator) -> validator.validate((token) -> token.getValue().equals("break")))
|
||||||
.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
|
.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
|
||||||
.end((a,b) -> a);
|
.end((parent,bag) -> {
|
||||||
|
BreakOperation op = new BreakOperation();
|
||||||
|
if(parent instanceof OperationContainer) ((OperationContainer)parent).addOperation(op);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
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_container, (global, local) -> global.set(null)))
|
.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) -> {
|
||||||
|
IfOperation op = new IfOperation(bag.get());
|
||||||
|
if(parent instanceof OperationContainer) ((OperationContainer)parent).addOperation(op);
|
||||||
|
return op;
|
||||||
|
});
|
||||||
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("{")))
|
||||||
.end((a,b) -> a)
|
.end((a,b) -> a)
|
||||||
|
@ -736,10 +761,14 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
|
|
||||||
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_container, (global, local) -> global.set(null)))
|
.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(")")))
|
||||||
.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
||||||
.end((a,b) -> a)
|
.<JavaElement>end((parent,bag) -> {
|
||||||
|
SynchronizedOperation op = new SynchronizedOperation(bag.get());
|
||||||
|
if(parent instanceof OperationContainer) ((OperationContainer)parent).addOperation(op);
|
||||||
|
return op;
|
||||||
|
})
|
||||||
.multiple(function_container)
|
.multiple(function_container)
|
||||||
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}")))
|
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}")))
|
||||||
.end((a,b) -> a);
|
.end((a,b) -> a);
|
||||||
|
|
Loading…
Add table
Reference in a new issue