move first->() out of grammar definition