%!PS-Adobe-1.0 %%Creator: host:gish (Warren Gish, NCBI) %%Title: stdin (ditroff) %%CreationDate: Sun Jul 26 21:50:41 1992 %%EndComments % Start of psdit.pro -- prolog for ditroff translator % Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. % GOVERNMENT END USERS: See Notice file in TranScript library directory % -- probably /usr/lib/ps/Notice % RCS: $Header: psdit.pro,v 2.2 87/11/17 16:40:42 byron Rel $ /$DITroff 140 dict def $DITroff begin /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def /xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F /pagesave save def}def /PB{save /psv exch def currentpoint translate resolution 72 div dup neg scale 0 0 moveto}def /PE{psv restore}def /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def /tan{dup sin exch cos div}bind def /point{resolution 72 div mul}bind def /dround {transform round exch round exch itransform}bind def /xT{/devname exch def}def /xr{/mh exch def /my exch def /resolution exch def}def /xp{}def /xs{docsave restore end}def /xt{}def /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not {fonts slotno fontname findfont put fontnames slotno fontname put}if}def /xH{/fontheight exch def F}bind def /xS{/fontslant exch def F}bind def /s{/fontsize exch def /fontheight fontsize def F}bind def /f{/fontnum exch def F}bind def /F{fontheight 0 le {/fontheight fontsize def}if fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def /X{exch currentpoint exch pop moveto show}bind def /N{3 1 roll moveto show}bind def /Y{exch currentpoint pop exch moveto show}bind def /S /show load def /ditpush{}def/ditpop{}def /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def /AN{4 2 roll moveto 0 exch ashow}bind def /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def /AS{0 exch ashow}bind def /MX{currentpoint exch pop moveto}bind def /MY{currentpoint pop exch moveto}bind def /MXY /moveto load def /cb{pop}def % action on unknown char -- nothing for now /n{}def/w{}def /p{pop showpage pagesave restore /pagesave save def}def /abspoint{currentpoint exch pop add exch currentpoint pop add exch}def /dstroke{currentpoint stroke moveto}bind def /Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def /arcellipse{oldmat currentmatrix pop currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def rad 0 rad -180 180 arc oldmat setmatrix}def /Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /De{gsave /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add 2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def /Barray 200 array def % 200 values in a wiggle /D~{mark}def /D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put Bcontrol Blen 2 sub 2 copy get 2 mul put Bcontrol Blen 1 sub 2 copy get 2 mul put /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub {/i exch def Bcontrol i get 3 div Bcontrol i 1 add get 3 div Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div /Xbi Xcont Bcontrol i 2 add get 2 div add def /Ybi Ycont Bcontrol i 3 add get 2 div add def /Xcont Xcont Bcontrol i 2 add get add def /Ycont Ycont Bcontrol i 3 add get add def Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto }for dstroke}if}def end /ditstart{$DITroff begin /nfonts 60 def % NFONTS makedev/ditroff dependent! /fonts[nfonts{0}repeat]def /fontnames[nfonts{()}repeat]def /docsave save def }def % character outcalls /oc {/pswid exch def /cc exch def /name exch def /ditwid pswid fontsize mul resolution mul 72000 div def /ditsiz fontsize resolution mul 72 div def ocprocs name known{ocprocs name get exec}{name cb} ifelse}def /fractm [.65 0 0 .6 0 0] def /fraction {/fden exch def /fnum exch def gsave /cf currentfont def cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto fnum show rmoveto currentfont cf setfont(\244)show setfont fden show grestore ditwid 0 rmoveto} def /oce {grestore ditwid 0 rmoveto}def /dm {ditsiz mul}def /ocprocs 50 dict def ocprocs begin (14){(1)(4)fraction}def (12){(1)(2)fraction}def (34){(3)(4)fraction}def (13){(1)(3)fraction}def (23){(2)(3)fraction}def (18){(1)(8)fraction}def (38){(3)(8)fraction}def (58){(5)(8)fraction}def (78){(7)(8)fraction}def (sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def (is){gsave 0 .15 dm rmoveto(\362)show oce}def (->){gsave 0 .02 dm rmoveto(\256)show oce}def (<-){gsave 0 .02 dm rmoveto(\254)show oce}def (==){gsave 0 .05 dm rmoveto(\272)show oce}def end % DIThacks fonts for some special chars 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def /FontBBox [-220 -280 900 900] def% a lie but ... /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put %space dup 8#110/rc put %right ceil dup 8#111/lt put %left top curl dup 8#112/bv put %bold vert dup 8#113/lk put %left mid curl dup 8#114/lb put %left bot curl dup 8#115/rt put %right top curl dup 8#116/rk put %right mid curl dup 8#117/rb put %right bot curl dup 8#120/rf put %right floor dup 8#121/lf put %left floor dup 8#122/lc put %left ceil dup 8#140/sq put %square dup 8#141/bx put %box dup 8#142/ci put %circle dup 8#143/br put %box rule dup 8#144/rn put %root extender dup 8#145/vr put %vertical rule dup 8#146/ob put %outline bullet dup 8#147/bu put %bullet dup 8#150/ru put %rule dup 8#151/ul put %underline pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put %/UniqueID 5 def /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{0 750 moveto 500 0 rls}def /vr{20 800 moveto 0 -770 rls}def /bv{20 800 moveto 0 -1000 rls}def /br{20 770 moveto 0 -1040 rls}def /ul{0 -250 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{355 333 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def /lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def /rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def /rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def /lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 250 def /lb 250 def /rt 250 def /rb 250 def /lk 250 def /rk 250 def /rc 250 def /lc 250 def /rf 250 def /lf 250 def /bv 250 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop ditstart (psc)xT 576 1 1 xr 1(Times-Roman)xf 1 f 2(Times-Italic)xf 2 f 3(Times-Bold)xf 3 f 4(Times-BoldItalic)xf 4 f 5(Helvetica)xf 5 f 6(Helvetica-Bold)xf 6 f 7(Courier)xf 7 f 8(Courier-Bold)xf 8 f 9(Symbol)xf 9 f 10(DIThacks)xf 10 f 10 s 1 f xi %%EndProlog %%Page: 1 1 10 s 0 xH 0 xS 1 f 576 384(DFA)N 749(\()X 789(3)X 842(\))X 2001(C)X 2074(LIBRARY)X 2445(FUNCTIONS)X 4027(DFA)X 4200(\()X 4240(3)X 4293(\))X 3 f 9 s 576 768(NAME)N 1 f 10 s 864 864(dfa,)N 1018(dfa_new,)X 1346(dfa_ignore,)X 1745(dfa_halton,)X 2139(dfa_restore,)X 2552(dfa_begin,)X 2924(dfa_add,)X 3235(dfa_close,)X 3595(dfa_perror,)X 3987(dfa_errstr,)X 864 960(dfa_nextstate,)N 1372(dfa_contains,)X 1862(dfa_accepts,)X 2322(dfa_extent,)X 2741(dfa_dump,)X 3145(dfa_scanf,)X 3537(dfa_sscanf,)X 3960(dfa_fscanf,)X 864 1056(dfa_pscanf,)N 1271(dfa_malloc,)X 1686(dfa_memalloc,)X 2199(dfa_memincr,)X 2681(dfa_memfree,)X 3165(dfa_destruct)X 9 f 3597(-)X 1 f 3676(deterministic)X 4129(\256nite-)X 864 1152(state)N 1031(automaton)X 1389(subroutines)X 3 f 9 s 576 1286(SYNOPSIS)N 10 s 864 1382(#include)N 1172()X 864 1516(#de\256ne)N 1128(DFA_MUNGEBIT)X 1817(1)X 864 1612(#de\256ne)N 1128(DFA_ISACCEPTING\(stateptr\))X 2250(DFA_ISMUNGED\(stateptr\))X 864 1708(#de\256ne)N 1128(DFA_ISMUNGED\(P\))X 1896(\(\(int\)\(P\))X 2193(&)X 2280(DFA_MUNGEBIT\))X 864 1804(#de\256ne)N 1128(DFA_MUNGED\(P\))X 1861(\(\(unsigned)X 2240(long\)\(P\))X 9 f 2536(|)X 2538(|)X 3 f 2574(DFA_MUNGEBIT\))X 864 1900(#de\256ne)N 1128(DFA_UNMUNGED\(P\))X 1937(\(\(unsigned)X 2316(int\)\(P\))X 2559(&)X 2646(\304DFA_MUNGEBIT\))X 864 2034(typedef)N 1138(char)X 1314(DFA,)X 1519(PNTR)X 1757(DFAPtr;)X 864 2168(typedef)N 1138(struct)X 1359(DFA_State)X 1758({)X 984 2264(struct)N 1205(DFA_State)X 1604(PNTR)X 1842(next[1];)X 904 2360(})N 956(DFA_State,)X 1375(PNTR)X 1613(DFA_StatePtr;)X 864 2494(typedef)N 1138(union)X 1352({)X 1404(/)X 9 f 1426(*)X 1428(*)X 3 f 1488(Patterns)X 1798(may)X 1965(need)X 2145(to)X 2232(be)X 2332(identi\256ed)X 2671(by)X 2775(a)X 2835(variety)X 3096(of)X 3183(means)X 9 f 3421(*)X 3423(*)X 3 f (/)S 984 2590(void)N 9 f 1152(*)X 1154(*)X 3 f (p;)S 984 2686(long)N 1150(i;)X 984 2782(unsigned)N 1309(long)X 1475(u;)X 904 2878(})N 956(DFA_PatID,)X 9 f 1406(*)X 1408(*)X 3 f (DFA_PatIDPtr;)S 864 3012(typedef)N 1138(struct)X 1359(DFA_Patlist)X 1802({)X 1854(/)X 9 f 1876(*)X 1878(*)X 3 f 1938(linked)X 2170(list)X 2292(of)X 2379(patIDs)X 9 f 2630(*)X 2632(*)X 3 f (/)S 984 3108(/)N 9 f 1006(*)X 1008(*)X 3 f 1068(the)X 1195("next")X 1450(\256eld)X 1616(in)X 1702(last)X 1842(item)X 2014(is)X 2087(NULL)X 9 f 2329(*)X 2331(*)X 3 f (/)S 984 3204(struct)N 1205(DFA_Patlist)X 1648(PNTR)X 1886(next;)X 984 3300(DFA_PatID)N 1414(patID;)X 904 3396(})N 956(DFA_Patlist,)X 9 f 1419(*)X 1421(*)X 3 f (DFA_PatlistPtr;)S 864 3530(typedef)N 1138(struct)X 1359(DFA_Accept)X 1821({)X 984 3626(DFA_StatePtr)N 1495(retState;)X 1815(/)X 9 f 1837(*)X 1839(*)X 3 f 1899(retState)X 2192(is)X 2265(Munged)X 2569(iff)X 2665(one)X 2805(patID)X 3025(is)X 3098(in)X 3184(the)X 3311(list)X 9 f 3433(*)X 3435(*)X 3 f (/)S 984 3722(DFA_PatlistPtr)N 1539(listptr;)X 1795(/)X 9 f 1817(*)X 1819(*)X 3 f 1879(pointer)X 2148(to)X 2235(linked)X 2467(list)X 2589(of)X 2676(patIDs)X 9 f 2927(*)X 2929(*)X 3 f (/)S 904 3818(})N 956(DFA_Accept,)X 1438(PNTR)X 1676 0.2788(DFA_AcceptPtr;)AX 864 4067(DFAPtr)N 1161(dfa_new\(amin,)X 1690(amax\))X 944 4163(int)N 1057(amin,)X 1270(amax;)X 864 4297(DFA_Error)N 1290(dfa_ignore\(dp,)X 1814(a\))X 944 4393(DFAPtr)N 1241(dp;)X 944 4489(int)N 1057(a;)X 864 4623(DFA_Error)N 1290(dfa_halton\(dp,)X 1813(a\))X 944 4719(DFAPtr)N 1241(dp;)X 944 4815(int)N 1057(a;)X 864 4949(DFA_Error)N 1290(dfa_restore\(dp,)X 1838(a\))X 944 5045(DFAPtr)N 1241(dp;)X 944 5141(int)N 1057(a;)X 864 5275(DFA_Error)N 1290(dfa_begin\(dp\))X 944 5371(DFAPtr)N 1241(dp;)X 864 5505(DFA_PatlistPtr)N 1419(dfa_add\(dp,)X 1853(pattern,)X 2147(patlen,)X 2400(patID\))X 944 5601(DFAPtr)N 1241(dp;)X 944 5697(unsigned)N 1269(char)X 9 f 1445(*)X 1447(*)X 3 f (pattern;)S 944 5793(size_t)N 1156(patlen;)X 1 f 576 6177(Sun)N 720(Release)X 990(4.1)X 2027(Last)X 2185(change:)X 2455(26)X 2555(July)X 2708(1992)X 4280(1)X 2 p %%Page: 2 2 10 s 0 xH 0 xS 1 f 576 384(DFA)N 749(\()X 789(3)X 842(\))X 2001(C)X 2074(LIBRARY)X 2445(FUNCTIONS)X 4027(DFA)X 4200(\()X 4240(3)X 4293(\))X 3 f 944 768(DFA_PatID)N 1374(patID;)X 864 902(DFA_Error)N 1290(dfa_close\(dp\))X 944 998(DFAPtr)N 1241(dp;)X 864 1132(DFA_StatePtr)N 1375(dfa_nextstate\(S,)X 1945(ch,)X 2065(pos,)X 2220(report\))X 944 1228(DFA_StatePtr)N 1455(S;)X 944 1324(int)N 1057(ch;)X 944 1420(size_t)N 1156(pos;)X 944 1516(int)N 1057(\()X 9 f 1084(*)X 1086(*)X 3 f 0.2404(report\)\(size_t)AS 1611(pos,)X 1766(void)X 9 f 1932(*)X 1934(*)X 3 f (patID\);)S 864 1650(DFA_Error)N 1290(dfa_destruct\(dp\))X 944 1746(DFAPtr)N 1241(dp;)X 864 1880(DFA_Error)N 1290(dfa_check\(dp\))X 944 1976(DFAPtr)N 1241(dp;)X 864 2110(DFA_PatlistPtr)N 1419(dfa_contains\(dp,)X 2009(pattern,)X 2303(patlen,)X 2556(patID\))X 944 2206(DFAPtr)N 1241(dp;)X 944 2302(const)N 1142(unsigned)X 1467(char)X 9 f 1643(*)X 1645(*)X 3 f (pattern;)S 944 2398(size_t)N 1156(patlen;)X 944 2494(void)N 9 f 1110(*)X 1112(*)X 3 f (patID;)S 864 2628(DFA_PatlistPtr)N 1419(dfa_accepts\(dp,)X 1975(pattern,)X 2269(patlen\))X 944 2724(DFAPtr)N 1241(dp;)X 944 2820(const)N 1142(unsigned)X 1467(char)X 9 f 1643(*)X 1645(*)X 3 f (pattern;)S 944 2916(size_t)N 1156(patlen;)X 864 3050(unsigned)N 1189(long)X 1355(dfa_extent\(dp\))X 944 3146(DFAPtr)N 1241(dp;)X 864 3280(unsigned)N 1189(long)X 1355(dfa_size\(dp\))X 944 3376(DFAPtr)N 1241(dp;)X 864 3625(DFA_Error)N 1290(dfa_perror\(s\))X 944 3721(char)N 9 f 1120(*)X 1122(*)X 3 f (s;)S 864 3855(char)N 9 f 1040(*)X 1042(*)X 3 f 0.2422(dfa_errstr\(errno\))AS 944 3951(DFA_Error)N 1370(errno;)X 864 4085(DFA_Error)N 1290(dfa_dump\(dp,)X 1795(fp\))X 944 4181(DFAPtr)N 1241(dp;)X 944 4277(FILE)N 9 f 1150(*)X 1152(*)X 3 f (fp;)S 864 4526(void)N 9 f 1030(*)X 1032(*)X 3 f (dfa_malloc\(dp,)S 1605(nbytes\))X 944 4622(DFAPtr)N 1241(dp;)X 944 4718(size_t)N 1156(nbytes;)X 864 4852(void)N 9 f 1030(*)X 1032(*)X 3 f 1092(\()X 9 f 1119(*)X 1121(*)X 3 f (dfa_memalloc\(falloc\)\))S 1930(\(size_t\))X 944 4948(void)N 9 f 1110(*)X 1112(*)X 3 f (\()S 9 f 1179(*)X 1181(*)X 3 f (falloc\)\(size_t\);)S 864 5082(void)N 1030(\()X 9 f 1057(*)X 1059(*)X 3 f 0.3542(dfa_memfree\(ffree\)\))AS 1818(\(void)X 9 f 2011(*)X 2013(*)X 3 f (\))S 944 5178(void)N 1110(\()X 9 f 1137(*)X 1139(*)X 3 f (ffree\)\(void)S 9 f 1561(*)X 1563(*)X 3 f (\);)S 864 5312(size_t)N 1076(dfa_memincr\(newincr\))X 944 5408(size_t)N 1156(newincr;)X 864 5657(DFA_Error)N 1290(dfa_scanf\(dp,)X 1774(report\))X 944 5753(DFAPtr)N 1241(dp;)X 944 5849(int)N 1057(\()X 9 f 1084(*)X 1086(*)X 3 f 0.2404(report\)\(size_t)AS 1611(pos,)X 1766 0.2708(DFA_AcceptPtr)AX 2340(ap\);)X 1 f 576 6233(Sun)N 720(Release)X 990(4.1)X 2027(Last)X 2185(change:)X 2455(26)X 2555(July)X 2708(1992)X 4280(2)X 3 p %%Page: 3 3 10 s 0 xH 0 xS 1 f 576 384(DFA)N 749(\()X 789(3)X 842(\))X 2001(C)X 2074(LIBRARY)X 2445(FUNCTIONS)X 4027(DFA)X 4200(\()X 4240(3)X 4293(\))X 3 f 864 768(DFA_Error)N 1290(dfa_sscanf\(dp,)X 1805(query,)X 2045(querylen,)X 2387(report\))X 944 864(DFAPtr)N 1241(dp;)X 944 960(const)N 1142(DFA_Letter)X 9 f 1582(*)X 1584(*)X 3 f (query;)S 944 1056(size_t)N 1156(querylen;)X 944 1152(int)N 1057(\()X 9 f 1084(*)X 1086(*)X 3 f 0.2404(report\)\(size_t)AS 1611(pos,)X 1766 0.2708(DFA_AcceptPtr)AX 2340(ap\);)X 864 1286(DFA_Error)N 1290(dfa_fscanf\(dp,)X 1801(fp,)X 1912(report\))X 944 1382(DFAPtr)N 1241(dp;)X 944 1478(int)N 1057(\()X 9 f 1084(*)X 1086(*)X 3 f 0.2404(report\)\(size_t)AS 1611(pos,)X 1766 0.2708(DFA_AcceptPtr)AX 2340(ap\);)X 944 1574(FILE)N 9 f 1150(*)X 1152(*)X 3 f (fp;)S 864 1708(DFA_Error)N 1290(dfa_pscanf\(dp,)X 1818(gettoken,)X 2152(stream,)X 2429(report\))X 944 1804(DFAPtr)N 1241(dp;)X 944 1900(int)N 1057(\()X 9 f 1084(*)X 1086(*)X 3 f (gettoken\)\(void)S 9 f 1640(*)X 1642(*)X 3 f (stream\),)S 1986(\()X 9 f 2013(*)X 2015(*)X 3 f 0.2404(report\)\(size_t)AS 2540(pos,)X 2695 0.2708(DFA_AcceptPtr)AX 3269(ap\);)X 944 1996(void)N 9 f 1110(*)X 1112(*)X 3 f (stream;)S 9 s 576 2130(DESCRIPTION)N 1 f 10 s 864 2226(These)N 1089(functions)X 1420(create)X 1646(a)X 1715(deterministic)X 2166(\256nite-state)X 2537(automaton)X 2909(\(DFA\))X 3157(that)X 3311(accepts)X 3582(or)X 3683(recognizes)X 4061(variable)X 864 2322(length,)N 1107 0.3309(metacharacter-free)AX 1735(expressions)X 2132(in)X 2217(an)X 2316(input)X 2503(stream.)X 2780(A)X 2861(Mealy)X 3089(machine)X 3384(implementation)X 3909(is)X 3984(employed,)X 864 2418(wherein)N 1148(output)X 1377(activity)X 1642(is)X 1720(linked)X 1945(to)X 2032(state)X 2204(transitions)X 2563(\(accepting)X 2924(transitions\),)X 3330(rather)X 3544(than)X 3708(in)X 3796(association)X 4178(with)X 864 2514(the)N 985(states)X 1186(themselves)X 1564(\(accepting)X 1921(states\))X 2148(as)X 2237(in)X 2321(a)X 2379(Moore)X 2615(machine.)X 2949(This)X 3113(can)X 3247(reduce)X 3484(the)X 3604(number)X 3871(of)X 3960(states)X 4160(in)X 4244(an)X 864 2610(automaton)N 1235(enormously)X 1646(and)X 1795(increases)X 2123(its)X 2231(search)X 2470(speed)X 2686(signi\256cantly)X 3114(over)X 3290(that)X 3443(of)X 3544(a)X 3614(lookup)X 3870(table)X 4060(method.)X 864 2706(Compared)N 1224(to)X 1311(a)X 1372(sparsely)X 1660(populated)X 2001(lookup)X 2248(table,)X 2449(an)X 2550(equivalent)X 2909(Mealy)X 3139(machine)X 3436(is)X 3514(much)X 3717(more)X 3907(compact)X 4204(and)X 864 2802(may)N 1034(easily)X 1253(reside)X 1477(in)X 1571(some)X 1772(central)X 2024(processor)X 2365(data)X 2532(caches;)X 2802(in)X 2897(cases)X 3100(where)X 3330(the)X 3461(patterns)X 3748(are)X 3880(short)X 4073(and)X 4222(the)X 864 2898(lookup)N 1110(table)X 1290(would)X 1514(be)X 1614(fully)X 1789(populated,)X 2149(the)X 2271(DFA)X 2455(implementation)X 2981(produces)X 3294(an)X 3393(automaton)X 3754(that)X 3897(is)X 3973(marginally)X 864 2994(larger)N 1072(than)X 1230(the)X 1348(lookup)X 1590(table.)X 1806(As)X 1915(pattern)X 2158(lengths)X 2409(increase,)X 2713(lookup)X 2955(tables)X 3162(quickly)X 3422(become)X 3692(too)X 3814(large)X 3995(for)X 4110(practi-)X 864 3090(cality,)N 1091(whereas)X 1384(a)X 1449(DFA)X 1638(handles)X 1912(such)X 2088(situations)X 2423(with)X 2594(ease)X 2762(as)X 2858(long)X 3029(as)X 3125(the)X 3252(pattern)X 3504(space)X 3712(is)X 3794(not)X 3925(signi\256cantly)X 864 3186(explored.)N 1214(A)X 1301(hash)X 1478(table)X 1664(method)X 1934(could)X 2142(be)X 2248(used)X 2425(instead)X 2682(to)X 2774(conserve)X 3090(storage,)X 3372(but)X 3504(at)X 3592(the)X 3720(expense)X 4009(of)X 4106(slower)X 864 3282(search)N 1090(speeds.)X 864 3416(An)N 987(initial)X 1198(DFA)X 1384(structure)X 1691(is)X 1770(created)X 2029(by)X 2135(calling)X 3 f 2379(dfa_new)X 1 f 2668(.)X 2734(The)X 2885(input)X 3075(alphabet)X 3373(is)X 3452(de\256ned)X 3714(at)X 3798(this)X 3939(point)X 4129(as)X 4222(the)X 864 3512(set)N 975(of)X 1064(all)X 1166(integers)X 1442(from)X 2 f 1620(amin)X 1 f 1802(through)X 2 f 2073(amax.)X 1 f 2289(Prior)X 2471(to)X 2555(calling)X 3 f 2795(dfa_begin)X 1 f 3154(to)X 3238(create)X 3453(the)X 3573(initial)X 3780(state)X 3948(of)X 4036(the)X 4155(auto-)X 864 3608(maton,)N 1110(optional)X 1398(calls)X 1571(to)X 3 f 1659(dfa_ignore)X 1 f 2054(and)X 3 f 2196(dfa_halton)X 1 f 2590(may)X 2754(be)X 2856(made,)X 3077(to)X 3166(specify)X 3425(individual)X 3776(letter)X 3968(values)X 4200(that)X 864 3704(the)N 1009(automaton)X 1394(is)X 1494(to)X 1603(either)X 1833(ignore)X 2085(or)X 2199(halt)X 2365(on,)X 2511(respectively,)X 2965(when)X 3185(encountered)X 3624(in)X 3732(the)X 3876(input)X 4086(stream.)X 3 f 864 3800(dfa_restore)N 1 f 1298(may)X 1477(be)X 1594(called)X 1827(to)X 1930(restore)X 2190(default)X 2454(behavior)X 2776(for)X 2911(any)X 3068(letter)X 3274(speci\256ed)X 3600(in)X 3704(a)X 3782(previous)X 4100(call)X 4258(to)X 3 f 864 3896(dfa_ignore)N 1 f 1253(or)X 3 f 1340(dfa_halton)X 1 f 1708(.)X 864 4030(A)N 943(single)X 1155(call)X 1292(to)X 3 f 1375(dfa_begin)X 1 f 1733(creates)X 1978(the)X 2097(initial)X 2304(state)X 2472(of)X 2560(the)X 2679(automaton.)X 3078(Only)X 3259(after)X 3428(this)X 3564(has)X 3692(been)X 3865(done)X 4043(can)X 4177(con-)X 864 4126(secutive)N 1153(calls)X 1326(be)X 1428(made)X 1628(to)X 3 f 1716(dfa_add)X 1 f 2021(to)X 2109(augment)X 2411(the)X 2535(skeletal)X 2806(automaton)X 3170(to)X 3258(recognize)X 3597(each)X 2 f 3771(pattern)X 1 f 4028(of)X 4120(length)X 2 f 864 4222(patlen)N 1 f 1094(bytes.)X 1333(On)X 1461(success,)X 3 f 1752(dfa_add)X 1 f 2061(returns)X 2314(a)X 2380(pointer)X 2637(to)X 2729(the)X 2857(DFA_Patlist)X 3286(structure)X 3597(for)X 3722(each)X 3901(newly)X 4128(added)X 864 4318(pattern/patID)N 1313(combination;)X 1756(on)X 1857(failure,)X 9 s 2106(NULL)X 10 s 2319(is)X 2393(returned)X 2682(and)X 2819(a)X 2876(description)X 3253(of)X 3341(the)X 3460(error)X 3638(is)X 3712(saved)X 3915(in)X 3 f 3997(dfaerrno.)X 1 f 864 4414(A)N 942(visible)X 1175(string)X 1377(description)X 1753(of)X 1840(the)X 1958(error)X 2135(can)X 2267(be)X 2363(displayed)X 2690(to)X 2772(stderr)X 2975(by)X 3075(calling)X 3 f 3313(dfa_perror.)X 1 f 864 4548(The)N 1017(structure)X 1326(of)X 1421(a)X 1485(DFA)X 1673(is)X 1755(completed)X 2118(by)X 2227(calling)X 3 f 2474(dfa_close)X 1 f 2790(.)X 2859(This)X 3030(function)X 3326(does)X 3502(not)X 3633(create)X 3855(any)X 4000(additional)X 864 4644(states,)N 1085(but)X 1210(it)X 1277(does)X 1447(allocate)X 1720(a)X 1779(temporary)X 2132(wrap-around)X 2566(buffer)X 2785(of)X 2874(DFA_State)X 3256(pointers)X 3536(and)X 3674(demands)X 3981(permanent)X 864 4740(heap)N 1036(storage)X 1288(for)X 1402(additional)X 1742(accepting)X 2070(transitions)X 2423(that)X 2563(may)X 2721(be)X 2817(required.)X 864 4874(A)N 951(DFA)X 1140(is)X 1222(built)X 1397(within)X 1630(longword-aligned)X 2229(storage)X 2490(obtained)X 2795(either)X 3007(by)X 3116(calling)X 3363(the)X 3490(default)X 3742(memory)X 4039(allocator)X 864 4970(malloc\(\))N 1169(or)X 1269(by)X 1382(calling)X 1633(the)X 1764(memory)X 2064(allocation)X 2413(function)X 2 f 2713(falloc)X 1 f 2928(speci\256ed)X 3246(to)X 3 f 3340(dfa_memalloc)X 1 f 3821(.)X 2 f 3893(falloc)X 1 f 4107(should)X 864 5066(return)N 1083(a)X 9 s 1144(NULL)X 10 s 1363(pointer)X 1617(if)X 1693(no)X 1800(further)X 2046(storage)X 2305(is)X 2385(available)X 2702(or)X 2796(if)X 2872(the)X 2997(DFA)X 3184(is)X 3264(otherwise)X 3603(not)X 3732(permitted)X 4066(to)X 4155(grow)X 864 5162(any)N 1002(further.)X 2 f 1283(falloc)X 1 f 1487(will)X 1633(be)X 1730(called)X 1943(with)X 2106(a)X 2163(request)X 2416(for)X 2531(a)X 2588(longword-aligned)X 3179(block)X 3378(of)X 3466(size)X 2 f 3612(memincr)X 1 f 3914(bytes,)X 4124(which)X 864 5258(may)N 1025(be)X 1124(altered)X 1366(from)X 1545(its)X 1643(default)X 1889(value)X 2087(by)X 2191(calling)X 3 f 2433(dfa_memincr)X 1 f 2892(.)X 2956(Typically,)X 2 f 3307(memincr)X 1 f 3612(has)X 3743(a)X 3803(value)X 4001(of)X 4092(several)X 864 5354(thousand)N 1177(bytes,)X 1390(or)X 1481(enough)X 1741(storage)X 1997(for)X 2115(at)X 2196(least)X 2366(a)X 2425(few)X 2569(states)X 2770(and)X 2909(their)X 3079(associated)X 3432(accepting)X 3763(transitions.)X 4159(Each)X 864 5450(block)N 1062(of)X 1149(this)X 1284(storage)X 1536(is)X 1609(then)X 1767(doled)X 1965(out)X 2087(in)X 2169(smaller)X 2425(chunks)X 2672(as)X 2759(necessary.)X 864 5584(All)N 988(heap)X 1162(storage)X 1416(acquired)X 1715(for)X 1831(a)X 1889(DFA)X 2071(through)X 2342(calls)X 2511(to)X 2595(the)X 2715(memory)X 3004(allocator)X 3307(can)X 3442(be)X 3541(released)X 3828(by)X 3931(a)X 3990(single)X 4204(call)X 864 5680(to)N 3 f 955(dfa_destruct)X 1 f 1387(.)X 1456(For)X 1596(each)X 1773(successful)X 2132(call)X 2277(to)X 2368(the)X 2495(memory)X 2791(allocator,)X 3 f 3121(dfa_destruct)X 1 f 3582(calls)X 3758(either)X 3970(the)X 4097(default)X 864 5776(memory)N 1160(free)X 1315(function)X 3 f 1611(free\(3\))X 1 f 1840(,)X 1889(or)X 1985(the)X 2112(function)X 2408(speci\256ed)X 2722(as)X 2818(the)X 2 f 2945(ffree)X 1 f 3121(argument)X 3453(to)X 3 f 3544(dfa_memfree)X 1 f 4000(,)X 4050(with)X 4222(the)X 576 6160(Sun)N 720(Release)X 990(4.1)X 2027(Last)X 2185(change:)X 2455(26)X 2555(July)X 2708(1992)X 4280(3)X 4 p %%Page: 4 4 10 s 0 xH 0 xS 1 f 576 384(DFA)N 749(\()X 789(3)X 842(\))X 2001(C)X 2074(LIBRARY)X 2445(FUNCTIONS)X 4027(DFA)X 4200(\()X 4240(3)X 4293(\))X 864 768(address)N 1125(of)X 1212(a)X 1268(block)X 1466(of)X 1553(storage)X 1805(that)X 1945(had)X 2081(been)X 2253(returned)X 2541(by)X 2641(the)X 2759(memory)X 3046(allocator.)X 864 902(After)N 1059(a)X 1120(DFA)X 1305(has)X 1437(been)X 1614(completed)X 1973(by)X 2078(calling)X 3 f 2321(dfa_close)X 1 f 2637(,)X 2682(use)X 2814(of)X 2906(the)X 3029(DFA)X 3214(to)X 3301(search)X 3532(an)X 3633(input)X 3822(stream)X 4061(requires)X 864 998(persistent)N 1192(testing)X 1426(of)X 1514(a)X 1571(``munge'')X 1918(\257ag)X 2059(encoded)X 2348(in)X 2431(the)X 2550(lowest-order)X 2976(bit)X 3080(of)X 3 f 3167(DFA_State)X 1 f 3566(pointers.)X 3884(A)X 3962(munge)X 4200(\257ag)X 864 1094(that)N 1061(is)X 1191(set)X 1357(reveals)X 1662(the)X 1837(encounter)X 2232(of)X 2377(an)X 2531(accepting)X 2917(transition.)X 3337(The)X 3 f 3540(DFA_ISACCEPTING)X 1 f (,)S 3 f 864 1190(DFA_ISMUNGED)N 1 f 1509(,)X 3 f 1550(DFA_MUNGED)X 1 f 2120(,)X 2161(and)X 3 f 2298(DFA_UNMUNGED)X 1 f 3005(macros)X 3258(are)X 3378(used)X 3546(to)X 3629(test,)X 3780(set,)X 3909(and)X 4045(clear)X 4222(the)X 3 f 864 1286(munge)N 1 f 1116(\257ag.)X 1297(When)X 1510(processing)X 1874(the)X 1993(input)X 2178(stream,)X 2433(a)X 2490(munged)X 3 f 2769(DFA_State)X 1 f 3169(pointer)X 3417(indicates)X 3724(that)X 3866(the)X 2 f 3986(unmunged)X 1 f 864 1382(pointer)N 1120(actually)X 1403 0.3889(references)AX 1764(an)X 1869(accepting)X 2206(transition)X 2537(structure)X 2847(of)X 2943(type)X 3 f 3110(DFA_Accept,)X 1 f 3601(not)X 3732(the)X 3859(next)X 4025(state;)X 4222(the)X 864 1478(appropriate)N 1250(next-state)X 1582(pointer)X 1829(must)X 2004(be)X 2100(retrieved)X 2406(from)X 2582(the)X 3 f 2700(retState)X 1 f 2993(\256eld)X 3155(of)X 3242(the)X 3 f 3360(DFA_Accept)X 1 f 3822(structure.)X 864 1612(The)N 1009(following)X 1340(sample)X 1587(code)X 1759(searches)X 2052(standard)X 2344(input)X 2528(using)X 2721(a)X 2777(previously)X 3135(created)X 3388(DFA,)X 2 f 3588(dp.)X 1 f 1232 1842(/)N 9 f 1254(*)X 1 f 1314(Sample)X 1574(code)X 1746(to)X 1828(search)X 2054(stdin)X 2229(using)X 2422(a)X 2478(DFA)X 9 f 2658(*)X 1 f (/)S 1232 2034(int)N 1336(report\(\);)X 1232 2130(DFA_StatePtr)N 1705(S;)X 1791(/)X 9 f 1813(*)X 1 f 1873(Current)X 2138(state)X 2305(pointer)X 9 f 2552(*)X 1 f (/)S 1232 2226(DFA_AcceptPtr)N 1773(A;)X 1873(/)X 9 f 1895(*)X 1 f 1955(for)X 2069(interpreting)X 2463(accepting)X 2791(transitions)X 9 f 3144(*)X 1 f (/)S 1232 2322(DFA_PatlistPtr)N 1744(P;)X 1830(/)X 9 f 1852(*)X 1 f 1912(for)X 2026(processing)X 2389(lists)X 2537(of)X 2624(patIDs)X 9 f 2858(*)X 1 f (/)S 1232 2418(int)N 1336(c;)X 1414(/)X 9 f 1436(*)X 1 f 1496(holds)X 1689(each)X 1857(input)X 2041(character)X 9 f 2357(*)X 1 f (/)S 1232 2706(/)N 9 f 1254(*)X 1 f 1314(Initialize)X 1619(the)X 1737(automaton)X 2095(by)X 2195(placing)X 2451(it)X 2515(in)X 2597(State)X 2777(0)X 9 f 2837(*)X 1 f (/)S 1232 2802(S)N 1296(=)X 1361(dp->state0;)X 1232 2994(for)N 1346(\(;;\))X 1464({)X 1352 3090(do)N 1452({)X 1530(/)X 9 f 1552(*)X 1 f 1612(PRIMARY)X 1996(INPUT)X 2252(PROCESSING)X 2760(LOOP)X 9 f 2989(*)X 1 f (/)S 1472 3186(/)N 9 f 1494(*)X 1 f 1554(Get)X 1690(next)X 1848(token)X 2046(from)X 2222(the)X 2340(input)X 2524(stream)X 9 f 2758(*)X 1 f (/)S 1472 3282(c)N 1528(=)X 1593(getchar\(\);)X 1392 3378(/)N 9 f 1414(*)X 1 f 1474(Transit)X 1721(to)X 1803(the)X 1921(next)X 2079(state,)X 2266(checking)X 2576(for)X 2690 0.3611(acceptance)AX 9 f 3064(*)X 1 f (/)S 1352 3474(})N 1410(while)X 1608(\()X 1655(!DFA_ISACCEPTING\(S)X 2493(=)X 2558(S->next[c]\))X 2949(\);)X 1352 3666(/)N 9 f 1374(*)X 1 f 1434(Check)X 1659(for)X 1773(end)X 1909(of)X 1996(\256le)X 2118(condition)X 9 f 2440(*)X 1 f (/)S 1352 3762(if)N 1421(\(c)X 1504(==)X 1614(EOF\))X 1812(return;)X 1352 3954(/)N 9 f 1374(*)X 1 f 1434(Process)X 1699(the)X 1817(accepting)X 2145(transition)X 9 f 2467(*)X 1 f (/)S 1352 4050(A)N 1430(=)X 1495 0.1125(\(DFA_AcceptPtr\)DFA_UNMUNGED\(S\);)AX 1352 4242(/)N 9 f 1374(*)X 1 f 1434(Obtain)X 1672(the)X 1790(return)X 2002(state)X 9 f 2169(*)X 1 f (/)S 1352 4338(S)N 1416(=)X 1481(A->retState;)X 1352 4530(/)N 9 f 1374(*)X 1 f 1434(Get)X 1570(the)X 1688(head)X 1860(of)X 1947(the)X 2065(linked)X 2285(list)X 2402(of)X 2489(PatIDs)X 9 f 2727(*)X 1 f (/)S 1352 4626(P)N 1416(=)X 1481(&A->pl;)X 1352 4818(/)N 9 f 1374(*)X 1 f 1434(Report)X 1672(each)X 1840(pattern)X 2083(accepted)X 2385(in)X 2467(this)X 2602(transition)X 9 f 2924(*)X 1 f (/)S 1352 4914(do)N 1472 5010(if)N 1541(\(report\(P->patID\))X 2133(!=)X 2225(0\))X 2312(break;)X 1352 5106(while)N 1550(\(P)X 1641(=)X 1706(P->chain\);)X 2065(/)X 9 f 2087(*)X 1 f 2147(Last)X 2305(item)X 2467(in)X 2549(list)X 2666(has)X 2793(NULL)X 3027(chain)X 3221(pointer)X 9 f 3468(*)X 1 f (/)S 1232 5202(})N 864 5336(Further)N 1120(examples)X 1443(of)X 1530(how)X 1688(to)X 1770(use)X 1897(DFAs)X 2108(may)X 2266(be)X 2362(found)X 2569(in)X 2651(the)X 2769(source)X 2999(code)X 3171(for)X 3 f 3285(dfa_fscanf)X 1 f 3641(.)X 864 5470(Each)N 1050(DFA)X 1235(structure)X 1541(begins)X 1775(with)X 1942(a)X 2003(header)X 2243(that)X 2388(contains)X 2680(information)X 3083(such)X 3255(as)X 3347(the)X 3471(alphabet)X 3769(in)X 3857(use,)X 4010(the)X 4134(initial)X 864 5566(state,)N 1051(memory)X 1338(management)X 1768(details,)X 2017(etc.)X 2171(Some)X 2373(of)X 2460(the)X 2578(useful)X 2794(elements)X 3099(within)X 3323(the)X 3441(DFA)X 3621(structure)X 3922(are:)X 3 f 864 5700(opstate)N 1 f 1584(the)X 1702(operational)X 2083(state)X 2250(of)X 2337(the)X 2455(automaton.)X 3 f 864 5834(state0)N 1 f 1584(the)X 1702(address)X 1963(of)X 2050(the)X 2168(initial)X 2374(state.)X 576 6218(Sun)N 720(Release)X 990(4.1)X 2027(Last)X 2185(change:)X 2455(26)X 2555(July)X 2708(1992)X 4280(4)X 5 p %%Page: 5 5 10 s 0 xH 0 xS 1 f 576 384(DFA)N 749(\()X 789(3)X 842(\))X 2001(C)X 2074(LIBRARY)X 2445(FUNCTIONS)X 4027(DFA)X 4200(\()X 4240(3)X 4293(\))X 3 f 864 768(statesize)N 1 f 1584(the)X 1702(size)X 1847(\(in)X 1956(bytes\))X 2172(of)X 2259(each)X 2427(state)X 2594(in)X 2676(the)X 2794(automaton.)X 3 f 864 902(nstates)N 1 f 1584(the)X 1702(number)X 1967(of)X 2054(states)X 2252(in)X 2334(the)X 2452(automaton.)X 3 f 864 1036(asize)N 1 f 1584(the)X 1702(number)X 1967(of)X 2054(letters)X 2270(in)X 2352(the)X 2470(alphabet.)X 3 f 864 1170(amin)N 1 f 1584(the)X 1702(smallest)X 1984(letter)X 2169(value)X 2363(present)X 2615(in)X 2697(the)X 2815(alphabet.)X 3 f 864 1304(amax)N 1 f 1584(the)X 1702(largest)X 1936(letter)X 2121(value)X 2315(present)X 2567(in)X 2649(the)X 2767(alphabet.)X 864 1438(Other)N 1070(characteristics)X 1553(of)X 1643(a)X 1702(DFA)X 1885(are)X 2007(not)X 2132(readily)X 2378(available)X 2691(as)X 2782(speci\256c)X 3051(elements)X 3360(in)X 3446(the)X 3568(structure.)X 3913(For)X 4048(a)X 4108(few)X 4253(of)X 864 1534(these)N 1062(cases,)X 1285(special)X 1540(purpose)X 1826(functions)X 2156(are)X 2287(provided.)X 3 f 2644(dfa_extent)X 1 f 3037(returns)X 3292(the)X 3422(total)X 3596(amount)X 3868(of)X 3967(storage)X 4231(\(in)X 864 1630(bytes\))N 1084(allocated)X 1398(to)X 1484(the)X 1606(DFA,)X 1810(while)X 3 f 2012(dfa_size)X 1 f 2312(returns)X 2559(the)X 2681(amount)X 2945(of)X 3036(that)X 3180(storage)X 3436(\(in)X 3549(bytes\))X 3769(which)X 3989(is)X 4066(actually)X 864 1726(in)N 946(use.)X 3 f 864 1860(dfa_dump)N 1 f 1237(produces)X 1550(a)X 1609(brief)X 1784(feature)X 2031(summary)X 2352(of)X 2442(the)X 2563(DFA)X 2746(and)X 2885(a)X 2944(full,)X 3098(printable)X 3406(dump)X 3611(of)X 3702(the)X 3824(binary)X 4053(contents)X 864 1956(of)N 951(the)X 1069(states,)X 1287(accepting)X 1615(transitions,)X 1988(and)X 2 f 2124(patID)X 1 f 2331(lists)X 2479(on)X 2579(the)X 2697(output)X 2921(stream)X 2 f 3155(fp.)X 1 f 864 2090(The)N 1009(enumerated)X 1404(operational)X 1785(states)X 1983(maintained)X 2359(in)X 2441(the)X 3 f 2559(opstate)X 1 f 2824(\256eld)X 2986(of)X 3073(a)X 3129(DFA)X 3309(structure)X 3610(are:)X 864 2224(dfaOpstateInit)N 1584(basic)X 1769(initialization)X 2193(completed.)X 864 2358(dfaOpstateMemInit)N 1584(memory)X 1871(management)X 2301(established.)X 864 2492(dfaOpstateAlphaInit)N 1584(alphabet)X 1876(has)X 2003(been)X 2175(validated)X 2489(and)X 2625(processed.)X 864 2626(dfaOpstateVirgin)N 1584(the)X 1702(DFA)X 1882(has)X 2009(not)X 2131(been)X 2303(fully)X 2474(initialized)X 2814(by)X 3 f 2914(dfa_begin)X 1 f 3271(and)X 3407(contains)X 3694(no)X 3794(states.)X 864 2760(dfaOpstateOpen)N 1584(the)X 1702(DFA)X 1882(is)X 1955(ready)X 2154(for)X 2268(adding)X 2506(a)X 2562(pattern.)X 864 2894(dfaOpstateBuilding)N 1584(a)X 1640(pattern)X 1883(is)X 1956(being)X 2154(added)X 2366(to)X 2448(the)X 2566(DFA.)X 864 3028(dfaOpstateClosing)N 1584(the)X 1702(DFA)X 1882(is)X 1955(in)X 2037(the)X 2155(process)X 2416(of)X 2503(being)X 2701(closed.)X 864 3162(dfaOpstateClosed)N 1584(the)X 1702(DFA)X 1882(is)X 1955(closed.)X 864 3296(dfaOpstateZombie)N 1584(the)X 1702(DFA)X 1882(is)X 1955(garbage,)X 2250(but)X 2372(somehow)X 2699(still)X 2838(lives.)X 864 3430(dfaOpstateDestroyed)N 1584(the)X 1702(DFA)X 1882(has)X 2009(been)X 2181(destroyed/deallocated)X 2901(and)X 3037(should)X 3270(not)X 3392(be)X 3488 0.3625(referenced.)AX 3 f 864 3564(dfa_pscanf)N 1 f 1267(is)X 1350(a)X 1416(sample)X 1673(input)X 1867(parser)X 2094(using)X 2297(a)X 2363(fully)X 2544(constructed)X 2944(DFA)X 3135(pointed)X 3406(to)X 3499(by)X 2 f 3610(dp.)X 3741(gettoken)X 1 f 4044(is)X 4128(called)X 864 3660(repeatedly)N 1220(by)X 3 f 1321(dfa_pscanf)X 1 f 1715(with)X 1878(the)X 1997(speci\256ed)X 2 f 2302(stream)X 1 f 2540(argument)X 2863(\(which)X 3106(is)X 3179(not)X 3301(checked\))X 3612(to)X 3694(obtain)X 3914(each)X 4082(charac-)X 864 3756(ter)N 969(from)X 1145(the)X 1263(input)X 1447(stream.)X 1721(When)X 1933(an)X 2029(accepting)X 2357(transition)X 2679(is)X 2752(encountered,)X 3186(the)X 3305(user-supplied)X 3758(function)X 2 f 4046(report)X 1 f 4267(is)X 864 3852(called)N 1087(with)X 1260(the)X 1389(current)X 1648(location)X 1937(in)X 2029(the)X 2157(input)X 2351(stream)X 2595(\()X 2 f 2622(pos)X 1 f 2733(\))X 2790(and)X 2936(the)X 2 f 3064(patID)X 1 f 3281(of)X 3378(a)X 3444(recognized)X 3827(pattern.)X 2 f 4120(report)X 1 f 864 3948(should)N 1097(return)X 1309(0)X 1369(on)X 1469(success,)X 1750(or)X 1837(return)X 2049(non-zero)X 2356(on)X 2457(failure)X 2688(upon)X 2869(which)X 3 f 3086(dfa_pscanf)X 1 f 3480(will)X 3625(abort)X 3811(its)X 3907(search)X 4134(of)X 4222(the)X 864 4044(input)N 1055(stream.)X 1336(Upon)X 1541(obtaining)X 1870(the)X 1995(return)X 2214(value)X 9 s 2413(EOF)X 10 s 2576(\()X 2 f 2603(i.e.)X 1 f 2701(,)X 2748(signed)X 2984(integer)X 3234(value)X 3434(-1\))X 3554(from)X 3736(a)X 3798(call)X 3940(to)X 2 f 4028(gettoken,)X 3 f 864 4140(dfa_pscanf)N 1 f 1257(returns)X 1500(normally)X 1809(to)X 1891(its)X 1986(caller.)X 3 f 9 s 576 4274(RETURN)N 898(VALUES)X 1 f 10 s 864 4370(Functions)N 1199(that)X 1339(return)X 1551(a)X 1607(size)X 1752(indicate)X 2026(an)X 2122(error)X 2299(condition)X 2621(with)X 2783(zero)X 2942(return)X 3154(values;)X 3401(a)X 3457(non-zero)X 3763(return)X 3975(value)X 4169(indi-)X 864 4466(cates)N 1058(no)X 1171(error.)X 1401(Functions)X 1749(that)X 1902(return)X 2127(an)X 2236(int)X 2353(Functions)X 2701(that)X 2854(return)X 3079(a)X 3148(pointer)X 3408(indicate)X 3694(errors)X 3914(by)X 4026(returning)X 9 s 864 4562(NULL)N 3 f 10 s 1081(\(0\))X 1 f 1175(.)X 1240(Upon)X 1444(receipt)X 1689(of)X 1782(an)X 1884(error)X 2067(return)X 2285(value,)X 3 f 2505(dfa_error)X 1 f 2866(may)X 3030(be)X 3132(called)X 3350(to)X 3438(determine)X 3785(the)X 3909(precise)X 4163(error)X 864 4658(encountered.)N 3 f 1317(dfa_clearerr)X 1 f 1766(may)X 1924(be)X 2020(called)X 2232(to)X 2314(reset)X 2486(an)X 2582(error)X 2759(condition.)X 3 f 9 s 576 4792(ERRORS)N 1 f 10 s 864 4888(The)N 1009(functions)X 1327(will)X 1471(fail)X 1598(under)X 1801(the)X 1919(following)X 2250(enumerated)X 2645(error)X 2822(conditions:)X 864 5022(dfaErrBadPtr)N 2 f 1664(dp)X 1 f 1764(is)X 1837(not)X 1959(a)X 2015(valid)X 2195(DFA)X 2375(pointer.)X 864 5156(dfaErrBadParm)N 1664(a)X 1720(bad)X 1856(value)X 2050(was)X 2195(speci\256ed)X 2500(for)X 2614(one)X 2750(or)X 2837(more)X 3022(parameters.)X 864 5290(dfaErroMemincrTooSml)N 2 f 1664 5386(memincr)N 1 f 1965(is)X 2038(too)X 2160(small;)X 2375(see)X 3 f 2498(dfa_memincr.)X 1 f 864 5520(dfaErrNoMem)N 1664(insuf\256cient)X 2044(memory)X 2331(available)X 2641(to)X 2723(complete)X 3037(request.)X 864 5654(dfaErrPatlen)N 2 f 1664(patlen)X 1 f 1884(is)X 1957(zero.)X 864 5788(dfaErrOpstate)N 2 f 1664(dp)X 1 f 1764(is)X 1837(in)X 1919(the)X 2037(wrong)X 2262(operational)X 2643(state)X 2810(for)X 2924(the)X 3042(called)X 3254(function.)X 576 6172(Sun)N 720(Release)X 990(4.1)X 2027(Last)X 2185(change:)X 2455(26)X 2555(July)X 2708(1992)X 4280(5)X 6 p %%Page: 6 6 10 s 0 xH 0 xS 1 f 576 384(DFA)N 749(\()X 789(3)X 842(\))X 2001(C)X 2074(LIBRARY)X 2445(FUNCTIONS)X 4027(DFA)X 4200(\()X 4240(3)X 4293(\))X 864 768(dfaErrNonAlpha)N 2 f 1664(pattern)X 1 f 1915(contains)X 2202(a)X 2258(letter)X 2443(not)X 2565(present)X 2817(in)X 2899(the)X 2 f 3017(alphabet.)X 1 f 864 902(dfaErrNullParm)N 1664(a)X 1720(required)X 2008(parameter)X 2350(is)X 9 s 2421(NULL)X 10 s (.)S 864 1036(dfaErrAlphaSize)N 1664(invalid)X 1906(alphabet)X 2198(size.)X 864 1170(dfaErrFileIO)N 1664(stream)X 1898(I/O)X 2025(error)X 2202(encountered)X 2615(by)X 3 f 2715(dfa_dump.)X 1 f 864 1304(dfaErrReport)N 1664(the)X 1793(report)X 2016(function)X 2314(called)X 2537(by)X 3 f 2648(dfa_scanf,)X 3028(dfa_sscanf,)X 3440(dfa_fscanf,)X 1 f 3848(or)X 3 f 3947(dfa_pscanf)X 1 f 1664 1400(returned)N 1952(non-zero.)X 864 1534(dfaErrUnknown)N 1664(non-speci\256c)X 2076(error.)X 3 f 9 s 576 1668(RESOURCE)N 1006(UTILIZATION)X 1 f 10 s 864 1764(Ef\256ciency)N 1223(of)X 1319(DFA)X 1508(construction)X 1933(can)X 2074(be)X 2179(broken)X 2431(down)X 2638(into)X 2791(the)X 2918(separate)X 3211(requirements)X 3660(for)X 3784(states,)X 4012(accepting)X 864 1860(transitions,)N 1240(linked)X 1463(lists)X 1614(of)X 2 f 1704(patID)X 1 f 1891(s)X 1945(associated)X 2298(with)X 2463(the)X 2584(accepting)X 2915(transitions,)X 3291(and)X 3430(working)X 3719(storage.)X 4013(Time)X 4204(and)X 864 1956(storage)N 1125(requirements)X 1573(for)X 1696(the)X 1823(states)X 2030(are)X 2158(no)X 2267(worse)X 2488(than)X 2655(linear)X 2867(functions)X 3194(of)X 3291(the)X 3419(total)X 3591(length)X 3821(of)X 3918(the)X 4046(patterns.)X 864 2052(Each)N 1050(state)X 1221(contains)X 1512(one)X 1652(next-state)X 1988(pointer)X 2239(for)X 2357(every)X 2560(letter)X 2749(in)X 2835(the)X 2957(alphabet,)X 3273(so)X 3368(the)X 3490(size)X 3639(of)X 3730(a)X 3790(DFA)X 3974(is)X 4051(linear)X 4258(in)X 864 2148(the)N 990(alphabet)X 1290(size.)X 1483(The)X 1636(Mealy)X 1869(machine)X 2169(implementation)X 2699(imposes)X 2990(an)X 3095(upper)X 3307(bound)X 3536(on)X 3645(the)X 3772(number)X 4046(of)X 4142(states)X 864 2244(that)N 1010(is)X 1089(the)X 1213(summation)X 1594(of)X 2 f 1687(S)X 9 f (**)S 2 f (m,)S 1 f 1911(for)X 2031(all)X 2 f 2137(m)X 2221(=)X 2300(0,)X 2385(1,)X 2470(2,...)X 2615(n-1,)X 1 f 2767(where)X 2 f 2989(S)X 1 f 3054(is)X 3132(the)X 3255(number)X 3525(of)X 3617(letters)X 3838(in)X 3925(the)X 4048(alphabet)X 864 2340(and)N 2 f 1007(n)X 1 f 1074(is)X 1154(the)X 1279(length)X 1506(of)X 1600(the)X 1725(longest)X 1983(pattern)X 2233(accepted)X 2542(by)X 2649(the)X 2774(DFA.)X 3001(This)X 3171(worst-case)X 3543(situation)X 3846(is)X 3927(encountered)X 864 2436(when)N 1062(all)X 1166(possible)X 1452(patterns)X 1730(of)X 1821(length)X 2 f 2045(n)X 1 f 2109(are)X 2232(to)X 2318(be)X 2418(recognized)X 2795(by)X 2899(the)X 3021(DFA,)X 3225(corresponding)X 3708(to)X 3794(situations)X 4123(where)X 864 2532(the)N 985(equivalent)X 1342(lookup)X 1587(table)X 1766(has)X 1896(all)X 1999(slots)X 2168(\256lled.)X 2395(When)X 2 f 2610(S)X 1 f 2673(is)X 2749(a)X 2808(power)X 3032(of)X 3122(two,)X 3285(the)X 3406(number)X 3674(of)X 3765(states)X 3967(is)X 4044(bounded)X 864 2628(by)N 2 f 964(S)X 9 f (**)S 2 f (n)S 1144(-)X 1191(1.)X 1 f 864 2762(Since)N 1063(each)X 1233(state)X 1402(contains)X 2 f 1691(S)X 1 f 1753(next-state)X 2087(pointers,)X 2387(the)X 2507(maximum)X 2853(number)X 3120(of)X 3209(next-state)X 3543(pointers)X 3823(in)X 3907(a)X 3965(DFA)X 4147(is)X 4222(the)X 864 2858(product)N 1132(of)X 2 f 1222(S)X 1 f 1284(and)X 1422(the)X 1542(upper)X 1747(bound)X 1969(on)X 2071(the)X 2191(number)X 2458(of)X 2547(states,)X 2767(or)X 2856(the)X 2976(summation)X 3353(of)X 2 f 3442(S)X 9 f (**)S 2 f (m,)S 1 f 3662(for)X 3778(all)X 2 f 3880(m)X 3960(=)X 4036(1,)X 4118(2,)X 4200(3,...)X 864 2954(n.)N 1 f 966(When)X 2 f 1180(S)X 1 f 1242(is)X 1317(a)X 1375(power)X 1599(of)X 1689(two,)X 1852(the)X 1973(total)X 2138(number)X 2406(of)X 2496(next-state)X 2831(pointers)X 3112(is)X 3188(limited)X 3437(to)X 2 f 3522(S)X 9 f (**)S 2 f (\(n+1\))S 3853(-)X 3903(S.)X 1 f 3986(Compared)X 864 3050(to)N 951(a)X 1012(lookup)X 1259(table)X 1440(for)X 1559(any)X 1700(size)X 1850(alphabet)X 2147(\(fully)X 2350(populated)X 2691(or)X 2782(not\),)X 2955(the)X 3077(lookup)X 3323(table)X 3503(requires)X 3786(storage)X 4042(for)X 2 f 4160(S)X 9 f (**)S 2 f (n)S 1 f 864 3146(entries.)N 1141(Essentially)X 1515(the)X 1636(leaf)X 1780(states)X 1981(of)X 2072(a)X 2132(worst-case)X 2500(DFA)X 2684(are)X 2807(equivalent)X 3165(in)X 3251(total)X 3417(size)X 3566(to)X 3652(the)X 3774(lookup)X 4020(table;)X 4222(the)X 864 3242(root)N 1017(state)X 1188(plus)X 1345(any)X 1485(internal)X 1754(states)X 1956(comprise)X 2274(the)X 2396(additional)X 2740(storage)X 2996(required)X 3287(by)X 3390(the)X 3511(DFA)X 3694(in)X 3779(worst)X 3980(case)X 4142(situa-)X 864 3338(tions.)N 1086(For)X 1224(arbitrarily)X 1572(sized)X 1764(alphabets,)X 2114(the)X 2239(number)X 2511(of)X 2605(pointers)X 2891(required)X 3187(by)X 3295(a)X 3359(DFA)X 3547(over)X 3718(that)X 3866(required)X 4162(for)X 4284(a)X 864 3434(lookup)N 1108(table)X 1286(is)X 1361(the)X 1481(summation)X 1858(of)X 2 f 1947(S)X 9 f (**)S 2 f (m,)S 1 f 2167(for)X 2283(all)X 2 f 2385(m)X 2465(=)X 2541(1,)X 2623(2,)X 2705(3,...)X 2847(n-1.)X 1 f 3016(If)X 3092(the)X 3212(alphabet)X 3506(is)X 3581(a)X 3639(power)X 3862(of)X 3951(two)X 4092(in)X 4175(size,)X 864 3530(this)N 1015(simpli\256es)X 1361(to)X 2 f 1459(S)X 9 f (**)S 2 f (n)S 1655(-)X 1718(2.)X 1 f 1814(Thus,)X 2030(in)X 2128(worst)X 2342(case)X 2517(situations,)X 2879(the)X 3013(DFA)X 3209(is)X 3298(not)X 3436(quite)X 3632(twice)X 3843(the)X 3978(size)X 4140(of)X 4244(an)X 864 3626(equivalent,)N 1248(fully)X 1429(populated)X 1775(lookup)X 2027(table.)X 2253(For)X 2393(short)X 2582(pattern)X 2834(lengths,)X 3114(this)X 3258(makes)X 3492(little)X 3667(practical)X 3973(difference.)X 864 3722(For)N 1008(long)X 1183(pattern)X 1439(lengths,)X 1723(many)X 1934(applications)X 2354(exist)X 2538(which)X 2767(do)X 2880(not)X 3015(require)X 3276(that)X 3429(the)X 3560(entire)X 3776(pattern)X 4032(space)X 4244(be)X 864 3818(explored.)N 1226(Furthermore,)X 1687(for)X 1821(speed)X 2044(in)X 2146(searching)X 2494(\(using)X 2734(logical)X 2992(shift)X 3174(operations)X 3548(rather)X 3776(than)X 3954(multiplies\),)X 864 3914(lookup)N 1106(tables)X 1313(are)X 1432(often)X 1617(chosen)X 1860(to)X 1942(be)X 2038(the)X 2156(largest)X 2390(power)X 2611(of)X 2699(two)X 2840(in)X 2923(size)X 3069(necessary)X 3403(to)X 3486(support)X 3747(the)X 3866(desired)X 4119(alpha-)X 864 4010(bet.)N 1031(When)X 1252(such)X 1428(a)X 1493(rule)X 1647(is)X 1729(used)X 1905(to)X 1996(pick)X 2163(the)X 2290(size)X 2444(of)X 2540(a)X 2605(lookup)X 2856(table,)X 3060(depending)X 3422(on)X 3530(how)X 3696(much)X 3902(larger)X 4118(than)X 4284(a)X 864 4106(power)N 1085(of)X 1172(two)X 1312(the)X 1430(alphabet)X 1722(is,)X 1815(the)X 1933(equivalent)X 2287(worst-case)X 2651(DFA)X 2831(may)X 2989(approach)X 3304(half)X 3449(the)X 3568(size)X 3714(of)X 3802(the)X 3921(lookup)X 4164(table)X 864 4202(because)N 1139(there)X 1320(is)X 1393(no)X 1493(performance)X 1920(gained)X 2154(by)X 2254(using)X 2447(states)X 2645(that)X 2785(are)X 2904(larger)X 3112(than)X 3270(necessary.)X 864 4336(Requirements)N 1333(for)X 1451(the)X 1573(accepting)X 1905(transitions)X 2262(are)X 2385(linear)X 2592(when)X 2790(all)X 2894(patterns)X 3172(are)X 3296(equal)X 3495(length,)X 3740(and)X 3881(more)X 4071(compli-)X 864 4432(cated)N 1057(when)X 1254(some)X 1446(patterns)X 1723(are)X 1845(internal)X 2112(substrings)X 2458(of)X 2547(others.)X 2805(Accepting)X 3157(transitions)X 3512(individually)X 3920(occupy)X 4174(little)X 864 4528(storage)N 1116(\(4)X 1204(bytes)X 1394(overhead)X 1710(on)X 1811(common)X 2112(platforms\),)X 2487(but)X 2610(their)X 2778(cumulative)X 3155(storage)X 3408(can)X 3541(amount)X 3802(to)X 3885(far)X 3996(more)X 4182(than)X 864 4624(the)N 982(storage)X 1234(required)X 1522(for)X 1636(the)X 1754(states)X 1952(themselves.)X 864 4758(The)N 1013(output)X 1241(lists)X 1393(associated)X 1747(with)X 1913(accepting)X 2245(transitions)X 2602(also)X 2755(have)X 2931(small)X 3128(but)X 3254(additive)X 3536(time)X 3703(and)X 3844(storage)X 4101(depen-)X 864 4854(dencies)N 1126(\(8)X 1214(bytes)X 1404(overhead)X 1720(per)X 1844(element)X 2119(in)X 2201(a)X 2257(linked)X 2477(list\).)X 2661(In)X 2748(many)X 2946(instances,)X 3280(resources)X 3604(are)X 3723(conserved)X 4069(by)X 4169(join-)X 864 4950(ing)N 996(existing)X 1279(output)X 1513(lists)X 1671(to)X 1763(produce)X 2052(longer)X 2287(linked)X 2517(lists)X 2675(that)X 2825(have)X 3007(both)X 3179(initial)X 3395(and)X 3541(internal)X 3816(entry)X 4011(points;)X 4258(in)X 864 5046(other)N 1049(cases,)X 1259(lists)X 1407(of)X 2 f 1494(patID)X 1 f 1681(s)X 1732(may)X 1890(be)X 1986(re-used)X 2243(without)X 2507(duplication.)X 3 f 9 s 576 5180(BUGS)N 1 f 10 s 864 5276(This)N 1037(manual)X 1304(page)X 1487(has)X 1625(not)X 1758(been)X 1941(rigorously)X 2302(examined)X 2646(for)X 2772(accuracy)X 3091(and)X 3239(is)X 3324(expected)X 3642(to)X 3736(contain)X 4004(numerous)X 864 5372(errors,)N 1092(some)X 1281(substantive.)X 864 5506(Hiding)N 1111(the)X 3 f 1234(munge)X 1 f 1491(\257ag)X 1637(in)X 1725(pointers)X 2009(is)X 2088(not)X 2216(the)X 2340(best)X 2495(machine-independent)X 3212(programming)X 3674(practice,)X 3975(but)X 4103(it)X 4173(does)X 864 5602(conserve)N 1175(signi\256cant)X 1533(time)X 1700(and)X 1840(storage)X 2096(when)X 2294(it)X 2362(works.)X 2622(On)X 2744(most)X 2923(platforms)X 3254(encountered,)X 3691(the)X 3813(least-signi\256cant)X 864 5698(bit)N 972(\(bit)X 1107(0\))X 1198(is)X 1275(used)X 1446(for)X 1565(the)X 3 f 1688(munge)X 1 f 1944(bit.)X 2093(On)X 2216(the)X 2339(Cray)X 2520(YMP,)X 2738(however,)X 3060(a)X 3121(different)X 3423(bit)X 3532(must)X 3712(be)X 3813(used,)X 4005(for)X 4124(which)X 864 5794(bit)N 968(30)X 1068(has)X 1195(been)X 1367(selected.)X 576 6178(Sun)N 720(Release)X 990(4.1)X 2027(Last)X 2185(change:)X 2455(26)X 2555(July)X 2708(1992)X 4280(6)X 7 p %%Page: 7 7 10 s 0 xH 0 xS 1 f 576 384(DFA)N 749(\()X 789(3)X 842(\))X 2001(C)X 2074(LIBRARY)X 2445(FUNCTIONS)X 4027(DFA)X 4200(\()X 4240(3)X 4293(\))X 864 768(In)N 959(making)X 1227(sweeping)X 1558(changes)X 1845(to)X 1935(the)X 2062(DFA)X 2251(library)X 2494(in)X 2585(February,)X 2924(1992,)X 3 f 3133(dfa_close)X 1 f 3478(was)X 3632(left)X 3768(in)X 3859(an)X 3964(incomplete)X 864 864(state--it)N 1137(allocates)X 1446(a)X 1510(temporary)X 1867(storage)X 2126(space)X 2332(\(WABuf\))X 2667(that)X 2814(is)X 2894(usually)X 3152(larger)X 3367(than)X 3532(necessary)X 3872(but)X 4001(still)X 4147(small)X 864 960(enough)N 1131(for)X 1256(most)X 1443(practical)X 1752(applications)X 2171(even)X 2355(on)X 2467(modest-sized)X 2922(microcomputers.)X 3515(When)X 3739(time)X 3913(permits,)X 4205(this)X 864 1056(function)N 1152(will)X 1297(be)X 1394(brought)X 1664(back)X 1837(into)X 1982(shape)X 2186(so)X 2278(that)X 2419(the)X 2538(temporary)X 2888(storage)X 3140(is)X 3213(smaller)X 3469(and)X 3605(wraps)X 3817(around)X 4060(on)X 4160(itself)X 864 1152(as)N 951(it)X 1015(did)X 1137(in)X 1219(earlier)X 1445(versions.)X 864 1286(The)N 1009(memory)X 1296(allocation)X 1632(and)X 1768(free)X 1914(functions)X 2232(employed,)X 2588(as)X 2675(well)X 2833(as)X 2920(the)X 3038(size)X 3183(of)X 3270(each)X 3438(request)X 3690(made)X 3885(for)X 4000(additional)X 864 1382(storage,)N 1137(apply)X 1336(globally)X 1619(to)X 1702(all)X 1803(DFA)X 1984(structures)X 2317(currently)X 2628(in)X 2711(use.)X 2879(If)X 2954(necessary,)X 3308(it)X 3373(would)X 3594(be)X 3690(trivial)X 3901(to)X 3983(have)X 4155(these)X 864 1478(characteristics)N 1350(set)X 1465(at)X 1549(the)X 1673(time)X 1842(a)X 1905(DFA)X 2092(is)X 2172(created)X 2432(by)X 3 f 2539(dfa_new)X 1 f 2855(and)X 2998(retained)X 3284(throughout)X 3662(the)X 3787(life)X 3921(of)X 4015(the)X 4140(DFA,)X 864 1574(independent)N 1276(of)X 1363(any)X 1499(subsequent)X 1875(calls)X 2042(to)X 3 f 2124(dfa_memalloc)X 1 f 2605(,)X 3 f 2645(dfa_memfree)X 1 f 3121(and)X 3 f 3257(dfa_memincr)X 1 f 3716(.)X 864 1708(Note)N 1047(that)X 1194(the)X 2 f 1319(pattern)X 1 f 1577(argument)X 1907(to)X 3 f 1996(dfa_add)X 1 f 2302(is)X 2382(a)X 2445(pointer)X 2699(to)X 2788(an)X 2891(array)X 3085(of)X 3180(unsigned)X 3497(char,)X 3684(while)X 3890(the)X 2 f 4016(amin)X 1 f 4204(and)X 2 f 864 1804(amax)N 1 f 1061(arguments)X 1418(to)X 3 f 1503(dfa_new)X 1 f 1814(are)X 1935(signed)X 2166(integers.)X 2482(A)X 2562(slightly)X 2823(modi\256ed)X 3129(version)X 3387(of)X 3 f 3476(dfa_add)X 1 f 3777(needs)X 3982(to)X 4066(be)X 4164(writ-)X 864 1900(ten)N 982(that)X 1122(accepts)X 1379(pointers)X 1657(to)X 1739(arrays)X 1956(of)X 2043(signed)X 2272(char)X 2431(or)X 2518(int.)X 864 2034(Automata)N 1211(created)X 1475(by)X 1586(this)X 1732(library)X 1977(are)X 2107(not)X 2241(guaranteed)X 2626(to)X 2720(contain)X 2988(the)X 3118(smallest)X 3412(number)X 3689(of)X 3788(states)X 3998(needed)X 4258(to)X 864 2130(recognize)N 1197(a)X 1253(given)X 1451(list)X 1568(of)X 1655(patterns.)X 864 2264(Fragmentation)N 1354(of)X 1444(the)X 1565(free)X 1714(pool)X 1879(by)X 1982(a)X 2041(temporary)X 2394(wrap-around)X 2828(buffer)X 3048(may)X 3209(occur)X 3411(if)X 3483(the)X 3604(need)X 3780(for)X 3898(more)X 4087(accept-)X 864 2360(ing)N 986(transitions)X 1339(by)X 3 f 1439(dfa_close)X 1 f 1775(should)X 2008(result)X 2206(in)X 2288(one)X 2424(or)X 2511(more)X 2696(calls)X 2863(to)X 2 f 2945(falloc.)X 1 f 864 2494(When)N 1077(insuf\256cient)X 1458(storage)X 1711(is)X 1786(available)X 2098(to)X 2182(create)X 2397(a)X 2455(DFA,)X 3 f 2657(dfa_begin)X 1 f 2994(,)X 3 f 3036(dfa_add)X 1 f 3337(and)X 3 f 3475(dfa_close)X 1 f 3813(will)X 3959(fail.)X 4128(These)X 864 2590(functions)N 1195(do)X 1308(not)X 1443(back)X 1628(out)X 1763(any)X 1912(intermediate)X 2346(modi\256cations)X 2814(made)X 3021(to)X 3116(the)X 3247(DFA.)X 3480(Even)X 3677(if)X 3758(suf\256cient)X 4088(storage)X 864 2686(becomes)N 1178(available)X 1501(at)X 1592(a)X 1661(later)X 1837(time,)X 2032(a)X 2101(DFA)X 2294(that)X 2447(was)X 2605(speci\256ed)X 2923(in)X 3018(a)X 3087(failed)X 3303(call)X 3453(to)X 3 f 3549(dfa_begin)X 1 f 3886(,)X 3 f 3940(dfa_add)X 1 f 4253(or)X 3 f 864 2782(dfa_close)N 1 f 1202(should)X 1437(never)X 1638(be)X 1736(used)X 1905(again)X 2101(in)X 2185(calls)X 2354(to)X 2438(these)X 2625(functions.)X 3 f 2985(dfa_destruct)X 1 f 3439(can)X 3573(and)X 3711(should)X 3946(be)X 4044(called)X 4258(to)X 864 2878(return)N 1076(any)X 1212(allocated)X 1522(storage)X 1774(to)X 1856(the)X 1974(free)X 2120(pool.)X 3 f 864 3012(dfa_ignore)N 1 f 1233(,)X 3 f 1273(dfa_halton)X 1 f 1661(and)X 3 f 1797(dfa_restore)X 1 f 2210(may)X 2368(not)X 2490(be)X 2586(applied)X 2842(to)X 2924(a)X 2980(DFA)X 3160(once)X 3332(it)X 3396(has)X 3523(been)X 3695(the)X 3813(subject)X 4060(of)X 4147(a)X 4204(call)X 864 3108(to)N 3 f 946(dfa_begin)X 1 f 1283(.)X 3 f 864 3242(dfa_add)N 1 f 1163(may)X 1321(not)X 1443(be)X 1539(applied)X 1795(to)X 1877(a)X 1933(DFA)X 2113(once)X 2285(it)X 2349(has)X 2476(been)X 2648(the)X 2766(subject)X 3013(of)X 3100(a)X 3156(call)X 3292(to)X 3 f 3374(dfa_close)X 1 f 3690(.)X 864 3376(No)N 991(means)X 1225(are)X 1353(currently)X 1672(provided)X 1986(to)X 2077(save)X 2249(a)X 2314(DFA)X 2503(to)X 2594(disk)X 2756(in)X 2847(a)X 2912(re-usable)X 3236(format)X 3479(or)X 3576(to)X 3668(share)X 3868(a)X 3934(DFA)X 4124(image)X 864 3472(between)N 1152(unrelated)X 1471(processes.)X 864 3606(The)N 1009(information)X 1407(produced)X 1726(by)X 3 f 1826(dfa_dump)X 1 f 2196(may)X 2354(be)X 2450(voluminous)X 2847(and)X 2983(could)X 3181(be)X 3277(easier)X 3485(to)X 3567(interpret.)X 864 3740(No)N 990(attempt)X 1258(is)X 1339(made)X 1542(by)X 3 f 1651(dfa_add)X 1 f 1959(to)X 2050(\256lter)X 2230(duplicate)X 2553(calls)X 2729(using)X 2931(the)X 3058(same)X 3252(combination)X 3681(of)X 2 f 3777(patID)X 1 f 3993(or)X 2 f 4089(pattern)X 1 f 864 3836(arguments.)N 1259(If)X 1334(recognition)X 1720(of)X 1808(identical)X 2105(patterns)X 2380(by)X 2481(an)X 2578(automaton)X 2937(is)X 3011(to)X 3093(be)X 3189(avoided,)X 3483(the)X 3601(functions)X 3 f 3919(dfa_accepts)X 1 f 864 3932(and)N 3 f 1000(dfa_contains)X 1 f 1455(may)X 1613(be)X 1709(useful)X 1925(for)X 2039(screening)X 2367(the)X 2485(calls)X 2652(made)X 2846(to)X 3 f 2928(dfa_add)X 1 f 3207(.)X 864 4066(In)N 957(linked)X 1183(lists)X 1337(of)X 2 f 1430(patID)X 1 f 1617(s,)X 1694(identical)X 1996(patterns)X 2276(are)X 2401(listed)X 2600(in)X 2688(the)X 2812(reverse)X 3071(order)X 3267(from)X 3449(which)X 3672(they)X 3837(were)X 4021(made)X 4222(the)X 864 4162(subject)N 1112(of)X 1200(calls)X 1368(to)X 3 f 1451(dfa_add)X 1 f 1751(or)X 3 f 1839(dfa_addx)X 1 f 2158(.)X 2219(Any)X 2378(pattern)X 2622(which)X 2839(is)X 2913(a)X 2970(suf\256x)X 3173(of)X 3261(a)X 3318(longer)X 3544(pattern)X 3788(is)X 3861(listed)X 4054(after)X 4222(the)X 864 4258(longer)N 1089(pattern.)X 3 f 9 s 576 4392(SEE)N 742(ALSO)X 1 f 10 s 864 4488(Aho,)N 1067(Hopcroft,)X 1422(and)X 1583(Ullman)X 1868(\(1974\).)X 2 f 2167(The)X 2332(Design)X 2604(and)X 2770(Analysis)X 3087(of)X 3195(Computer)X 3561(Algorithms,)X 1 f 3982(page)X 4180(335.)X 864 4584(Addison-Wesley,)N 1443(Reading,)X 1750(MA.)X 864 4718(Hopcroft)N 1180(and)X 1322(Ullman)X 1588(\(1979\).)X 2 f 1868(Introduction)X 2294(to)X 2382(Automata)X 2720(Theory,)X 2994(Languages,)X 3392(and)X 3539(Computation,)X 1 f 4003(pages)X 4213(42-)X 864 4814(45.)N 1004(Addison-Wesley,)X 1583(Reading,)X 1890(MA.)X 3 f 9 s 576 4948(AUTHOR)N 1 f 10 s 864 5044(Warren)N 1127(Gish,)X 1319(National)X 1616(Center)X 1852(for)X 1968(Biotechnology)X 2461(Information,)X 2886(National)X 3184(Library)X 3447(of)X 3536(Medicine,)X 3881(Building)X 4182(38A)X 864 5140(Room)N 1079(8N-806,)X 1364(8600)X 1544(Rockville)X 1875(Pike,)X 2057(Bethesda,)X 2391(MD)X 2540(20894.)X 2800(gish@ncbi.nlm.nih.gov.)X 576 6144(Sun)N 720(Release)X 990(4.1)X 2027(Last)X 2185(change:)X 2455(26)X 2555(July)X 2708(1992)X 4280(7)X 7 p %%Trailer xt xs