Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/cmd/ksh93/data/lexstates.c
1810 views
1
/***********************************************************************
2
* *
3
* This software is part of the ast package *
4
* Copyright (c) 1982-2011 AT&T Intellectual Property *
5
* and is licensed under the *
6
* Eclipse Public License, Version 1.0 *
7
* by AT&T Intellectual Property *
8
* *
9
* A copy of the License is available at *
10
* http://www.eclipse.org/org/documents/epl-v10.html *
11
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
12
* *
13
* Information and Software Systems Research *
14
* AT&T Research *
15
* Florham Park NJ *
16
* *
17
* David Korn <[email protected]> *
18
* *
19
***********************************************************************/
20
#pragma prototyped
21
22
#include <ast.h>
23
24
#include "FEATURE/options"
25
#include "lexstates.h"
26
27
28
/*
29
* This is the initial state for tokens
30
*/
31
static const char sh_lexstate0[256] =
32
{
33
S_EOF, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
34
#if SHOPT_CRNL
35
S_REG, 0, S_NLTOK,S_REG, S_REG, 0, S_REG, S_REG,
36
#else
37
S_REG, 0, S_NLTOK,S_REG, S_REG, S_REG, S_REG, S_REG,
38
#endif /* SHOPT_CRNL */
39
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
40
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
41
42
0, S_REG, S_REG, S_COM, S_REG, S_REG, S_OP, S_REG,
43
S_OP, S_OP, S_REG, S_REG, S_REG, S_REG, S_NAME, S_REG,
44
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
45
S_REG, S_REG, S_REG, S_OP, S_OP, S_REG, S_OP, S_REG,
46
47
S_REG, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME,
48
S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME,
49
S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME,
50
S_NAME, S_NAME, S_NAME, S_REG, S_REG, S_REG, S_REG, S_NAME,
51
52
S_REG, S_NAME, S_NAME, S_RES, S_RES, S_RES, S_RES, S_NAME,
53
#if SHOPT_NAMESPACE
54
S_NAME, S_RES, S_NAME, S_NAME, S_NAME, S_NAME, S_RES, S_NAME,
55
#else
56
S_NAME, S_RES, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME,
57
#endif /* SHOPT_NAMESPACE */
58
S_NAME, S_NAME, S_NAME, S_RES, S_RES, S_RES, S_NAME, S_RES,
59
S_NAME, S_NAME, S_NAME, S_BRACE,S_OP, S_BRACE,S_TILDE,S_REG,
60
61
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
62
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
63
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
64
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
65
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
66
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
67
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
68
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
69
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
70
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
71
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
72
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
73
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
74
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
75
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
76
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
77
};
78
79
/*
80
* This state is for identifiers
81
*/
82
static const char sh_lexstate1[256] =
83
{
84
S_EOF, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
85
#if SHOPT_CRNL
86
S_REG, S_BREAK,S_BREAK,S_REG, S_REG, S_BREAK,S_REG, S_REG,
87
#else
88
S_REG, S_BREAK,S_BREAK,S_REG, S_REG, S_REG, S_REG, S_REG,
89
#endif /* SHOPT_CRNL */
90
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
91
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
92
93
S_BREAK,S_EPAT, S_QUOTE,S_REG, S_DOL, S_EPAT, S_BREAK,S_LIT,
94
S_BREAK,S_BREAK,S_PAT, S_EPAT, S_REG, S_EPAT, S_DOT, S_REG,
95
0, 0, 0, 0, 0, 0, 0, 0,
96
0, 0, S_LABEL,S_BREAK,S_BREAK,S_EQ, S_BREAK,S_PAT,
97
98
S_EPAT, 0, 0, 0, 0, 0, 0, 0,
99
0, 0, 0, 0, 0, 0, 0, 0,
100
0, 0, 0, 0, 0, 0, 0, 0,
101
0, 0, 0, S_BRACT,S_ESC, S_REG, S_REG, 0,
102
103
S_GRAVE,0, 0, 0, 0, 0, 0, 0,
104
0, 0, 0, 0, 0, 0, 0, 0,
105
0, 0, 0, 0, 0, 0, 0, 0,
106
0, 0, 0, S_BRACE,S_BREAK,S_BRACE,S_EPAT, S_REG,
107
108
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
109
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
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
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
113
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
114
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, 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_REG, S_REG, S_REG, S_REG, S_REG,
117
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
118
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
119
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
120
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
121
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
122
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
123
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
124
};
125
126
static const char sh_lexstate2[256] =
127
{
128
S_EOF, 0, 0, 0, 0, 0, 0, 0,
129
#if SHOPT_CRNL
130
0, S_BREAK,S_BREAK,0, 0, S_BREAK,0, 0,
131
#else
132
0, S_BREAK,S_BREAK,0, 0, 0, 0, 0,
133
#endif /* SHOPT_CRNL */
134
0, 0, 0, 0, 0, 0, 0, 0,
135
0, 0, 0, 0, 0, 0, 0, 0,
136
137
S_BREAK,S_EPAT, S_QUOTE,0, S_DOL, S_EPAT, S_BREAK,S_LIT,
138
S_BREAK,S_BREAK,S_PAT, S_EPAT, 0, S_EPAT, 0, 0,
139
0, 0, 0, 0, 0, 0, 0, 0,
140
0, 0, S_COLON,S_BREAK,S_BREAK,0, S_BREAK,S_PAT,
141
142
S_EPAT, 0, 0, 0, 0, 0, 0, 0,
143
0, 0, 0, 0, 0, 0, 0, 0,
144
0, 0, 0, 0, 0, 0, 0, 0,
145
0, 0, 0, S_PAT, S_ESC, 0, 0, 0,
146
147
S_GRAVE,0, 0, 0, 0, 0, 0, 0,
148
0, 0, 0, 0, 0, 0, 0, 0,
149
0, 0, 0, 0, 0, 0, 0, 0,
150
0, 0, 0, S_BRACE,S_BREAK,S_BRACE,S_EPAT, 0,
151
};
152
153
/*
154
* for skipping over '...'
155
*/
156
static const char sh_lexstate3[256] =
157
{
158
S_EOF, 0, 0, 0, 0, 0, 0, 0,
159
0, 0, S_NL, 0, 0, 0, 0, 0,
160
0, 0, 0, 0, 0, 0, 0, 0,
161
0, 0, 0, 0, 0, 0, 0, 0,
162
163
0, 0, 0, 0, 0, 0, 0, S_LIT,
164
0, 0, 0, 0, 0, 0, 0, 0,
165
0, 0, 0, 0, 0, 0, 0, 0,
166
0, 0, 0, 0, 0, 0, 0, 0,
167
168
0, 0, 0, 0, 0, 0, 0, 0,
169
0, 0, 0, 0, 0, 0, 0, 0,
170
0, 0, 0, 0, 0, 0, 0, 0,
171
0, 0, 0, 0, S_ESC2, 0, 0, 0
172
};
173
174
/*
175
* for skipping over "..." and `...`
176
*/
177
static const char sh_lexstate4[256] =
178
{
179
S_EOF, 0, 0, 0, 0, 0, 0, 0,
180
0, 0, S_NL, 0, 0, 0, 0, 0,
181
0, 0, 0, 0, 0, 0, 0, 0,
182
0, 0, 0, 0, 0, 0, 0, 0,
183
0, 0, S_QUOTE,0, S_DOL, 0, 0, 0,
184
0, 0, 0, 0, 0, 0, 0, 0,
185
0, 0, 0, 0, 0, 0, 0, 0,
186
0, 0, 0, 0, 0, 0, 0, 0,
187
0, 0, 0, 0, 0, 0, 0, 0,
188
0, 0, 0, 0, 0, 0, 0, 0,
189
0, 0, 0, 0, 0, 0, 0, 0,
190
0, 0, 0, 0, S_ESC, 0, 0, 0,
191
S_GRAVE,0, 0, 0, 0, 0, 0, 0,
192
0, 0, 0, 0, 0, 0, 0, 0,
193
0, 0, 0, 0, 0, 0, 0, 0,
194
0, 0, 0, 0, 0, S_RBRA, 0, 0
195
};
196
197
/*
198
* for skipping over ?(...), [...]
199
*/
200
static const char sh_lexstate5[256] =
201
{
202
S_EOF, 0, 0, 0, 0, 0, 0, 0,
203
0, S_BLNK, S_NL, 0, 0, 0, 0, 0,
204
0, 0, 0, 0, 0, 0, 0, 0,
205
0, 0, 0, 0, 0, 0, 0, 0,
206
S_BLNK, 0, S_QUOTE,0, S_DOL, 0, S_META, S_LIT,
207
S_PUSH, S_POP, 0, 0, 0, 0, 0, 0,
208
0, 0, 0, 0, 0, 0, 0, 0,
209
0, 0, 0, S_POP, S_META, 0, S_META, 0,
210
0, 0, 0, 0, 0, 0, 0, 0,
211
0, 0, 0, 0, 0, 0, 0, 0,
212
0, 0, 0, 0, 0, 0, 0, 0,
213
0, 0, 0, S_BRACT,S_ESC, S_POP, 0, 0,
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_META, S_POP, S_TILDE,0
218
};
219
220
/*
221
* Defines valid expansion characters
222
*/
223
static const char sh_lexstate6[256] =
224
{
225
S_EOF, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
226
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
227
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
228
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
229
230
S_ERR, S_SPC1, S_ERR, S_SPC1, S_SPC2, S_ERR, S_ERR, S_LIT,
231
S_PAR, S_ERR, S_SPC2, S_ERR, S_ERR, S_SPC2, S_ALP, S_ERR,
232
S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG,
233
S_DIG, S_DIG, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_SPC2,
234
235
#if SHOPT_TYPEDEF
236
S_SPC1, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP,
237
#else
238
S_SPC2, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP,
239
#endif
240
S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP,
241
S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP,
242
S_ALP, S_ALP, S_ALP, S_ERR, S_ERR, S_ERR, S_ERR, S_ALP,
243
244
S_ERR, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP,
245
S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP,
246
S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP,
247
S_ALP, S_ALP, S_ALP, S_LBRA, S_ERR, S_RBRA, S_ERR, S_ERR,
248
249
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
250
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
251
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
252
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
253
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
254
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
255
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
256
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
257
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
258
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
259
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
260
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
261
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
262
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
263
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
264
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
265
};
266
267
/*
268
* for skipping over ${...} until modifier
269
*/
270
static const char sh_lexstate7[256] =
271
{
272
S_EOF, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
273
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
274
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
275
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
276
277
S_ERR, S_ERR, S_ERR, S_MOD2, S_ERR, S_MOD2, S_ERR, S_ERR,
278
S_ERR, S_ERR, S_MOD1, S_MOD1, S_ERR, S_MOD1, S_DOT, S_MOD2,
279
0, 0, 0, 0, 0, 0, 0, 0,
280
0, 0, S_MOD1, S_ERR, S_ERR, S_MOD1, S_ERR, S_MOD1,
281
282
0, 0, 0, 0, 0, 0, 0, 0,
283
0, 0, 0, 0, 0, 0, 0, 0,
284
0, 0, 0, 0, 0, 0, 0, 0,
285
0, 0, 0, S_BRACT,S_ESC, S_ERR, S_ERR, 0,
286
287
S_ERR, 0, 0, 0, 0, 0, 0, 0,
288
0, 0, 0, 0, 0, 0, 0, 0,
289
0, 0, 0, 0, 0, 0, 0, 0,
290
0, 0, 0, S_ERR, S_ERR, S_POP, S_ERR, S_ERR,
291
292
S_ERR, 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
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
297
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
298
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
299
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
300
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
301
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
302
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
303
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
304
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
305
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
306
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
307
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
308
};
309
310
/*
311
* This state is for $name
312
*/
313
static const char sh_lexstate8[256] =
314
{
315
S_EOF, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
316
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
317
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
318
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
319
320
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
321
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
322
0, 0, 0, 0, 0, 0, 0, 0,
323
0, 0, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
324
325
S_EDOL, 0, 0, 0, 0, 0, 0, 0,
326
0, 0, 0, 0, 0, 0, 0, 0,
327
0, 0, 0, 0, 0, 0, 0, 0,
328
0, 0, 0, S_EDOL, S_EDOL, S_EDOL, S_EDOL, 0,
329
330
S_EDOL,0, 0, 0, 0, 0, 0, 0,
331
0, 0, 0, 0, 0, 0, 0, 0,
332
0, 0, 0, 0, 0, 0, 0, 0,
333
0, 0, 0, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
334
335
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
336
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
337
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
338
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
339
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
340
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
341
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
342
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
343
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
344
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
345
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
346
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
347
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
348
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
349
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
350
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
351
};
352
353
/*
354
* This is used for macro expansion
355
*/
356
static const char sh_lexstate9[256] =
357
{
358
S_EOF, 0, 0, 0, 0, 0, 0, 0,
359
0, 0, 0, 0, 0, 0, 0, 0,
360
0, 0, 0, 0, 0, 0, 0, 0,
361
0, 0, 0, 0, 0, 0, 0, 0,
362
0, 0, S_QUOTE,0, S_DOL, 0, S_PAT, S_LIT,
363
S_PAT, S_PAT, S_PAT, 0, S_COM, 0, S_DOT, S_SLASH,
364
S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG,
365
S_DIG, S_DIG, S_COLON,0, 0, S_EQ, 0, S_PAT,
366
0, 0, 0, 0, 0, 0, 0, 0,
367
0, 0, 0, 0, 0, 0, 0, 0,
368
0, 0, 0, 0, 0, 0, 0, 0,
369
0, 0, 0, S_BRACT,S_ESC, S_ENDCH,0, 0,
370
S_GRAVE,0, 0, 0, 0, 0, 0, 0,
371
0, 0, 0, 0, 0, 0, 0, 0,
372
0, 0, 0, 0, 0, 0, 0, 0,
373
#if SHOPT_BRACEPAT
374
0, 0, 0, S_BRACE,S_PAT, S_ENDCH,0, 0
375
#else
376
0, 0, 0, 0, S_PAT, S_ENDCH,0, 0
377
#endif /* SHOPT_BRACEPAT */
378
};
379
380
const char *sh_lexrstates[ST_NONE] =
381
{
382
sh_lexstate0, sh_lexstate1, sh_lexstate2, sh_lexstate3,
383
sh_lexstate4, sh_lexstate5, sh_lexstate6, sh_lexstate7,
384
sh_lexstate8, sh_lexstate9, sh_lexstate5
385
};
386
387
388
const char e_lexversion[] = "%d: invalid binary script version";
389
const char e_lexspace[] = "line %d: use space or tab to separate operators %c and %c";
390
const char e_lexslash[] = "line %d: $ not preceded by \\";
391
const char e_lexsyntax1[] = "syntax error at line %d: `%s' %s";
392
const char e_lexsyntax2[] = "syntax error: `%s' %s";
393
const char e_lexsyntax3[] = "syntax error at line %d: duplicate label %s";
394
const char e_lexsyntax4[] = "syntax error at line %d: invalid reference list";
395
const char e_lexsyntax5[] = "syntax error at line %d: `<<%s' here-document not contained within command substitution";
396
const char e_lexwarnvar[] = "line %d: variable expansion makes arithmetic evaluation less efficient";
397
const char e_lexlabignore[] = "line %d: label %s ignored";
398
const char e_lexlabunknown[] = "line %d: %s unknown label";
399
const char e_lexobsolete1[] = "line %d: `...` obsolete, use $(...)";
400
const char e_lexobsolete2[] = "line %d: -a obsolete, use -e";
401
const char e_lexobsolete3[] = "line %d: '=' obsolete, use '=='";
402
const char e_lexobsolete4[] = "line %d: %s within [[...]] obsolete, use ((...))";
403
const char e_lexobsolete5[] = "line %d: set %s obsolete";
404
const char e_lexobsolete6[] = "line %d: `{' instead of `in' is obsolete";
405
const char e_lexnonstandard[] = "line %d: `&>file' is nonstandard -- interpreted as `>file 2>&1' for profile input only";
406
const char e_lexusebrace[] = "line %d: use braces to avoid ambiguities with $id[...]";
407
const char e_lexusequote[] = "line %d: %c within ${} should be quoted";
408
const char e_lexescape[] = "line %d: escape %c to avoid ambiguities";
409
const char e_lexquote[] = "line %d: quote %c to avoid ambiguities";
410
const char e_lexnested[] = "line %d: spaces required for nested subshell";
411
const char e_lexbadchar[] = "%c: invalid character in expression - %s";
412
const char e_lexfuture[] = "line %d: \\ in front of %c reserved for future use";
413
const char e_lexlongquote[] = "line %d: %c quote may be missing";
414
const char e_lexzerobyte[] = "zero byte";
415
const char e_lexemptyfor[] = "line %d: empty for list";
416
const char e_lextypeset[] = "line %d: %s invalid typeset option order";
417
const char e_lexcharclass[] = "line %d: '^' as first character in character class not portable";
418
419