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.ExplodeAction;
24 import org.millscript.millscript.vm.CompilerState;
25
26 /**
27 * This class implements an explode expression.
28 *
29 * @see org.millscript.millscript.syntax.ExplodeSyntax
30 * @see ExplodeAction
31 */
32 public final class ExplodeExpr extends Expr< ExplodeAction > {
33
34 /**
35 * The body expression, whose result we want to explode.
36 */
37 private final Expr< ? > body;
38
39 /**
40 * Creates a new explode expression, to explode the specified body
41 * expression result.
42 *
43 * @param a the expression whose result to explode
44 */
45 public ExplodeExpr( final Expr< ? > a ) {
46 body = CheckExpr.make( a );
47 }
48
49 /**
50 * @see org.millscript.millscript.expr.Expr#compileIt()
51 */
52 @Override
53 public ExplodeAction compileIt() {
54 return new ExplodeAction( body.compile() );
55 }
56
57 /**
58 * @see org.millscript.millscript.expr.Expr#resolve(org.millscript.millscript.vm.CompilerState)
59 */
60 @Override
61 public void resolve( final CompilerState state ) {
62 this.body.resolve( state );
63 }
64
65 /**
66 * @see org.millscript.millscript.expr.Expr#showComponents(int)
67 */
68 @Override
69 void showComponents( final int n ) {
70 this.body.show( n );
71 }
72
73 }