diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-09-05 16:48:15 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-09-05 16:48:15 -0300 |
| commit | e26cdec45a32c2fc3069dea7cddceab5e40a4a8b (patch) | |
| tree | 244b3bc1ed2a1f0c42b78d295127a5b98818567b /src/main/java/bjc/rgens/parser/RGrammarBuilder.java | |
| parent | 15f0bf5207df703ffbb53c18a147b440dcf43546 (diff) | |
Autovivify vars
Enable autovivifying variables. These will have their definition
automatically ran when they are first referenced.
Diffstat (limited to 'src/main/java/bjc/rgens/parser/RGrammarBuilder.java')
| -rwxr-xr-x | src/main/java/bjc/rgens/parser/RGrammarBuilder.java | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/bjc/rgens/parser/RGrammarBuilder.java b/src/main/java/bjc/rgens/parser/RGrammarBuilder.java index 534d5ec..f1d0938 100755 --- a/src/main/java/bjc/rgens/parser/RGrammarBuilder.java +++ b/src/main/java/bjc/rgens/parser/RGrammarBuilder.java @@ -1,6 +1,7 @@ package bjc.rgens.parser; import bjc.rgens.parser.elements.CaseElement; +import bjc.rgens.parser.elements.VariableDefCaseElement; import bjc.utils.data.IPair; import bjc.utils.data.Pair; @@ -34,11 +35,18 @@ public class RGrammarBuilder { /* The current grammar name. */ public String name; + /* Autovivify variables */ + private Map<String, CaseElement> autoVars; + private Map<String, CaseElement> autoRlVars; + /** Create a new randomized grammar builder. */ public RGrammarBuilder() { rules = new HashMap<>(); exportedRules = new HashSet<>(); + + autoVars = new HashMap<>(); + autoRlVars = new HashMap<>(); } /** @@ -93,6 +101,8 @@ public class RGrammarBuilder { grammar.setExportedRules(exportedRules); + grammar.setAutoVars(autoVars, autoRlVars); + return grammar; } @@ -315,6 +325,13 @@ public class RGrammarBuilder { rl.trials = trials; } + public void addAutoVar(String name, CaseElement elm) { + autoVars.put(name, elm); + } + + public void addAutoRlVar(String name, CaseElement elm) { + autoRlVars.put(name, elm); + } /* * @TODO * |
