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.ForConditionWhereAction;
24 import org.millscript.millscript.vm.CompilerState;
25
26 /**
27 * This class represents a for loop where condition expression. A where
28 * condition does not lead to termination of the loop, it simply skips to the
29 * next loop iteration.
30 */
31 public final class ForConditionWhereExpr extends ForConditionExpr< ForConditionWhereAction > {
32
33 /**
34 * The where condition expression.
35 */
36 private final Expr< ? > whereExpr;
37
38 /**
39 * Constructs a new where condition expression, with the supplied condition
40 * expression.
41 *
42 * @param a the where condition expression
43 */
44 public ForConditionWhereExpr( final Expr< ? > a ) {
45
46 whereExpr = CheckExpr.make( a );
47 }
48
49 /**
50 * @see org.millscript.millscript.expr.Expr#compileIt()
51 */
52 @Override
53 public ForConditionWhereAction compileIt() {
54 return new ForConditionWhereAction( whereExpr.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.whereExpr.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.whereExpr.show( n );
71 }
72
73 }