A programmable document processor