Update tea and lexer

This commit is contained in:
Pablu
2026-01-19 22:49:22 +01:00
parent a8c7ad60c3
commit 1af6539deb
7 changed files with 293 additions and 38 deletions

View File

@@ -25,6 +25,10 @@ const (
QUOTE
SINGLE_QUOTE
// TYPES
TYPE_NUMERIC
TYPE_TEXT
// Keywords
CREATE
TABLE
@@ -157,6 +161,12 @@ func (l *Lexer) Lex() (Position, Token, string) {
}
return startPos, IDENT, lit
} else if unicode.IsNumber(r) {
startPos := l.pos
l.backup()
lit := l.lexIdent()
return startPos, TYPE_NUMERIC, lit
} else {
return l.pos, ILLEGAL, string(r)
}
@@ -176,7 +186,9 @@ func (l *Lexer) lexIdent() string {
}
l.pos.column++
if unicode.IsLetter(r) || unicode.IsNumber(r) || r == '_' {
// Dont allow dot, just for testing with numeric
if unicode.IsLetter(r) || unicode.IsNumber(r) || r == '_' || r == '.' {
// Change this to stringstream or something similar
lit = lit + string(r)
} else {

View File

@@ -39,7 +39,7 @@ func (p *Parser) parseInsert() (*InsertStatement, error) {
for loop := true; loop; {
_, tok, val := p.scan()
switch tok {
case IDENT:
case IDENT, TYPE_NUMERIC:
// TODO, convert to actual datatype?
values = append(values, val)
case COMMA, QUOTE, SINGLE_QUOTE, BACKQUOTE:
@@ -47,7 +47,7 @@ func (p *Parser) parseInsert() (*InsertStatement, error) {
case RPAREN:
loop = false
default:
return nil, p.unexpectedToken(IDENT, RPAREN, COMMA)
return nil, p.unexpectedToken(IDENT, RPAREN, COMMA, TYPE_NUMERIC)
}
}