summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/elements/CaseElement.java
diff options
context:
space:
mode:
authorBen Culkin <scorpress@gmail.com>2020-10-06 19:16:26 -0400
committerBen Culkin <scorpress@gmail.com>2020-10-06 19:16:26 -0400
commite9e0ca7bfe722375e7ccb25d2bafbe395b6c6a59 (patch)
tree8e8e556724683d4d10d7da1f3e85705a50ae33c6 /src/main/java/bjc/rgens/parser/elements/CaseElement.java
parenta3ea557c0b7204f56b1499687cc7f82c5b1677a5 (diff)
Info cleanup
Diffstat (limited to 'src/main/java/bjc/rgens/parser/elements/CaseElement.java')
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/elements/CaseElement.java63
1 files changed, 39 insertions, 24 deletions
diff --git a/src/main/java/bjc/rgens/parser/elements/CaseElement.java b/src/main/java/bjc/rgens/parser/elements/CaseElement.java
index 76b4efe..9fd565d 100755
--- a/src/main/java/bjc/rgens/parser/elements/CaseElement.java
+++ b/src/main/java/bjc/rgens/parser/elements/CaseElement.java
@@ -40,6 +40,9 @@ public abstract class CaseElement {
/** The type of this element. */
public boolean spacing;
+ /**
+ * Create a new case element.
+ */
protected CaseElement() {
this(true);
}
@@ -47,8 +50,8 @@ public abstract class CaseElement {
/**
* Create a new case element.
*
- * @param typ
- * The type of this element.
+ * @param spacing
+ * Whether or not to allow spacing.
*/
protected CaseElement(boolean spacing) {
this.spacing = spacing;
@@ -58,7 +61,7 @@ public abstract class CaseElement {
* Generate this case element.
*
* @param state
- * The current state of generation.
+ * The current state of generation.
*/
public abstract void generate(GenerationState state);
@@ -66,7 +69,7 @@ public abstract class CaseElement {
* Create a case element from a string.
*
* @param csepart
- * The string to convert.
+ * The string to convert.
*
* @return A case element representing the string.
*/
@@ -85,27 +88,31 @@ public abstract class CaseElement {
String specialBody = csepart.substring(1, csepart.length() - 1);
if (specialBody.matches("\\S+:\\S=\\S+")) {
- String[] parts = LevelSplitter.def.levelSplit(specialBody, "=").toArray(new String[0]);
+ String[] parts = LevelSplitter.def.levelSplit(specialBody, "=")
+ .toArray(new String[0]);
- if(parts.length != 2) {
- throw new GrammarException("Colon variables must have a name and a definition");
+ if (parts.length != 2) {
+ throw new GrammarException(
+ "Colon variables must have a name and a definition");
}
String varName = parts[0];
char op = varName.charAt(varName.length() - 1);
- trace("Colon definition w/ op %d", (int)op);
+ trace("Colon definition w/ op %d", (int) op);
// Remove the colon, plus any tacked on operator
varName = varName.substring(0, varName.length() - 2);
return VariableDefCaseElement.parseVariable(varName, parts[1], op, true);
} else if (specialBody.matches("\\S+:=\\S+")) {
- String[] parts = LevelSplitter.def.levelSplit(specialBody, "=").toArray(new String[0]);
+ String[] parts = LevelSplitter.def.levelSplit(specialBody, "=")
+ .toArray(new String[0]);
- if(parts.length != 2) {
- throw new GrammarException("Colon variables must have a name and a definition");
+ if (parts.length != 2) {
+ throw new GrammarException(
+ "Colon variables must have a name and a definition");
}
String varName = parts[0];
@@ -114,41 +121,49 @@ public abstract class CaseElement {
return VariableDefCaseElement.parseVariable(varName, parts[1], ' ', true);
} else if (specialBody.matches("\\S+=\\S+")) {
- String[] parts = LevelSplitter.def.levelSplit(specialBody, "=").toArray(new String[0]);
- if(parts.length != 2) {
- throw new GrammarException("Variables must have a name and a definition");
+ String[] parts = LevelSplitter.def.levelSplit(specialBody, "=")
+ .toArray(new String[0]);
+ if (parts.length != 2) {
+ throw new GrammarException(
+ "Variables must have a name and a definition");
}
// Non-colon variables can't take an operator
- return VariableDefCaseElement.parseVariable(parts[0], parts[1], (char)0, false);
+ return VariableDefCaseElement.parseVariable(parts[0], parts[1], (char) 0,
+ false);
} else if (specialBody.matches("empty")) {
/* Literal blank, for empty cases. */
return new BlankCaseElement();
} else {
- throw new IllegalArgumentException(String.format("Unknown special case part '%s'", specialBody));
+ throw new IllegalArgumentException(
+ String.format("Unknown special case part '%s'", specialBody));
}
} else if (csepart.matches("\\[\\S+\\]")) {
String rawCase = csepart.substring(1, csepart.length() - 1);
if (rawCase.matches("\\d+\\.{2}\\d+")) {
- int firstNum = Integer.parseInt(rawCase.substring(0, rawCase.indexOf('.')));
- int secondNum = Integer.parseInt(rawCase.substring(rawCase.lastIndexOf('.') + 1));
+ int firstNum
+ = Integer.parseInt(rawCase.substring(0, rawCase.indexOf('.')));
+ int secondNum = Integer
+ .parseInt(rawCase.substring(rawCase.lastIndexOf('.') + 1));
return new RangeCaseElement(firstNum, secondNum);
- } else if(rawCase.contains("||")) {
- String[] elms = LevelSplitter.def.levelSplit(rawCase, "||").toArray(new String[0]);
+ } else if (rawCase.contains("||")) {
+ String[] elms = LevelSplitter.def.levelSplit(rawCase, "||")
+ .toArray(new String[0]);
return new InlineRuleCaseElement(elms);
- } else if(rawCase.contains("|")) {
+ } else if (rawCase.contains("|")) {
throw new GrammarException("Inline rule using | found, they use || now");
- // String[] elms = LevelSplitter.def.levelSplit(rawCase, "|").toArray(new String[0]);
+ // String[] elms = LevelSplitter.def.levelSplit(rawCase, "|").toArray(new
+ // String[0]);
// return new InlineRuleCaseElement(elms);
} else {
return new RuleCaseElement(rawCase);
}
- } else if(csepart.startsWith("%") && !csepart.equals("%")) {
- return new RuleCaseElement(csepart);
+ } else if (csepart.startsWith("%") && !csepart.equals("%")) {
+ return new RuleCaseElement(csepart);
} else {
return new LiteralCaseElement(csepart);
}