A compiler writing system