summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-09-06 16:26:40 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-09-06 16:26:40 -0300
commitc7fbd761c1cc8a8a553f79463ecb8dd02c43d0f8 (patch)
tree704ad9534058cdb98e6c3c34edf893489bce5779
parente9ff21333162f6b3a516d91d4c814d5ebb78d88c (diff)
Convert GenerationState.contents to private
This is to prepare for replacing contents with a ReportWriter
-rw-r--r--src/main/java/bjc/rgens/parser/GenerationState.java22
-rw-r--r--src/main/java/bjc/rgens/parser/NormalRuleCase.java2
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammar.java2
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammarTest.java2
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/Rule.java11
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java4
-rw-r--r--src/main/java/bjc/rgens/parser/elements/LiteralCaseElement.java2
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/elements/RangeCaseElement.java2
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/elements/RuleCaseElement.java12
-rw-r--r--src/main/java/bjc/rgens/parser/elements/SerialCaseElement.java2
-rw-r--r--src/main/java/bjc/rgens/parser/elements/vars/ARefVariableElement.java4
-rw-r--r--src/main/java/bjc/rgens/parser/elements/vars/LiteralVariableElement.java2
-rw-r--r--src/main/java/bjc/rgens/parser/elements/vars/RRefVariableElement.java4
-rw-r--r--src/main/java/bjc/rgens/parser/elements/vars/VRefVariableElement.java2
-rw-r--r--src/main/java/bjc/rgens/parser/templates/GrammarTemplate.java2
-rw-r--r--src/main/java/bjc/rgens/parser/templates/LiteralTemplateElement.java2
-rw-r--r--src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java2
17 files changed, 48 insertions, 31 deletions
diff --git a/src/main/java/bjc/rgens/parser/GenerationState.java b/src/main/java/bjc/rgens/parser/GenerationState.java
index b147dfd..361a17e 100644
--- a/src/main/java/bjc/rgens/parser/GenerationState.java
+++ b/src/main/java/bjc/rgens/parser/GenerationState.java
@@ -15,7 +15,7 @@ import static bjc.rgens.parser.RGrammarLogging.*;
*/
public class GenerationState {
/** The current string. */
- public StringBuilder contents;
+ private StringBuilder contents;
/** The RNG. */
public Random rnd;
@@ -154,4 +154,24 @@ public class GenerationState {
return rlVars.get(name);
}
+
+ public void appendContents(String strang) {
+ contents.append(strang);
+ }
+
+ public void setContents(String strang) {
+ contents = new StringBuilder(strang);
+ }
+
+ public String getContents() {
+ return contents.toString();
+ }
+
+ public void findReplaceContents(String find, String replace) {
+ contents = new StringBuilder(contents.toString().replaceAll(find, replace));
+ }
+
+ public void clearContents() {
+ contents = new StringBuilder();
+ }
}
diff --git a/src/main/java/bjc/rgens/parser/NormalRuleCase.java b/src/main/java/bjc/rgens/parser/NormalRuleCase.java
index c8891a2..7fee169 100644
--- a/src/main/java/bjc/rgens/parser/NormalRuleCase.java
+++ b/src/main/java/bjc/rgens/parser/NormalRuleCase.java
@@ -15,7 +15,7 @@ public class NormalRuleCase extends RuleCase {
elm.generate(state);
if(elm.spacing) {
- state.contents.append(" ");
+ state.appendContents(" ");
}
}
}
diff --git a/src/main/java/bjc/rgens/parser/RGrammar.java b/src/main/java/bjc/rgens/parser/RGrammar.java
index 03962b2..c951cda 100755
--- a/src/main/java/bjc/rgens/parser/RGrammar.java
+++ b/src/main/java/bjc/rgens/parser/RGrammar.java
@@ -228,7 +228,7 @@ public class RGrammar {
rl.generate(state);
- String body = state.contents.toString();
+ String body = state.getContents();
if(doPostprocess) {
body = postprocessRes(body);
diff --git a/src/main/java/bjc/rgens/parser/RGrammarTest.java b/src/main/java/bjc/rgens/parser/RGrammarTest.java
index 056ffd9..788823a 100755
--- a/src/main/java/bjc/rgens/parser/RGrammarTest.java
+++ b/src/main/java/bjc/rgens/parser/RGrammarTest.java
@@ -55,7 +55,7 @@ public class RGrammarTest {
template.generate(state);
- String res = state.contents.toString();
+ String res = state.getContents();
if(res.length() > 120) {
System.out.printf("\t\n\tContents: %s\n\t\n", res);
diff --git a/src/main/java/bjc/rgens/parser/Rule.java b/src/main/java/bjc/rgens/parser/Rule.java
index 21d197d..1a74352 100755
--- a/src/main/java/bjc/rgens/parser/Rule.java
+++ b/src/main/java/bjc/rgens/parser/Rule.java
@@ -297,24 +297,23 @@ public class Rule {
endRecur();
}
+ // Don't rebuild the builder a bunch
+ String conts = state.getContents();
if(name.contains("+")) {
- state.contents = new StringBuilder(state.contents.toString().replaceAll("\\s+", ""));
+ conts = conts.replaceAll("\\s+", "");
}
- String conts = state.contents.toString();
-
for(IPair<String, String> findRep : findReplaces) {
conts = conts.replaceAll(findRep.getLeft(), findRep.getRight());
}
-
- state.contents = new StringBuilder(conts);
+ state.setContents(conts);
for(String pat : rejectionPreds) {
if(!conts.matches(pat)) {
fine("Rejected %s by %s (from %s)", conts, pat, belongsTo.name);
rejected = true;
- state.contents = new StringBuilder();
+ state.clearContents();
break;
}
diff --git a/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java b/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java
index 1606e59..c221f4a 100755
--- a/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java
+++ b/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java
@@ -29,12 +29,10 @@ public class ExpVariableCaseElement extends VariableDefCaseElement {
*/
String res = destGrammar.generate(varDef, state, false);
- newState.contents = new StringBuilder(res);
+ state.defineVar(varName, res);
} else {
String msg = String.format("No rule '%s' defined", varDef);
throw new GrammarException(msg);
}
-
- state.defineVar(varName, newState.contents.toString());
}
}
diff --git a/src/main/java/bjc/rgens/parser/elements/LiteralCaseElement.java b/src/main/java/bjc/rgens/parser/elements/LiteralCaseElement.java
index 6e0f8fd..2621ee6 100644
--- a/src/main/java/bjc/rgens/parser/elements/LiteralCaseElement.java
+++ b/src/main/java/bjc/rgens/parser/elements/LiteralCaseElement.java
@@ -12,6 +12,6 @@ public class LiteralCaseElement extends CaseElement {
}
public void generate(GenerationState state) {
- state.contents.append(val);
+ state.appendContents(val);
}
}
diff --git a/src/main/java/bjc/rgens/parser/elements/RangeCaseElement.java b/src/main/java/bjc/rgens/parser/elements/RangeCaseElement.java
index e877dd1..bd73f1b 100755
--- a/src/main/java/bjc/rgens/parser/elements/RangeCaseElement.java
+++ b/src/main/java/bjc/rgens/parser/elements/RangeCaseElement.java
@@ -17,7 +17,7 @@ public class RangeCaseElement extends CaseElement {
int val = state.rnd.nextInt(end - begin);
val += begin;
- state.contents.append(val);
+ state.appendContents(Integer.toString(val));
}
@Override
diff --git a/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java b/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java
index f13dbdb..e42647c 100755
--- a/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java
+++ b/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java
@@ -37,12 +37,12 @@ public class RuleCaseElement extends CaseElement {
if(inName == false) inName = elm.forbidSpaces;
}
- String body = newState.contents.toString();
+ String body = newState.getContents();
if(inName) {
doGenerate(String.format("[%s]", body), state);
} else {
- state.contents.append(body);
+ state.appendContents(body);
}
}
@@ -67,7 +67,7 @@ public class RuleCaseElement extends CaseElement {
* once.
*/
String res = destGrammar.generate(actName, newState, false);
- newState.contents = new StringBuilder(res);
+ newState.setContents(res);
} else {
/*
* @TODO 5/29/18 Ben Culkin :RuleSuggesting
@@ -91,13 +91,13 @@ public class RuleCaseElement extends CaseElement {
throw new GrammarException(msg);
}
- String res = newState.contents.toString();
+ String res = newState.getContents();
if (actName.contains("+")) {
/* Rule names with pluses in them get space-flattened */
- state.contents.append(res.replaceAll("\\s+", ""));
+ state.appendContents(res.replaceAll("\\s+", ""));
} else {
- state.contents.append(res);
+ state.appendContents(res);
}
}
}
diff --git a/src/main/java/bjc/rgens/parser/elements/SerialCaseElement.java b/src/main/java/bjc/rgens/parser/elements/SerialCaseElement.java
index 348cfbb..195ba4f 100644
--- a/src/main/java/bjc/rgens/parser/elements/SerialCaseElement.java
+++ b/src/main/java/bjc/rgens/parser/elements/SerialCaseElement.java
@@ -24,7 +24,7 @@ public class SerialCaseElement extends CaseElement {
rep.generate(state);
if(rep.spacing)
- state.contents.append(" ");
+ state.appendContents(" ");
}
}
}
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 99af354..17db660 100644
--- a/src/main/java/bjc/rgens/parser/elements/vars/ARefVariableElement.java
+++ b/src/main/java/bjc/rgens/parser/elements/vars/ARefVariableElement.java
@@ -20,8 +20,8 @@ public class ARefVariableElement extends VariableElement {
rl.generate(newState);
- String res = newState.contents.toString();
+ String res = newState.getContents();
- state.contents.append(res);
+ state.appendContents(res);
}
}
diff --git a/src/main/java/bjc/rgens/parser/elements/vars/LiteralVariableElement.java b/src/main/java/bjc/rgens/parser/elements/vars/LiteralVariableElement.java
index cf33c66..e7415f5 100644
--- a/src/main/java/bjc/rgens/parser/elements/vars/LiteralVariableElement.java
+++ b/src/main/java/bjc/rgens/parser/elements/vars/LiteralVariableElement.java
@@ -12,6 +12,6 @@ public class LiteralVariableElement extends VariableElement {
}
public void generate(GenerationState state) {
- state.contents.append(val);
+ state.appendContents(val);
}
}
diff --git a/src/main/java/bjc/rgens/parser/elements/vars/RRefVariableElement.java b/src/main/java/bjc/rgens/parser/elements/vars/RRefVariableElement.java
index 5c0a768..e81e9f8 100644
--- a/src/main/java/bjc/rgens/parser/elements/vars/RRefVariableElement.java
+++ b/src/main/java/bjc/rgens/parser/elements/vars/RRefVariableElement.java
@@ -23,12 +23,12 @@ public class RRefVariableElement extends VariableElement {
rl.generate(newState);
- String res = newState.contents.toString();
+ String res = newState.getContents();
if(forbidSpaces && res.contains(" ")) {
throw new GrammarException(String.format("Spaces not allowed in this context (rule-reference %s)", state));
}
- state.contents.append(res);
+ state.appendContents(res);
}
}
diff --git a/src/main/java/bjc/rgens/parser/elements/vars/VRefVariableElement.java b/src/main/java/bjc/rgens/parser/elements/vars/VRefVariableElement.java
index 1facd38..e65d876 100644
--- a/src/main/java/bjc/rgens/parser/elements/vars/VRefVariableElement.java
+++ b/src/main/java/bjc/rgens/parser/elements/vars/VRefVariableElement.java
@@ -19,6 +19,6 @@ public class VRefVariableElement extends VariableElement {
throw new GrammarException(String.format("Cannot include variable %s w/ spaces in body in rule name", nam));
}
- state.contents.append(strang);
+ state.appendContents(strang);
}
}
diff --git a/src/main/java/bjc/rgens/parser/templates/GrammarTemplate.java b/src/main/java/bjc/rgens/parser/templates/GrammarTemplate.java
index fa634a5..8a99188 100644
--- a/src/main/java/bjc/rgens/parser/templates/GrammarTemplate.java
+++ b/src/main/java/bjc/rgens/parser/templates/GrammarTemplate.java
@@ -26,7 +26,7 @@ public class GrammarTemplate {
element.generate(state);
if(doSpacing && element.spacing)
- state.contents.append("\n");
+ state.appendContents("\n");
}
}
diff --git a/src/main/java/bjc/rgens/parser/templates/LiteralTemplateElement.java b/src/main/java/bjc/rgens/parser/templates/LiteralTemplateElement.java
index 36cdb12..ca4b32f 100644
--- a/src/main/java/bjc/rgens/parser/templates/LiteralTemplateElement.java
+++ b/src/main/java/bjc/rgens/parser/templates/LiteralTemplateElement.java
@@ -12,6 +12,6 @@ public class LiteralTemplateElement extends TemplateElement {
}
public void generate(GenerationState state) {
- state.contents.append(val);
+ state.appendContents(val);
}
}
diff --git a/src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java b/src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java
index 154ea68..8dbde05 100644
--- a/src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java
+++ b/src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java
@@ -53,7 +53,7 @@ public class LiveTemplateElement extends TemplateElement {
elm.generate(state);
if(doSpacing && elm.spacing)
- state.contents.append(" ");
+ state.appendContents(" ");
}
}
}