1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
/*******************************************************************************
* *
* regularExp.h -- Nirvana Editor Regular Expression Package Header File *
* *
* Copyright 2002 The NEdit Developers *
* *
* This is free software; you can redistribute it and/or modify it under the *
* terms of the GNU General Public License as published by the Free Software *
* Foundation; either version 2 of the License, or (at your option) any later *
* version. In addition, you may distribute versions of this program linked to *
* Motif or Open Motif. See README for details. *
* *
* This software is distributed in the hope that it will be useful, but WITHOUT *
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
* more details. *
* *
* You should have received a copy of the GNU General Public License along with *
* software; if not, write to the Free Software Foundation, Inc., 59 Temple *
* Place, Suite 330, Boston, MA 02111-1307 USA *
* *
* Nirvana Text Editor *
* July 31, 2001 *
* *
*******************************************************************************/
#include <X11/Intrinsic.h>
#ifndef NEDIT_REGULAREXP_H_INCLUDED
#define NEDIT_REGULAREXP_H_INCLUDED
/* Number of text capturing parentheses allowed. */
#define NSUBEXP 50
/* Structure to contain the compiled form of a regular expression plus
pointers to matched text. `program' is the actual compiled regex code. */
typedef struct regexp {
char *startp [NSUBEXP]; /* Captured text starting locations. */
char *endp [NSUBEXP]; /* Captured text ending locations. */
char *extentpBW; /* Points to the maximum extent of text scanned by
ExecRE in front of the string to achieve a match
(needed because of positive look-behind.) */
char *extentpFW; /* Points to the maximum extent of text scanned by
ExecRE to achieve a match (needed because of
positive look-ahead.) */
int top_branch; /* Zero-based index of the top branch that matches.
Used by syntax highlighting only. */
char match_start; /* Internal use only. */
char anchor; /* Internal use only. */
char program [1]; /* Unwarranted chumminess with compiler. */
} regexp;
/* Flags for CompileRE default settings (Markus Schwarzenberg) */
typedef enum {
REDFLT_STANDARD = 0,
REDFLT_CASE_INSENSITIVE = 1
/* REDFLT_MATCH_NEWLINE = 2 Currently not used. */
} RE_DEFAULT_FLAG;
/* Compiles a regular expression into the internal format used by `ExecRE'. */
regexp * CompileRE (
const char *exp, /* String containing the regex specification. */
char **errorText, /* Text of any error message produced. */
int defaultFlags); /* Flags for default RE-operation */
/* Match a `regexp' structure against a string. */
int ExecRE (
regexp *prog, /* Compiled regex. */
const char *string, /* Text to search within. */
const char *end, /* Pointer to the end of `string'. If NULL will
scan from `string' until '\0' is found. */
int reverse, /* Backward search. */
char prev_char, /* Character immediately prior to `string'. Set
to '\n' or '\0' if true beginning of text. */
char succ_char, /* Character immediately after `end'. Set
to '\n' or '\0' if true beginning of text. */
const char *delimiters, /* Word delimiters to use (NULL for default) */
const char *look_behind_to,/* Boundary for look-behind; defaults to
"string" if NULL */
const char *match_till); /* Boundary to where match can extend.
\0 is assumed to be the boundary if not
set. Lookahead can cross the boundary. */
/* Perform substitutions after a `regexp' match. */
Boolean SubstituteRE(const regexp* prog, const char* source, char* dest,
int max);
/* Builds a default delimiter table that persists across `ExecRE' calls that
is identical to `delimiters'. Pass NULL for "default default" set of
delimiters. */
void SetREDefaultWordDelimiters (
char *delimiters);
#endif /* NEDIT_REGULAREXP_H_INCLUDED */
|