PROGRAMMER: A Language for Writing Grammars