mirror of
https://github.com/zeek/zeek.git
synced 2025-10-13 12:08:20 +00:00
Move regex matching code to zeek namespaces
This commit is contained in:
parent
382812298d
commit
c7dc7fc955
26 changed files with 266 additions and 172 deletions
75
src/RE.h
75
src/RE.h
|
@ -17,30 +17,35 @@ typedef int (*cce_func)(int);
|
|||
namespace zeek { class String; }
|
||||
using BroString [[deprecated("Remove in v4.1. Use zeek::String instead.")]] = zeek::String;
|
||||
|
||||
class CCL;
|
||||
class NFA_Machine;
|
||||
class DFA_Machine;
|
||||
class Specific_RE_Matcher;
|
||||
class RE_Matcher;
|
||||
class DFA_State;
|
||||
ZEEK_FORWARD_DECLARE_NAMESPACED(NFA_Machine, zeek::detail);
|
||||
ZEEK_FORWARD_DECLARE_NAMESPACED(DFA_Machine, zeek::detail);
|
||||
ZEEK_FORWARD_DECLARE_NAMESPACED(DFA_State, zeek::detail);
|
||||
ZEEK_FORWARD_DECLARE_NAMESPACED(Specific_RE_Matcher, zeek::detail);
|
||||
ZEEK_FORWARD_DECLARE_NAMESPACED(RE_Matcher, zeek);
|
||||
ZEEK_FORWARD_DECLARE_NAMESPACED(CCL, zeek::detail);
|
||||
|
||||
// This method is automatically generated by flex and shouldn't be namespaced
|
||||
extern int re_lex(void);
|
||||
|
||||
namespace zeek {
|
||||
namespace detail {
|
||||
|
||||
extern int case_insensitive;
|
||||
extern CCL* curr_ccl;
|
||||
extern NFA_Machine* nfa;
|
||||
extern zeek::detail::NFA_Machine* nfa;
|
||||
extern Specific_RE_Matcher* rem;
|
||||
extern const char* RE_parse_input;
|
||||
|
||||
extern int re_lex(void);
|
||||
extern int clower(int);
|
||||
extern void synerr(const char str[]);
|
||||
|
||||
typedef int AcceptIdx;
|
||||
typedef std::set<AcceptIdx> AcceptingSet;
|
||||
typedef uint64_t MatchPos;
|
||||
typedef std::map<AcceptIdx, MatchPos> AcceptingMatchSet;
|
||||
typedef zeek::name_list string_list;
|
||||
using AcceptIdx = int;
|
||||
using AcceptingSet = std::set<AcceptIdx>;
|
||||
using MatchPos = uint64_t;
|
||||
using AcceptingMatchSet = std::map<AcceptIdx, MatchPos>;
|
||||
using string_list = zeek::name_list;
|
||||
|
||||
typedef enum { MATCH_ANYWHERE, MATCH_EXACTLY, } match_type;
|
||||
enum match_type { MATCH_ANYWHERE, MATCH_EXACTLY };
|
||||
|
||||
// A "specific" RE matcher will match one type of pattern: either
|
||||
// MATCH_ANYWHERE or MATCH_EXACTLY.
|
||||
|
@ -106,7 +111,7 @@ public:
|
|||
|
||||
const char* PatternText() const { return pattern_text; }
|
||||
|
||||
DFA_Machine* DFA() const { return dfa; }
|
||||
zeek::detail::DFA_Machine* DFA() const { return dfa; }
|
||||
|
||||
void Dump(FILE* f);
|
||||
|
||||
|
@ -133,7 +138,7 @@ protected:
|
|||
zeek::PList<CCL> ccl_list;
|
||||
EquivClass equiv_class;
|
||||
int* ecs;
|
||||
DFA_Machine* dfa;
|
||||
zeek::detail::DFA_Machine* dfa;
|
||||
CCL* any_ccl;
|
||||
AcceptingSet* accepted;
|
||||
};
|
||||
|
@ -168,14 +173,19 @@ public:
|
|||
void AddMatches(const AcceptingSet& as, MatchPos position);
|
||||
|
||||
protected:
|
||||
DFA_Machine* dfa;
|
||||
zeek::detail::DFA_Machine* dfa;
|
||||
int* ecs;
|
||||
|
||||
AcceptingMatchSet accepted_matches;
|
||||
DFA_State* current_state;
|
||||
zeek::detail::DFA_State* current_state;
|
||||
int current_pos;
|
||||
};
|
||||
|
||||
extern RE_Matcher* RE_Matcher_conjunction(const RE_Matcher* re1, const RE_Matcher* re2);
|
||||
extern RE_Matcher* RE_Matcher_disjunction(const RE_Matcher* re1, const RE_Matcher* re2);
|
||||
|
||||
} // namespace detail
|
||||
|
||||
class RE_Matcher final {
|
||||
public:
|
||||
RE_Matcher();
|
||||
|
@ -225,9 +235,30 @@ public:
|
|||
}
|
||||
|
||||
protected:
|
||||
Specific_RE_Matcher* re_anywhere;
|
||||
Specific_RE_Matcher* re_exact;
|
||||
detail::Specific_RE_Matcher* re_anywhere;
|
||||
detail::Specific_RE_Matcher* re_exact;
|
||||
};
|
||||
|
||||
extern RE_Matcher* RE_Matcher_conjunction(const RE_Matcher* re1, const RE_Matcher* re2);
|
||||
extern RE_Matcher* RE_Matcher_disjunction(const RE_Matcher* re1, const RE_Matcher* re2);
|
||||
} // namespace zeek
|
||||
|
||||
constexpr auto clower [[deprecated("Remove in v4.1. Use zeek::detail::clower.")]] = zeek::detail::clower;
|
||||
constexpr auto synerr [[deprecated("Remove in v4.1. Use zeek::detail::synerr.")]] = zeek::detail::synerr;
|
||||
|
||||
using AcceptIdx [[deprecated("Remove in v4.1. Use zeek::detail::AcceptIdx.")]] = zeek::detail::AcceptIdx;
|
||||
using AcceptingSet [[deprecated("Remove in v4.1. Use zeek::detail::AcceptingSet.")]] = zeek::detail::AcceptingSet;
|
||||
using MatchPos [[deprecated("Remove in v4.1. Use zeek::detail::MatchPos.")]] = zeek::detail::MatchPos;
|
||||
using AcceptingMatchSet [[deprecated("Remove in v4.1. Use zeek::detail::AcceptingMatchSet.")]] = zeek::detail::AcceptingMatchSet;
|
||||
using string_list [[deprecated("Remove in v4.1. Use zeek::detail::string_list.")]] = zeek::detail::string_list;
|
||||
|
||||
constexpr auto MATCH_ANYWHERE [[deprecated("Remove in v4.1. Use zeek::detail::MATCH_ANYWHERE.")]] = zeek::detail::MATCH_ANYWHERE;
|
||||
constexpr auto MATCH_EXACTLY [[deprecated("Remove in v4.1. Use zeek::detail::MATCH_EXACTLY.")]] = zeek::detail::MATCH_EXACTLY;
|
||||
|
||||
using Specific_RE_Matcher [[deprecated("Remove in v4.1. Use zeek::detail::Specific_RE_Matcher.")]] = zeek::detail::Specific_RE_Matcher;
|
||||
using RE_Match_State [[deprecated("Remove in v4.1. Use zeek::detail::RE_Match_State.")]] = zeek::detail::RE_Match_State;
|
||||
using RE_Matcher [[deprecated("Remove in v4.1. Use zeek::RE_Matcher.")]] = zeek::RE_Matcher;
|
||||
|
||||
extern int& case_insensitive [[deprecated("Remove in v4.1. Use zeek::detail::case_insensitive")]];
|
||||
extern zeek::detail::CCL*& curr_ccl [[deprecated("Remove in v4.1. Use zeek::detail::curr_ccl")]];;
|
||||
extern zeek::detail::NFA_Machine*& nfa [[deprecated("Remove in v4.1. Use zeek::detail::nfa")]];;
|
||||
extern zeek::detail::Specific_RE_Matcher*& rem [[deprecated("Remove in v4.1. Use zeek::detail::rem")]];;
|
||||
extern const char*& RE_parse_input [[deprecated("Remove in v4.1. Use zeek::detail::RE_parse_input")]];;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue