summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/elements/CaseElement.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bjc/rgens/parser/elements/CaseElement.java')
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/elements/CaseElement.java20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/main/java/bjc/rgens/parser/elements/CaseElement.java b/src/main/java/bjc/rgens/parser/elements/CaseElement.java
index 5263d03..d86d2d3 100755
--- a/src/main/java/bjc/rgens/parser/elements/CaseElement.java
+++ b/src/main/java/bjc/rgens/parser/elements/CaseElement.java
@@ -103,9 +103,9 @@ public abstract class CaseElement {
/* Trim $ */
return new LitVariableCaseElement(parts[0].substring(1), parts[1]);
- } else if (specialBody.matches("\\@\\S+=\\S+")) {
- /* Handle rule variable definitions. */
- String[] parts = specialBody.split("=");
+ } else if (specialBody.matches("\\@\\S+:=\\S+")) {
+ /* Handle exhaustible rule variable definitions. */
+ String[] parts = specialBody.split(":=");
if (parts.length != 2) {
String msg = "Rule variables must be a name and a definition, seperated by =";
@@ -114,9 +114,9 @@ public abstract class CaseElement {
}
/* Trim $ */
- return new RuleVariableCaseElement(parts[0].substring(1), parts[1], false);
- } else if (specialBody.matches("\\@\\S+:=\\S+")) {
- /* Handle exhaustible rule variable definitions. */
+ return new RuleVariableCaseElement(parts[0].substring(1), parts[1], true);
+ } else if (specialBody.matches("\\@\\S+=\\S+")) {
+ /* Handle rule variable definitions. */
String[] parts = specialBody.split("=");
if (parts.length != 2) {
@@ -126,7 +126,7 @@ public abstract class CaseElement {
}
/* Trim $ */
- return new RuleVariableCaseElement(parts[0].substring(1), parts[1], true);
+ return new RuleVariableCaseElement(parts[0].substring(1), parts[1], false);
} else if (specialBody.matches("empty")) {
/* Literal blank, for empty cases. */
return new BlankCaseElement();
@@ -144,7 +144,7 @@ public abstract class CaseElement {
} else if(rawCase.contains("|")) {
String[] elms = rawCase.split("\\|");
- System.err.printf("\tTRACE: Split inline cases %s to ", rawCase);
+ System.err.printf("\t\tTRACE: Split inline cases %s to ", rawCase);
for(String elm : elms) {
System.err.printf("%s, ", elm);
}
@@ -165,14 +165,14 @@ public abstract class CaseElement {
return new VariableRuleReference(csepart);
} else if(csepart.contains("@")) {
// Trim @
- return new RuleVarRefCaseElement(csepart.substring(1));
+ return new RuleVarRefCaseElement(rawCase.substring(1));
} else {
return new NormalRuleReference(csepart);
}
} else if(csepart.startsWith("%")) {
String rName = String.format("[%s]", csepart.substring(1));
- System.err.printf("\tTRACE: short ref to %s (%s)\n", rName, csepart);
+ System.err.printf("\t\tTRACE: short ref to %s (%s)\n", rName, csepart);
return new NormalRuleReference(rName);
} else {