summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java')
-rw-r--r--src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java b/src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java
index 82bc6ee..9385ded 100644
--- a/src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java
+++ b/src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java
@@ -2,15 +2,30 @@ package bjc.rgens.parser.elements;
import bjc.rgens.parser.GenerationState;
import bjc.rgens.parser.RGrammarParser;
+
import bjc.utils.data.IPair;
import bjc.utils.funcdata.IList;
+
+
+import bjc.utils.data.ITree;
+import bjc.utils.data.Tree;
+import bjc.utils.funcdata.FunctionalList;
+import bjc.utils.funcutils.StringUtils;
+
import bjc.utils.gen.WeightedRandom;
import bjc.utils.ioutils.LevelSplitter;
+import java.util.ArrayList;
+import java.util.List;
+
public class InlineRuleCaseElement extends CaseElement {
public final WeightedRandom<CaseElement> elements;
public InlineRuleCaseElement(String... parts) {
+ this(new Tree<>(), parts);
+ }
+
+ public InlineRuleCaseElement(ITree<String> errs, String... parts) {
super(true);
this.elements = new WeightedRandom<>();
@@ -24,10 +39,10 @@ public class InlineRuleCaseElement extends CaseElement {
partArr = new String[] {part};
}
- IPair<IList<CaseElement>, Integer> par = RGrammarParser.parseElementString(partArr);
- int prob = par.getRight();
+ List<CaseElement> elms = new ArrayList<>();
+ int prob = RGrammarParser.parseElementString(partArr, elms, errs);
- for(CaseElement elm : par.getLeft()) {
+ for(CaseElement elm : elms) {
elements.addProbability(prob, elm);
}
}