summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/elements/vars/VRefVariableElement.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bjc/rgens/parser/elements/vars/VRefVariableElement.java')
-rw-r--r--src/main/java/bjc/rgens/parser/elements/vars/VRefVariableElement.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/main/java/bjc/rgens/parser/elements/vars/VRefVariableElement.java b/src/main/java/bjc/rgens/parser/elements/vars/VRefVariableElement.java
new file mode 100644
index 0000000..c6921ba
--- /dev/null
+++ b/src/main/java/bjc/rgens/parser/elements/vars/VRefVariableElement.java
@@ -0,0 +1,29 @@
+package bjc.rgens.parser.elements.vars;
+
+import bjc.rgens.parser.GenerationState;
+import bjc.rgens.parser.GrammarException;
+
+public class VRefVariableElement extends VariableElement {
+ public final String nam;
+
+ private final boolean forbidSpaces;
+
+ public VRefVariableElement(boolean forbidSpaces, String nam) {
+ this.nam = nam;
+
+ this.forbidSpaces = forbidSpaces;
+ }
+
+ public void generate(GenerationState state) {
+ if (!state.vars.containsKey(nam)) {
+ throw new GrammarException(String.format("No variable '%s' defined", nam));
+ }
+
+ 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));
+ }
+
+ state.contents.append(strang);
+ }
+}