First version of CCL. Qualifiers aren't handled yet.
[egate.git] / ccl / cclp.h
1 /* CCL - private header file
2  * Europagate, 1995
3  *
4  * $Log: cclp.h,v $
5  * Revision 1.1  1995/02/13 12:35:20  adam
6  * First version of CCL. Qualifiers aren't handled yet.
7  *
8  */
9
10 #include "ccl.h"
11
12 #define CCL_TOK_EOL   0
13 #define CCL_TOK_TERM  1
14 #define CCL_TOK_REL   2
15 #define CCL_TOK_EQ    3
16 #define CCL_TOK_PROX  4
17 #define CCL_TOK_LP    5
18 #define CCL_TOK_RP    6
19 #define CCL_TOK_COMMA 7
20 #define CCL_TOK_AND   8
21 #define CCL_TOK_OR    7
22 #define CCL_TOK_NOT   9
23 #define CCL_TOK_MINUS 10
24 #define CCL_TOK_SET   11
25
26 struct ccl_token {
27     char kind;
28     char len;
29     const char *name;
30     struct ccl_token *next;
31     struct ccl_token *prev;
32 };
33
34 struct ccl_rpn_attr {
35     struct ccl_rpn_attr *next;
36     int name;
37     int value;
38 };
39
40 struct ccl_rpn_node {
41     enum rpn_node_kind { AND, OR, NOT, TERM, SET, PROX } kind;
42     union {
43         struct ccl_rpn_node *p[2];
44         struct {
45             char *term;
46             struct ccl_rpn_attr *attr_list;
47         } t;
48         char *setname;
49     } u;
50 };
51
52 struct ccl_token *ccl_tokenize (const char *command);
53 void ccl_rpn_delete (struct ccl_rpn_node *rpn);