Initial giu version, not very good looking, maybe prefer CharmBracelet Tea

This commit is contained in:
Pablu
2025-10-28 19:13:43 +01:00
parent 396b531013
commit e2d39f715f
10 changed files with 313 additions and 56 deletions

View File

@@ -2,13 +2,17 @@ package sql
import "fmt"
type Statement interface {
isEnumValue()
}
type CreateTableStatement struct {
TableName string
Columns []Column
}
func (c *CreateTableStatement) Print() {
fmt.Printf("Name: %v\nColumns:\n", c.TableName)
fmt.Printf("Name: %v\nColumns:\n", c.TableName)
for _, column := range c.Columns {
fmt.Printf("- Name: %v\n Type: %v\n Extras:\n", column.Name, column.Type)
for _, extra := range column.Extra {
@@ -22,3 +26,12 @@ type Column struct {
Type string
Extra []string
}
// Unused, just for example sake for now
type SelectStatement struct {
From string
Fields []string
}
func (_ *CreateTableStatement) isEnumValue() {}
func (_ *SelectStatement) isEnumValue() {}

View File

@@ -22,7 +22,7 @@ func NewParser(r io.Reader) *Parser {
return &Parser{s: NewLexer(r)}
}
func (p *Parser) Parse() (*CreateTableStatement, error) {
func (p *Parser) Parse() (Statement, error) {
tok, ok := p.expectOne(CREATE, EOF)
if !ok {
return nil, p.unexpectedToken(CREATE, EOF)

View File

@@ -7,7 +7,5 @@ import (
func arrayToString(a []Token, delim string) string {
return strings.Trim(strings.Replace(fmt.Sprint(a), " ", delim, -1), "[]")
//return strings.Trim(strings.Join(strings.Split(fmt.Sprint(a), " "), delim), "[]")
//return strings.Trim(strings.Join(strings.Fields(fmt.Sprint(a)), delim), "[]")
return strings.Trim(strings.ReplaceAll(fmt.Sprint(a), " ", delim), "[]")
}