From 15f0bf5207df703ffbb53c18a147b440dcf43546 Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Wed, 5 Sep 2018 14:54:12 -0300 Subject: Make variable fields private This makes the two maps in GenerationState private. Use the defineVar/findVar or defineRuleVar/findRuleVar instead. This is another change on the way to doing autovivify --- .../java/bjc/rgens/parser/elements/vars/ARefVariableElement.java | 6 +----- .../java/bjc/rgens/parser/elements/vars/VRefVariableElement.java | 5 +---- 2 files changed, 2 insertions(+), 9 deletions(-) (limited to 'src/main/java/bjc/rgens/parser/elements/vars') 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 a4bb730..5e8fe05 100644 --- a/src/main/java/bjc/rgens/parser/elements/vars/ARefVariableElement.java +++ b/src/main/java/bjc/rgens/parser/elements/vars/ARefVariableElement.java @@ -14,11 +14,7 @@ public class ARefVariableElement extends VariableElement { } public void generate(GenerationState state) { - if(!state.rlVars.containsKey(value)) { - throw new GrammarException("No rule variable named " + value); - } - - Rule rl = state.rlVars.get(value); + Rule rl = state.findRuleVar(value, state); GenerationState newState = state.newBuf(); 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 b19f785..a16503f 100644 --- a/src/main/java/bjc/rgens/parser/elements/vars/VRefVariableElement.java +++ b/src/main/java/bjc/rgens/parser/elements/vars/VRefVariableElement.java @@ -13,11 +13,8 @@ public class VRefVariableElement extends VariableElement { } public void generate(GenerationState state) { - if (!state.vars.containsKey(nam)) { - throw new GrammarException(String.format("No variable '%s' defined", nam)); - } + String strang = state.findVar(nam, state); - String strang = state.vars.get(nam); if(forbidSpaces && strang.contains(" ")) { throw new GrammarException(String.format("Cannot include variable %s w/ spaces in body in rule name", nam)); } -- cgit v1.2.3