a context free grammar