mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
d1b28647ed
and builds a *very* efficient engine that will tell you which regex a string matches with only a single pass through the string. To be used in the config file when specifying devices. o Anchor's aren't supported yet (^ and $) but that won't take long. o Also when we get some realistic config files we may want to consider adding an extra level of indirection to the dfa state in order to compress the table. It all depends on how large typical tables get.
40 lines
621 B
C
40 lines
621 B
C
/*
|
|
* Copyright (C) 2001 Sistina Software (UK) Limited.
|
|
*
|
|
* This file is released under the GPL.
|
|
*/
|
|
|
|
#ifndef _LVM_PARSE_REGEX_H
|
|
#define _LVM_PARSE_REGEX_H
|
|
|
|
#include "bitset.h"
|
|
|
|
enum {
|
|
CAT,
|
|
STAR,
|
|
PLUS,
|
|
OR,
|
|
QUEST,
|
|
CHARSET,
|
|
HAT,
|
|
DOLLAR
|
|
};
|
|
|
|
struct rx_node {
|
|
int type;
|
|
bitset_t charset;
|
|
struct rx_node *left, *right;
|
|
|
|
/* used to build the dfa for the toker */
|
|
int nullable, final;
|
|
bitset_t firstpos;
|
|
bitset_t lastpos;
|
|
bitset_t followpos;
|
|
};
|
|
|
|
struct rx_node *rx_parse_str(struct pool *mem, const char *str);
|
|
struct rx_node *rx_parse_tok(struct pool *mem,
|
|
const char *begin, const char *end);
|
|
|
|
#endif
|