From eac274292f7053560d0f087acc182a5fcd86b162 Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Tue, 5 Jun 2018 12:12:08 -0300 Subject: Minor bug-fixes --- .../java/bjc/rgens/parser/elements/CaseElement.java | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src/main/java/bjc/rgens/parser/elements/CaseElement.java') 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 { -- cgit v1.2.3