diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:56:09 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:56:09 +0000 |
commit | 3c45ead856093bda97671c92bbc3fa9768918e91 (patch) | |
tree | 7cd45d8624b1693f5f61f9221074075d817feab2 /Master/texmf-dist/tex/latex/fp/defpattern.sty | |
parent | f608edbff24385a77c97e230f31fe5c1fb422a71 (diff) |
fp
git-svn-id: svn://tug.org/texlive/trunk@939 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/fp/defpattern.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/fp/defpattern.sty | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/fp/defpattern.sty b/Master/texmf-dist/tex/latex/fp/defpattern.sty new file mode 100644 index 00000000000..1d5787ff13f --- /dev/null +++ b/Master/texmf-dist/tex/latex/fp/defpattern.sty @@ -0,0 +1,31 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{defpattern}[1994/10/12] + +\message{% + `\string\defpattern-macro (adapted from \string\howto\space (A. Jeffrey: 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]}} + |