<<>> <> <> <> <> <<>> <<>> <> <<>> DIRECTORY Rope USING [ROPE]; PatternMatch: CEDAR DEFINITIONS ~ BEGIN ROPE: TYPE ~ Rope.ROPE; MatchProc: TYPE = PROC [value: ROPE, pattern: ROPE, pparsed: REF ¬ NIL] RETURNS [match: BOOLEAN, nothingGreater: BOOLEAN ¬ FALSE, pparsedNew: REF ¬ NIL]; <> <> Equal: MatchProc; <> Prefix: MatchProc; <> Wildcard: MatchProc; <> RE: MatchProc; <> SoundexMatch: MatchProc; <> SoundexPrefix: MatchProc; <> Subrange: MatchProc; <> NumSubrange: MatchProc; <> <<>> DateSubrange: MatchProc; <> DateAndTime: MatchProc; <> DWIM: PROC [pattern: ROPE] RETURNS [ptype: ROPE]; <> <<>> CheckPattern: PROC [pattern: ROPE, proc: MatchProc] RETURNS [ok: BOOLEAN ¬ TRUE, info: ROPE ¬ NIL]; <> <<>> Lookup: PROC [name: ROPE] RETURNS [proc: MatchProc]; <> Register: PROC [name: ROPE, proc: MatchProc]; <> EachPairAction: TYPE = PROC [name: ROPE, proc: MatchProc] RETURNS [quit: BOOL ¬ FALSE]; <<>> Pairs: PROC [action: EachPairAction] RETURNS [BOOL]; <<... enumerates pairs currently in the pattern matcher registry in unspecified order; applies action to each pair until action returns TRUE or no more pairs; returns TRUE if some action returns TRUE.>> <<>> END. <> <> <> <<>>