diff options
Diffstat (limited to 'src/main/java/bjc/rgens/parser/elements/VariableCaseElement.java')
| -rwxr-xr-x | src/main/java/bjc/rgens/parser/elements/VariableCaseElement.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/main/java/bjc/rgens/parser/elements/VariableCaseElement.java b/src/main/java/bjc/rgens/parser/elements/VariableCaseElement.java index 63abe16..a2c15a7 100755 --- a/src/main/java/bjc/rgens/parser/elements/VariableCaseElement.java +++ b/src/main/java/bjc/rgens/parser/elements/VariableCaseElement.java @@ -1,5 +1,7 @@ package bjc.rgens.parser.elements; +import bjc.rgens.parser.GrammarException; + public abstract class VariableCaseElement extends CaseElement { public static enum VariableType { NORMAL, @@ -66,4 +68,17 @@ public abstract class VariableCaseElement extends CaseElement { return String.format("{$%s=%s}", varName, varDef); } } + + public static CaseElement parseVariable(String varName, String varDef, boolean colon) { + if(varName.startsWith("$")) { + // Handle normal/expanding variable definitions + if(colon) return new ExpVariableCaseElement(varName.substring(1), varDef); + + return new LitVariableCaseElement(varName.substring(1), varDef); + } else if(varName.startsWith("@")) { + return new RuleVariableCaseElement(varName.substring(1), varDef, colon); + } else { + throw new GrammarException("Unrecognized declaration sigil " + varName.charAt(0)); + } + } } |
