From 6aa15e30fa75211964428e386b4b6b0f2c66dbc5 Mon Sep 17 00:00:00 2001 From: student Date: Thu, 29 Mar 2018 11:38:02 -0400 Subject: Rename package --- RGens/src/main/java/bjc/rgens/parser/RuleCase.java | 87 ++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 RGens/src/main/java/bjc/rgens/parser/RuleCase.java (limited to 'RGens/src/main/java/bjc/rgens/parser/RuleCase.java') diff --git a/RGens/src/main/java/bjc/rgens/parser/RuleCase.java b/RGens/src/main/java/bjc/rgens/parser/RuleCase.java new file mode 100644 index 0000000..764fa89 --- /dev/null +++ b/RGens/src/main/java/bjc/rgens/parser/RuleCase.java @@ -0,0 +1,87 @@ +package bjc.rgens.parser; + +import bjc.utils.funcdata.IList; + +/* + * @NOTE + * If at some point we add new case types, they should go into subclasses, + * not into this class. + */ +/** + * A case in a rule in a randomized grammar. + * + * @author EVE + */ +public class RuleCase { + /** + * The possible types of a case. + * + * @author EVE + */ + public static enum CaseType { + /** A normal case, composed from a list of elements. */ + NORMAL, + /** A case that doesn't insert spaces. */ + SPACEFLATTEN, + /** A case that applies a regex after generation. */ + REGEX + } + + /** The type of this case. */ + public final CaseType type; + + /** + * The list of element values for this case. + * + *

Used For

+ *
+ *
NORMAL, SPACEFLATTEN
+ *
Used as the list of elementList the rule is composed of.
+ *
+ */ + protected IList elementList; + + protected RuleCase(CaseType typ) { + type = typ; + } + + /** + * Create a new case of the specified type that takes a element list + * parameter. + * + * @param typ + * The type of case to create. + * + * @param elements + * The element list parameter of the case. + * + * @throws IllegalArgumentException + * If this type doesn't take a element list parameter. + */ + public RuleCase(CaseType typ, IList elements) { + this(typ); + + switch (typ) { + case NORMAL: + case SPACEFLATTEN: + break; + case REGEX: + throw new IllegalArgumentException("This type requires an element list and a pattern"); + default: + throw new IllegalArgumentException("This type doesn't have a element list parameter"); + } + + elementList = elements; + } + + /** + * Get the element list value of this type. + * + * @return + * The element list value of this case, or null if this type + * doesn't have one. + */ + public IList getElements() { + return elementList; + } +} -- cgit v1.2.3