From 33a165f0b0055d2bdf9a1fcaa639b31a7f87d9a6 Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Fri, 8 Jun 2018 19:06:14 -0300 Subject: Major refactoring A major refactoring to the internals of how things work. I believe that nothing is broken --- .../parser/elements/DependantRuleReference.java | 48 ---------------------- 1 file changed, 48 deletions(-) delete mode 100644 src/main/java/bjc/rgens/parser/elements/DependantRuleReference.java (limited to 'src/main/java/bjc/rgens/parser/elements/DependantRuleReference.java') 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); - } -} -- cgit v1.2.3