lex.yy.c revision 1.1 1 /* A lexical scanner generated by flex */
2
3 /* Scanner skeleton version:
4 * $Header: /tank/opengrok/rsync2/NetBSD/src/sys/external/bsd/acpica/dist/compiler/lex.yy.c,v 1.1 2025/08/24 16:40:52 christos Exp $
5 */
6
7 #define FLEX_SCANNER
8 #define YY_FLEX_MAJOR_VERSION 2
9 #define YY_FLEX_MINOR_VERSION 5
10
11 #include <stdio.h>
12
13
14 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
15 #ifdef c_plusplus
16 #ifndef __cplusplus
17 #define __cplusplus
18 #endif
19 #endif
20
21
22 #ifdef __cplusplus
23
24 #include <stdlib.h>
25 #include <unistd.h>
26
27 /* Use prototypes in function declarations. */
28 #define YY_USE_PROTOS
29
30 /* The "const" storage-class-modifier is valid. */
31 #define YY_USE_CONST
32
33 #else /* ! __cplusplus */
34
35 #if __STDC__
36
37 #define YY_USE_PROTOS
38 #define YY_USE_CONST
39
40 #endif /* __STDC__ */
41 #endif /* ! __cplusplus */
42
43 #ifdef __TURBOC__
44 #pragma warn -rch
45 #pragma warn -use
46 #include <io.h>
47 #include <stdlib.h>
48 #define YY_USE_CONST
49 #define YY_USE_PROTOS
50 #endif
51
52 #ifdef YY_USE_CONST
53 #define yyconst const
54 #else
55 #define yyconst
56 #endif
57
58
59 #ifdef YY_USE_PROTOS
60 #define YY_PROTO(proto) proto
61 #else
62 #define YY_PROTO(proto) ()
63 #endif
64
65 /* Returned upon end-of-file. */
66 #define YY_NULL 0
67
68 /* Promotes a possibly negative, possibly signed char to an unsigned
69 * integer for use as an array index. If the signed char is negative,
70 * we want to instead treat it as an 8-bit unsigned char, hence the
71 * double cast.
72 */
73 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
74
75 /* Enter a start condition. This macro really ought to take a parameter,
76 * but we do it the disgusting crufty way forced on us by the ()-less
77 * definition of BEGIN.
78 */
79 #define BEGIN yy_start = 1 + 2 *
80
81 /* Translate the current start state into a value that can be later handed
82 * to BEGIN to return to the state. The YYSTATE alias is for lex
83 * compatibility.
84 */
85 #define YY_START ((yy_start - 1) / 2)
86 #define YYSTATE YY_START
87
88 /* Action number for EOF rule of a given start state. */
89 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
90
91 /* Special action meaning "start processing a new file". */
92 #define YY_NEW_FILE yyrestart( yyin )
93
94 #define YY_END_OF_BUFFER_CHAR 0
95
96 /* Size of default input buffer. */
97 #define YY_BUF_SIZE 16384
98
99 typedef struct yy_buffer_state *YY_BUFFER_STATE;
100
101 extern int yyleng;
102 extern FILE *yyin, *yyout;
103
104 #define EOB_ACT_CONTINUE_SCAN 0
105 #define EOB_ACT_END_OF_FILE 1
106 #define EOB_ACT_LAST_MATCH 2
107
108 /* The funky do-while in the following #define is used to turn the definition
109 * int a single C statement (which needs a semi-colon terminator). This
110 * avoids problems with code like:
111 *
112 * if ( condition_holds )
113 * yyless( 5 );
114 * else
115 * do_something_else();
116 *
117 * Prior to using the do-while the compiler would get upset at the
118 * "else" because it interpreted the "if" statement as being all
119 * done when it reached the ';' after the yyless() call.
120 */
121
122 /* Return all but the first 'n' matched characters back to the input stream. */
123
124 #define yyless(n) \
125 do \
126 { \
127 /* Undo effects of setting up yytext. */ \
128 *yy_cp = yy_hold_char; \
129 YY_RESTORE_YY_MORE_OFFSET \
130 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
131 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
132 } \
133 while ( 0 )
134
135 #define unput(c) yyunput( c, yytext_ptr )
136
137 /* The following is because we cannot portably get our hands on size_t
138 * (without autoconf's help, which isn't available because we want
139 * flex-generated scanners to compile on their own).
140 */
141 typedef unsigned int yy_size_t;
142
143
144 struct yy_buffer_state
145 {
146 FILE *yy_input_file;
147
148 char *yy_ch_buf; /* input buffer */
149 char *yy_buf_pos; /* current position in input buffer */
150
151 /* Size of input buffer in bytes, not including room for EOB
152 * characters.
153 */
154 yy_size_t yy_buf_size;
155
156 /* Number of characters read into yy_ch_buf, not including EOB
157 * characters.
158 */
159 int yy_n_chars;
160
161 /* Whether we "own" the buffer - i.e., we know we created it,
162 * and can realloc() it to grow it, and should free() it to
163 * delete it.
164 */
165 int yy_is_our_buffer;
166
167 /* Whether this is an "interactive" input source; if so, and
168 * if we're using stdio for input, then we want to use getc()
169 * instead of fread(), to make sure we stop fetching input after
170 * each newline.
171 */
172 int yy_is_interactive;
173
174 /* Whether we're considered to be at the beginning of a line.
175 * If so, '^' rules will be active on the next match, otherwise
176 * not.
177 */
178 int yy_at_bol;
179
180 /* Whether to try to fill the input buffer when we reach the
181 * end of it.
182 */
183 int yy_fill_buffer;
184
185 int yy_buffer_status;
186 #define YY_BUFFER_NEW 0
187 #define YY_BUFFER_NORMAL 1
188 /* When an EOF's been seen but there's still some text to process
189 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
190 * shouldn't try reading from the input source any more. We might
191 * still have a bunch of tokens to match, though, because of
192 * possible backing-up.
193 *
194 * When we actually see the EOF, we change the status to "new"
195 * (via yyrestart()), so that the user can continue scanning by
196 * just pointing yyin at a new input file.
197 */
198 #define YY_BUFFER_EOF_PENDING 2
199 };
200
201 static YY_BUFFER_STATE yy_current_buffer = 0;
202
203 /* We provide macros for accessing buffer states in case in the
204 * future we want to put the buffer states in a more general
205 * "scanner state".
206 */
207 #define YY_CURRENT_BUFFER yy_current_buffer
208
209
210 /* yy_hold_char holds the character lost when yytext is formed. */
211 static char yy_hold_char;
212
213 static int yy_n_chars; /* number of characters read into yy_ch_buf */
214
215
216 int yyleng;
217
218 /* Points to current character in buffer. */
219 static char *yy_c_buf_p = (char *) 0;
220 static int yy_init = 1; /* whether we need to initialize */
221 static int yy_start = 0; /* start state number */
222
223 /* Flag which is used to allow yywrap()'s to do buffer switches
224 * instead of setting up a fresh yyin. A bit of a hack ...
225 */
226 static int yy_did_buffer_switch_on_eof;
227
228 void yyrestart YY_PROTO(( FILE *input_file ));
229
230 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
231 void yy_load_buffer_state YY_PROTO(( void ));
232 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
233 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
234 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
235 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
236 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
237
238 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
239 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
240 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
241
242 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
243 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
244 static void yy_flex_free YY_PROTO(( void * ));
245
246 #define yy_new_buffer yy_create_buffer
247
248 #define yy_set_interactive(is_interactive) \
249 { \
250 if ( ! yy_current_buffer ) \
251 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
252 yy_current_buffer->yy_is_interactive = is_interactive; \
253 }
254
255 #define yy_set_bol(at_bol) \
256 { \
257 if ( ! yy_current_buffer ) \
258 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
259 yy_current_buffer->yy_at_bol = at_bol; \
260 }
261
262 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
263
264
265 #define yywrap() 1
266 #define YY_SKIP_YYWRAP
267 typedef unsigned char YY_CHAR;
268 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
269 typedef int yy_state_type;
270 extern char *yytext;
271 #define yytext_ptr yytext
272
273 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
274 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
275 static int yy_get_next_buffer YY_PROTO(( void ));
276 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
277
278 /* Done after the current pattern has been matched and before the
279 * corresponding action - sets up yytext.
280 */
281 #define YY_DO_BEFORE_ACTION \
282 yytext_ptr = yy_bp; \
283 yyleng = (int) (yy_cp - yy_bp); \
284 yy_hold_char = *yy_cp; \
285 *yy_cp = '\0'; \
286 yy_c_buf_p = yy_cp;
287
288 #define YY_NUM_RULES 32
289 #define YY_END_OF_BUFFER 33
290 static yyconst short int yy_accept[50] =
291 { 0,
292 0, 0, 33, 31, 30, 29, 6, 9, 20, 3,
293 4, 7, 10, 11, 8, 27, 27, 14, 31, 15,
294 26, 26, 21, 26, 22, 5, 30, 19, 23, 1,
295 2, 27, 0, 13, 16, 18, 17, 12, 26, 26,
296 26, 24, 28, 26, 26, 26, 26, 25, 0
297 } ;
298
299 static yyconst int yy_ec[256] =
300 { 0,
301 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
302 2, 1, 2, 1, 1, 1, 1, 1, 1, 1,
303 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
304 1, 2, 4, 1, 1, 1, 5, 6, 1, 7,
305 8, 9, 10, 1, 11, 1, 12, 13, 14, 14,
306 14, 14, 14, 14, 14, 14, 14, 1, 1, 15,
307 16, 17, 1, 1, 18, 18, 18, 18, 18, 18,
308 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
309 19, 19, 19, 19, 19, 19, 19, 20, 19, 19,
310 1, 1, 1, 21, 1, 1, 18, 18, 18, 22,
311
312 23, 24, 19, 19, 25, 19, 19, 19, 19, 26,
313 19, 19, 19, 19, 19, 19, 19, 19, 19, 20,
314 19, 19, 1, 27, 1, 28, 1, 1, 1, 1,
315 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
316 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
317 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
318 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
319 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
320 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
321 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
322
323 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
324 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
325 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
326 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
327 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
328 1, 1, 1, 1, 1
329 } ;
330
331 static yyconst int yy_meta[29] =
332 { 0,
333 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
334 1, 1, 2, 2, 1, 1, 1, 2, 3, 4,
335 1, 2, 2, 2, 3, 3, 1, 1
336 } ;
337
338 static yyconst short int yy_base[54] =
339 { 0,
340 0, 0, 72, 73, 69, 73, 54, 73, 63, 73,
341 73, 73, 73, 73, 20, 48, 47, 15, 50, 17,
342 16, 0, 73, 24, 38, 73, 62, 73, 73, 73,
343 73, 43, 0, 73, 73, 73, 73, 73, 39, 0,
344 14, 73, 0, 20, 35, 37, 30, 0, 73, 49,
345 52, 55, 46
346 } ;
347
348 static yyconst short int yy_def[54] =
349 { 0,
350 49, 1, 49, 49, 49, 49, 49, 49, 49, 49,
351 49, 49, 49, 49, 49, 50, 50, 49, 49, 49,
352 51, 52, 49, 51, 49, 49, 49, 49, 49, 49,
353 49, 50, 53, 49, 49, 49, 49, 49, 24, 52,
354 24, 49, 53, 51, 52, 52, 52, 52, 0, 49,
355 49, 49, 49
356 } ;
357
358 static yyconst short int yy_nxt[102] =
359 { 0,
360 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
361 14, 15, 16, 17, 18, 19, 20, 21, 22, 22,
362 23, 24, 21, 21, 22, 22, 25, 26, 30, 34,
363 35, 31, 37, 38, 40, 40, 39, 44, 40, 40,
364 40, 40, 40, 40, 45, 40, 41, 43, 40, 40,
365 32, 48, 32, 39, 39, 39, 40, 40, 40, 47,
366 46, 39, 49, 27, 42, 36, 49, 33, 29, 28,
367 27, 49, 3, 49, 49, 49, 49, 49, 49, 49,
368 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
369 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
370
371 49
372 } ;
373
374 static yyconst short int yy_chk[102] =
375 { 0,
376 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
377 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
378 1, 1, 1, 1, 1, 1, 1, 1, 15, 18,
379 18, 15, 20, 20, 21, 21, 41, 41, 44, 44,
380 21, 21, 24, 24, 44, 44, 24, 53, 24, 24,
381 50, 47, 50, 51, 51, 51, 52, 52, 52, 46,
382 45, 39, 32, 27, 25, 19, 17, 16, 9, 7,
383 5, 3, 49, 49, 49, 49, 49, 49, 49, 49,
384 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
385 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
386
387 49
388 } ;
389
390 static yy_state_type yy_last_accepting_state;
391 static char *yy_last_accepting_cpos;
392
393 /* The intent behind this definition is that it'll catch
394 * any uses of REJECT which flex missed.
395 */
396 #define REJECT reject_used_but_not_detected
397 #define yymore() yymore_used_but_not_detected
398 #define YY_MORE_ADJ 0
399 #define YY_RESTORE_YY_MORE_OFFSET
400 char *yytext;
401 #line 1 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
402 #define INITIAL 0
403 #line 2 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
404 /******************************************************************************
405 *
406 * Module Name: prparser.l - Flex input file for preprocessor lexer
407 *
408 *****************************************************************************/
409
410 /******************************************************************************
411 *
412 * 1. Copyright Notice
413 *
414 * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
415 * All rights reserved.
416 *
417 * 2. License
418 *
419 * 2.1. This is your license from Intel Corp. under its intellectual property
420 * rights. You may have additional license terms from the party that provided
421 * you this software, covering your right to use that party's intellectual
422 * property rights.
423 *
424 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
425 * copy of the source code appearing in this file ("Covered Code") an
426 * irrevocable, perpetual, worldwide license under Intel's copyrights in the
427 * base code distributed originally by Intel ("Original Intel Code") to copy,
428 * make derivatives, distribute, use and display any portion of the Covered
429 * Code in any form, with the right to sublicense such rights; and
430 *
431 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
432 * license (with the right to sublicense), under only those claims of Intel
433 * patents that are infringed by the Original Intel Code, to make, use, sell,
434 * offer to sell, and import the Covered Code and derivative works thereof
435 * solely to the minimum extent necessary to exercise the above copyright
436 * license, and in no event shall the patent license extend to any additions
437 * to or modifications of the Original Intel Code. No other license or right
438 * is granted directly or by implication, estoppel or otherwise;
439 *
440 * The above copyright and patent license is granted only if the following
441 * conditions are met:
442 *
443 * 3. Conditions
444 *
445 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
446 * Redistribution of source code of any substantial portion of the Covered
447 * Code or modification with rights to further distribute source must include
448 * the above Copyright Notice, the above License, this list of Conditions,
449 * and the following Disclaimer and Export Compliance provision. In addition,
450 * Licensee must cause all Covered Code to which Licensee contributes to
451 * contain a file documenting the changes Licensee made to create that Covered
452 * Code and the date of any change. Licensee must include in that file the
453 * documentation of any changes made by any predecessor Licensee. Licensee
454 * must include a prominent statement that the modification is derived,
455 * directly or indirectly, from Original Intel Code.
456 *
457 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
458 * Redistribution of source code of any substantial portion of the Covered
459 * Code or modification without rights to further distribute source must
460 * include the following Disclaimer and Export Compliance provision in the
461 * documentation and/or other materials provided with distribution. In
462 * addition, Licensee may not authorize further sublicense of source of any
463 * portion of the Covered Code, and must include terms to the effect that the
464 * license from Licensee to its licensee is limited to the intellectual
465 * property embodied in the software Licensee provides to its licensee, and
466 * not to intellectual property embodied in modifications its licensee may
467 * make.
468 *
469 * 3.3. Redistribution of Executable. Redistribution in executable form of any
470 * substantial portion of the Covered Code or modification must reproduce the
471 * above Copyright Notice, and the following Disclaimer and Export Compliance
472 * provision in the documentation and/or other materials provided with the
473 * distribution.
474 *
475 * 3.4. Intel retains all right, title, and interest in and to the Original
476 * Intel Code.
477 *
478 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
479 * Intel shall be used in advertising or otherwise to promote the sale, use or
480 * other dealings in products derived from or relating to the Covered Code
481 * without prior written authorization from Intel.
482 *
483 * 4. Disclaimer and Export Compliance
484 *
485 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
486 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
487 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
488 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
489 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
490 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
491 * PARTICULAR PURPOSE.
492 *
493 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
494 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
495 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
496 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
497 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
498 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
499 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
500 * LIMITED REMEDY.
501 *
502 * 4.3. Licensee shall not export, either directly or indirectly, any of this
503 * software or system incorporating such software without first obtaining any
504 * required license or other approval from the U. S. Department of Commerce or
505 * any other agency or department of the United States Government. In the
506 * event Licensee exports any such software from the United States or
507 * re-exports any such software from a foreign destination, Licensee shall
508 * ensure that the distribution and export/re-export of the software is in
509 * compliance with all laws, regulations, orders, or other restrictions of the
510 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
511 * any of its subsidiaries will export/re-export any technical data, process,
512 * software, or service, directly or indirectly, to any country for which the
513 * United States government or any agency thereof requires an export license,
514 * other governmental approval, or letter of assurance, without first obtaining
515 * such license, approval or letter.
516 *
517 *****************************************************************************
518 *
519 * Alternatively, you may choose to be licensed under the terms of the
520 * following license:
521 *
522 * Redistribution and use in source and binary forms, with or without
523 * modification, are permitted provided that the following conditions
524 * are met:
525 * 1. Redistributions of source code must retain the above copyright
526 * notice, this list of conditions, and the following disclaimer,
527 * without modification.
528 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
529 * substantially similar to the "NO WARRANTY" disclaimer below
530 * ("Disclaimer") and any redistribution must be conditioned upon
531 * including a substantially similar Disclaimer requirement for further
532 * binary redistribution.
533 * 3. Neither the names of the above-listed copyright holders nor the names
534 * of any contributors may be used to endorse or promote products derived
535 * from this software without specific prior written permission.
536 *
537 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
538 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
539 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
540 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
541 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
542 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
543 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
544 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
545 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
546 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
547 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
548 *
549 * Alternatively, you may choose to be licensed under the terms of the
550 * GNU General Public License ("GPL") version 2 as published by the Free
551 * Software Foundation.
552 *
553 *****************************************************************************/
554
555 #include "aslcompiler.h"
556 #include "prparser.y.h"
557
558 /* Buffer to pass strings to the parser */
559
560 #define STRING_SETUP strcpy (AslGbl_StringBuffer, PrParsertext);\
561 PrParserlval.str = AslGbl_StringBuffer
562
563 #define _COMPONENT ACPI_COMPILER
564 ACPI_MODULE_NAME ("prscanner")
565
566
567 /* Local prototypes */
568
569 static char
570 PrDoCommentType1 (
571 void);
572
573 static char
574 PrDoCommentType2 (
575 void);
576 #line 577 "lex.yy.c"
577
578 /* Macros after this point can all be overridden by user definitions in
579 * section 1.
580 */
581
582 #ifndef YY_SKIP_YYWRAP
583 #ifdef __cplusplus
584 extern "C" int yywrap YY_PROTO(( void ));
585 #else
586 extern int yywrap YY_PROTO(( void ));
587 #endif
588 #endif
589
590 #ifndef YY_NO_UNPUT
591 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
592 #endif
593
594 #ifndef yytext_ptr
595 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
596 #endif
597
598 #ifdef YY_NEED_STRLEN
599 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
600 #endif
601
602 #ifndef YY_NO_INPUT
603 #ifdef __cplusplus
604 static int yyinput YY_PROTO(( void ));
605 #else
606 static int input YY_PROTO(( void ));
607 #endif
608 #endif
609
610 #if YY_STACK_USED
611 static int yy_start_stack_ptr = 0;
612 static int yy_start_stack_depth = 0;
613 static int *yy_start_stack = 0;
614 #ifndef YY_NO_PUSH_STATE
615 static void yy_push_state YY_PROTO(( int new_state ));
616 #endif
617 #ifndef YY_NO_POP_STATE
618 static void yy_pop_state YY_PROTO(( void ));
619 #endif
620 #ifndef YY_NO_TOP_STATE
621 static int yy_top_state YY_PROTO(( void ));
622 #endif
623
624 #else
625 #define YY_NO_PUSH_STATE 1
626 #define YY_NO_POP_STATE 1
627 #define YY_NO_TOP_STATE 1
628 #endif
629
630 #ifdef YY_MALLOC_DECL
631 YY_MALLOC_DECL
632 #else
633 #if __STDC__
634 #ifndef __cplusplus
635 #include <stdlib.h>
636 #endif
637 #else
638 /* Just try to get by without declaring the routines. This will fail
639 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
640 * or sizeof(void*) != sizeof(int).
641 */
642 #endif
643 #endif
644
645 /* Amount of stuff to slurp up with each read. */
646 #ifndef YY_READ_BUF_SIZE
647 #define YY_READ_BUF_SIZE 8192
648 #endif
649
650 /* Copy whatever the last rule matched to the standard output. */
651
652 #ifndef ECHO
653 /* This used to be an fputs(), but since the string might contain NUL's,
654 * we now use fwrite().
655 */
656 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
657 #endif
658
659 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
660 * is returned in "result".
661 */
662 #ifndef YY_INPUT
663 #define YY_INPUT(buf,result,max_size) \
664 if ( yy_current_buffer->yy_is_interactive ) \
665 { \
666 int c = '*', n; \
667 for ( n = 0; n < max_size && \
668 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
669 buf[n] = (char) c; \
670 if ( c == '\n' ) \
671 buf[n++] = (char) c; \
672 if ( c == EOF && ferror( yyin ) ) \
673 YY_FATAL_ERROR( "input in flex scanner failed" ); \
674 result = n; \
675 } \
676 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
677 && ferror( yyin ) ) \
678 YY_FATAL_ERROR( "input in flex scanner failed" );
679 #endif
680
681 /* No semi-colon after return; correct usage is to write "yyterminate();" -
682 * we don't want an extra ';' after the "return" because that will cause
683 * some compilers to complain about unreachable statements.
684 */
685 #ifndef yyterminate
686 #define yyterminate() return YY_NULL
687 #endif
688
689 /* Number of entries by which start-condition stack grows. */
690 #ifndef YY_START_STACK_INCR
691 #define YY_START_STACK_INCR 25
692 #endif
693
694 /* Report a fatal error. */
695 #ifndef YY_FATAL_ERROR
696 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
697 #endif
698
699 /* Default declaration of generated scanner - a define so the user can
700 * easily add parameters.
701 */
702 #ifndef YY_DECL
703 #define YY_DECL int yylex YY_PROTO(( void ))
704 #endif
705
706 /* Code executed at the beginning of each rule, after yytext and yyleng
707 * have been set up.
708 */
709 #ifndef YY_USER_ACTION
710 #define YY_USER_ACTION
711 #endif
712
713 /* Code executed at the end of each rule. */
714 #ifndef YY_BREAK
715 #define YY_BREAK break;
716 #endif
717
718 #define YY_RULE_SETUP \
719 YY_USER_ACTION
720
721 YY_DECL
722 {
723 register yy_state_type yy_current_state;
724 register char *yy_cp, *yy_bp;
725 register int yy_act;
726
727 #line 184 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
728
729 #line 730 "lex.yy.c"
730
731 if ( yy_init )
732 {
733 yy_init = 0;
734
735 #ifdef YY_USER_INIT
736 YY_USER_INIT;
737 #endif
738
739 if ( ! yy_start )
740 yy_start = 1; /* first start state */
741
742 if ( ! yyin )
743 yyin = stdin;
744
745 if ( ! yyout )
746 yyout = stdout;
747
748 if ( ! yy_current_buffer )
749 yy_current_buffer =
750 yy_create_buffer( yyin, YY_BUF_SIZE );
751
752 yy_load_buffer_state();
753 }
754
755 while ( 1 ) /* loops until end-of-file is reached */
756 {
757 yy_cp = yy_c_buf_p;
758
759 /* Support of yytext. */
760 *yy_cp = yy_hold_char;
761
762 /* yy_bp points to the position in yy_ch_buf of the start of
763 * the current run.
764 */
765 yy_bp = yy_cp;
766
767 yy_current_state = yy_start;
768 yy_match:
769 do
770 {
771 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
772 if ( yy_accept[yy_current_state] )
773 {
774 yy_last_accepting_state = yy_current_state;
775 yy_last_accepting_cpos = yy_cp;
776 }
777 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
778 {
779 yy_current_state = (int) yy_def[yy_current_state];
780 if ( yy_current_state >= 50 )
781 yy_c = yy_meta[(unsigned int) yy_c];
782 }
783 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
784 ++yy_cp;
785 }
786 while ( yy_base[yy_current_state] != 73 );
787
788 yy_find_action:
789 yy_act = yy_accept[yy_current_state];
790 if ( yy_act == 0 )
791 { /* have to back up */
792 yy_cp = yy_last_accepting_cpos;
793 yy_current_state = yy_last_accepting_state;
794 yy_act = yy_accept[yy_current_state];
795 }
796
797 YY_DO_BEFORE_ACTION;
798
799
800 do_action: /* This label is used only to access EOF actions. */
801
802
803 switch ( yy_act )
804 { /* beginning of action switch */
805 case 0: /* must back up */
806 /* undo the effects of YY_DO_BEFORE_ACTION */
807 *yy_cp = yy_hold_char;
808 yy_cp = yy_last_accepting_cpos;
809 yy_current_state = yy_last_accepting_state;
810 goto yy_find_action;
811
812 case 1:
813 YY_RULE_SETUP
814 #line 185 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
815 { if (!PrDoCommentType1 ()) {yyterminate ();} }
816 YY_BREAK
817 case 2:
818 YY_RULE_SETUP
819 #line 186 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
820 { if (!PrDoCommentType2 ()) {yyterminate ();} }
821 YY_BREAK
822 case 3:
823 YY_RULE_SETUP
824 #line 188 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
825 return (EXPOP_PAREN_OPEN);
826 YY_BREAK
827 case 4:
828 YY_RULE_SETUP
829 #line 189 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
830 return (EXPOP_PAREN_CLOSE);
831 YY_BREAK
832 case 5:
833 YY_RULE_SETUP
834 #line 190 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
835 return (EXPOP_ONES_COMPLIMENT);
836 YY_BREAK
837 case 6:
838 YY_RULE_SETUP
839 #line 191 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
840 return (EXPOP_LOGICAL_NOT);
841 YY_BREAK
842 case 7:
843 YY_RULE_SETUP
844 #line 192 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
845 return (EXPOP_MULTIPLY);
846 YY_BREAK
847 case 8:
848 YY_RULE_SETUP
849 #line 193 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
850 return (EXPOP_DIVIDE);
851 YY_BREAK
852 case 9:
853 YY_RULE_SETUP
854 #line 194 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
855 return (EXPOP_MODULO);
856 YY_BREAK
857 case 10:
858 YY_RULE_SETUP
859 #line 195 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
860 return (EXPOP_ADD);
861 YY_BREAK
862 case 11:
863 YY_RULE_SETUP
864 #line 196 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
865 return (EXPOP_SUBTRACT);
866 YY_BREAK
867 case 12:
868 YY_RULE_SETUP
869 #line 197 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
870 return (EXPOP_SHIFT_RIGHT);
871 YY_BREAK
872 case 13:
873 YY_RULE_SETUP
874 #line 198 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
875 return (EXPOP_SHIFT_LEFT);
876 YY_BREAK
877 case 14:
878 YY_RULE_SETUP
879 #line 199 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
880 return (EXPOP_LESS);
881 YY_BREAK
882 case 15:
883 YY_RULE_SETUP
884 #line 200 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
885 return (EXPOP_GREATER);
886 YY_BREAK
887 case 16:
888 YY_RULE_SETUP
889 #line 201 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
890 return (EXPOP_LESS_EQUAL);
891 YY_BREAK
892 case 17:
893 YY_RULE_SETUP
894 #line 202 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
895 return (EXPOP_GREATER_EQUAL);
896 YY_BREAK
897 case 18:
898 YY_RULE_SETUP
899 #line 203 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
900 return (EXPOP_EQUAL);
901 YY_BREAK
902 case 19:
903 YY_RULE_SETUP
904 #line 204 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
905 return (EXPOP_NOT_EQUAL);
906 YY_BREAK
907 case 20:
908 YY_RULE_SETUP
909 #line 205 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
910 return (EXPOP_AND);
911 YY_BREAK
912 case 21:
913 YY_RULE_SETUP
914 #line 206 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
915 return (EXPOP_XOR);
916 YY_BREAK
917 case 22:
918 YY_RULE_SETUP
919 #line 207 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
920 return (EXPOP_OR);
921 YY_BREAK
922 case 23:
923 YY_RULE_SETUP
924 #line 208 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
925 return (EXPOP_LOGICAL_AND);
926 YY_BREAK
927 case 24:
928 YY_RULE_SETUP
929 #line 209 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
930 return (EXPOP_LOGICAL_OR);
931 YY_BREAK
932 case 25:
933 YY_RULE_SETUP
934 #line 211 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
935 return (EXPOP_DEFINE);
936 YY_BREAK
937 case 26:
938 YY_RULE_SETUP
939 #line 212 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
940 {STRING_SETUP; return (EXPOP_IDENTIFIER);}
941 YY_BREAK
942 case YY_STATE_EOF(INITIAL):
943 #line 214 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
944 return (EXPOP_EOF); /* null end-of-string */
945 YY_BREAK
946 case 27:
947 YY_RULE_SETUP
948 #line 216 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
949 return (EXPOP_NUMBER);
950 YY_BREAK
951 case 28:
952 YY_RULE_SETUP
953 #line 217 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
954 return (EXPOP_HEX_NUMBER);
955 YY_BREAK
956 case 29:
957 YY_RULE_SETUP
958 #line 218 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
959 return (EXPOP_NEW_LINE);
960 YY_BREAK
961 case 30:
962 YY_RULE_SETUP
963 #line 219 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
964 /* Ignore */
965 YY_BREAK
966 case 31:
967 YY_RULE_SETUP
968 #line 221 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
969 return (EXPOP_EOF);
970 YY_BREAK
971 case 32:
972 YY_RULE_SETUP
973 #line 222 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
974 ECHO;
975 YY_BREAK
976 #line 977 "lex.yy.c"
977
978 case YY_END_OF_BUFFER:
979 {
980 /* Amount of text matched not including the EOB char. */
981 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
982
983 /* Undo the effects of YY_DO_BEFORE_ACTION. */
984 *yy_cp = yy_hold_char;
985 YY_RESTORE_YY_MORE_OFFSET
986
987 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
988 {
989 /* We're scanning a new file or input source. It's
990 * possible that this happened because the user
991 * just pointed yyin at a new source and called
992 * yylex(). If so, then we have to assure
993 * consistency between yy_current_buffer and our
994 * globals. Here is the right place to do so, because
995 * this is the first action (other than possibly a
996 * back-up) that will match for the new input source.
997 */
998 yy_n_chars = yy_current_buffer->yy_n_chars;
999 yy_current_buffer->yy_input_file = yyin;
1000 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
1001 }
1002
1003 /* Note that here we test for yy_c_buf_p "<=" to the position
1004 * of the first EOB in the buffer, since yy_c_buf_p will
1005 * already have been incremented past the NUL character
1006 * (since all states make transitions on EOB to the
1007 * end-of-buffer state). Contrast this with the test
1008 * in input().
1009 */
1010 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1011 { /* This was really a NUL. */
1012 yy_state_type yy_next_state;
1013
1014 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
1015
1016 yy_current_state = yy_get_previous_state();
1017
1018 /* Okay, we're now positioned to make the NUL
1019 * transition. We couldn't have
1020 * yy_get_previous_state() go ahead and do it
1021 * for us because it doesn't know how to deal
1022 * with the possibility of jamming (and we don't
1023 * want to build jamming into it because then it
1024 * will run more slowly).
1025 */
1026
1027 yy_next_state = yy_try_NUL_trans( yy_current_state );
1028
1029 yy_bp = yytext_ptr + YY_MORE_ADJ;
1030
1031 if ( yy_next_state )
1032 {
1033 /* Consume the NUL. */
1034 yy_cp = ++yy_c_buf_p;
1035 yy_current_state = yy_next_state;
1036 goto yy_match;
1037 }
1038
1039 else
1040 {
1041 yy_cp = yy_c_buf_p;
1042 goto yy_find_action;
1043 }
1044 }
1045
1046 else switch ( yy_get_next_buffer() )
1047 {
1048 case EOB_ACT_END_OF_FILE:
1049 {
1050 yy_did_buffer_switch_on_eof = 0;
1051
1052 if ( yywrap() )
1053 {
1054 /* Note: because we've taken care in
1055 * yy_get_next_buffer() to have set up
1056 * yytext, we can now set up
1057 * yy_c_buf_p so that if some total
1058 * hoser (like flex itself) wants to
1059 * call the scanner after we return the
1060 * YY_NULL, it'll still work - another
1061 * YY_NULL will get returned.
1062 */
1063 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
1064
1065 yy_act = YY_STATE_EOF(YY_START);
1066 goto do_action;
1067 }
1068
1069 else
1070 {
1071 if ( ! yy_did_buffer_switch_on_eof )
1072 YY_NEW_FILE;
1073 }
1074 break;
1075 }
1076
1077 case EOB_ACT_CONTINUE_SCAN:
1078 yy_c_buf_p =
1079 yytext_ptr + yy_amount_of_matched_text;
1080
1081 yy_current_state = yy_get_previous_state();
1082
1083 yy_cp = yy_c_buf_p;
1084 yy_bp = yytext_ptr + YY_MORE_ADJ;
1085 goto yy_match;
1086
1087 case EOB_ACT_LAST_MATCH:
1088 yy_c_buf_p =
1089 &yy_current_buffer->yy_ch_buf[yy_n_chars];
1090
1091 yy_current_state = yy_get_previous_state();
1092
1093 yy_cp = yy_c_buf_p;
1094 yy_bp = yytext_ptr + YY_MORE_ADJ;
1095 goto yy_find_action;
1096 }
1097 break;
1098 }
1099
1100 default:
1101 YY_FATAL_ERROR(
1102 "fatal flex scanner internal error--no action found" );
1103 } /* end of action switch */
1104 } /* end of scanning one token */
1105 } /* end of yylex */
1106
1107
1108 /* yy_get_next_buffer - try to read in a new buffer
1109 *
1110 * Returns a code representing an action:
1111 * EOB_ACT_LAST_MATCH -
1112 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1113 * EOB_ACT_END_OF_FILE - end of file
1114 */
1115
1116 static int yy_get_next_buffer()
1117 {
1118 register char *dest = yy_current_buffer->yy_ch_buf;
1119 register char *source = yytext_ptr;
1120 register int number_to_move, i;
1121 int ret_val;
1122
1123 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
1124 YY_FATAL_ERROR(
1125 "fatal flex scanner internal error--end of buffer missed" );
1126
1127 if ( yy_current_buffer->yy_fill_buffer == 0 )
1128 { /* Don't try to fill the buffer, so this is an EOF. */
1129 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
1130 {
1131 /* We matched a single character, the EOB, so
1132 * treat this as a final EOF.
1133 */
1134 return EOB_ACT_END_OF_FILE;
1135 }
1136
1137 else
1138 {
1139 /* We matched some text prior to the EOB, first
1140 * process it.
1141 */
1142 return EOB_ACT_LAST_MATCH;
1143 }
1144 }
1145
1146 /* Try to read more data. */
1147
1148 /* First move last chars to start of buffer. */
1149 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
1150
1151 for ( i = 0; i < number_to_move; ++i )
1152 *(dest++) = *(source++);
1153
1154 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1155 /* don't do the read, it's not guaranteed to return an EOF,
1156 * just force an EOF
1157 */
1158 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
1159
1160 else
1161 {
1162 int num_to_read =
1163 yy_current_buffer->yy_buf_size - number_to_move - 1;
1164
1165 while ( num_to_read <= 0 )
1166 { /* Not enough room in the buffer - grow it. */
1167 #ifdef YY_USES_REJECT
1168 YY_FATAL_ERROR(
1169 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1170 #else
1171
1172 /* just a shorter name for the current buffer */
1173 YY_BUFFER_STATE b = yy_current_buffer;
1174
1175 int yy_c_buf_p_offset =
1176 (int) (yy_c_buf_p - b->yy_ch_buf);
1177
1178 if ( b->yy_is_our_buffer )
1179 {
1180 int new_size = b->yy_buf_size * 2;
1181
1182 if ( new_size <= 0 )
1183 b->yy_buf_size += b->yy_buf_size / 8;
1184 else
1185 b->yy_buf_size *= 2;
1186
1187 b->yy_ch_buf = (char *)
1188 /* Include room in for 2 EOB chars. */
1189 yy_flex_realloc( (void *) b->yy_ch_buf,
1190 b->yy_buf_size + 2 );
1191 }
1192 else
1193 /* Can't grow it, we don't own it. */
1194 b->yy_ch_buf = 0;
1195
1196 if ( ! b->yy_ch_buf )
1197 YY_FATAL_ERROR(
1198 "fatal error - scanner input buffer overflow" );
1199
1200 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1201
1202 num_to_read = yy_current_buffer->yy_buf_size -
1203 number_to_move - 1;
1204 #endif
1205 }
1206
1207 if ( num_to_read > YY_READ_BUF_SIZE )
1208 num_to_read = YY_READ_BUF_SIZE;
1209
1210 /* Read in more data. */
1211 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
1212 yy_n_chars, num_to_read );
1213
1214 yy_current_buffer->yy_n_chars = yy_n_chars;
1215 }
1216
1217 if ( yy_n_chars == 0 )
1218 {
1219 if ( number_to_move == YY_MORE_ADJ )
1220 {
1221 ret_val = EOB_ACT_END_OF_FILE;
1222 yyrestart( yyin );
1223 }
1224
1225 else
1226 {
1227 ret_val = EOB_ACT_LAST_MATCH;
1228 yy_current_buffer->yy_buffer_status =
1229 YY_BUFFER_EOF_PENDING;
1230 }
1231 }
1232
1233 else
1234 ret_val = EOB_ACT_CONTINUE_SCAN;
1235
1236 yy_n_chars += number_to_move;
1237 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1238 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1239
1240 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
1241
1242 return ret_val;
1243 }
1244
1245
1246 /* yy_get_previous_state - get the state just before the EOB char was reached */
1247
1248 static yy_state_type yy_get_previous_state()
1249 {
1250 register yy_state_type yy_current_state;
1251 register char *yy_cp;
1252
1253 yy_current_state = yy_start;
1254
1255 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
1256 {
1257 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1258 if ( yy_accept[yy_current_state] )
1259 {
1260 yy_last_accepting_state = yy_current_state;
1261 yy_last_accepting_cpos = yy_cp;
1262 }
1263 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1264 {
1265 yy_current_state = (int) yy_def[yy_current_state];
1266 if ( yy_current_state >= 50 )
1267 yy_c = yy_meta[(unsigned int) yy_c];
1268 }
1269 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1270 }
1271
1272 return yy_current_state;
1273 }
1274
1275
1276 /* yy_try_NUL_trans - try to make a transition on the NUL character
1277 *
1278 * synopsis
1279 * next_state = yy_try_NUL_trans( current_state );
1280 */
1281
1282 #ifdef YY_USE_PROTOS
1283 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
1284 #else
1285 static yy_state_type yy_try_NUL_trans( yy_current_state )
1286 yy_state_type yy_current_state;
1287 #endif
1288 {
1289 register int yy_is_jam;
1290 register char *yy_cp = yy_c_buf_p;
1291
1292 register YY_CHAR yy_c = 1;
1293 if ( yy_accept[yy_current_state] )
1294 {
1295 yy_last_accepting_state = yy_current_state;
1296 yy_last_accepting_cpos = yy_cp;
1297 }
1298 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1299 {
1300 yy_current_state = (int) yy_def[yy_current_state];
1301 if ( yy_current_state >= 50 )
1302 yy_c = yy_meta[(unsigned int) yy_c];
1303 }
1304 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1305 yy_is_jam = (yy_current_state == 49);
1306
1307 return yy_is_jam ? 0 : yy_current_state;
1308 }
1309
1310
1311 #ifndef YY_NO_UNPUT
1312 #ifdef YY_USE_PROTOS
1313 static void yyunput( int c, register char *yy_bp )
1314 #else
1315 static void yyunput( c, yy_bp )
1316 int c;
1317 register char *yy_bp;
1318 #endif
1319 {
1320 register char *yy_cp = yy_c_buf_p;
1321
1322 /* undo effects of setting up yytext */
1323 *yy_cp = yy_hold_char;
1324
1325 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1326 { /* need to shift things up to make room */
1327 /* +2 for EOB chars. */
1328 register int number_to_move = yy_n_chars + 2;
1329 register char *dest = &yy_current_buffer->yy_ch_buf[
1330 yy_current_buffer->yy_buf_size + 2];
1331 register char *source =
1332 &yy_current_buffer->yy_ch_buf[number_to_move];
1333
1334 while ( source > yy_current_buffer->yy_ch_buf )
1335 *--dest = *--source;
1336
1337 yy_cp += (int) (dest - source);
1338 yy_bp += (int) (dest - source);
1339 yy_current_buffer->yy_n_chars =
1340 yy_n_chars = yy_current_buffer->yy_buf_size;
1341
1342 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1343 YY_FATAL_ERROR( "flex scanner push-back overflow" );
1344 }
1345
1346 *--yy_cp = (char) c;
1347
1348
1349 yytext_ptr = yy_bp;
1350 yy_hold_char = *yy_cp;
1351 yy_c_buf_p = yy_cp;
1352 }
1353 #endif /* ifndef YY_NO_UNPUT */
1354
1355
1356 #ifdef __cplusplus
1357 static int yyinput()
1358 #else
1359 static int input()
1360 #endif
1361 {
1362 int c;
1363
1364 *yy_c_buf_p = yy_hold_char;
1365
1366 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1367 {
1368 /* yy_c_buf_p now points to the character we want to return.
1369 * If this occurs *before* the EOB characters, then it's a
1370 * valid NUL; if not, then we've hit the end of the buffer.
1371 */
1372 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1373 /* This was really a NUL. */
1374 *yy_c_buf_p = '\0';
1375
1376 else
1377 { /* need more input */
1378 int offset = yy_c_buf_p - yytext_ptr;
1379 ++yy_c_buf_p;
1380
1381 switch ( yy_get_next_buffer() )
1382 {
1383 case EOB_ACT_LAST_MATCH:
1384 /* This happens because yy_g_n_b()
1385 * sees that we've accumulated a
1386 * token and flags that we need to
1387 * try matching the token before
1388 * proceeding. But for input(),
1389 * there's no matching to consider.
1390 * So convert the EOB_ACT_LAST_MATCH
1391 * to EOB_ACT_END_OF_FILE.
1392 */
1393
1394 /* Reset buffer status. */
1395 yyrestart( yyin );
1396
1397 /* fall through */
1398
1399 case EOB_ACT_END_OF_FILE:
1400 {
1401 if ( yywrap() )
1402 return EOF;
1403
1404 if ( ! yy_did_buffer_switch_on_eof )
1405 YY_NEW_FILE;
1406 #ifdef __cplusplus
1407 return yyinput();
1408 #else
1409 return input();
1410 #endif
1411 }
1412
1413 case EOB_ACT_CONTINUE_SCAN:
1414 yy_c_buf_p = yytext_ptr + offset;
1415 break;
1416 }
1417 }
1418 }
1419
1420 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
1421 *yy_c_buf_p = '\0'; /* preserve yytext */
1422 yy_hold_char = *++yy_c_buf_p;
1423
1424
1425 return c;
1426 }
1427
1428
1429 #ifdef YY_USE_PROTOS
1430 void yyrestart( FILE *input_file )
1431 #else
1432 void yyrestart( input_file )
1433 FILE *input_file;
1434 #endif
1435 {
1436 if ( ! yy_current_buffer )
1437 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
1438
1439 yy_init_buffer( yy_current_buffer, input_file );
1440 yy_load_buffer_state();
1441 }
1442
1443
1444 #ifdef YY_USE_PROTOS
1445 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
1446 #else
1447 void yy_switch_to_buffer( new_buffer )
1448 YY_BUFFER_STATE new_buffer;
1449 #endif
1450 {
1451 if ( yy_current_buffer == new_buffer )
1452 return;
1453
1454 if ( yy_current_buffer )
1455 {
1456 /* Flush out information for old buffer. */
1457 *yy_c_buf_p = yy_hold_char;
1458 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
1459 yy_current_buffer->yy_n_chars = yy_n_chars;
1460 }
1461
1462 yy_current_buffer = new_buffer;
1463 yy_load_buffer_state();
1464
1465 /* We don't actually know whether we did this switch during
1466 * EOF (yywrap()) processing, but the only time this flag
1467 * is looked at is after yywrap() is called, so it's safe
1468 * to go ahead and always set it.
1469 */
1470 yy_did_buffer_switch_on_eof = 1;
1471 }
1472
1473
1474 #ifdef YY_USE_PROTOS
1475 void yy_load_buffer_state( void )
1476 #else
1477 void yy_load_buffer_state()
1478 #endif
1479 {
1480 yy_n_chars = yy_current_buffer->yy_n_chars;
1481 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
1482 yyin = yy_current_buffer->yy_input_file;
1483 yy_hold_char = *yy_c_buf_p;
1484 }
1485
1486
1487 #ifdef YY_USE_PROTOS
1488 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
1489 #else
1490 YY_BUFFER_STATE yy_create_buffer( file, size )
1491 FILE *file;
1492 int size;
1493 #endif
1494 {
1495 YY_BUFFER_STATE b;
1496
1497 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
1498 if ( ! b )
1499 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1500
1501 b->yy_buf_size = size;
1502
1503 /* yy_ch_buf has to be 2 characters longer than the size given because
1504 * we need to put in 2 end-of-buffer characters.
1505 */
1506 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
1507 if ( ! b->yy_ch_buf )
1508 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1509
1510 b->yy_is_our_buffer = 1;
1511
1512 yy_init_buffer( b, file );
1513
1514 return b;
1515 }
1516
1517
1518 #ifdef YY_USE_PROTOS
1519 void yy_delete_buffer( YY_BUFFER_STATE b )
1520 #else
1521 void yy_delete_buffer( b )
1522 YY_BUFFER_STATE b;
1523 #endif
1524 {
1525 if ( ! b )
1526 return;
1527
1528 if ( b == yy_current_buffer )
1529 yy_current_buffer = (YY_BUFFER_STATE) 0;
1530
1531 if ( b->yy_is_our_buffer )
1532 yy_flex_free( (void *) b->yy_ch_buf );
1533
1534 yy_flex_free( (void *) b );
1535 }
1536
1537
1538 #ifndef YY_ALWAYS_INTERACTIVE
1539 #ifndef YY_NEVER_INTERACTIVE
1540 extern int isatty YY_PROTO(( int ));
1541 #endif
1542 #endif
1543
1544 #ifdef YY_USE_PROTOS
1545 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
1546 #else
1547 void yy_init_buffer( b, file )
1548 YY_BUFFER_STATE b;
1549 FILE *file;
1550 #endif
1551
1552
1553 {
1554 yy_flush_buffer( b );
1555
1556 b->yy_input_file = file;
1557 b->yy_fill_buffer = 1;
1558
1559 #if YY_ALWAYS_INTERACTIVE
1560 b->yy_is_interactive = 1;
1561 #else
1562 #if YY_NEVER_INTERACTIVE
1563 b->yy_is_interactive = 0;
1564 #else
1565 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
1566 #endif
1567 #endif
1568 }
1569
1570
1571 #ifdef YY_USE_PROTOS
1572 void yy_flush_buffer( YY_BUFFER_STATE b )
1573 #else
1574 void yy_flush_buffer( b )
1575 YY_BUFFER_STATE b;
1576 #endif
1577
1578 {
1579 if ( ! b )
1580 return;
1581
1582 b->yy_n_chars = 0;
1583
1584 /* We always need two end-of-buffer characters. The first causes
1585 * a transition to the end-of-buffer state. The second causes
1586 * a jam in that state.
1587 */
1588 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
1589 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
1590
1591 b->yy_buf_pos = &b->yy_ch_buf[0];
1592
1593 b->yy_at_bol = 1;
1594 b->yy_buffer_status = YY_BUFFER_NEW;
1595
1596 if ( b == yy_current_buffer )
1597 yy_load_buffer_state();
1598 }
1599
1600
1601 #ifndef YY_NO_SCAN_BUFFER
1602 #ifdef YY_USE_PROTOS
1603 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
1604 #else
1605 YY_BUFFER_STATE yy_scan_buffer( base, size )
1606 char *base;
1607 yy_size_t size;
1608 #endif
1609 {
1610 YY_BUFFER_STATE b;
1611
1612 if ( size < 2 ||
1613 base[size-2] != YY_END_OF_BUFFER_CHAR ||
1614 base[size-1] != YY_END_OF_BUFFER_CHAR )
1615 /* They forgot to leave room for the EOB's. */
1616 return 0;
1617
1618 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
1619 if ( ! b )
1620 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
1621
1622 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
1623 b->yy_buf_pos = b->yy_ch_buf = base;
1624 b->yy_is_our_buffer = 0;
1625 b->yy_input_file = 0;
1626 b->yy_n_chars = b->yy_buf_size;
1627 b->yy_is_interactive = 0;
1628 b->yy_at_bol = 1;
1629 b->yy_fill_buffer = 0;
1630 b->yy_buffer_status = YY_BUFFER_NEW;
1631
1632 yy_switch_to_buffer( b );
1633
1634 return b;
1635 }
1636 #endif
1637
1638
1639 #ifndef YY_NO_SCAN_STRING
1640 #ifdef YY_USE_PROTOS
1641 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
1642 #else
1643 YY_BUFFER_STATE yy_scan_string( yy_str )
1644 yyconst char *yy_str;
1645 #endif
1646 {
1647 int len;
1648 for ( len = 0; yy_str[len]; ++len )
1649 ;
1650
1651 return yy_scan_bytes( yy_str, len );
1652 }
1653 #endif
1654
1655
1656 #ifndef YY_NO_SCAN_BYTES
1657 #ifdef YY_USE_PROTOS
1658 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
1659 #else
1660 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
1661 yyconst char *bytes;
1662 int len;
1663 #endif
1664 {
1665 YY_BUFFER_STATE b;
1666 char *buf;
1667 yy_size_t n;
1668 int i;
1669
1670 /* Get memory for full buffer, including space for trailing EOB's. */
1671 n = len + 2;
1672 buf = (char *) yy_flex_alloc( n );
1673 if ( ! buf )
1674 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
1675
1676 for ( i = 0; i < len; ++i )
1677 buf[i] = bytes[i];
1678
1679 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
1680
1681 b = yy_scan_buffer( buf, n );
1682 if ( ! b )
1683 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
1684
1685 /* It's okay to grow etc. this buffer, and we should throw it
1686 * away when we're done.
1687 */
1688 b->yy_is_our_buffer = 1;
1689
1690 return b;
1691 }
1692 #endif
1693
1694
1695 #ifndef YY_NO_PUSH_STATE
1696 #ifdef YY_USE_PROTOS
1697 static void yy_push_state( int new_state )
1698 #else
1699 static void yy_push_state( new_state )
1700 int new_state;
1701 #endif
1702 {
1703 if ( yy_start_stack_ptr >= yy_start_stack_depth )
1704 {
1705 yy_size_t new_size;
1706
1707 yy_start_stack_depth += YY_START_STACK_INCR;
1708 new_size = yy_start_stack_depth * sizeof( int );
1709
1710 if ( ! yy_start_stack )
1711 yy_start_stack = (int *) yy_flex_alloc( new_size );
1712
1713 else
1714 yy_start_stack = (int *) yy_flex_realloc(
1715 (void *) yy_start_stack, new_size );
1716
1717 if ( ! yy_start_stack )
1718 YY_FATAL_ERROR(
1719 "out of memory expanding start-condition stack" );
1720 }
1721
1722 yy_start_stack[yy_start_stack_ptr++] = YY_START;
1723
1724 BEGIN(new_state);
1725 }
1726 #endif
1727
1728
1729 #ifndef YY_NO_POP_STATE
1730 static void yy_pop_state()
1731 {
1732 if ( --yy_start_stack_ptr < 0 )
1733 YY_FATAL_ERROR( "start-condition stack underflow" );
1734
1735 BEGIN(yy_start_stack[yy_start_stack_ptr]);
1736 }
1737 #endif
1738
1739
1740 #ifndef YY_NO_TOP_STATE
1741 static int yy_top_state()
1742 {
1743 return yy_start_stack[yy_start_stack_ptr - 1];
1744 }
1745 #endif
1746
1747 #ifndef YY_EXIT_FAILURE
1748 #define YY_EXIT_FAILURE 2
1749 #endif
1750
1751 #ifdef YY_USE_PROTOS
1752 static void yy_fatal_error( yyconst char msg[] )
1753 #else
1754 static void yy_fatal_error( msg )
1755 char msg[];
1756 #endif
1757 {
1758 (void) fprintf( stderr, "%s\n", msg );
1759 exit( YY_EXIT_FAILURE );
1760 }
1761
1762
1763
1764 /* Redefine yyless() so it works in section 3 code. */
1765
1766 #undef yyless
1767 #define yyless(n) \
1768 do \
1769 { \
1770 /* Undo effects of setting up yytext. */ \
1771 yytext[yyleng] = yy_hold_char; \
1772 yy_c_buf_p = yytext + n; \
1773 yy_hold_char = *yy_c_buf_p; \
1774 *yy_c_buf_p = '\0'; \
1775 yyleng = n; \
1776 } \
1777 while ( 0 )
1778
1779
1780 /* Internal utility routines. */
1781
1782 #ifndef yytext_ptr
1783 #ifdef YY_USE_PROTOS
1784 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
1785 #else
1786 static void yy_flex_strncpy( s1, s2, n )
1787 char *s1;
1788 yyconst char *s2;
1789 int n;
1790 #endif
1791 {
1792 register int i;
1793 for ( i = 0; i < n; ++i )
1794 s1[i] = s2[i];
1795 }
1796 #endif
1797
1798 #ifdef YY_NEED_STRLEN
1799 #ifdef YY_USE_PROTOS
1800 static int yy_flex_strlen( yyconst char *s )
1801 #else
1802 static int yy_flex_strlen( s )
1803 yyconst char *s;
1804 #endif
1805 {
1806 register int n;
1807 for ( n = 0; s[n]; ++n )
1808 ;
1809
1810 return n;
1811 }
1812 #endif
1813
1814
1815 #ifdef YY_USE_PROTOS
1816 static void *yy_flex_alloc( yy_size_t size )
1817 #else
1818 static void *yy_flex_alloc( size )
1819 yy_size_t size;
1820 #endif
1821 {
1822 return (void *) malloc( size );
1823 }
1824
1825 #ifdef YY_USE_PROTOS
1826 static void *yy_flex_realloc( void *ptr, yy_size_t size )
1827 #else
1828 static void *yy_flex_realloc( ptr, size )
1829 void *ptr;
1830 yy_size_t size;
1831 #endif
1832 {
1833 /* The cast to (char *) in the following accommodates both
1834 * implementations that use char* generic pointers, and those
1835 * that use void* generic pointers. It works with the latter
1836 * because both ANSI C and C++ allow castless assignment from
1837 * any pointer type to void*, and deal with argument conversions
1838 * as though doing an assignment.
1839 */
1840 return (void *) realloc( (char *) ptr, size );
1841 }
1842
1843 #ifdef YY_USE_PROTOS
1844 static void yy_flex_free( void *ptr )
1845 #else
1846 static void yy_flex_free( ptr )
1847 void *ptr;
1848 #endif
1849 {
1850 free( ptr );
1851 }
1852
1853 #if YY_MAIN
1854 int main()
1855 {
1856 yylex();
1857 return 0;
1858 }
1859 #endif
1860 #line 222 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.l"
1861
1862
1863 /*
1864 * Local support functions
1865 */
1866 static YY_BUFFER_STATE LexBuffer;
1867
1868
1869 /******************************************************************************
1870 *
1871 * FUNCTION: PrInitLexer
1872 *
1873 * PARAMETERS: String - Input string to be parsed
1874 *
1875 * RETURN: TRUE if parser returns NULL. FALSE otherwise.
1876 *
1877 * DESCRIPTION: Initialization routine for lexer. The lexer needs
1878 * a buffer to handle strings instead of a file.
1879 *
1880 *****************************************************************************/
1881
1882 int
1883 PrInitLexer (
1884 char *String)
1885 {
1886
1887 LexBuffer = yy_scan_string (String);
1888 return (LexBuffer == NULL);
1889 }
1890
1891
1892 /******************************************************************************
1893 *
1894 * FUNCTION: PrTerminateLexer
1895 *
1896 * PARAMETERS: None
1897 *
1898 * RETURN: None
1899 *
1900 * DESCRIPTION: Termination routine for thelexer.
1901 *
1902 *****************************************************************************/
1903
1904 void
1905 PrTerminateLexer (
1906 void)
1907 {
1908
1909 yy_delete_buffer (LexBuffer);
1910 }
1911
1912
1913 /********************************************************************************
1914 *
1915 * FUNCTION: PrDoCommentType1
1916 *
1917 * PARAMETERS: none
1918 *
1919 * RETURN: none
1920 *
1921 * DESCRIPTION: Process a new legacy comment. Just toss it.
1922 *
1923 ******************************************************************************/
1924
1925 static char
1926 PrDoCommentType1 (
1927 void)
1928 {
1929 int c;
1930
1931
1932 Loop:
1933 while (((c = input ()) != '*') && (c != EOF))
1934 {
1935 }
1936 if (c == EOF)
1937 {
1938 return (FALSE);
1939 }
1940
1941 if (((c = input ()) != '/') && (c != EOF))
1942 {
1943 unput (c);
1944 goto Loop;
1945 }
1946 if (c == EOF)
1947 {
1948 return (FALSE);
1949 }
1950
1951 return (TRUE);
1952 }
1953
1954
1955 /********************************************************************************
1956 *
1957 * FUNCTION: PrDoCommentType2
1958 *
1959 * PARAMETERS: none
1960 *
1961 * RETURN: none
1962 *
1963 * DESCRIPTION: Process a new "//" comment. Just toss it.
1964 *
1965 ******************************************************************************/
1966
1967 static char
1968 PrDoCommentType2 (
1969 void)
1970 {
1971 int c;
1972
1973
1974 while (((c = input ()) != '\n') && (c != EOF))
1975 {
1976 }
1977 if (c == EOF)
1978 {
1979 return (FALSE);
1980 }
1981
1982 return (TRUE);
1983 }
1984