View Javadoc

1   ////////////////////////////////////////////////////////////////////////////////
2   // MillScript: an Open Spice interpreter and batch website creation tool
3   // Copyright (C) 2001-2004 Open World Ltd
4   //
5   // This file is part of MillScript.
6   //
7   // MillScript is free software; you can redistribute it and/or modify it under
8   // the terms of the GNU General Public License as published by the Free
9   // Software Foundation; either version 2 of the License, or (at your option)
10  // any later version.
11  //
12  // MillScript is distributed in the hope that it will be useful, but WITHOUT
13  // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14  // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
15  // more details.
16  //
17  // You should have received a copy of the GNU General Public License along with
18  // MillScript; if not, write to the Free Software Foundation, Inc., 59 Temple
19  // Place, Suite 330, Boston, MA  02111-1307  USA
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  }