diff options
Diffstat (limited to 'ast.h')
-rw-r--r-- | ast.h | 40 |
1 files changed, 40 insertions, 0 deletions
@@ -0,0 +1,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 + |