a syntax directed editor