summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/elements/DependantRuleReference.java
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-08 19:06:14 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-08 19:06:14 -0300
commit33a165f0b0055d2bdf9a1fcaa639b31a7f87d9a6 (patch)
treeb208a7cd5b3c73ac13ba63a71b32059b90eb3275 /src/main/java/bjc/rgens/parser/elements/DependantRuleReference.java
parent44a8d9d2d56a311293ec86ea40df7126748300a1 (diff)
Major refactoring
A major refactoring to the internals of how things work. I believe that nothing is broken
Diffstat (limited to 'src/main/java/bjc/rgens/parser/elements/DependantRuleReference.java')
-rw-r--r--src/main/java/bjc/rgens/parser/elements/DependantRuleReference.java48
1 files changed, 0 insertions, 48 deletions
diff --git a/src/main/java/bjc/rgens/parser/elements/DependantRuleReference.java b/src/main/java/bjc/rgens/parser/elements/DependantRuleReference.java
deleted file mode 100644
index 5eccf8e..0000000
--- a/src/main/java/bjc/rgens/parser/elements/DependantRuleReference.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package bjc.rgens.parser.elements;
-
-import bjc.rgens.parser.GrammarException;
-import bjc.rgens.parser.GenerationState;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class DependantRuleReference extends RuleCaseElement {
- private static Pattern NAMEVAR_PATTERN = Pattern.compile("\\$(\\w+)");
-
- public DependantRuleReference(String vl) {
- super(vl, ReferenceType.DEPENDENT);
- }
-
- @Override
- public void generate(GenerationState state) {
- String refBody = val.substring(1, val.length() - 1);
-
- /* Handle dependent rule names. */
- StringBuffer nameBuffer = new StringBuffer();
-
- Matcher nameMatcher = NAMEVAR_PATTERN.matcher(refBody);
-
- while (nameMatcher.find()) {
- String var = nameMatcher.group(1);
-
- if (!state.vars.containsKey(var)) {
- String msg = String.format("No variable '%s' defined", var);
- throw new GrammarException(msg);
- }
-
- String name = state.vars.get(var);
-
- if (name.contains(" ")) {
- throw new GrammarException("Variables substituted into names cannot contain spaces");
- } else if (name.equals("")) {
- throw new GrammarException("Variables substituted into names cannot be empty");
- }
-
- nameMatcher.appendReplacement(nameBuffer, name);
- }
-
- nameMatcher.appendTail(nameBuffer);
-
- doGenerate(String.format("[%s]", nameBuffer.toString()), state);
- }
-}