From 93b871d1d8fbb076510e2c410ba57a0980a22ec8 Mon Sep 17 00:00:00 2001 From: nyamatongwe Date: Wed, 4 Apr 2001 12:52:44 +0000 Subject: Moved to public domain regular expresion implementation. --- src/RESearch.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/RESearch.h (limited to 'src/RESearch.h') diff --git a/src/RESearch.h b/src/RESearch.h new file mode 100644 index 000000000..f9cf7fdc5 --- /dev/null +++ b/src/RESearch.h @@ -0,0 +1,54 @@ +// Scintilla source code edit control +/** @file RESearch.h + ** Interface to the regular expression search library. + **/ +// Written by Neil Hodgson +// Based on the work of Ozan S. Yigit. +// This file is in the public domain. + +#ifndef RESEARCH_H +#define RESEARCH_H + +/* + * The following defines are not meant to be changeable. + * They are for readability only. + */ +#define MAXCHR 128 +#define CHRBIT 8 +#define BITBLK MAXCHR/CHRBIT + +class CharacterIndexer { +public: + virtual char CharAt(int index)=0; +}; + +class RESearch { + +public: + RESearch(); + void ChSet(char c); + const char *Compile(char *pat); + int Execute(CharacterIndexer &ci, int lp); + void ModifyWord(char *s); + int Substitute(CharacterIndexer &ci, char *src, char *dst); + + enum {MAXTAG=10}; + enum {MAXNFA=1024}; + enum {NOTFOUND=-1}; + + int bopat[MAXTAG]; + int eopat[MAXTAG]; + +private: + int PMatch(CharacterIndexer &ci, int lp, char *ap); + + int bol; + int tagstk[MAXTAG]; /* subpat tag stack..*/ + char nfa[MAXNFA]; /* automaton.. */ + int sta; + char bittab[BITBLK]; /* bit table for CCL */ + /* pre-set bits... */ + int failure; +}; + +#endif -- cgit v1.2.3