mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-19 01:15:21 +00:00
74 lines
1 KiB
Go
74 lines
1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"one/src/lexer"
|
|
"one/src/parser"
|
|
)
|
|
|
|
func parseOne(input string) {
|
|
theLexer := lexer.NewLexer([]byte(input))
|
|
theParser := parser.NewParser()
|
|
_, err := theParser.Parse(theLexer)
|
|
|
|
green := "\033[32;01m"
|
|
red := "\033[31;01m"
|
|
textdefault := "\033[0m"
|
|
|
|
if err != nil {
|
|
//fmt.Println(err)
|
|
fmt.Printf("%sFail%s %s\n", red, textdefault, input)
|
|
} else {
|
|
fmt.Printf("%sOK%s %s\n", green, textdefault, input)
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
if len(os.Args) == 1 {
|
|
|
|
fmt.Println("EXPECT OK")
|
|
goods := []string{
|
|
"",
|
|
";",
|
|
";;",
|
|
"x",
|
|
"x;x",
|
|
"x;x;x",
|
|
"x;x;x;x",
|
|
"x;",
|
|
"x;;",
|
|
";x",
|
|
";;x",
|
|
"x ; {}",
|
|
"{} ; x",
|
|
"{} x",
|
|
"{ x }",
|
|
"{ x; x }",
|
|
"x; { x; x }",
|
|
"{ x; x } x",
|
|
"{ x; x } ; x",
|
|
"{};{}",
|
|
"{} {}",
|
|
}
|
|
for _, input := range goods {
|
|
parseOne(input)
|
|
}
|
|
|
|
fmt.Println()
|
|
fmt.Println("EXPECT FAIL")
|
|
bads := []string{
|
|
"x x",
|
|
"x {}",
|
|
}
|
|
for _, input := range bads {
|
|
parseOne(input)
|
|
}
|
|
|
|
} else {
|
|
for _, arg := range os.Args[1:] {
|
|
parseOne(arg)
|
|
}
|
|
}
|
|
}
|