Add GNU LGPL headers to all .c .C and .h files
[oweals/cde.git] / cde / programs / dtksh / ksh93 / src / cmd / ksh93 / data / lexstates.c
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $XConsortium: lexstates.c /main/3 1995/11/01 16:32:39 rswiston $ */
24 /***************************************************************
25 *                                                              *
26 *                      AT&T - PROPRIETARY                      *
27 *                                                              *
28 *        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF        *
29 *                    AT&T BELL LABORATORIES                    *
30 *         AND IS NOT TO BE DISCLOSED OR USED EXCEPT IN         *
31 *            ACCORDANCE WITH APPLICABLE AGREEMENTS             *
32 *                                                              *
33 *                Copyright (c) 1995 AT&T Corp.                 *
34 *              Unpublished & Not for Publication               *
35 *                     All Rights Reserved                      *
36 *                                                              *
37 *       The copyright notice above does not evidence any       *
38 *      actual or intended publication of such source code      *
39 *                                                              *
40 *               This software was created by the               *
41 *           Advanced Software Technology Department            *
42 *                    AT&T Bell Laboratories                    *
43 *                                                              *
44 *               For further information contact                *
45 *                    {research,attmail}!dgk                    *
46 *                                                              *
47 ***************************************************************/
48
49 /* : : generated by proto : : */
50
51 #if !defined(__PROTO__)
52 #if defined(__STDC__) || defined(__cplusplus) || defined(_proto) || defined(c_plusplus)
53 #if defined(__cplusplus)
54 #define __MANGLE__      "C"
55 #else
56 #define __MANGLE__
57 #endif
58 #define __STDARG__
59 #define __PROTO__(x)    x
60 #define __OTORP__(x)
61 #define __PARAM__(n,o)  n
62 #if !defined(__STDC__) && !defined(__cplusplus)
63 #if !defined(c_plusplus)
64 #define const
65 #endif
66 #define signed
67 #define void            int
68 #define volatile
69 #define __V_            char
70 #else
71 #define __V_            void
72 #endif
73 #else
74 #define __PROTO__(x)    ()
75 #define __OTORP__(x)    x
76 #define __PARAM__(n,o)  o
77 #define __MANGLE__
78 #define __V_            char
79 #define const
80 #define signed
81 #define void            int
82 #define volatile
83 #endif
84 #if defined(__cplusplus) || defined(c_plusplus)
85 #define __VARARG__      ...
86 #else
87 #define __VARARG__
88 #endif
89 #if defined(__STDARG__)
90 #define __VA_START__(p,a)       va_start(p,a)
91 #else
92 #define __VA_START__(p,a)       va_start(p)
93 #endif
94 #endif
95 #include        "FEATURE/options"
96 #include        "lexstates.h"
97
98
99 /*
100  * This is the initial state for tokens
101  */
102 static const char sh_lexstate0[256] =
103 {
104         S_EOF,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
105 #ifdef SHOPT_CRNL
106         S_REG,  0,      S_NLTOK,S_REG,  S_REG,  0,      S_REG,  S_REG,
107 #else
108         S_REG,  0,      S_NLTOK,S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
109 #endif /* SHOPT_CRNL */
110         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
111         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
112
113         0,      S_REG,  S_REG,  S_COM,  S_REG,  S_REG,  S_OP,   S_REG,
114         S_OP,   S_OP,   S_REG,  S_REG,  S_REG,  S_REG,  S_NAME, S_REG,
115         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
116         S_REG,  S_REG,  S_REG,  S_OP,   S_OP,   S_REG,  S_OP,   S_REG,
117
118         S_REG,  S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME,
119         S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME,
120         S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME,
121         S_NAME, S_NAME, S_NAME, S_REG,  S_REG,  S_REG,  S_REG,  S_NAME,
122
123         S_REG,  S_NAME, S_NAME, S_RES,  S_RES,  S_RES,  S_RES,  S_NAME,
124         S_NAME, S_RES,  S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME,
125         S_NAME, S_NAME, S_NAME, S_RES,  S_RES,  S_RES,  S_NAME, S_RES,
126         S_NAME, S_NAME, S_NAME, S_REG,  S_OP,   S_REG,  S_TILDE,S_REG,
127
128         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
129         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
130         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
131         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
132         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
133         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
134         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
135         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
136         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
137         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
138         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
139         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
140         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
141         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
142         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
143         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
144 };
145
146 /*
147  * This state is for identifiers
148  */
149 static const char sh_lexstate1[256] =
150 {
151         S_EOF,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
152 #ifdef SHOPT_CRNL
153         S_REG,  S_BREAK,S_BREAK,S_REG,  S_REG,  S_BREAK,S_REG,  S_REG,
154 #else
155         S_REG,  S_BREAK,S_BREAK,S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
156 #endif /* SHOPT_CRNL */
157         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
158         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
159
160         S_BREAK,S_EPAT, S_QUOTE,S_REG,  S_DOL,  S_REG,  S_BREAK,S_LIT,
161         S_BREAK,S_BREAK,S_PAT,  S_EPAT, S_REG,  S_REG,  S_DOT,  S_REG,
162         0,      0,      0,      0,      0,      0,      0,      0,
163         0,      0,      S_LABEL,S_BREAK,S_BREAK,S_EQ,   S_BREAK,S_PAT,
164
165         S_EPAT, 0,      0,      0,      0,      0,      0,      0,
166         0,      0,      0,      0,      0,      0,      0,      0,
167         0,      0,      0,      0,      0,      0,      0,      0,
168         0,      0,      0,      S_BRACT,S_ESC,  S_REG,  S_REG,  0,
169
170         S_GRAVE,0,      0,      0,      0,      0,      0,      0,
171         0,      0,      0,      0,      0,      0,      0,      0,
172         0,      0,      0,      0,      0,      0,      0,      0,
173         0,      0,      0,      S_BRACE,S_BREAK,S_BRACE,S_REG,  S_REG,
174
175         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
176         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
177         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
178         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
179         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
180         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
181         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
182         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
183         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
184         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
185         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
186         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
187         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
188         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
189         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
190         S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,  S_REG,
191 };
192
193 static const char sh_lexstate2[256] =
194 {
195         S_EOF,  0,      0,      0,      0,      0,      0,      0,
196 #ifdef SHOPT_CRNL
197         0,      S_BREAK,S_BREAK,0,      0,      S_BREAK,0,      0,
198 #else
199         0,      S_BREAK,S_BREAK,0,      0,      0,      0,      0,
200 #endif /* SHOPT_CRNL */
201         0,      0,      0,      0,      0,      0,      0,      0,
202         0,      0,      0,      0,      0,      0,      0,      0,
203
204         S_BREAK,S_EPAT, S_QUOTE,0,      S_DOL,  0,      S_BREAK,S_LIT,
205         S_BREAK,S_BREAK,S_PAT,  S_EPAT, 0,      0,      0,      0,
206         0,      0,      0,      0,      0,      0,      0,      0,
207         0,      0,      S_COLON,S_BREAK,S_BREAK,0,      S_BREAK,S_PAT,
208
209         S_EPAT, 0,      0,      0,      0,      0,      0,      0,
210         0,      0,      0,      0,      0,      0,      0,      0,
211         0,      0,      0,      0,      0,      0,      0,      0,
212         0,      0,      0,      S_PAT,  S_ESC,  0,      0,      0,
213
214         S_GRAVE,0,      0,      0,      0,      0,      0,      0,
215         0,      0,      0,      0,      0,      0,      0,      0,
216         0,      0,      0,      0,      0,      0,      0,      0,
217         0,      0,      0,      S_BRACE,S_BREAK,S_BRACE,0,      0,
218 };
219
220 /*
221  * for skipping over  '...'
222  */
223 static const char sh_lexstate3[256] =
224 {
225         S_EOF,  0,      0,      0,      0,      0,      0,      0,
226         0,      0,      S_NL,   0,      0,      0,      0,      0,
227         0,      0,      0,      0,      0,      0,      0,      0,
228         0,      0,      0,      0,      0,      0,      0,      0,
229
230         0,      0,      0,      0,      0,      0,      0,      S_LIT,
231         0,      0,      0,      0,      0,      0,      0,      0,
232         0,      0,      0,      0,      0,      0,      0,      0,
233         0,      0,      0,      0,      0,      0,      0,      0,
234
235         0,      0,      0,      0,      0,      0,      0,      0,
236         0,      0,      0,      0,      0,      0,      0,      0,
237         0,      0,      0,      0,      0,      0,      0,      0,
238         0,      0,      0,      0,      S_ESC2, 0,      0,      0
239 };
240
241 /*
242  * for skipping over  "..." and `...`
243  */
244 static const char sh_lexstate4[256] =
245 {
246         S_EOF,  0,      0,      0,      0,      0,      0,      0,
247         0,      0,      S_NL,   0,      0,      0,      0,      0,
248         0,      0,      0,      0,      0,      0,      0,      0,
249         0,      0,      0,      0,      0,      0,      0,      0,
250         0,      0,      S_QUOTE,0,      S_DOL,  0,      0,      0,
251         0,      0,      0,      0,      0,      0,      0,      0,
252         0,      0,      0,      0,      0,      0,      0,      0,
253         0,      0,      0,      0,      0,      0,      0,      0,
254         0,      0,      0,      0,      0,      0,      0,      0,
255         0,      0,      0,      0,      0,      0,      0,      0,
256         0,      0,      0,      0,      0,      0,      0,      0,
257         0,      0,      0,      0,      S_ESC,  0,      0,      0,
258         S_GRAVE,0,      0,      0,      0,      0,      0,      0,
259         0,      0,      0,      0,      0,      0,      0,      0,
260         0,      0,      0,      0,      0,      0,      0,      0,
261         0,      0,      0,      0,      0,      S_RBRA, 0,      0
262 };
263
264 /*
265  * for skipping over ?(...), [...]
266  */
267 static const char sh_lexstate5[256] =
268 {
269         S_EOF,  0,      0,      0,      0,      0,      0,      0,
270         0,      0,      S_NL,   0,      0,      0,      0,      0,
271         0,      0,      0,      0,      0,      0,      0,      0,
272         0,      0,      0,      0,      0,      0,      0,      0,
273         0,      0,      S_QUOTE,0,      S_DOL,  0,      S_META, S_LIT,
274         S_PUSH, S_POP,  0,      0,      0,      0,      0,      0,
275         0,      0,      0,      0,      0,      0,      0,      0,
276         0,      0,      0,      S_POP,  S_META, 0,      S_META, 0,
277         0,      0,      0,      0,      0,      0,      0,      0,
278         0,      0,      0,      0,      0,      0,      0,      0,
279         0,      0,      0,      0,      0,      0,      0,      0,
280         0,      0,      0,      S_BRACT,S_ESC,  S_POP,  0,      0,
281         S_GRAVE,0,      0,      0,      0,      0,      0,      0,
282         0,      0,      0,      0,      0,      0,      0,      0,
283         0,      0,      0,      0,      0,      0,      0,      0,
284         0,      0,      0,      0,      S_META, S_POP,  0,      0
285 };
286
287 /*
288  * Defines valid expansion characters
289  */
290 static const char sh_lexstate6[256] =
291 {
292         S_EOF,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
293         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
294         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
295         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
296
297         S_ERR,  S_SPC1, S_ERR,  S_SPC1, S_SPC2, S_ERR,  S_ERR,  S_LIT,
298 #ifdef SHOPT_OO
299         S_PAR,  S_ERR,  S_SPC2, S_ERR,  S_ERR,  S_SPC1, S_ALP,  S_ERR,
300 #else
301         S_PAR,  S_ERR,  S_SPC2, S_ERR,  S_ERR,  S_SPC2, S_ALP,  S_ERR,
302 #endif /* SHOPT_OO */
303         S_DIG,  S_DIG,  S_DIG,  S_DIG,  S_DIG,  S_DIG,  S_DIG,  S_DIG,
304         S_DIG,  S_DIG,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_SPC2,
305
306         S_SPC2, S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,
307         S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,
308         S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,
309         S_ALP,  S_ALP,  S_ALP,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ALP,
310
311         S_ERR,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,
312         S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,
313         S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,  S_ALP,
314         S_ALP,  S_ALP,  S_ALP,  S_LBRA, S_ERR,  S_RBRA, S_ERR,  S_ERR,
315
316         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
317         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
318         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
319         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
320         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
321         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
322         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
323         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
324         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
325         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
326         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
327         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
328         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
329         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
330         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
331         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
332 };
333
334 /*
335  * for skipping over ${...} until modifier
336  */
337 static const char sh_lexstate7[256] =
338 {
339         S_EOF,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
340         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
341         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
342         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
343
344         S_ERR,  S_ERR,  S_ERR,  S_MOD2, S_ERR,  S_MOD2, S_ERR,  S_ERR,
345         S_ERR,  S_ERR,  S_MOD1, S_MOD1, S_ERR,  S_MOD1, S_DOT,  S_MOD2,
346         0,      0,      0,      0,      0,      0,      0,      0,
347         0,      0,      S_MOD1, S_ERR,  S_ERR,  S_MOD1, S_ERR,  S_MOD1,
348
349         0,      0,      0,      0,      0,      0,      0,      0,
350         0,      0,      0,      0,      0,      0,      0,      0,
351         0,      0,      0,      0,      0,      0,      0,      0,
352         0,      0,      0,      S_BRACT,S_ESC,  S_ERR,  S_ERR,  0,
353
354         S_ERR,  0,      0,      0,      0,      0,      0,      0,
355         0,      0,      0,      0,      0,      0,      0,      0,
356         0,      0,      0,      0,      0,      0,      0,      0,
357         0,      0,      0,      S_ERR,  S_ERR,  S_POP,  S_ERR,  S_ERR,
358
359         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
360         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
361         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
362         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
363         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
364         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
365         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
366         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
367         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
368         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
369         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
370         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
371         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
372         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
373         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
374         S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,  S_ERR,
375 };
376
377 /*
378  * This state is for $name
379  */
380 static const char sh_lexstate8[256] =
381 {
382         S_EOF,  S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
383         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
384         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
385         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
386
387         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
388         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
389         0,      0,      0,      0,      0,      0,      0,      0,
390         0,      0,      S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
391
392         S_EDOL, 0,      0,      0,      0,      0,      0,      0,
393         0,      0,      0,      0,      0,      0,      0,      0,
394         0,      0,      0,      0,      0,      0,      0,      0,
395         0,      0,      0,      S_EDOL, S_EDOL, S_EDOL, S_EDOL, 0,
396
397         S_EDOL,0,       0,      0,      0,      0,      0,      0,
398         0,      0,      0,      0,      0,      0,      0,      0,
399         0,      0,      0,      0,      0,      0,      0,      0,
400         0,      0,      0,      S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
401
402         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
403         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
404         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
405         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
406         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
407         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
408         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
409         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
410         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
411         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
412         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
413         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
414         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
415         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
416         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
417         S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
418 };
419
420 /*
421  * This is used for macro expansion
422  */
423 static const char sh_lexstate9[256] =
424 {
425         S_EOF,  0,      0,      0,      0,      0,      0,      0,
426         0,      0,      0,      0,      0,      0,      0,      0,
427         0,      0,      0,      0,      0,      0,      0,      0,
428         0,      0,      0,      0,      0,      0,      0,      0,
429         0,      0,      S_QUOTE,0,      S_DOL,  0,      S_PAT,  S_LIT,
430         S_PAT,  S_PAT,  S_PAT,  0,      0,      0,      0,      S_SLASH,
431         0,      S_DIG,  S_DIG,  S_DIG,  S_DIG,  S_DIG,  S_DIG,  S_DIG,
432         S_DIG,  S_DIG,  S_COLON,0,      0,      S_EQ,   0,      S_PAT,
433         0,      0,      0,      0,      0,      0,      0,      0,
434         0,      0,      0,      0,      0,      0,      0,      0,
435         0,      0,      0,      0,      0,      0,      0,      0,
436         0,      0,      0,      S_BRACT,S_ESC,  S_ENDCH,0,      0,
437         S_GRAVE,0,      0,      0,      0,      0,      0,      0,
438         0,      0,      0,      0,      0,      0,      0,      0,
439         0,      0,      0,      0,      0,      0,      0,      0,
440 #ifdef SHOPT_BRACEPAT
441         0,      0,      0,      S_PAT,  S_PAT,  S_ENDCH,0,      0
442 #else
443         0,      0,      0,      0,      S_PAT,  S_ENDCH,0,      0
444 #endif /* SHOPT_BRACEPAT */
445 };
446
447 const char *sh_lexrstates[ST_NONE] =
448 {
449         sh_lexstate0, sh_lexstate1, sh_lexstate2, sh_lexstate3,
450         sh_lexstate4, sh_lexstate5, sh_lexstate6, sh_lexstate7,
451         sh_lexstate8, sh_lexstate9, sh_lexstate5
452 };
453
454
455 const char e_lexversion[]       = "%d: invalid binary script version";
456 const char e_lexspace[]         = "line %d: use space or tab to separate operators %c and %c";
457 const char e_lexslash[]         = "line %d: $ not preceeded by \\";
458 const char e_lexsyntax1[]       = "syntax error at line %d: `%s' %s";
459 const char e_lexsyntax2[]       = "syntax error: `%s' %s";
460 const char e_lexsyntax3[]       = "syntax error at line %d: duplicate label %s";
461 const char e_lexlabignore[]     = "line %d: label %s ignored";
462 const char e_lexlabunknown[]    = "line %d: %s unknown label";
463 const char e_lexobsolete1[]     = "line %d: `...` obsolete, use $(...)";
464 const char e_lexobsolete2[]     = "line %d: -a obsolete, use -e";
465 const char e_lexobsolete3[]     = "line %d: '=' obsolete, use '=='";
466 const char e_lexobsolete4[]     = "line %d: %s within [[...]] obsolete, use ((...))";
467 const char e_lexobsolete5[]     = "line %d: set %s obsolete";
468 const char e_lexobsolete6[]     = "line %d: `{' instead of `in' is obsolete";
469 const char e_lexusebrace[]      = "line %d: use braces to avoid ambiguities with $id[...]";
470 const char e_lexusequote[]      = "line %d: %c within ${} should be quoted";
471 const char e_lexescape[]        = "line %d: escape %c to avoid ambiguities";
472 const char e_lexquote[]         = "line %d: quote %c to avoid ambiguities";
473 const char e_lexnested[]        = "line %d: spaces required for nested subshell";
474 const char e_lexbadchar[]       = "%c: invalid character in expression - %s";
475 const char e_lexfuture[]        = "line %d: \\ in front of %c reserved for future use";
476 const char e_lexlongquote[]     = "line %d: %c quote may be missing";
477 const char e_lexzerobyte[]      = "zero byte";