home *** CD-ROM | disk | FTP | other *** search
- Documentation for GREP.DLL
- Written by: Chris Roberts 03/16/92
-
-
- The Grep DLL was written to enhance Huw Millington's WinGrep program.
- It allows the program access to a more robust set of GREP type
- searches. But, it may be used as a grep engine to any program that has
- the ability to call a DLL.
-
-
- Version 1.0 of GREP.DLL has three functions. The first function
- returns the version number. This is not of any importance... yet.
- High-byte is major version number, low-byte is minor version number.
- IE. 0x0100 = version 1.0, 0x0210 = 2.10.
-
- WORD FAR PASCAL GrepVersion( void );
-
-
- The second is the CompileGrep() function. This function is used to
- compile a search string into a string used more efficiently by the
- Grep Engine. It is passed a GrepString to compile, which it returns in
- CompiledGrep. Passing a non-zero value for IgnoreCase will cause the
- searches to ignore case, while a zero will force case-sensitivity.
-
- int FAR PASCAL CompileGrep(char *GrepString, char *CompiledGrep,
- char IgnoreCase );
-
- It returns a zero (0) if the GrepString was valid, otherwise it
- returns an error code reporting that the GrepString was NOT valid:
-
- GCOMP_NO_ERROR No error occurred.
-
- GCOMP_ILLEGAL_OCCURANCE_OP An *, +, or - appeared in an invalid
- place. These cannot follow a ^ or a $.
-
- GCOMP_UNKNOWN_TYPE Illegal type given for a ':' command.
- The only valid types are 'a', 'd',
- 'n', and ' '.
-
- GCOMP_NO_TYPE The ':' command was given as the last
- character in a search string.
- GCOMP_BAD_CLASS_TERMINATION A quoted character coammnd '\' without
- a character to quote (ie. it is the
- end of the string) was listed in a
- class '[]'. ie. '[abc\'.
- GCOMP_UNTERMINATED_CLASS There is no corresponding ']' with a
- '['.
- GCOMP_CLASS_TOO_LARGE A class is larger than 256 characters.
-
- GCOMP_EMPTY_CLASS An empty class was specified. ie.
- 'AB[]YZ'.
-
- The error code constants are defined in GREP.H. If the compile was
- successful CompiledGrep now contains a grep string that may be used
- for searches.
-
-
- The third function in GREP.DLL is simply called Grep(). This, of
- course, does all of the work of checking for a match.
-
- int FAR PASCAL Grep( char *StringToSearch, char *CompiledGrep );
-
- Grep() returns the position of the first character of the match (ie. 1
- = first character), or zero (0) if there was no match.
-
- The following commands are supported GREP commands:
-
-
- \ The backslash quotes any character. This allows a search that
- contains a character that is usually a GREP command.
- Example:
-
- \$ matches a dollar-sign.
-
- ^ A circumflex at the beginning of an expression matches the
- beginning of a line.
-
- $ A dollar-sign at the end of an expression matches the end of a
- line.
-
- ? A question mark matches any SINGLE character (except "new-
- line").
-
- :_ A colon matches a class of characters described by the
- following character:
-
- :a matches any alphabetic (always ignores case)
- :d matches digits
- :n matches alphanumerics (always ignores case)
- : matches spaces, tabs, and other control characters, such as
- new-line.
-
- * An expression followed by an asterisk matches ZERO or more
- occurrances of that expression:
-
- fo* matches f, fo, foo, etc
- a*z matches az, abz, akfuhidfgnidhgz, etc
-
- + An expression followed by a plus sign matches ONE or more
- occurrances of that expression:
-
- fo+ matches fo, etc
-
- - An expression followed by a minus sign optionally matches the
- expression.
-
- [] A string enclosed in square brackets matches any character in
- that string, but no others. If the first character in the
- string is a circumflex, the expression matches any character
- except "new-line" and the characters in the string.
- Example:
-
- [xyz] matches xx, and zyx, while
- [^xyz] matches abc but not axb.
-
- A range of characters may be specified by two characters
- separated by -. Note that, [a-z] matches alphabetics,
- while [z-a] never matches.
-
-
-
-