diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-10-09 16:02:10 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-10-09 16:02:10 -0300 |
| commit | f028ea6dc555fc5192a96b00b8e96e90dbf6de55 (patch) | |
| tree | 4b2a28ecbeb30095b50e6e9e8ac8b98fa8ddc79e /dice-lang/src/bjc/dicelang/expr/Tokens.java | |
| parent | be4675f9512060aa85b1e0a4f223208b51b55812 (diff) | |
TODO tagging
Diffstat (limited to 'dice-lang/src/bjc/dicelang/expr/Tokens.java')
| -rw-r--r-- | dice-lang/src/bjc/dicelang/expr/Tokens.java | 50 |
1 files changed, 22 insertions, 28 deletions
diff --git a/dice-lang/src/bjc/dicelang/expr/Tokens.java b/dice-lang/src/bjc/dicelang/expr/Tokens.java index f763d37..287d2b4 100644 --- a/dice-lang/src/bjc/dicelang/expr/Tokens.java +++ b/dice-lang/src/bjc/dicelang/expr/Tokens.java @@ -11,43 +11,39 @@ import java.util.Map; * */ public class Tokens { - /* - * Contains mappings from variable references to string names. - */ + /* Contains mappings from variable references to string names. */ private final Map<Integer, String> symTab; - /* - * Reverse index into the symbol table. - */ + /* Reverse index into the symbol table. */ private final Map<String, Integer> revSymTab; - /** - * Read-only view on the symbol table. - */ + /** Read-only view on the symbol table. */ public final Map<Integer, String> symbolTable; - /* - * Next index into the symbol table. - */ + /* Next index into the symbol table. */ private int nextSym; - /* - * Mapping from literal tokens to token types. - */ + /* Mapping from literal tokens to token types. */ private final Map<String, TokenType> litTokens; - /** - * Create a new set of tokens. - */ + /** Create a new set of tokens. */ public Tokens() { + /* Create tables. */ symTab = new HashMap<>(); revSymTab = new HashMap<>(); + /* Init public view. */ symbolTable = Collections.unmodifiableMap(symTab); + /* Set sym ID. */ nextSym = 0; + /* + * Setup literal mappings. + * + * @NOTE + * Should this be a static member? + */ litTokens = new HashMap<>(); - litTokens.put("+", TokenType.ADD); litTokens.put("-", TokenType.SUBTRACT); litTokens.put("*", TokenType.MULTIPLY); @@ -68,32 +64,30 @@ public class Tokens { */ public Token lexToken(final String tok, final String raw) { if (litTokens.containsKey(tok)) { + /* Return matching literal token. */ return new Token(litTokens.get(tok), raw, this); } + /* Its a variable reference. */ return parseVRef(tok, raw); } - /* - * Parse a variable reference. - */ + /* Parse a variable reference. */ private Token parseVRef(final String tok, final String raw) { final Token tk = new Token(TokenType.VREF, raw, this); if (revSymTab.containsKey(tok)) { - /* - * Reuse the entry if it exists. - */ + /* Reuse the entry if it exists. */ tk.intValue = revSymTab.get(tok); } else { - /* - * Create a new entry. - */ + /* Create a new entry. */ tk.intValue = nextSym; + /* Record it. */ symTab.put(nextSym, tok); revSymTab.put(tok, nextSym); + /* Next ID. */ nextSym += 1; } |
