miller/cmd/experiments/dsl_parser/one/main.go
2022-01-23 23:22:55 -05:00

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)
}
}
}