summaryrefslogtreecommitdiff
path: root/dice-lang/src/bjc/dicelang/v2/StreamEngine.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/StreamEngine.java
parent6ed83507953322c35a456d64d89f8f4f9cb0a6a1 (diff)
Package reorganization
Diffstat (limited to 'dice-lang/src/bjc/dicelang/v2/StreamEngine.java')
-rw-r--r--dice-lang/src/bjc/dicelang/v2/StreamEngine.java118
1 files changed, 0 insertions, 118 deletions
diff --git a/dice-lang/src/bjc/dicelang/v2/StreamEngine.java b/dice-lang/src/bjc/dicelang/v2/StreamEngine.java
deleted file mode 100644
index cd43e92..0000000
--- a/dice-lang/src/bjc/dicelang/v2/StreamEngine.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package bjc.dicelang.v2;
-
-import bjc.utils.funcdata.FunctionalList;
-import bjc.utils.funcdata.IList;
-import bjc.utils.funcutils.ListUtils;
-
-import static bjc.dicelang.v2.Errors.ErrorKey.*;
-
-import bjc.utils.esodata.SingleTape;
-import bjc.utils.esodata.Tape;
-
-public class StreamEngine {
- private DiceLangEngine eng;
-
- private Tape<IList<String>> streams;
- private IList<String> currStream;
-
- public StreamEngine(DiceLangEngine engine) {
- eng = engine;
- }
-
- private void init() {
- streams = new SingleTape<>();
-
- currStream = new FunctionalList<>();
- streams.insertBefore(currStream);
- }
-
- public boolean doStreams(String[] toks, IList<String> dest) {
- init();
-
- boolean quoteMode = false;
-
- for(String tk : toks) {
- if(tk.startsWith("{@S") && !quoteMode) {
- if(tk.equals("{@SQ}")) {
- quoteMode = true;
- } else if(!processCommand(tk)) {
- return false;
- }
- // Command ran correctly, continue
- } else {
- if(tk.equals("{@SU}")) {
- quoteMode = false;
- } else if(tk.startsWith("\\") && tk.endsWith("{@SU}")) {
- currStream.add(tk.substring(1));
- } else {
- currStream.add(tk);
- }
- }
- }
-
- for(String tk : currStream) {
- dest.add(tk);
- }
-
- return true;
- }
-
- private boolean processCommand(String tk) {
- char[] comms = null;
-
- if(tk.length() > 5) {
- comms = tk.substring(3, tk.length() - 1).toCharArray();
- } else {
- comms = new char[1];
- comms[0] = tk.charAt(3);
- }
-
- for(char comm : comms) {
- switch(comm) {
- case '+':
- streams.insertAfter(new FunctionalList<>());
- break;
- case '>':
- if(!streams.right()) {
- Errors.inst.printError(EK_STRM_NONEX);
- return false;
- }
-
- currStream = streams.item();
- break;
- case '<':
- if(!streams.left()) {
- Errors.inst.printError(EK_STRM_NONEX);
- return false;
- }
-
- currStream = streams.item();
- break;
- case '-':
- if(streams.size() == 1) {
- Errors.inst.printError(EK_STRM_LAST);
- return false;
- } else {
- streams.remove();
- currStream = streams.item();
- }
- break;
- case 'S':
- if(streams.size() == 1) {
- Errors.inst.printError(EK_STRM_LAST);
- return false;
- } else {
- IList<String> stringLit = streams.remove();
- currStream = streams.item();
- currStream.add(ListUtils.collapseTokens(stringLit, " "));
- }
- break;
- default:
- Errors.inst.printError(EK_STRM_INVCOM, tk);
- return false;
- }
- }
-
- return true;
- }
-}