package token /** * @Author: simon * @Author: ynwdlxm@163.com * @Date: 2022/10/2 上午10:44 * @Desc: */ const ( ILLEGAL = "ILLEGAL" EOF = "EOF" // Identifiers + literals IDENT = "IDENT" // add, foobar, x, y ... INT = "INT" // 123456 STRING = "STRING" // Operators ASSIGN = "=" PLUS = "+" MINUS = "-" BANG = "!" ASTERISK = "*" SLASH = "/" LT = "<" GT = ">" EQ = "==" NOT_EQ = "!=" // Delimiters COMMA = "," SEMICOLON = ";" COLON = ":" LPAREN = "(" RPAREN = ")" LBRACE = "{" RBRACE = "}" LBRACKET = "[" RBRACKET = "]" // Keywords FUNCTION = "FUNCTION" LET = "LET" TRUE = "TRUE" FALSE = "FALSE" IF = "IF" ELSE = "ELSE" RETURN = "RETURN" ) var keyword = map[string]TypeToken{ "fn": FUNCTION, "let": LET, "true": TRUE, "false": FALSE, "if": IF, "else": ELSE, "return": RETURN, } func LookupIdent(ident string) TypeToken { if tok, ok := keyword[ident]; ok { return tok } return IDENT } type TypeToken string type Token struct { Type TypeToken Literal string }