Skip to content

Method: SkriptNode(AbstractNode)

1: package pruefskript.parser.nodes;
2:
3: import basic.PruefskriptConstants;
4: import pruefskript.CommunicationManager;
5: import pruefskript.parser.exceptions.CheckScriptException;
6: import pruefskript.parser.exceptions.WrongNodeException;
7: import pruefskript.parser.values.AbstractReturnValue;
8: import pruefskript.parser.values.VoidValue;
9:
10: /**
11: *
12: * @author Phil
13: *
14: */
15: public class SkriptNode extends AbstractUnaryOperationNode {
16:         /**
17:          *
18:          * @param mySkript
19:          * AbstractNode
20:          */
21:         public SkriptNode(final AbstractNode mySkript) {
22:                 super(mySkript);
23:         }
24:
25:         @Override
26:         public String toString() {
27:                 return PruefskriptConstants.SKRIPTTITLE + PruefskriptConstants.BRACKET_OPEN
28:                                 + super.toString() + PruefskriptConstants.BRACKET_CLOSE;
29:         }
30:
31:         @Override
32:         public boolean equals(final Object obj) {
33:                 return super.equals(obj) && obj instanceof SkriptNode;
34:
35:         }
36:
37:         @Override
38:         public int hashCode() {
39:                 return super.hashCode() + PruefskriptConstants.SCRIPTNODE_HASHCODE;
40:         }
41:
42:         /**
43:          * Der Operant wird ausgewertet und wenn er den Nichts-Wert hat, wird dieser zurueckgegeben.
44:          * Ansosnten wird eine Exception geworfen.
45:          */
46:         @Override
47:         public VoidValue interpret(final CommunicationManager mgr) throws CheckScriptException {
48:                 final AbstractReturnValue op = this.getOperand().interpret(mgr);
49:                 if (op.isVoidValue()) {
50:                         return op.toVoidValue();
51:                 } else {
52:                         throw new WrongNodeException(PruefskriptConstants.UNEXPECTED_VOID_OPERATION);
53:                 }
54:         }
55:
56: }