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 simple conditional action for an <code>if</code>
27 * statement. This class handles the case where there is a predicate action and
28 * an action to execute if the predicate evaluates to <code>true</code>.
29 *
30 * @see org.millscript.millscript.syntax.ConditionalSyntax
31 * @see org.millscript.millscript.expr.If2Expr
32 */
33 public final class If2Action extends Action {
34
35 /**
36 * The predicate action, which is evaluated to a <code>true</code> or
37 * <code>false</code> value.
38 */
39 private Action pred;
40
41 /**
42 * The action to be evaluated if the predicate action evaluates to
43 * <code>true</code>.
44 */
45 private Action ifso;
46
47 /**
48 * Constructs a new if action for the specified predicate and body actions.
49 *
50 * @param a the predicate action
51 * @param b the body action
52 */
53 public If2Action( final Action a, final Action b ) {
54 this.pred = a;
55 this.ifso = b;
56 }
57
58 /**
59 * @see org.millscript.millscript.action.Action#action(org.millscript.millscript.vm.Machine)
60 */
61 @Override
62 public void action( final Machine mc ) {
63 if ( pred.predAct( mc ) ) {
64 ifso.act( mc );
65 }
66 }
67
68 }