summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rwxr-xr-xsrc/main/java/bjc/rgens/ZadronsPouch.java2
-rw-r--r--src/main/java/bjc/rgens/parser/ConfigLoader.java8
-rw-r--r--src/main/java/bjc/rgens/parser/FlatRuleCase.java1
-rw-r--r--src/main/java/bjc/rgens/parser/GenerationState.java72
-rw-r--r--src/main/java/bjc/rgens/parser/NormalRuleCase.java1
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammar.java16
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammarBuilder.java34
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammarFormatter.java9
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammarParser.java17
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammarSet.java7
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammarTest.java5
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammars.java2
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RegexRuleCase.java2
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/Rule.java10
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/elements/BlankCaseElement.java2
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/elements/CaseElement.java24
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java4
-rw-r--r--src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java10
-rw-r--r--src/main/java/bjc/rgens/parser/elements/MethodCaseElement.java41
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/elements/RuleCaseElement.java19
-rw-r--r--src/main/java/bjc/rgens/parser/elements/RuleVariableCaseElement.java8
-rw-r--r--src/main/java/bjc/rgens/parser/elements/methods/MethodElement.java7
-rw-r--r--src/main/java/bjc/rgens/parser/elements/vars/ARefVariableElement.java7
-rw-r--r--src/main/java/bjc/rgens/parser/elements/vars/TRefVariableElement.java2
-rw-r--r--src/main/java/bjc/rgens/parser/elements/vars/VariableElement.java11
-rw-r--r--src/main/java/bjc/rgens/parser/templates/GrammarTemplate.java5
-rw-r--r--src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java14
-rwxr-xr-xsrc/main/java/bjc/rgens/text/markov/Markov.java6
-rwxr-xr-xsrc/main/java/bjc/rgens/text/markov/TextGenerator.java8
29 files changed, 159 insertions, 195 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 95adef4..ee3476b 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;
/*
* @TODO @CLEANUP Ben Culkin 7/21/2019 :LoadingInfo
diff --git a/src/main/java/bjc/rgens/parser/FlatRuleCase.java b/src/main/java/bjc/rgens/parser/FlatRuleCase.java
index 5055810..18559a1 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 bda7472..7a7adb9 100644
--- a/src/main/java/bjc/rgens/parser/GenerationState.java
+++ b/src/main/java/bjc/rgens/parser/GenerationState.java
@@ -1,19 +1,17 @@
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;
+import static bjc.rgens.parser.RGrammarLogging.*;
/**
* The current state during generation.
*
@@ -43,7 +41,6 @@ public class GenerationState {
/**
* Create a new generation state.
*
- * @param rw
* The place to write output to.
*
* @param rand
@@ -58,19 +55,19 @@ public class GenerationState {
* @param gram
* The grammar we are generating from.
*/
- 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();
}
@@ -114,12 +111,12 @@ public class GenerationState {
* The grammar to swap to.
*/
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);
@@ -165,11 +162,11 @@ public class GenerationState {
* name happen to exist.
*/
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;
}
@@ -184,8 +181,8 @@ public class GenerationState {
* name happen to exist.
*/
public Rule findImport(String ruleName) {
- if(importRules.containsKey(ruleName)) {
- return importRules.get(ruleName);
+ if (importRules.containsKey(ruleName)) {
+ return importRules.get(ruleName);
}
return null;
@@ -201,12 +198,10 @@ public class GenerationState {
* The value to give the variable.
*/
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);
}
@@ -221,12 +216,11 @@ public class GenerationState {
* The value to give the variable.
*/
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);
}
@@ -243,12 +237,11 @@ public class GenerationState {
* auto-variable that failed to generate succesfully.
*/
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);
}
@@ -265,12 +258,11 @@ public class GenerationState {
* auto-variable that failed to generate succesfully.
*/
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 705a118..95926c0 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;
/**
* A rule case that inserts spaces in between elements, where appropriate.
diff --git a/src/main/java/bjc/rgens/parser/RGrammar.java b/src/main/java/bjc/rgens/parser/RGrammar.java
index 7e46d5d..cca7c01 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.
*
@@ -57,6 +55,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. */
@@ -100,6 +99,7 @@ public class RGrammar {
public Map<String, CaseElement> autoRlVars;
/* The tree to use for finding rule suggestions. */
+ @SuppressWarnings("unused")
private BkTreeSearcher<String> ruleSearcher;
static {
@@ -262,7 +262,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 3675f39..4a6ba8d 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..05823ec 100755
--- a/src/main/java/bjc/rgens/parser/RGrammarSet.java
+++ b/src/main/java/bjc/rgens/parser/RGrammarSet.java
@@ -1,11 +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.*;
+import java.util.TreeMap;
/**
* 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 45f5b39..1fff8c9 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);
}