r20746: Don't report each individual test in test_smbclient as a single testsuite.
[ira/wip.git] / source / pidl / lib / Parse / Pidl / IDL.pm
1 ####################################################################
2 #
3 #    This file was generated using Parse::Yapp version 1.05.
4 #
5 #        Don't edit this file, use source file instead.
6 #
7 #             ANY CHANGE MADE HERE WILL BE LOST !
8 #
9 ####################################################################
10 package Parse::Pidl::IDL;
11 use vars qw ( @ISA );
12 use strict;
13
14 @ISA= qw ( Parse::Yapp::Driver );
15 use Parse::Yapp::Driver;
16
17
18
19 sub new {
20         my($class)=shift;
21         ref($class)
22     and $class=ref($class);
23
24     my($self)=$class->SUPER::new( yyversion => '1.05',
25                                   yystates =>
26 [
27         {#State 0
28                 DEFAULT => -1,
29                 GOTOS => {
30                         'idl' => 1
31                 }
32         },
33         {#State 1
34                 ACTIONS => {
35                         '' => 2,
36                         "importlib" => 3,
37                         "import" => 6,
38                         "include" => 11
39                 },
40                 DEFAULT => -91,
41                 GOTOS => {
42                         'importlib' => 9,
43                         'interface' => 8,
44                         'include' => 4,
45                         'coclass' => 10,
46                         'import' => 7,
47                         'property_list' => 5
48                 }
49         },
50         {#State 2
51                 DEFAULT => 0
52         },
53         {#State 3
54                 ACTIONS => {
55                         'TEXT' => 13
56                 },
57                 GOTOS => {
58                         'commalist' => 12,
59                         'text' => 14
60                 }
61         },
62         {#State 4
63                 DEFAULT => -5
64         },
65         {#State 5
66                 ACTIONS => {
67                         "coclass" => 15,
68                         "[" => 17,
69                         "interface" => 16
70                 }
71         },
72         {#State 6
73                 ACTIONS => {
74                         'TEXT' => 13
75                 },
76                 GOTOS => {
77                         'commalist' => 18,
78                         'text' => 14
79                 }
80         },
81         {#State 7
82                 DEFAULT => -4
83         },
84         {#State 8
85                 DEFAULT => -2
86         },
87         {#State 9
88                 DEFAULT => -6
89         },
90         {#State 10
91                 DEFAULT => -3
92         },
93         {#State 11
94                 ACTIONS => {
95                         'TEXT' => 13
96                 },
97                 GOTOS => {
98                         'commalist' => 19,
99                         'text' => 14
100                 }
101         },
102         {#State 12
103                 ACTIONS => {
104                         ";" => 20,
105                         "," => 21
106                 }
107         },
108         {#State 13
109                 DEFAULT => -124
110         },
111         {#State 14
112                 DEFAULT => -10
113         },
114         {#State 15
115                 ACTIONS => {
116                         'IDENTIFIER' => 22
117                 },
118                 GOTOS => {
119                         'identifier' => 23
120                 }
121         },
122         {#State 16
123                 ACTIONS => {
124                         'IDENTIFIER' => 22
125                 },
126                 GOTOS => {
127                         'identifier' => 24
128                 }
129         },
130         {#State 17
131                 ACTIONS => {
132                         'IDENTIFIER' => 22
133                 },
134                 GOTOS => {
135                         'identifier' => 26,
136                         'property' => 27,
137                         'properties' => 25
138                 }
139         },
140         {#State 18
141                 ACTIONS => {
142                         ";" => 28,
143                         "," => 21
144                 }
145         },
146         {#State 19
147                 ACTIONS => {
148                         ";" => 29,
149                         "," => 21
150                 }
151         },
152         {#State 20
153                 DEFAULT => -9
154         },
155         {#State 21
156                 ACTIONS => {
157                         'TEXT' => 13
158                 },
159                 GOTOS => {
160                         'text' => 30
161                 }
162         },
163         {#State 22
164                 DEFAULT => -120
165         },
166         {#State 23
167                 ACTIONS => {
168                         "{" => 31
169                 }
170         },
171         {#State 24
172                 ACTIONS => {
173                         ":" => 32
174                 },
175                 DEFAULT => -16,
176                 GOTOS => {
177                         'base_interface' => 33
178                 }
179         },
180         {#State 25
181                 ACTIONS => {
182                         "," => 34,
183                         "]" => 35
184                 }
185         },
186         {#State 26
187                 ACTIONS => {
188                         "(" => 36
189                 },
190                 DEFAULT => -95
191         },
192         {#State 27
193                 DEFAULT => -93
194         },
195         {#State 28
196                 DEFAULT => -7
197         },
198         {#State 29
199                 DEFAULT => -8
200         },
201         {#State 30
202                 DEFAULT => -11
203         },
204         {#State 31
205                 DEFAULT => -13,
206                 GOTOS => {
207                         'interface_names' => 37
208                 }
209         },
210         {#State 32
211                 ACTIONS => {
212                         'IDENTIFIER' => 22
213                 },
214                 GOTOS => {
215                         'identifier' => 38
216                 }
217         },
218         {#State 33
219                 ACTIONS => {
220                         "{" => 39
221                 }
222         },
223         {#State 34
224                 ACTIONS => {
225                         'IDENTIFIER' => 22
226                 },
227                 GOTOS => {
228                         'identifier' => 26,
229                         'property' => 40
230                 }
231         },
232         {#State 35
233                 DEFAULT => -92
234         },
235         {#State 36
236                 ACTIONS => {
237                         'CONSTANT' => 44,
238                         'TEXT' => 13,
239                         'IDENTIFIER' => 22
240                 },
241                 DEFAULT => -101,
242                 GOTOS => {
243                         'identifier' => 45,
244                         'text' => 46,
245                         'listtext' => 42,
246                         'anytext' => 41,
247                         'constant' => 43
248                 }
249         },
250         {#State 37
251                 ACTIONS => {
252                         "}" => 47,
253                         "interface" => 48
254                 }
255         },
256         {#State 38
257                 DEFAULT => -17
258         },
259         {#State 39
260                 ACTIONS => {
261                         "typedef" => 49,
262                         "union" => 50,
263                         "enum" => 63,
264                         "bitmap" => 64,
265                         "declare" => 56,
266                         "const" => 58,
267                         "struct" => 61
268                 },
269                 DEFAULT => -91,
270                 GOTOS => {
271                         'typedecl' => 62,
272                         'function' => 51,
273                         'bitmap' => 65,
274                         'definitions' => 52,
275                         'definition' => 55,
276                         'property_list' => 54,
277                         'usertype' => 53,
278                         'declare' => 67,
279                         'const' => 66,
280                         'struct' => 57,
281                         'enum' => 59,
282                         'typedef' => 60,
283                         'union' => 68
284                 }
285         },
286         {#State 40
287                 DEFAULT => -94
288         },
289         {#State 41
290                 ACTIONS => {
291                         "-" => 70,
292                         ":" => 69,
293                         "<" => 71,
294                         "+" => 73,
295                         "~" => 72,
296                         "*" => 74,
297                         "?" => 75,
298                         "{" => 76,
299                         "&" => 77,
300                         "/" => 78,
301                         "=" => 79,
302                         "(" => 80,
303                         "|" => 81,
304                         "." => 82,
305                         ">" => 83
306                 },
307                 DEFAULT => -97
308         },
309         {#State 42
310                 ACTIONS => {
311                         "," => 84,
312                         ")" => 85
313                 }
314         },
315         {#State 43
316                 DEFAULT => -103
317         },
318         {#State 44
319                 DEFAULT => -123
320         },
321         {#State 45
322                 DEFAULT => -102
323         },
324         {#State 46
325                 DEFAULT => -104
326         },
327         {#State 47
328                 ACTIONS => {
329                         ";" => 86
330                 },
331                 DEFAULT => -125,
332                 GOTOS => {
333                         'optional_semicolon' => 87
334                 }
335         },
336         {#State 48
337                 ACTIONS => {
338                         'IDENTIFIER' => 22
339                 },
340                 GOTOS => {
341                         'identifier' => 88
342                 }
343         },
344         {#State 49
345                 DEFAULT => -91,
346                 GOTOS => {
347                         'property_list' => 89
348                 }
349         },
350         {#State 50
351                 ACTIONS => {
352                         'IDENTIFIER' => 90
353                 },
354                 DEFAULT => -122,
355                 GOTOS => {
356                         'optional_identifier' => 91
357                 }
358         },
359         {#State 51
360                 DEFAULT => -20
361         },
362         {#State 52
363                 ACTIONS => {
364                         "}" => 92,
365                         "typedef" => 49,
366                         "union" => 50,
367                         "enum" => 63,
368                         "bitmap" => 64,
369                         "declare" => 56,
370                         "const" => 58,
371                         "struct" => 61
372                 },
373                 DEFAULT => -91,
374                 GOTOS => {
375                         'typedecl' => 62,
376                         'function' => 51,
377                         'bitmap' => 65,
378                         'definition' => 93,
379                         'property_list' => 54,
380                         'usertype' => 53,
381                         'const' => 66,
382                         'struct' => 57,
383                         'declare' => 67,
384                         'enum' => 59,
385                         'typedef' => 60,
386                         'union' => 68
387                 }
388         },
389         {#State 53
390                 ACTIONS => {
391                         ";" => 94
392                 }
393         },
394         {#State 54
395                 ACTIONS => {
396                         'IDENTIFIER' => 22,
397                         "signed" => 100,
398                         "union" => 50,
399                         "enum" => 63,
400                         "bitmap" => 64,
401                         'void' => 95,
402                         "unsigned" => 101,
403                         "[" => 17,
404                         "struct" => 61
405                 },
406                 GOTOS => {
407                         'existingtype' => 99,
408                         'bitmap' => 65,
409                         'usertype' => 96,
410                         'identifier' => 97,
411                         'struct' => 57,
412                         'enum' => 59,
413                         'type' => 102,
414                         'union' => 68,
415                         'sign' => 98
416                 }
417         },
418         {#State 55
419                 DEFAULT => -18
420         },
421         {#State 56
422                 DEFAULT => -91,
423                 GOTOS => {
424                         'property_list' => 103
425                 }
426         },
427         {#State 57
428                 DEFAULT => -36
429         },
430         {#State 58
431                 ACTIONS => {
432                         'IDENTIFIER' => 22
433                 },
434                 GOTOS => {
435                         'identifier' => 104
436                 }
437         },
438         {#State 59
439                 DEFAULT => -38
440         },
441         {#State 60
442                 DEFAULT => -22
443         },
444         {#State 61
445                 ACTIONS => {
446                         'IDENTIFIER' => 90
447                 },
448                 DEFAULT => -122,
449                 GOTOS => {
450                         'optional_identifier' => 105
451                 }
452         },
453         {#State 62
454                 DEFAULT => -24
455         },
456         {#State 63
457                 ACTIONS => {
458                         'IDENTIFIER' => 90
459                 },
460                 DEFAULT => -122,
461                 GOTOS => {
462                         'optional_identifier' => 106
463                 }
464         },
465         {#State 64
466                 ACTIONS => {
467                         'IDENTIFIER' => 90
468                 },
469                 DEFAULT => -122,
470                 GOTOS => {
471                         'optional_identifier' => 107
472                 }
473         },
474         {#State 65
475                 DEFAULT => -39
476         },
477         {#State 66
478                 DEFAULT => -21
479         },
480         {#State 67
481                 DEFAULT => -23
482         },
483         {#State 68
484                 DEFAULT => -37
485         },
486         {#State 69
487                 ACTIONS => {
488                         'CONSTANT' => 44,
489                         'TEXT' => 13,
490                         'IDENTIFIER' => 22
491                 },
492                 DEFAULT => -101,
493                 GOTOS => {
494                         'identifier' => 45,
495                         'anytext' => 108,
496                         'text' => 46,
497                         'constant' => 43
498                 }
499         },
500         {#State 70
501                 ACTIONS => {
502                         'CONSTANT' => 44,
503                         'TEXT' => 13,
504                         'IDENTIFIER' => 22
505                 },
506                 DEFAULT => -101,
507                 GOTOS => {
508                         'identifier' => 45,
509                         'anytext' => 109,
510                         'text' => 46,
511                         'constant' => 43
512                 }
513         },
514         {#State 71
515                 ACTIONS => {
516                         'CONSTANT' => 44,
517                         'TEXT' => 13,
518                         'IDENTIFIER' => 22
519                 },
520                 DEFAULT => -101,
521                 GOTOS => {
522                         'identifier' => 45,
523                         'anytext' => 110,
524                         'text' => 46,
525                         'constant' => 43
526                 }
527         },
528         {#State 72
529                 ACTIONS => {
530                         'CONSTANT' => 44,
531                         'TEXT' => 13,
532                         'IDENTIFIER' => 22
533                 },
534                 DEFAULT => -101,
535                 GOTOS => {
536                         'identifier' => 45,
537                         'anytext' => 111,
538                         'text' => 46,
539                         'constant' => 43
540                 }
541         },
542         {#State 73
543                 ACTIONS => {
544                         'CONSTANT' => 44,
545                         'TEXT' => 13,
546                         'IDENTIFIER' => 22
547                 },
548                 DEFAULT => -101,
549                 GOTOS => {
550                         'identifier' => 45,
551                         'anytext' => 112,
552                         'text' => 46,
553                         'constant' => 43
554                 }
555         },
556         {#State 74
557                 ACTIONS => {
558                         'CONSTANT' => 44,
559                         'TEXT' => 13,
560                         'IDENTIFIER' => 22
561                 },
562                 DEFAULT => -101,
563                 GOTOS => {
564                         'identifier' => 45,
565                         'anytext' => 113,
566                         'text' => 46,
567                         'constant' => 43
568                 }
569         },
570         {#State 75
571                 ACTIONS => {
572                         'CONSTANT' => 44,
573                         'TEXT' => 13,
574                         'IDENTIFIER' => 22
575                 },
576                 DEFAULT => -101,
577                 GOTOS => {
578                         'identifier' => 45,
579                         'anytext' => 114,
580                         'text' => 46,
581                         'constant' => 43
582                 }
583         },
584         {#State 76
585                 ACTIONS => {
586                         'CONSTANT' => 44,
587                         'TEXT' => 13,
588                         'IDENTIFIER' => 22
589                 },
590                 DEFAULT => -101,
591                 GOTOS => {
592                         'identifier' => 45,
593                         'anytext' => 115,
594                         'text' => 46,
595                         'constant' => 43,
596                         'commalisttext' => 116
597                 }
598         },
599         {#State 77
600                 ACTIONS => {
601                         'CONSTANT' => 44,
602                         'TEXT' => 13,
603                         'IDENTIFIER' => 22
604                 },
605                 DEFAULT => -101,
606                 GOTOS => {
607                         'identifier' => 45,
608                         'anytext' => 117,
609                         'text' => 46,
610                         'constant' => 43
611                 }
612         },
613         {#State 78
614                 ACTIONS => {
615                         'CONSTANT' => 44,
616                         'TEXT' => 13,
617                         'IDENTIFIER' => 22
618                 },
619                 DEFAULT => -101,
620                 GOTOS => {
621                         'identifier' => 45,
622                         'anytext' => 118,
623                         'text' => 46,
624                         'constant' => 43
625                 }
626         },
627         {#State 79
628                 ACTIONS => {
629                         'CONSTANT' => 44,
630                         'TEXT' => 13,
631                         'IDENTIFIER' => 22
632                 },
633                 DEFAULT => -101,
634                 GOTOS => {
635                         'identifier' => 45,
636                         'anytext' => 119,
637                         'text' => 46,
638                         'constant' => 43
639                 }
640         },
641         {#State 80
642                 ACTIONS => {
643                         'CONSTANT' => 44,
644                         'TEXT' => 13,
645                         'IDENTIFIER' => 22
646                 },
647                 DEFAULT => -101,
648                 GOTOS => {
649                         'identifier' => 45,
650                         'anytext' => 115,
651                         'text' => 46,
652                         'constant' => 43,
653                         'commalisttext' => 120
654                 }
655         },
656         {#State 81
657                 ACTIONS => {
658                         'CONSTANT' => 44,
659                         'TEXT' => 13,
660                         'IDENTIFIER' => 22
661                 },
662                 DEFAULT => -101,
663                 GOTOS => {
664                         'identifier' => 45,
665                         'anytext' => 121,
666                         'text' => 46,
667                         'constant' => 43
668                 }
669         },
670         {#State 82
671                 ACTIONS => {
672                         'CONSTANT' => 44,
673                         'TEXT' => 13,
674                         'IDENTIFIER' => 22
675                 },
676                 DEFAULT => -101,
677                 GOTOS => {
678                         'identifier' => 45,
679                         'anytext' => 122,
680                         'text' => 46,
681                         'constant' => 43
682                 }
683         },
684         {#State 83
685                 ACTIONS => {
686                         'CONSTANT' => 44,
687                         'TEXT' => 13,
688                         'IDENTIFIER' => 22
689                 },
690                 DEFAULT => -101,
691                 GOTOS => {
692                         'identifier' => 45,
693                         'anytext' => 123,
694                         'text' => 46,
695                         'constant' => 43
696                 }
697         },
698         {#State 84
699                 ACTIONS => {
700                         'CONSTANT' => 44,
701                         'TEXT' => 13,
702                         'IDENTIFIER' => 22
703                 },
704                 DEFAULT => -101,
705                 GOTOS => {
706                         'identifier' => 45,
707                         'anytext' => 124,
708                         'text' => 46,
709                         'constant' => 43
710                 }
711         },
712         {#State 85
713                 DEFAULT => -96
714         },
715         {#State 86
716                 DEFAULT => -126
717         },
718         {#State 87
719                 DEFAULT => -12
720         },
721         {#State 88
722                 ACTIONS => {
723                         ";" => 125
724                 }
725         },
726         {#State 89
727                 ACTIONS => {
728                         'IDENTIFIER' => 22,
729                         "signed" => 100,
730                         "union" => 50,
731                         "enum" => 63,
732                         "bitmap" => 64,
733                         'void' => 95,
734                         "unsigned" => 101,
735                         "[" => 17,
736                         "struct" => 61
737                 },
738                 GOTOS => {
739                         'existingtype' => 99,
740                         'bitmap' => 65,
741                         'usertype' => 96,
742                         'identifier' => 97,
743                         'struct' => 57,
744                         'enum' => 59,
745                         'type' => 126,
746                         'union' => 68,
747                         'sign' => 98
748                 }
749         },
750         {#State 90
751                 DEFAULT => -121
752         },
753         {#State 91
754                 ACTIONS => {
755                         "{" => 128
756                 },
757                 DEFAULT => -76,
758                 GOTOS => {
759                         'union_body' => 129,
760                         'opt_union_body' => 127
761                 }
762         },
763         {#State 92
764                 ACTIONS => {
765                         ";" => 86
766                 },
767                 DEFAULT => -125,
768                 GOTOS => {
769                         'optional_semicolon' => 130
770                 }
771         },
772         {#State 93
773                 DEFAULT => -19
774         },
775         {#State 94
776                 DEFAULT => -40
777         },
778         {#State 95
779                 DEFAULT => -47
780         },
781         {#State 96
782                 DEFAULT => -45
783         },
784         {#State 97
785                 DEFAULT => -44
786         },
787         {#State 98
788                 ACTIONS => {
789                         'IDENTIFIER' => 22
790                 },
791                 GOTOS => {
792                         'identifier' => 131
793                 }
794         },
795         {#State 99
796                 DEFAULT => -46
797         },
798         {#State 100
799                 DEFAULT => -41
800         },
801         {#State 101
802                 DEFAULT => -42
803         },
804         {#State 102
805                 ACTIONS => {
806                         'IDENTIFIER' => 22
807                 },
808                 GOTOS => {
809                         'identifier' => 132
810                 }
811         },
812         {#State 103
813                 ACTIONS => {
814                         "union" => 133,
815                         "enum" => 138,
816                         "bitmap" => 139,
817                         "[" => 17
818                 },
819                 GOTOS => {
820                         'decl_enum' => 134,
821                         'decl_bitmap' => 135,
822                         'decl_type' => 137,
823                         'decl_union' => 136
824                 }
825         },
826         {#State 104
827                 DEFAULT => -80,
828                 GOTOS => {
829                         'pointers' => 140
830                 }
831         },
832         {#State 105
833                 ACTIONS => {
834                         "{" => 142
835                 },
836                 DEFAULT => -66,
837                 GOTOS => {
838                         'struct_body' => 141,
839                         'opt_struct_body' => 143
840                 }
841         },
842         {#State 106
843                 ACTIONS => {
844                         "{" => 144
845                 },
846                 DEFAULT => -49,
847                 GOTOS => {
848                         'opt_enum_body' => 146,
849                         'enum_body' => 145
850                 }
851         },
852         {#State 107
853                 ACTIONS => {
854                         "{" => 148
855                 },
856                 DEFAULT => -57,
857                 GOTOS => {
858                         'bitmap_body' => 149,
859                         'opt_bitmap_body' => 147
860                 }
861         },
862         {#State 108
863                 ACTIONS => {
864                         "-" => 70,
865                         ":" => 69,
866                         "<" => 71,
867                         "+" => 73,
868                         "~" => 72,
869                         "*" => 74,
870                         "?" => 75,
871                         "{" => 76,
872                         "&" => 77,
873                         "/" => 78,
874                         "=" => 79,
875                         "(" => 80,
876                         "|" => 81,
877                         "." => 82,
878                         ">" => 83
879                 },
880                 DEFAULT => -114
881         },
882         {#State 109
883                 ACTIONS => {
884                         ":" => 69,
885                         "<" => 71,
886                         "~" => 72,
887                         "?" => 75,
888                         "{" => 76,
889                         "=" => 79
890                 },
891                 DEFAULT => -105
892         },
893         {#State 110
894                 ACTIONS => {
895                         "-" => 70,
896                         ":" => 69,
897                         "<" => 71,
898                         "+" => 73,
899                         "~" => 72,
900                         "*" => 74,
901                         "?" => 75,
902                         "{" => 76,
903                         "&" => 77,
904                         "/" => 78,
905                         "=" => 79,
906                         "(" => 80,
907                         "|" => 81,
908                         "." => 82,
909                         ">" => 83
910                 },
911                 DEFAULT => -109
912         },
913         {#State 111
914                 ACTIONS => {
915                         "-" => 70,
916                         ":" => 69,
917                         "<" => 71,
918                         "+" => 73,
919                         "~" => 72,
920                         "*" => 74,
921                         "?" => 75,
922                         "{" => 76,
923                         "&" => 77,
924                         "/" => 78,
925                         "=" => 79,
926                         "(" => 80,
927                         "|" => 81,
928                         "." => 82,
929                         ">" => 83
930                 },
931                 DEFAULT => -117
932         },
933         {#State 112
934                 ACTIONS => {
935                         ":" => 69,
936                         "<" => 71,
937                         "~" => 72,
938                         "?" => 75,
939                         "{" => 76,
940                         "=" => 79
941                 },
942                 DEFAULT => -116
943         },
944         {#State 113
945                 ACTIONS => {
946                         ":" => 69,
947                         "<" => 71,
948                         "~" => 72,
949                         "?" => 75,
950                         "{" => 76,
951                         "=" => 79
952                 },
953                 DEFAULT => -107
954         },
955         {#State 114
956                 ACTIONS => {
957                         "-" => 70,
958                         ":" => 69,
959                         "<" => 71,
960                         "+" => 73,
961                         "~" => 72,
962                         "*" => 74,
963                         "?" => 75,
964                         "{" => 76,
965                         "&" => 77,
966                         "/" => 78,
967                         "=" => 79,
968                         "(" => 80,
969                         "|" => 81,
970                         "." => 82,
971                         ">" => 83
972                 },
973                 DEFAULT => -113
974         },
975         {#State 115
976                 ACTIONS => {
977                         "-" => 70,
978                         ":" => 69,
979                         "<" => 71,
980                         "+" => 73,
981                         "~" => 72,
982                         "*" => 74,
983                         "?" => 75,
984                         "{" => 76,
985                         "&" => 77,
986                         "/" => 78,
987                         "=" => 79,
988                         "(" => 80,
989                         "|" => 81,
990                         "." => 82,
991                         ">" => 83
992                 },
993                 DEFAULT => -99
994         },
995         {#State 116
996                 ACTIONS => {
997                         "}" => 150,
998                         "," => 151
999                 }
1000         },
1001         {#State 117
1002                 ACTIONS => {
1003                         ":" => 69,
1004                         "<" => 71,
1005                         "~" => 72,
1006                         "?" => 75,
1007                         "{" => 76,
1008                         "=" => 79
1009                 },
1010                 DEFAULT => -111
1011         },
1012         {#State 118
1013                 ACTIONS => {
1014                         ":" => 69,
1015                         "<" => 71,
1016                         "~" => 72,
1017                         "?" => 75,
1018                         "{" => 76,
1019                         "=" => 79
1020                 },
1021                 DEFAULT => -112
1022         },
1023         {#State 119
1024                 ACTIONS => {
1025                         "-" => 70,
1026                         ":" => 69,
1027                         "<" => 71,
1028                         "+" => 73,
1029                         "~" => 72,
1030                         "*" => 74,
1031                         "?" => 75,
1032                         "{" => 76,
1033                         "&" => 77,
1034                         "/" => 78,
1035                         "=" => 79,
1036                         "(" => 80,
1037                         "|" => 81,
1038                         "." => 82,
1039                         ">" => 83
1040                 },
1041                 DEFAULT => -115
1042         },
1043         {#State 120
1044                 ACTIONS => {
1045                         "," => 151,
1046                         ")" => 152
1047                 }
1048         },
1049         {#State 121
1050                 ACTIONS => {
1051                         ":" => 69,
1052                         "<" => 71,
1053                         "~" => 72,
1054                         "?" => 75,
1055                         "{" => 76,
1056                         "=" => 79
1057                 },
1058                 DEFAULT => -110
1059         },
1060         {#State 122
1061                 ACTIONS => {
1062                         ":" => 69,
1063                         "<" => 71,
1064                         "~" => 72,
1065                         "?" => 75,
1066                         "{" => 76,
1067                         "=" => 79
1068                 },
1069                 DEFAULT => -106
1070         },
1071         {#State 123
1072                 ACTIONS => {
1073                         ":" => 69,
1074                         "<" => 71,
1075                         "~" => 72,
1076                         "?" => 75,
1077                         "{" => 76,
1078                         "=" => 79
1079                 },
1080                 DEFAULT => -108
1081         },
1082         {#State 124
1083                 ACTIONS => {
1084                         "-" => 70,
1085                         ":" => 69,
1086                         "<" => 71,
1087                         "+" => 73,
1088                         "~" => 72,
1089                         "*" => 74,
1090                         "?" => 75,
1091                         "{" => 76,
1092                         "&" => 77,
1093                         "/" => 78,
1094                         "=" => 79,
1095                         "(" => 80,
1096                         "|" => 81,
1097                         "." => 82,
1098                         ">" => 83
1099                 },
1100                 DEFAULT => -98
1101         },
1102         {#State 125
1103                 DEFAULT => -14
1104         },
1105         {#State 126
1106                 ACTIONS => {
1107                         'IDENTIFIER' => 22
1108                 },
1109                 GOTOS => {
1110                         'identifier' => 153
1111                 }
1112         },
1113         {#State 127
1114                 DEFAULT => -78
1115         },
1116         {#State 128
1117                 DEFAULT => -73,
1118                 GOTOS => {
1119                         'union_elements' => 154
1120                 }
1121         },
1122         {#State 129
1123                 DEFAULT => -77
1124         },
1125         {#State 130
1126                 DEFAULT => -15
1127         },
1128         {#State 131
1129                 DEFAULT => -43
1130         },
1131         {#State 132
1132                 ACTIONS => {
1133                         "(" => 155
1134                 }
1135         },
1136         {#State 133
1137                 DEFAULT => -34
1138         },
1139         {#State 134
1140                 DEFAULT => -29
1141         },
1142         {#State 135
1143                 DEFAULT => -30
1144         },
1145         {#State 136
1146                 DEFAULT => -31
1147         },
1148         {#State 137
1149                 ACTIONS => {
1150                         'IDENTIFIER' => 22
1151                 },
1152                 GOTOS => {
1153                         'identifier' => 156
1154                 }
1155         },
1156         {#State 138
1157                 DEFAULT => -32
1158         },
1159         {#State 139
1160                 DEFAULT => -33
1161         },
1162         {#State 140
1163                 ACTIONS => {
1164                         'IDENTIFIER' => 22,
1165                         "*" => 158
1166                 },
1167                 GOTOS => {
1168                         'identifier' => 157
1169                 }
1170         },
1171         {#State 141
1172                 DEFAULT => -67
1173         },
1174         {#State 142
1175                 DEFAULT => -82,
1176                 GOTOS => {
1177                         'element_list1' => 159
1178                 }
1179         },
1180         {#State 143
1181                 DEFAULT => -68
1182         },
1183         {#State 144
1184                 ACTIONS => {
1185                         'IDENTIFIER' => 22
1186                 },
1187                 GOTOS => {
1188                         'identifier' => 160,
1189                         'enum_element' => 161,
1190                         'enum_elements' => 162
1191                 }
1192         },
1193         {#State 145
1194                 DEFAULT => -50
1195         },
1196         {#State 146
1197                 DEFAULT => -51
1198         },
1199         {#State 147
1200                 DEFAULT => -59
1201         },
1202         {#State 148
1203                 ACTIONS => {
1204                         'IDENTIFIER' => 22
1205                 },
1206                 DEFAULT => -62,
1207                 GOTOS => {
1208                         'identifier' => 165,
1209                         'bitmap_element' => 164,
1210                         'bitmap_elements' => 163,
1211                         'opt_bitmap_elements' => 166
1212                 }
1213         },
1214         {#State 149
1215                 DEFAULT => -58
1216         },
1217         {#State 150
1218                 ACTIONS => {
1219                         'CONSTANT' => 44,
1220                         'TEXT' => 13,
1221                         'IDENTIFIER' => 22
1222                 },
1223                 DEFAULT => -101,
1224                 GOTOS => {
1225                         'identifier' => 45,
1226                         'anytext' => 167,
1227                         'text' => 46,
1228                         'constant' => 43
1229                 }
1230         },
1231         {#State 151
1232                 ACTIONS => {
1233                         'CONSTANT' => 44,
1234                         'TEXT' => 13,
1235                         'IDENTIFIER' => 22
1236                 },
1237                 DEFAULT => -101,
1238                 GOTOS => {
1239                         'identifier' => 45,
1240                         'anytext' => 168,
1241                         'text' => 46,
1242                         'constant' => 43
1243                 }
1244         },
1245         {#State 152
1246                 ACTIONS => {
1247                         'CONSTANT' => 44,
1248                         'TEXT' => 13,
1249                         'IDENTIFIER' => 22
1250                 },
1251                 DEFAULT => -101,
1252                 GOTOS => {
1253                         'identifier' => 45,
1254                         'anytext' => 169,
1255                         'text' => 46,
1256                         'constant' => 43
1257                 }
1258         },
1259         {#State 153
1260                 ACTIONS => {
1261                         "[" => 170
1262                 },
1263                 DEFAULT => -88,
1264                 GOTOS => {
1265                         'array_len' => 171
1266                 }
1267         },
1268         {#State 154
1269                 ACTIONS => {
1270                         "}" => 172
1271                 },
1272                 DEFAULT => -91,
1273                 GOTOS => {
1274                         'optional_base_element' => 174,
1275                         'property_list' => 173
1276                 }
1277         },
1278         {#State 155
1279                 ACTIONS => {
1280                         "," => -84,
1281                         "void" => 178,
1282                         ")" => -84
1283                 },
1284                 DEFAULT => -91,
1285                 GOTOS => {
1286                         'base_element' => 175,
1287                         'element_list2' => 177,
1288                         'property_list' => 176
1289                 }
1290         },
1291         {#State 156
1292                 ACTIONS => {
1293                         ";" => 179
1294                 }
1295         },
1296         {#State 157
1297                 ACTIONS => {
1298                         "[" => 170,
1299                         "=" => 181
1300                 },
1301                 GOTOS => {
1302                         'array_len' => 180
1303                 }
1304         },
1305         {#State 158
1306                 DEFAULT => -81
1307         },
1308         {#State 159
1309                 ACTIONS => {
1310                         "}" => 182
1311                 },
1312                 DEFAULT => -91,
1313                 GOTOS => {
1314                         'base_element' => 183,
1315                         'property_list' => 176
1316                 }
1317         },
1318         {#State 160
1319                 ACTIONS => {
1320                         "=" => 184
1321                 },
1322                 DEFAULT => -54
1323         },
1324         {#State 161
1325                 DEFAULT => -52
1326         },
1327         {#State 162
1328                 ACTIONS => {
1329                         "}" => 185,
1330                         "," => 186
1331                 }
1332         },
1333         {#State 163
1334                 ACTIONS => {
1335                         "," => 187
1336                 },
1337                 DEFAULT => -63
1338         },
1339         {#State 164
1340                 DEFAULT => -60
1341         },
1342         {#State 165
1343                 ACTIONS => {
1344                         "=" => 188
1345                 }
1346         },
1347         {#State 166
1348                 ACTIONS => {
1349                         "}" => 189
1350                 }
1351         },
1352         {#State 167
1353                 ACTIONS => {
1354                         "-" => 70,
1355                         ":" => 69,
1356                         "<" => 71,
1357                         "+" => 73,
1358                         "~" => 72,
1359                         "*" => 74,
1360                         "?" => 75,
1361                         "{" => 76,
1362                         "&" => 77,
1363                         "/" => 78,
1364                         "=" => 79,
1365                         "(" => 80,
1366                         "|" => 81,
1367                         "." => 82,
1368                         ">" => 83
1369                 },
1370                 DEFAULT => -119
1371         },
1372         {#State 168
1373                 ACTIONS => {
1374                         "-" => 70,
1375                         ":" => 69,
1376                         "<" => 71,
1377                         "+" => 73,
1378                         "~" => 72,
1379                         "*" => 74,
1380                         "?" => 75,
1381                         "{" => 76,
1382                         "&" => 77,
1383                         "/" => 78,
1384                         "=" => 79,
1385                         "(" => 80,
1386                         "|" => 81,
1387                         "." => 82,
1388                         ">" => 83
1389                 },
1390                 DEFAULT => -100
1391         },
1392         {#State 169
1393                 ACTIONS => {
1394                         ":" => 69,
1395                         "<" => 71,
1396                         "~" => 72,
1397                         "?" => 75,
1398                         "{" => 76,
1399                         "=" => 79
1400                 },
1401                 DEFAULT => -118
1402         },
1403         {#State 170
1404                 ACTIONS => {
1405                         'CONSTANT' => 44,
1406                         'TEXT' => 13,
1407                         "]" => 190,
1408                         'IDENTIFIER' => 22
1409                 },
1410                 DEFAULT => -101,
1411                 GOTOS => {
1412                         'identifier' => 45,
1413                         'anytext' => 191,
1414                         'text' => 46,
1415                         'constant' => 43
1416                 }
1417         },
1418         {#State 171
1419                 ACTIONS => {
1420                         ";" => 192
1421                 }
1422         },
1423         {#State 172
1424                 DEFAULT => -75
1425         },
1426         {#State 173
1427                 ACTIONS => {
1428                         "[" => 17
1429                 },
1430                 DEFAULT => -91,
1431                 GOTOS => {
1432                         'base_or_empty' => 193,
1433                         'base_element' => 194,
1434                         'empty_element' => 195,
1435                         'property_list' => 196
1436                 }
1437         },
1438         {#State 174
1439                 DEFAULT => -74
1440         },
1441         {#State 175
1442                 DEFAULT => -86
1443         },
1444         {#State 176
1445                 ACTIONS => {
1446                         'IDENTIFIER' => 22,
1447                         "signed" => 100,
1448                         "union" => 50,
1449                         "enum" => 63,
1450                         "bitmap" => 64,
1451                         'void' => 95,
1452                         "unsigned" => 101,
1453                         "[" => 17,
1454                         "struct" => 61
1455                 },
1456                 GOTOS => {
1457                         'existingtype' => 99,
1458                         'bitmap' => 65,
1459                         'usertype' => 96,
1460                         'identifier' => 97,
1461                         'struct' => 57,
1462                         'enum' => 59,
1463                         'type' => 197,
1464                         'union' => 68,
1465                         'sign' => 98
1466                 }
1467         },
1468         {#State 177
1469                 ACTIONS => {
1470                         "," => 198,
1471                         ")" => 199
1472                 }
1473         },
1474         {#State 178
1475                 DEFAULT => -85
1476         },
1477         {#State 179
1478                 DEFAULT => -28
1479         },
1480         {#State 180
1481                 ACTIONS => {
1482                         "=" => 200
1483                 }
1484         },
1485         {#State 181
1486                 ACTIONS => {
1487                         'CONSTANT' => 44,
1488                         'TEXT' => 13,
1489                         'IDENTIFIER' => 22
1490                 },
1491                 DEFAULT => -101,
1492                 GOTOS => {
1493                         'identifier' => 45,
1494                         'anytext' => 201,
1495                         'text' => 46,
1496                         'constant' => 43
1497                 }
1498         },
1499         {#State 182
1500                 DEFAULT => -65
1501         },
1502         {#State 183
1503                 ACTIONS => {
1504                         ";" => 202
1505                 }
1506         },
1507         {#State 184
1508                 ACTIONS => {
1509                         'CONSTANT' => 44,
1510                         'TEXT' => 13,
1511                         'IDENTIFIER' => 22
1512                 },
1513                 DEFAULT => -101,
1514                 GOTOS => {
1515                         'identifier' => 45,
1516                         'anytext' => 203,
1517                         'text' => 46,
1518                         'constant' => 43
1519                 }
1520         },
1521         {#State 185
1522                 DEFAULT => -48
1523         },
1524         {#State 186
1525                 ACTIONS => {
1526                         'IDENTIFIER' => 22
1527                 },
1528                 GOTOS => {
1529                         'identifier' => 160,
1530                         'enum_element' => 204
1531                 }
1532         },
1533         {#State 187
1534                 ACTIONS => {
1535                         'IDENTIFIER' => 22
1536                 },
1537                 GOTOS => {
1538                         'identifier' => 165,
1539                         'bitmap_element' => 205
1540                 }
1541         },
1542         {#State 188
1543                 ACTIONS => {
1544                         'CONSTANT' => 44,
1545                         'TEXT' => 13,
1546                         'IDENTIFIER' => 22
1547                 },
1548                 DEFAULT => -101,
1549                 GOTOS => {
1550                         'identifier' => 45,
1551                         'anytext' => 206,
1552                         'text' => 46,
1553                         'constant' => 43
1554                 }
1555         },
1556         {#State 189
1557                 DEFAULT => -56
1558         },
1559         {#State 190
1560                 ACTIONS => {
1561                         "[" => 170
1562                 },
1563                 DEFAULT => -88,
1564                 GOTOS => {
1565                         'array_len' => 207
1566                 }
1567         },
1568         {#State 191
1569                 ACTIONS => {
1570                         "-" => 70,
1571                         ":" => 69,
1572                         "?" => 75,
1573                         "<" => 71,
1574                         "+" => 73,
1575                         "~" => 72,
1576                         "&" => 77,
1577                         "{" => 76,
1578                         "/" => 78,
1579                         "=" => 79,
1580                         "|" => 81,
1581                         "(" => 80,
1582                         "*" => 74,
1583                         "." => 82,
1584                         "]" => 208,
1585                         ">" => 83
1586                 }
1587         },
1588         {#State 192
1589                 DEFAULT => -35
1590         },
1591         {#State 193
1592                 DEFAULT => -72
1593         },
1594         {#State 194
1595                 ACTIONS => {
1596                         ";" => 209
1597                 }
1598         },
1599         {#State 195
1600                 DEFAULT => -71
1601         },
1602         {#State 196
1603                 ACTIONS => {
1604                         'IDENTIFIER' => 22,
1605                         "signed" => 100,
1606                         "union" => 50,
1607                         ";" => 210,
1608                         "enum" => 63,
1609                         "bitmap" => 64,
1610                         'void' => 95,
1611                         "unsigned" => 101,
1612                         "[" => 17,
1613                         "struct" => 61
1614                 },
1615                 GOTOS => {
1616                         'existingtype' => 99,
1617                         'bitmap' => 65,
1618                         'usertype' => 96,
1619                         'identifier' => 97,
1620                         'struct' => 57,
1621                         'enum' => 59,
1622                         'type' => 197,
1623                         'union' => 68,
1624                         'sign' => 98
1625                 }
1626         },
1627         {#State 197
1628                 DEFAULT => -80,
1629                 GOTOS => {
1630                         'pointers' => 211
1631                 }
1632         },
1633         {#State 198
1634                 DEFAULT => -91,
1635                 GOTOS => {
1636                         'base_element' => 212,
1637                         'property_list' => 176
1638                 }
1639         },
1640         {#State 199
1641                 ACTIONS => {
1642                         ";" => 213
1643                 }
1644         },
1645         {#State 200
1646                 ACTIONS => {
1647                         'CONSTANT' => 44,
1648                         'TEXT' => 13,
1649                         'IDENTIFIER' => 22
1650                 },
1651                 DEFAULT => -101,
1652                 GOTOS => {
1653                         'identifier' => 45,
1654                         'anytext' => 214,
1655                         'text' => 46,
1656                         'constant' => 43
1657                 }
1658         },
1659         {#State 201
1660                 ACTIONS => {
1661                         "-" => 70,
1662                         ":" => 69,
1663                         "?" => 75,
1664                         "<" => 71,
1665                         ";" => 215,
1666                         "+" => 73,
1667                         "~" => 72,
1668                         "&" => 77,
1669                         "{" => 76,
1670                         "/" => 78,
1671                         "=" => 79,
1672                         "|" => 81,
1673                         "(" => 80,
1674                         "*" => 74,
1675                         "." => 82,
1676                         ">" => 83
1677                 }
1678         },
1679         {#State 202
1680                 DEFAULT => -83
1681         },
1682         {#State 203
1683                 ACTIONS => {
1684                         "-" => 70,
1685                         ":" => 69,
1686                         "<" => 71,
1687                         "+" => 73,
1688                         "~" => 72,
1689                         "*" => 74,
1690                         "?" => 75,
1691                         "{" => 76,
1692                         "&" => 77,
1693                         "/" => 78,
1694                         "=" => 79,
1695                         "(" => 80,
1696                         "|" => 81,
1697                         "." => 82,
1698                         ">" => 83
1699                 },
1700                 DEFAULT => -55
1701         },
1702         {#State 204
1703                 DEFAULT => -53
1704         },
1705         {#State 205
1706                 DEFAULT => -61
1707         },
1708         {#State 206
1709                 ACTIONS => {
1710                         "-" => 70,
1711                         ":" => 69,
1712                         "<" => 71,
1713                         "+" => 73,
1714                         "~" => 72,
1715                         "*" => 74,
1716                         "?" => 75,
1717                         "{" => 76,
1718                         "&" => 77,
1719                         "/" => 78,
1720                         "=" => 79,
1721                         "(" => 80,
1722                         "|" => 81,
1723                         "." => 82,
1724                         ">" => 83
1725                 },
1726                 DEFAULT => -64
1727         },
1728         {#State 207
1729                 DEFAULT => -89
1730         },
1731         {#State 208
1732                 ACTIONS => {
1733                         "[" => 170
1734                 },
1735                 DEFAULT => -88,
1736                 GOTOS => {
1737                         'array_len' => 216
1738                 }
1739         },
1740         {#State 209
1741                 DEFAULT => -70
1742         },
1743         {#State 210
1744                 DEFAULT => -69
1745         },
1746         {#State 211
1747                 ACTIONS => {
1748                         'IDENTIFIER' => 22,
1749                         "*" => 158
1750                 },
1751                 GOTOS => {
1752                         'identifier' => 217
1753                 }
1754         },
1755         {#State 212
1756                 DEFAULT => -87
1757         },
1758         {#State 213
1759                 DEFAULT => -27
1760         },
1761         {#State 214
1762                 ACTIONS => {
1763                         "-" => 70,
1764                         ":" => 69,
1765                         "?" => 75,
1766                         "<" => 71,
1767                         ";" => 218,
1768                         "+" => 73,
1769                         "~" => 72,
1770                         "&" => 77,
1771                         "{" => 76,
1772                         "/" => 78,
1773                         "=" => 79,
1774                         "|" => 81,
1775                         "(" => 80,
1776                         "*" => 74,
1777                         "." => 82,
1778                         ">" => 83
1779                 }
1780         },
1781         {#State 215
1782                 DEFAULT => -25
1783         },
1784         {#State 216
1785                 DEFAULT => -90
1786         },
1787         {#State 217
1788                 ACTIONS => {
1789                         "[" => 170
1790                 },
1791                 DEFAULT => -88,
1792                 GOTOS => {
1793                         'array_len' => 219
1794                 }
1795         },
1796         {#State 218
1797                 DEFAULT => -26
1798         },
1799         {#State 219
1800                 DEFAULT => -79
1801         }
1802 ],
1803                                   yyrules  =>
1804 [
1805         [#Rule 0
1806                  '$start', 2, undef
1807         ],
1808         [#Rule 1
1809                  'idl', 0, undef
1810         ],
1811         [#Rule 2
1812                  'idl', 2,
1813 sub
1814 #line 19 "pidl/idl.yp"
1815 { push(@{$_[1]}, $_[2]); $_[1] }
1816         ],
1817         [#Rule 3
1818                  'idl', 2,
1819 sub
1820 #line 20 "pidl/idl.yp"
1821 { push(@{$_[1]}, $_[2]); $_[1] }
1822         ],
1823         [#Rule 4
1824                  'idl', 2,
1825 sub
1826 #line 21 "pidl/idl.yp"
1827 { push(@{$_[1]}, $_[2]); $_[1] }
1828         ],
1829         [#Rule 5
1830                  'idl', 2,
1831 sub
1832 #line 22 "pidl/idl.yp"
1833 { push(@{$_[1]}, $_[2]); $_[1] }
1834         ],
1835         [#Rule 6
1836                  'idl', 2,
1837 sub
1838 #line 23 "pidl/idl.yp"
1839 { push(@{$_[1]}, $_[2]); $_[1] }
1840         ],
1841         [#Rule 7
1842                  'import', 3,
1843 sub
1844 #line 26 "pidl/idl.yp"
1845 {{
1846                         "TYPE" => "IMPORT", 
1847                         "PATHS" => $_[2],
1848                    "FILE" => $_[0]->YYData->{FILE},
1849                    "LINE" => $_[0]->YYData->{LINE}
1850                 }}
1851         ],
1852         [#Rule 8
1853                  'include', 3,
1854 sub
1855 #line 33 "pidl/idl.yp"
1856 {{ 
1857                         "TYPE" => "INCLUDE", 
1858                         "PATHS" => $_[2],
1859                    "FILE" => $_[0]->YYData->{FILE},
1860                    "LINE" => $_[0]->YYData->{LINE}
1861                 }}
1862         ],
1863         [#Rule 9
1864                  'importlib', 3,
1865 sub
1866 #line 40 "pidl/idl.yp"
1867 {{ 
1868                         "TYPE" => "IMPORTLIB", 
1869                         "PATHS" => $_[2],
1870                    "FILE" => $_[0]->YYData->{FILE},
1871                    "LINE" => $_[0]->YYData->{LINE}
1872                 }}
1873         ],
1874         [#Rule 10
1875                  'commalist', 1,
1876 sub
1877 #line 49 "pidl/idl.yp"
1878 { [ $_[1] ] }
1879         ],
1880         [#Rule 11
1881                  'commalist', 3,
1882 sub
1883 #line 50 "pidl/idl.yp"
1884 { push(@{$_[1]}, $_[3]); $_[1] }
1885         ],
1886         [#Rule 12
1887                  'coclass', 7,
1888 sub
1889 #line 54 "pidl/idl.yp"
1890 {{
1891                "TYPE" => "COCLASS", 
1892                "PROPERTIES" => $_[1],
1893                "NAME" => $_[3],
1894                "DATA" => $_[5],
1895                    "FILE" => $_[0]->YYData->{FILE},
1896                    "LINE" => $_[0]->YYData->{LINE},
1897           }}
1898         ],
1899         [#Rule 13
1900                  'interface_names', 0, undef
1901         ],
1902         [#Rule 14
1903                  'interface_names', 4,
1904 sub
1905 #line 66 "pidl/idl.yp"
1906 { push(@{$_[1]}, $_[2]); $_[1] }
1907         ],
1908         [#Rule 15
1909                  'interface', 8,
1910 sub
1911 #line 70 "pidl/idl.yp"
1912 {{
1913                "TYPE" => "INTERFACE", 
1914                "PROPERTIES" => $_[1],
1915                "NAME" => $_[3],
1916                "BASE" => $_[4],
1917                "DATA" => $_[6],
1918                    "FILE" => $_[0]->YYData->{FILE},
1919                    "LINE" => $_[0]->YYData->{LINE},
1920           }}
1921         ],
1922         [#Rule 16
1923                  'base_interface', 0, undef
1924         ],
1925         [#Rule 17
1926                  'base_interface', 2,
1927 sub
1928 #line 83 "pidl/idl.yp"
1929 { $_[2] }
1930         ],
1931         [#Rule 18
1932                  'definitions', 1,
1933 sub
1934 #line 87 "pidl/idl.yp"
1935 { [ $_[1] ] }
1936         ],
1937         [#Rule 19
1938                  'definitions', 2,
1939 sub
1940 #line 88 "pidl/idl.yp"
1941 { push(@{$_[1]}, $_[2]); $_[1] }
1942         ],
1943         [#Rule 20
1944                  'definition', 1, undef
1945         ],
1946         [#Rule 21
1947                  'definition', 1, undef
1948         ],
1949         [#Rule 22
1950                  'definition', 1, undef
1951         ],
1952         [#Rule 23
1953                  'definition', 1, undef
1954         ],
1955         [#Rule 24
1956                  'definition', 1, undef
1957         ],
1958         [#Rule 25
1959                  'const', 7,
1960 sub
1961 #line 96 "pidl/idl.yp"
1962 {{
1963                      "TYPE"  => "CONST", 
1964                      "DTYPE"  => $_[2],
1965                          "POINTERS" => $_[3],
1966                      "NAME"  => $_[4],
1967                      "VALUE" => $_[6],
1968                      "FILE" => $_[0]->YYData->{FILE},
1969                      "LINE" => $_[0]->YYData->{LINE},
1970         }}
1971         ],
1972         [#Rule 26
1973                  'const', 8,
1974 sub
1975 #line 106 "pidl/idl.yp"
1976 {{
1977                      "TYPE"  => "CONST", 
1978                      "DTYPE"  => $_[2],
1979                          "POINTERS" => $_[3],
1980                      "NAME"  => $_[4],
1981                      "ARRAY_LEN" => $_[5],
1982                      "VALUE" => $_[7],
1983                      "FILE" => $_[0]->YYData->{FILE},
1984                      "LINE" => $_[0]->YYData->{LINE},
1985         }}
1986         ],
1987         [#Rule 27
1988                  'function', 7,
1989 sub
1990 #line 120 "pidl/idl.yp"
1991 {{
1992                 "TYPE" => "FUNCTION",
1993                 "NAME" => $_[3],
1994                 "RETURN_TYPE" => $_[2],
1995                 "PROPERTIES" => $_[1],
1996                 "ELEMENTS" => $_[5],
1997                 "FILE" => $_[0]->YYData->{FILE},
1998                 "LINE" => $_[0]->YYData->{LINE},
1999           }}
2000         ],
2001         [#Rule 28
2002                  'declare', 5,
2003 sub
2004 #line 132 "pidl/idl.yp"
2005 {{
2006                      "TYPE" => "DECLARE", 
2007                      "PROPERTIES" => $_[2],
2008                      "NAME" => $_[4],
2009                      "DATA" => $_[3],
2010                      "FILE" => $_[0]->YYData->{FILE},
2011                      "LINE" => $_[0]->YYData->{LINE},
2012         }}
2013         ],
2014         [#Rule 29
2015                  'decl_type', 1, undef
2016         ],
2017         [#Rule 30
2018                  'decl_type', 1, undef
2019         ],
2020         [#Rule 31
2021                  'decl_type', 1, undef
2022         ],
2023         [#Rule 32
2024                  'decl_enum', 1,
2025 sub
2026 #line 146 "pidl/idl.yp"
2027 {{
2028                      "TYPE" => "ENUM"
2029         }}
2030         ],
2031         [#Rule 33
2032                  'decl_bitmap', 1,
2033 sub
2034 #line 152 "pidl/idl.yp"
2035 {{
2036                      "TYPE" => "BITMAP"
2037         }}
2038         ],
2039         [#Rule 34
2040                  'decl_union', 1,
2041 sub
2042 #line 158 "pidl/idl.yp"
2043 {{
2044                      "TYPE" => "UNION"
2045         }}
2046         ],
2047         [#Rule 35
2048                  'typedef', 6,
2049 sub
2050 #line 164 "pidl/idl.yp"
2051 {{
2052                      "TYPE" => "TYPEDEF", 
2053                      "PROPERTIES" => $_[2],
2054                      "NAME" => $_[4],
2055                      "DATA" => $_[3],
2056                      "ARRAY_LEN" => $_[5],
2057                      "FILE" => $_[0]->YYData->{FILE},
2058                      "LINE" => $_[0]->YYData->{LINE},
2059         }}
2060         ],
2061         [#Rule 36
2062                  'usertype', 1, undef
2063         ],
2064         [#Rule 37
2065                  'usertype', 1, undef
2066         ],
2067         [#Rule 38
2068                  'usertype', 1, undef
2069         ],
2070         [#Rule 39
2071                  'usertype', 1, undef
2072         ],
2073         [#Rule 40
2074                  'typedecl', 2,
2075 sub
2076 #line 177 "pidl/idl.yp"
2077 { $_[1] }
2078         ],
2079         [#Rule 41
2080                  'sign', 1, undef
2081         ],
2082         [#Rule 42
2083                  'sign', 1, undef
2084         ],
2085         [#Rule 43
2086                  'existingtype', 2,
2087 sub
2088 #line 182 "pidl/idl.yp"
2089 { ($_[1]?$_[1]:"signed") ." $_[2]" }
2090         ],
2091         [#Rule 44
2092                  'existingtype', 1, undef
2093         ],
2094         [#Rule 45
2095                  'type', 1, undef
2096         ],
2097         [#Rule 46
2098                  'type', 1, undef
2099         ],
2100         [#Rule 47
2101                  'type', 1,
2102 sub
2103 #line 186 "pidl/idl.yp"
2104 { "void" }
2105         ],
2106         [#Rule 48
2107                  'enum_body', 3,
2108 sub
2109 #line 188 "pidl/idl.yp"
2110 { $_[2] }
2111         ],
2112         [#Rule 49
2113                  'opt_enum_body', 0, undef
2114         ],
2115         [#Rule 50
2116                  'opt_enum_body', 1, undef
2117         ],
2118         [#Rule 51
2119                  'enum', 3,
2120 sub
2121 #line 191 "pidl/idl.yp"
2122 {{
2123              "TYPE" => "ENUM", 
2124                          "NAME" => $_[2],
2125                      "ELEMENTS" => $_[3]
2126         }}
2127         ],
2128         [#Rule 52
2129                  'enum_elements', 1,
2130 sub
2131 #line 199 "pidl/idl.yp"
2132 { [ $_[1] ] }
2133         ],
2134         [#Rule 53
2135                  'enum_elements', 3,
2136 sub
2137 #line 200 "pidl/idl.yp"
2138 { push(@{$_[1]}, $_[3]); $_[1] }
2139         ],
2140         [#Rule 54
2141                  'enum_element', 1, undef
2142         ],
2143         [#Rule 55
2144                  'enum_element', 3,
2145 sub
2146 #line 204 "pidl/idl.yp"
2147 { "$_[1]$_[2]$_[3]" }
2148         ],
2149         [#Rule 56
2150                  'bitmap_body', 3,
2151 sub
2152 #line 207 "pidl/idl.yp"
2153 { $_[2] }
2154         ],
2155         [#Rule 57
2156                  'opt_bitmap_body', 0, undef
2157         ],
2158         [#Rule 58
2159                  'opt_bitmap_body', 1, undef
2160         ],
2161         [#Rule 59
2162                  'bitmap', 3,
2163 sub
2164 #line 210 "pidl/idl.yp"
2165 {{
2166              "TYPE" => "BITMAP", 
2167                          "NAME" => $_[2],
2168                      "ELEMENTS" => $_[3]
2169         }}
2170         ],
2171         [#Rule 60
2172                  'bitmap_elements', 1,
2173 sub
2174 #line 218 "pidl/idl.yp"
2175 { [ $_[1] ] }
2176         ],
2177         [#Rule 61
2178                  'bitmap_elements', 3,
2179 sub
2180 #line 219 "pidl/idl.yp"
2181 { push(@{$_[1]}, $_[3]); $_[1] }
2182         ],
2183         [#Rule 62
2184                  'opt_bitmap_elements', 0, undef
2185         ],
2186         [#Rule 63
2187                  'opt_bitmap_elements', 1, undef
2188         ],
2189         [#Rule 64
2190                  'bitmap_element', 3,
2191 sub
2192 #line 224 "pidl/idl.yp"
2193 { "$_[1] ( $_[3] )" }
2194         ],
2195         [#Rule 65
2196                  'struct_body', 3,
2197 sub
2198 #line 227 "pidl/idl.yp"
2199 { $_[2] }
2200         ],
2201         [#Rule 66
2202                  'opt_struct_body', 0, undef
2203         ],
2204         [#Rule 67
2205                  'opt_struct_body', 1, undef
2206         ],
2207         [#Rule 68
2208                  'struct', 3,
2209 sub
2210 #line 231 "pidl/idl.yp"
2211 {{
2212              "TYPE" => "STRUCT", 
2213                          "NAME" => $_[2],
2214                      "ELEMENTS" => $_[3]
2215         }}
2216         ],
2217         [#Rule 69
2218                  'empty_element', 2,
2219 sub
2220 #line 239 "pidl/idl.yp"
2221 {{
2222                  "NAME" => "",
2223                  "TYPE" => "EMPTY",
2224                  "PROPERTIES" => $_[1],
2225                  "POINTERS" => 0,
2226                  "ARRAY_LEN" => [],
2227                  "FILE" => $_[0]->YYData->{FILE},
2228                  "LINE" => $_[0]->YYData->{LINE},
2229          }}
2230         ],
2231         [#Rule 70
2232                  'base_or_empty', 2, undef
2233         ],
2234         [#Rule 71
2235                  'base_or_empty', 1, undef
2236         ],
2237         [#Rule 72
2238                  'optional_base_element', 2,
2239 sub
2240 #line 253 "pidl/idl.yp"
2241 { $_[2]->{PROPERTIES} = FlattenHash([$_[1],$_[2]->{PROPERTIES}]); $_[2] }
2242         ],
2243         [#Rule 73
2244                  'union_elements', 0, undef
2245         ],
2246         [#Rule 74
2247                  'union_elements', 2,
2248 sub
2249 #line 258 "pidl/idl.yp"
2250 { push(@{$_[1]}, $_[2]); $_[1] }
2251         ],
2252         [#Rule 75
2253                  'union_body', 3,
2254 sub
2255 #line 261 "pidl/idl.yp"
2256 { $_[2] }
2257         ],
2258         [#Rule 76
2259                  'opt_union_body', 0, undef
2260         ],
2261         [#Rule 77
2262                  'opt_union_body', 1, undef
2263         ],
2264         [#Rule 78
2265                  'union', 3,
2266 sub
2267 #line 265 "pidl/idl.yp"
2268 {{
2269              "TYPE" => "UNION", 
2270                      "NAME" => $_[2],
2271                      "ELEMENTS" => $_[3]
2272         }}
2273         ],
2274         [#Rule 79
2275                  'base_element', 5,
2276 sub
2277 #line 273 "pidl/idl.yp"
2278 {{
2279                            "NAME" => $_[4],
2280                            "TYPE" => $_[2],
2281                            "PROPERTIES" => $_[1],
2282                            "POINTERS" => $_[3],
2283                            "ARRAY_LEN" => $_[5],
2284                        "FILE" => $_[0]->YYData->{FILE},
2285                        "LINE" => $_[0]->YYData->{LINE},
2286               }}
2287         ],
2288         [#Rule 80
2289                  'pointers', 0,
2290 sub
2291 #line 287 "pidl/idl.yp"
2292 { 0 }
2293         ],
2294         [#Rule 81
2295                  'pointers', 2,
2296 sub
2297 #line 288 "pidl/idl.yp"
2298 { $_[1]+1 }
2299         ],
2300         [#Rule 82
2301                  'element_list1', 0, undef
2302         ],
2303         [#Rule 83
2304                  'element_list1', 3,
2305 sub
2306 #line 293 "pidl/idl.yp"
2307 { push(@{$_[1]}, $_[2]); $_[1] }
2308         ],
2309         [#Rule 84
2310                  'element_list2', 0, undef
2311         ],
2312         [#Rule 85
2313                  'element_list2', 1, undef
2314         ],
2315         [#Rule 86
2316                  'element_list2', 1,
2317 sub
2318 #line 299 "pidl/idl.yp"
2319 { [ $_[1] ] }
2320         ],
2321         [#Rule 87
2322                  'element_list2', 3,
2323 sub
2324 #line 300 "pidl/idl.yp"
2325 { push(@{$_[1]}, $_[3]); $_[1] }
2326         ],
2327         [#Rule 88
2328                  'array_len', 0, undef
2329         ],
2330         [#Rule 89
2331                  'array_len', 3,
2332 sub
2333 #line 305 "pidl/idl.yp"
2334 { push(@{$_[3]}, "*"); $_[3] }
2335         ],
2336         [#Rule 90
2337                  'array_len', 4,
2338 sub
2339 #line 306 "pidl/idl.yp"
2340 { push(@{$_[4]}, "$_[2]"); $_[4] }
2341         ],
2342         [#Rule 91
2343                  'property_list', 0, undef
2344         ],
2345         [#Rule 92
2346                  'property_list', 4,
2347 sub
2348 #line 312 "pidl/idl.yp"
2349 { FlattenHash([$_[1],$_[3]]); }
2350         ],
2351         [#Rule 93
2352                  'properties', 1,
2353 sub
2354 #line 315 "pidl/idl.yp"
2355 { $_[1] }
2356         ],
2357         [#Rule 94
2358                  'properties', 3,
2359 sub
2360 #line 316 "pidl/idl.yp"
2361 { FlattenHash([$_[1], $_[3]]); }
2362         ],
2363         [#Rule 95
2364                  'property', 1,
2365 sub
2366 #line 319 "pidl/idl.yp"
2367 {{ "$_[1]" => "1"     }}
2368         ],
2369         [#Rule 96
2370                  'property', 4,
2371 sub
2372 #line 320 "pidl/idl.yp"
2373 {{ "$_[1]" => "$_[3]" }}
2374         ],
2375         [#Rule 97
2376                  'listtext', 1, undef
2377         ],
2378         [#Rule 98
2379                  'listtext', 3,
2380 sub
2381 #line 325 "pidl/idl.yp"
2382 { "$_[1] $_[3]" }
2383         ],
2384         [#Rule 99
2385                  'commalisttext', 1, undef
2386         ],
2387         [#Rule 100
2388                  'commalisttext', 3,
2389 sub
2390 #line 330 "pidl/idl.yp"
2391 { "$_[1],$_[3]" }
2392         ],
2393         [#Rule 101
2394                  'anytext', 0,
2395 sub
2396 #line 334 "pidl/idl.yp"
2397 { "" }
2398         ],
2399         [#Rule 102
2400                  'anytext', 1, undef
2401         ],
2402         [#Rule 103
2403                  'anytext', 1, undef
2404         ],
2405         [#Rule 104
2406                  'anytext', 1, undef
2407         ],
2408         [#Rule 105
2409                  'anytext', 3,
2410 sub
2411 #line 336 "pidl/idl.yp"
2412 { "$_[1]$_[2]$_[3]" }
2413         ],
2414         [#Rule 106
2415                  'anytext', 3,
2416 sub
2417 #line 337 "pidl/idl.yp"
2418 { "$_[1]$_[2]$_[3]" }
2419         ],
2420         [#Rule 107
2421                  'anytext', 3,
2422 sub
2423 #line 338 "pidl/idl.yp"
2424 { "$_[1]$_[2]$_[3]" }
2425         ],
2426         [#Rule 108
2427                  'anytext', 3,
2428 sub
2429 #line 339 "pidl/idl.yp"
2430 { "$_[1]$_[2]$_[3]" }
2431         ],
2432         [#Rule 109
2433                  'anytext', 3,
2434 sub
2435 #line 340 "pidl/idl.yp"
2436 { "$_[1]$_[2]$_[3]" }
2437         ],
2438         [#Rule 110
2439                  'anytext', 3,
2440 sub
2441 #line 341 "pidl/idl.yp"
2442 { "$_[1]$_[2]$_[3]" }
2443         ],
2444         [#Rule 111
2445                  'anytext', 3,
2446 sub
2447 #line 342 "pidl/idl.yp"
2448 { "$_[1]$_[2]$_[3]" }
2449         ],
2450         [#Rule 112
2451                  'anytext', 3,
2452 sub
2453 #line 343 "pidl/idl.yp"
2454 { "$_[1]$_[2]$_[3]" }
2455         ],
2456         [#Rule 113
2457                  'anytext', 3,
2458 sub
2459 #line 344 "pidl/idl.yp"
2460 { "$_[1]$_[2]$_[3]" }
2461         ],
2462         [#Rule 114
2463                  'anytext', 3,
2464 sub
2465 #line 345 "pidl/idl.yp"
2466 { "$_[1]$_[2]$_[3]" }
2467         ],
2468         [#Rule 115
2469                  'anytext', 3,
2470 sub
2471 #line 346 "pidl/idl.yp"
2472 { "$_[1]$_[2]$_[3]" }
2473         ],
2474         [#Rule 116
2475                  'anytext', 3,
2476 sub
2477 #line 347 "pidl/idl.yp"
2478 { "$_[1]$_[2]$_[3]" }
2479         ],
2480         [#Rule 117
2481                  'anytext', 3,
2482 sub
2483 #line 348 "pidl/idl.yp"
2484 { "$_[1]$_[2]$_[3]" }
2485         ],
2486         [#Rule 118
2487                  'anytext', 5,
2488 sub
2489 #line 349 "pidl/idl.yp"
2490 { "$_[1]$_[2]$_[3]$_[4]$_[5]" }
2491         ],
2492         [#Rule 119
2493                  'anytext', 5,
2494 sub
2495 #line 350 "pidl/idl.yp"
2496 { "$_[1]$_[2]$_[3]$_[4]$_[5]" }
2497         ],
2498         [#Rule 120
2499                  'identifier', 1, undef
2500         ],
2501         [#Rule 121
2502                  'optional_identifier', 1, undef
2503         ],
2504         [#Rule 122
2505                  'optional_identifier', 0, undef
2506         ],
2507         [#Rule 123
2508                  'constant', 1, undef
2509         ],
2510         [#Rule 124
2511                  'text', 1,
2512 sub
2513 #line 364 "pidl/idl.yp"
2514 { "\"$_[1]\"" }
2515         ],
2516         [#Rule 125
2517                  'optional_semicolon', 0, undef
2518         ],
2519         [#Rule 126
2520                  'optional_semicolon', 1, undef
2521         ]
2522 ],
2523                                   @_);
2524     bless($self,$class);
2525 }
2526
2527 #line 375 "pidl/idl.yp"
2528
2529
2530 use Parse::Pidl qw(error);
2531
2532 #####################################################################
2533 # flatten an array of hashes into a single hash
2534 sub FlattenHash($) 
2535
2536     my $a = shift;
2537     my %b;
2538     for my $d (@{$a}) {
2539         for my $k (keys %{$d}) {
2540             $b{$k} = $d->{$k};
2541         }
2542     }
2543     return \%b;
2544 }
2545
2546
2547
2548 #####################################################################
2549 # traverse a perl data structure removing any empty arrays or
2550 # hashes and any hash elements that map to undef
2551 sub CleanData($)
2552 {
2553     sub CleanData($);
2554     my($v) = shift;
2555         return undef if (not defined($v));
2556     if (ref($v) eq "ARRAY") {
2557         foreach my $i (0 .. $#{$v}) {
2558             CleanData($v->[$i]);
2559             if (ref($v->[$i]) eq "ARRAY" && $#{$v->[$i]}==-1) { 
2560                     $v->[$i] = undef; 
2561                     next; 
2562             }
2563         }
2564         # this removes any undefined elements from the array
2565         @{$v} = grep { defined $_ } @{$v};
2566     } elsif (ref($v) eq "HASH") {
2567         foreach my $x (keys %{$v}) {
2568             CleanData($v->{$x});
2569             if (!defined $v->{$x}) { delete($v->{$x}); next; }
2570             if (ref($v->{$x}) eq "ARRAY" && $#{$v->{$x}}==-1) { delete($v->{$x}); next; }
2571         }
2572     }
2573         return $v;
2574 }
2575
2576 sub _Error {
2577     if (exists $_[0]->YYData->{ERRMSG}) {
2578                 error($_[0]->YYData, $_[0]->YYData->{ERRMSG});
2579                 delete $_[0]->YYData->{ERRMSG};
2580                 return;
2581         };
2582         my $last_token = $_[0]->YYData->{LAST_TOKEN};
2583         
2584         error($_[0]->YYData, "Syntax error near '$last_token'");
2585 }
2586
2587 sub _Lexer($)
2588 {
2589         my($parser)=shift;
2590
2591     $parser->YYData->{INPUT} or return('',undef);
2592
2593 again:
2594         $parser->YYData->{INPUT} =~ s/^[ \t]*//;
2595
2596         for ($parser->YYData->{INPUT}) {
2597                 if (/^\#/) {
2598                         if (s/^\# (\d+) \"(.*?)\"( \d+|)//) {
2599                                 $parser->YYData->{LINE} = $1-1;
2600                                 $parser->YYData->{FILE} = $2;
2601                                 goto again;
2602                         }
2603                         if (s/^\#line (\d+) \"(.*?)\"( \d+|)//) {
2604                                 $parser->YYData->{LINE} = $1-1;
2605                                 $parser->YYData->{FILE} = $2;
2606                                 goto again;
2607                         }
2608                         if (s/^(\#.*)$//m) {
2609                                 goto again;
2610                         }
2611                 }
2612                 if (s/^(\n)//) {
2613                         $parser->YYData->{LINE}++;
2614                         goto again;
2615                 }
2616                 if (s/^\"(.*?)\"//) {
2617                         $parser->YYData->{LAST_TOKEN} = $1;
2618                         return('TEXT',$1); 
2619                 }
2620                 if (s/^(\d+)(\W|$)/$2/) {
2621                         $parser->YYData->{LAST_TOKEN} = $1;
2622                         return('CONSTANT',$1); 
2623                 }
2624                 if (s/^([\w_]+)//) {
2625                         $parser->YYData->{LAST_TOKEN} = $1;
2626                         if ($1 =~ 
2627                             /^(coclass|interface|const|typedef|declare|union
2628                               |struct|enum|bitmap|void|unsigned|signed|import|include
2629                                   |importlib)$/x) {
2630                                 return $1;
2631                         }
2632                         return('IDENTIFIER',$1);
2633                 }
2634                 if (s/^(.)//s) {
2635                         $parser->YYData->{LAST_TOKEN} = $1;
2636                         return($1,$1);
2637                 }
2638         }
2639 }
2640
2641 sub parse_string
2642 {
2643         my ($data,$filename) = @_;
2644
2645         my $self = new Parse::Pidl::IDL;
2646
2647     $self->YYData->{FILE} = $filename;
2648     $self->YYData->{INPUT} = $data;
2649     $self->YYData->{LINE} = 0;
2650     $self->YYData->{LAST_TOKEN} = "NONE";
2651
2652         my $idl = $self->YYParse( yylex => \&_Lexer, yyerror => \&_Error );
2653
2654         return CleanData($idl);
2655 }
2656
2657 sub parse_file($$)
2658 {
2659         my ($filename,$incdirs) = @_;
2660
2661         my $saved_delim = $/;
2662         undef $/;
2663         my $cpp = $ENV{CPP};
2664         if (! defined $cpp) {
2665                 $cpp = "cpp";
2666         }
2667         my $includes = join('',map { " -I$_" } @$incdirs);
2668         my $data = `$cpp -D__PIDL__$includes -xc $filename`;
2669         $/ = $saved_delim;
2670
2671         return parse_string($data, $filename);
2672 }
2673
2674 1;