diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2020-11-11 12:29:59 -0400 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2020-11-11 12:29:59 -0400 |
| commit | 80aa147aedc91356276d4346efb1ea62ea5b06f9 (patch) | |
| tree | a57c8f2ad3a7e68ba1c0a5a2bea573a8da277ab6 /src/main/java/bjc/rgens/parser/elements/VariableDefCaseElement.java | |
| parent | c88c846b75dbc806db19a2e3a907bff21fd0c273 (diff) | |
| parent | e9e0ca7bfe722375e7ccb25d2bafbe395b6c6a59 (diff) | |
Merge branch 'master' of https://github.com/bculkin2442/rgens
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)); } } } |
