summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/elements/CaseElement.java
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-04 16:49:22 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-04 16:49:22 -0300
commit899efcc5442804e312b6d98aa248ac3601da06d3 (patch)
treebcab461c54260db7737db56b20661a9377e403cd /src/main/java/bjc/rgens/parser/elements/CaseElement.java
parent3b760ca916c6a88265e348d77ee1f6497dace0a4 (diff)
Update
Diffstat (limited to 'src/main/java/bjc/rgens/parser/elements/CaseElement.java')
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/elements/CaseElement.java19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/main/java/bjc/rgens/parser/elements/CaseElement.java b/src/main/java/bjc/rgens/parser/elements/CaseElement.java
index f960c31..8f3a8d4 100755
--- a/src/main/java/bjc/rgens/parser/elements/CaseElement.java
+++ b/src/main/java/bjc/rgens/parser/elements/CaseElement.java
@@ -118,7 +118,6 @@ public abstract class CaseElement {
} else if (specialBody.matches("empty")) {
/* Literal blank, for empty cases. */
return new BlankCaseElement();
- } else if (specialBody.contains("|")) {
} else {
throw new IllegalArgumentException(String.format("Unknown special case part '%s'", specialBody));
}
@@ -131,7 +130,15 @@ public abstract class CaseElement {
return new RangeCaseElement(firstNum, secondNum);
} else if(rawCase.contains("|")) {
- return new InlineRuleCaseElement(specialBody.split("|"));
+ String[] elms = rawCase.split("\\|");
+
+ System.err.printf("\tTRACE: Split inline cases %s to ", rawCase);
+ for(String elm : elms) {
+ System.err.printf("%s, ", elm);
+ }
+ System.err.println();
+
+ return new InlineRuleCaseElement(elms);
} else if(csepart.contains("$")) {
/*
* @NOTE
@@ -147,7 +154,13 @@ public abstract class CaseElement {
} else {
return new NormalRuleReference(csepart);
}
- } else {
+ } else if(csepart.startsWith("%")) {
+ String rName = String.format("[%s]", csepart.substring(1));
+
+ System.err.printf("\tTRACE: short ref to %s (%s)\n", rName, csepart);
+
+ return new NormalRuleReference(rName);
+ } else{
return new LiteralCaseElement(csepart);
}
}