2022-10-20 10:04:28 +00:00
|
|
|
package mmql
|
|
|
|
|
|
|
|
type TokenType int
|
|
|
|
|
|
|
|
type Token struct {
|
|
|
|
Type TokenType
|
|
|
|
Value string
|
|
|
|
}
|
|
|
|
|
|
|
|
const (
|
|
|
|
K_SPACES = "\t\n\r "
|
2022-10-21 12:49:35 +00:00
|
|
|
// Must be defined in pairs with
|
|
|
|
// open bracket on left and close bracket on right
|
2022-10-20 10:04:28 +00:00
|
|
|
K_BRACKETS = "()[]{}"
|
|
|
|
K_QUOTES = "'\"`"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
UnknownToken TokenType = iota
|
|
|
|
KeywordToken
|
|
|
|
BracketToken
|
|
|
|
SquareBracketToken
|
|
|
|
CurlyBracketToken
|
|
|
|
SingleQuote
|
|
|
|
DoubleQuote
|
|
|
|
AccuteAccentQuote
|
|
|
|
)
|
|
|
|
|
|
|
|
var KEYWORDS = []string {
|
|
|
|
"ANYWHERE",
|
|
|
|
"BOUGHT",
|
|
|
|
"BUY",
|
|
|
|
"CREATE",
|
|
|
|
"EVERY",
|
|
|
|
"EXCHANGE",
|
|
|
|
"FOR",
|
|
|
|
"FROM",
|
|
|
|
"GET",
|
|
|
|
"LIMIT",
|
|
|
|
"LIST",
|
|
|
|
"OF",
|
|
|
|
"SELL",
|
|
|
|
"SOLD",
|
|
|
|
"TRIGGER",
|
|
|
|
"TRIGGERS",
|
|
|
|
"TYPE",
|
|
|
|
"UPDATE",
|
|
|
|
"WITH",
|
|
|
|
}
|
|
|
|
|
2022-10-21 12:49:35 +00:00
|
|
|
var STATEMENTS = map[string] func( *Lexer ) ( IStatement, error ) {
|
2022-10-20 10:04:28 +00:00
|
|
|
"BUY": _buyStatement,
|
|
|
|
}
|