From 0faa5175b6f0de8835ed514615ac64135f406b29 Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Tue, 29 May 2018 15:35:02 -0300 Subject: Move files out of folder --- src/main/java/bjc/rgens/parser/RuleCase.java | 88 ++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/main/java/bjc/rgens/parser/RuleCase.java (limited to 'src/main/java/bjc/rgens/parser/RuleCase.java') diff --git a/src/main/java/bjc/rgens/parser/RuleCase.java b/src/main/java/bjc/rgens/parser/RuleCase.java new file mode 100644 index 0000000..9c0a856 --- /dev/null +++ b/src/main/java/bjc/rgens/parser/RuleCase.java @@ -0,0 +1,88 @@ +package bjc.rgens.parser; + +import bjc.rgens.parser.elements.CaseElement; +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