diff options
Diffstat (limited to 'src/main')
29 files changed, 166 insertions, 198 deletions
diff --git a/src/main/java/bjc/rgens/ZadronsPouch.java b/src/main/java/bjc/rgens/ZadronsPouch.java index 827d022..d274b18 100755 --- a/src/main/java/bjc/rgens/ZadronsPouch.java +++ b/src/main/java/bjc/rgens/ZadronsPouch.java @@ -1,8 +1,8 @@ package bjc.rgens; +import bjc.utils.funcdata.FunctionalList; import bjc.utils.funcdata.FunctionalStringTokenizer; import bjc.utils.funcdata.IList; -import bjc.utils.funcdata.FunctionalList; import bjc.utils.gen.RandomGrammar; /** diff --git a/src/main/java/bjc/rgens/parser/ConfigLoader.java b/src/main/java/bjc/rgens/parser/ConfigLoader.java index c282f8a..028d99e 100644 --- a/src/main/java/bjc/rgens/parser/ConfigLoader.java +++ b/src/main/java/bjc/rgens/parser/ConfigLoader.java @@ -1,5 +1,9 @@ package bjc.rgens.parser; +import static bjc.rgens.parser.RGrammarLogging.error; +import static bjc.rgens.parser.RGrammarLogging.info; +import static bjc.rgens.parser.RGrammarLogging.perf; + import bjc.utils.data.ITree; import bjc.utils.data.QueuedIterator; import bjc.utils.data.Tree; @@ -20,8 +24,8 @@ import java.nio.file.Paths; import java.util.Scanner; import bjc.rgens.parser.templates.GrammarTemplate; - -import static bjc.rgens.parser.RGrammarLogging.*; +import bjc.utils.funcutils.FileUtils; +import bjc.utils.ioutils.LevelSplitter; /** * Class that performs loading of grammar sets from config files. diff --git a/src/main/java/bjc/rgens/parser/FlatRuleCase.java b/src/main/java/bjc/rgens/parser/FlatRuleCase.java index ac6f554..3e5378e 100644 --- a/src/main/java/bjc/rgens/parser/FlatRuleCase.java +++ b/src/main/java/bjc/rgens/parser/FlatRuleCase.java @@ -1,6 +1,7 @@ package bjc.rgens.parser; import bjc.rgens.parser.elements.CaseElement; +import bjc.utils.funcdata.IList; import java.util.List; diff --git a/src/main/java/bjc/rgens/parser/GenerationState.java b/src/main/java/bjc/rgens/parser/GenerationState.java index 35d831d..ad2282c 100644 --- a/src/main/java/bjc/rgens/parser/GenerationState.java +++ b/src/main/java/bjc/rgens/parser/GenerationState.java @@ -1,18 +1,16 @@ package bjc.rgens.parser; -import bjc.utils.esodata.MapSet; -import bjc.utils.data.IPair; -import bjc.utils.data.Pair; -import bjc.utils.ioutils.ReportWriter; +import static bjc.rgens.parser.RGrammarLogging.warn; import java.io.IOException; import java.io.StringWriter; - import java.util.HashMap; import java.util.Map; import java.util.Random; -import static bjc.rgens.parser.RGrammarLogging.*; +import bjc.utils.esodata.MapSet; +import bjc.utils.ioutils.ReportWriter; + /* * The current state during generation. * @@ -39,28 +37,32 @@ public class GenerationState { /** * Create a new generation state. * - * @param cont - * The string being generated. + * @param rw + * The place to write the string. * * @param rand - * The RNG to use. + * The RNG to use. * * @param vs - * The variables to use. + * The variables to use. + * @param rvs + * The rule variables to use. + * @param gram + * The current grammar. */ - public GenerationState(ReportWriter rw, Random rand, Map<String, String> vs, - Map<String, Rule> rvs, RGrammar gram) { - vars = new MapSet<>(); + public GenerationState(ReportWriter rw, Random rand, Map<String, String> vs, Map<String, Rule> rvs, + RGrammar gram) { + vars = new MapSet<>(); rlVars = new MapSet<>(); contents = rw; - rnd = rand; + rnd = rand; vars.setPutMap(gram.name, vs); rlVars.setPutMap(gram.name, rvs); this.gram = gram; - + this.rules = gram.getRules(); this.importRules = gram.getImportRules(); } @@ -76,12 +78,12 @@ public class GenerationState { } public void swapGrammar(RGrammar gram) { - if(this.gram == gram) return; + if (this.gram == gram) return; this.gram = gram; rules = gram.getRules(); - + importRules = gram.getImportRules(); vars.setCreateMap(gram.name); @@ -109,63 +111,58 @@ public class GenerationState { * are imported, and which aren't */ public Rule findRule(String ruleName, boolean allowImports) { - if(rules.containsKey(ruleName)) { + if (rules.containsKey(ruleName)) { return rules.get(ruleName); } - if(allowImports) return findImport(ruleName); + if (allowImports) return findImport(ruleName); return null; } public Rule findImport(String ruleName) { - if(importRules.containsKey(ruleName)) { - return importRules.get(ruleName); + if (importRules.containsKey(ruleName)) { + return importRules.get(ruleName); } return null; } public void defineVar(String name, String val) { - if(vars.containsKey(name)) - warn("Shadowing variable %s with value %s (old value %s)", - name, val, vars.get(name)); + if (vars.containsKey(name)) + warn("Shadowing variable %s with value %s (old value %s)", name, val, vars.get(name)); else if (gram.autoVars.containsKey(name)) - warn("Shadowing autovariable %s with value %s (defn. %s)", - name, val, gram.autoVars.get(name)); + warn("Shadowing autovariable %s with value %s (defn. %s)", name, val, gram.autoVars.get(name)); vars.put(name, val); } public void defineRuleVar(String name, Rule rle) { - if(rlVars.containsKey(name)) - warn("Shadowing rule variable %s with value %s (old value %s)", - name, rlVars.get(name), rle); + if (rlVars.containsKey(name)) + warn("Shadowing rule variable %s with value %s (old value %s)", name, rlVars.get(name), rle); else if (gram.autoRlVars.containsKey(name)) - warn("Shadowing rule autovariable %s with value %s (defn. %s)", - name, rle, gram.autoRlVars.get(name)); + warn("Shadowing rule autovariable %s with value %s (defn. %s)", name, rle, + gram.autoRlVars.get(name)); rlVars.put(name, rle); } public String findVar(String name) { - if(!vars.containsKey(name)) - if(gram.autoVars.containsKey(name)) { - gram.autoVars.get(name).generate(this); - } else { - throw new GrammarException(String.format("Variable %s not defined", name)); - } + if (!vars.containsKey(name)) if (gram.autoVars.containsKey(name)) { + gram.autoVars.get(name).generate(this); + } else { + throw new GrammarException(String.format("Variable %s not defined", name)); + } return vars.get(name); } public Rule findRuleVar(String name) { - if(!rlVars.containsKey(name)) - if(gram.autoRlVars.containsKey(name)) { - gram.autoRlVars.get(name).generate(this); - } else { - throw new GrammarException(String.format("Rule variable %s not defined", name)); - } + if (!rlVars.containsKey(name)) if (gram.autoRlVars.containsKey(name)) { + gram.autoRlVars.get(name).generate(this); + } else { + throw new GrammarException(String.format("Rule variable %s not defined", name)); + } return rlVars.get(name); } diff --git a/src/main/java/bjc/rgens/parser/NormalRuleCase.java b/src/main/java/bjc/rgens/parser/NormalRuleCase.java index 8fca86d..dcb56cb 100644 --- a/src/main/java/bjc/rgens/parser/NormalRuleCase.java +++ b/src/main/java/bjc/rgens/parser/NormalRuleCase.java @@ -3,6 +3,7 @@ package bjc.rgens.parser; import java.util.List; import bjc.rgens.parser.elements.CaseElement; +import bjc.utils.funcdata.IList; public class NormalRuleCase extends RuleCase { public NormalRuleCase(List<CaseElement> elms) { diff --git a/src/main/java/bjc/rgens/parser/RGrammar.java b/src/main/java/bjc/rgens/parser/RGrammar.java index 018f2f0..5b2ae08 100755 --- a/src/main/java/bjc/rgens/parser/RGrammar.java +++ b/src/main/java/bjc/rgens/parser/RGrammar.java @@ -1,5 +1,7 @@ package bjc.rgens.parser; +import static bjc.utils.data.IPair.pair; + import bjc.utils.data.IPair; import bjc.utils.data.ITree; import bjc.utils.data.Pair; @@ -10,27 +12,23 @@ import bjc.utils.ioutils.ReportWriter; import bjc.rgens.parser.elements.*; import java.io.StringWriter; - -import java.util.Arrays; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Random; import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import org.apache.commons.text.similarity.LevenshteinDistance; +import bjc.utils.data.IPair; +import bjc.utils.ioutils.ReportWriter; import edu.gatech.gtri.bktree.BkTreeSearcher; -import edu.gatech.gtri.bktree.BkTreeSearcher.Match; import edu.gatech.gtri.bktree.Metric; import edu.gatech.gtri.bktree.MutableBkTree; -import static bjc.utils.data.IPair.pair; - /** * Represents a randomized grammar. * @@ -47,6 +45,7 @@ public class RGrammar { public boolean useBuiltinPostprocs = true; /* The max distance between possible alternate rules. */ + @SuppressWarnings("unused") private static final int MAX_DISTANCE = 6; /* The metric for the levenshtein distance. */ @@ -80,6 +79,7 @@ public class RGrammar { public Map<String, CaseElement> autoRlVars; /* The tree to use for finding rule suggestions. */ + @SuppressWarnings("unused") private BkTreeSearcher<String> ruleSearcher; static { @@ -231,7 +231,7 @@ public class RGrammar { Rule rl = state.findRule(fromRule, false); if(rl == null) - throw new GrammarException("Could not find rule " + rl.name); + throw new GrammarException("Could not find rule " + fromRule); rl.generate(state); diff --git a/src/main/java/bjc/rgens/parser/RGrammarBuilder.java b/src/main/java/bjc/rgens/parser/RGrammarBuilder.java index 358c6a1..7296801 100755 --- a/src/main/java/bjc/rgens/parser/RGrammarBuilder.java +++ b/src/main/java/bjc/rgens/parser/RGrammarBuilder.java @@ -1,8 +1,16 @@ package bjc.rgens.parser; -import bjc.rgens.parser.elements.CaseElement; -import bjc.rgens.parser.elements.VariableDefCaseElement; +import static bjc.rgens.parser.RGrammarLogging.trace; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import bjc.rgens.parser.elements.CaseElement; import bjc.utils.data.IPair; import bjc.utils.data.ITree; import bjc.utils.data.Pair; @@ -14,16 +22,6 @@ import bjc.utils.funcdata.IList; import bjc.utils.funcutils.ListUtils; import bjc.utils.funcutils.SetUtils; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.LinkedList; -import java.util.Map; -import java.util.Set; - -import static bjc.rgens.parser.RGrammarLogging.*; - /** * Construct randomized grammars piece by piece. * @@ -178,8 +176,8 @@ public class RGrammarBuilder { * @param ruleName * The rule to suffix. * - * @param suffix - * The suffix to add. + * @param suffixes + * The suffixes to add. * * @throws IllegalArgumentException * If the rule name is either invalid or not defined by this @@ -196,8 +194,8 @@ public class RGrammarBuilder { * @param ruleName * The rule to prefix. * - * @param prefix - * The prefix to add. + * @param prefixes + * The prefixes to add. * * @throws IllegalArgumentException * If the rule name is either invalid or not defined by this @@ -213,8 +211,8 @@ public class RGrammarBuilder { * @param ruleName * The rule to prefix and suffix. * - * @param prefix - * The prefix/suffix to add. + * @param prefixes + * The prefixes/suffixes to add. * * @throws IllegalArgumentException * If the rule name is either invalid or not defined by this diff --git a/src/main/java/bjc/rgens/parser/RGrammarFormatter.java b/src/main/java/bjc/rgens/parser/RGrammarFormatter.java index b4cb00e..822dc43 100755 --- a/src/main/java/bjc/rgens/parser/RGrammarFormatter.java +++ b/src/main/java/bjc/rgens/parser/RGrammarFormatter.java @@ -1,14 +1,13 @@ package bjc.rgens.parser; -import bjc.rgens.parser.elements.CaseElement; - -import bjc.utils.data.IPair; -import bjc.utils.funcdata.IList; - import java.util.HashSet; import java.util.Map; import java.util.Set; +import bjc.rgens.parser.elements.CaseElement; +import bjc.utils.data.IPair; +import bjc.utils.funcdata.IList; + /** * @TODO Ben Culkin 9/8/18 :GrammarFormatter * diff --git a/src/main/java/bjc/rgens/parser/RGrammarParser.java b/src/main/java/bjc/rgens/parser/RGrammarParser.java index dc4d82d..a1dce8a 100755 --- a/src/main/java/bjc/rgens/parser/RGrammarParser.java +++ b/src/main/java/bjc/rgens/parser/RGrammarParser.java @@ -1,5 +1,7 @@ package bjc.rgens.parser; +import static bjc.rgens.parser.RGrammarLogging.warn; + import bjc.rgens.parser.elements.*; import bjc.utils.data.IPair; @@ -29,8 +31,19 @@ import java.util.ArrayList; import java.util.List; import java.util.LinkedList; import java.util.HashMap; +import java.util.List; import java.util.Map; -import java.util.Set; + +import bjc.rgens.parser.RGrammarBuilder.AffixType; + +import bjc.utils.data.Pair; +import bjc.utils.funcdata.FunctionalList; +import bjc.utils.funcdata.IList; +import bjc.utils.funcutils.TriConsumer; +import bjc.utils.ioutils.LevelSplitter; +import bjc.utils.ioutils.blocks.Block; +import bjc.utils.ioutils.blocks.BlockReader; +import bjc.utils.ioutils.blocks.SimpleBlockReader; import static bjc.rgens.parser.RGrammarLogging.*; import static bjc.rgens.parser.RGrammarBuilder.AffixType; @@ -668,7 +681,7 @@ public class RGrammarParser { * as groupers breaks certain grammars. Maybe it can be used if * some sort of way to set which groupers to use is added? * - * List<String> cseList = StringUtils.levelSplit(cses.trim(), " "); + * List<String> cseList = LevelSplitter.def.levelSplit(cses.trim(), " "); * * return parseElementString(cseList.toArray(new String[0])); */ diff --git a/src/main/java/bjc/rgens/parser/RGrammarSet.java b/src/main/java/bjc/rgens/parser/RGrammarSet.java index 56ed1c8..ed09bdf 100755 --- a/src/main/java/bjc/rgens/parser/RGrammarSet.java +++ b/src/main/java/bjc/rgens/parser/RGrammarSet.java @@ -1,12 +1,12 @@ package bjc.rgens.parser; +import static bjc.rgens.parser.RGrammarLogging.debug; +import static bjc.rgens.parser.RGrammarLogging.warn; + import java.util.HashMap; import java.util.Map; -import java.util.TreeMap; import java.util.Set; -import static bjc.rgens.parser.RGrammarLogging.*; - /** * Represents a set of grammars that can share rules via exports. * diff --git a/src/main/java/bjc/rgens/parser/RGrammarTest.java b/src/main/java/bjc/rgens/parser/RGrammarTest.java index 36c87de..9559fd4 100755 --- a/src/main/java/bjc/rgens/parser/RGrammarTest.java +++ b/src/main/java/bjc/rgens/parser/RGrammarTest.java @@ -1,6 +1,7 @@ package bjc.rgens.parser; -import bjc.rgens.parser.templates.GrammarTemplate; +import static bjc.rgens.parser.RGrammarLogging.error; +import static bjc.rgens.parser.RGrammarLogging.perf; import bjc.utils.data.ITree; import bjc.utils.data.Tree; @@ -15,7 +16,7 @@ import java.nio.file.Paths; import java.util.Random; -import static bjc.rgens.parser.RGrammarLogging.*; +import bjc.rgens.parser.templates.GrammarTemplate; /** * Test for new grammar syntax. diff --git a/src/main/java/bjc/rgens/parser/RGrammars.java b/src/main/java/bjc/rgens/parser/RGrammars.java index 51d9fe9..b049731 100755 --- a/src/main/java/bjc/rgens/parser/RGrammars.java +++ b/src/main/java/bjc/rgens/parser/RGrammars.java @@ -1,8 +1,8 @@ package bjc.rgens.parser; import java.io.IOException; -import java.net.URISyntaxException; import java.net.URI; +import java.net.URISyntaxException; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Path; diff --git a/src/main/java/bjc/rgens/parser/RegexRuleCase.java b/src/main/java/bjc/rgens/parser/RegexRuleCase.java index 1712d57..4d42ed6 100755 --- a/src/main/java/bjc/rgens/parser/RegexRuleCase.java +++ b/src/main/java/bjc/rgens/parser/RegexRuleCase.java @@ -18,7 +18,7 @@ public class RegexRuleCase extends RuleCase { } public void generate(GenerationState state) { - + // TODO } public RegexRuleCase withElements(List<CaseElement> elements) { diff --git a/src/main/java/bjc/rgens/parser/Rule.java b/src/main/java/bjc/rgens/parser/Rule.java index 377da9e..15e9b5f 100755 --- a/src/main/java/bjc/rgens/parser/Rule.java +++ b/src/main/java/bjc/rgens/parser/Rule.java @@ -1,5 +1,8 @@ package bjc.rgens.parser; +import static bjc.rgens.parser.RGrammarLogging.fine; +import static bjc.utils.data.IPair.pair; + import bjc.utils.data.IPair; import bjc.utils.data.ITree; import bjc.utils.data.Tree; @@ -10,12 +13,12 @@ import bjc.utils.gen.WeightedRandom; import java.util.ArrayList; import java.util.List; import java.util.Random; - import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; -import static bjc.rgens.parser.RGrammarLogging.*; -import static bjc.utils.data.IPair.pair; +import bjc.utils.data.IPair; +import bjc.utils.funcdata.IList; +import bjc.utils.gen.WeightedRandom; /** * A rule in a randomized grammar. @@ -64,6 +67,7 @@ public class Rule { private int caseCount = 0; + @SuppressWarnings("unused") private int serial; private static int nextSerial = 0; diff --git a/src/main/java/bjc/rgens/parser/elements/BlankCaseElement.java b/src/main/java/bjc/rgens/parser/elements/BlankCaseElement.java index 66ff310..7229e92 100755 --- a/src/main/java/bjc/rgens/parser/elements/BlankCaseElement.java +++ b/src/main/java/bjc/rgens/parser/elements/BlankCaseElement.java @@ -1,7 +1,5 @@ package bjc.rgens.parser.elements; -import bjc.rgens.parser.GenerationState; - public class BlankCaseElement extends LiteralCaseElement { public BlankCaseElement() { super(""); diff --git a/src/main/java/bjc/rgens/parser/elements/CaseElement.java b/src/main/java/bjc/rgens/parser/elements/CaseElement.java index fa398e7..6c3bd2e 100755 --- a/src/main/java/bjc/rgens/parser/elements/CaseElement.java +++ b/src/main/java/bjc/rgens/parser/elements/CaseElement.java @@ -1,13 +1,10 @@ package bjc.rgens.parser.elements; -import bjc.utils.funcutils.StringUtils; +import static bjc.rgens.parser.RGrammarLogging.trace; import bjc.rgens.parser.GenerationState; import bjc.rgens.parser.GrammarException; - -import java.util.Arrays; - -import static bjc.rgens.parser.RGrammarLogging.*; +import bjc.utils.ioutils.LevelSplitter; /** * A element in a rule case. @@ -85,7 +82,7 @@ public abstract class CaseElement { String specialBody = csepart.substring(1, csepart.length() - 1); if (specialBody.matches("\\S+:\\S=\\S+")) { - String[] parts = StringUtils.levelSplit(specialBody, "=").toArray(new String[0]); + String[] parts = LevelSplitter.def.levelSplit(specialBody, "=").toArray(new String[0]); if(parts.length != 2) { throw new GrammarException("Colon variables must have a name and a definition"); @@ -102,7 +99,7 @@ public abstract class CaseElement { return VariableDefCaseElement.parseVariable(varName, parts[1], op, true); } else if (specialBody.matches("\\S+:=\\S+")) { - String[] parts = StringUtils.levelSplit(specialBody, "=").toArray(new String[0]); + String[] parts = LevelSplitter.def.levelSplit(specialBody, "=").toArray(new String[0]); if(parts.length != 2) { throw new GrammarException("Colon variables must have a name and a definition"); @@ -114,7 +111,7 @@ public abstract class CaseElement { return VariableDefCaseElement.parseVariable(varName, parts[1], ' ', true); } else if (specialBody.matches("\\S+=\\S+")) { - String[] parts = StringUtils.levelSplit(specialBody, "=").toArray(new String[0]); + String[] parts = LevelSplitter.def.levelSplit(specialBody, "=").toArray(new String[0]); if(parts.length != 2) { throw new GrammarException("Variables must have a name and a definition"); } @@ -136,21 +133,14 @@ public abstract class CaseElement { return new RangeCaseElement(firstNum, secondNum); } else if(rawCase.contains("||")) { - String[] elms = StringUtils.levelSplit(rawCase, "||").toArray(new String[0]); + String[] elms = LevelSplitter.def.levelSplit(rawCase, "||").toArray(new String[0]); return new InlineRuleCaseElement(elms); } else if(rawCase.contains("|")) { throw new GrammarException("Inline rule using | found, they use || now"); - // String[] elms = StringUtils.levelSplit(rawCase, "|").toArray(new String[0]); + // String[] elms = LevelSplitter.def.levelSplit(rawCase, "|").toArray(new String[0]); // return new InlineRuleCaseElement(elms); - } else if (StringUtils.levelContains(rawCase, ".")) { - String[] parts = StringUtils.levelSplit(rawCase, ".").toArray(new String[0]); - - CaseElement base = createElement(parts[0]); - - parts = Arrays.copyOfRange(parts, 1, parts.length); - return new MethodCaseElement(base, parts); } else { return new RuleCaseElement(rawCase); } diff --git a/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java b/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java index c221f4a..03eebe3 100755 --- a/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java +++ b/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java @@ -1,13 +1,9 @@ package bjc.rgens.parser.elements; -import bjc.utils.data.IPair; - import bjc.rgens.parser.GenerationState; import bjc.rgens.parser.GrammarException; -import bjc.rgens.parser.RecurLimitException; import bjc.rgens.parser.RGrammar; import bjc.rgens.parser.Rule; -import bjc.rgens.parser.RuleCase; public class ExpVariableCaseElement extends VariableDefCaseElement { public ExpVariableCaseElement(String name, String def) { diff --git a/src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java b/src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java index 269cc4f..9385ded 100644 --- a/src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java +++ b/src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java @@ -3,11 +3,17 @@ package bjc.rgens.parser.elements; import bjc.rgens.parser.GenerationState; import bjc.rgens.parser.RGrammarParser; +import bjc.utils.data.IPair; +import bjc.utils.funcdata.IList; + + import bjc.utils.data.ITree; import bjc.utils.data.Tree; import bjc.utils.funcdata.FunctionalList; import bjc.utils.funcutils.StringUtils; + import bjc.utils.gen.WeightedRandom; +import bjc.utils.ioutils.LevelSplitter; import java.util.ArrayList; import java.util.List; @@ -27,8 +33,8 @@ public class InlineRuleCaseElement extends CaseElement { for(String part : parts) { String[] partArr; - if(StringUtils.levelContains(part, "|")) { - partArr = StringUtils.levelSplit(part, "||").toArray(new String[0]); + if(LevelSplitter.def.levelContains(part, "|")) { + partArr = LevelSplitter.def.levelSplit(part, "||").toArray(new String[0]); } else { partArr = new String[] {part}; } diff --git a/src/main/java/bjc/rgens/parser/elements/MethodCaseElement.java b/src/main/java/bjc/rgens/parser/elements/MethodCaseElement.java deleted file mode 100644 index 13f58e9..0000000 --- a/src/main/java/bjc/rgens/parser/elements/MethodCaseElement.java +++ /dev/null @@ -1,41 +0,0 @@ -package bjc.rgens.parser.elements; - -import bjc.rgens.parser.GenerationState; -import bjc.rgens.parser.GrammarException; -import bjc.rgens.parser.elements.CaseElement; -import bjc.rgens.parser.elements.methods.MethodElement; - -import java.util.List; -import java.util.LinkedList; - -public class MethodCaseElement extends CaseElement { - public CaseElement base; - - public List<MethodElement> methods; - - public MethodCaseElement(CaseElement base, String... rawMethods) { - this.base = base; - - // @TODO - // - // Implement this - } - - public MethodCaseElement(CaseElement base, List<MethodElement> rawMethods) { - this.base = base; - - methods = new LinkedList<>(); - - for(MethodElement method : rawMethods) { - methods.add(method); - } - } - - public void generate(GenerationState state) { - base.generate(state); - - for(MethodElement method : methods) { - method.call(state); - } - } -} diff --git a/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java b/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java index e42647c..1a2cf85 100755 --- a/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java +++ b/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java @@ -1,15 +1,12 @@ package bjc.rgens.parser.elements; -import bjc.utils.data.IPair; -import bjc.utils.data.Pair; - -import bjc.rgens.parser.*; -import bjc.rgens.parser.elements.vars.*; - -import java.util.ArrayList; import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; + +import bjc.rgens.parser.GenerationState; +import bjc.rgens.parser.GrammarException; +import bjc.rgens.parser.RGrammar; +import bjc.rgens.parser.Rule; +import bjc.rgens.parser.elements.vars.VariableElement; public class RuleCaseElement extends CaseElement { public List<VariableElement> elements; @@ -46,11 +43,13 @@ public class RuleCaseElement extends CaseElement { } } - protected void doGenerate(String actName, GenerationState state) { + protected void doGenerate(String acName, GenerationState state) { GenerationState newState = state.newBuf(); Rule rl; + String actName = acName; + if (actName.startsWith("[^")) { actName = "[" + actName.substring(2); diff --git a/src/main/java/bjc/rgens/parser/elements/RuleVariableCaseElement.java b/src/main/java/bjc/rgens/parser/elements/RuleVariableCaseElement.java index a7fdbec..923b56c 100644 --- a/src/main/java/bjc/rgens/parser/elements/RuleVariableCaseElement.java +++ b/src/main/java/bjc/rgens/parser/elements/RuleVariableCaseElement.java @@ -1,14 +1,10 @@ package bjc.rgens.parser.elements; -import bjc.utils.data.IPair; -import bjc.utils.data.Pair; +import static bjc.rgens.parser.RGrammarLogging.fine; -import bjc.rgens.parser.GrammarException; import bjc.rgens.parser.GenerationState; +import bjc.rgens.parser.GrammarException; import bjc.rgens.parser.Rule; -import bjc.rgens.parser.RGrammar; - -import static bjc.rgens.parser.RGrammarLogging.*; public class RuleVariableCaseElement extends VariableDefCaseElement { public final boolean exhaust; diff --git a/src/main/java/bjc/rgens/parser/elements/methods/MethodElement.java b/src/main/java/bjc/rgens/parser/elements/methods/MethodElement.java deleted file mode 100644 index 0e8f37c..0000000 --- a/src/main/java/bjc/rgens/parser/elements/methods/MethodElement.java +++ /dev/null @@ -1,7 +0,0 @@ -package bjc.rgens.parser.elements.methods; - -import bjc.rgens.parser.GenerationState; - -public interface MethodElement { - public void call(GenerationState state); -} diff --git a/src/main/java/bjc/rgens/parser/elements/vars/ARefVariableElement.java b/src/main/java/bjc/rgens/parser/elements/vars/ARefVariableElement.java index 17db660..1a04e50 100644 --- a/src/main/java/bjc/rgens/parser/elements/vars/ARefVariableElement.java +++ b/src/main/java/bjc/rgens/parser/elements/vars/ARefVariableElement.java @@ -1,9 +1,12 @@ package bjc.rgens.parser.elements.vars; import bjc.rgens.parser.GenerationState; -import bjc.rgens.parser.GrammarException; import bjc.rgens.parser.Rule; - +/** + * Reference to an array variable. + * @author bjculkin + * + */ public class ARefVariableElement extends VariableElement { public String value; diff --git a/src/main/java/bjc/rgens/parser/elements/vars/TRefVariableElement.java b/src/main/java/bjc/rgens/parser/elements/vars/TRefVariableElement.java index a33d78c..c753dfe 100644 --- a/src/main/java/bjc/rgens/parser/elements/vars/TRefVariableElement.java +++ b/src/main/java/bjc/rgens/parser/elements/vars/TRefVariableElement.java @@ -1,8 +1,6 @@ package bjc.rgens.parser.elements.vars; import bjc.rgens.parser.GenerationState; -import bjc.rgens.parser.GrammarException; -import bjc.rgens.parser.templates.GrammarTemplate; /* * @TODO diff --git a/src/main/java/bjc/rgens/parser/elements/vars/VariableElement.java b/src/main/java/bjc/rgens/parser/elements/vars/VariableElement.java index 77eb151..eb36af8 100644 --- a/src/main/java/bjc/rgens/parser/elements/vars/VariableElement.java +++ b/src/main/java/bjc/rgens/parser/elements/vars/VariableElement.java @@ -1,12 +1,11 @@ package bjc.rgens.parser.elements.vars; -import bjc.utils.funcutils.StringUtils; +import java.util.ArrayList; +import java.util.List; import bjc.rgens.parser.GenerationState; import bjc.rgens.parser.GrammarException; - -import java.util.ArrayList; -import java.util.List; +import bjc.utils.ioutils.LevelSplitter; public abstract class VariableElement { public boolean forbidSpaces; @@ -18,12 +17,12 @@ public abstract class VariableElement { public abstract void generate(GenerationState state); public static List<VariableElement> parseElementString(String varElm) { - boolean forbidSpaces = StringUtils.levelContains(varElm, "-", "+"); + boolean forbidSpaces = LevelSplitter.def.levelContains(varElm, "-", "+"); String[] parts; if(forbidSpaces) { - parts = StringUtils.levelSplit(varElm, true, "-", "+").toArray(new String[0]); + parts = LevelSplitter.def.levelSplit(varElm, true, "-", "+").toArray(new String[0]); } else { parts = new String[] { varElm }; } diff --git a/src/main/java/bjc/rgens/parser/templates/GrammarTemplate.java b/src/main/java/bjc/rgens/parser/templates/GrammarTemplate.java index 64db166..ef0bf3a 100644 --- a/src/main/java/bjc/rgens/parser/templates/GrammarTemplate.java +++ b/src/main/java/bjc/rgens/parser/templates/GrammarTemplate.java @@ -12,6 +12,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Scanner; +import bjc.rgens.parser.ConfigSet; +import bjc.rgens.parser.GenerationState; + /** * Represents a grammar template. * @@ -103,6 +106,8 @@ public class GrammarTemplate { } } + scn.close(); + return template; } diff --git a/src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java b/src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java index 0aa3bd0..81c0c47 100644 --- a/src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java +++ b/src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java @@ -1,5 +1,11 @@ package bjc.rgens.parser.templates; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import bjc.utils.data.BooleanToggle; import bjc.utils.data.ITree; import bjc.utils.data.Tree; @@ -10,12 +16,8 @@ import bjc.rgens.parser.GenerationState; import bjc.rgens.parser.RGrammarParser; import bjc.rgens.parser.elements.CaseElement; import bjc.rgens.parser.elements.LiteralCaseElement; - -import java.util.Arrays; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; +import bjc.utils.data.BooleanToggle; +import bjc.utils.funcdata.FunctionalList; /** * A template element that can contain rule elements. diff --git a/src/main/java/bjc/rgens/text/markov/Markov.java b/src/main/java/bjc/rgens/text/markov/Markov.java index e21d60f..c428dcb 100755 --- a/src/main/java/bjc/rgens/text/markov/Markov.java +++ b/src/main/java/bjc/rgens/text/markov/Markov.java @@ -1,7 +1,11 @@ package bjc.rgens.text.markov; +import java.util.ArrayList; +import java.util.Iterator; import java.util.Map.Entry; -import java.util.*; +import java.util.Random; +import java.util.Set; +import java.util.TreeMap; /** * Represents a k-character substring. diff --git a/src/main/java/bjc/rgens/text/markov/TextGenerator.java b/src/main/java/bjc/rgens/text/markov/TextGenerator.java index f629d49..9ec7c47 100755 --- a/src/main/java/bjc/rgens/text/markov/TextGenerator.java +++ b/src/main/java/bjc/rgens/text/markov/TextGenerator.java @@ -1,6 +1,8 @@ package bjc.rgens.text.markov; -import java.io.*; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; /** * Generate text from a markov model of an input text @@ -40,10 +42,10 @@ public class TextGenerator { file = args[1]; } else { - System.out.println("\n" + "Usage: java TextGenerator k M file"); + System.out.println("\nUsage: java TextGenerator k M file"); System.out.println("where k is the markov order, M is the number"); System.out.println("of characters to be printed, and file is the"); - System.out.println("name of the file to print from. M may be left out." + "\n"); + System.out.println("name of the file to print from. M may be left out.\n"); System.exit(1); } |
