1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.millscript.millscript.action;
22
23 import org.millscript.millscript.vm.Machine;
24
25 /**
26 * This class represents a normal conditional action for an <code>if</code>
27 * statement. This class handles the case where there is a predicate action, an
28 * action to execute if the predicate evaluates to <code>true</code> and a
29 * different action to execute if the predicate evaluates to
30 * <code>false</code>.
31 *
32 * @see org.millscript.millscript.syntax.ConditionalSyntax
33 * @see org.millscript.millscript.expr.If3Expr
34 */
35 public final class If3Action extends Action {
36
37 /**
38 * The predicate action, which is evaluated to a <code>true</code> or
39 * <code>false</code> value.
40 */
41 private Action pred;
42
43 /**
44 * The action to be evaluated if the predicate action evaluates to
45 * <code>true</code>.
46 */
47 private Action ifso;
48
49 /**
50 * The action to be evaluated if the predicate action evaluates to
51 * <code>false</code>.
52 */
53 private Action ifnot;
54
55 /**
56 * Constructs a new if action for the specified predicate, true and false
57 * actions
58 *
59 * @param a the predicate action
60 * @param b the predicate is <code>true</code> action
61 * @param c the predicate is <code>false</code> action
62 */
63 public If3Action( final Action a, final Action b, final Action c ) {
64 this.pred = a;
65 this.ifso = b;
66 this.ifnot = c;
67 }
68
69 /**
70 * @see org.millscript.millscript.action.Action#action(org.millscript.millscript.vm.Machine)
71 */
72 @Override
73 public void action( final Machine mc ) {
74 if ( pred.predAct( mc ) ) {
75 ifso.act( mc );
76 } else {
77 ifnot.act( mc );
78 }
79 }
80
81 }