summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/Rule.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bjc/rgens/parser/Rule.java')
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/Rule.java23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/main/java/bjc/rgens/parser/Rule.java b/src/main/java/bjc/rgens/parser/Rule.java
index 90b14f9..15e9b5f 100755
--- a/src/main/java/bjc/rgens/parser/Rule.java
+++ b/src/main/java/bjc/rgens/parser/Rule.java
@@ -3,6 +3,13 @@ package bjc.rgens.parser;
import static bjc.rgens.parser.RGrammarLogging.fine;
import static bjc.utils.data.IPair.pair;
+import bjc.utils.data.IPair;
+import bjc.utils.data.ITree;
+import bjc.utils.data.Tree;
+import bjc.utils.funcdata.FunctionalList;
+import bjc.utils.funcdata.IList;
+import bjc.utils.gen.WeightedRandom;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
@@ -120,20 +127,32 @@ public class Rule {
}
public void addRejection(String reject) {
+ addRejection(reject, new Tree<>());
+ }
+
+ public void addRejection(String reject, ITree<String> errs) {
try {
Pattern.compile(reject);
} catch (PatternSyntaxException psex) {
- throw new GrammarException(String.format("String %s is not a valid regex for rejection", reject), psex);
+ String msg = String.format("ERROR: '%s' is not a valid regex for rejection (%s)", reject, psex.getMessage());
}
rejectionPreds.add(reject);
}
public void addFindReplace(String find, String replace) {
+ addFindReplace(find, replace, new Tree<>());
+ }
+
+ public void addFindReplace(String find, String replace, ITree<String> errs) {
try {
Pattern.compile(find);
} catch (PatternSyntaxException psex) {
- throw new GrammarException(String.format("String %s is not a valid regex for finding", find), psex);
+ String msg = String.format("ERROR: '%s' is not a valid regex for finding (%s)", find, psex.getMessage());
+
+ errs.addChild(msg);
+
+ return;
}
findReplaces.add(pair(find, replace));