Mercurial > projects > pwm
annotate tok.h @ 40:e3ad9859c51d
Show only groups of matching entries when using ls with filters
author | Guido Berhoerster <guido+pwm@berhoerster.name> |
---|---|
date | Fri, 09 Aug 2019 14:04:46 +0200 |
parents | 722a45b4028b |
children |
rev | line source |
---|---|
0
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
1 /* |
27
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
2 * Copyright (C) 2017 Guido Berhoerster <guido+pwm@berhoerster.name> |
0
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
3 * |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
4 * Permission is hereby granted, free of charge, to any person obtaining |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
5 * a copy of this software and associated documentation files (the |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
6 * "Software"), to deal in the Software without restriction, including |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
7 * without limitation the rights to use, copy, modify, merge, publish, |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
8 * distribute, sublicense, and/or sell copies of the Software, and to |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
9 * permit persons to whom the Software is furnished to do so, subject to |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
10 * the following conditions: |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
11 * |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
12 * The above copyright notice and this permission notice shall be included |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
13 * in all copies or substantial portions of the Software. |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
14 * |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
18 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
19 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
20 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
21 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
22 */ |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
23 |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
24 #ifndef TOK_H |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
25 #define TOK_H |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
26 |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
27 enum tok_err { |
27
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
28 TOK_ERR_OK, |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
29 TOK_ERR_UNTERMINATED_QUOTE = -1, |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
30 TOK_ERR_TRAILING_BACKSLASH = -2, |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
31 TOK_ERR_INVALID_MACRO_NAME = -3 |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
32 }; |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
33 |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
34 enum tok_type { |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
35 TOK_ARG, |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
36 TOK_MACRO |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
37 }; |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
38 |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
39 struct tok_any { |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
40 enum tok_type type; |
0
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
41 }; |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
42 |
27
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
43 struct tok_arg { |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
44 enum tok_type type; |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
45 char *value; |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
46 }; |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
47 |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
48 struct tok_macro { |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
49 enum tok_type type; |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
50 char *name; |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
51 }; |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
52 |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
53 union tok { |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
54 struct tok_any any; |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
55 struct tok_arg arg; |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
56 struct tok_macro macro; |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
57 }; |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
58 |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
59 void tok_free(union tok **); |
722a45b4028b
Add define command for defining macros
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
0
diff
changeset
|
60 enum tok_err tok_tokenize(const char *, size_t *, union tok ***); |
0
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
61 |
a7e41e1a79c8
Initial revision
Guido Berhoerster <guido+pwm@berhoerster.name>
parents:
diff
changeset
|
62 #endif /* !TOK_H */ |