home *** CD-ROM | disk | FTP | other *** search
- \NeedsTeXFormat{LaTeX2e}
- \ProvidesPackage{defpattern}[1994/10/12]
-
- \message{%
- `\string\defpattern-macro (adapted from \string\howto\space (Alan Jeffrey in TeX and TUG NEWS 2(2)))'%
- }
-
- %define a macro \defpattern for defining ML-like pattern matching macros
- %adapted from the \howto-macro from tugboat
-
- \def\xcs#1#2{\expandafter#1\csname#2\endcsname}
- \newcount\actioncount
- \def\defpattern#1[#2]#3{%
- \xcs\ifx{\expandafter\gobble\string#1}\relax
- \def#1{\erroraction#1}\fi
- \advance\actioncount by 1\relax
- \expandafter\defaction\expandafter{#1}{#3}{#2}%
- \def\temp##1##2##3##4##5##6##7##8##9{\def\temp{[#2]}}%
- \temp\empty\empty\empty\empty\empty\empty\empty\empty\empty
- \edef#1{\noexpand\doaction\xcs\noexpand
- {action-\the\actioncount}\temp}}
- \def\defaction#1#2#3{%
- \xcs\def{action-\the\actioncount}##1[#3]{\applyto{#1}{#2}}}
- \def\gobble#1{}
- \def\applyto#1#2#3{#3{#1}{#2}}
- \def\doaction#1[#2][#3]{#1[#3]\success[#2]\failure[#3]}
- \def\success#1#2[#3]\failure[#4]{#2}
- \def\failure#1#2{#1}
- \def\erroraction#1[#2]{%
- \errmessage{I don't know how to \string#1[#2]}}
-
-