summaryrefslogtreecommitdiff
path: root/dice-lang/src/bjc/dicelang/v2/Define.java
diff options
context:
space:
mode:
authorbjculkin <bjculkin@WIT-136XG42.wvu-ad.wvu.edu>2017-03-01 10:13:41 -0500
committerbjculkin <bjculkin@WIT-136XG42.wvu-ad.wvu.edu>2017-03-01 10:13:41 -0500
commit36e0911c6ec27707a74f0b90b1052a16374243ea (patch)
tree08ca7723b0c0a6a7f3ce1830c59e5211e46168b8 /dice-lang/src/bjc/dicelang/v2/Define.java
parent6ed83507953322c35a456d64d89f8f4f9cb0a6a1 (diff)
Package reorganization
Diffstat (limited to 'dice-lang/src/bjc/dicelang/v2/Define.java')
-rw-r--r--dice-lang/src/bjc/dicelang/v2/Define.java125
1 files changed, 0 insertions, 125 deletions
diff --git a/dice-lang/src/bjc/dicelang/v2/Define.java b/dice-lang/src/bjc/dicelang/v2/Define.java
deleted file mode 100644
index 5af91ea..0000000
--- a/dice-lang/src/bjc/dicelang/v2/Define.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package bjc.dicelang.v2;
-
-import bjc.utils.data.CircularIterator;
-
-import static bjc.dicelang.v2.Errors.ErrorKey.*;
-
-import java.util.Iterator;
-import java.util.function.UnaryOperator;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
-
-public class Define implements UnaryOperator<String> {
- public static enum Type { LINE, TOKEN }
-
- public static final int MAX_RECURS = 10;
-
- public final int priority;
- public final boolean inError;
-
- private boolean doRecur;
- private boolean subType;
-
- private Pattern predicate;
- private Pattern searcher;
-
- private Iterator<String> replacers;
- private String replacer;
-
- public Define(int priorty,
- boolean isSub, boolean recur, boolean isCircular,
- String predicte, String searchr, Iterable<String> replacrs) {
- priority = priorty;
- doRecur = recur;
- subType = isSub;
-
- if(predicte != null) {
- try {
- predicate = Pattern.compile(predicte);
- } catch (PatternSyntaxException psex) {
- Errors.inst.printError(EK_DFN_PREDSYN, psex.getMessage());
- inError = true;
- return;
- }
- }
-
- try {
- searcher = Pattern.compile(searchr);
- } catch (PatternSyntaxException psex) {
- Errors.inst.printError(EK_DFN_SRCSYN, psex.getMessage());
- inError = true;
- return;
- }
-
- inError = false;
-
- if(subType) {
- if(replacrs.iterator().hasNext()) {
- replacers = new CircularIterator<>(replacrs, isCircular);
- } else {
- replacers = null;
- }
- } else {
- Iterator<String> itr = replacrs.iterator();
-
- if(itr.hasNext()) replacer = itr.next();
- else replacer = "";
- }
- }
-
- public String apply(String tok) {
- if(inError) return tok;
-
- if(predicate != null) {
- if(!predicate.matcher(tok).matches()) {
- return tok;
- }
- }
-
- String strang = doPass(tok);
-
- if(doRecur) {
- int recurCount = 0;
-
- if(strang.equals(tok)) {
- return strang;
- } else {
- String oldStrang = strang;
-
- do {
- strang = doPass(tok);
- recurCount += 1;
- } while(!strang.equals(oldStrang) && recurCount < MAX_RECURS);
-
- if(recurCount >= MAX_RECURS) {
- Errors.inst.printError(EK_DFN_RECUR, Integer.toString(MAX_RECURS), tok, strang);
- return strang;
- }
- }
- }
-
- return strang;
- }
-
- private String doPass(String tok) {
- Matcher searcherMatcher = searcher.matcher(tok);
-
- if(subType) {
- StringBuffer sb = new StringBuffer();
- while(searcherMatcher.find()) {
- if(replacers == null) {
- searcherMatcher.appendReplacement(sb,"");
- } else {
- String replac = replacers.next();
- searcherMatcher.appendReplacement(sb, replac);
- }
- }
-
- searcherMatcher.appendTail(sb);
- return sb.toString();
- } else {
- return searcherMatcher.replaceAll(replacer);
- }
- }
-}