Mercurial > hg > Members > anatofuz > monkey
view token/token.go @ 3:6bd28d00a4f4 default tip lexer
...
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 19 May 2020 18:23:57 +0900 |
parents | a1166907ac2d |
children |
line wrap: on
line source
package token const ( ILLEGAL = "ILLEGAL" EOF = "EOF" IDENT = "IDENT" INT = "INT" // Operators ASSIGN = "=" PLUS = "+" MINUS = "-" BANG = "!" ASTERISK = "*" SLASH = "/" LT = "<" GT = ">" COMMA = "," SEMICOLON = ";" LPAREN = "(" RPAREN = "(" LBRACE = "{" RBRACE = "}" // Keywords FUNCTION = "FUNCTION" LET = "LET" TRUE = "TRUE" FALSE = "FALSE" IF = "IF" ELSE = "ELSE" RETURN = "RETURN" ) type TokenType string 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, } //LookupIdent is jugde ident or defined keywords func LookupIdent(ident string) TokenType { if tok, ok := keywords[ident]; ok { return tok } return IDENT }