Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
cf058e65
Commit
cf058e65
authored
Mar 29, 2006
by
osku
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Support quoted identifiers in InnoDB's SQL parser. Original patch by marko,
testing and a few fixes by me.
parent
68908aba
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
579 additions
and
492 deletions
+579
-492
pars/lexyy.c
pars/lexyy.c
+539
-492
pars/pars0lex.l
pars/pars0lex.l
+40
-0
No files found.
pars/lexyy.c
View file @
cf058e65
#include "univ.i"
#line 2 "_flex_tmp.c"
#line
3 "lex.yy
.c"
#line
4 "_flex_tmp
.c"
#define YY_INT_ALIGNED short int
#define YY_INT_ALIGNED short int
...
@@ -13,8 +15,6 @@
...
@@ -13,8 +15,6 @@
#define FLEX_BETA
#define FLEX_BETA
#endif
#endif
#include "univ.i"
/* First, we deal with platform-specific or compiler-specific issues. */
/* First, we deal with platform-specific or compiler-specific issues. */
/* begin standard C headers. */
/* begin standard C headers. */
...
@@ -356,8 +356,8 @@ static void yy_fatal_error (yyconst char msg[] );
...
@@ -356,8 +356,8 @@ static void yy_fatal_error (yyconst char msg[] );
*yy_cp = '\0'; \
*yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp;
(yy_c_buf_p) = yy_cp;
#define YY_NUM_RULES 11
1
#define YY_NUM_RULES 11
4
#define YY_END_OF_BUFFER 11
2
#define YY_END_OF_BUFFER 11
5
/* This struct is not used in this scanner,
/* This struct is not used in this scanner,
but its presence is necessary. */
but its presence is necessary. */
struct
yy_trans_info
struct
yy_trans_info
...
@@ -365,49 +365,50 @@ struct yy_trans_info
...
@@ -365,49 +365,50 @@ struct yy_trans_info
flex_int32_t
yy_verify
;
flex_int32_t
yy_verify
;
flex_int32_t
yy_nxt
;
flex_int32_t
yy_nxt
;
};
};
static
yyconst
flex_int16_t
yy_accept
[
3
79
]
=
static
yyconst
flex_int16_t
yy_accept
[
3
86
]
=
{
0
,
{
0
,
0
,
0
,
106
,
106
,
0
,
0
,
112
,
110
,
109
,
109
,
0
,
0
,
109
,
109
,
0
,
0
,
0
,
0
,
115
,
113
,
101
,
3
,
90
,
96
,
99
,
97
,
94
,
98
,
110
,
100
,
112
,
112
,
6
,
104
,
3
,
93
,
99
,
102
,
100
,
97
,
1
,
110
,
95
,
93
,
91
,
92
,
104
,
84
,
84
,
84
,
101
,
113
,
103
,
1
,
113
,
98
,
96
,
94
,
95
,
107
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
84
,
84
,
84
,
84
,
84
,
102
,
103
,
106
,
107
,
4
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
105
,
106
,
5
,
109
,
85
,
105
,
2
,
1
,
86
,
87
,
89
,
88
,
109
,
110
,
4
,
5
,
7
,
8
,
112
,
88
,
108
,
2
,
84
,
84
,
84
,
84
,
84
,
84
,
40
,
84
,
84
,
84
,
1
,
89
,
90
,
92
,
91
,
87
,
87
,
87
,
87
,
87
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
87
,
43
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
84
,
84
,
23
,
12
,
20
,
84
,
84
,
84
,
84
,
50
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
26
,
15
,
23
,
57
,
84
,
9
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
87
,
87
,
87
,
87
,
53
,
60
,
87
,
12
,
87
,
87
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
106
,
107
,
107
,
108
,
4
,
5
,
2
,
8
,
41
,
84
,
87
,
87
,
87
,
87
,
87
,
109
,
110
,
110
,
111
,
4
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
5
,
7
,
8
,
2
,
11
,
44
,
87
,
87
,
87
,
87
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
22
,
84
,
84
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
84
,
36
,
84
,
84
,
84
,
16
,
84
,
84
,
10
,
84
,
87
,
87
,
87
,
87
,
25
,
87
,
87
,
87
,
39
,
87
,
84
,
84
,
13
,
84
,
84
,
84
,
84
,
84
,
76
,
84
,
87
,
87
,
19
,
87
,
87
,
13
,
87
,
87
,
87
,
16
,
84
,
84
,
47
,
7
,
84
,
31
,
84
,
84
,
84
,
84
,
87
,
87
,
87
,
87
,
87
,
79
,
87
,
87
,
87
,
50
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
10
,
87
,
34
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
15
,
19
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
18
,
22
,
87
,
84
,
84
,
84
,
42
,
84
,
84
,
25
,
84
,
83
,
84
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
84
,
34
,
84
,
84
,
84
,
84
,
44
,
84
,
27
,
84
,
45
,
87
,
87
,
28
,
87
,
86
,
87
,
87
,
37
,
87
,
6
,
60
,
84
,
84
,
84
,
38
,
84
,
84
,
84
,
84
,
87
,
87
,
87
,
47
,
87
,
30
,
87
,
9
,
63
,
87
,
84
,
84
,
84
,
84
,
84
,
24
,
84
,
84
,
84
,
84
,
87
,
87
,
41
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
84
,
84
,
84
,
84
,
84
,
81
,
84
,
21
,
84
,
62
,
87
,
87
,
27
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
84
,
84
,
84
,
84
,
32
,
84
,
84
,
84
,
84
,
84
,
87
,
87
,
84
,
87
,
24
,
87
,
65
,
87
,
87
,
87
,
84
,
84
,
26
,
61
,
18
,
53
,
84
,
71
,
84
,
84
,
87
,
35
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
29
,
84
,
39
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
64
,
21
,
56
,
87
,
74
,
87
,
87
,
87
,
42
,
87
,
84
,
84
,
52
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
55
,
35
,
28
,
75
,
14
,
84
,
79
,
70
,
84
,
51
,
84
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
38
,
31
,
78
,
59
,
84
,
48
,
84
,
84
,
43
,
84
,
72
,
84
,
74
,
17
,
87
,
82
,
73
,
87
,
54
,
87
,
62
,
87
,
51
,
84
,
84
,
29
,
84
,
84
,
84
,
30
,
68
,
84
,
84
,
87
,
87
,
46
,
87
,
75
,
87
,
77
,
87
,
87
,
32
,
84
,
84
,
54
,
84
,
46
,
45
,
84
,
84
,
84
,
49
,
87
,
87
,
87
,
33
,
71
,
87
,
87
,
87
,
87
,
57
,
58
,
84
,
84
,
17
,
84
,
84
,
69
,
77
,
84
,
84
,
87
,
49
,
48
,
87
,
87
,
87
,
52
,
61
,
87
,
87
,
73
,
84
,
64
,
84
,
84
,
84
,
84
,
84
,
33
,
84
,
20
,
87
,
87
,
72
,
80
,
87
,
87
,
76
,
87
,
67
,
63
,
84
,
80
,
84
,
84
,
84
,
82
,
84
,
55
,
84
,
87
,
87
,
87
,
87
,
87
,
36
,
87
,
66
,
87
,
83
,
84
,
11
,
84
,
66
,
65
,
84
,
37
,
84
,
78
,
84
,
87
,
87
,
87
,
85
,
87
,
58
,
87
,
87
,
14
,
87
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
84
,
67
,
69
,
68
,
87
,
40
,
87
,
81
,
87
,
87
,
87
,
87
,
84
,
84
,
84
,
84
,
84
,
84
,
56
,
0
87
,
87
,
87
,
87
,
87
,
87
,
70
,
87
,
87
,
87
,
87
,
87
,
87
,
59
,
0
}
;
}
;
static
yyconst
flex_int32_t
yy_ec
[
256
]
=
static
yyconst
flex_int32_t
yy_ec
[
256
]
=
...
@@ -415,17 +416,17 @@ static yyconst flex_int32_t yy_ec[256] =
...
@@ -415,17 +416,17 @@ static yyconst flex_int32_t yy_ec[256] =
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
3
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
3
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
1
,
1
,
1
,
4
,
1
,
5
,
6
,
1
,
2
,
1
,
4
,
1
,
1
,
5
,
1
,
6
,
7
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
14
,
14
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
15
,
15
,
1
4
,
14
,
14
,
14
,
14
,
14
,
14
,
15
,
16
,
17
,
1
5
,
15
,
15
,
15
,
15
,
15
,
15
,
16
,
17
,
18
,
1
8
,
19
,
20
,
1
,
21
,
22
,
23
,
24
,
25
,
26
,
1
9
,
20
,
21
,
1
,
22
,
23
,
24
,
25
,
26
,
27
,
2
7
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
2
8
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
3
7
,
38
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
30
,
3
8
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
46
,
31
,
1
,
1
,
1
,
1
,
4
6
,
1
,
30
,
30
,
30
,
30
,
1
,
1
,
1
,
1
,
4
7
,
1
,
31
,
31
,
31
,
31
,
3
0
,
30
,
30
,
30
,
30
,
30
,
30
,
30
,
30
,
30
,
3
1
,
31
,
31
,
31
,
31
,
31
,
31
,
31
,
31
,
31
,
3
0
,
30
,
30
,
30
,
30
,
30
,
30
,
30
,
30
,
30
,
3
1
,
31
,
31
,
31
,
31
,
31
,
31
,
31
,
31
,
31
,
3
0
,
30
,
47
,
1
,
48
,
1
,
1
,
1
,
1
,
1
,
3
1
,
31
,
48
,
1
,
49
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
...
@@ -442,213 +443,221 @@ static yyconst flex_int32_t yy_ec[256] =
...
@@ -442,213 +443,221 @@ static yyconst flex_int32_t yy_ec[256] =
1
,
1
,
1
,
1
,
1
1
,
1
,
1
,
1
,
1
}
;
}
;
static
yyconst
flex_int32_t
yy_meta
[
49
]
=
static
yyconst
flex_int32_t
yy_meta
[
50
]
=
{
0
,
{
0
,
1
,
1
,
1
,
1
,
2
,
1
,
1
,
3
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
3
,
1
,
1
,
4
,
1
,
1
,
1
,
1
,
4
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
5
,
1
,
1
,
1
,
1
,
1
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
1
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
4
,
4
,
4
,
4
,
4
,
4
,
1
,
1
5
,
5
,
5
,
5
,
5
,
5
,
5
,
1
,
1
}
;
}
;
static
yyconst
flex_int16_t
yy_base
[
3
85
]
=
static
yyconst
flex_int16_t
yy_base
[
3
94
]
=
{
0
,
{
0
,
0
,
0
,
399
,
398
,
400
,
399
,
403
,
408
,
47
,
49
,
0
,
0
,
417
,
416
,
418
,
417
,
418
,
417
,
420
,
427
,
408
,
408
,
408
,
408
,
408
,
408
,
408
,
408
,
390
,
393
,
48
,
50
,
427
,
427
,
427
,
427
,
427
,
427
,
427
,
427
,
41
,
382
,
408
,
38
,
408
,
381
,
408
,
20
,
33
,
32
,
427
,
406
,
409
,
41
,
398
,
427
,
38
,
427
,
397
,
427
,
46
,
40
,
44
,
0
,
51
,
58
,
45
,
61
,
360
,
66
,
20
,
33
,
32
,
46
,
40
,
44
,
0
,
51
,
58
,
45
,
67
,
68
,
27
,
376
,
70
,
408
,
408
,
0
,
98
,
0
,
61
,
376
,
66
,
67
,
68
,
27
,
392
,
70
,
427
,
427
,
391
,
107
,
408
,
408
,
381
,
54
,
408
,
408
,
408
,
408
,
0
,
98
,
0
,
407
,
0
,
408
,
108
,
427
,
427
,
396
,
0
,
370
,
84
,
366
,
358
,
356
,
0
,
369
,
53
,
80
,
54
,
427
,
427
,
427
,
427
,
0
,
385
,
84
,
381
,
373
,
364
,
350
,
92
,
348
,
361
,
346
,
360
,
354
,
342
,
346
,
371
,
0
,
384
,
53
,
80
,
379
,
365
,
92
,
363
,
376
,
342
,
344
,
0
,
93
,
0
,
344
,
342
,
336
,
343
,
0
,
361
,
375
,
369
,
357
,
361
,
357
,
359
,
0
,
93
,
0
,
0
,
349
,
349
,
332
,
87
,
98
,
347
,
86
,
88
,
338
,
359
,
357
,
351
,
358
,
0
,
0
,
364
,
364
,
347
,
87
,
103
,
330
,
346
,
342
,
320
,
98
,
341
,
332
,
101
,
325
,
98
,
362
,
86
,
88
,
353
,
103
,
345
,
361
,
357
,
335
,
0
,
127
,
131
,
408
,
0
,
357
,
347
,
0
,
0
,
335
,
98
,
356
,
347
,
101
,
340
,
0
,
127
,
131
,
427
,
0
,
330
,
337
,
335
,
318
,
316
,
315
,
320
,
118
,
318
,
330
,
372
,
0
,
373
,
361
,
0
,
0
,
349
,
344
,
351
,
349
,
104
,
318
,
324
,
325
,
307
,
307
,
120
,
0
,
305
,
321
,
332
,
330
,
329
,
334
,
118
,
332
,
344
,
104
,
332
,
338
,
322
,
0
,
309
,
316
,
121
,
123
,
313
,
303
,
312
,
305
,
339
,
321
,
321
,
120
,
0
,
319
,
335
,
336
,
0
,
323
,
302
,
310
,
0
,
300
,
310
,
308
,
299
,
289
,
283
,
296
,
330
,
121
,
123
,
327
,
317
,
326
,
319
,
316
,
324
,
0
,
281
,
301
,
0
,
0
,
286
,
0
,
300
,
291
,
288
,
128
,
314
,
324
,
322
,
313
,
303
,
297
,
310
,
295
,
315
,
0
,
284
,
291
,
298
,
277
,
279
,
284
,
284
,
276
,
279
,
274
,
0
,
300
,
0
,
314
,
305
,
302
,
128
,
298
,
305
,
312
,
0
,
0
,
286
,
270
,
280
,
287
,
278
,
266
,
265
,
279
,
291
,
293
,
298
,
298
,
290
,
293
,
288
,
0
,
0
,
300
,
268
,
281
,
261
,
0
,
271
,
253
,
0
,
272
,
0
,
269
,
284
,
294
,
301
,
292
,
280
,
279
,
293
,
282
,
295
,
275
,
256
,
0
,
251
,
256
,
255
,
265
,
0
,
251
,
0
,
255
,
0
,
285
,
267
,
0
,
286
,
0
,
283
,
270
,
0
,
265
,
0
,
0
,
251
,
248
,
262
,
0
,
247
,
247
,
245
,
261
,
270
,
269
,
279
,
0
,
265
,
0
,
269
,
0
,
0
,
265
,
246
,
258
,
240
,
258
,
253
,
0
,
248
,
248
,
234
,
233
,
262
,
276
,
0
,
261
,
261
,
259
,
275
,
260
,
272
,
254
,
246
,
232
,
246
,
245
,
244
,
0
,
228
,
0
,
222
,
0
,
272
,
267
,
0
,
262
,
262
,
248
,
247
,
260
,
246
,
260
,
241
,
225
,
224
,
224
,
0
,
237
,
227
,
222
,
221
,
233
,
259
,
258
,
0
,
242
,
0
,
236
,
0
,
255
,
239
,
238
,
223
,
222
,
0
,
0
,
0
,
0
,
215
,
0
,
229
,
225
,
238
,
0
,
251
,
241
,
236
,
235
,
247
,
237
,
236
,
0
,
211
,
0
,
225
,
226
,
209
,
214
,
207
,
225
,
207
,
204
,
0
,
0
,
0
,
229
,
0
,
243
,
239
,
225
,
0
,
239
,
205
,
202
,
0
,
207
,
219
,
206
,
213
,
203
,
211
,
196
,
240
,
223
,
228
,
221
,
239
,
221
,
218
,
219
,
216
,
0
,
0
,
0
,
0
,
188
,
195
,
0
,
0
,
192
,
0
,
191
,
221
,
233
,
220
,
227
,
217
,
225
,
210
,
0
,
0
,
0
,
0
,
205
,
0
,
206
,
193
,
0
,
189
,
0
,
192
,
0
,
202
,
209
,
0
,
0
,
206
,
0
,
205
,
0
,
219
,
0
,
184
,
186
,
0
,
185
,
199
,
192
,
0
,
0
,
195
,
198
,
220
,
207
,
0
,
203
,
0
,
206
,
0
,
198
,
200
,
0
,
180
,
195
,
0
,
191
,
0
,
0
,
175
,
189
,
188
,
0
,
199
,
213
,
206
,
0
,
0
,
209
,
212
,
194
,
209
,
0
,
0
,
172
,
171
,
0
,
186
,
171
,
0
,
0
,
177
,
173
,
205
,
0
,
0
,
189
,
203
,
202
,
0
,
0
,
186
,
185
,
0
,
168
,
0
,
180
,
180
,
168
,
178
,
167
,
0
,
154
,
0
,
200
,
185
,
0
,
0
,
191
,
187
,
0
,
182
,
0
,
0
,
174
,
0
,
158
,
152
,
158
,
0
,
149
,
0
,
154
,
194
,
194
,
182
,
192
,
181
,
0
,
168
,
0
,
188
,
0
,
167
,
0
,
166
,
0
,
0
,
157
,
0
,
161
,
0
,
148
,
172
,
166
,
172
,
0
,
163
,
0
,
168
,
181
,
0
,
180
,
148
,
154
,
140
,
163
,
155
,
158
,
146
,
135
,
114
,
0
,
0
,
0
,
171
,
0
,
175
,
0
,
162
,
162
,
168
,
154
,
126
,
131
,
122
,
119
,
115
,
107
,
0
,
408
,
162
,
166
,
177
,
169
,
169
,
156
,
143
,
114
,
0
,
126
,
131
,
122
,
143
,
170
,
174
,
178
119
,
115
,
107
,
0
,
427
,
163
,
168
,
173
,
143
,
178
,
183
,
188
,
193
}
;
}
;
static
yyconst
flex_int16_t
yy_def
[
3
85
]
=
static
yyconst
flex_int16_t
yy_def
[
3
94
]
=
{
0
,
{
0
,
378
,
1
,
379
,
379
,
380
,
380
,
378
,
378
,
378
,
378
,
385
,
1
,
386
,
386
,
387
,
387
,
388
,
388
,
385
,
385
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
381
,
381
,
381
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
378
,
378
,
382
,
383
,
384
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
385
,
385
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
390
,
391
,
392
,
385
,
393
,
385
,
385
,
385
,
385
,
385
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
385
,
385
,
385
,
385
,
385
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
382
,
383
,
383
,
378
,
384
,
378
,
378
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
390
,
391
,
391
,
385
,
392
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
385
,
393
,
385
,
385
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
381
,
381
,
381
,
381
,
381
,
381
,
381
,
0
,
378
,
378
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
389
,
378
,
378
,
378
,
378
389
,
389
,
389
,
389
,
0
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
}
;
}
;
static
yyconst
flex_int16_t
yy_nxt
[
4
5
7
]
=
static
yyconst
flex_int16_t
yy_nxt
[
4
7
7
]
=
{
0
,
{
0
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
34
,
35
,
34
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
37
,
38
,
34
,
36
,
34
,
37
,
38
,
39
,
34
,
40
,
41
,
42
,
37
,
37
,
39
,
37
,
40
,
41
,
42
,
37
,
43
,
44
,
43
,
44
,
45
,
34
,
34
,
34
,
46
,
47
,
52
,
52
,
45
,
46
,
47
,
48
,
37
,
37
,
37
,
49
,
50
,
57
,
52
,
52
,
55
,
62
,
56
,
58
,
59
,
64
,
63
,
68
,
57
,
57
,
57
,
60
,
67
,
61
,
63
,
64
,
69
,
68
,
106
,
65
,
107
,
69
,
66
,
55
,
70
,
56
,
79
,
71
,
73
,
111
,
70
,
112
,
74
,
71
,
60
,
75
,
61
,
84
,
73
,
76
,
72
,
77
,
74
,
80
,
83
,
67
,
81
,
88
,
76
,
78
,
81
,
77
,
82
,
79
,
85
,
88
,
72
,
86
,
75
,
82
,
86
,
78
,
84
,
89
,
90
,
125
,
103
,
85
,
93
,
80
,
87
,
91
,
83
,
89
,
94
,
95
,
132
,
108
,
96
,
99
,
87
,
126
,
91
,
104
,
92
,
109
,
93
,
97
,
90
,
101
,
104
,
92
,
133
,
96
,
109
,
97
,
114
,
98
,
98
,
94
,
105
,
100
,
110
,
113
,
119
,
101
,
52
,
52
,
102
,
103
,
99
,
110
,
105
,
115
,
118
,
126
,
106
,
57
,
114
,
102
,
127
,
128
,
132
,
154
,
144
,
160
,
156
,
162
,
57
,
119
,
107
,
134
,
135
,
139
,
161
,
151
,
167
,
163
,
129
,
155
,
120
,
133
,
165
,
175
,
171
,
163
,
161
,
176
,
169
,
136
,
162
,
127
,
140
,
172
,
182
,
178
,
170
,
168
,
134
,
145
,
146
,
157
,
378
,
166
,
172
,
158
,
113
,
378
,
183
,
141
,
152
,
153
,
164
,
385
,
173
,
179
,
165
,
118
,
186
,
190
,
191
,
114
,
197
,
204
,
61
,
206
,
198
,
227
,
385
,
193
,
197
,
198
,
119
,
204
,
211
,
66
,
213
,
205
,
228
,
377
,
376
,
375
,
374
,
373
,
187
,
207
,
372
,
371
,
234
,
235
,
384
,
383
,
382
,
381
,
380
,
194
,
214
,
379
,
205
,
229
,
48
,
48
,
48
,
48
,
50
,
50
,
50
,
50
,
378
,
212
,
236
,
51
,
51
,
51
,
51
,
51
,
53
,
53
,
111
,
111
,
370
,
111
,
112
,
112
,
112
,
112
,
115
,
369
,
53
,
53
,
53
,
55
,
55
,
55
,
55
,
55
,
116
,
116
,
115
,
115
,
368
,
367
,
366
,
365
,
364
,
363
,
362
,
361
,
116
,
377
,
116
,
117
,
117
,
117
,
117
,
117
,
120
,
120
,
360
,
359
,
358
,
357
,
356
,
355
,
354
,
353
,
352
,
351
,
376
,
120
,
120
,
122
,
375
,
122
,
122
,
122
,
374
,
373
,
350
,
349
,
348
,
347
,
346
,
345
,
344
,
343
,
342
,
341
,
372
,
371
,
370
,
369
,
368
,
367
,
366
,
365
,
364
,
363
,
340
,
339
,
338
,
337
,
336
,
335
,
334
,
333
,
332
,
331
,
362
,
361
,
360
,
359
,
358
,
357
,
356
,
355
,
354
,
353
,
330
,
329
,
328
,
327
,
326
,
325
,
324
,
323
,
322
,
321
,
352
,
351
,
350
,
349
,
348
,
347
,
346
,
345
,
344
,
343
,
320
,
319
,
318
,
317
,
316
,
315
,
314
,
313
,
312
,
311
,
342
,
341
,
340
,
339
,
338
,
337
,
336
,
335
,
334
,
333
,
310
,
309
,
308
,
307
,
306
,
305
,
304
,
303
,
302
,
301
,
332
,
331
,
330
,
329
,
328
,
327
,
326
,
325
,
324
,
323
,
300
,
299
,
298
,
297
,
296
,
295
,
294
,
293
,
292
,
291
,
322
,
321
,
320
,
319
,
318
,
317
,
316
,
315
,
314
,
313
,
290
,
289
,
288
,
287
,
286
,
285
,
284
,
283
,
282
,
281
,
312
,
311
,
310
,
309
,
308
,
307
,
306
,
305
,
304
,
303
,
280
,
279
,
278
,
277
,
276
,
275
,
274
,
273
,
272
,
271
,
302
,
301
,
300
,
299
,
298
,
297
,
296
,
295
,
294
,
293
,
270
,
269
,
268
,
267
,
266
,
265
,
264
,
263
,
262
,
261
,
292
,
291
,
290
,
289
,
288
,
287
,
286
,
285
,
284
,
283
,
260
,
259
,
258
,
257
,
256
,
255
,
254
,
253
,
252
,
251
,
282
,
281
,
280
,
279
,
278
,
277
,
276
,
275
,
274
,
273
,
250
,
249
,
248
,
247
,
246
,
245
,
244
,
243
,
242
,
241
,
272
,
271
,
270
,
269
,
268
,
267
,
266
,
265
,
264
,
263
,
240
,
239
,
238
,
237
,
236
,
235
,
234
,
233
,
232
,
231
,
262
,
261
,
260
,
259
,
258
,
257
,
256
,
255
,
254
,
253
,
230
,
226
,
225
,
224
,
223
,
222
,
221
,
220
,
219
,
218
,
252
,
251
,
250
,
249
,
248
,
247
,
246
,
245
,
244
,
243
,
217
,
216
,
215
,
214
,
213
,
212
,
211
,
210
,
209
,
208
,
242
,
241
,
240
,
239
,
238
,
237
,
233
,
232
,
231
,
230
,
203
,
202
,
201
,
200
,
199
,
196
,
195
,
194
,
193
,
192
,
229
,
228
,
227
,
226
,
225
,
224
,
223
,
222
,
221
,
220
,
189
,
188
,
185
,
184
,
183
,
182
,
181
,
180
,
179
,
178
,
219
,
218
,
217
,
216
,
215
,
210
,
209
,
208
,
207
,
206
,
117
,
116
,
177
,
174
,
173
,
170
,
169
,
168
,
167
,
164
,
203
,
202
,
201
,
200
,
199
,
196
,
195
,
192
,
191
,
190
,
159
,
153
,
152
,
151
,
150
,
149
,
148
,
147
,
143
,
142
,
189
,
188
,
187
,
186
,
185
,
124
,
123
,
121
,
184
,
181
,
141
,
140
,
139
,
138
,
137
,
136
,
135
,
131
,
130
,
124
,
180
,
177
,
176
,
175
,
174
,
171
,
166
,
160
,
159
,
158
,
123
,
122
,
121
,
118
,
117
,
116
,
108
,
95
,
60
,
57
,
157
,
156
,
155
,
154
,
150
,
149
,
148
,
147
,
146
,
145
,
54
,
53
,
378
,
51
,
51
,
49
,
49
,
7
,
378
,
378
,
144
,
143
,
142
,
138
,
137
,
131
,
130
,
129
,
128
,
125
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
124
,
123
,
121
,
113
,
100
,
65
,
62
,
59
,
58
,
385
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
56
,
56
,
54
,
54
,
52
,
52
,
9
,
385
,
385
,
385
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
378
,
378
,
378
,
378
,
378
,
378
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
}
;
}
;
static
yyconst
flex_int16_t
yy_chk
[
4
5
7
]
=
static
yyconst
flex_int16_t
yy_chk
[
4
7
7
]
=
{
0
,
{
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
9
,
9
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
11
,
10
,
10
,
21
,
28
,
21
,
24
,
24
,
29
,
28
,
30
,
11
,
12
,
12
,
24
,
31
,
24
,
27
,
27
,
32
,
31
,
43
,
29
,
43
,
30
,
29
,
56
,
30
,
56
,
33
,
30
,
33
,
46
,
32
,
46
,
33
,
32
,
61
,
33
,
61
,
36
,
31
,
32
,
30
,
32
,
31
,
33
,
35
,
29
,
33
,
37
,
33
,
34
,
35
,
33
,
35
,
34
,
36
,
38
,
32
,
36
,
31
,
33
,
36
,
32
,
35
,
37
,
38
,
69
,
42
,
35
,
40
,
34
,
36
,
39
,
35
,
38
,
40
,
41
,
74
,
45
,
40
,
41
,
36
,
69
,
38
,
42
,
38
,
45
,
38
,
40
,
38
,
43
,
44
,
39
,
74
,
41
,
45
,
41
,
48
,
41
,
40
,
38
,
42
,
41
,
45
,
49
,
63
,
41
,
52
,
52
,
43
,
43
,
41
,
45
,
44
,
48
,
52
,
68
,
44
,
57
,
49
,
41
,
70
,
70
,
73
,
95
,
84
,
98
,
96
,
99
,
57
,
52
,
44
,
75
,
75
,
78
,
100
,
89
,
103
,
101
,
70
,
95
,
63
,
73
,
101
,
109
,
106
,
99
,
98
,
109
,
104
,
75
,
100
,
68
,
78
,
106
,
114
,
111
,
104
,
103
,
73
,
84
,
84
,
96
,
112
,
101
,
106
,
96
,
113
,
112
,
114
,
78
,
89
,
89
,
101
,
117
,
106
,
111
,
101
,
118
,
128
,
131
,
131
,
113
,
137
,
145
,
381
,
146
,
137
,
170
,
117
,
135
,
138
,
138
,
118
,
144
,
152
,
389
,
153
,
144
,
170
,
376
,
375
,
374
,
373
,
372
,
128
,
146
,
371
,
369
,
177
,
177
,
383
,
382
,
381
,
380
,
379
,
135
,
153
,
378
,
145
,
170
,
379
,
379
,
379
,
379
,
380
,
380
,
380
,
380
,
376
,
152
,
177
,
386
,
386
,
386
,
386
,
386
,
387
,
387
,
382
,
382
,
368
,
382
,
383
,
383
,
383
,
383
,
384
,
367
,
387
,
387
,
387
,
388
,
388
,
388
,
388
,
388
,
390
,
390
,
384
,
384
,
366
,
365
,
364
,
363
,
362
,
361
,
360
,
358
,
390
,
375
,
390
,
391
,
391
,
391
,
391
,
391
,
392
,
392
,
356
,
353
,
351
,
350
,
348
,
346
,
345
,
344
,
342
,
340
,
374
,
392
,
392
,
393
,
373
,
393
,
393
,
393
,
372
,
371
,
338
,
337
,
336
,
335
,
334
,
332
,
330
,
329
,
326
,
325
,
370
,
369
,
368
,
367
,
365
,
363
,
360
,
358
,
357
,
355
,
323
,
322
,
319
,
318
,
317
,
314
,
312
,
311
,
310
,
309
,
353
,
352
,
351
,
349
,
347
,
345
,
344
,
343
,
342
,
341
,
306
,
305
,
304
,
302
,
301
,
299
,
297
,
295
,
294
,
292
,
339
,
337
,
336
,
333
,
332
,
330
,
329
,
326
,
325
,
324
,
290
,
288
,
285
,
284
,
280
,
279
,
278
,
277
,
276
,
275
,
321
,
319
,
318
,
317
,
316
,
313
,
312
,
311
,
309
,
308
,
274
,
272
,
271
,
270
,
269
,
268
,
267
,
266
,
265
,
264
,
306
,
304
,
302
,
301
,
299
,
297
,
295
,
292
,
291
,
287
,
263
,
261
,
260
,
259
,
257
,
252
,
251
,
250
,
249
,
248
,
286
,
285
,
284
,
283
,
282
,
281
,
279
,
278
,
277
,
276
,
247
,
246
,
244
,
243
,
242
,
241
,
239
,
237
,
235
,
234
,
275
,
274
,
273
,
272
,
271
,
270
,
268
,
267
,
266
,
264
,
233
,
232
,
231
,
230
,
229
,
228
,
227
,
225
,
224
,
223
,
259
,
258
,
257
,
256
,
255
,
254
,
253
,
251
,
250
,
249
,
222
,
221
,
220
,
219
,
218
,
217
,
215
,
214
,
213
,
210
,
248
,
246
,
244
,
242
,
241
,
240
,
239
,
238
,
237
,
236
,
208
,
206
,
205
,
204
,
203
,
201
,
200
,
198
,
196
,
195
,
235
,
234
,
232
,
231
,
230
,
229
,
228
,
227
,
226
,
225
,
193
,
192
,
191
,
190
,
189
,
188
,
187
,
186
,
185
,
184
,
224
,
222
,
221
,
220
,
217
,
215
,
213
,
212
,
211
,
210
,
183
,
180
,
179
,
178
,
177
,
176
,
175
,
174
,
173
,
172
,
208
,
207
,
205
,
203
,
202
,
200
,
199
,
198
,
197
,
196
,
171
,
169
,
168
,
167
,
165
,
162
,
161
,
160
,
159
,
158
,
195
,
194
,
193
,
192
,
191
,
190
,
187
,
186
,
185
,
184
,
157
,
156
,
155
,
154
,
152
,
151
,
150
,
149
,
148
,
147
,
183
,
182
,
181
,
180
,
179
,
178
,
176
,
175
,
174
,
172
,
144
,
143
,
141
,
140
,
139
,
136
,
135
,
134
,
133
,
132
,
169
,
168
,
167
,
166
,
165
,
164
,
163
,
162
,
161
,
159
,
130
,
129
,
127
,
126
,
125
,
124
,
123
,
122
,
121
,
120
,
158
,
157
,
156
,
155
,
154
,
151
,
150
,
148
,
147
,
146
,
117
,
116
,
110
,
108
,
107
,
105
,
104
,
103
,
102
,
100
,
143
,
142
,
141
,
140
,
139
,
137
,
136
,
134
,
133
,
132
,
97
,
94
,
93
,
92
,
89
,
88
,
87
,
86
,
82
,
81
,
131
,
130
,
129
,
128
,
127
,
124
,
123
,
121
,
115
,
113
,
80
,
79
,
78
,
77
,
76
,
75
,
74
,
72
,
71
,
68
,
112
,
110
,
109
,
108
,
107
,
105
,
102
,
99
,
98
,
97
,
66
,
65
,
64
,
62
,
55
,
51
,
44
,
39
,
26
,
22
,
94
,
93
,
92
,
91
,
87
,
86
,
85
,
84
,
83
,
82
,
20
,
19
,
7
,
6
,
5
,
4
,
3
,
378
,
378
,
378
,
81
,
80
,
79
,
77
,
76
,
73
,
71
,
70
,
69
,
67
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
60
,
56
,
54
,
47
,
42
,
29
,
25
,
23
,
22
,
9
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
8
,
7
,
6
,
5
,
4
,
3
,
385
,
385
,
385
,
385
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
378
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
378
,
378
,
378
,
378
,
378
,
378
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
,
385
}
;
}
;
static
yy_state_type
yy_last_accepting_state
;
static
yy_state_type
yy_last_accepting_state
;
...
@@ -680,32 +689,16 @@ not automatically generate them from pars0grm.y and pars0lex.l.
...
@@ -680,32 +689,16 @@ not automatically generate them from pars0grm.y and pars0lex.l.
How to make the InnoDB parser and lexer C files:
How to make the InnoDB parser and lexer C files:
1. First do
1. Run ./make_flex.sh to generate lexer files.
bison -d pars0grm.y
That generates pars0grm.tab.c and pars0grm.tab.h.
2. Rename pars0grm.tab.c to pars0grm.c and pars0grm.tab.h to pars0grm.h.
3. Copy pars0grm.h also to /innobase/include
4. Do
2. Run ./make_bison.sh to generate parser files.
flex pars0lex.l
That generates lex.yy.c.
5. Rename lex.yy.c to lexyy.c.
These instructions seem to work at least with bison-1.875d and flex-2.5.31 on
6. Add '#include "univ.i"' before #include <stdio.h> in lexyy.c
(Needed for AIX)
7. Add a type cast to int to the assignment below the comment
'need more input.' (Removes a warning on Win64)
These instructions seem to work at least with bison-1.28 and flex-2.5.4 on
Linux.
Linux.
*******************************************************/
*******************************************************/
#define YY_NO_INPUT 1
#define YY_NO_INPUT 1
#define YY_NO_UNISTD_H 1
#define YY_NO_UNISTD_H 1
#line
54
"pars0lex.l"
#line
38
"pars0lex.l"
#define YYSTYPE que_node_t*
#define YYSTYPE que_node_t*
#include "univ.i"
#include "univ.i"
...
@@ -752,11 +745,13 @@ string_append(
...
@@ -752,11 +745,13 @@ string_append(
#line 754 "lex.yy.c"
#line 749 "_flex_tmp.c"
#define INITIAL 0
#define INITIAL 0
#define comment 1
#define comment 1
#define quoted 2
#define quoted 2
#define id 3
#ifndef YY_NO_UNISTD_H
#ifndef YY_NO_UNISTD_H
/* Special case for "unistd.h", since it is non-ANSI. We include it way
/* Special case for "unistd.h", since it is non-ANSI. We include it way
...
@@ -903,10 +898,10 @@ YY_DECL
...
@@ -903,10 +898,10 @@ YY_DECL
register
char
*
yy_cp
,
*
yy_bp
;
register
char
*
yy_cp
,
*
yy_bp
;
register
int
yy_act
;
register
int
yy_act
;
#line
104
"pars0lex.l"
#line
89
"pars0lex.l"
#line 90
8 "lex.yy
.c"
#line 90
4 "_flex_tmp
.c"
if
(
(
yy_init
)
)
if
(
(
yy_init
)
)
{
{
...
@@ -959,13 +954,13 @@ yy_match:
...
@@ -959,13 +954,13 @@ yy_match:
while
(
yy_chk
[
yy_base
[
yy_current_state
]
+
yy_c
]
!=
yy_current_state
)
while
(
yy_chk
[
yy_base
[
yy_current_state
]
+
yy_c
]
!=
yy_current_state
)
{
{
yy_current_state
=
(
int
)
yy_def
[
yy_current_state
];
yy_current_state
=
(
int
)
yy_def
[
yy_current_state
];
if
(
yy_current_state
>=
3
79
)
if
(
yy_current_state
>=
3
86
)
yy_c
=
yy_meta
[(
unsigned
int
)
yy_c
];
yy_c
=
yy_meta
[(
unsigned
int
)
yy_c
];
}
}
yy_current_state
=
yy_nxt
[
yy_base
[
yy_current_state
]
+
(
unsigned
int
)
yy_c
];
yy_current_state
=
yy_nxt
[
yy_base
[
yy_current_state
]
+
(
unsigned
int
)
yy_c
];
++
yy_cp
;
++
yy_cp
;
}
}
while
(
yy_current_state
!=
3
78
);
while
(
yy_current_state
!=
3
85
);
yy_cp
=
(
yy_last_accepting_cpos
);
yy_cp
=
(
yy_last_accepting_cpos
);
yy_current_state
=
(
yy_last_accepting_state
);
yy_current_state
=
(
yy_last_accepting_state
);
...
@@ -987,7 +982,7 @@ do_action: /* This label is used only to access EOF actions. */
...
@@ -987,7 +982,7 @@ do_action: /* This label is used only to access EOF actions. */
case
1
:
case
1
:
YY_RULE_SETUP
YY_RULE_SETUP
#line
106
"pars0lex.l"
#line
91
"pars0lex.l"
{
{
yylval
=
sym_tab_add_int_lit
(
pars_sym_tab_global
,
yylval
=
sym_tab_add_int_lit
(
pars_sym_tab_global
,
atoi
(
yytext
));
atoi
(
yytext
));
...
@@ -996,7 +991,7 @@ YY_RULE_SETUP
...
@@ -996,7 +991,7 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
2
:
case
2
:
YY_RULE_SETUP
YY_RULE_SETUP
#line
112
"pars0lex.l"
#line
97
"pars0lex.l"
{
{
ut_error
;
/* not implemented */
ut_error
;
/* not implemented */
...
@@ -1005,7 +1000,7 @@ YY_RULE_SETUP
...
@@ -1005,7 +1000,7 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
3
:
case
3
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 1
18
"pars0lex.l"
#line 1
03
"pars0lex.l"
{
{
/* Quoted character string literals are handled in an explicit
/* Quoted character string literals are handled in an explicit
start state 'quoted'. This state is entered and the buffer for
start state 'quoted'. This state is entered and the buffer for
...
@@ -1019,7 +1014,7 @@ In the state 'quoted', only two actions are possible (defined below). */
...
@@ -1019,7 +1014,7 @@ In the state 'quoted', only two actions are possible (defined below). */
case
4
:
case
4
:
/* rule 4 can match eol */
/* rule 4 can match eol */
YY_RULE_SETUP
YY_RULE_SETUP
#line 1
27
"pars0lex.l"
#line 1
12
"pars0lex.l"
{
{
/* Got a sequence of characters other than "'":
/* Got a sequence of characters other than "'":
append to string buffer */
append to string buffer */
...
@@ -1028,7 +1023,7 @@ YY_RULE_SETUP
...
@@ -1028,7 +1023,7 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
5
:
case
5
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 1
32
"pars0lex.l"
#line 1
17
"pars0lex.l"
{
{
/* Got a sequence of "'" characters:
/* Got a sequence of "'" characters:
append half of them to string buffer,
append half of them to string buffer,
...
@@ -1055,627 +1050,654 @@ YY_RULE_SETUP
...
@@ -1055,627 +1050,654 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
6
:
case
6
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 1
56
"pars0lex.l"
#line 1
41
"pars0lex.l"
{
{
yylval
=
sym_tab_add_null_lit
(
pars_sym_tab_global
);
/* Quoted identifiers are handled in an explicit start state 'id'.
This state is entered and the buffer for the scanned string is emptied
upon encountering a starting quote.
return
(
PARS_NULL_LIT
);
In the state 'id', only two actions are possible (defined below). */
BEGIN
(
id
);
stringbuf_len
=
0
;
}
}
YY_BREAK
YY_BREAK
case
7
:
case
7
:
/* rule 7 can match eol */
YY_RULE_SETUP
YY_RULE_SETUP
#line 1
62
"pars0lex.l"
#line 1
50
"pars0lex.l"
{
{
/* Implicit cursor name */
/* Got a sequence of characters other than '"':
yylval
=
sym_tab_add_str_lit
(
pars_sym_tab_global
,
append to string buffer */
(
byte
*
)
yytext
,
yyleng
);
string_append
(
yytext
,
yyleng
);
return
(
PARS_SQL_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
8
:
case
8
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 1
69
"pars0lex.l"
#line 1
55
"pars0lex.l"
{
{
return
(
PARS_AND_TOKEN
);
/* Got a sequence of '"' characters:
append half of them to string buffer,
as '""' represents a single '"'.
We apply truncating division,
so that '"""' will result in '"'. */
string_append
(
yytext
,
yyleng
/
2
);
/* If we got an odd number of quotes, then the
last quote we got is the terminating quote.
At the end of the string, we return to the
initial start state and report the scanned
identifier. */
if
(
yyleng
%
2
)
{
BEGIN
(
INITIAL
);
yylval
=
sym_tab_add_id
(
pars_sym_tab_global
,
(
byte
*
)
stringbuf
,
stringbuf_len
);
return
(
PARS_ID_TOKEN
);
}
}
}
YY_BREAK
YY_BREAK
case
9
:
case
9
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 1
73
"pars0lex.l"
#line 1
80
"pars0lex.l"
{
{
return
(
PARS_OR_TOKEN
);
yylval
=
sym_tab_add_null_lit
(
pars_sym_tab_global
);
return
(
PARS_NULL_LIT
);
}
}
YY_BREAK
YY_BREAK
case
10
:
case
10
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 1
77
"pars0lex.l"
#line 1
86
"pars0lex.l"
{
{
return
(
PARS_NOT_TOKEN
);
/* Implicit cursor name */
yylval
=
sym_tab_add_str_lit
(
pars_sym_tab_global
,
(
byte
*
)
yytext
,
yyleng
);
return
(
PARS_SQL_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
11
:
case
11
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 1
81
"pars0lex.l"
#line 1
93
"pars0lex.l"
{
{
return
(
PARS_
PROCEDURE
_TOKEN
);
return
(
PARS_
AND
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
12
:
case
12
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 1
85
"pars0lex.l"
#line 1
97
"pars0lex.l"
{
{
return
(
PARS_
IN
_TOKEN
);
return
(
PARS_
OR
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
13
:
case
13
:
YY_RULE_SETUP
YY_RULE_SETUP
#line
189
"pars0lex.l"
#line
201
"pars0lex.l"
{
{
return
(
PARS_
OU
T_TOKEN
);
return
(
PARS_
NO
T_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
14
:
case
14
:
YY_RULE_SETUP
YY_RULE_SETUP
#line
193
"pars0lex.l"
#line
205
"pars0lex.l"
{
{
return
(
PARS_BINARY
_TOKEN
);
return
(
PARS_PROCEDURE
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
15
:
case
15
:
YY_RULE_SETUP
YY_RULE_SETUP
#line
197
"pars0lex.l"
#line
209
"pars0lex.l"
{
{
return
(
PARS_BLOB
_TOKEN
);
return
(
PARS_IN
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
16
:
case
16
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
01
"pars0lex.l"
#line 2
13
"pars0lex.l"
{
{
return
(
PARS_IN
T_TOKEN
);
return
(
PARS_OU
T_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
17
:
case
17
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
05
"pars0lex.l"
#line 2
17
"pars0lex.l"
{
{
return
(
PARS_
INT
_TOKEN
);
return
(
PARS_
BINARY
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
18
:
case
18
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
09
"pars0lex.l"
#line 2
21
"pars0lex.l"
{
{
return
(
PARS_
FLOAT
_TOKEN
);
return
(
PARS_
BLOB
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
19
:
case
19
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
13
"pars0lex.l"
#line 2
25
"pars0lex.l"
{
{
return
(
PARS_
CHAR
_TOKEN
);
return
(
PARS_
INT
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
20
:
case
20
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
17
"pars0lex.l"
#line 2
29
"pars0lex.l"
{
{
return
(
PARS_IS
_TOKEN
);
return
(
PARS_INT
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
21
:
case
21
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
21
"pars0lex.l"
#line 2
33
"pars0lex.l"
{
{
return
(
PARS_BEGIN
_TOKEN
);
return
(
PARS_FLOAT
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
22
:
case
22
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
25
"pars0lex.l"
#line 2
37
"pars0lex.l"
{
{
return
(
PARS_END
_TOKEN
);
return
(
PARS_CHAR
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
23
:
case
23
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
29
"pars0lex.l"
#line 2
41
"pars0lex.l"
{
{
return
(
PARS_I
F
_TOKEN
);
return
(
PARS_I
S
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
24
:
case
24
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
33
"pars0lex.l"
#line 2
45
"pars0lex.l"
{
{
return
(
PARS_
THE
N_TOKEN
);
return
(
PARS_
BEGI
N_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
25
:
case
25
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
37
"pars0lex.l"
#line 2
49
"pars0lex.l"
{
{
return
(
PARS_E
LSE
_TOKEN
);
return
(
PARS_E
ND
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
26
:
case
26
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
41
"pars0lex.l"
#line 2
53
"pars0lex.l"
{
{
return
(
PARS_
ELS
IF_TOKEN
);
return
(
PARS_IF_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
27
:
case
27
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
45
"pars0lex.l"
#line 2
57
"pars0lex.l"
{
{
return
(
PARS_
LOOP
_TOKEN
);
return
(
PARS_
THEN
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
28
:
case
28
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
49
"pars0lex.l"
#line 2
61
"pars0lex.l"
{
{
return
(
PARS_
WHIL
E_TOKEN
);
return
(
PARS_
ELS
E_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
29
:
case
29
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
53
"pars0lex.l"
#line 2
65
"pars0lex.l"
{
{
return
(
PARS_
RETURN
_TOKEN
);
return
(
PARS_
ELSIF
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
30
:
case
30
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
57
"pars0lex.l"
#line 2
69
"pars0lex.l"
{
{
return
(
PARS_
SELECT
_TOKEN
);
return
(
PARS_
LOOP
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
31
:
case
31
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
61
"pars0lex.l"
#line 2
73
"pars0lex.l"
{
{
return
(
PARS_
SUM
_TOKEN
);
return
(
PARS_
WHILE
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
32
:
case
32
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
65
"pars0lex.l"
#line 2
77
"pars0lex.l"
{
{
return
(
PARS_
COUNT
_TOKEN
);
return
(
PARS_
RETURN
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
33
:
case
33
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
69
"pars0lex.l"
#line 2
81
"pars0lex.l"
{
{
return
(
PARS_
DISTIN
CT_TOKEN
);
return
(
PARS_
SELE
CT_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
34
:
case
34
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
73
"pars0lex.l"
#line 2
85
"pars0lex.l"
{
{
return
(
PARS_
FRO
M_TOKEN
);
return
(
PARS_
SU
M_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
35
:
case
35
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
77
"pars0lex.l"
#line 2
89
"pars0lex.l"
{
{
return
(
PARS_
WHERE
_TOKEN
);
return
(
PARS_
COUNT
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
36
:
case
36
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
81
"pars0lex.l"
#line 2
93
"pars0lex.l"
{
{
return
(
PARS_
FOR
_TOKEN
);
return
(
PARS_
DISTINCT
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
37
:
case
37
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 2
85
"pars0lex.l"
#line 2
97
"pars0lex.l"
{
{
return
(
PARS_
CONSISTENT
_TOKEN
);
return
(
PARS_
FROM
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
38
:
case
38
:
YY_RULE_SETUP
YY_RULE_SETUP
#line
289
"pars0lex.l"
#line
301
"pars0lex.l"
{
{
return
(
PARS_
READ
_TOKEN
);
return
(
PARS_
WHERE
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
39
:
case
39
:
YY_RULE_SETUP
YY_RULE_SETUP
#line
293
"pars0lex.l"
#line
305
"pars0lex.l"
{
{
return
(
PARS_
ORDE
R_TOKEN
);
return
(
PARS_
FO
R_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
40
:
case
40
:
YY_RULE_SETUP
YY_RULE_SETUP
#line
297
"pars0lex.l"
#line
309
"pars0lex.l"
{
{
return
(
PARS_
BY
_TOKEN
);
return
(
PARS_
CONSISTENT
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
41
:
case
41
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
01
"pars0lex.l"
#line 3
13
"pars0lex.l"
{
{
return
(
PARS_
ASC
_TOKEN
);
return
(
PARS_
READ
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
42
:
case
42
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
05
"pars0lex.l"
#line 3
17
"pars0lex.l"
{
{
return
(
PARS_
DESC
_TOKEN
);
return
(
PARS_
ORDER
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
43
:
case
43
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
09
"pars0lex.l"
#line 3
21
"pars0lex.l"
{
{
return
(
PARS_
INSERT
_TOKEN
);
return
(
PARS_
BY
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
44
:
case
44
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
13
"pars0lex.l"
#line 3
25
"pars0lex.l"
{
{
return
(
PARS_
INTO
_TOKEN
);
return
(
PARS_
ASC
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
45
:
case
45
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
17
"pars0lex.l"
#line 3
29
"pars0lex.l"
{
{
return
(
PARS_
VALUES
_TOKEN
);
return
(
PARS_
DESC
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
46
:
case
46
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
21
"pars0lex.l"
#line 3
33
"pars0lex.l"
{
{
return
(
PARS_
UPDATE
_TOKEN
);
return
(
PARS_
INSERT
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
47
:
case
47
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
25
"pars0lex.l"
#line 3
37
"pars0lex.l"
{
{
return
(
PARS_
SET
_TOKEN
);
return
(
PARS_
INTO
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
48
:
case
48
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
29
"pars0lex.l"
#line 3
41
"pars0lex.l"
{
{
return
(
PARS_
DELETE
_TOKEN
);
return
(
PARS_
VALUES
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
49
:
case
49
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
33
"pars0lex.l"
#line 3
45
"pars0lex.l"
{
{
return
(
PARS_
CURRENT
_TOKEN
);
return
(
PARS_
UPDATE
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
50
:
case
50
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
37
"pars0lex.l"
#line 3
49
"pars0lex.l"
{
{
return
(
PARS_
OF
_TOKEN
);
return
(
PARS_
SET
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
51
:
case
51
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
41
"pars0lex.l"
#line 3
53
"pars0lex.l"
{
{
return
(
PARS_
CREA
TE_TOKEN
);
return
(
PARS_
DELE
TE_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
52
:
case
52
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
45
"pars0lex.l"
#line 3
57
"pars0lex.l"
{
{
return
(
PARS_
TABLE
_TOKEN
);
return
(
PARS_
CURRENT
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
53
:
case
53
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
49
"pars0lex.l"
#line 3
61
"pars0lex.l"
{
{
return
(
PARS_INDEX
_TOKEN
);
return
(
PARS_OF
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
54
:
case
54
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
53
"pars0lex.l"
#line 3
65
"pars0lex.l"
{
{
return
(
PARS_UNIQU
E_TOKEN
);
return
(
PARS_CREAT
E_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
55
:
case
55
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
57
"pars0lex.l"
#line 3
69
"pars0lex.l"
{
{
return
(
PARS_CLUSTERED
_TOKEN
);
return
(
PARS_TABLE
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
56
:
case
56
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
61
"pars0lex.l"
#line 3
73
"pars0lex.l"
{
{
return
(
PARS_DOES_NOT_FIT_IN_MEM
_TOKEN
);
return
(
PARS_INDEX
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
57
:
case
57
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
65
"pars0lex.l"
#line 3
77
"pars0lex.l"
{
{
return
(
PARS_
ON
_TOKEN
);
return
(
PARS_
UNIQUE
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
58
:
case
58
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
69
"pars0lex.l"
#line 3
81
"pars0lex.l"
{
{
return
(
PARS_DECLARE
_TOKEN
);
return
(
PARS_CLUSTERED
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
59
:
case
59
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
73
"pars0lex.l"
#line 3
85
"pars0lex.l"
{
{
return
(
PARS_
CURSOR
_TOKEN
);
return
(
PARS_
DOES_NOT_FIT_IN_MEM
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
60
:
case
60
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
77
"pars0lex.l"
#line 3
89
"pars0lex.l"
{
{
return
(
PARS_OPE
N_TOKEN
);
return
(
PARS_O
N_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
61
:
case
61
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
81
"pars0lex.l"
#line 3
93
"pars0lex.l"
{
{
return
(
PARS_
FETCH
_TOKEN
);
return
(
PARS_
DECLARE
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
62
:
case
62
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 3
85
"pars0lex.l"
#line 3
97
"pars0lex.l"
{
{
return
(
PARS_C
LOSE
_TOKEN
);
return
(
PARS_C
URSOR
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
63
:
case
63
:
YY_RULE_SETUP
YY_RULE_SETUP
#line
389
"pars0lex.l"
#line
401
"pars0lex.l"
{
{
return
(
PARS_
NOTFOUND
_TOKEN
);
return
(
PARS_
OPEN
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
64
:
case
64
:
YY_RULE_SETUP
YY_RULE_SETUP
#line
393
"pars0lex.l"
#line
405
"pars0lex.l"
{
{
return
(
PARS_
TO_CHAR
_TOKEN
);
return
(
PARS_
FETCH
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
65
:
case
65
:
YY_RULE_SETUP
YY_RULE_SETUP
#line
397
"pars0lex.l"
#line
409
"pars0lex.l"
{
{
return
(
PARS_
TO_NUMBER
_TOKEN
);
return
(
PARS_
CLOSE
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
66
:
case
66
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
01
"pars0lex.l"
#line 4
13
"pars0lex.l"
{
{
return
(
PARS_
TO_BINARY
_TOKEN
);
return
(
PARS_
NOTFOUND
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
67
:
case
67
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
05
"pars0lex.l"
#line 4
17
"pars0lex.l"
{
{
return
(
PARS_
BINARY_TO_NUMBE
R_TOKEN
);
return
(
PARS_
TO_CHA
R_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
68
:
case
68
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
09
"pars0lex.l"
#line 4
21
"pars0lex.l"
{
{
return
(
PARS_
SUBST
R_TOKEN
);
return
(
PARS_
TO_NUMBE
R_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
69
:
case
69
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
13
"pars0lex.l"
#line 4
25
"pars0lex.l"
{
{
return
(
PARS_
REPLSTR
_TOKEN
);
return
(
PARS_
TO_BINARY
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
70
:
case
70
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
17
"pars0lex.l"
#line 4
29
"pars0lex.l"
{
{
return
(
PARS_
CONCAT
_TOKEN
);
return
(
PARS_
BINARY_TO_NUMBER
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
71
:
case
71
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
21
"pars0lex.l"
#line 4
33
"pars0lex.l"
{
{
return
(
PARS_
IN
STR_TOKEN
);
return
(
PARS_
SUB
STR_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
72
:
case
72
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
25
"pars0lex.l"
#line 4
37
"pars0lex.l"
{
{
return
(
PARS_
LENGTH
_TOKEN
);
return
(
PARS_
REPLSTR
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
73
:
case
73
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
29
"pars0lex.l"
#line 4
41
"pars0lex.l"
{
{
return
(
PARS_
SYSDATE
_TOKEN
);
return
(
PARS_
CONCAT
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
74
:
case
74
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
33
"pars0lex.l"
#line 4
45
"pars0lex.l"
{
{
return
(
PARS_
PRINTF
_TOKEN
);
return
(
PARS_
INSTR
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
75
:
case
75
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
37
"pars0lex.l"
#line 4
49
"pars0lex.l"
{
{
return
(
PARS_
ASSERT
_TOKEN
);
return
(
PARS_
LENGTH
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
76
:
case
76
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
41
"pars0lex.l"
#line 4
53
"pars0lex.l"
{
{
return
(
PARS_
RND
_TOKEN
);
return
(
PARS_
SYSDATE
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
77
:
case
77
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
45
"pars0lex.l"
#line 4
57
"pars0lex.l"
{
{
return
(
PARS_
RND_STR
_TOKEN
);
return
(
PARS_
PRINTF
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
78
:
case
78
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
49
"pars0lex.l"
#line 4
61
"pars0lex.l"
{
{
return
(
PARS_
ROW_PRINTF
_TOKEN
);
return
(
PARS_
ASSERT
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
79
:
case
79
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
53
"pars0lex.l"
#line 4
65
"pars0lex.l"
{
{
return
(
PARS_
COMMIT
_TOKEN
);
return
(
PARS_
RND
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
80
:
case
80
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
57
"pars0lex.l"
#line 4
69
"pars0lex.l"
{
{
return
(
PARS_R
OLLBACK
_TOKEN
);
return
(
PARS_R
ND_STR
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
81
:
case
81
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
61
"pars0lex.l"
#line 4
73
"pars0lex.l"
{
{
return
(
PARS_
WORK
_TOKEN
);
return
(
PARS_
ROW_PRINTF
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
82
:
case
82
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
65
"pars0lex.l"
#line 4
77
"pars0lex.l"
{
{
return
(
PARS_
UNSIGNED
_TOKEN
);
return
(
PARS_
COMMIT
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
83
:
case
83
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
69
"pars0lex.l"
#line 4
81
"pars0lex.l"
{
{
return
(
PARS_
EXIT
_TOKEN
);
return
(
PARS_
ROLLBACK
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
84
:
case
84
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
73
"pars0lex.l"
#line 4
85
"pars0lex.l"
{
{
yylval
=
sym_tab_add_id
(
pars_sym_tab_global
,
return
(
PARS_WORK_TOKEN
);
(
byte
*
)
yytext
,
ut_strlen
(
yytext
));
return
(
PARS_ID_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
85
:
case
85
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 48
0
"pars0lex.l"
#line 48
9
"pars0lex.l"
{
{
return
(
PARS_
DDOT
_TOKEN
);
return
(
PARS_
UNSIGNED
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
86
:
case
86
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
84
"pars0lex.l"
#line 4
93
"pars0lex.l"
{
{
return
(
PARS_
ASSIGN
_TOKEN
);
return
(
PARS_
EXIT
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
87
:
case
87
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 4
88
"pars0lex.l"
#line 4
97
"pars0lex.l"
{
{
return
(
PARS_LE_TOKEN
);
yylval
=
sym_tab_add_id
(
pars_sym_tab_global
,
(
byte
*
)
yytext
,
ut_strlen
(
yytext
));
return
(
PARS_ID_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
88
:
case
88
:
YY_RULE_SETUP
YY_RULE_SETUP
#line
492
"pars0lex.l"
#line
504
"pars0lex.l"
{
{
return
(
PARS_
GE
_TOKEN
);
return
(
PARS_
DDOT
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
89
:
case
89
:
YY_RULE_SETUP
YY_RULE_SETUP
#line
496
"pars0lex.l"
#line
508
"pars0lex.l"
{
{
return
(
PARS_
NE
_TOKEN
);
return
(
PARS_
ASSIGN
_TOKEN
);
}
}
YY_BREAK
YY_BREAK
case
90
:
case
90
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 5
00
"pars0lex.l"
#line 5
12
"pars0lex.l"
{
{
return
(
PARS_LE_TOKEN
);
return
((
int
)(
*
yytext
));
}
}
YY_BREAK
YY_BREAK
case
91
:
case
91
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 5
05
"pars0lex.l"
#line 5
16
"pars0lex.l"
{
{
return
(
PARS_GE_TOKEN
);
return
((
int
)(
*
yytext
));
}
}
YY_BREAK
YY_BREAK
case
92
:
case
92
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 5
1
0 "pars0lex.l"
#line 5
2
0 "pars0lex.l"
{
{
return
(
PARS_NE_TOKEN
);
return
((
int
)(
*
yytext
));
}
}
YY_BREAK
YY_BREAK
case
93
:
case
93
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 5
15
"pars0lex.l"
#line 5
24
"pars0lex.l"
{
{
return
((
int
)(
*
yytext
));
return
((
int
)(
*
yytext
));
...
@@ -1683,7 +1705,7 @@ YY_RULE_SETUP
...
@@ -1683,7 +1705,7 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
94
:
case
94
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 52
0
"pars0lex.l"
#line 52
9
"pars0lex.l"
{
{
return
((
int
)(
*
yytext
));
return
((
int
)(
*
yytext
));
...
@@ -1691,7 +1713,7 @@ YY_RULE_SETUP
...
@@ -1691,7 +1713,7 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
95
:
case
95
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 5
25
"pars0lex.l"
#line 5
34
"pars0lex.l"
{
{
return
((
int
)(
*
yytext
));
return
((
int
)(
*
yytext
));
...
@@ -1699,7 +1721,7 @@ YY_RULE_SETUP
...
@@ -1699,7 +1721,7 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
96
:
case
96
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 53
0
"pars0lex.l"
#line 53
9
"pars0lex.l"
{
{
return
((
int
)(
*
yytext
));
return
((
int
)(
*
yytext
));
...
@@ -1707,7 +1729,7 @@ YY_RULE_SETUP
...
@@ -1707,7 +1729,7 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
97
:
case
97
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 5
35
"pars0lex.l"
#line 5
44
"pars0lex.l"
{
{
return
((
int
)(
*
yytext
));
return
((
int
)(
*
yytext
));
...
@@ -1715,7 +1737,7 @@ YY_RULE_SETUP
...
@@ -1715,7 +1737,7 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
98
:
case
98
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 54
0
"pars0lex.l"
#line 54
9
"pars0lex.l"
{
{
return
((
int
)(
*
yytext
));
return
((
int
)(
*
yytext
));
...
@@ -1723,7 +1745,7 @@ YY_RULE_SETUP
...
@@ -1723,7 +1745,7 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
99
:
case
99
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 5
45
"pars0lex.l"
#line 5
54
"pars0lex.l"
{
{
return
((
int
)(
*
yytext
));
return
((
int
)(
*
yytext
));
...
@@ -1731,7 +1753,7 @@ YY_RULE_SETUP
...
@@ -1731,7 +1753,7 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
100
:
case
100
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 55
0
"pars0lex.l"
#line 55
9
"pars0lex.l"
{
{
return
((
int
)(
*
yytext
));
return
((
int
)(
*
yytext
));
...
@@ -1739,7 +1761,7 @@ YY_RULE_SETUP
...
@@ -1739,7 +1761,7 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
101
:
case
101
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 5
55
"pars0lex.l"
#line 5
64
"pars0lex.l"
{
{
return
((
int
)(
*
yytext
));
return
((
int
)(
*
yytext
));
...
@@ -1747,7 +1769,7 @@ YY_RULE_SETUP
...
@@ -1747,7 +1769,7 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
102
:
case
102
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 56
0
"pars0lex.l"
#line 56
9
"pars0lex.l"
{
{
return
((
int
)(
*
yytext
));
return
((
int
)(
*
yytext
));
...
@@ -1755,7 +1777,7 @@ YY_RULE_SETUP
...
@@ -1755,7 +1777,7 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
103
:
case
103
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 5
65
"pars0lex.l"
#line 5
74
"pars0lex.l"
{
{
return
((
int
)(
*
yytext
));
return
((
int
)(
*
yytext
));
...
@@ -1763,7 +1785,7 @@ YY_RULE_SETUP
...
@@ -1763,7 +1785,7 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
104
:
case
104
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 57
0
"pars0lex.l"
#line 57
9
"pars0lex.l"
{
{
return
((
int
)(
*
yytext
));
return
((
int
)(
*
yytext
));
...
@@ -1771,35 +1793,59 @@ YY_RULE_SETUP
...
@@ -1771,35 +1793,59 @@ YY_RULE_SETUP
YY_BREAK
YY_BREAK
case
105
:
case
105
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 575 "pars0lex.l"
#line 584 "pars0lex.l"
BEGIN
(
comment
);
/* eat up comment */
{
return
((
int
)(
*
yytext
));
}
YY_BREAK
YY_BREAK
case
106
:
case
106
:
/* rule 106 can match eol */
YY_RULE_SETUP
YY_RULE_SETUP
#line 577 "pars0lex.l"
#line 589 "pars0lex.l"
{
return
((
int
)(
*
yytext
));
}
YY_BREAK
YY_BREAK
case
107
:
case
107
:
/* rule 107 can match eol */
YY_RULE_SETUP
YY_RULE_SETUP
#line 578 "pars0lex.l"
#line 594 "pars0lex.l"
{
return
((
int
)(
*
yytext
));
}
YY_BREAK
YY_BREAK
case
108
:
case
108
:
YY_RULE_SETUP
YY_RULE_SETUP
#line 5
7
9 "pars0lex.l"
#line 5
9
9 "pars0lex.l"
BEGIN
(
INITIAL
);
BEGIN
(
comment
);
/* eat up comment */
YY_BREAK
YY_BREAK
case
109
:
case
109
:
/* rule 109 can match eol */
/* rule 109 can match eol */
YY_RULE_SETUP
YY_RULE_SETUP
#line
58
1 "pars0lex.l"
#line
60
1 "pars0lex.l"
/* eat up whitespace */
YY_BREAK
YY_BREAK
case
110
:
case
110
:
/* rule 110 can match eol */
YY_RULE_SETUP
YY_RULE_SETUP
#line 584 "pars0lex.l"
#line 602 "pars0lex.l"
YY_BREAK
case
111
:
YY_RULE_SETUP
#line 603 "pars0lex.l"
BEGIN
(
INITIAL
);
YY_BREAK
case
112
:
/* rule 112 can match eol */
YY_RULE_SETUP
#line 605 "pars0lex.l"
/* eat up whitespace */
YY_BREAK
case
113
:
YY_RULE_SETUP
#line 608 "pars0lex.l"
{
{
fprintf
(
stderr
,
"Unrecognized character: %02x
\n
"
,
fprintf
(
stderr
,
"Unrecognized character: %02x
\n
"
,
*
yytext
);
*
yytext
);
...
@@ -1809,15 +1855,16 @@ YY_RULE_SETUP
...
@@ -1809,15 +1855,16 @@ YY_RULE_SETUP
return
(
0
);
return
(
0
);
}
}
YY_BREAK
YY_BREAK
case
11
1
:
case
11
4
:
YY_RULE_SETUP
YY_RULE_SETUP
#line
593
"pars0lex.l"
#line
617
"pars0lex.l"
YY_FATAL_ERROR
(
"flex scanner jammed"
);
YY_FATAL_ERROR
(
"flex scanner jammed"
);
YY_BREAK
YY_BREAK
#line 18
16 "lex.yy
.c"
#line 18
63 "_flex_tmp
.c"
case
YY_STATE_EOF
(
INITIAL
):
case
YY_STATE_EOF
(
INITIAL
):
case
YY_STATE_EOF
(
comment
):
case
YY_STATE_EOF
(
comment
):
case
YY_STATE_EOF
(
quoted
):
case
YY_STATE_EOF
(
quoted
):
case
YY_STATE_EOF
(
id
):
yyterminate
();
yyterminate
();
case
YY_END_OF_BUFFER
:
case
YY_END_OF_BUFFER
:
...
@@ -2101,7 +2148,7 @@ static int yy_get_next_buffer (void)
...
@@ -2101,7 +2148,7 @@ static int yy_get_next_buffer (void)
while
(
yy_chk
[
yy_base
[
yy_current_state
]
+
yy_c
]
!=
yy_current_state
)
while
(
yy_chk
[
yy_base
[
yy_current_state
]
+
yy_c
]
!=
yy_current_state
)
{
{
yy_current_state
=
(
int
)
yy_def
[
yy_current_state
];
yy_current_state
=
(
int
)
yy_def
[
yy_current_state
];
if
(
yy_current_state
>=
3
79
)
if
(
yy_current_state
>=
3
86
)
yy_c
=
yy_meta
[(
unsigned
int
)
yy_c
];
yy_c
=
yy_meta
[(
unsigned
int
)
yy_c
];
}
}
yy_current_state
=
yy_nxt
[
yy_base
[
yy_current_state
]
+
(
unsigned
int
)
yy_c
];
yy_current_state
=
yy_nxt
[
yy_base
[
yy_current_state
]
+
(
unsigned
int
)
yy_c
];
...
@@ -2129,11 +2176,11 @@ static int yy_get_next_buffer (void)
...
@@ -2129,11 +2176,11 @@ static int yy_get_next_buffer (void)
while
(
yy_chk
[
yy_base
[
yy_current_state
]
+
yy_c
]
!=
yy_current_state
)
while
(
yy_chk
[
yy_base
[
yy_current_state
]
+
yy_c
]
!=
yy_current_state
)
{
{
yy_current_state
=
(
int
)
yy_def
[
yy_current_state
];
yy_current_state
=
(
int
)
yy_def
[
yy_current_state
];
if
(
yy_current_state
>=
3
79
)
if
(
yy_current_state
>=
3
86
)
yy_c
=
yy_meta
[(
unsigned
int
)
yy_c
];
yy_c
=
yy_meta
[(
unsigned
int
)
yy_c
];
}
}
yy_current_state
=
yy_nxt
[
yy_base
[
yy_current_state
]
+
(
unsigned
int
)
yy_c
];
yy_current_state
=
yy_nxt
[
yy_base
[
yy_current_state
]
+
(
unsigned
int
)
yy_c
];
yy_is_jam
=
(
yy_current_state
==
3
78
);
yy_is_jam
=
(
yy_current_state
==
3
85
);
return
yy_is_jam
?
0
:
yy_current_state
;
return
yy_is_jam
?
0
:
yy_current_state
;
}
}
...
@@ -2656,7 +2703,7 @@ void yyfree (void * ptr )
...
@@ -2656,7 +2703,7 @@ void yyfree (void * ptr )
#undef YY_DECL_IS_OURS
#undef YY_DECL_IS_OURS
#undef YY_DECL
#undef YY_DECL
#endif
#endif
#line
593
"pars0lex.l"
#line
617
"pars0lex.l"
pars/pars0lex.l
View file @
cf058e65
...
@@ -85,6 +85,7 @@ DIGIT [0-9]
...
@@ -85,6 +85,7 @@ DIGIT [0-9]
ID [a-z_A-Z][a-z_A-Z0-9]*
ID [a-z_A-Z][a-z_A-Z0-9]*
%x comment
%x comment
%x quoted
%x quoted
%x id
%%
%%
{DIGIT}+ {
{DIGIT}+ {
...
@@ -137,6 +138,45 @@ In the state 'quoted', only two actions are possible (defined below). */
...
@@ -137,6 +138,45 @@ In the state 'quoted', only two actions are possible (defined below). */
}
}
}
}
\" {
/* Quoted identifiers are handled in an explicit start state 'id'.
This state is entered and the buffer for the scanned string is emptied
upon encountering a starting quote.
In the state 'id', only two actions are possible (defined below). */
BEGIN(id);
stringbuf_len = 0;
}
<id>[^\"]+ {
/* Got a sequence of characters other than '"':
append to string buffer */
string_append(yytext, yyleng);
}
<id>\"+ {
/* Got a sequence of '"' characters:
append half of them to string buffer,
as '""' represents a single '"'.
We apply truncating division,
so that '"""' will result in '"'. */
string_append(yytext, yyleng / 2);
/* If we got an odd number of quotes, then the
last quote we got is the terminating quote.
At the end of the string, we return to the
initial start state and report the scanned
identifier. */
if (yyleng % 2) {
BEGIN(INITIAL);
yylval = sym_tab_add_id(
pars_sym_tab_global,
(byte*) stringbuf, stringbuf_len);
return(PARS_ID_TOKEN);
}
}
"NULL" {
"NULL" {
yylval = sym_tab_add_null_lit(pars_sym_tab_global);
yylval = sym_tab_add_null_lit(pars_sym_tab_global);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment