diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-10-27 12:49:38 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-10-27 12:49:38 -0300 |
| commit | 82360408049657d6865faf0a67fdeabe6935f19f (patch) | |
| tree | 27e87b5504b332b3677138368d1552474c35e118 /RGens | |
| parent | ca37dcd305e3d5b322b0e502e9ebd83cdc33b990 (diff) | |
Add up-level references to avoid local rules shadowing global ones
Diffstat (limited to 'RGens')
| -rw-r--r-- | RGens/src/main/java/bjc/rgens/newparser/RGrammar.java | 8 |
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); |
