diff options
| -rw-r--r-- | base/pom.xml | 10 | ||||
| -rw-r--r-- | base/src/bjc/dicelang/DiceLangEngine.java | 2 | ||||
| -rw-r--r-- | scl/.classpath | 26 | ||||
| -rw-r--r-- | scl/.project | 23 | ||||
| -rw-r--r-- | scl/.settings/org.eclipse.core.resources.prefs | 4 | ||||
| -rw-r--r-- | scl/.settings/org.eclipse.jdt.core.prefs | 5 | ||||
| -rw-r--r-- | scl/.settings/org.eclipse.m2e.core.prefs | 4 | ||||
| -rw-r--r-- | scl/pom.xml | 60 | ||||
| -rw-r--r-- | scl/src/main/java/bjc/App.java | 13 | ||||
| -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.java | 146 | ||||
| -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 |
