Add more syntax to lexer and parser, and make improvements to tview
This commit is contained in:
57
sql/lexer.go
57
sql/lexer.go
@@ -21,6 +21,9 @@ const (
|
||||
COMMA
|
||||
ASTERIKS
|
||||
ASSIGN
|
||||
BACKQUOTE
|
||||
QUOTE
|
||||
SINGLE_QUOTE
|
||||
|
||||
// Keywords
|
||||
CREATE
|
||||
@@ -41,36 +44,42 @@ const (
|
||||
NOT
|
||||
IF
|
||||
EXISTS
|
||||
AUTOINCREMENT
|
||||
CONSTRAINT
|
||||
|
||||
TEXT
|
||||
INTEGER
|
||||
NULL
|
||||
REAL
|
||||
BLOB
|
||||
NUMERIC
|
||||
)
|
||||
|
||||
var keywords map[string]Token = map[string]Token{
|
||||
"CREATE": CREATE,
|
||||
"TABLE": TABLE,
|
||||
"PRIMARY": PRIMARY,
|
||||
"FOREIGN": FOREIGN,
|
||||
"REFERENCES": REFERENCES,
|
||||
"KEY": KEY,
|
||||
"NOT": NOT,
|
||||
"TEXT": TEXT,
|
||||
"INTEGER": INTEGER,
|
||||
"NULL": NULL,
|
||||
"IF": IF,
|
||||
"EXISTS": EXISTS,
|
||||
"SELECT": SELECT,
|
||||
"FROM": FROM,
|
||||
"WHERE": WHERE,
|
||||
"AND": AND,
|
||||
"OR": OR,
|
||||
"ORDER": ORDER,
|
||||
"TOP": TOP,
|
||||
"REAL": REAL,
|
||||
"BLOB": BLOB,
|
||||
"CREATE": CREATE,
|
||||
"TABLE": TABLE,
|
||||
"PRIMARY": PRIMARY,
|
||||
"FOREIGN": FOREIGN,
|
||||
"REFERENCES": REFERENCES,
|
||||
"KEY": KEY,
|
||||
"NOT": NOT,
|
||||
"TEXT": TEXT,
|
||||
"INTEGER": INTEGER,
|
||||
"NULL": NULL,
|
||||
"IF": IF,
|
||||
"EXISTS": EXISTS,
|
||||
"SELECT": SELECT,
|
||||
"FROM": FROM,
|
||||
"WHERE": WHERE,
|
||||
"AND": AND,
|
||||
"OR": OR,
|
||||
"ORDER": ORDER,
|
||||
"TOP": TOP,
|
||||
"REAL": REAL,
|
||||
"BLOB": BLOB,
|
||||
"AUTOINCREMENT": AUTOINCREMENT,
|
||||
"CONSTRAINT": CONSTRAINT,
|
||||
"NUMERIC": NUMERIC,
|
||||
}
|
||||
|
||||
type Position struct {
|
||||
@@ -116,6 +125,12 @@ func (l *Lexer) Lex() (Position, Token, string) {
|
||||
return l.pos, ASTERIKS, "*"
|
||||
case '=':
|
||||
return l.pos, ASSIGN, "="
|
||||
case '`':
|
||||
return l.pos, BACKQUOTE, "`"
|
||||
case '"':
|
||||
return l.pos, QUOTE, "\""
|
||||
case '\'':
|
||||
return l.pos, SINGLE_QUOTE, "'"
|
||||
default:
|
||||
if unicode.IsSpace(r) {
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user