diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-09-06 16:26:40 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-09-06 16:26:40 -0300 |
| commit | c7fbd761c1cc8a8a553f79463ecb8dd02c43d0f8 (patch) | |
| tree | 704ad9534058cdb98e6c3c34edf893489bce5779 | |
| parent | e9ff21333162f6b3a516d91d4c814d5ebb78d88c (diff) | |
Convert GenerationState.contents to private
This is to prepare for replacing contents with a ReportWriter
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(" "); } } } |
