diff options
| author | student <student@localhost> | 2018-02-12 12:14:27 -0500 |
|---|---|---|
| committer | student <student@localhost> | 2018-02-12 12:14:27 -0500 |
| commit | a15873fb42e8db3b2101330514b2208ef3490d70 (patch) | |
| tree | 3883743f9d91363a28e6b7cda3f8fb1bcdb591d2 /base/src/bjc/dicelang/scl/WordSCLToken.java | |
| parent | c25b68c6b24d86b7d1169ad4ec1e619d79a2b38d (diff) | |
Further refactor SCL token organization
Added some more SCL token subclasses to make it obvious what classes
went to what token types.
Diffstat (limited to 'base/src/bjc/dicelang/scl/WordSCLToken.java')
| -rw-r--r-- | base/src/bjc/dicelang/scl/WordSCLToken.java | 44 |
1 files changed, 44 insertions, 0 deletions
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<String, WordSCLToken.Word> builtinWords; + + static { + /* Init builtin words. */ + builtinWords = new HashMap<>(); + + builtinWords.put("makearray", MAKEARRAY); + builtinWords.put("+stream", NEWSTREAM); + builtinWords.put(">stream", LEFTSTREAM); + builtinWords.put("<stream", RIGHTSTREAM); + builtinWords.put("-stream", DELETESTREAM); + builtinWords.put("<-stream", MERGESTREAM); + builtinWords.put("cvx", MAKEEXEC); + builtinWords.put("cvux", MAKEUNEXEC); + builtinWords.put("#", STACKCOUNT); + builtinWords.put("empty?", STACKEMPTY); + builtinWords.put("drop", DROP); + builtinWords.put("ndrop", NDROP); + builtinWords.put("nip", NIP); + builtinWords.put("nnip", NNIP); + } } |
