package token // import "monkey/token" //go:generate stringer -type=TokenType type TokenType int const ( ILLEGAL TokenType = iota EOF // Identifiers + literals IDENT // add, foobar, x, y, ... INTEGER // 1343456 STRING // "foobar" // Operators ASSIGN // "=" PLUS // "+" MINUS // "-" BANG // "!" ASTERISK // "*" SLASH // "/" LESS // "<" MORE // ">" EQ // "==" NOT_EQ // "!=" // Delimiters COMMA // "," SEMICOLON // ";" COLON // ":" LPAREN // "(" RPAREN // ")" LBRACE // "{" RBRACE // "}" LBRACKET // "[" RBRACKET // "]" // Keywords FUNCTION LET TRUE FALSE IF ELSE RETURN MACRO ) type Token struct { Type TokenType Literal string } var keywords = map[string]TokenType{ "fn": FUNCTION, "let": LET, "true": TRUE, "false": FALSE, "if": IF, "else": ELSE, "return": RETURN, "macro": MACRO, } func LookupIdent(ident string) TokenType { if tok, ok := keywords[ident]; ok { return tok } return IDENT }