package rsql // Tokens for RSQL FIQL const ( TokIllegal = "TokIllegal" TokEOF = "TokEOF" TokIdent = "TokIdent" TokInteger = "TokInteger" TokString = "TokString" TokFloat = "TokFloat" TokExtend = "TokExtend" TokLParen = "(" TokRParen = ")" TokLBracket = "[" TokRBracket = "]" TokLIKE = "~" TokNLIKE= "!~" TokNOT = "!" TokLT = "<" TokGT = ">" TokLE = "<=" TokGE = ">=" TokEQ = "==" TokNEQ = "!=" TokAND = ";" TokOR = "," TokTRUE = "true" TokFALSE = "false" TokNULL = "null" ) var keywords = map[string]TokenType { "true": TokTRUE, "false": TokFALSE, "null": TokNULL, "and": TokAND, "or": TokOR, } // TokenType is a token enumeration type TokenType string // Token is a type and literal pair type Token struct { Type TokenType Literal string } func newToken(tokenType TokenType, ch rune) Token { return Token{Type: tokenType, Literal: string(ch)} } func lookupIdent(ident string) TokenType { if tok, ok := keywords[ident]; ok { return tok } return TokIdent }