summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-05 12:12:08 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-05 12:12:08 -0300
commiteac274292f7053560d0f087acc182a5fcd86b162 (patch)
tree00364fb0f4a50402ff2c18fe91446e4ec74ca147 /src/main/java/bjc/rgens/parser
parentbb5d2256ba052af13a3d50f150b78c5762840449 (diff)
Minor bug-fixes
Diffstat (limited to 'src/main/java/bjc/rgens/parser')
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammarBuilder.java4
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/elements/CaseElement.java20
-rw-r--r--src/main/java/bjc/rgens/parser/elements/RuleVariableCaseElement.java6
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);
+ }
}
}