-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
40 lines (36 loc) · 932 Bytes
/
main.go
File metadata and controls
40 lines (36 loc) · 932 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package main
import (
. "miniSQL/src/Interpreter/lexer"
"strings"
)
// // 解析的结果
// type LexerResult struct {
// Token int
// Literal string
// }
func main() {
s := strings.NewReader("creat table tabel_name where key <= 1")
l := NewScanner(s)
p := NewTokenizer()
result := &LexerResult{}
lastToken := 0
for {
tok, str := l.Scan()
// fmt.Print(tok)
// fmt.Print(" ")
// fmt.Println(str)
// if tok == 1 {
// break
// }
switch tok {
case T_EOF:
// Stop lex
case T_IDENT, T_INTEGER, T_FLOAT, T_STRING, T_LEFT_PARENTHESIS, T_RIGHT_PARENTHESIS, T_COMMA, T_SEMICOLON, T_EQUAL, T_ANGLE_LEFT, T_ANGLE_RIGHT, T_ANGLE_LEFT_EQUAL, T_ANGLE_RIGHT_EQUAL, T_NOT_EQUAL, T_ASTERISK, T_POINT:
result.Literal = str
// default:
// log.Printf("UnexpectedToken: tok is %d, lit is %s\n", tok, lit)
// return nil, UnexpectedTokenErr
}
result.Token = p.FromStrLit(str, tok, lastToken)
}
}