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.expr.Ident;
24  import org.millscript.millscript.vm.Machine;
25  import org.millscript.millscript.vm.Ref;
26  
27  /**
28   * This class is the base of all actions, for a simple name expression, i.e.
29   * using a variable.
30   *
31   * @see org.millscript.millscript.expr.NameExpr
32   */
33  public abstract class PushAction extends Action {
34  
35      /**
36       * The ident for the variable we will be pushing onto the stack.
37       */
38      private Ident id;
39  
40      /**
41       * The reference for the value of the ident.
42       */
43      Ref ref;
44  
45      /**
46       * Constructs a new push action, to push the value of the specified ident.
47       *
48       * @param i the ident to push the value of
49       */
50      PushAction( final Ident i ) {
51          id = i;
52          ref = id.getRef();
53      }
54  
55      /**
56       * @see org.millscript.millscript.action.Action#action(org.millscript.millscript.vm.Machine)
57       */
58      @Override
59      public void action( final Machine mc ) {
60          mc.pushObject( ref.value );
61      }
62  
63  }