diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-05 12:12:08 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-05 12:12:08 -0300 |
| commit | eac274292f7053560d0f087acc182a5fcd86b162 (patch) | |
| tree | 00364fb0f4a50402ff2c18fe91446e4ec74ca147 /src/main/java/bjc | |
| parent | bb5d2256ba052af13a3d50f150b78c5762840449 (diff) | |
Minor bug-fixes
Diffstat (limited to 'src/main/java/bjc')
3 files changed, 18 insertions, 12 deletions
diff --git a/src/main/java/bjc/rgens/parser/RGrammarBuilder.java b/src/main/java/bjc/rgens/parser/RGrammarBuilder.java index 59f3a4c..453be05 100755 --- a/src/main/java/bjc/rgens/parser/RGrammarBuilder.java +++ b/src/main/java/bjc/rgens/parser/RGrammarBuilder.java @@ -272,7 +272,7 @@ public class RGrammarBuilder { newCaseList.add(new Pair<>(cse.getLeft(), new FlatRuleCase(cse.getRight().getElements()))); } - System.err.printf("\tTRACE: Despacing %d cases of rule %s\n", caseList.getSize(), ruleName); + System.err.printf("\t\tTRACE: Despacing %d cases of rule %s\n", caseList.getSize(), ruleName); rules.get(ruleName).replaceCases(newCaseList); } @@ -395,7 +395,7 @@ public class RGrammarBuilder { } for(List<T> permute : ListUtils.permuteList(stor)) { - System.err.printf("\tTRACE: generated permute "); + System.err.printf("\t\tTRACE: generated permute "); for(T elm : permute) { System.err.printf("%s ", elm); } 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 { diff --git a/src/main/java/bjc/rgens/parser/elements/RuleVariableCaseElement.java b/src/main/java/bjc/rgens/parser/elements/RuleVariableCaseElement.java index 55a1c1e..d4c677b 100644 --- a/src/main/java/bjc/rgens/parser/elements/RuleVariableCaseElement.java +++ b/src/main/java/bjc/rgens/parser/elements/RuleVariableCaseElement.java @@ -42,5 +42,11 @@ public class RuleVariableCaseElement extends VariableCaseElement { } state.rlVars.put(varName, new Pair<>(grm, rl)); + + if(exhaust) { + System.err.printf("\t\tTRACE: Defined exhausted rulevar '%s' ('%s')\n", varName, varDef); + } else { + System.err.printf("\t\tTRACE: Defined rulevar '%s' ('%s')\n", varName, varDef); + } } } |
