blob: 3d15e8c263ed4e3f5da8632ad174d17b9017a8a9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
package bjc.rgens.parser.elements;
import bjc.rgens.parser.GenerationState;
/**
* Case element which is generated one or more times.
*
* @author Ben Culkin
*
*/
public class SerialCaseElement extends CaseElement {
/**
* The case element to repeat.
*/
public final CaseElement rep;
/**
* The lower bound of times to repeat.
*/
public final int lower;
/**
* The upper bound of times to repeat.
*/
public final int upper;
/**
* Create a new repeating case element.
*
* @param rep The case element to repeat.
* @param lower The lower bound of times to repeat.
* @param upper The upper bound of times to repeat.
*/
public SerialCaseElement(CaseElement rep, int lower, int upper) {
super(rep.spacing);
this.rep = rep;
this.lower = lower;
this.upper = upper;
}
@Override
public void generate(GenerationState state) {
int num = state.rnd.nextInt(upper - lower) + lower;
for(int i = 0; i < num; i++) {
rep.generate(state);
if(rep.spacing)
state.appendContents(" ");
}
}
}
|