From e279644fc59f46916c20b0b4f941fd37b4f07675 Mon Sep 17 00:00:00 2001 From: bjculkin Date: Tue, 21 Mar 2017 14:04:17 -0400 Subject: Finish basic implementation This finishes a basic implementation. It now handles literal strings and rule references, allowing it to handle basic grammars. --- .../main/java/bjc/rgens/newparser/RuleCase.java | 95 ++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 RGens/src/main/java/bjc/rgens/newparser/RuleCase.java (limited to 'RGens/src/main/java/bjc/rgens/newparser/RuleCase.java') diff --git a/RGens/src/main/java/bjc/rgens/newparser/RuleCase.java b/RGens/src/main/java/bjc/rgens/newparser/RuleCase.java new file mode 100644 index 0000000..e919cb8 --- /dev/null +++ b/RGens/src/main/java/bjc/rgens/newparser/RuleCase.java @@ -0,0 +1,95 @@ +package bjc.rgens.newparser; + +import bjc.utils.funcdata.IList; + +/** + * 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 elementList. + */ + NORMAL; + } + + /** + * The type of this case. + */ + public final CaseType type; + + /** + * The list of element values for this case. + * + *

Used For

+ *
+ *
NORMAL
+ *
Used as the list of elementList the rule is composed of.
+ *
+ */ + private IList elementList; + + /** + * Create a new case of the specified type. + * + * @param typ + * The type of case to create. + * + * @throws IllegalArgumentException + * If the type requires parameters. + */ + public RuleCase(CaseType typ) { + switch(typ) { + case NORMAL: + throw new IllegalArgumentException("This type requires an element list parameter"); + default: + break; + } + + 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) { + switch(typ) { + case NORMAL: + break; + default: + throw new IllegalArgumentException("This type doesn't have a element list parameter"); + } + + type = typ; + + 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; + } +} \ No newline at end of file -- cgit v1.2.3