d62db8728ccb3c29ca52400f1a9253cc9feb18ad
[fw/altos] / src / lisp / ao_lisp_lex.c
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 #include "ao_lisp.h"
16
17 const uint32_t  classTable[256] = {
18         IGNORE,         /* ^@ */
19         IGNORE,         /* ^A */
20         IGNORE,         /* ^B */
21         IGNORE,         /* ^C */
22         IGNORE,         /* ^D */
23         IGNORE,         /* ^E */
24         IGNORE,         /* ^F */
25         IGNORE,         /* ^G */
26         IGNORE,         /* ^H */
27         WHITE,          /* ^I */
28         WHITE,          /* ^J */
29         WHITE,          /* ^K */
30         WHITE,          /* ^L */
31         WHITE,          /* ^M */
32         IGNORE,         /* ^N */
33         IGNORE,         /* ^O */
34         IGNORE,         /* ^P */
35         IGNORE,         /* ^Q */
36         IGNORE,         /* ^R */
37         IGNORE,         /* ^S */
38         IGNORE,         /* ^T */
39         IGNORE,         /* ^U */
40         IGNORE,         /* ^V */
41         IGNORE,         /* ^W */
42         IGNORE,         /* ^X */
43         IGNORE,         /* ^Y */
44         IGNORE,         /* ^Z */
45         IGNORE,         /* ^[ */
46         IGNORE,         /* ^\ */
47         IGNORE,         /* ^] */
48         IGNORE,         /* ^^ */
49         IGNORE,         /* ^_ */
50         PRINTABLE|WHITE,        /*    */
51         PRINTABLE,              /* ! */
52         PRINTABLE|STRINGC,      /* " */
53         PRINTABLE|COMMENT,      /* # */
54         PRINTABLE,              /* $ */
55         PRINTABLE,              /* % */
56         PRINTABLE,              /* & */
57         PRINTABLE|QUOTEC,       /* ' */
58         PRINTABLE|BRA,          /* ( */
59         PRINTABLE|KET,          /* ) */
60         PRINTABLE,              /* * */
61         PRINTABLE|SIGN,         /* + */
62         PRINTABLE,              /* , */
63         PRINTABLE|SIGN,         /* - */
64         PRINTABLE|DOT,          /* . */
65         PRINTABLE,              /* / */
66         PRINTABLE|DIGIT,        /* 0 */
67         PRINTABLE|DIGIT,        /* 1 */
68         PRINTABLE|DIGIT,        /* 2 */
69         PRINTABLE|DIGIT,        /* 3 */
70         PRINTABLE|DIGIT,        /* 4 */
71         PRINTABLE|DIGIT,        /* 5 */
72         PRINTABLE|DIGIT,        /* 6 */
73         PRINTABLE|DIGIT,        /* 7 */
74         PRINTABLE|DIGIT,        /* 8 */
75         PRINTABLE|DIGIT,        /* 9 */
76         PRINTABLE,              /* : */
77         PRINTABLE|COMMENT,      /* ; */
78         PRINTABLE,              /* < */
79         PRINTABLE,              /* = */
80         PRINTABLE,              /* > */
81         PRINTABLE,              /* ? */
82         PRINTABLE,              /*  @ */
83         PRINTABLE,              /*  A */
84         PRINTABLE,              /*  B */
85         PRINTABLE,              /*  C */
86         PRINTABLE,              /*  D */
87         PRINTABLE|EXP,          /*  E */
88         PRINTABLE,              /*  F */
89         PRINTABLE,              /*  G */
90         PRINTABLE,              /*  H */
91         PRINTABLE,              /*  I */
92         PRINTABLE,              /*  J */
93         PRINTABLE,              /*  K */
94         PRINTABLE,              /*  L */
95         PRINTABLE,              /*  M */
96         PRINTABLE,              /*  N */
97         PRINTABLE,              /*  O */
98         PRINTABLE,              /*  P */
99         PRINTABLE,              /*  Q */
100         PRINTABLE,              /*  R */
101         PRINTABLE,              /*  S */
102         PRINTABLE,              /*  T */
103         PRINTABLE,              /*  U */
104         PRINTABLE,              /*  V */
105         PRINTABLE,              /*  W */
106         PRINTABLE,              /*  X */
107         PRINTABLE,              /*  Y */
108         PRINTABLE,              /*  Z */
109         PRINTABLE|BRA,          /*  [ */
110         PRINTABLE|BACKSLASH,    /*  \ */
111         PRINTABLE|KET,          /*  ] */
112         PRINTABLE,              /*  ^ */
113         PRINTABLE,              /*  _ */
114         PRINTABLE,              /*  ` */
115         PRINTABLE,              /*  a */
116         PRINTABLE,              /*  b */
117         PRINTABLE,              /*  c */
118         PRINTABLE,              /*  d */
119         PRINTABLE|EXP,          /*  e */
120         PRINTABLE,              /*  f */
121         PRINTABLE,              /*  g */
122         PRINTABLE,              /*  h */
123         PRINTABLE,              /*  i */
124         PRINTABLE,              /*  j */
125         PRINTABLE,              /*  k */
126         PRINTABLE,              /*  l */
127         PRINTABLE,              /*  m */
128         PRINTABLE,              /*  n */
129         PRINTABLE,              /*  o */
130         PRINTABLE,              /*  p */
131         PRINTABLE,              /*  q */
132         PRINTABLE,              /*  r */
133         PRINTABLE,              /*  s */
134         PRINTABLE,              /*  t */
135         PRINTABLE,              /*  u */
136         PRINTABLE,              /*  v */
137         PRINTABLE,              /*  w */
138         PRINTABLE,              /*  x */
139         PRINTABLE,              /*  y */
140         PRINTABLE,              /*  z */
141         PRINTABLE|BRA,          /*  { */
142         PRINTABLE|VBAR,         /*  | */
143         PRINTABLE|KET,          /*  } */
144         PRINTABLE|TWIDDLE,      /*  ~ */
145         IGNORE,                 /*  ^? */
146 };