Re-entrant parser