summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-27 12:49:38 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-27 12:49:38 -0300
commit82360408049657d6865faf0a67fdeabe6935f19f (patch)
tree27e87b5504b332b3677138368d1552474c35e118
parentca37dcd305e3d5b322b0e502e9ebd83cdc33b990 (diff)
Add up-level references to avoid local rules shadowing global ones
-rw-r--r--RGens/src/main/java/bjc/rgens/newparser/RGrammar.java8
1 files changed, 7 insertions, 1 deletions
diff --git a/RGens/src/main/java/bjc/rgens/newparser/RGrammar.java b/RGens/src/main/java/bjc/rgens/newparser/RGrammar.java
index 0ac0a16..d3c3747 100644
--- a/RGens/src/main/java/bjc/rgens/newparser/RGrammar.java
+++ b/RGens/src/main/java/bjc/rgens/newparser/RGrammar.java
@@ -342,7 +342,13 @@ public class RGrammar {
}
}
- if (rules.containsKey(refersTo)) {
+ if(refersTo.startsWith("[^")) {
+ refersTo = "[" + refersTo.substring(2);
+
+ RGrammar dst = importRules.get(refersTo);
+
+ newState.contents.append(dst.generate(refersTo, state.rnd, state.vars));
+ } else if (rules.containsKey(refersTo)) {
RuleCase cse = rules.get(refersTo).getCase(state.rnd);
generateCase(cse, newState);