1package builder 2 3import ( 4 "io/ioutil" 5 "strings" 6 "testing" 7 8 "github.com/mna/pigeon/bootstrap" 9) 10 11var grammar = ` 12{ 13var test = "some string" 14 15func init() { 16 fmt.Println("this is inside the init") 17} 18} 19 20start = additive eof 21additive = left:multiplicative "+" space right:additive { 22 fmt.Println(left, right) 23} / mul:multiplicative { fmt.Println(mul) } 24multiplicative = left:primary op:"*" space right:multiplicative { fmt.Println(left, right, op) } / primary 25primary = integer / "(" space additive:additive ")" space { fmt.Println(additive) } 26integer "integer" = digits:[0123456789]+ space { fmt.Println(digits) } 27space = ' '* 28eof = !. { fmt.Println("eof") } 29` 30 31func TestBuildParser(t *testing.T) { 32 p := bootstrap.NewParser() 33 g, err := p.Parse("", strings.NewReader(grammar)) 34 if err != nil { 35 t.Fatal(err) 36 } 37 if err := BuildParser(ioutil.Discard, g); err != nil { 38 t.Fatal(err) 39 } 40} 41