fc74a8e4972f80dd87dd6aac6e63ff564c701ad9
[fw/altos] / src / lisp / ao_lisp_read.h
1 /*
2  * Copyright © 2016 Keith Packard <keithp@keithp.com>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * General Public License for more details.
13  */
14
15 #ifndef _AO_LISP_READ_H_
16 #define _AO_LISP_READ_H_
17
18 /*
19  * token classes
20  */
21
22 # define END    0
23 # define NAME   1
24 # define OPEN   2
25 # define CLOSE  3
26 # define QUOTE  4
27 # define STRING 5
28 # define NUM    6
29 # define DOT    7
30 # define BOOL   8
31
32 /*
33  * character classes
34  */
35
36 # define PRINTABLE      0x0001  /* \t \n ' ' - '~' */
37 # define QUOTED         0x0002  /* \ anything */
38 # define SPECIAL        0x0004  /* ( [ { ) ] } ' . */
39 # define WHITE          0x0008  /* ' ' \t \n */
40 # define DIGIT          0x0010  /* [0-9] */
41 # define SIGN           0x0020  /* +- */
42 # define ENDOFFILE      0x0040  /* end of file */
43 # define COMMENT        0x0080  /* ; */
44 # define IGNORE         0x0100  /* \0 - ' ' */
45 # define BACKSLASH      0x0200  /* \ */
46 # define VBAR           0x0400  /* | */
47 # define STRINGC        0x0800  /* " */
48 # define POUND          0x1000  /* # */
49
50 # define NOTNAME        (STRINGC|VBAR|COMMENT|ENDOFFILE|WHITE|SPECIAL)
51 # define NUMBER         (DIGIT|SIGN)
52
53 #endif /* _AO_LISP_READ_H_ */