ReactOS  0.4.15-dev-1618-g9c8ed68
parser.yy.c
Go to the documentation of this file.
1 #line 2 "parser.yy.c"
2 
3 #line 4 "parser.yy.c"
4 
5 #define YY_INT_ALIGNED short int
6 
7 /* A lexical scanner generated by flex */
8 
9 #define yy_create_buffer parser__create_buffer
10 #define yy_delete_buffer parser__delete_buffer
11 #define yy_scan_buffer parser__scan_buffer
12 #define yy_scan_string parser__scan_string
13 #define yy_scan_bytes parser__scan_bytes
14 #define yy_init_buffer parser__init_buffer
15 #define yy_flush_buffer parser__flush_buffer
16 #define yy_load_buffer_state parser__load_buffer_state
17 #define yy_switch_to_buffer parser__switch_to_buffer
18 #define yypush_buffer_state parser_push_buffer_state
19 #define yypop_buffer_state parser_pop_buffer_state
20 #define yyensure_buffer_stack parser_ensure_buffer_stack
21 #define yy_flex_debug parser__flex_debug
22 #define yyin parser_in
23 #define yyleng parser_leng
24 #define yylex parser_lex
25 #define yylineno parser_lineno
26 #define yyout parser_out
27 #define yyrestart parser_restart
28 #define yytext parser_text
29 #define yywrap parser_wrap
30 #define yyalloc parser_alloc
31 #define yyrealloc parser_realloc
32 #define yyfree parser_free
33 
34 #define FLEX_SCANNER
35 #define YY_FLEX_MAJOR_VERSION 2
36 #define YY_FLEX_MINOR_VERSION 6
37 #define YY_FLEX_SUBMINOR_VERSION 4
38 #if YY_FLEX_SUBMINOR_VERSION > 0
39 #define FLEX_BETA
40 #endif
41 
42 #ifdef yy_create_buffer
43 #define parser__create_buffer_ALREADY_DEFINED
44 #else
45 #define yy_create_buffer parser__create_buffer
46 #endif
47 
48 #ifdef yy_delete_buffer
49 #define parser__delete_buffer_ALREADY_DEFINED
50 #else
51 #define yy_delete_buffer parser__delete_buffer
52 #endif
53 
54 #ifdef yy_scan_buffer
55 #define parser__scan_buffer_ALREADY_DEFINED
56 #else
57 #define yy_scan_buffer parser__scan_buffer
58 #endif
59 
60 #ifdef yy_scan_string
61 #define parser__scan_string_ALREADY_DEFINED
62 #else
63 #define yy_scan_string parser__scan_string
64 #endif
65 
66 #ifdef yy_scan_bytes
67 #define parser__scan_bytes_ALREADY_DEFINED
68 #else
69 #define yy_scan_bytes parser__scan_bytes
70 #endif
71 
72 #ifdef yy_init_buffer
73 #define parser__init_buffer_ALREADY_DEFINED
74 #else
75 #define yy_init_buffer parser__init_buffer
76 #endif
77 
78 #ifdef yy_flush_buffer
79 #define parser__flush_buffer_ALREADY_DEFINED
80 #else
81 #define yy_flush_buffer parser__flush_buffer
82 #endif
83 
84 #ifdef yy_load_buffer_state
85 #define parser__load_buffer_state_ALREADY_DEFINED
86 #else
87 #define yy_load_buffer_state parser__load_buffer_state
88 #endif
89 
90 #ifdef yy_switch_to_buffer
91 #define parser__switch_to_buffer_ALREADY_DEFINED
92 #else
93 #define yy_switch_to_buffer parser__switch_to_buffer
94 #endif
95 
96 #ifdef yypush_buffer_state
97 #define parser_push_buffer_state_ALREADY_DEFINED
98 #else
99 #define yypush_buffer_state parser_push_buffer_state
100 #endif
101 
102 #ifdef yypop_buffer_state
103 #define parser_pop_buffer_state_ALREADY_DEFINED
104 #else
105 #define yypop_buffer_state parser_pop_buffer_state
106 #endif
107 
108 #ifdef yyensure_buffer_stack
109 #define parser_ensure_buffer_stack_ALREADY_DEFINED
110 #else
111 #define yyensure_buffer_stack parser_ensure_buffer_stack
112 #endif
113 
114 #ifdef yylex
115 #define parser_lex_ALREADY_DEFINED
116 #else
117 #define yylex parser_lex
118 #endif
119 
120 #ifdef yyrestart
121 #define parser_restart_ALREADY_DEFINED
122 #else
123 #define yyrestart parser_restart
124 #endif
125 
126 #ifdef yylex_init
127 #define parser_lex_init_ALREADY_DEFINED
128 #else
129 #define yylex_init parser_lex_init
130 #endif
131 
132 #ifdef yylex_init_extra
133 #define parser_lex_init_extra_ALREADY_DEFINED
134 #else
135 #define yylex_init_extra parser_lex_init_extra
136 #endif
137 
138 #ifdef yylex_destroy
139 #define parser_lex_destroy_ALREADY_DEFINED
140 #else
141 #define yylex_destroy parser_lex_destroy
142 #endif
143 
144 #ifdef yyget_debug
145 #define parser_get_debug_ALREADY_DEFINED
146 #else
147 #define yyget_debug parser_get_debug
148 #endif
149 
150 #ifdef yyset_debug
151 #define parser_set_debug_ALREADY_DEFINED
152 #else
153 #define yyset_debug parser_set_debug
154 #endif
155 
156 #ifdef yyget_extra
157 #define parser_get_extra_ALREADY_DEFINED
158 #else
159 #define yyget_extra parser_get_extra
160 #endif
161 
162 #ifdef yyset_extra
163 #define parser_set_extra_ALREADY_DEFINED
164 #else
165 #define yyset_extra parser_set_extra
166 #endif
167 
168 #ifdef yyget_in
169 #define parser_get_in_ALREADY_DEFINED
170 #else
171 #define yyget_in parser_get_in
172 #endif
173 
174 #ifdef yyset_in
175 #define parser_set_in_ALREADY_DEFINED
176 #else
177 #define yyset_in parser_set_in
178 #endif
179 
180 #ifdef yyget_out
181 #define parser_get_out_ALREADY_DEFINED
182 #else
183 #define yyget_out parser_get_out
184 #endif
185 
186 #ifdef yyset_out
187 #define parser_set_out_ALREADY_DEFINED
188 #else
189 #define yyset_out parser_set_out
190 #endif
191 
192 #ifdef yyget_leng
193 #define parser_get_leng_ALREADY_DEFINED
194 #else
195 #define yyget_leng parser_get_leng
196 #endif
197 
198 #ifdef yyget_text
199 #define parser_get_text_ALREADY_DEFINED
200 #else
201 #define yyget_text parser_get_text
202 #endif
203 
204 #ifdef yyget_lineno
205 #define parser_get_lineno_ALREADY_DEFINED
206 #else
207 #define yyget_lineno parser_get_lineno
208 #endif
209 
210 #ifdef yyset_lineno
211 #define parser_set_lineno_ALREADY_DEFINED
212 #else
213 #define yyset_lineno parser_set_lineno
214 #endif
215 
216 #ifdef yywrap
217 #define parser_wrap_ALREADY_DEFINED
218 #else
219 #define yywrap parser_wrap
220 #endif
221 
222 #ifdef yyalloc
223 #define parser_alloc_ALREADY_DEFINED
224 #else
225 #define yyalloc parser_alloc
226 #endif
227 
228 #ifdef yyrealloc
229 #define parser_realloc_ALREADY_DEFINED
230 #else
231 #define yyrealloc parser_realloc
232 #endif
233 
234 #ifdef yyfree
235 #define parser_free_ALREADY_DEFINED
236 #else
237 #define yyfree parser_free
238 #endif
239 
240 #ifdef yytext
241 #define parser_text_ALREADY_DEFINED
242 #else
243 #define yytext parser_text
244 #endif
245 
246 #ifdef yyleng
247 #define parser_leng_ALREADY_DEFINED
248 #else
249 #define yyleng parser_leng
250 #endif
251 
252 #ifdef yyin
253 #define parser_in_ALREADY_DEFINED
254 #else
255 #define yyin parser_in
256 #endif
257 
258 #ifdef yyout
259 #define parser_out_ALREADY_DEFINED
260 #else
261 #define yyout parser_out
262 #endif
263 
264 #ifdef yy_flex_debug
265 #define parser__flex_debug_ALREADY_DEFINED
266 #else
267 #define yy_flex_debug parser__flex_debug
268 #endif
269 
270 #ifdef yylineno
271 #define parser_lineno_ALREADY_DEFINED
272 #else
273 #define yylineno parser_lineno
274 #endif
275 
276 /* First, we deal with platform-specific or compiler-specific issues. */
277 
278 /* begin standard C headers. */
279 
280 #include <stdio.h>
281 #include <string.h>
282 #include <errno.h>
283 #include <stdlib.h>
284 
285 /* end standard C headers. */
286 
287 /* begin standard C++ headers. */
288 
289 /* flex integer type definitions */
290 
291 #ifndef YYFLEX_INTTYPES_DEFINED
292 #define YYFLEX_INTTYPES_DEFINED
293 
294 /* Prefer C99 integer types if available. */
295 # if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
296 /* Include <inttypes.h> and not <stdint.h> because Solaris 2.6 has the former
297  * and not the latter.
298  */
299 #include <inttypes.h>
300 # define YYFLEX_USE_STDINT
301 # else
302 # if defined(_MSC_VER) && _MSC_VER >= 1600
303 /* Visual C++ 2010 does not define __STDC_VERSION__ and has <stdint.h> but not
304  * <inttypes.h>.
305  */
306 #include <stdint.h>
307 # define YYFLEX_USE_STDINT
308 # endif
309 # endif
310 # ifdef YYFLEX_USE_STDINT
311 typedef int8_t flex_int8_t;
312 typedef uint8_t flex_uint8_t;
313 typedef int16_t flex_int16_t;
314 typedef uint16_t flex_uint16_t;
315 typedef int32_t flex_int32_t;
316 typedef uint32_t flex_uint32_t;
317 # else
318 typedef unsigned char flex_uint8_t;
319 typedef short int flex_int16_t;
320 typedef unsigned short int flex_uint16_t;
321 # ifdef __STDC__
322 typedef signed char flex_int8_t;
323 /* ISO C only requires at least 16 bits for int. */
324 #include <limits.h>
325 # if UINT_MAX >= 4294967295
326 # define YYFLEX_INT32_DEFINED
327 typedef int flex_int32_t;
328 typedef unsigned int flex_uint32_t;
329 # endif
330 # else
331 typedef char flex_int8_t;
332 # endif
333 # ifndef YYFLEX_INT32_DEFINED
334 typedef long int flex_int32_t;
335 typedef unsigned long int flex_uint32_t;
336 # endif
337 # endif
338 #endif /* YYFLEX_INTTYPES_DEFINED */
339 
340 /* TODO: this is always defined, so inline it */
341 #define yyconst const
342 
343 #if defined(__GNUC__) && __GNUC__ >= 3
344 #define yynoreturn __attribute__((__noreturn__))
345 #else
346 #define yynoreturn
347 #endif
348 
349 /* Returned upon end-of-file. */
350 #define YY_NULL 0
351 
352 /* Promotes a possibly negative, possibly signed char to an
353  * integer in range [0..255] for use as an array index.
354  */
355 #define YY_SC_TO_UI(c) ((YY_CHAR) (c))
356 
357 /* Enter a start condition. This macro really ought to take a parameter,
358  * but we do it the disgusting crufty way forced on us by the ()-less
359  * definition of BEGIN.
360  */
361 #define BEGIN (yy_start) = 1 + 2 *
362 /* Translate the current start state into a value that can be later handed
363  * to BEGIN to return to the state. The YYSTATE alias is for lex
364  * compatibility.
365  */
366 #define YY_START (((yy_start) - 1) / 2)
367 #define YYSTATE YY_START
368 /* Action number for EOF rule of a given start state. */
369 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
370 /* Special action meaning "start processing a new file". */
371 #define YY_NEW_FILE yyrestart( yyin )
372 #define YY_END_OF_BUFFER_CHAR 0
373 
374 /* Size of default input buffer. */
375 #ifndef YY_BUF_SIZE
376 #ifdef __ia64__
377 /* On IA-64, the buffer size is 16k, not 8k.
378  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
379  * Ditto for the __ia64__ case accordingly.
380  */
381 #define YY_BUF_SIZE 32768
382 #else
383 #define YY_BUF_SIZE 16384
384 #endif /* __ia64__ */
385 #endif
386 
387 /* The state buf must be large enough to hold one state per character in the main buffer.
388  */
389 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
390 
391 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
392 #define YY_TYPEDEF_YY_BUFFER_STATE
394 #endif
395 
396 #ifndef YY_TYPEDEF_YY_SIZE_T
397 #define YY_TYPEDEF_YY_SIZE_T
398 typedef size_t yy_size_t;
399 #endif
400 
401 extern int yyleng;
402 
403 extern FILE *yyin, *yyout;
404 
405 #define EOB_ACT_CONTINUE_SCAN 0
406 #define EOB_ACT_END_OF_FILE 1
407 #define EOB_ACT_LAST_MATCH 2
408 
409  #define YY_LESS_LINENO(n)
410  #define YY_LINENO_REWIND_TO(ptr)
411 
412 /* Return all but the first "n" matched characters back to the input stream. */
413 #define yyless(n) \
414  do \
415  { \
416  /* Undo effects of setting up yytext. */ \
417  int yyless_macro_arg = (n); \
418  YY_LESS_LINENO(yyless_macro_arg);\
419  *yy_cp = (yy_hold_char); \
420  YY_RESTORE_YY_MORE_OFFSET \
421  (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
422  YY_DO_BEFORE_ACTION; /* set up yytext again */ \
423  } \
424  while ( 0 )
425 #define unput(c) yyunput( c, (yytext_ptr) )
426 
427 #ifndef YY_STRUCT_YY_BUFFER_STATE
428 #define YY_STRUCT_YY_BUFFER_STATE
429 struct yy_buffer_state
430  {
432 
433  char *yy_ch_buf; /* input buffer */
434  char *yy_buf_pos; /* current position in input buffer */
435 
436  /* Size of input buffer in bytes, not including room for EOB
437  * characters.
438  */
439  int yy_buf_size;
440 
441  /* Number of characters read into yy_ch_buf, not including EOB
442  * characters.
443  */
444  int yy_n_chars;
445 
446  /* Whether we "own" the buffer - i.e., we know we created it,
447  * and can realloc() it to grow it, and should free() it to
448  * delete it.
449  */
450  int yy_is_our_buffer;
451 
452  /* Whether this is an "interactive" input source; if so, and
453  * if we're using stdio for input, then we want to use getc()
454  * instead of fread(), to make sure we stop fetching input after
455  * each newline.
456  */
457  int yy_is_interactive;
458 
459  /* Whether we're considered to be at the beginning of a line.
460  * If so, '^' rules will be active on the next match, otherwise
461  * not.
462  */
463  int yy_at_bol;
464 
465  int yy_bs_lineno;
466  int yy_bs_column;
468  /* Whether to try to fill the input buffer when we reach the
469  * end of it.
470  */
471  int yy_fill_buffer;
472 
473  int yy_buffer_status;
474 
475 #define YY_BUFFER_NEW 0
476 #define YY_BUFFER_NORMAL 1
477  /* When an EOF's been seen but there's still some text to process
478  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
479  * shouldn't try reading from the input source any more. We might
480  * still have a bunch of tokens to match, though, because of
481  * possible backing-up.
482  *
483  * When we actually see the EOF, we change the status to "new"
484  * (via yyrestart()), so that the user can continue scanning by
485  * just pointing yyin at a new input file.
486  */
487 #define YY_BUFFER_EOF_PENDING 2
488 
489  };
490 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
491 
492 /* Stack of input buffers. */
493 static size_t yy_buffer_stack_top = 0;
494 static size_t yy_buffer_stack_max = 0;
497 /* We provide macros for accessing buffer states in case in the
498  * future we want to put the buffer states in a more general
499  * "scanner state".
500  *
501  * Returns the top of the stack, or NULL.
502  */
503 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
504  ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
505  : NULL)
506 /* Same as previous macro, but useful when we know that the buffer stack is not
507  * NULL or when we need an lvalue. For internal use only.
508  */
509 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
510 
511 /* yy_hold_char holds the character lost when yytext is formed. */
512 static char yy_hold_char;
513 static int yy_n_chars; /* number of characters read into yy_ch_buf */
514 int yyleng;
515 
516 /* Points to current character in buffer. */
517 static char *yy_c_buf_p = NULL;
518 static int yy_init = 0; /* whether we need to initialize */
519 static int yy_start = 0; /* start state number */
520 
521 /* Flag which is used to allow yywrap()'s to do buffer switches
522  * instead of setting up a fresh yyin. A bit of a hack ...
523  */
525 
526 void yyrestart ( FILE *input_file );
527 void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer );
531 void yypush_buffer_state ( YY_BUFFER_STATE new_buffer );
532 void yypop_buffer_state ( void );
533 
534 static void yyensure_buffer_stack ( void );
535 static void yy_load_buffer_state ( void );
536 static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file );
537 #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
538 
540 YY_BUFFER_STATE yy_scan_string ( const char *yy_str );
541 YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len );
542 
543 void *yyalloc ( yy_size_t );
544 void *yyrealloc ( void *, yy_size_t );
545 void yyfree ( void * );
546 
547 #define yy_new_buffer yy_create_buffer
548 #define yy_set_interactive(is_interactive) \
549  { \
550  if ( ! YY_CURRENT_BUFFER ){ \
551  yyensure_buffer_stack (); \
552  YY_CURRENT_BUFFER_LVALUE = \
553  yy_create_buffer( yyin, YY_BUF_SIZE ); \
554  } \
555  YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
556  }
557 #define yy_set_bol(at_bol) \
558  { \
559  if ( ! YY_CURRENT_BUFFER ){\
560  yyensure_buffer_stack (); \
561  YY_CURRENT_BUFFER_LVALUE = \
562  yy_create_buffer( yyin, YY_BUF_SIZE ); \
563  } \
564  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
565  }
566 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
567 
568 /* Begin user sect3 */
570 
572 
573 typedef int yy_state_type;
574 
575 extern int yylineno;
576 int yylineno = 1;
577 
578 extern char *yytext;
579 #ifdef yytext_ptr
580 #undef yytext_ptr
581 #endif
582 #define yytext_ptr yytext
583 
584 static yy_state_type yy_get_previous_state ( void );
585 static yy_state_type yy_try_NUL_trans ( yy_state_type current_state );
586 static int yy_get_next_buffer ( void );
587 static void yynoreturn yy_fatal_error ( const char* msg );
588 
589 /* Done after the current pattern has been matched and before the
590  * corresponding action - sets up yytext.
591  */
592 #define YY_DO_BEFORE_ACTION \
593  (yytext_ptr) = yy_bp; \
594  yyleng = (int) (yy_cp - yy_bp); \
595  (yy_hold_char) = *yy_cp; \
596  *yy_cp = '\0'; \
597  (yy_c_buf_p) = yy_cp;
598 #define YY_NUM_RULES 41
599 #define YY_END_OF_BUFFER 42
600 /* This struct is not used in this scanner,
601  but its presence is necessary. */
602 struct yy_trans_info
603  {
606  };
607 static const flex_int16_t yy_accept[210] =
608  { 0,
609  0, 0, 0, 0, 0, 0, 0, 0, 3, 3,
610  6, 6, 0, 0, 42, 40, 29, 28, 40, 8,
611  40, 12, 40, 40, 24, 24, 40, 40, 40, 27,
612  27, 27, 19, 40, 29, 2, 27, 18, 41, 9,
613  18, 11, 24, 24, 21, 21, 21, 20, 29, 2,
614  3, 6, 6, 6, 13, 18, 34, 38, 32, 0,
615  0, 24, 24, 24, 0, 30, 36, 33, 35, 31,
616  27, 10, 27, 37, 0, 2, 0, 2, 0, 27,
617  17, 15, 14, 24, 0, 21, 21, 0, 2, 2,
618  3, 6, 6, 6, 16, 39, 25, 24, 24, 23,
619 
620  27, 0, 0, 27, 24, 0, 21, 6, 6, 0,
621  23, 23, 27, 0, 0, 27, 24, 0, 21, 6,
622  6, 0, 25, 23, 23, 27, 0, 0, 27, 24,
623  0, 21, 6, 5, 27, 0, 0, 27, 24, 0,
624  21, 6, 5, 27, 0, 0, 27, 24, 0, 21,
625  6, 27, 0, 1, 27, 24, 0, 21, 6, 27,
626  0, 27, 0, 24, 4, 0, 26, 0, 27, 0,
627  4, 0, 27, 0, 0, 0, 0, 0, 0, 0,
628  0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
629  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
630 
631  0, 0, 0, 0, 0, 0, 0, 22, 0
632  } ;
633 
634 static const YY_CHAR yy_ec[256] =
635  { 0,
636  1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
637  1, 2, 2, 1, 1, 1, 1, 1, 1, 1,
638  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
639  1, 2, 4, 5, 6, 1, 1, 7, 8, 9,
640  1, 1, 10, 1, 11, 12, 1, 13, 14, 14,
641  14, 14, 14, 14, 14, 14, 14, 1, 1, 15,
642  16, 17, 1, 1, 18, 19, 19, 19, 20, 21,
643  22, 22, 22, 22, 22, 23, 22, 22, 22, 22,
644  22, 24, 25, 22, 26, 22, 22, 27, 28, 22,
645  29, 30, 31, 1, 32, 1, 33, 19, 34, 35,
646 
647  36, 19, 37, 38, 39, 22, 22, 40, 41, 42,
648  43, 44, 22, 45, 22, 46, 47, 22, 48, 49,
649  22, 22, 1, 50, 1, 1, 1, 1, 1, 1,
650  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
651  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
652  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
653  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
654  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
655  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
656  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
657 
658  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
659  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
660  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
661  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
662  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
663  1, 1, 1, 1, 1
664  } ;
665 
666 static const YY_CHAR yy_meta[51] =
667  { 0,
668  1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
669  1, 1, 3, 3, 1, 1, 1, 3, 3, 3,
670  3, 4, 4, 4, 4, 4, 4, 4, 1, 1,
671  1, 4, 3, 3, 3, 3, 4, 4, 4, 4,
672  4, 4, 4, 4, 4, 4, 4, 4, 4, 1
673  } ;
674 
675 static const flex_int16_t yy_base[251] =
676  { 0,
677  0, 49, 49, 53, 54, 57, 90, 59, 404, 397,
678  138, 139, 140, 141, 399, 677, 677, 677, 381, 677,
679  389, 677, 378, 382, 176, 138, 48, 377, 50, 0,
680  387, 372, 677, 335, 151, 152, 345, 677, 677, 677,
681  48, 677, 213, 118, 250, 0, 378, 677, 66, 377,
682  0, 0, 339, 337, 677, 138, 677, 677, 677, 363,
683  56, 181, 129, 48, 0, 677, 677, 677, 677, 677,
684  0, 677, 351, 677, 156, 154, 332, 157, 325, 328,
685  677, 677, 677, 274, 0, 309, 0, 71, 360, 359,
686  0, 0, 325, 316, 677, 677, 199, 677, 677, 137,
687 
688  337, 320, 317, 309, 333, 0, 368, 308, 296, 195,
689  191, 142, 322, 298, 300, 304, 392, 0, 427, 303,
690  288, 61, 230, 677, 677, 309, 299, 285, 281, 451,
691  0, 486, 288, 0, 296, 275, 284, 271, 510, 0,
692  545, 279, 0, 294, 266, 302, 269, 569, 0, 604,
693  263, 271, 265, 294, 254, 292, 279, 278, 239, 80,
694  244, 239, 0, 351, 0, 164, 677, 238, 245, 0,
695  0, 244, 274, 0, 273, 167, 0, 241, 262, 227,
696  0, 225, 0, 226, 0, 219, 0, 222, 247, 677,
697  0, 0, 0, 0, 246, 0, 0, 0, 0, 0,
698 
699  0, 0, 0, 0, 0, 0, 0, 677, 677, 640,
700  644, 648, 650, 654, 656, 660, 664, 253, 252, 251,
701  249, 248, 668, 242, 239, 238, 672, 234, 227, 226,
702  221, 219, 217, 215, 211, 208, 207, 197, 188, 180,
703  178, 172, 171, 169, 144, 83, 82, 78, 77, 73
704  } ;
705 
706 static const flex_int16_t yy_def[251] =
707  { 0,
708  209, 1, 210, 210, 210, 210, 209, 7, 211, 211,
709  212, 212, 210, 210, 209, 209, 209, 209, 209, 209,
710  209, 209, 209, 209, 209, 209, 209, 209, 209, 213,
711  213, 213, 209, 209, 209, 209, 213, 209, 209, 209,
712  214, 209, 209, 43, 215, 215, 215, 209, 209, 209,
713  216, 217, 217, 217, 209, 214, 209, 209, 209, 209,
714  209, 209, 209, 209, 218, 209, 209, 209, 209, 209,
715  213, 209, 213, 209, 209, 209, 209, 209, 209, 213,
716  209, 209, 209, 209, 219, 215, 215, 209, 209, 209,
717  216, 217, 217, 217, 209, 209, 209, 209, 209, 218,
718 
719  213, 209, 209, 213, 209, 220, 215, 217, 217, 209,
720  209, 209, 213, 209, 209, 213, 209, 221, 215, 217,
721  217, 209, 209, 209, 209, 213, 209, 209, 213, 209,
722  222, 215, 217, 223, 213, 209, 209, 213, 209, 224,
723  215, 217, 223, 213, 209, 209, 213, 209, 225, 215,
724  217, 213, 209, 209, 213, 209, 209, 215, 217, 213,
725  209, 213, 226, 209, 227, 209, 209, 209, 213, 228,
726  227, 209, 213, 229, 209, 209, 230, 209, 209, 209,
727  231, 209, 232, 209, 233, 209, 234, 209, 209, 209,
728  235, 236, 237, 238, 209, 239, 240, 241, 242, 243,
729 
730  244, 245, 246, 247, 248, 249, 250, 209, 0, 209,
731  209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
732  209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
733  209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
734  209, 209, 209, 209, 209, 209, 209, 209, 209, 209
735  } ;
736 
737 static const flex_int16_t yy_nxt[728] =
738  { 0,
739  16, 17, 18, 19, 20, 16, 21, 22, 16, 16,
740  23, 24, 25, 26, 27, 28, 29, 30, 30, 30,
741  30, 30, 31, 30, 32, 30, 30, 30, 33, 16,
742  16, 30, 30, 30, 30, 30, 30, 30, 30, 30,
743  30, 30, 30, 30, 30, 30, 30, 30, 30, 34,
744  35, 39, 82, 40, 36, 39, 39, 40, 42, 39,
745  49, 42, 66, 67, 50, 69, 70, 88, 97, 97,
746  99, 89, 88, 123, 123, 208, 89, 83, 41, 207,
747  206, 166, 41, 41, 205, 204, 41, 99, 167, 37,
748  16, 17, 18, 19, 20, 16, 21, 22, 16, 16,
749 
750  23, 24, 43, 44, 27, 28, 29, 45, 45, 45,
751  45, 46, 47, 46, 46, 46, 46, 46, 33, 16,
752  48, 46, 45, 45, 45, 45, 46, 46, 46, 46,
753  46, 46, 46, 46, 46, 46, 46, 46, 46, 34,
754  39, 39, 39, 39, 209, 95, 203, 55, 55, 61,
755  62, 62, 75, 78, 98, 78, 76, 75, 78, 111,
756  63, 76, 112, 64, 125, 166, 209, 83, 176, 56,
757  56, 202, 167, 201, 200, 98, 111, 63, 53, 53,
758  199, 125, 198, 112, 64, 54, 54, 61, 62, 62,
759  197, 77, 61, 62, 62, 79, 77, 79, 63, 195,
760 
761  79, 64, 65, 63, 122, 122, 64, 123, 123, 194,
762  193, 97, 97, 192, 178, 63, 124, 189, 110, 187,
763  63, 185, 64, 183, 65, 84, 84, 64, 179, 177,
764  85, 85, 85, 85, 110, 63, 174, 124, 64, 65,
765  170, 157, 123, 123, 149, 85, 85, 85, 85, 110,
766  140, 131, 63, 118, 106, 100, 196, 191, 190, 64,
767  188, 65, 86, 86, 186, 110, 184, 86, 86, 86,
768  86, 182, 181, 180, 176, 176, 175, 173, 172, 169,
769  168, 165, 86, 86, 86, 86, 105, 105, 163, 163,
770  162, 106, 106, 106, 106, 154, 63, 161, 160, 64,
771 
772  159, 155, 163, 154, 164, 164, 106, 106, 106, 106,
773  153, 152, 151, 63, 63, 147, 146, 64, 145, 144,
774  64, 107, 107, 142, 138, 137, 107, 107, 107, 107,
775  136, 63, 135, 134, 133, 129, 128, 127, 64, 126,
776  121, 107, 107, 107, 107, 117, 117, 120, 116, 115,
777  118, 118, 118, 118, 114, 63, 113, 109, 64, 108,
778  90, 90, 104, 164, 164, 118, 118, 118, 118, 103,
779  102, 101, 63, 63, 96, 94, 64, 93, 90, 64,
780  119, 119, 72, 80, 74, 119, 119, 119, 119, 73,
781  63, 72, 68, 60, 59, 58, 57, 64, 209, 39,
782 
783  119, 119, 119, 119, 130, 130, 39, 209, 209, 131,
784  131, 131, 131, 209, 63, 209, 209, 64, 209, 209,
785  209, 209, 209, 209, 131, 131, 131, 131, 209, 209,
786  209, 63, 209, 209, 209, 209, 209, 209, 64, 132,
787  132, 209, 209, 209, 132, 132, 132, 132, 209, 209,
788  209, 209, 209, 209, 209, 209, 209, 209, 209, 132,
789  132, 132, 132, 139, 139, 209, 209, 209, 140, 140,
790  140, 140, 209, 63, 209, 209, 64, 209, 209, 209,
791  209, 209, 209, 140, 140, 140, 140, 209, 209, 209,
792  63, 209, 209, 209, 209, 209, 209, 64, 141, 141,
793 
794  209, 209, 209, 141, 141, 141, 141, 209, 209, 209,
795  209, 209, 209, 209, 209, 209, 209, 209, 141, 141,
796  141, 141, 148, 148, 209, 209, 209, 149, 149, 149,
797  149, 209, 63, 209, 209, 64, 209, 209, 209, 209,
798  209, 209, 149, 149, 149, 149, 209, 209, 209, 63,
799  209, 209, 209, 209, 209, 209, 64, 150, 150, 209,
800  209, 209, 150, 150, 150, 150, 209, 209, 209, 209,
801  209, 209, 209, 209, 209, 209, 209, 150, 150, 150,
802  150, 156, 156, 209, 209, 209, 157, 157, 157, 157,
803  209, 63, 209, 209, 64, 209, 209, 209, 209, 209,
804 
805  209, 157, 157, 157, 157, 209, 209, 209, 63, 209,
806  209, 209, 209, 209, 209, 64, 158, 158, 209, 209,
807  209, 158, 158, 158, 158, 209, 209, 209, 209, 209,
808  209, 209, 209, 209, 209, 209, 158, 158, 158, 158,
809  38, 38, 38, 38, 51, 51, 51, 51, 52, 52,
810  52, 52, 71, 71, 81, 209, 81, 81, 87, 87,
811  91, 209, 91, 91, 92, 209, 92, 92, 143, 209,
812  143, 143, 171, 209, 171, 171, 15, 209, 209, 209,
813  209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
814  209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
815 
816  209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
817  209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
818  209, 209, 209, 209, 209, 209, 209
819  } ;
820 
821 static const flex_int16_t yy_chk[728] =
822  { 0,
823  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
824  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
825  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
826  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
827  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
828  2, 3, 41, 3, 2, 4, 5, 4, 5, 6,
829  8, 6, 27, 27, 8, 29, 29, 49, 61, 61,
830  64, 49, 88, 122, 122, 250, 88, 41, 3, 249,
831  248, 160, 4, 5, 247, 246, 6, 64, 160, 2,
832  7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
833 
834  7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
835  7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
836  7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
837  7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
838  11, 12, 13, 14, 44, 56, 245, 13, 14, 26,
839  26, 26, 35, 36, 63, 76, 35, 75, 78, 100,
840  26, 75, 100, 26, 112, 166, 44, 56, 176, 13,
841  14, 244, 166, 243, 242, 63, 100, 26, 11, 12,
842  241, 112, 240, 100, 26, 11, 12, 25, 25, 25,
843  239, 35, 62, 62, 62, 36, 75, 76, 25, 238,
844 
845  78, 25, 25, 62, 110, 110, 62, 110, 110, 237,
846  236, 97, 97, 235, 176, 25, 111, 234, 97, 233,
847  62, 232, 25, 231, 25, 43, 43, 62, 230, 229,
848  43, 43, 43, 43, 97, 43, 228, 111, 43, 43,
849  226, 225, 123, 123, 224, 43, 43, 43, 43, 123,
850  222, 221, 43, 220, 219, 218, 195, 189, 188, 43,
851  186, 43, 45, 45, 184, 123, 182, 45, 45, 45,
852  45, 180, 179, 178, 175, 173, 172, 169, 168, 162,
853  161, 159, 45, 45, 45, 45, 84, 84, 158, 157,
854  155, 84, 84, 84, 84, 154, 84, 153, 152, 84,
855 
856  151, 147, 156, 146, 156, 156, 84, 84, 84, 84,
857  145, 144, 142, 84, 156, 138, 137, 156, 136, 135,
858  84, 86, 86, 133, 129, 128, 86, 86, 86, 86,
859  127, 156, 126, 121, 120, 116, 115, 114, 156, 113,
860  109, 86, 86, 86, 86, 105, 105, 108, 104, 103,
861  105, 105, 105, 105, 102, 105, 101, 94, 105, 93,
862  90, 89, 80, 164, 164, 105, 105, 105, 105, 79,
863  77, 73, 105, 164, 60, 54, 164, 53, 50, 105,
864  107, 107, 47, 37, 34, 107, 107, 107, 107, 32,
865  164, 31, 28, 24, 23, 21, 19, 164, 15, 10,
866 
867  107, 107, 107, 107, 117, 117, 9, 0, 0, 117,
868  117, 117, 117, 0, 117, 0, 0, 117, 0, 0,
869  0, 0, 0, 0, 117, 117, 117, 117, 0, 0,
870  0, 117, 0, 0, 0, 0, 0, 0, 117, 119,
871  119, 0, 0, 0, 119, 119, 119, 119, 0, 0,
872  0, 0, 0, 0, 0, 0, 0, 0, 0, 119,
873  119, 119, 119, 130, 130, 0, 0, 0, 130, 130,
874  130, 130, 0, 130, 0, 0, 130, 0, 0, 0,
875  0, 0, 0, 130, 130, 130, 130, 0, 0, 0,
876  130, 0, 0, 0, 0, 0, 0, 130, 132, 132,
877 
878  0, 0, 0, 132, 132, 132, 132, 0, 0, 0,
879  0, 0, 0, 0, 0, 0, 0, 0, 132, 132,
880  132, 132, 139, 139, 0, 0, 0, 139, 139, 139,
881  139, 0, 139, 0, 0, 139, 0, 0, 0, 0,
882  0, 0, 139, 139, 139, 139, 0, 0, 0, 139,
883  0, 0, 0, 0, 0, 0, 139, 141, 141, 0,
884  0, 0, 141, 141, 141, 141, 0, 0, 0, 0,
885  0, 0, 0, 0, 0, 0, 0, 141, 141, 141,
886  141, 148, 148, 0, 0, 0, 148, 148, 148, 148,
887  0, 148, 0, 0, 148, 0, 0, 0, 0, 0,
888 
889  0, 148, 148, 148, 148, 0, 0, 0, 148, 0,
890  0, 0, 0, 0, 0, 148, 150, 150, 0, 0,
891  0, 150, 150, 150, 150, 0, 0, 0, 0, 0,
892  0, 0, 0, 0, 0, 0, 150, 150, 150, 150,
893  210, 210, 210, 210, 211, 211, 211, 211, 212, 212,
894  212, 212, 213, 213, 214, 0, 214, 214, 215, 215,
895  216, 0, 216, 216, 217, 0, 217, 217, 223, 0,
896  223, 223, 227, 0, 227, 227, 209, 209, 209, 209,
897  209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
898  209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
899 
900  209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
901  209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
902  209, 209, 209, 209, 209, 209, 209
903  } ;
904 
907 
908 extern int yy_flex_debug;
910 
911 /* The intent behind this definition is that it'll catch
912  * any uses of REJECT which flex missed.
913  */
914 #define REJECT reject_used_but_not_detected
915 #define yymore() yymore_used_but_not_detected
916 #define YY_MORE_ADJ 0
917 #define YY_RESTORE_YY_MORE_OFFSET
918 char *yytext;
919 #line 1 "parser.l"
920 /* -*-C-*-
921  * IDL Compiler
922  *
923  * Copyright 2002 Ove Kaaven
924  *
925  * This library is free software; you can redistribute it and/or
926  * modify it under the terms of the GNU Lesser General Public
927  * License as published by the Free Software Foundation; either
928  * version 2.1 of the License, or (at your option) any later version.
929  *
930  * This library is distributed in the hope that it will be useful,
931  * but WITHOUT ANY WARRANTY; without even the implied warranty of
932  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
933  * Lesser General Public License for more details.
934  *
935  * You should have received a copy of the GNU Lesser General Public
936  * License along with this library; if not, write to the Free Software
937  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
938  */
939 #define YY_NO_INPUT 1
940 
941 
942 
943 
944 
945 
946 #line 44 "parser.l"
947 
948 #include "config.h"
949 #include "wine/port.h"
950 
951 #include <stdio.h>
952 #include <stdlib.h>
953 #include <string.h>
954 #include <ctype.h>
955 #include <assert.h>
956 #include <errno.h>
957 #include <limits.h>
958 
959 #ifdef HAVE_UNISTD_H
960 #include <unistd.h>
961 #else
962 #define YY_NO_UNISTD_H
963 #endif
964 
965 #include "widl.h"
966 #include "utils.h"
967 #include "parser.h"
968 #include "wine/wpp.h"
969 
970 #include "parser.tab.h"
971 
972 static void addcchar(char c);
973 static char *get_buffered_cstring(void);
974 
975 static char *cbuffer;
976 static int cbufidx;
977 static int cbufalloc = 0;
978 
979 static int kw_token(const char *kw);
980 static int attr_token(const char *kw);
981 
982 static void switch_to_acf(void);
983 
985 
986 #define MAX_IMPORT_DEPTH 20
987 struct {
989  char *input_name;
991  char *temp_name;
994 
995 /* converts an integer in string form to an unsigned long and prints an error
996  * on overflow */
997 static unsigned int xstrtoul(const char *nptr, char **endptr, int base)
998 {
999  unsigned long val;
1000 
1001  errno = 0;
1002  val = strtoul(nptr, endptr, base);
1003  if ((val == ULONG_MAX && errno == ERANGE) || ((unsigned int)val != val))
1004  error_loc("integer constant %s is too large\n", nptr);
1005  return val;
1006 }
1007 
1008 UUID *parse_uuid(const char *u)
1009 {
1010  UUID* uuid = xmalloc(sizeof(UUID));
1011  char b[3];
1012  /* it would be nice to use UuidFromStringA */
1013  uuid->Data1 = strtoul(u, NULL, 16);
1014  uuid->Data2 = strtoul(u+9, NULL, 16);
1015  uuid->Data3 = strtoul(u+14, NULL, 16);
1016  b[2] = 0;
1017  memcpy(b, u+19, 2); uuid->Data4[0] = strtoul(b, NULL, 16);
1018  memcpy(b, u+21, 2); uuid->Data4[1] = strtoul(b, NULL, 16);
1019  memcpy(b, u+24, 2); uuid->Data4[2] = strtoul(b, NULL, 16);
1020  memcpy(b, u+26, 2); uuid->Data4[3] = strtoul(b, NULL, 16);
1021  memcpy(b, u+28, 2); uuid->Data4[4] = strtoul(b, NULL, 16);
1022  memcpy(b, u+30, 2); uuid->Data4[5] = strtoul(b, NULL, 16);
1023  memcpy(b, u+32, 2); uuid->Data4[6] = strtoul(b, NULL, 16);
1024  memcpy(b, u+34, 2); uuid->Data4[7] = strtoul(b, NULL, 16);
1025  return uuid;
1026 }
1027 
1028 #line 1029 "parser.yy.c"
1029 /*
1030  **************************************************************************
1031  * The flexer starts here
1032  **************************************************************************
1033  */
1034 #line 1035 "parser.yy.c"
1035 
1036 #define INITIAL 0
1037 #define QUOTE 1
1038 #define WSTRQUOTE 2
1039 #define ATTR 3
1040 #define PP_LINE 4
1041 #define PP_PRAGMA 5
1042 #define SQUOTE 6
1043 
1044 #ifndef YY_NO_UNISTD_H
1045 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1046  * down here because we want the user's section 1 to have been scanned first.
1047  * The user has a chance to override it with an option.
1048  */
1049 #include <unistd.h>
1050 #endif
1051 
1052 #ifndef YY_EXTRA_TYPE
1053 #define YY_EXTRA_TYPE void *
1054 #endif
1055 
1056 static int yy_init_globals ( void );
1057 
1058 /* Accessor methods to globals.
1059  These are made visible to non-reentrant scanners for convenience. */
1060 
1061 int yylex_destroy ( void );
1062 
1063 int yyget_debug ( void );
1064 
1065 void yyset_debug ( int debug_flag );
1066 
1067 YY_EXTRA_TYPE yyget_extra ( void );
1068 
1069 void yyset_extra ( YY_EXTRA_TYPE user_defined );
1070 
1071 FILE *yyget_in ( void );
1072 
1073 void yyset_in ( FILE * _in_str );
1074 
1075 FILE *yyget_out ( void );
1076 
1077 void yyset_out ( FILE * _out_str );
1078 
1079  int yyget_leng ( void );
1080 
1081 char *yyget_text ( void );
1082 
1083 int yyget_lineno ( void );
1084 
1085 void yyset_lineno ( int _line_number );
1086 
1087 /* Macros after this point can all be overridden by user definitions in
1088  * section 1.
1089  */
1090 
1091 #ifndef YY_SKIP_YYWRAP
1092 #ifdef __cplusplus
1093 extern "C" int yywrap ( void );
1094 #else
1095 extern int yywrap ( void );
1096 #endif
1097 #endif
1098 
1099 #ifndef YY_NO_UNPUT
1100 
1101 #endif
1102 
1103 #ifndef yytext_ptr
1104 static void yy_flex_strncpy ( char *, const char *, int );
1105 #endif
1106 
1107 #ifdef YY_NEED_STRLEN
1108 static int yy_flex_strlen ( const char * );
1109 #endif
1110 
1111 #ifndef YY_NO_INPUT
1112 #ifdef __cplusplus
1113 static int yyinput ( void );
1114 #else
1115 static int input ( void );
1116 #endif
1117 
1118 #endif
1119 
1120  static int yy_start_stack_ptr = 0;
1121  static int yy_start_stack_depth = 0;
1122  static int *yy_start_stack = NULL;
1123 
1124  static void yy_push_state ( int _new_state );
1125 
1126  static void yy_pop_state ( void );
1127 
1128 /* Amount of stuff to slurp up with each read. */
1129 #ifndef YY_READ_BUF_SIZE
1130 #ifdef __ia64__
1131 /* On IA-64, the buffer size is 16k, not 8k */
1132 #define YY_READ_BUF_SIZE 16384
1133 #else
1134 #define YY_READ_BUF_SIZE 8192
1135 #endif /* __ia64__ */
1136 #endif
1137 
1138 /* Copy whatever the last rule matched to the standard output. */
1139 #ifndef ECHO
1140 /* This used to be an fputs(), but since the string might contain NUL's,
1141  * we now use fwrite().
1142  */
1143 #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
1144 #endif
1145 
1146 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1147  * is returned in "result".
1148  */
1149 #ifndef YY_INPUT
1150 #define YY_INPUT(buf,result,max_size) \
1151  if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1152  { \
1153  int c = '*'; \
1154  int n; \
1155  for ( n = 0; n < max_size && \
1156  (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1157  buf[n] = (char) c; \
1158  if ( c == '\n' ) \
1159  buf[n++] = (char) c; \
1160  if ( c == EOF && ferror( yyin ) ) \
1161  YY_FATAL_ERROR( "input in flex scanner failed" ); \
1162  result = n; \
1163  } \
1164  else \
1165  { \
1166  errno=0; \
1167  while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
1168  { \
1169  if( errno != EINTR) \
1170  { \
1171  YY_FATAL_ERROR( "input in flex scanner failed" ); \
1172  break; \
1173  } \
1174  errno=0; \
1175  clearerr(yyin); \
1176  } \
1177  }\
1178 \
1179 
1180 #endif
1181 
1182 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1183  * we don't want an extra ';' after the "return" because that will cause
1184  * some compilers to complain about unreachable statements.
1185  */
1186 #ifndef yyterminate
1187 #define yyterminate() return YY_NULL
1188 #endif
1189 
1190 /* Number of entries by which start-condition stack grows. */
1191 #ifndef YY_START_STACK_INCR
1192 #define YY_START_STACK_INCR 25
1193 #endif
1194 
1195 /* Report a fatal error. */
1196 #ifndef YY_FATAL_ERROR
1197 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1198 #endif
1199 
1200 /* end tables serialization structures and prototypes */
1201 
1202 /* Default declaration of generated scanner - a define so the user can
1203  * easily add parameters.
1204  */
1205 #ifndef YY_DECL
1206 #define YY_DECL_IS_OURS 1
1207 
1208 extern int yylex (void);
1209 
1210 #define YY_DECL int yylex (void)
1211 #endif /* !YY_DECL */
1212 
1213 /* Code executed at the beginning of each rule, after yytext and yyleng
1214  * have been set up.
1215  */
1216 #ifndef YY_USER_ACTION
1217 #define YY_USER_ACTION
1218 #endif
1219 
1220 /* Code executed at the end of each rule. */
1221 #ifndef YY_BREAK
1222 #define YY_BREAK /*LINTED*/break;
1223 #endif
1224 
1225 #define YY_RULE_SETUP \
1226  if ( yyleng > 0 ) \
1227  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1228  (yytext[yyleng - 1] == '\n'); \
1229  YY_USER_ACTION
1230 
1233 YY_DECL
1236  char *yy_cp, *yy_bp;
1237  int yy_act;
1238 
1239  if ( !(yy_init) )
1240  {
1241  (yy_init) = 1;
1242 
1243 #ifdef YY_USER_INIT
1244  YY_USER_INIT;
1245 #endif
1246 
1247  if ( ! (yy_start) )
1248  (yy_start) = 1; /* first start state */
1249 
1250  if ( ! yyin )
1251  yyin = stdin;
1252 
1253  if ( ! yyout )
1254  yyout = stdout;
1255 
1256  if ( ! YY_CURRENT_BUFFER ) {
1260  }
1261 
1263  }
1264 
1265  {
1266 #line 132 "parser.l"
1267 
1268 #line 1269 "parser.yy.c"
1269 
1270  while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
1271  {
1272  yy_cp = (yy_c_buf_p);
1273 
1274  /* Support of yytext. */
1275  *yy_cp = (yy_hold_char);
1276 
1277  /* yy_bp points to the position in yy_ch_buf of the start of
1278  * the current run.
1279  */
1280  yy_bp = yy_cp;
1281 
1284 yy_match:
1285  do
1286  {
1287  YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
1288  if ( yy_accept[yy_current_state] )
1289  {
1292  }
1293  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1294  {
1296  if ( yy_current_state >= 210 )
1297  yy_c = yy_meta[yy_c];
1298  }
1300  ++yy_cp;
1301  }
1302  while ( yy_current_state != 209 );
1305 
1306 yy_find_action:
1308 
1310 
1311 do_action: /* This label is used only to access EOF actions. */
1312 
1313  switch ( yy_act )
1314  { /* beginning of action switch */
1315  case 0: /* must back up */
1316  /* undo the effects of YY_DO_BEFORE_ACTION */
1317  *yy_cp = (yy_hold_char);
1320  goto yy_find_action;
1321 
1322 case 1:
1324 #line 133 "parser.l"
1326  YY_BREAK
1327 case 2:
1329 #line 134 "parser.l"
1331  YY_BREAK
1332 case 3:
1334 #line 135 "parser.l"
1335 {
1336  int lineno;
1337  char *cptr, *fname;
1338  yy_pop_state();
1339  lineno = (int)strtol(yytext, &cptr, 10);
1340  if(!lineno)
1341  error_loc("Malformed '#...' line-directive; invalid linenumber\n");
1342  fname = strchr(cptr, '"');
1343  if(!fname)
1344  error_loc("Malformed '#...' line-directive; missing filename\n");
1345  fname++;
1346  cptr = strchr(fname, '"');
1347  if(!cptr)
1348  error_loc("Malformed '#...' line-directive; missing terminating \"\n");
1349  *cptr = '\0';
1350  line_number = lineno - 1; /* We didn't read the newline */
1351  input_name = xstrdup(fname);
1352  }
1353  YY_BREAK
1354 case 4:
1356 #line 153 "parser.l"
1357 yyless(9); yy_pop_state(); return tCPPQUOTE;
1358  YY_BREAK
1359 case 5:
1361 #line 154 "parser.l"
1362 {
1363  if(import_stack_ptr) {
1364  if(!winrt_mode)
1365  error_loc("winrt IDL file imported in non-winrt mode\n");
1366  }else {
1367  const char *ptr = yytext+5;
1368 
1369  winrt_mode = TRUE;
1370 
1371  while(isspace(*ptr))
1372  ptr++;
1373  if(!strncmp(ptr, "ns_prefix", 9) && (!*(ptr += 9) || isspace(*ptr)))
1375  }
1376  yy_pop_state();
1377  }
1378  YY_BREAK
1379 case 6:
1381 #line 170 "parser.l"
1383  YY_BREAK
1384 case 7:
1386 #line 171 "parser.l"
1387 return tPRAGMA_WARNING;
1388  YY_BREAK
1389 case 8:
1391 #line 172 "parser.l"
1393  YY_BREAK
1394 case 9:
1396 #line 173 "parser.l"
1397 {
1398  yy_pop_state();
1400  return aSTRING;
1401  }
1402  YY_BREAK
1403 case 10:
1405 #line 178 "parser.l"
1407  YY_BREAK
1408 case 11:
1410 #line 179 "parser.l"
1411 {
1412  yy_pop_state();
1414  return aWSTRING;
1415  }
1416  YY_BREAK
1417 case 12:
1419 #line 184 "parser.l"
1421  YY_BREAK
1422 case 13:
1424 #line 185 "parser.l"
1425 {
1426  yy_pop_state();
1428  return aSQSTRING;
1429  }
1430  YY_BREAK
1431 case 14:
1432 #line 191 "parser.l"
1433 case 15:
1435 #line 191 "parser.l"
1436 addcchar(yytext[1]);
1437  YY_BREAK
1438 case 16:
1440 #line 192 "parser.l"
1441 addcchar(yytext[1]);
1442  YY_BREAK
1443 case 17:
1445 #line 193 "parser.l"
1446 addcchar('\\'); addcchar(yytext[1]);
1447  YY_BREAK
1448 case 18:
1450 #line 194 "parser.l"
1451 addcchar(yytext[0]);
1452  YY_BREAK
1453 case 19:
1455 #line 195 "parser.l"
1456 yy_push_state(ATTR); return '[';
1457  YY_BREAK
1458 case 20:
1460 #line 196 "parser.l"
1461 yy_pop_state(); return ']';
1462  YY_BREAK
1463 case 21:
1465 #line 197 "parser.l"
1466 return attr_token(yytext);
1467  YY_BREAK
1468 case 22:
1470 #line 198 "parser.l"
1471 {
1473  return aUUID;
1474  }
1475  YY_BREAK
1476 case 23:
1478 #line 202 "parser.l"
1479 {
1481  return aHEXNUM;
1482  }
1483  YY_BREAK
1484 case 24:
1486 #line 206 "parser.l"
1487 {
1489  return aNUM;
1490  }
1491  YY_BREAK
1492 case 25:
1494 #line 210 "parser.l"
1495 {
1497  return aDOUBLE;
1498  }
1499  YY_BREAK
1500 case 26:
1501 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
1502 (yy_c_buf_p) = yy_cp -= 1;
1503 YY_DO_BEFORE_ACTION; /* set up yytext again */
1505 #line 214 "parser.l"
1506 return tSAFEARRAY;
1507  YY_BREAK
1508 case 27:
1510 #line 215 "parser.l"
1511 return kw_token(yytext);
1512  YY_BREAK
1513 case 28:
1514 /* rule 28 can match eol */
1516 #line 216 "parser.l"
1517 line_number++;
1518  YY_BREAK
1519 case 29:
1521 #line 217 "parser.l"
1522 
1523  YY_BREAK
1524 case 30:
1526 #line 218 "parser.l"
1527 return SHL;
1528  YY_BREAK
1529 case 31:
1531 #line 219 "parser.l"
1532 return SHR;
1533  YY_BREAK
1534 case 32:
1536 #line 220 "parser.l"
1537 return MEMBERPTR;
1538  YY_BREAK
1539 case 33:
1541 #line 221 "parser.l"
1542 return EQUALITY;
1543  YY_BREAK
1544 case 34:
1546 #line 222 "parser.l"
1547 return INEQUALITY;
1548  YY_BREAK
1549 case 35:
1551 #line 223 "parser.l"
1552 return GREATEREQUAL;
1553  YY_BREAK
1554 case 36:
1556 #line 224 "parser.l"
1557 return LESSEQUAL;
1558  YY_BREAK
1559 case 37:
1561 #line 225 "parser.l"
1562 return LOGICALOR;
1563  YY_BREAK
1564 case 38:
1566 #line 226 "parser.l"
1567 return LOGICALAND;
1568  YY_BREAK
1569 case 39:
1571 #line 227 "parser.l"
1572 return ELLIPSIS;
1573  YY_BREAK
1574 case 40:
1576 #line 228 "parser.l"
1577 return yytext[0];
1578  YY_BREAK
1579 case YY_STATE_EOF(INITIAL):
1580 case YY_STATE_EOF(QUOTE):
1581 case YY_STATE_EOF(WSTRQUOTE):
1582 case YY_STATE_EOF(ATTR):
1583 case YY_STATE_EOF(PP_LINE):
1584 case YY_STATE_EOF(PP_PRAGMA):
1585 case YY_STATE_EOF(SQUOTE):
1586 #line 229 "parser.l"
1587 {
1588  if (import_stack_ptr)
1589  return aEOF;
1590  if (acf_name)
1591  {
1592  switch_to_acf();
1593  return aACF;
1594  }
1595  yyterminate();
1596  }
1597  YY_BREAK
1598 case 41:
1600 #line 239 "parser.l"
1601 ECHO;
1602  YY_BREAK
1603 #line 1604 "parser.yy.c"
1604 
1605  case YY_END_OF_BUFFER:
1606  {
1607  /* Amount of text matched not including the EOB char. */
1608  int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
1609 
1610  /* Undo the effects of YY_DO_BEFORE_ACTION. */
1611  *yy_cp = (yy_hold_char);
1613 
1614  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1615  {
1616  /* We're scanning a new file or input source. It's
1617  * possible that this happened because the user
1618  * just pointed yyin at a new source and called
1619  * yylex(). If so, then we have to assure
1620  * consistency between YY_CURRENT_BUFFER and our
1621  * globals. Here is the right place to do so, because
1622  * this is the first action (other than possibly a
1623  * back-up) that will match for the new input source.
1624  */
1625  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1626  YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1627  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1628  }
1629 
1630  /* Note that here we test for yy_c_buf_p "<=" to the position
1631  * of the first EOB in the buffer, since yy_c_buf_p will
1632  * already have been incremented past the NUL character
1633  * (since all states make transitions on EOB to the
1634  * end-of-buffer state). Contrast this with the test
1635  * in input().
1636  */
1637  if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1638  { /* This was really a NUL. */
1639  yy_state_type yy_next_state;
1640 
1641  (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
1642 
1644 
1645  /* Okay, we're now positioned to make the NUL
1646  * transition. We couldn't have
1647  * yy_get_previous_state() go ahead and do it
1648  * for us because it doesn't know how to deal
1649  * with the possibility of jamming (and we don't
1650  * want to build jamming into it because then it
1651  * will run more slowly).
1652  */
1653 
1654  yy_next_state = yy_try_NUL_trans( yy_current_state );
1655 
1657 
1658  if ( yy_next_state )
1659  {
1660  /* Consume the NUL. */
1661  yy_cp = ++(yy_c_buf_p);
1662  yy_current_state = yy_next_state;
1663  goto yy_match;
1664  }
1665 
1666  else
1667  {
1670  goto yy_find_action;
1671  }
1672  }
1673 
1674  else switch ( yy_get_next_buffer( ) )
1675  {
1676  case EOB_ACT_END_OF_FILE:
1677  {
1679 
1680  if ( yywrap( ) )
1681  {
1682  /* Note: because we've taken care in
1683  * yy_get_next_buffer() to have set up
1684  * yytext, we can now set up
1685  * yy_c_buf_p so that if some total
1686  * hoser (like flex itself) wants to
1687  * call the scanner after we return the
1688  * YY_NULL, it'll still work - another
1689  * YY_NULL will get returned.
1690  */
1692 
1694  goto do_action;
1695  }
1696 
1697  else
1698  {
1699  if ( ! (yy_did_buffer_switch_on_eof) )
1700  YY_NEW_FILE;
1701  }
1702  break;
1703  }
1704 
1705  case EOB_ACT_CONTINUE_SCAN:
1706  (yy_c_buf_p) =
1707  (yytext_ptr) + yy_amount_of_matched_text;
1708 
1710 
1711  yy_cp = (yy_c_buf_p);
1713  goto yy_match;
1714 
1715  case EOB_ACT_LAST_MATCH:
1716  (yy_c_buf_p) =
1717  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
1718 
1720 
1721  yy_cp = (yy_c_buf_p);
1723  goto yy_find_action;
1724  }
1725  break;
1726  }
1727 
1728  default:
1730  "fatal flex scanner internal error--no action found" );
1731  } /* end of action switch */
1732  } /* end of scanning one token */
1733  } /* end of user's declarations */
1734 } /* end of yylex */
1735 
1736 /* yy_get_next_buffer - try to read in a new buffer
1737  *
1738  * Returns a code representing an action:
1739  * EOB_ACT_LAST_MATCH -
1740  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1741  * EOB_ACT_END_OF_FILE - end of file
1742  */
1743 static int yy_get_next_buffer (void)
1744 {
1745  char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1746  char *source = (yytext_ptr);
1747  int number_to_move, i;
1748  int ret_val;
1749 
1750  if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
1752  "fatal flex scanner internal error--end of buffer missed" );
1753 
1754  if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1755  { /* Don't try to fill the buffer, so this is an EOF. */
1756  if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
1757  {
1758  /* We matched a single character, the EOB, so
1759  * treat this as a final EOF.
1760  */
1761  return EOB_ACT_END_OF_FILE;
1762  }
1763 
1764  else
1765  {
1766  /* We matched some text prior to the EOB, first
1767  * process it.
1768  */
1769  return EOB_ACT_LAST_MATCH;
1770  }
1771  }
1772 
1773  /* Try to read more data. */
1774 
1775  /* First move last chars to start of buffer. */
1776  number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
1777 
1778  for ( i = 0; i < number_to_move; ++i )
1779  *(dest++) = *(source++);
1780 
1781  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1782  /* don't do the read, it's not guaranteed to return an EOF,
1783  * just force an EOF
1784  */
1785  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
1786 
1787  else
1788  {
1789  int num_to_read =
1790  YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1791 
1792  while ( num_to_read <= 0 )
1793  { /* Not enough room in the buffer - grow it. */
1794 
1795  /* just a shorter name for the current buffer */
1797 
1798  int yy_c_buf_p_offset =
1799  (int) ((yy_c_buf_p) - b->yy_ch_buf);
1800 
1801  if ( b->yy_is_our_buffer )
1802  {
1803  int new_size = b->yy_buf_size * 2;
1804 
1805  if ( new_size <= 0 )
1806  b->yy_buf_size += b->yy_buf_size / 8;
1807  else
1808  b->yy_buf_size *= 2;
1809 
1810  b->yy_ch_buf = (char *)
1811  /* Include room in for 2 EOB chars. */
1812  yyrealloc( (void *) b->yy_ch_buf,
1813  (yy_size_t) (b->yy_buf_size + 2) );
1814  }
1815  else
1816  /* Can't grow it, we don't own it. */
1817  b->yy_ch_buf = NULL;
1818 
1819  if ( ! b->yy_ch_buf )
1821  "fatal error - scanner input buffer overflow" );
1822 
1823  (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
1824 
1825  num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
1826  number_to_move - 1;
1827 
1828  }
1829 
1830  if ( num_to_read > YY_READ_BUF_SIZE )
1831  num_to_read = YY_READ_BUF_SIZE;
1832 
1833  /* Read in more data. */
1834  YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1835  (yy_n_chars), num_to_read );
1836 
1837  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1838  }
1839 
1840  if ( (yy_n_chars) == 0 )
1841  {
1842  if ( number_to_move == YY_MORE_ADJ )
1843  {
1844  ret_val = EOB_ACT_END_OF_FILE;
1845  yyrestart( yyin );
1846  }
1847 
1848  else
1849  {
1850  ret_val = EOB_ACT_LAST_MATCH;
1851  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1853  }
1854  }
1855 
1856  else
1857  ret_val = EOB_ACT_CONTINUE_SCAN;
1858 
1859  if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
1860  /* Extend the array by 50%, plus the number we really need. */
1861  int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
1862  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
1863  (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size );
1864  if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1865  YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
1866  /* "- 2" to take care of EOB's */
1867  YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
1868  }
1869 
1870  (yy_n_chars) += number_to_move;
1873 
1874  (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1875 
1876  return ret_val;
1877 }
1878 
1879 /* yy_get_previous_state - get the state just before the EOB char was reached */
1880 
1881  static yy_state_type yy_get_previous_state (void)
1882 {
1884  char *yy_cp;
1885 
1888 
1889  for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
1890  {
1891  YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1892  if ( yy_accept[yy_current_state] )
1893  {
1896  }
1897  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1898  {
1900  if ( yy_current_state >= 210 )
1901  yy_c = yy_meta[yy_c];
1902  }
1904  }
1905 
1906  return yy_current_state;
1907 }
1908 
1909 /* yy_try_NUL_trans - try to make a transition on the NUL character
1910  *
1911  * synopsis
1912  * next_state = yy_try_NUL_trans( current_state );
1913  */
1915 {
1916  int yy_is_jam;
1917  char *yy_cp = (yy_c_buf_p);
1918 
1919  YY_CHAR yy_c = 1;
1920  if ( yy_accept[yy_current_state] )
1921  {
1924  }
1925  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1926  {
1928  if ( yy_current_state >= 210 )
1929  yy_c = yy_meta[yy_c];
1930  }
1932  yy_is_jam = (yy_current_state == 209);
1933 
1934  return yy_is_jam ? 0 : yy_current_state;
1935 }
1936 
1937 #ifndef YY_NO_UNPUT
1938 
1939 #endif
1940 
1941 #ifndef YY_NO_INPUT
1942 #ifdef __cplusplus
1943  static int yyinput (void)
1944 #else
1945  static int input (void)
1946 #endif
1947 
1948 {
1949  int c;
1950 
1951  *(yy_c_buf_p) = (yy_hold_char);
1952 
1953  if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
1954  {
1955  /* yy_c_buf_p now points to the character we want to return.
1956  * If this occurs *before* the EOB characters, then it's a
1957  * valid NUL; if not, then we've hit the end of the buffer.
1958  */
1959  if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1960  /* This was really a NUL. */
1961  *(yy_c_buf_p) = '\0';
1962 
1963  else
1964  { /* need more input */
1965  int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
1966  ++(yy_c_buf_p);
1967 
1968  switch ( yy_get_next_buffer( ) )
1969  {
1970  case EOB_ACT_LAST_MATCH:
1971  /* This happens because yy_g_n_b()
1972  * sees that we've accumulated a
1973  * token and flags that we need to
1974  * try matching the token before
1975  * proceeding. But for input(),
1976  * there's no matching to consider.
1977  * So convert the EOB_ACT_LAST_MATCH
1978  * to EOB_ACT_END_OF_FILE.
1979  */
1980 
1981  /* Reset buffer status. */
1982  yyrestart( yyin );
1983 
1984  /*FALLTHROUGH*/
1985 
1986  case EOB_ACT_END_OF_FILE:
1987  {
1988  if ( yywrap( ) )
1989  return 0;
1990 
1991  if ( ! (yy_did_buffer_switch_on_eof) )
1992  YY_NEW_FILE;
1993 #ifdef __cplusplus
1994  return yyinput();
1995 #else
1996  return input();
1997 #endif
1998  }
1999 
2000  case EOB_ACT_CONTINUE_SCAN:
2001  (yy_c_buf_p) = (yytext_ptr) + offset;
2002  break;
2003  }
2004  }
2005  }
2006 
2007  c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
2008  *(yy_c_buf_p) = '\0'; /* preserve yytext */
2009  (yy_hold_char) = *++(yy_c_buf_p);
2010 
2011  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
2012 
2013  return c;
2014 }
2015 #endif /* ifndef YY_NO_INPUT */
2016 
2022  void yyrestart (FILE * input_file )
2023 {
2024 
2025  if ( ! YY_CURRENT_BUFFER ){
2029  }
2030 
2031  yy_init_buffer( YY_CURRENT_BUFFER, input_file );
2033 }
2034 
2039  void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
2040 {
2041 
2042  /* TODO. We should be able to replace this entire function body
2043  * with
2044  * yypop_buffer_state();
2045  * yypush_buffer_state(new_buffer);
2046  */
2048  if ( YY_CURRENT_BUFFER == new_buffer )
2049  return;
2050 
2051  if ( YY_CURRENT_BUFFER )
2052  {
2053  /* Flush out information for old buffer. */
2054  *(yy_c_buf_p) = (yy_hold_char);
2055  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2056  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2057  }
2058 
2059  YY_CURRENT_BUFFER_LVALUE = new_buffer;
2061 
2062  /* We don't actually know whether we did this switch during
2063  * EOF (yywrap()) processing, but the only time this flag
2064  * is looked at is after yywrap() is called, so it's safe
2065  * to go ahead and always set it.
2066  */
2068 }
2069 
2070 static void yy_load_buffer_state (void)
2071 {
2072  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2073  (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2074  yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2075  (yy_hold_char) = *(yy_c_buf_p);
2076 }
2077 
2085 {
2087 
2088  b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
2089  if ( ! b )
2090  YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2091 
2092  b->yy_buf_size = size;
2093 
2094  /* yy_ch_buf has to be 2 characters longer than the size given because
2095  * we need to put in 2 end-of-buffer characters.
2096  */
2097  b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) );
2098  if ( ! b->yy_ch_buf )
2099  YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2100 
2101  b->yy_is_our_buffer = 1;
2102 
2103  yy_init_buffer( b, file );
2104 
2105  return b;
2106 }
2107 
2113 {
2114 
2115  if ( ! b )
2116  return;
2117 
2118  if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2120 
2121  if ( b->yy_is_our_buffer )
2122  yyfree( (void *) b->yy_ch_buf );
2123 
2124  yyfree( (void *) b );
2125 }
2126 
2127 /* Initializes or reinitializes a buffer.
2128  * This function is sometimes called more than once on the same buffer,
2129  * such as during a yyrestart() or at EOF.
2130  */
2131  static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
2132 
2133 {
2134  int oerrno = errno;
2135 
2136  yy_flush_buffer( b );
2137 
2138  b->yy_input_file = file;
2139  b->yy_fill_buffer = 1;
2140 
2141  /* If b is the current buffer, then yy_init_buffer was _probably_
2142  * called from yyrestart() or through yy_get_next_buffer.
2143  * In that case, we don't want to reset the lineno or column.
2144  */
2145  if (b != YY_CURRENT_BUFFER){
2146  b->yy_bs_lineno = 1;
2147  b->yy_bs_column = 0;
2148  }
2149 
2150  b->yy_is_interactive = 0;
2151 
2152  errno = oerrno;
2153 }
2154 
2160 {
2161  if ( ! b )
2162  return;
2163 
2164  b->yy_n_chars = 0;
2165 
2166  /* We always need two end-of-buffer characters. The first causes
2167  * a transition to the end-of-buffer state. The second causes
2168  * a jam in that state.
2169  */
2170  b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2171  b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2172 
2173  b->yy_buf_pos = &b->yy_ch_buf[0];
2174 
2175  b->yy_at_bol = 1;
2176  b->yy_buffer_status = YY_BUFFER_NEW;
2177 
2178  if ( b == YY_CURRENT_BUFFER )
2180 }
2181 
2188 void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
2189 {
2190  if (new_buffer == NULL)
2191  return;
2192 
2194 
2195  /* This block is copied from yy_switch_to_buffer. */
2196  if ( YY_CURRENT_BUFFER )
2197  {
2198  /* Flush out information for old buffer. */
2199  *(yy_c_buf_p) = (yy_hold_char);
2200  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2201  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2202  }
2203 
2204  /* Only push if top exists. Otherwise, replace top. */
2205  if (YY_CURRENT_BUFFER)
2206  (yy_buffer_stack_top)++;
2207  YY_CURRENT_BUFFER_LVALUE = new_buffer;
2208 
2209  /* copied from yy_switch_to_buffer. */
2212 }
2213 
2218 void yypop_buffer_state (void)
2219 {
2220  if (!YY_CURRENT_BUFFER)
2221  return;
2222 
2225  if ((yy_buffer_stack_top) > 0)
2226  --(yy_buffer_stack_top);
2227 
2228  if (YY_CURRENT_BUFFER) {
2231  }
2232 }
2233 
2234 /* Allocates the stack if it does not exist.
2235  * Guarantees space for at least one push.
2236  */
2237 static void yyensure_buffer_stack (void)
2238 {
2239  yy_size_t num_to_alloc;
2240 
2241  if (!(yy_buffer_stack)) {
2242 
2243  /* First allocation is just for 2 elements, since we don't know if this
2244  * scanner will even need a stack. We use 2 instead of 1 to avoid an
2245  * immediate realloc on the next call.
2246  */
2247  num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
2249  (num_to_alloc * sizeof(struct yy_buffer_state*)
2250  );
2251  if ( ! (yy_buffer_stack) )
2252  YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2253 
2254  memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2255 
2256  (yy_buffer_stack_max) = num_to_alloc;
2257  (yy_buffer_stack_top) = 0;
2258  return;
2259  }
2260 
2261  if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
2262 
2263  /* Increase the buffer to prepare for a possible push. */
2264  yy_size_t grow_size = 8 /* arbitrary grow size */;
2265 
2266  num_to_alloc = (yy_buffer_stack_max) + grow_size;
2268  ((yy_buffer_stack),
2269  num_to_alloc * sizeof(struct yy_buffer_state*)
2270  );
2271  if ( ! (yy_buffer_stack) )
2272  YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2273 
2274  /* zero only the new slots.*/
2275  memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
2276  (yy_buffer_stack_max) = num_to_alloc;
2277  }
2278 }
2279 
2287 {
2289 
2290  if ( size < 2 ||
2293  /* They forgot to leave room for the EOB's. */
2294  return NULL;
2295 
2296  b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
2297  if ( ! b )
2298  YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2299 
2300  b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
2301  b->yy_buf_pos = b->yy_ch_buf = base;
2302  b->yy_is_our_buffer = 0;
2303  b->yy_input_file = NULL;
2304  b->yy_n_chars = b->yy_buf_size;
2305  b->yy_is_interactive = 0;
2306  b->yy_at_bol = 1;
2307  b->yy_fill_buffer = 0;
2308  b->yy_buffer_status = YY_BUFFER_NEW;
2309 
2311 
2312  return b;
2313 }
2314 
2323 YY_BUFFER_STATE yy_scan_string (const char * yystr )
2324 {
2325 
2326  return yy_scan_bytes( yystr, (int) strlen(yystr) );
2327 }
2328 
2336 YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len )
2337 {
2339  char *buf;
2340  yy_size_t n;
2341  int i;
2342 
2343  /* Get memory for full buffer, including space for trailing EOB's. */
2344  n = (yy_size_t) (_yybytes_len + 2);
2345  buf = (char *) yyalloc( n );
2346  if ( ! buf )
2347  YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2348 
2349  for ( i = 0; i < _yybytes_len; ++i )
2350  buf[i] = yybytes[i];
2351 
2352  buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2353 
2354  b = yy_scan_buffer( buf, n );
2355  if ( ! b )
2356  YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2357 
2358  /* It's okay to grow etc. this buffer, and we should throw it
2359  * away when we're done.
2360  */
2361  b->yy_is_our_buffer = 1;
2362 
2363  return b;
2364 }
2365 
2366  static void yy_push_state (int _new_state )
2367 {
2369  {
2370  yy_size_t new_size;
2371 
2373  new_size = (yy_size_t) (yy_start_stack_depth) * sizeof( int );
2374 
2375  if ( ! (yy_start_stack) )
2376  (yy_start_stack) = (int *) yyalloc( new_size );
2377 
2378  else
2379  (yy_start_stack) = (int *) yyrealloc(
2380  (void *) (yy_start_stack), new_size );
2381 
2382  if ( ! (yy_start_stack) )
2383  YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
2384  }
2385 
2387 
2388  BEGIN(_new_state);
2389 }
2390 
2391  static void yy_pop_state (void)
2392 {
2393  if ( --(yy_start_stack_ptr) < 0 )
2394  YY_FATAL_ERROR( "start-condition stack underflow" );
2395 
2397 }
2398 
2399 #ifndef YY_EXIT_FAILURE
2400 #define YY_EXIT_FAILURE 2
2401 #endif
2402 
2403 static void yynoreturn yy_fatal_error (const char* msg )
2404 {
2405  fprintf( stderr, "%s\n", msg );
2406  exit( YY_EXIT_FAILURE );
2407 }
2408 
2409 /* Redefine yyless() so it works in section 3 code. */
2410 
2411 #undef yyless
2412 #define yyless(n) \
2413  do \
2414  { \
2415  /* Undo effects of setting up yytext. */ \
2416  int yyless_macro_arg = (n); \
2417  YY_LESS_LINENO(yyless_macro_arg);\
2418  yytext[yyleng] = (yy_hold_char); \
2419  (yy_c_buf_p) = yytext + yyless_macro_arg; \
2420  (yy_hold_char) = *(yy_c_buf_p); \
2421  *(yy_c_buf_p) = '\0'; \
2422  yyleng = yyless_macro_arg; \
2423  } \
2424  while ( 0 )
2425 
2426 /* Accessor methods (get/set functions) to struct members. */
2427 
2431 int yyget_lineno (void)
2432 {
2433 
2434  return yylineno;
2435 }
2436 
2440 FILE *yyget_in (void)
2441 {
2442  return yyin;
2443 }
2444 
2448 FILE *yyget_out (void)
2449 {
2450  return yyout;
2451 }
2452 
2456 int yyget_leng (void)
2457 {
2458  return yyleng;
2459 }
2460 
2465 char *yyget_text (void)
2466 {
2467  return yytext;
2468 }
2469 
2474 void yyset_lineno (int _line_number )
2475 {
2476 
2477  yylineno = _line_number;
2478 }
2479 
2486 void yyset_in (FILE * _in_str )
2487 {
2488  yyin = _in_str ;
2489 }
2490 
2491 void yyset_out (FILE * _out_str )
2492 {
2493  yyout = _out_str ;
2494 }
2495 
2496 int yyget_debug (void)
2497 {
2498  return yy_flex_debug;
2499 }
2500 
2501 void yyset_debug (int _bdebug )
2502 {
2503  yy_flex_debug = _bdebug ;
2504 }
2505 
2506 static int yy_init_globals (void)
2507 {
2508  /* Initialization is the same as for the non-reentrant scanner.
2509  * This function is called from yylex_destroy(), so don't allocate here.
2510  */
2511 
2512  (yy_buffer_stack) = NULL;
2513  (yy_buffer_stack_top) = 0;
2514  (yy_buffer_stack_max) = 0;
2515  (yy_c_buf_p) = NULL;
2516  (yy_init) = 0;
2517  (yy_start) = 0;
2518 
2519  (yy_start_stack_ptr) = 0;
2520  (yy_start_stack_depth) = 0;
2521  (yy_start_stack) = NULL;
2522 
2523 /* Defined in main.c */
2524 #ifdef YY_STDINIT
2525  yyin = stdin;
2526  yyout = stdout;
2527 #else
2528  yyin = NULL;
2529  yyout = NULL;
2530 #endif
2531 
2532  /* For future reference: Set errno on error, since we are called by
2533  * yylex_init()
2534  */
2535  return 0;
2536 }
2537 
2538 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
2539 int yylex_destroy (void)
2540 {
2541 
2542  /* Pop the buffer stack, destroying each element. */
2543  while(YY_CURRENT_BUFFER){
2547  }
2548 
2549  /* Destroy the stack itself. */
2550  yyfree((yy_buffer_stack) );
2551  (yy_buffer_stack) = NULL;
2552 
2553  /* Destroy the start condition stack. */
2554  yyfree( (yy_start_stack) );
2555  (yy_start_stack) = NULL;
2556 
2557  /* Reset the globals. This is important in a non-reentrant scanner so the next time
2558  * yylex() is called, initialization will occur. */
2559  yy_init_globals( );
2560 
2561  return 0;
2562 }
2563 
2564 /*
2565  * Internal utility routines.
2566  */
2567 
2568 #ifndef yytext_ptr
2569 static void yy_flex_strncpy (char* s1, const char * s2, int n )
2570 {
2571 
2572  int i;
2573  for ( i = 0; i < n; ++i )
2574  s1[i] = s2[i];
2575 }
2576 #endif
2577 
2578 #ifdef YY_NEED_STRLEN
2579 static int yy_flex_strlen (const char * s )
2580 {
2581  int n;
2582  for ( n = 0; s[n]; ++n )
2583  ;
2584 
2585  return n;
2586 }
2587 #endif
2588 
2589 void *yyalloc (yy_size_t size )
2590 {
2591  return malloc(size);
2592 }
2593 
2594 void *yyrealloc (void * ptr, yy_size_t size )
2595 {
2596 
2597  /* The cast to (char *) in the following accommodates both
2598  * implementations that use char* generic pointers, and those
2599  * that use void* generic pointers. It works with the latter
2600  * because both ANSI C and C++ allow castless assignment from
2601  * any pointer type to void*, and deal with argument conversions
2602  * as though doing an assignment.
2603  */
2604  return realloc(ptr, size);
2605 }
2606 
2607 void yyfree (void * ptr )
2608 {
2609  free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
2610 }
2611 
2612 #line 239 "parser.l"
2613 
2614 
2615 #ifndef parser_wrap
2616 int parser_wrap(void)
2617 {
2618  return 1;
2619 }
2620 #endif
2621 
2622 struct keyword {
2623  const char *kw;
2624  int token;
2625 };
2626 
2627 /* This table MUST be alphabetically sorted on the kw field */
2628 static const struct keyword keywords[] = {
2629  {"FALSE", tFALSE},
2630  {"NULL", tNULL},
2631  {"TRUE", tTRUE},
2632  {"__cdecl", tCDECL},
2633  {"__fastcall", tFASTCALL},
2634  {"__int32", tINT32},
2635  {"__int3264", tINT3264},
2636  {"__int64", tINT64},
2637  {"__pascal", tPASCAL},
2638  {"__stdcall", tSTDCALL},
2639  {"_cdecl", tCDECL},
2640  {"_fastcall", tFASTCALL},
2641  {"_pascal", tPASCAL},
2642  {"_stdcall", tSTDCALL},
2643  {"boolean", tBOOLEAN},
2644  {"byte", tBYTE},
2645  {"case", tCASE},
2646  {"cdecl", tCDECL},
2647  {"char", tCHAR},
2648  {"coclass", tCOCLASS},
2649  {"const", tCONST},
2650  {"cpp_quote", tCPPQUOTE},
2651  {"default", tDEFAULT},
2652  {"dispinterface", tDISPINTERFACE},
2653  {"double", tDOUBLE},
2654  {"enum", tENUM},
2655  {"error_status_t", tERRORSTATUST},
2656  {"extern", tEXTERN},
2657  {"float", tFLOAT},
2658  {"handle_t", tHANDLET},
2659  {"hyper", tHYPER},
2660  {"import", tIMPORT},
2661  {"importlib", tIMPORTLIB},
2662  {"inline", tINLINE},
2663  {"int", tINT},
2664  {"interface", tINTERFACE},
2665  {"library", tLIBRARY},
2666  {"long", tLONG},
2667  {"methods", tMETHODS},
2668  {"module", tMODULE},
2669  {"namespace", tNAMESPACE},
2670  {"pascal", tPASCAL},
2671  {"properties", tPROPERTIES},
2672  {"register", tREGISTER},
2673  {"short", tSHORT},
2674  {"signed", tSIGNED},
2675  {"sizeof", tSIZEOF},
2676  {"small", tSMALL},
2677  {"static", tSTATIC},
2678  {"stdcall", tSTDCALL},
2679  {"struct", tSTRUCT},
2680  {"switch", tSWITCH},
2681  {"typedef", tTYPEDEF},
2682  {"union", tUNION},
2683  {"unsigned", tUNSIGNED},
2684  {"void", tVOID},
2685  {"wchar_t", tWCHAR},
2686 };
2687 #define NKEYWORDS (sizeof(keywords)/sizeof(keywords[0]))
2688 
2689 /* keywords only recognized in attribute lists
2690  * This table MUST be alphabetically sorted on the kw field
2691  */
2692 static const struct keyword attr_keywords[] =
2693 {
2694  {"aggregatable", tAGGREGATABLE},
2695  {"all_nodes", tALLNODES},
2696  {"allocate", tALLOCATE},
2697  {"annotation", tANNOTATION},
2698  {"apartment", tAPARTMENT},
2699  {"appobject", tAPPOBJECT},
2700  {"async", tASYNC},
2701  {"async_uuid", tASYNCUUID},
2702  {"auto_handle", tAUTOHANDLE},
2703  {"bindable", tBINDABLE},
2704  {"both", tBOTH},
2705  {"broadcast", tBROADCAST},
2706  {"byte_count", tBYTECOUNT},
2707  {"call_as", tCALLAS},
2708  {"callback", tCALLBACK},
2709  {"code", tCODE},
2710  {"comm_status", tCOMMSTATUS},
2711  {"context_handle", tCONTEXTHANDLE},
2712  {"context_handle_noserialize", tCONTEXTHANDLENOSERIALIZE},
2713  {"context_handle_serialize", tCONTEXTHANDLENOSERIALIZE},
2714  {"control", tCONTROL},
2715  {"decode", tDECODE},
2716  {"defaultbind", tDEFAULTBIND},
2717  {"defaultcollelem", tDEFAULTCOLLELEM},
2718  {"defaultvalue", tDEFAULTVALUE},
2719  {"defaultvtable", tDEFAULTVTABLE},
2720  {"disable_consistency_check", tDISABLECONSISTENCYCHECK},
2721  {"displaybind", tDISPLAYBIND},
2722  {"dllname", tDLLNAME},
2723  {"dont_free", tDONTFREE},
2724  {"dual", tDUAL},
2725  {"enable_allocate", tENABLEALLOCATE},
2726  {"encode", tENCODE},
2727  {"endpoint", tENDPOINT},
2728  {"entry", tENTRY},
2729  {"explicit_handle", tEXPLICITHANDLE},
2730  {"fault_status", tFAULTSTATUS},
2731  {"force_allocate", tFORCEALLOCATE},
2732  {"free", tFREE},
2733  {"handle", tHANDLE},
2734  {"helpcontext", tHELPCONTEXT},
2735  {"helpfile", tHELPFILE},
2736  {"helpstring", tHELPSTRING},
2737  {"helpstringcontext", tHELPSTRINGCONTEXT},
2738  {"helpstringdll", tHELPSTRINGDLL},
2739  {"hidden", tHIDDEN},
2740  {"id", tID},
2741  {"idempotent", tIDEMPOTENT},
2742  {"ignore", tIGNORE},
2743  {"iid_is", tIIDIS},
2744  {"immediatebind", tIMMEDIATEBIND},
2745  {"implicit_handle", tIMPLICITHANDLE},
2746  {"in", tIN},
2747  {"in_line", tIN_LINE},
2748  {"input_sync", tINPUTSYNC},
2749  {"lcid", tLCID},
2750  {"length_is", tLENGTHIS},
2751  {"licensed", tLICENSED},
2752  {"local", tLOCAL},
2753  {"maybe", tMAYBE},
2754  {"message", tMESSAGE},
2755  {"neutral", tNEUTRAL},
2756  {"nocode", tNOCODE},
2757  {"nonbrowsable", tNONBROWSABLE},
2758  {"noncreatable", tNONCREATABLE},
2759  {"nonextensible", tNONEXTENSIBLE},
2760  {"notify", tNOTIFY},
2761  {"notify_flag", tNOTIFYFLAG},
2762  {"object", tOBJECT},
2763  {"odl", tODL},
2764  {"oleautomation", tOLEAUTOMATION},
2765  {"optimize", tOPTIMIZE},
2766  {"optional", tOPTIONAL},
2767  {"out", tOUT},
2768  {"partial_ignore", tPARTIALIGNORE},
2769  {"pointer_default", tPOINTERDEFAULT},
2770  {"progid", tPROGID},
2771  {"propget", tPROPGET},
2772  {"propput", tPROPPUT},
2773  {"propputref", tPROPPUTREF},
2774  {"proxy", tPROXY},
2775  {"ptr", tPTR},
2776  {"public", tPUBLIC},
2777  {"range", tRANGE},
2778  {"readonly", tREADONLY},
2779  {"ref", tREF},
2780  {"represent_as", tREPRESENTAS},
2781  {"requestedit", tREQUESTEDIT},
2782  {"restricted", tRESTRICTED},
2783  {"retval", tRETVAL},
2784  {"single", tSINGLE},
2785  {"single_node", tSINGLENODE},
2786  {"size_is", tSIZEIS},
2787  {"source", tSOURCE},
2788  {"strict_context_handle", tSTRICTCONTEXTHANDLE},
2789  {"string", tSTRING},
2790  {"switch_is", tSWITCHIS},
2791  {"switch_type", tSWITCHTYPE},
2792  {"threading", tTHREADING},
2793  {"transmit_as", tTRANSMITAS},
2794  {"uidefault", tUIDEFAULT},
2795  {"unique", tUNIQUE},
2796  {"user_marshal", tUSERMARSHAL},
2797  {"usesgetlasterror", tUSESGETLASTERROR},
2798  {"uuid", tUUID},
2799  {"v1_enum", tV1ENUM},
2800  {"vararg", tVARARG},
2801  {"version", tVERSION},
2802  {"vi_progid", tVIPROGID},
2803  {"wire_marshal", tWIREMARSHAL},
2804 };
2805 
2806 /* attributes TODO:
2807  custom
2808  first_is
2809  last_is
2810  max_is
2811  min_is
2812 */
2813 
2814 #define KWP(p) ((const struct keyword *)(p))
2815 
2816 static int kw_cmp_func(const void *s1, const void *s2)
2817 {
2818  return strcmp(KWP(s1)->kw, KWP(s2)->kw);
2819 }
2820 
2821 static int kw_token(const char *kw)
2822 {
2823  struct keyword key, *kwp;
2824  key.kw = kw;
2825  kwp = bsearch(&key, keywords, NKEYWORDS, sizeof(keywords[0]), kw_cmp_func);
2826  if (kwp && (winrt_mode || kwp->token != tNAMESPACE)) {
2827  parser_lval.str = xstrdup(kwp->kw);
2828  return kwp->token;
2829  }
2830  parser_lval.str = xstrdup(kw);
2831  return is_type(kw) ? aKNOWNTYPE : aIDENTIFIER;
2832 }
2833 
2834 static int attr_token(const char *kw)
2835 {
2836  struct keyword key, *kwp;
2837  key.kw = kw;
2838  kwp = bsearch(&key, attr_keywords, sizeof(attr_keywords)/sizeof(attr_keywords[0]),
2839  sizeof(attr_keywords[0]), kw_cmp_func);
2840  if (kwp) {
2841  parser_lval.str = xstrdup(kwp->kw);
2842  return kwp->token;
2843  }
2844  return kw_token(kw);
2845 }
2846 
2847 static void addcchar(char c)
2848 {
2849  if(cbufidx >= cbufalloc)
2850  {
2851  cbufalloc += 1024;
2852  cbuffer = xrealloc(cbuffer, cbufalloc * sizeof(cbuffer[0]));
2853  if(cbufalloc > 65536)
2854  parser_warning("Reallocating string buffer larger than 64kB\n");
2855  }
2856  cbuffer[cbufidx++] = c;
2857 }
2858 
2859 static char *get_buffered_cstring(void)
2860 {
2861  addcchar(0);
2862  return xstrdup(cbuffer);
2863 }
2864 
2865 void pop_import(void)
2866 {
2867  int ptr = import_stack_ptr-1;
2868 
2869  fclose(yyin);
2872  if (temp_name) {
2873  unlink(temp_name);
2874  free(temp_name);
2875  }
2876  temp_name = import_stack[ptr].temp_name;
2877  input_name = import_stack[ptr].input_name;
2878  line_number = import_stack[ptr].line_number;
2879  import_stack_ptr--;
2880 }
2881 
2882 struct imports {
2883  char *name;
2884  struct imports *next;
2885 } *first_import;
2886 
2887 int do_import(char *fname)
2888 {
2889  FILE *f;
2890  char *path, *name;
2891  struct imports *import;
2892  int ptr = import_stack_ptr;
2893  int ret, fd;
2894 
2895  import = first_import;
2896  while (import && strcmp(import->name, fname))
2897  import = import->next;
2898  if (import) return 0; /* already imported */
2899 
2900  import = xmalloc(sizeof(struct imports));
2901  import->name = xstrdup(fname);
2902  import->next = first_import;
2903  first_import = import;
2904 
2905  /* don't search for a file name with a path in the include directories,
2906  * for compatibility with MIDL */
2907  if (strchr( fname, '/' ) || strchr( fname, '\\' ))
2908  path = xstrdup( fname );
2909  else if (!(path = wpp_find_include( fname, input_name )))
2910  error_loc("Unable to open include file %s\n", fname);
2911 
2913  error_loc("Exceeded max import depth\n");
2914 
2915  import_stack[ptr].temp_name = temp_name;
2916  import_stack[ptr].input_name = input_name;
2917  import_stack[ptr].line_number = line_number;
2918  import_stack_ptr++;
2919  input_name = path;
2920  line_number = 1;
2921 
2922  name = xstrdup( "widl.XXXXXX" );
2923  if((fd = mkstemps( name, 0 )) == -1)
2924  error("Could not generate a temp name from %s\n", name);
2925 
2926  temp_name = name;
2927  if (!(f = fdopen(fd, "wt")))
2928  error("Could not open fd %s for writing\n", name);
2929 
2930  ret = wpp_parse( path, f );
2931  fclose( f );
2932  if (ret) exit(1);
2933 
2934  if((f = fopen(temp_name, "r")) == NULL)
2935  error_loc("Unable to open %s\n", temp_name);
2936 
2939  return 1;
2940 }
2941 
2942 void abort_import(void)
2943 {
2944  int ptr;
2945 
2946  for (ptr=0; ptr<import_stack_ptr; ptr++)
2948 }
2949 
2950 static void switch_to_acf(void)
2951 {
2952  int ptr = import_stack_ptr;
2953  int ret, fd;
2954  char *name;
2955  FILE *f;
2956 
2957  assert(import_stack_ptr == 0);
2958 
2959  input_name = acf_name;
2960  acf_name = NULL;
2961  line_number = 1;
2962 
2963  name = xstrdup( "widl.XXXXXX" );
2964  if((fd = mkstemps( name, 0 )) == -1)
2965  error("Could not generate a temp name from %s\n", name);
2966 
2967  temp_name = name;
2968  if (!(f = fdopen(fd, "wt")))
2969  error("Could not open fd %s for writing\n", name);
2970 
2971  ret = wpp_parse(input_name, f);
2972  fclose(f);
2973  if (ret) exit(1);
2974 
2975  if((f = fopen(temp_name, "r")) == NULL)
2976  error_loc("Unable to open %s\n", temp_name);
2977 
2980 }
2981 
2982 static void warning_disable(int warning)
2983 {
2984  warning_t *warning_entry;
2986  if(warning_entry->num == warning)
2987  return;
2988  warning_entry = xmalloc( sizeof(*warning_entry) );
2989  warning_entry->num = warning;
2990  list_add_tail(disabled_warnings, &warning_entry->entry);
2991 }
2992 
2993 static void warning_enable(int warning)
2994 {
2995  warning_t *warning_entry;
2997  if(warning_entry->num == warning)
2998  {
2999  list_remove(&warning_entry->entry);
3000  free(warning_entry);
3001  break;
3002  }
3003 }
3004 
3005 int do_warning(char *toggle, warning_list_t *wnum)
3006 {
3007  warning_t *warning, *next;
3008  int ret = 1;
3009  if(!disabled_warnings)
3010  {
3013  }
3014 
3015  if(!strcmp(toggle, "disable"))
3017  warning_disable(warning->num);
3018  else if(!strcmp(toggle, "enable"))
3020  warning_enable(warning->num);
3021  else
3022  ret = 0;
3023 
3025  free(warning);
3026  return ret;
3027 }
3028 
3030 {
3031  warning_t *warning_entry;
3032  if(!disabled_warnings)
3033  return 1;
3035  if(warning_entry->num == warning)
3036  return 0;
3037  return 1;
3038 }
3039 
#define realloc
Definition: debug_ros.c:6
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240
unsigned char flex_uint8_t
Definition: macro.lex.yy.c:54
UUID * uuid
Definition: parser.tab.c:483
#define YY_DO_BEFORE_ACTION
Definition: parser.yy.c:592
#define YY_END_OF_BUFFER
Definition: parser.yy.c:599
#define WSTRQUOTE
Definition: parser.yy.c:1038
FILE * yy_input_file
Definition: macro.lex.yy.c:192
#define isspace(c)
Definition: acclib.h:69
static int cbufidx
Definition: parser.yy.c:976
UINT32 strtoul(const char *String, char **Terminator, UINT32 Base)
Definition: utclib.c:696
yy_size_t yy_n_chars
Definition: macro.lex.yy.c:205
struct S2 s2
static const struct keyword attr_keywords[]
Definition: parser.yy.c:2692
static int yy_init
Definition: parser.yy.c:518
static const YY_CHAR yy_ec[256]
Definition: parser.yy.c:634
int do_warning(char *toggle, warning_list_t *wnum)
Definition: parser.yy.c:3005
#define error(str)
Definition: mkdosfs.c:1605
#define yynoreturn
Definition: parser.yy.c:346
#define yyset_lineno
Definition: parser.yy.c:213
#define yylex_destroy
Definition: parser.yy.c:141
static const struct keyword keywords[]
Definition: parser.yy.c:2628
static int attr_token(const char *kw)
Definition: parser.yy.c:2834
#define EOB_ACT_END_OF_FILE
Definition: parser.yy.c:406
#define YY_NEW_FILE
Definition: parser.yy.c:371
unsigned char YY_CHAR
Definition: macro.lex.yy.c:336
char * yy_bp
Definition: parser.yy.c:1236
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
#define YY_CURRENT_BUFFER
Definition: parser.yy.c:503
_Check_return_ double __cdecl strtod(_In_z_ const char *_Str, _Out_opt_ _Deref_post_z_ char **_EndPtr)
#define yyrestart
Definition: parser.yy.c:27
#define TRUE
Definition: types.h:120
#define YY_STATE_EOF(state)
Definition: parser.yy.c:369
static int yy_init_globals(void)
GLsizei const GLchar ** path
Definition: glext.h:7234
#define yyget_lineno
Definition: parser.yy.c:207
#define YY_RULE_SETUP
Definition: parser.yy.c:1225
#define MAX_IMPORT_DEPTH
Definition: parser.yy.c:986
static int cbufalloc
Definition: parser.yy.c:977
#define free
Definition: debug_ros.c:5
char * wpp_find_include(const char *name, const char *parent_name)
Definition: preproc.c:509
#define YY_CURRENT_BUFFER_LVALUE
Definition: parser.yy.c:509
#define yylex
Definition: parser.yy.c:24
GLdouble n
Definition: glext.h:7729
#define unlink
Definition: syshdrs.h:54
size_t yy_size_t
Definition: macro.lex.yy.c:159
unsigned char flex_uint8_t
Definition: parser.yy.c:318
int yy_state_type
Definition: parser.yy.c:573
#define assert(x)
Definition: debug.h:53
#define ECHO
Definition: parser.yy.c:1143
#define YY_END_OF_BUFFER_CHAR
Definition: parser.yy.c:372
static int fd
Definition: io.c:51
FILE * stdin
int line_number
Definition: parser.yy.c:990
#define yy_flush_buffer
Definition: parser.yy.c:15
int errno
unsigned short int uint16_t
Definition: acefiex.h:54
#define yyget_text
Definition: parser.yy.c:201
int yy_act
Definition: parser.yy.c:1237
int is_warning_enabled(int warning)
Definition: parser.yy.c:3029
static yy_state_type yy_get_previous_state(void)
#define YY_AT_BOL()
Definition: parser.yy.c:566
#define YY_START
Definition: parser.yy.c:366
#define yyget_leng
Definition: parser.yy.c:195
int is_type(const char *name)
Definition: parser.tab.c:6368
#define KWP(p)
Definition: parser.yy.c:2814
FILE * stdout
#define YY_DECL
Definition: parser.yy.c:1210
yy_size_t yy_buf_size
Definition: macro.lex.yy.c:200
char * yy_cp
Definition: parser.yy.c:1236
__WINE_SERVER_LIST_INLINE void list_add_tail(struct list *list, struct list *elem)
Definition: list.h:102
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define YY_INPUT(buf, result, max_size)
Definition: parser.yy.c:1150
#define yywrap
Definition: parser.yy.c:29
#define YY_EXTRA_TYPE
Definition: parser.yy.c:1053
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
static int yy_did_buffer_switch_on_eof
Definition: parser.yy.c:524
void * xrealloc(void *oldmem, size_t size)
Definition: uimain.c:736
static unsigned char bytes[4]
Definition: adnsresfilter.c:74
#define YY_MORE_ADJ
Definition: parser.yy.c:916
static int kw_token(const char *kw)
Definition: parser.yy.c:2821
jsstr_t * str
Definition: parser.tab.c:295
int wpp_parse(const char *input, FILE *output)
Definition: compiler.c:437
void * xmalloc(int size)
Definition: uimain.c:747
#define yyget_debug
Definition: parser.yy.c:147
#define yy_scan_buffer
Definition: parser.yy.c:11
GLuint base
Definition: 3dtext.c:35
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
static int kw_cmp_func(const void *s1, const void *s2)
Definition: parser.yy.c:2816
#define BEGIN
Definition: parser.yy.c:361
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
Definition: glfuncs.h:210
static void addcchar(char c)
Definition: parser.yy.c:2847
struct yy_buffer_state * YY_BUFFER_STATE
Definition: parser.yy.c:393
#define yy_scan_bytes
Definition: parser.yy.c:13
static PVOID ptr
Definition: dispmode.c:27
#define yyget_out
Definition: parser.yy.c:183
#define SQUOTE
Definition: parser.yy.c:1042
void error_loc(const char *s,...)
Definition: utils.c:69
#define PP_PRAGMA
Definition: parser.yy.c:1041
int yy_state_type
Definition: macro.lex.yy.c:340
static int yy_n_chars
Definition: parser.yy.c:513
static YY_BUFFER_STATE * yy_buffer_stack
Definition: parser.yy.c:495
Definition: parser.c:48
#define YY_BUFFER_EOF_PENDING
Definition: parser.yy.c:487
#define yyset_debug
Definition: parser.yy.c:153
#define yy_load_buffer_state
Definition: parser.yy.c:16
#define yy_scan_string
Definition: parser.yy.c:12
#define yyleng
Definition: parser.yy.c:23
void abort_import(void)
Definition: parser.yy.c:2942
#define YY_BUFFER_NORMAL
Definition: parser.yy.c:476
#define YY_READ_BUF_SIZE
Definition: parser.yy.c:1134
size_t yy_size_t
Definition: parser.yy.c:398
YYSTYPE parser_lval
#define b
Definition: ke_i.h:79
GLuint GLfloat * val
Definition: glext.h:7180
#define YY_BUF_SIZE
Definition: parser.yy.c:383
#define yy_switch_to_buffer
Definition: parser.yy.c:17
int do_import(char *fname)
Definition: parser.yy.c:2887
__WINE_SERVER_LIST_INLINE void list_remove(struct list *elem)
Definition: list.h:108
#define EOB_ACT_LAST_MATCH
Definition: parser.yy.c:407
GLfloat f
Definition: glext.h:7540
signed char int8_t
Definition: acefiex.h:50
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLsizeiptr size
Definition: glext.h:5919
#define yylineno
Definition: parser.yy.c:25
unsigned int num
Definition: parser.tab.c:484
#define yyget_in
Definition: parser.yy.c:171
static int yy_start_stack_ptr
Definition: parser.yy.c:1120
GLintptr offset
Definition: glext.h:5920
struct S1 s1
static warning_list_t * disabled_warnings
Definition: parser.yy.c:984
short int flex_int16_t
Definition: parser.yy.c:319
#define yyset_out
Definition: parser.yy.c:189
const char file[]
Definition: icontest.c:11
static void warning_disable(int warning)
Definition: parser.yy.c:2982
const GLubyte * c
Definition: glext.h:8905
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
Definition: utclib.c:534
char flex_int8_t
Definition: parser.yy.c:331
#define yy_delete_buffer
Definition: parser.yy.c:10
static char * cbuffer
Definition: parser.yy.c:975
static const flex_int16_t yy_accept[210]
Definition: parser.yy.c:607
static const flex_int16_t yy_nxt[728]
Definition: parser.yy.c:737
short int flex_int16_t
Definition: macro.lex.yy.c:52
#define yy_current_state()
Definition: ppl.yy.c:1440
static int yy_start_stack_depth
Definition: parser.yy.c:1121
static char * yy_last_accepting_cpos
Definition: parser.yy.c:906
unsigned long int flex_uint32_t
Definition: parser.yy.c:335
int flex_int32_t
Definition: macro.lex.yy.c:53
static void warning_enable(int warning)
Definition: parser.yy.c:2993
#define ERANGE
Definition: acclib.h:92
int import_stack_ptr
Definition: parser.yy.c:993
int ret
static const flex_int16_t yy_def[251]
Definition: parser.yy.c:706
#define YY_START_STACK_INCR
Definition: parser.yy.c:1192
static void yynoreturn yy_fatal_error(const char *msg)
#define yy_create_buffer
Definition: parser.yy.c:9
#define ATTR
Definition: parser.yy.c:1039
#define NKEYWORDS
Definition: parser.yy.c:2687
#define yypush_buffer_state
Definition: parser.yy.c:18
#define yyget_extra
Definition: parser.yy.c:159
long int flex_int32_t
Definition: parser.yy.c:334
uint32_t entry
Definition: isohybrid.c:63
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
GLdouble s
Definition: gl.h:2039
#define yytext
Definition: parser.yy.c:28
Definition: _list.h:228
UUID * parse_uuid(const char *u)
Definition: parser.yy.c:1008
#define yyensure_buffer_stack
Definition: parser.yy.c:20
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
#define yyset_extra
Definition: parser.yy.c:165
_Check_return_ _CRTIMP FILE *__cdecl fopen(_In_z_ const char *_Filename, _In_z_ const char *_Mode)
struct list entry
Definition: widltypes.h:547
static size_t yy_buffer_stack_top
Definition: parser.yy.c:493
BYTE uint8_t
Definition: msvideo1.c:66
static unsigned int xstrtoul(const char *nptr, char **endptr, int base)
Definition: parser.yy.c:997
int use_abi_namespace
Definition: widl.c:130
static const flex_int16_t yy_base[251]
Definition: parser.yy.c:675
INT32 int32_t
Definition: types.h:71
static void switch_to_acf(void)
Definition: parser.yy.c:2950
#define PP_LINE
Definition: parser.yy.c:1040
#define EOB_ACT_CONTINUE_SCAN
Definition: parser.yy.c:405
static yy_state_type yy_try_NUL_trans(yy_state_type current_state)
flex_uint8_t YY_CHAR
Definition: parser.yy.c:569
#define YY_SC_TO_UI(c)
Definition: parser.yy.c:355
static void yy_pop_state(void)
static unsigned __int64 next
Definition: rand_nt.c:6
struct imports * next
Definition: parser.yy.c:2884
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
Definition: list.h:204
flex_int32_t yy_verify
Definition: macro.lex.yy.c:370
GLenum GLenum GLenum input
Definition: glext.h:9031
static int yy_start
Definition: parser.yy.c:519
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define YY_BUFFER_NEW
Definition: parser.yy.c:475
#define f
Definition: ke_i.h:83
#define yyless(n)
Definition: parser.yy.c:413
void pop_import(void)
Definition: parser.yy.c:2865
_Check_return_ _CRTIMP FILE *__cdecl fdopen(_In_ int _FileHandle, _In_z_ const char *_Format)
struct @4825 import_stack[MAX_IMPORT_DEPTH]
static void yy_push_state(int _new_state)
int mkstemps(char *template, int suffix_len)
Definition: mkstemps.c:73
static size_t yy_buffer_stack_max
Definition: parser.yy.c:494
#define NULL
Definition: types.h:112
char * temp_name
Definition: parser.yy.c:991
static char yy_hold_char
Definition: parser.yy.c:512
static const YY_CHAR yy_meta[51]
Definition: parser.yy.c:666
#define YY_EXIT_FAILURE
struct imports * first_import
UINT32 uint32_t
Definition: types.h:75
static char * get_buffered_cstring(void)
Definition: parser.yy.c:2859
#define yypop_buffer_state
Definition: parser.yy.c:19
static int * yy_start_stack
Definition: parser.yy.c:1122
flex_int32_t yy_nxt
Definition: macro.lex.yy.c:371
char * strchr(const char *String, int ch)
Definition: utclib.c:501
unsigned short int flex_uint16_t
Definition: parser.yy.c:320
#define msg(x)
Definition: auth_time.c:54
#define yytext_ptr
Definition: parser.yy.c:582
Definition: name.c:38
static int yy_get_next_buffer(void)
_Check_return_ long __cdecl strtol(_In_z_ const char *_Str, _Out_opt_ _Deref_post_z_ char **_EndPtr, _In_ int _Radix)
static yy_state_type yy_last_accepting_state
Definition: parser.yy.c:905
#define yyin
Definition: parser.yy.c:22
__WINE_SERVER_LIST_INLINE void list_init(struct list *list)
Definition: list.h:149
#define c
Definition: ke_i.h:80
#define yyfree
Definition: parser.yy.c:32
Definition: msctf.idl:510
FILE * stderr
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
#define malloc
Definition: debug_ros.c:4
#define QUOTE
Definition: parser.yy.c:1037
static char * yy_c_buf_p
Definition: parser.yy.c:517
INT16 int16_t
Definition: types.h:70
static char * dest
Definition: rtl.c:135
char * name
Definition: parser.yy.c:2883
#define yy_flex_debug
Definition: parser.yy.c:21
#define yyset_in
Definition: parser.yy.c:177
#define yyrealloc
Definition: parser.yy.c:31
void exit(int exitcode)
Definition: _exit.c:33
#define YY_RESTORE_YY_MORE_OFFSET
Definition: parser.yy.c:917
#define YY_BREAK
Definition: parser.yy.c:1222
#define yy_init_buffer
Definition: parser.yy.c:14
char * xstrdup(const char *s)
Definition: uimain.c:768
#define yyalloc
Definition: parser.yy.c:30
YY_BUFFER_STATE state
Definition: parser.yy.c:988
char * acf_name
Definition: widl.c:135
#define yyout
Definition: parser.yy.c:26
double dbl
Definition: parser.tab.c:269
#define memset(x, y, z)
Definition: compat.h:39
#define INITIAL
Definition: parser.yy.c:1036
int parser_warning(const char *s,...)
Definition: utils.c:94
#define ULONG_MAX
Definition: limits.h:44
#define yyterminate()
Definition: parser.yy.c:1187
#define warning(s)
Definition: debug.h:83
int winrt_mode
Definition: widl.c:129
Definition: path.c:41
static const flex_int16_t yy_chk[728]
Definition: parser.yy.c:821
#define YY_FATAL_ERROR(msg)
Definition: parser.yy.c:1197
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
char * input_name
Definition: parser.yy.c:989
Definition: fci.c:126
#define bsearch
GLuint const GLchar * name
Definition: glext.h:6031