From 899efcc5442804e312b6d98aa248ac3601da06d3 Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Mon, 4 Jun 2018 16:49:22 -0300 Subject: Update --- .../java/bjc/rgens/parser/elements/CaseElement.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src/main/java/bjc/rgens/parser/elements') 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); } } -- cgit v1.2.3