blob: 4694c336efc4cfeec149165ac9ad6225cd8910f5 (
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
36
37
38
39
40
|
#ifndef AST_H
#define AST_H
struct repeat {
long min, max;
};
enum {
ATOM_ALTERNATION,
ATOM_SEQUENCE,
ATOM_REPETITION,
ATOM_ALPHABETIC,
ATOM_NUMERIC,
ATOM_UPPERCASE,
ATOM_LOWERCASE,
ATOM_CONTROL,
ATOM_PUNCTUATION,
ATOM_EVERYTHING,
ATOM_LITERAL,
};
struct atom {
int type;
union {
struct {
struct repeat counts;
struct atom *child;
} repeat;
const struct atom *children[2];
const char *literal;
} u;
};
struct atom *mkatom(const struct atom *src);
void dump_atom(const struct atom *a);
extern struct atom *ast;
#endif
|