diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-04 21:12:47 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-04 21:12:47 -0300 |
| commit | 4809072030d5ce659f38d9756213fca1db1e7f6c (patch) | |
| tree | d285b0038fb9379adbd157179f602419e44cf7b6 /src/main/java/bjc/rgens/parser/elements | |
| parent | 5f70797f238466715196dd5d893c6ef77e2650fd (diff) | |
Declaration follows use
Simple/expanding variables are now marked with a $, as they are when
used.
Additionally, some debugging help was added
Diffstat (limited to 'src/main/java/bjc/rgens/parser/elements')
3 files changed, 5 insertions, 5 deletions
diff --git a/src/main/java/bjc/rgens/parser/elements/CaseElement.java b/src/main/java/bjc/rgens/parser/elements/CaseElement.java index 8f3a8d4..103c00a 100755 --- a/src/main/java/bjc/rgens/parser/elements/CaseElement.java +++ b/src/main/java/bjc/rgens/parser/elements/CaseElement.java @@ -87,7 +87,7 @@ public abstract class CaseElement { //System.out.printf("\t\tTRACE: special body is '%s'\n", specialBody); - if (specialBody.matches("\\S+:=\\S+")) { + if (specialBody.matches("\\$\\S+:=\\S+")) { /* Handle expanding variable definitions. */ String[] parts = specialBody.split(":="); @@ -104,7 +104,7 @@ public abstract class CaseElement { * valid rule name, since it gets used as one. */ return new ExpVariableCaseElement(parts[0], parts[1]); - } else if (specialBody.matches("\\S+=\\S+")) { + } else if (specialBody.matches("\\$\\S+=\\S+")) { /* Handle regular variable definitions. */ String[] parts = specialBody.split("="); diff --git a/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java b/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java index 5c66e9f..58c5479 100755 --- a/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java +++ b/src/main/java/bjc/rgens/parser/elements/ExpVariableCaseElement.java @@ -21,7 +21,7 @@ public class ExpVariableCaseElement extends VariableCaseElement { if(rl.doRecur()) { RuleCase destCase = state.rules.get(varDef).getCase(); - System.err.printf("\tFINE: Generating case %d (from %s)\n", destCase.serial, varDef); + System.err.printf("\tFINE: Generating %s (from %s)\n", destCase, varDef); state.gram.generateCase(destCase, newState); diff --git a/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java b/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java index 7bab6bf..66c0296 100755 --- a/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java +++ b/src/main/java/bjc/rgens/parser/elements/RuleCaseElement.java @@ -31,13 +31,13 @@ public abstract class RuleCaseElement extends StringCaseElement { newState.swapGrammar(dst); /* :Postprocessing */ - newState.contents = new StringBuilder(dst.generate(actName, state.rnd, state.vars)); + newState.contents = new StringBuilder(dst.generate(actName, state.rnd, state.vars, state.rlVars)); } else if (state.rules.containsKey(actName)) { Rule rl = state.rules.get(actName); if(rl.doRecur()) { RuleCase cse = rl.getCase(state.rnd); - System.err.printf("\tFINE: Generating case %d (from %s)\n", cse.serial, actName); + System.err.printf("\tFINE: Generating %s (from %s)\n", cse, actName); state.gram.generateCase(cse, newState); |
