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.expr;
22  
23  import org.millscript.millscript.action.ConstAction;
24  import org.millscript.millscript.vm.CompilerState;
25  
26  /**
27   * This class implements a constant expression. A constant expression always
28   * returns the same single result. As the returned result is an object, it is
29   * possible it could be modified. e.g. adding/changing/removing keys in a map.
30   *
31   * @see ConstAction
32   */
33  public final class ConstantExpr extends Expr< ConstAction > implements OneResult {
34  
35      /**
36       * The constant value.
37       */
38      private Object value;
39  
40      /**
41       * Creates a new constant expression for the specified object.
42       *
43       * @param   v   the value for this constant expression
44       */
45      public ConstantExpr( final Object v ) {
46          value = v;
47      }
48  
49      /**
50       * @see org.millscript.millscript.expr.Expr#compileIt()
51       */
52      @Override
53      public ConstAction compileIt() {
54          return new ConstAction( value );
55      }
56  
57      /**
58       * Returns this constant expressions value.
59       *
60       * @return  this constant expressions value
61       */
62      public Object getValue() {
63          return value;
64      }
65  
66      /**
67       * @see org.millscript.millscript.expr.Expr#resolve(org.millscript.millscript.vm.CompilerState)
68       */
69      @Override
70      public void resolve( final CompilerState state ) {
71      }
72  
73      /**
74       * @see org.millscript.millscript.expr.Expr#show(int)
75       */
76      @Override
77      public void show( final int n ) {
78          showClass( n );
79          indent( n + 1, value.toString() );
80      }
81  
82  }