package token type TokenType string type Token struct { Type TokenType Literal string } const ( ILLEGAL = "ILLEGAL" EOF = "EOF" COMMENT = "COMMENT" // TODO(tijani): Implement this!! // Identifiers and basic type literals IDENT = "IDENT" INT = "INT" // Operators ASSIGN = "=" PLUS = "+" MINUS = "-" BANG = "!" ASTERISK = "*" SLASH = "/" EQ = "==" NOT_EQ = "!=" LT = "<" GT = ">" // Delimiters COMMA = "," SEMICOLON = ";" LPAREN = "(" RPAREN = ")" LBRACE = "{" RBRACE = "}" // Keywords FUNCTION = "FUNCTION" LET = "LET" IF = "IF" ELSE = "ELSE" TRUE = "TRUE" FALSE = "FALSE" RETURN = "RETURN" STRING = "STRING" ) var keywords = map[string]TokenType{ "fn": FUNCTION, "let": LET, "if": IF, "else": ELSE, "true": TRUE, "false": FALSE, "return": RETURN, } func LookupIdentifier(ident string) TokenType { if tok, ok := keywords[ident]; ok { return tok } return IDENT }