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.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 }