Files

53 lines
1.0 KiB
Go

package repl
import (
"fmt"
"strings"
. "godb/internals/buffer"
. "godb/internals/vm"
)
func PrintConsole() {
fmt.Print("godb > ")
}
func Run() {
inputBuffer := NewInputBuffer()
statement := NewStatement()
table := NewTable()
for {
PrintConsole()
inputBuffer.ReadConsole()
if len(inputBuffer.Buffer) > 0 && strings.HasPrefix(inputBuffer.Buffer, ".") {
switch DoMetaCommands(inputBuffer) {
case MetaCommandSuccess:
continue
case MetaCommandUnrecognised:
fmt.Printf("unrecognised command %v\n", inputBuffer.Buffer)
continue
}
}
switch statement.PrepareStatements(inputBuffer) {
case PrepareSuccess:
//todo
case PrepareSyntaxError:
fmt.Println("Syntax error, could not parse statement")
case PrepareUnrecognised:
fmt.Printf("Unrecognised keyword at the start of '%s'.\n", inputBuffer.Buffer)
}
switch statement.ExecuteStatement(table) {
case ExecuteSuccess:
fmt.Println("Executed.")
case ExecuteTableFull:
fmt.Println("Error: Table is full")
case ExecuteFail:
//todo
}
}
}