implement string parser