summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--base/pom.xml10
-rw-r--r--base/src/bjc/dicelang/DiceLangEngine.java2
-rw-r--r--scl/.classpath26
-rw-r--r--scl/.project23
-rw-r--r--scl/.settings/org.eclipse.core.resources.prefs4
-rw-r--r--scl/.settings/org.eclipse.jdt.core.prefs5
-rw-r--r--scl/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--scl/pom.xml60
-rw-r--r--scl/src/main/java/bjc/App.java13
-rw-r--r--scl/src/main/java/bjc/dicelang/scl/ArraySCLToken.java (renamed from base/src/bjc/dicelang/scl/ArraySCLToken.java)0
-rw-r--r--scl/src/main/java/bjc/dicelang/scl/BooleanSCLToken.java (renamed from base/src/bjc/dicelang/scl/BooleanSCLToken.java)0
-rw-r--r--scl/src/main/java/bjc/dicelang/scl/Errors.java146
-rw-r--r--scl/src/main/java/bjc/dicelang/scl/FloatSCLToken.java (renamed from base/src/bjc/dicelang/scl/FloatSCLToken.java)0
-rw-r--r--scl/src/main/java/bjc/dicelang/scl/IntSCLToken.java (renamed from base/src/bjc/dicelang/scl/IntSCLToken.java)0
-rw-r--r--scl/src/main/java/bjc/dicelang/scl/SCLToken.java (renamed from base/src/bjc/dicelang/scl/SCLToken.java)4
-rw-r--r--scl/src/main/java/bjc/dicelang/scl/StreamControlConsole.java (renamed from base/src/bjc/dicelang/scl/StreamControlConsole.java)8
-rw-r--r--scl/src/main/java/bjc/dicelang/scl/StreamControlEngine.java (renamed from base/src/bjc/dicelang/scl/StreamControlEngine.java)3
-rw-r--r--scl/src/main/java/bjc/dicelang/scl/StreamEngine.java (renamed from base/src/bjc/dicelang/scl/StreamEngine.java)13
-rw-r--r--scl/src/main/java/bjc/dicelang/scl/StringLitSCLToken.java (renamed from base/src/bjc/dicelang/scl/StringLitSCLToken.java)0
-rw-r--r--scl/src/main/java/bjc/dicelang/scl/StringSCLToken.java (renamed from base/src/bjc/dicelang/scl/StringSCLToken.java)0
-rw-r--r--scl/src/main/java/bjc/dicelang/scl/SymbolSCLToken.java (renamed from base/src/bjc/dicelang/scl/SymbolSCLToken.java)0
-rw-r--r--scl/src/main/java/bjc/dicelang/scl/WordListSCLToken.java (renamed from base/src/bjc/dicelang/scl/WordListSCLToken.java)0
-rw-r--r--scl/src/main/java/bjc/dicelang/scl/WordSCLToken.java (renamed from base/src/bjc/dicelang/scl/WordSCLToken.java)0
-rw-r--r--scl/src/main/java/bjc/dicelang/scl/WordsSCLToken.java (renamed from base/src/bjc/dicelang/scl/WordsSCLToken.java)0
24 files changed, 261 insertions, 60 deletions
diff --git a/base/pom.xml b/base/pom.xml
index bfea276..f231c13 100644
--- a/base/pom.xml
+++ b/base/pom.xml
@@ -1,5 +1,4 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -116,6 +115,12 @@
</dependency>
<dependency>
+ <groupId>bjc</groupId>
+ <artifactId>dicelang-scl</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
<groupId>jline</groupId>
<artifactId>jline</artifactId>
<version>0.9.9</version>
@@ -126,5 +131,6 @@
<artifactId>guava</artifactId>
<version>19.0</version>
</dependency>
+
</dependencies>
</project>
diff --git a/base/src/bjc/dicelang/DiceLangEngine.java b/base/src/bjc/dicelang/DiceLangEngine.java
index e7ba4e8..f8fc5c6 100644
--- a/base/src/bjc/dicelang/DiceLangEngine.java
+++ b/base/src/bjc/dicelang/DiceLangEngine.java
@@ -127,7 +127,7 @@ public class DiceLangEngine {
shunt = new Shunter();
parsr = new Parser();
- streamEng = new StreamEngine(this);
+ streamEng = new StreamEngine();
tokenzer = new Tokenizer(this);
eval = new Evaluator(this);
}
diff --git a/scl/.classpath b/scl/.classpath
new file mode 100644
index 0000000..af1430b
--- /dev/null
+++ b/scl/.classpath
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/scl/.project b/scl/.project
new file mode 100644
index 0000000..2d9b4f5
--- /dev/null
+++ b/scl/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>dicelang-scl</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
diff --git a/scl/.settings/org.eclipse.core.resources.prefs b/scl/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f9fe345
--- /dev/null
+++ b/scl/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/test/java=UTF-8
+encoding/<project>=UTF-8
diff --git a/scl/.settings/org.eclipse.jdt.core.prefs b/scl/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..714351a
--- /dev/null
+++ b/scl/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/scl/.settings/org.eclipse.m2e.core.prefs b/scl/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/scl/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/scl/pom.xml b/scl/pom.xml
index a4e9e4c..2b26545 100644
--- a/scl/pom.xml
+++ b/scl/pom.xml
@@ -1,26 +1,38 @@
<?xml version="1.0"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>bjc</groupId>
- <artifactId>dicelang-parent</artifactId>
- <version>1.0.0</version>
- </parent>
- <groupId>bjc</groupId>
- <artifactId>dicelang-scl</artifactId>
- <version>1.0-SNAPSHOT</version>
- <name>scl</name>
- <url>http://maven.apache.org</url>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>bjc</groupId>
+ <artifactId>dicelang-parent</artifactId>
+ <version>1.0.0</version>
+ </parent>
+ <artifactId>dicelang-scl</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <name>scl</name>
+ <url>http://maven.apache.org</url>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+
+ <dependency>
+ <groupId>bjc</groupId>
+ <artifactId>BJC-Utils2</artifactId>
+ <version>1.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>bjc</groupId>
+ <artifactId>dicelang-dice</artifactId>
+ <version>1.0.0</version>
+ </dependency>
+ </dependencies>
</project>
diff --git a/scl/src/main/java/bjc/App.java b/scl/src/main/java/bjc/App.java
deleted file mode 100644
index ff1c4f9..0000000
--- a/scl/src/main/java/bjc/App.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package bjc;
-
-/**
- * Hello world!
- *
- */
-public class App
-{
- public static void main( String[] args )
- {
- System.out.println( "Hello World!" );
- }
-}
diff --git a/base/src/bjc/dicelang/scl/ArraySCLToken.java b/scl/src/main/java/bjc/dicelang/scl/ArraySCLToken.java
index ff86f48..ff86f48 100644
--- a/base/src/bjc/dicelang/scl/ArraySCLToken.java
+++ b/scl/src/main/java/bjc/dicelang/scl/ArraySCLToken.java
diff --git a/base/src/bjc/dicelang/scl/BooleanSCLToken.java b/scl/src/main/java/bjc/dicelang/scl/BooleanSCLToken.java
index e2e8e12..e2e8e12 100644
--- a/base/src/bjc/dicelang/scl/BooleanSCLToken.java
+++ b/scl/src/main/java/bjc/dicelang/scl/BooleanSCLToken.java
diff --git a/scl/src/main/java/bjc/dicelang/scl/Errors.java b/scl/src/main/java/bjc/dicelang/scl/Errors.java
new file mode 100644
index 0000000..d372850
--- /dev/null
+++ b/scl/src/main/java/bjc/dicelang/scl/Errors.java
@@ -0,0 +1,146 @@
+package bjc.dicelang.scl;
+
+/**
+ * Repository for error messages.
+ *
+ * @TODO 10/08/17 Ben Culkin :ErrorRefactor
+ *
+ * This way of handling error messages is not easy to deal with. Something
+ * else needs to be done, but I'm not sure what at the moment.
+ *
+ * @author EVE
+ *
+ */
+public class Errors {
+ /**
+ * The types of error message.
+ *
+ * @author EVE
+ *
+ */
+ public static enum ErrorKey {
+ /* Stream Errors */
+ /**
+ * Attempted to switch to a non-existant stream
+ */
+ EK_STRM_NONEX,
+ /**
+ * Can't delete the last stream
+ */
+ EK_STRM_LAST,
+ /**
+ * Unknown stream command
+ */
+ EK_STRM_INVCOM,
+ /* SCL Errors */
+ /**
+ * Unknown SCL token
+ */
+ EK_SCL_INVTOKEN,
+ /**
+ * Mismatched quote in SCL command
+ */
+ EK_SCL_MMQUOTE,
+ /**
+ * Stack underflow in SCL command
+ */
+ EK_SCL_SUNDERFLOW,
+ /**
+ * Unknown word in SCL command
+ */
+ EK_SCL_UNWORD,
+ /**
+ * Invalid argument to SCL command
+ */
+ EK_SCL_INVARG,
+ }
+
+ /**
+ * The mode for the type of error messages to print out.
+ *
+ * @author EVE
+ *
+ */
+ public static enum ErrorMode {
+ /**
+ * Output error messages for wizards.
+ */
+ WIZARD,
+ /**
+ * Output error messages for developers.
+ */
+ DEV
+ }
+
+ private ErrorMode mode;
+
+ /**
+ * Print an error.
+ *
+ * @param key
+ * The key of the error.
+ *
+ * @param args
+ * The arguments for the error.
+ */
+ public void printError(final ErrorKey key, final String... args) {
+ switch (mode) {
+ case WIZARD:
+ System.out.println("\t? " + key.ordinal());
+ break;
+
+ case DEV:
+ devError(key, args);
+ break;
+
+ default:
+ System.out.println("\tERROR ERROR: Unknown error mode " + mode);
+ }
+ }
+
+ private static void devError(final ErrorKey key, final String[] args) {
+ switch (key) {
+ case EK_STRM_NONEX:
+ System.out.printf("\tERROR: Attempted to switch to non-existent stream\n");
+ break;
+
+ case EK_STRM_LAST:
+ System.out.printf("\tERROR: Cannot delete last stream\n");
+ break;
+
+ case EK_STRM_INVCOM:
+ System.out.printf("\tERROR: Unknown stream control command %s\n", args[0]);
+ break;
+
+ case EK_SCL_INVTOKEN:
+ System.out.printf("\tERROR: Unknown SCL token %s\n", args[0]);
+ break;
+
+ case EK_SCL_MMQUOTE:
+ System.out.printf("\tERROR: Mismatched delimiter in SCL command\n");
+ break;
+
+ case EK_SCL_SUNDERFLOW:
+ System.out.printf("\tERROR: Not enough items in stack for word %s\n", args[0]);
+ break;
+
+ case EK_SCL_UNWORD:
+ System.out.printf("\tERROR: Unknown word %s\n", args[0]);
+ break;
+
+ default:
+ System.out.printf("\tERROR ERROR: Unknown error key %s\n", key);
+ }
+ }
+
+ /**
+ * The instance of the errors.
+ */
+ public final static Errors inst;
+
+ static {
+ inst = new Errors();
+
+ inst.mode = ErrorMode.DEV;
+ }
+}
diff --git a/base/src/bjc/dicelang/scl/FloatSCLToken.java b/scl/src/main/java/bjc/dicelang/scl/FloatSCLToken.java
index f02c796..f02c796 100644
--- a/base/src/bjc/dicelang/scl/FloatSCLToken.java
+++ b/scl/src/main/java/bjc/dicelang/scl/FloatSCLToken.java
diff --git a/base/src/bjc/dicelang/scl/IntSCLToken.java b/scl/src/main/java/bjc/dicelang/scl/IntSCLToken.java
index 9e88dbe..9e88dbe 100644
--- a/base/src/bjc/dicelang/scl/IntSCLToken.java
+++ b/scl/src/main/java/bjc/dicelang/scl/IntSCLToken.java
diff --git a/base/src/bjc/dicelang/scl/SCLToken.java b/scl/src/main/java/bjc/dicelang/scl/SCLToken.java
index b5dadb0..c4056e0 100644
--- a/base/src/bjc/dicelang/scl/SCLToken.java
+++ b/scl/src/main/java/bjc/dicelang/scl/SCLToken.java
@@ -3,11 +3,9 @@ package bjc.dicelang.scl;
import java.util.HashMap;
import java.util.Map;
-import bjc.dicelang.Errors;
import bjc.utils.parserutils.TokenUtils;
-import static bjc.dicelang.Errors.ErrorKey.EK_SCL_INVTOKEN;
-
+import static bjc.dicelang.scl.Errors.ErrorKey.*;
import static bjc.dicelang.scl.SCLToken.Type.*;
public class SCLToken {
diff --git a/base/src/bjc/dicelang/scl/StreamControlConsole.java b/scl/src/main/java/bjc/dicelang/scl/StreamControlConsole.java
index ca61244..26266ff 100644
--- a/base/src/bjc/dicelang/scl/StreamControlConsole.java
+++ b/scl/src/main/java/bjc/dicelang/scl/StreamControlConsole.java
@@ -12,7 +12,9 @@ import java.util.Scanner;
*/
public class StreamControlConsole {
/*
- * @TODO 10/08/17 :SCLArgs Do something useful with the CLI args.
+ * @TODO 10/08/17 :SCLArgs
+ *
+ * Do something useful with the CLI args.
*
*/
/**
@@ -25,10 +27,8 @@ public class StreamControlConsole {
/*
* Initialize vars.
*
- * We can get away with passing the null, because StreamEngine doesn't reference
- * any parts of DiceLangEngine.
*/
- StreamEngine sengine = new StreamEngine(null);
+ StreamEngine sengine = new StreamEngine();
StreamControlEngine sclengine = new StreamControlEngine(sengine);
Scanner scn = new Scanner(System.in);
diff --git a/base/src/bjc/dicelang/scl/StreamControlEngine.java b/scl/src/main/java/bjc/dicelang/scl/StreamControlEngine.java
index 32ae8ba..5224b6f 100644
--- a/base/src/bjc/dicelang/scl/StreamControlEngine.java
+++ b/scl/src/main/java/bjc/dicelang/scl/StreamControlEngine.java
@@ -3,14 +3,13 @@ package bjc.dicelang.scl;
import java.util.HashMap;
import java.util.Map;
-import bjc.dicelang.Errors;
import bjc.utils.esodata.SimpleStack;
import bjc.utils.esodata.Stack;
import bjc.utils.funcdata.FunctionalList;
import bjc.utils.funcdata.IList;
import bjc.utils.parserutils.TokenUtils;
-import static bjc.dicelang.Errors.ErrorKey.*;
+import static bjc.dicelang.scl.Errors.ErrorKey.*;
import static bjc.dicelang.scl.SCLToken.Type.*;
import static bjc.dicelang.scl.WordSCLToken.Word.*;
diff --git a/base/src/bjc/dicelang/scl/StreamEngine.java b/scl/src/main/java/bjc/dicelang/scl/StreamEngine.java
index 2d931b9..e22cae1 100644
--- a/base/src/bjc/dicelang/scl/StreamEngine.java
+++ b/scl/src/main/java/bjc/dicelang/scl/StreamEngine.java
@@ -1,7 +1,5 @@
package bjc.dicelang.scl;
-import bjc.dicelang.DiceLangEngine;
-import bjc.dicelang.Errors;
import bjc.utils.esodata.SingleTape;
import bjc.utils.esodata.Tape;
import bjc.utils.esodata.TapeLibrary;
@@ -11,7 +9,7 @@ import bjc.utils.funcutils.ListUtils;
import java.util.Arrays;
-import static bjc.dicelang.Errors.ErrorKey.*;
+import static bjc.dicelang.scl.Errors.ErrorKey.*;
/**
* Implements multiple interleaved parse streams, as well as a command language
@@ -26,9 +24,6 @@ public class StreamEngine {
/* Whether or not we're doing debugging. */
public final boolean debug = true;
- /* The engine we're attached to. */
- DiceLangEngine eng;
-
/* Our streams. */
Tape<IList<String>> streams;
IList<String> currStream;
@@ -42,12 +37,8 @@ public class StreamEngine {
/**
* Create a new stream engine.
*
- * @param engine
- * The dice engine we're attached to.
*/
- public StreamEngine(final DiceLangEngine engine) {
- eng = engine;
-
+ public StreamEngine() {
savedStreams = new TapeLibrary<>();
scleng = new StreamControlEngine(this);
}
diff --git a/base/src/bjc/dicelang/scl/StringLitSCLToken.java b/scl/src/main/java/bjc/dicelang/scl/StringLitSCLToken.java
index caf425a..caf425a 100644
--- a/base/src/bjc/dicelang/scl/StringLitSCLToken.java
+++ b/scl/src/main/java/bjc/dicelang/scl/StringLitSCLToken.java
diff --git a/base/src/bjc/dicelang/scl/StringSCLToken.java b/scl/src/main/java/bjc/dicelang/scl/StringSCLToken.java
index 1436bc3..1436bc3 100644
--- a/base/src/bjc/dicelang/scl/StringSCLToken.java
+++ b/scl/src/main/java/bjc/dicelang/scl/StringSCLToken.java
diff --git a/base/src/bjc/dicelang/scl/SymbolSCLToken.java b/scl/src/main/java/bjc/dicelang/scl/SymbolSCLToken.java
index f841654..f841654 100644
--- a/base/src/bjc/dicelang/scl/SymbolSCLToken.java
+++ b/scl/src/main/java/bjc/dicelang/scl/SymbolSCLToken.java
diff --git a/base/src/bjc/dicelang/scl/WordListSCLToken.java b/scl/src/main/java/bjc/dicelang/scl/WordListSCLToken.java
index ffa0e85..ffa0e85 100644
--- a/base/src/bjc/dicelang/scl/WordListSCLToken.java
+++ b/scl/src/main/java/bjc/dicelang/scl/WordListSCLToken.java
diff --git a/base/src/bjc/dicelang/scl/WordSCLToken.java b/scl/src/main/java/bjc/dicelang/scl/WordSCLToken.java
index ea3118e..ea3118e 100644
--- a/base/src/bjc/dicelang/scl/WordSCLToken.java
+++ b/scl/src/main/java/bjc/dicelang/scl/WordSCLToken.java
diff --git a/base/src/bjc/dicelang/scl/WordsSCLToken.java b/scl/src/main/java/bjc/dicelang/scl/WordsSCLToken.java
index 9a57176..9a57176 100644
--- a/base/src/bjc/dicelang/scl/WordsSCLToken.java
+++ b/scl/src/main/java/bjc/dicelang/scl/WordsSCLToken.java