From a15873fb42e8db3b2101330514b2208ef3490d70 Mon Sep 17 00:00:00 2001 From: student Date: Mon, 12 Feb 2018 12:14:27 -0500 Subject: Further refactor SCL token organization Added some more SCL token subclasses to make it obvious what classes went to what token types. --- base/src/bjc/dicelang/scl/WordSCLToken.java | 44 +++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'base/src/bjc/dicelang/scl/WordSCLToken.java') diff --git a/base/src/bjc/dicelang/scl/WordSCLToken.java b/base/src/bjc/dicelang/scl/WordSCLToken.java index 46aac4f..3fe78b3 100644 --- a/base/src/bjc/dicelang/scl/WordSCLToken.java +++ b/base/src/bjc/dicelang/scl/WordSCLToken.java @@ -1,8 +1,26 @@ package bjc.dicelang.scl; +import java.util.HashMap; +import java.util.Map; + +import static bjc.dicelang.scl.WordSCLToken.Word.*; + public class WordSCLToken extends SCLToken { + public static enum Word { + /* Array manipulation */ + MAKEARRAY, MAKEEXEC, MAKEUNEXEC, + /* Stream manipulation */ + NEWSTREAM, LEFTSTREAM, RIGHTSTREAM, DELETESTREAM, MERGESTREAM, + /* Stack manipulation */ + STACKCOUNT, STACKEMPTY, DROP, NDROP, NIP, NNIP, + } + public Word wordVal; + public WordSCLToken(String wrd) { + this(builtinWords.get(wrd)); + } + public WordSCLToken(Word wrd) { super(Type.WORD); @@ -35,4 +53,30 @@ public class WordSCLToken extends SCLToken { return false; return true; } + + public static boolean isBuiltinWord(String wrd) { + return builtinWords.containsKey(wrd); + } + + private static final Map builtinWords; + + static { + /* Init builtin words. */ + builtinWords = new HashMap<>(); + + builtinWords.put("makearray", MAKEARRAY); + builtinWords.put("+stream", NEWSTREAM); + builtinWords.put(">stream", LEFTSTREAM); + builtinWords.put("