blob: 381e5315f71a99f8f2c9b2ad4dac19cd90f586b4 (
plain)
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
|
#ifndef regexpnode_h
#define regexpnode_h
#include "config.h"
/////////////////////////////////////////////////////////////////////////////
//
// class RegExpNode represents a node in a non-deterministic automaton that
// represents a regular expression.
//
/////////////////////////////////////////////////////////////////////////////
class RegExpNode {
public:
RegExpNode *next; // List of all the nodes in the automaton
unsigned id; // Unique ID of this node.
int thechar; // Character for this node, or one of the
// following special constants:
#define RENULL -1 // Null transition
#define RESET -2 // This is a set
#define REFINAL -3 // Final node - acceptance
RegExpNode *next1, *next2; // Up to two transitions for this node
// (next2 is used only by RENULLs
unsigned char *reset; // Used by RESETs
RegExpNode(unsigned i) : next(0), id(i), thechar(0),
next1(0), next2(0), reset(0) {}
~RegExpNode() { if (reset) delete[] reset; }
} ;
#endif
|