summaryrefslogtreecommitdiff
path: root/RGens/src/main/java/bjc/rgens/newparser/Rule.java
blob: c479c8761c9b630adae68780c22c708a0e117a9b (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
package bjc.rgens.newparser;

import bjc.utils.funcdata.FunctionalList;
import bjc.utils.funcdata.IList;

/**
 * A rule in a randomized grammar.
 * 
 * @author EVE
 *
 */
public class Rule {
	/**
	 * The name of this grammar rule.
	 */
	public final String ruleName;

	private IList<RuleCase> ruleCases;

	/**
	 * Create a new grammar rule.
	 * 
	 * @param ruleName
	 *                The name of the grammar rule.
	 */
	public Rule(String ruleName) {
		this.ruleName = ruleName;

		ruleCases = new FunctionalList<>();
	}

	/**
	 * Adds a case to the rule.
	 * 
	 * @param cse
	 *                The case to add.
	 */
	public void addCase(RuleCase cse) {
		ruleCases.add(cse);
	}

	/**
	 * Get a random case from this rule.
	 * 
	 * @return A random case from this rule.
	 */
	public RuleCase getCase() {
		return ruleCases.randItem();
	}
}