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