func appendNextToken(l *LLk) {
	for t := range l.c {
		l.tkns = append(l.tkns, t)
		return
	}
	l.tkns = append(l.tkns, lexer.Token{Type: lexer.ItemEOF})
}
appendNextToken tries to append a new token. If not tokens are available
it appends ItemEOF token.
package grammar
import (
	"fmt"
	"github.com/google/badwolf/bql/lexer"
)
type LLk struct {
	k    int
	c    <-chan lexer.Token
	tkns []lexer.Token
}
func NewLLk(input string, k int) *LLk {
	c := lexer.New(input, 2*k)  
	l := &LLk{
		k: k,
		c: c,
	}
	for i := 0; i < k+1; i++ {
		appendNextToken(l)
	}
	return l
}