+\def\@progcr{\futurelet\@tempa\@progcr@i}
+{\def\:{\gdef\@progcr@sp}\: {\@progcr}}
+\def\@progcr@i{%
+ \ifx\@tempa\@sptoken\let\next@\@progcr@sp\else
+ \if1\ifx\@tempa[1\else
+ \ifx\@tempa*1\else
+ 0\fi\fi
+ \let\next@\prog@@cr\else
+ \if1\ifx\@tempa+1\else
+ \ifx\@tempa-1\else
+ 0\fi\fi
+ \let\next@\@progcr@ii\else
+ \let\next@\@progcr@a\fi\fi\fi
+ \next@}
+\def\@progcr@a{\prog@@cr*{}\ignorespaces}
+\def\@progcr@ii#1{\csname @progcr@#1\endcsname\ignorespaces}
+\@namedef{@progcr@+}{\prog@@cr[\medskipamount]}
+\@namedef{@progcr@-}{\prog@@cr*[\jot]}