generator + parser