diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-08 19:06:14 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-08 19:06:14 -0300 |
| commit | 33a165f0b0055d2bdf9a1fcaa639b31a7f87d9a6 (patch) | |
| tree | b208a7cd5b3c73ac13ba63a71b32059b90eb3275 /src/main/java/bjc/rgens/parser/elements/DependantRuleReference.java | |
| parent | 44a8d9d2d56a311293ec86ea40df7126748300a1 (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.java | 48 |
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); - } -} |
