diff options
Diffstat (limited to 'src/main/java/bjc/rgens/parser/elements/VariableDefCaseElement.java')
| -rwxr-xr-x | src/main/java/bjc/rgens/parser/elements/VariableDefCaseElement.java | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/src/main/java/bjc/rgens/parser/elements/VariableDefCaseElement.java b/src/main/java/bjc/rgens/parser/elements/VariableDefCaseElement.java index 37a12b6..23659c7 100755 --- a/src/main/java/bjc/rgens/parser/elements/VariableDefCaseElement.java +++ b/src/main/java/bjc/rgens/parser/elements/VariableDefCaseElement.java @@ -2,6 +2,12 @@ package bjc.rgens.parser.elements; import bjc.rgens.parser.GrammarException; +/** + * Variable defining case element. + * + * @author Ben Culkin + * + */ public abstract class VariableDefCaseElement extends CaseElement { /** * The name of the variable this element defines. @@ -13,6 +19,14 @@ public abstract class VariableDefCaseElement extends CaseElement { */ public final String varDef; + /** + * Create a variable defining case element. + * + * @param name + * The name of the variable. + * @param def + * The definition of the variable. + */ public VariableDefCaseElement(String name, String def) { super(false); @@ -51,16 +65,33 @@ public abstract class VariableDefCaseElement extends CaseElement { return true; } - public static CaseElement parseVariable(String varName, String varDef, char op, boolean colon) { - if(varName.startsWith("$")) { + /** + * Parse a variable reference. + * + * @param varName + * The variable name. + * @param varDef + * The variable definition. + * @param op + * Unused as of yet. + * @param colon + * Whether the colon was present in the declaration. + * + * @return A case element which declares the variable. + */ + public static CaseElement parseVariable(String varName, String varDef, char op, + boolean colon) { + if (varName.startsWith("$")) { // Handle normal/expanding variable definitions - if(colon) return new ExpVariableCaseElement(varName.substring(1), varDef); + if (colon) + return new ExpVariableCaseElement(varName.substring(1), varDef); return new LitVariableCaseElement(varName.substring(1), varDef); - } else if(varName.startsWith("@")) { + } else if (varName.startsWith("@")) { return new RuleVariableCaseElement(varName.substring(1), varDef, colon); } else { - throw new GrammarException("Unrecognized declaration sigil " + varName.charAt(0)); + throw new GrammarException( + "Unrecognized declaration sigil " + varName.charAt(0)); } } } |
