diff options
| author | bjculkin <bjculkin@WIT-136XG42.wvu-ad.wvu.edu> | 2017-03-01 10:13:41 -0500 |
|---|---|---|
| committer | bjculkin <bjculkin@WIT-136XG42.wvu-ad.wvu.edu> | 2017-03-01 10:13:41 -0500 |
| commit | 36e0911c6ec27707a74f0b90b1052a16374243ea (patch) | |
| tree | 08ca7723b0c0a6a7f3ce1830c59e5211e46168b8 /dice-lang/src/bjc/dicelang/v2/Define.java | |
| parent | 6ed83507953322c35a456d64d89f8f4f9cb0a6a1 (diff) | |
Package reorganization
Diffstat (limited to 'dice-lang/src/bjc/dicelang/v2/Define.java')
| -rw-r--r-- | dice-lang/src/bjc/dicelang/v2/Define.java | 125 |
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); - } - } -} |
