diff options
| author | Bobby <[email protected]> | 2023-10-29 00:36:24 -0400 |
|---|---|---|
| committer | Bobby <[email protected]> | 2023-10-29 00:37:13 -0400 |
| commit | abb94bc7da02ac69ade9a747a8a205741c96d35b (patch) | |
| tree | 4f93f86617e7e059fada90b0987efbbb3925d3cf /tokens | |
| parent | b86b6aba4631531f5cfe71a4b97c2f8cbf48d101 (diff) | |
| download | mana-abb94bc7da02ac69ade9a747a8a205741c96d35b.tar.xz mana-abb94bc7da02ac69ade9a747a8a205741c96d35b.zip | |
Added basic tokens and lexing
Diffstat (limited to 'tokens')
| -rw-r--r-- | tokens/tokens.go | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/tokens/tokens.go b/tokens/tokens.go new file mode 100644 index 0000000..b93d9f9 --- /dev/null +++ b/tokens/tokens.go @@ -0,0 +1,65 @@ +package tokens + +type TokenType string + +type Token struct { + Type TokenType + Literal string +} + +const ( + ILLEGAL = "ILLEGAL" + EOF = "EOF" + + // Identifiers + literals + IDENT = "IDENT" + INT = "INT" + + // Operators + ASSIGN = "=" + PLUS = "+" + MINUS = "-" + BANG = "!" + ASTERISK = "*" + SLASH = "/" + LT = "<" + GT = ">" + EQ = "==" + NOT_EQ = "!=" + + // Delimiters + COMMA = "," + SEMICOLON = ";" + + LPAREN = "(" + RPAREN = ")" + LBRACE = "{" + RBRACE = "}" + + // Keywords + FUNCTION = "FUNCTION" + LET = "LET" + IF = "IF" + ELSE = "ELSE" + TRUE = "TRUE" + FALSE = "FALSE" + RETURN = "RETURN" +) + +var keywords = map[string]TokenType { + "fn": FUNCTION, + "let": LET, + "if": IF, + "else": ELSE, + "true": TRUE, + "false": FALSE, + "return": RETURN, +} + +// LookupIdent looks up an identifier and returns the TokenType. +func LookupIdent(ident string) TokenType { + if tok, ok := keywords[ident]; ok { + return tok + } + return IDENT +} |
