File Coverage

blib/lib/ExtUtils/XSpp/Grammar.pm
Criterion Covered Total %
statement 91 168 54.1
branch 35 74 47.3
condition 1 12 8.3
subroutine 13 25 52.0
pod 0 1 0.0
total 140 280 50.0


line stmt bran cond sub pod time code
1             ####################################################################
2             #
3             # This file was generated using Parse::Yapp version 1.21.
4             #
5             # Don't edit this file, use source file instead.
6             #
7             # ANY CHANGE MADE HERE WILL BE LOST !
8             #
9             ####################################################################
10             package ExtUtils::XSpp::Grammar;
11 21     21   114 use vars qw ( @ISA );
  21         30  
  21         1041  
12 21     21   125 use strict;
  21         28  
  21         1035  
13              
14             @ISA= qw ( ExtUtils::XSpp::Grammar::YappDriver );
15             #Included Parse/Yapp/Driver.pm file----------------------------------------
16             {
17             #
18             # Module ExtUtils::XSpp::Grammar::YappDriver
19             #
20             # This module is part of the Parse::Yapp package available on your
21             # nearest CPAN
22             #
23             # Any use of this module in a standalone parser make the included
24             # text under the same copyright as the Parse::Yapp module itself.
25             #
26             # This notice should remain unchanged.
27             #
28             # Copyright © 1998, 1999, 2000, 2001, Francois Desarmenien.
29             # Copyright © 2017 William N. Braswell, Jr.
30             # (see the pod text in Parse::Yapp module for use and distribution rights)
31             #
32              
33             package ExtUtils::XSpp::Grammar::YappDriver;
34              
35             require 5.004;
36              
37 21     21   73 use strict;
  21         32  
  21         399  
38              
39 21     21   57 use vars qw ( $VERSION $COMPATIBLE $FILENAME );
  21         58  
  21         1244  
40              
41             # CORRELATION #py001: $VERSION must be changed in both Parse::Yapp & ExtUtils::XSpp::Grammar::YappDriver
42             $VERSION = '1.21';
43             $COMPATIBLE = '0.07';
44             $FILENAME=__FILE__;
45              
46 21     21   91 use Carp;
  21         42  
  21         17977  
47              
48             #Known parameters, all starting with YY (leading YY will be discarded)
49             my(%params)=(YYLEX => 'CODE', 'YYERROR' => 'CODE', YYVERSION => '',
50             YYRULES => 'ARRAY', YYSTATES => 'ARRAY', YYDEBUG => '');
51             #Mandatory parameters
52             my(@params)=('LEX','RULES','STATES');
53              
54             sub new {
55 86     86   295 my($class)=shift;
56 86         164 my($errst,$nberr,$token,$value,$check,$dotpos);
57 86         759 my($self)={ ERROR => \&_Error,
58             ERRST => \$errst,
59             NBERR => \$nberr,
60             TOKEN => \$token,
61             VALUE => \$value,
62             DOTPOS => \$dotpos,
63             STACK => [],
64             DEBUG => 0,
65             CHECK => \$check };
66              
67 86         346 _CheckParams( [], \%params, \@_, $self );
68              
69             exists($$self{VERSION})
70 86 50 33     797 and $$self{VERSION} < $COMPATIBLE
71             and croak "Yapp driver version $VERSION ".
72             "incompatible with version $$self{VERSION}:\n".
73             "Please recompile parser module.";
74              
75 86 50       166 ref($class)
76             and $class=ref($class);
77              
78 86         313 bless($self,$class);
79             }
80              
81             sub YYParse {
82 86     86   150 my($self)=shift;
83 86         120 my($retval);
84              
85 86         258 _CheckParams( \@params, \%params, \@_, $self );
86              
87 86 50       196 if($$self{DEBUG}) {
88 0         0 _DBLoad();
89 0         0 $retval = eval '$self->_DBParse()';#Do not create stab entry on compile
90 0 0       0 $@ and die $@;
91             }
92             else {
93 86         245 $retval = $self->_Parse();
94             }
95 86         764 $retval
96             }
97              
98             sub YYData {
99 9212     9212   9301 my($self)=shift;
100              
101             exists($$self{USER})
102 9212 100       11946 or $$self{USER}={};
103              
104 9212         19219 $$self{USER};
105            
106             }
107              
108             sub YYErrok {
109 0     0   0 my($self)=shift;
110              
111 0         0 ${$$self{ERRST}}=0;
  0         0  
112 0         0 undef;
113             }
114              
115             sub YYNberr {
116 0     0   0 my($self)=shift;
117              
118 0         0 ${$$self{NBERR}};
  0         0  
119             }
120              
121             sub YYRecovering {
122 0     0   0 my($self)=shift;
123              
124 0         0 ${$$self{ERRST}} != 0;
  0         0  
125             }
126              
127             sub YYAbort {
128 0     0   0 my($self)=shift;
129              
130 0         0 ${$$self{CHECK}}='ABORT';
  0         0  
131 0         0 undef;
132             }
133              
134             sub YYAccept {
135 86     86   122 my($self)=shift;
136              
137 86         103 ${$$self{CHECK}}='ACCEPT';
  86         190  
138 86         118 undef;
139             }
140              
141             sub YYError {
142 0     0   0 my($self)=shift;
143              
144 0         0 ${$$self{CHECK}}='ERROR';
  0         0  
145 0         0 undef;
146             }
147              
148             sub YYSemval {
149 0     0   0 my($self)=shift;
150 0         0 my($index)= $_[0] - ${$$self{DOTPOS}} - 1;
  0         0  
151              
152             $index < 0
153 0         0 and -$index <= @{$$self{STACK}}
154 0 0 0     0 and return $$self{STACK}[$index][1];
155              
156 0         0 undef; #Invalid index
157             }
158              
159             sub YYCurtok {
160 0     0   0 my($self)=shift;
161              
162             @_
163 0 0       0 and ${$$self{TOKEN}}=$_[0];
  0         0  
164 0         0 ${$$self{TOKEN}};
  0         0  
165             }
166              
167             sub YYCurval {
168 0     0   0 my($self)=shift;
169              
170             @_
171 0 0       0 and ${$$self{VALUE}}=$_[0];
  0         0  
172 0         0 ${$$self{VALUE}};
  0         0  
173             }
174              
175             sub YYExpect {
176 0     0   0 my($self)=shift;
177              
178 0         0 keys %{$self->{STATES}[$self->{STACK}[-1][0]]{ACTIONS}}
  0         0  
179             }
180              
181             sub YYLexer {
182 0     0   0 my($self)=shift;
183              
184 0         0 $$self{LEX};
185             }
186              
187              
188             #################
189             # Private stuff #
190             #################
191              
192              
193             sub _CheckParams {
194 172     172   364 my($mandatory,$checklist,$inarray,$outhash)=@_;
195 172         229 my($prm,$value);
196 172         233 my($prmlst)={};
197              
198 172         579 while(($prm,$value)=splice(@$inarray,0,2)) {
199 516         733 $prm=uc($prm);
200 516 50       907 exists($$checklist{$prm})
201             or croak("Unknow parameter '$prm'");
202 516 50       955 ref($value) eq $$checklist{$prm}
203             or croak("Invalid value for parameter '$prm'");
204 516         857 $prm=unpack('@2A*',$prm);
205 516         1389 $$outhash{$prm}=$value;
206             }
207 172         434 for (@$mandatory) {
208 258 50       542 exists($$outhash{$_})
209             or croak("Missing mandatory parameter '".lc($_)."'");
210             }
211             }
212              
213             sub _Error {
214 0     0   0 print "Parse error.\n";
215             }
216              
217             sub _DBLoad {
218             {
219 21     21   136 no strict 'refs';
  21     0   29  
  21         134458  
  0         0  
220              
221 0         0 exists(${__PACKAGE__.'::'}{_DBParse})#Already loaded ?
222 0 0       0 and return;
223             }
224 0         0 my($fname)=__FILE__;
225 0         0 my(@drv);
226 0 0       0 open(DRV,"<$fname") or die "Report this as a BUG: Cannot open $fname";
227 0         0 while() {
228             /^\s*sub\s+_Parse\s*{\s*$/ .. /^\s*}\s*#\s*_Parse\s*$/
229 0 0       0 and do {
230 0         0 s/^#DBG>//;
231 0         0 push(@drv,$_);
232             }
233             }
234 0         0 close(DRV);
235              
236 0         0 $drv[0]=~s/_P/_DBP/;
237 0         0 eval join('',@drv);
238             }
239              
240             #Note that for loading debugging version of the driver,
241             #this file will be parsed from 'sub _Parse' up to '}#_Parse' inclusive.
242             #So, DO NOT remove comment at end of sub !!!
243             sub _Parse {
244 86     86   134 my($self)=shift;
245              
246             my($rules,$states,$lex,$error)
247 86         230 = @$self{ 'RULES', 'STATES', 'LEX', 'ERROR' };
248             my($errstatus,$nberror,$token,$value,$stack,$check,$dotpos)
249 86         231 = @$self{ 'ERRST', 'NBERR', 'TOKEN', 'VALUE', 'STACK', 'CHECK', 'DOTPOS' };
250              
251             #DBG> my($debug)=$$self{DEBUG};
252             #DBG> my($dbgerror)=0;
253              
254             #DBG> my($ShowCurToken) = sub {
255             #DBG> my($tok)='>';
256             #DBG> for (split('',$$token)) {
257             #DBG> $tok.= (ord($_) < 32 or ord($_) > 126)
258             #DBG> ? sprintf('<%02X>',ord($_))
259             #DBG> : $_;
260             #DBG> }
261             #DBG> $tok.='<';
262             #DBG> };
263              
264 86         135 $$errstatus=0;
265 86         120 $$nberror=0;
266 86         160 ($$token,$$value)=(undef,undef);
267 86         183 @$stack=( [ 0, undef ] );
268 86         140 $$check='';
269              
270 86         92 while(1) {
271 7828         7887 my($actions,$act,$stateno);
272              
273 7828         7974 $stateno=$$stack[-1][0];
274 7828         7751 $actions=$$states[$stateno];
275              
276             #DBG> print STDERR ('-' x 40),"\n";
277             #DBG> $debug & 0x2
278             #DBG> and print STDERR "In state $stateno:\n";
279             #DBG> $debug & 0x08
280             #DBG> and print STDERR "Stack:[".
281             #DBG> join(',',map { $$_[0] } @$stack).
282             #DBG> "]\n";
283              
284              
285 7828 100       9588 if (exists($$actions{ACTIONS})) {
286              
287             defined($$token)
288 4100 100       5527 or do {
289 2972         4235 ($$token,$$value)=&$lex($self);
290             #DBG> $debug & 0x01
291             #DBG> and print STDERR "Need token. Got ".&$ShowCurToken."\n";
292             };
293              
294             $act= exists($$actions{ACTIONS}{$$token})
295             ? $$actions{ACTIONS}{$$token}
296             : exists($$actions{DEFAULT})
297             ? $$actions{DEFAULT}
298 4100 50       7974 : undef;
    100          
299             }
300             else {
301 3728         3857 $act=$$actions{DEFAULT};
302             #DBG> $debug & 0x01
303             #DBG> and print STDERR "Don't need token.\n";
304             }
305              
306             defined($act)
307 7828 50       9626 and do {
308              
309             $act > 0
310 7828 100       9551 and do { #shift
311              
312             #DBG> $debug & 0x04
313             #DBG> and print STDERR "Shift and go to state $act.\n";
314              
315             $$errstatus
316 2972 50       3811 and do {
317 0         0 --$$errstatus;
318              
319             #DBG> $debug & 0x10
320             #DBG> and $dbgerror
321             #DBG> and $$errstatus == 0
322             #DBG> and do {
323             #DBG> print STDERR "**End of Error recovery.\n";
324             #DBG> $dbgerror=0;
325             #DBG> };
326             };
327              
328              
329 2972         4401 push(@$stack,[ $act, $$value ]);
330              
331 2972 100       4722 $$token ne '' #Don't eat the eof
332             and $$token=$$value=undef;
333 2972         3295 next;
334             };
335              
336             #reduce
337 4856         4968 my($lhs,$len,$code,@sempar,$semval);
338 4856         4448 ($lhs,$len,$code)=@{$$rules[-$act]};
  4856         6937  
339              
340             #DBG> $debug & 0x04
341             #DBG> and $act
342             #DBG> and print STDERR "Reduce using rule ".-$act." ($lhs,$len): ";
343              
344 4856 100       6431 $act
345             or $self->YYAccept();
346              
347 4856         4648 $$dotpos=$len;
348              
349             unpack('A1',$lhs) eq '@' #In line rule
350 4856 50       7720 and do {
351 0 0       0 $lhs =~ /^\@[0-9]+\-([0-9]+)$/
352             or die "In line rule name '$lhs' ill formed: ".
353             "report it as a BUG.\n";
354 0         0 $$dotpos = $1;
355             };
356              
357             @sempar = $$dotpos
358 4856 100       7985 ? map { $$_[1] } @$stack[ -$$dotpos .. -1 ]
  7742         10522  
359             : ();
360              
361 4856 100       8926 $semval = $code ? &$code( $self, @sempar )
    100          
362             : @sempar ? $sempar[0] : undef;
363              
364 4856         6661 splice(@$stack,-$len,$len);
365              
366             $$check eq 'ACCEPT'
367 4856 100       7114 and do {
368              
369             #DBG> $debug & 0x04
370             #DBG> and print STDERR "Accept.\n";
371              
372 86         301 return($semval);
373             };
374              
375             $$check eq 'ABORT'
376 4770 50       6068 and do {
377              
378             #DBG> $debug & 0x04
379             #DBG> and print STDERR "Abort.\n";
380              
381 0         0 return(undef);
382              
383             };
384              
385             #DBG> $debug & 0x04
386             #DBG> and print STDERR "Back to state $$stack[-1][0], then ";
387              
388             $$check eq 'ERROR'
389 4770 50       6049 or do {
390             #DBG> $debug & 0x04
391             #DBG> and print STDERR
392             #DBG> "go to state $$states[$$stack[-1][0]]{GOTOS}{$lhs}.\n";
393              
394             #DBG> $debug & 0x10
395             #DBG> and $dbgerror
396             #DBG> and $$errstatus == 0
397             #DBG> and do {
398             #DBG> print STDERR "**End of Error recovery.\n";
399             #DBG> $dbgerror=0;
400             #DBG> };
401              
402             push(@$stack,
403 4770         8330 [ $$states[$$stack[-1][0]]{GOTOS}{$lhs}, $semval ]);
404 4770         5053 $$check='';
405 4770         6639 next;
406             };
407              
408             #DBG> $debug & 0x04
409             #DBG> and print STDERR "Forced Error recovery.\n";
410              
411 0         0 $$check='';
412              
413             };
414              
415             #Error
416             $$errstatus
417 0 0       0 or do {
418              
419 0         0 $$errstatus = 1;
420 0         0 &$error($self);
421 0 0       0 $$errstatus # if 0, then YYErrok has been called
422             or next; # so continue parsing
423              
424             #DBG> $debug & 0x10
425             #DBG> and do {
426             #DBG> print STDERR "**Entering Error recovery.\n";
427             #DBG> ++$dbgerror;
428             #DBG> };
429              
430 0         0 ++$$nberror;
431              
432             };
433              
434             $$errstatus == 3 #The next token is not valid: discard it
435 0 0       0 and do {
436             $$token eq '' # End of input: no hope
437 0 0       0 and do {
438             #DBG> $debug & 0x10
439             #DBG> and print STDERR "**At eof: aborting.\n";
440 0         0 return(undef);
441             };
442              
443             #DBG> $debug & 0x10
444             #DBG> and print STDERR "**Dicard invalid token ".&$ShowCurToken.".\n";
445              
446 0         0 $$token=$$value=undef;
447             };
448              
449 0         0 $$errstatus=3;
450              
451 0   0     0 while( @$stack
      0        
452             and ( not exists($$states[$$stack[-1][0]]{ACTIONS})
453             or not exists($$states[$$stack[-1][0]]{ACTIONS}{error})
454             or $$states[$$stack[-1][0]]{ACTIONS}{error} <= 0)) {
455              
456             #DBG> $debug & 0x10
457             #DBG> and print STDERR "**Pop state $$stack[-1][0].\n";
458              
459 0         0 pop(@$stack);
460             }
461              
462             @$stack
463 0 0       0 or do {
464              
465             #DBG> $debug & 0x10
466             #DBG> and print STDERR "**No state left on stack: aborting.\n";
467              
468 0         0 return(undef);
469             };
470              
471             #shift the error token
472              
473             #DBG> $debug & 0x10
474             #DBG> and print STDERR "**Shift \$error token and go to state ".
475             #DBG> $$states[$$stack[-1][0]]{ACTIONS}{error}.
476             #DBG> ".\n";
477              
478 0         0 push(@$stack, [ $$states[$$stack[-1][0]]{ACTIONS}{error}, undef ]);
479              
480             }
481              
482             #never reached
483 0         0 croak("Error in driver logic. Please, report it as a BUG");
484              
485             }#_Parse
486             #DO NOT remove comment
487              
488             1;
489              
490             }
491             #End of include--------------------------------------------------
492              
493              
494              
495              
496             sub new {
497 86     86 0 148 my($class)=shift;
498 86 50       258 ref($class)
499             and $class=ref($class);
500              
501             my($self)=$class->SUPER::new( yyversion => '1.21',
502             yystates =>
503             [
504             {#State 0
505             ACTIONS => {
506             "enum" => 4,
507             'p_include' => 19,
508             'COMMENT' => 20,
509             'p_typemap' => 47,
510             'p_name' => 34,
511             "class" => 32,
512             'RAW_CODE' => 3,
513             'p_exceptionmap' => 17,
514             'p__type' => 14,
515             'p_file' => 1,
516             'PREPROCESSOR' => 27,
517             "void" => 29,
518             "const" => 24,
519             "char" => 13,
520             "short" => 42,
521             "int" => 54,
522             'OPSPECIAL' => 40,
523             'p_package' => 7,
524             'p_module' => 51,
525             'ID' => 6,
526             'p_loadplugin' => 49,
527             "unsigned" => 50,
528             'p_any' => 48,
529             "long" => 37
530             },
531             GOTOS => {
532             'basic_type' => 52,
533             'typemap' => 23,
534             'perc_include' => 22,
535             'decorate_class' => 21,
536             'perc_name' => 53,
537             'class' => 45,
538             'directive' => 44,
539             'perc_loadplugin' => 43,
540             'type' => 12,
541             'raw' => 18,
542             'class_name' => 46,
543             'perc_module' => 16,
544             'type_name' => 15,
545             'nconsttype' => 38,
546             'function_decl' => 39,
547             'special_block' => 5,
548             'class_decl' => 11,
549             'template' => 41,
550             'perc_package' => 10,
551             'perc_file' => 9,
552             'function' => 8,
553             'exceptionmap' => 30,
554             'top_list' => 26,
555             '_top' => 28,
556             'looks_like_function' => 25,
557             'enum' => 36,
558             'special_block_start' => 35,
559             'perc_any' => 33,
560             'looks_like_renamed_function' => 31,
561             'top' => 2
562             }
563             },
564             {#State 1
565             ACTIONS => {
566             'OPCURLY' => 55
567             }
568             },
569             {#State 2
570             DEFAULT => -1
571             },
572             {#State 3
573             DEFAULT => -26
574             },
575             {#State 4
576             ACTIONS => {
577             'OPCURLY' => 57,
578             'ID' => 56
579             }
580             },
581             {#State 5
582             DEFAULT => -29
583             },
584             {#State 6
585             ACTIONS => {
586             'DCOLON' => 59
587             },
588             DEFAULT => -147,
589             GOTOS => {
590             'class_suffix' => 58
591             }
592             },
593             {#State 7
594             ACTIONS => {
595             'OPCURLY' => 60
596             }
597             },
598             {#State 8
599             DEFAULT => -9
600             },
601             {#State 9
602             ACTIONS => {
603             'SEMICOLON' => 61
604             }
605             },
606             {#State 10
607             ACTIONS => {
608             'SEMICOLON' => 62
609             }
610             },
611             {#State 11
612             ACTIONS => {
613             'SEMICOLON' => 63
614             }
615             },
616             {#State 12
617             ACTIONS => {
618             'ID' => 64
619             }
620             },
621             {#State 13
622             DEFAULT => -138
623             },
624             {#State 14
625             ACTIONS => {
626             'OPCURLY' => 65
627             }
628             },
629             {#State 15
630             DEFAULT => -131
631             },
632             {#State 16
633             ACTIONS => {
634             'SEMICOLON' => 66
635             }
636             },
637             {#State 17
638             ACTIONS => {
639             'OPCURLY' => 67
640             }
641             },
642             {#State 18
643             DEFAULT => -5
644             },
645             {#State 19
646             ACTIONS => {
647             'OPCURLY' => 68
648             }
649             },
650             {#State 20
651             DEFAULT => -27
652             },
653             {#State 21
654             ACTIONS => {
655             'SEMICOLON' => 69
656             }
657             },
658             {#State 22
659             ACTIONS => {
660             'SEMICOLON' => 70
661             }
662             },
663             {#State 23
664             DEFAULT => -16
665             },
666             {#State 24
667             ACTIONS => {
668             'ID' => 6,
669             "char" => 13,
670             "long" => 37,
671             "void" => 29,
672             "unsigned" => 50,
673             "int" => 54,
674             "short" => 42
675             },
676             GOTOS => {
677             'type_name' => 15,
678             'nconsttype' => 71,
679             'class_name' => 46,
680             'basic_type' => 52,
681             'template' => 41
682             }
683             },
684             {#State 25
685             DEFAULT => -86
686             },
687             {#State 26
688             ACTIONS => {
689             'p_package' => 7,
690             'ID' => 6,
691             "long" => 37,
692             "short" => 42,
693             'OPSPECIAL' => 40,
694             'p_file' => 1,
695             "void" => 29,
696             'PREPROCESSOR' => 27,
697             "const" => 24,
698             "enum" => 4,
699             'p_name' => 34,
700             "class" => 32,
701             'RAW_CODE' => 3,
702             '' => 73,
703             'p_module' => 51,
704             "unsigned" => 50,
705             'p_loadplugin' => 49,
706             'p_any' => 48,
707             "int" => 54,
708             "char" => 13,
709             'COMMENT' => 20,
710             'p_include' => 19,
711             'p_typemap' => 47,
712             'p_exceptionmap' => 17
713             },
714             GOTOS => {
715             '_top' => 28,
716             'looks_like_function' => 25,
717             'exceptionmap' => 30,
718             'perc_any' => 33,
719             'top' => 72,
720             'looks_like_renamed_function' => 31,
721             'enum' => 36,
722             'special_block_start' => 35,
723             'special_block' => 5,
724             'nconsttype' => 38,
725             'function_decl' => 39,
726             'perc_file' => 9,
727             'function' => 8,
728             'template' => 41,
729             'class_decl' => 11,
730             'perc_package' => 10,
731             'type' => 12,
732             'class' => 45,
733             'perc_loadplugin' => 43,
734             'directive' => 44,
735             'class_name' => 46,
736             'type_name' => 15,
737             'perc_module' => 16,
738             'raw' => 18,
739             'perc_include' => 22,
740             'decorate_class' => 21,
741             'typemap' => 23,
742             'basic_type' => 52,
743             'perc_name' => 53
744             }
745             },
746             {#State 27
747             DEFAULT => -28
748             },
749             {#State 28
750             DEFAULT => -4
751             },
752             {#State 29
753             DEFAULT => -135
754             },
755             {#State 30
756             DEFAULT => -17
757             },
758             {#State 31
759             DEFAULT => -95,
760             GOTOS => {
761             'function_metadata' => 74
762             }
763             },
764             {#State 32
765             ACTIONS => {
766             'ID' => 6
767             },
768             GOTOS => {
769             'class_name' => 75
770             }
771             },
772             {#State 33
773             ACTIONS => {
774             'SEMICOLON' => 76
775             }
776             },
777             {#State 34
778             ACTIONS => {
779             'OPCURLY' => 77
780             }
781             },
782             {#State 35
783             ACTIONS => {
784             'CLSPECIAL' => 81,
785             'line' => 78
786             },
787             GOTOS => {
788             'special_block_end' => 79,
789             'lines' => 80
790             }
791             },
792             {#State 36
793             DEFAULT => -8
794             },
795             {#State 37
796             ACTIONS => {
797             "int" => 82
798             },
799             DEFAULT => -140
800             },
801             {#State 38
802             ACTIONS => {
803             'STAR' => 84,
804             'AMP' => 83
805             },
806             DEFAULT => -128
807             },
808             {#State 39
809             ACTIONS => {
810             'SEMICOLON' => 85
811             }
812             },
813             {#State 40
814             DEFAULT => -184
815             },
816             {#State 41
817             DEFAULT => -132
818             },
819             {#State 42
820             ACTIONS => {
821             "int" => 86
822             },
823             DEFAULT => -141
824             },
825             {#State 43
826             ACTIONS => {
827             'SEMICOLON' => 87
828             }
829             },
830             {#State 44
831             DEFAULT => -7
832             },
833             {#State 45
834             DEFAULT => -6
835             },
836             {#State 46
837             ACTIONS => {
838             'OPANG' => 88
839             },
840             DEFAULT => -133
841             },
842             {#State 47
843             ACTIONS => {
844             'OPCURLY' => 89
845             }
846             },
847             {#State 48
848             ACTIONS => {
849             'OPCURLY' => 90,
850             'OPSPECIAL' => 40
851             },
852             DEFAULT => -122,
853             GOTOS => {
854             'special_block_start' => 35,
855             'special_block' => 91
856             }
857             },
858             {#State 49
859             ACTIONS => {
860             'OPCURLY' => 92
861             }
862             },
863             {#State 50
864             ACTIONS => {
865             "char" => 13,
866             "long" => 37,
867             "int" => 54,
868             "short" => 42
869             },
870             DEFAULT => -136,
871             GOTOS => {
872             'basic_type' => 93
873             }
874             },
875             {#State 51
876             ACTIONS => {
877             'OPCURLY' => 94
878             }
879             },
880             {#State 52
881             DEFAULT => -134
882             },
883             {#State 53
884             ACTIONS => {
885             "short" => 42,
886             "int" => 54,
887             "class" => 32,
888             'ID' => 6,
889             "unsigned" => 50,
890             "void" => 29,
891             "const" => 24,
892             "long" => 37,
893             "char" => 13
894             },
895             GOTOS => {
896             'basic_type' => 52,
897             'class_decl' => 96,
898             'template' => 41,
899             'type' => 12,
900             'type_name' => 15,
901             'class_name' => 46,
902             'nconsttype' => 38,
903             'looks_like_function' => 95
904             }
905             },
906             {#State 54
907             DEFAULT => -139
908             },
909             {#State 55
910             ACTIONS => {
911             'ID' => 98,
912             'DASH' => 97
913             },
914             GOTOS => {
915             'file_name' => 99
916             }
917             },
918             {#State 56
919             ACTIONS => {
920             'OPCURLY' => 100
921             }
922             },
923             {#State 57
924             DEFAULT => -32,
925             GOTOS => {
926             'enum_element_list' => 101
927             }
928             },
929             {#State 58
930             ACTIONS => {
931             'DCOLON' => 102
932             },
933             DEFAULT => -148
934             },
935             {#State 59
936             ACTIONS => {
937             'ID' => 103
938             }
939             },
940             {#State 60
941             ACTIONS => {
942             'ID' => 6
943             },
944             GOTOS => {
945             'class_name' => 104
946             }
947             },
948             {#State 61
949             DEFAULT => -12
950             },
951             {#State 62
952             DEFAULT => -11
953             },
954             {#State 63
955             DEFAULT => -38
956             },
957             {#State 64
958             ACTIONS => {
959             'OPPAR' => 105
960             }
961             },
962             {#State 65
963             ACTIONS => {
964             "short" => 42,
965             "int" => 54,
966             'ID' => 6,
967             "unsigned" => 50,
968             "void" => 29,
969             "long" => 37,
970             "char" => 13,
971             "const" => 24
972             },
973             GOTOS => {
974             'type' => 106,
975             'type_name' => 15,
976             'class_name' => 46,
977             'nconsttype' => 38,
978             'basic_type' => 52,
979             'template' => 41
980             }
981             },
982             {#State 66
983             DEFAULT => -10
984             },
985             {#State 67
986             ACTIONS => {
987             'ID' => 107
988             }
989             },
990             {#State 68
991             ACTIONS => {
992             'ID' => 98,
993             'DASH' => 97
994             },
995             GOTOS => {
996             'file_name' => 108
997             }
998             },
999             {#State 69
1000             DEFAULT => -39
1001             },
1002             {#State 70
1003             DEFAULT => -14
1004             },
1005             {#State 71
1006             ACTIONS => {
1007             'STAR' => 84,
1008             'AMP' => 83
1009             },
1010             DEFAULT => -127
1011             },
1012             {#State 72
1013             DEFAULT => -2
1014             },
1015             {#State 73
1016             DEFAULT => 0
1017             },
1018             {#State 74
1019             ACTIONS => {
1020             'p_catch' => 112,
1021             'p_postcall' => 113,
1022             'p_any' => 48,
1023             'p_alias' => 118,
1024             'p_cleanup' => 116,
1025             'p_code' => 120
1026             },
1027             DEFAULT => -88,
1028             GOTOS => {
1029             'perc_cleanup' => 111,
1030             'perc_postcall' => 110,
1031             'perc_catch' => 115,
1032             'perc_any' => 114,
1033             '_function_metadata' => 119,
1034             'perc_alias' => 117,
1035             'perc_code' => 109
1036             }
1037             },
1038             {#State 75
1039             ACTIONS => {
1040             'COLON' => 121
1041             },
1042             DEFAULT => -47,
1043             GOTOS => {
1044             'base_classes' => 122
1045             }
1046             },
1047             {#State 76
1048             DEFAULT => -15
1049             },
1050             {#State 77
1051             ACTIONS => {
1052             'ID' => 6
1053             },
1054             GOTOS => {
1055             'class_name' => 123
1056             }
1057             },
1058             {#State 78
1059             DEFAULT => -186
1060             },
1061             {#State 79
1062             DEFAULT => -183
1063             },
1064             {#State 80
1065             ACTIONS => {
1066             'line' => 124,
1067             'CLSPECIAL' => 81
1068             },
1069             GOTOS => {
1070             'special_block_end' => 125
1071             }
1072             },
1073             {#State 81
1074             DEFAULT => -185
1075             },
1076             {#State 82
1077             DEFAULT => -142
1078             },
1079             {#State 83
1080             DEFAULT => -130
1081             },
1082             {#State 84
1083             DEFAULT => -129
1084             },
1085             {#State 85
1086             DEFAULT => -40
1087             },
1088             {#State 86
1089             DEFAULT => -143
1090             },
1091             {#State 87
1092             DEFAULT => -13
1093             },
1094             {#State 88
1095             ACTIONS => {
1096             "const" => 24,
1097             "long" => 37,
1098             "char" => 13,
1099             "unsigned" => 50,
1100             "void" => 29,
1101             'ID' => 6,
1102             "int" => 54,
1103             "short" => 42
1104             },
1105             GOTOS => {
1106             'class_name' => 46,
1107             'type_name' => 15,
1108             'type_list' => 127,
1109             'template' => 41,
1110             'nconsttype' => 38,
1111             'type' => 126,
1112             'basic_type' => 52
1113             }
1114             },
1115             {#State 89
1116             ACTIONS => {
1117             'ID' => 6,
1118             "long" => 37,
1119             "char" => 13,
1120             "const" => 24,
1121             "unsigned" => 50,
1122             "void" => 29,
1123             "int" => 54,
1124             "short" => 42
1125             },
1126             GOTOS => {
1127             'type_name' => 15,
1128             'type' => 128,
1129             'nconsttype' => 38,
1130             'class_name' => 46,
1131             'basic_type' => 52,
1132             'template' => 41
1133             }
1134             },
1135             {#State 90
1136             ACTIONS => {
1137             'p_any' => 129,
1138             'p_name' => 34,
1139             'ID' => 133
1140             },
1141             GOTOS => {
1142             'perc_name' => 130,
1143             'perc_any_args' => 132,
1144             'perc_any_arg' => 131
1145             }
1146             },
1147             {#State 91
1148             DEFAULT => -24,
1149             GOTOS => {
1150             'mixed_blocks' => 134
1151             }
1152             },
1153             {#State 92
1154             ACTIONS => {
1155             'ID' => 6
1156             },
1157             GOTOS => {
1158             'class_name' => 135
1159             }
1160             },
1161             {#State 93
1162             DEFAULT => -137
1163             },
1164             {#State 94
1165             ACTIONS => {
1166             'ID' => 6
1167             },
1168             GOTOS => {
1169             'class_name' => 136
1170             }
1171             },
1172             {#State 95
1173             DEFAULT => -87
1174             },
1175             {#State 96
1176             DEFAULT => -43
1177             },
1178             {#State 97
1179             DEFAULT => -153
1180             },
1181             {#State 98
1182             ACTIONS => {
1183             'DOT' => 137,
1184             'SLASH' => 138
1185             }
1186             },
1187             {#State 99
1188             ACTIONS => {
1189             'CLCURLY' => 139
1190             }
1191             },
1192             {#State 100
1193             DEFAULT => -32,
1194             GOTOS => {
1195             'enum_element_list' => 140
1196             }
1197             },
1198             {#State 101
1199             ACTIONS => {
1200             'CLCURLY' => 142,
1201             'OPSPECIAL' => 40,
1202             'RAW_CODE' => 3,
1203             'COMMENT' => 20,
1204             'PREPROCESSOR' => 27,
1205             'ID' => 143
1206             },
1207             GOTOS => {
1208             'raw' => 141,
1209             'special_block_start' => 35,
1210             'enum_element' => 144,
1211             'special_block' => 5
1212             }
1213             },
1214             {#State 102
1215             ACTIONS => {
1216             'ID' => 145
1217             }
1218             },
1219             {#State 103
1220             DEFAULT => -151
1221             },
1222             {#State 104
1223             ACTIONS => {
1224             'CLCURLY' => 146
1225             }
1226             },
1227             {#State 105
1228             ACTIONS => {
1229             "int" => 54,
1230             "short" => 42,
1231             "long" => 37,
1232             "char" => 13,
1233             "const" => 24,
1234             "unsigned" => 50,
1235             "void" => 151,
1236             'ID' => 6
1237             },
1238             DEFAULT => -160,
1239             GOTOS => {
1240             'arg_list' => 150,
1241             'nonvoid_arg_list' => 149,
1242             'template' => 41,
1243             'basic_type' => 52,
1244             'class_name' => 46,
1245             'nconsttype' => 38,
1246             'type' => 147,
1247             'argument' => 148,
1248             'type_name' => 15
1249             }
1250             },
1251             {#State 106
1252             ACTIONS => {
1253             'CLCURLY' => 152
1254             }
1255             },
1256             {#State 107
1257             ACTIONS => {
1258             'CLCURLY' => 153
1259             }
1260             },
1261             {#State 108
1262             ACTIONS => {
1263             'CLCURLY' => 154
1264             }
1265             },
1266             {#State 109
1267             DEFAULT => -102
1268             },
1269             {#State 110
1270             DEFAULT => -104
1271             },
1272             {#State 111
1273             DEFAULT => -103
1274             },
1275             {#State 112
1276             ACTIONS => {
1277             'OPCURLY' => 155
1278             }
1279             },
1280             {#State 113
1281             ACTIONS => {
1282             'OPSPECIAL' => 40
1283             },
1284             GOTOS => {
1285             'special_block_start' => 35,
1286             'special_block' => 156
1287             }
1288             },
1289             {#State 114
1290             DEFAULT => -107
1291             },
1292             {#State 115
1293             DEFAULT => -105
1294             },
1295             {#State 116
1296             ACTIONS => {
1297             'OPSPECIAL' => 40
1298             },
1299             GOTOS => {
1300             'special_block' => 157,
1301             'special_block_start' => 35
1302             }
1303             },
1304             {#State 117
1305             DEFAULT => -106
1306             },
1307             {#State 118
1308             ACTIONS => {
1309             'OPCURLY' => 158
1310             }
1311             },
1312             {#State 119
1313             DEFAULT => -94
1314             },
1315             {#State 120
1316             ACTIONS => {
1317             'OPSPECIAL' => 40
1318             },
1319             GOTOS => {
1320             'special_block_start' => 35,
1321             'special_block' => 159
1322             }
1323             },
1324             {#State 121
1325             ACTIONS => {
1326             "private" => 163,
1327             "protected" => 161,
1328             "public" => 160
1329             },
1330             GOTOS => {
1331             'base_class' => 162
1332             }
1333             },
1334             {#State 122
1335             ACTIONS => {
1336             'COMMA' => 164
1337             },
1338             DEFAULT => -55,
1339             GOTOS => {
1340             'class_metadata' => 165
1341             }
1342             },
1343             {#State 123
1344             ACTIONS => {
1345             'CLCURLY' => 166
1346             }
1347             },
1348             {#State 124
1349             DEFAULT => -187
1350             },
1351             {#State 125
1352             DEFAULT => -182
1353             },
1354             {#State 126
1355             DEFAULT => -145
1356             },
1357             {#State 127
1358             ACTIONS => {
1359             'COMMA' => 168,
1360             'CLANG' => 167
1361             }
1362             },
1363             {#State 128
1364             ACTIONS => {
1365             'CLCURLY' => 169
1366             }
1367             },
1368             {#State 129
1369             DEFAULT => -24,
1370             GOTOS => {
1371             'mixed_blocks' => 170
1372             }
1373             },
1374             {#State 130
1375             ACTIONS => {
1376             'SEMICOLON' => 171
1377             }
1378             },
1379             {#State 131
1380             DEFAULT => -123
1381             },
1382             {#State 132
1383             ACTIONS => {
1384             'p_name' => 34,
1385             'p_any' => 129,
1386             'CLCURLY' => 173
1387             },
1388             GOTOS => {
1389             'perc_name' => 130,
1390             'perc_any_arg' => 172
1391             }
1392             },
1393             {#State 133
1394             ACTIONS => {
1395             'CLCURLY' => 174
1396             }
1397             },
1398             {#State 134
1399             ACTIONS => {
1400             'OPSPECIAL' => 40,
1401             'OPCURLY' => 177
1402             },
1403             DEFAULT => -121,
1404             GOTOS => {
1405             'special_block' => 176,
1406             'special_block_start' => 35,
1407             'simple_block' => 175
1408             }
1409             },
1410             {#State 135
1411             ACTIONS => {
1412             'CLCURLY' => 178
1413             }
1414             },
1415             {#State 136
1416             ACTIONS => {
1417             'CLCURLY' => 179
1418             }
1419             },
1420             {#State 137
1421             ACTIONS => {
1422             'ID' => 180
1423             }
1424             },
1425             {#State 138
1426             ACTIONS => {
1427             'DASH' => 97,
1428             'ID' => 98
1429             },
1430             GOTOS => {
1431             'file_name' => 181
1432             }
1433             },
1434             {#State 139
1435             DEFAULT => -112
1436             },
1437             {#State 140
1438             ACTIONS => {
1439             'ID' => 143,
1440             'COMMENT' => 20,
1441             'CLCURLY' => 182,
1442             'OPSPECIAL' => 40,
1443             'PREPROCESSOR' => 27,
1444             'RAW_CODE' => 3
1445             },
1446             GOTOS => {
1447             'special_block_start' => 35,
1448             'raw' => 141,
1449             'special_block' => 5,
1450             'enum_element' => 144
1451             }
1452             },
1453             {#State 141
1454             DEFAULT => -37
1455             },
1456             {#State 142
1457             ACTIONS => {
1458             'SEMICOLON' => 183
1459             }
1460             },
1461             {#State 143
1462             ACTIONS => {
1463             'EQUAL' => 184
1464             },
1465             DEFAULT => -35
1466             },
1467             {#State 144
1468             ACTIONS => {
1469             'COMMA' => 185
1470             },
1471             DEFAULT => -33
1472             },
1473             {#State 145
1474             DEFAULT => -152
1475             },
1476             {#State 146
1477             DEFAULT => -110
1478             },
1479             {#State 147
1480             ACTIONS => {
1481             'p_length' => 186,
1482             'ID' => 187
1483             }
1484             },
1485             {#State 148
1486             DEFAULT => -158
1487             },
1488             {#State 149
1489             ACTIONS => {
1490             'COMMA' => 188
1491             },
1492             DEFAULT => -156
1493             },
1494             {#State 150
1495             ACTIONS => {
1496             'CLPAR' => 189
1497             }
1498             },
1499             {#State 151
1500             ACTIONS => {
1501             'CLPAR' => -157
1502             },
1503             DEFAULT => -135
1504             },
1505             {#State 152
1506             DEFAULT => -3
1507             },
1508             {#State 153
1509             ACTIONS => {
1510             'OPCURLY' => 190
1511             }
1512             },
1513             {#State 154
1514             DEFAULT => -114
1515             },
1516             {#State 155
1517             ACTIONS => {
1518             'ID' => 6
1519             },
1520             GOTOS => {
1521             'class_name_list' => 191,
1522             'class_name' => 192
1523             }
1524             },
1525             {#State 156
1526             DEFAULT => -117
1527             },
1528             {#State 157
1529             DEFAULT => -116
1530             },
1531             {#State 158
1532             ACTIONS => {
1533             'ID' => 193
1534             }
1535             },
1536             {#State 159
1537             DEFAULT => -115
1538             },
1539             {#State 160
1540             ACTIONS => {
1541             'ID' => 6,
1542             'p_name' => 34
1543             },
1544             GOTOS => {
1545             'class_name' => 196,
1546             'perc_name' => 195,
1547             'class_name_rename' => 194
1548             }
1549             },
1550             {#State 161
1551             ACTIONS => {
1552             'p_name' => 34,
1553             'ID' => 6
1554             },
1555             GOTOS => {
1556             'class_name_rename' => 197,
1557             'perc_name' => 195,
1558             'class_name' => 196
1559             }
1560             },
1561             {#State 162
1562             DEFAULT => -45
1563             },
1564             {#State 163
1565             ACTIONS => {
1566             'ID' => 6,
1567             'p_name' => 34
1568             },
1569             GOTOS => {
1570             'class_name' => 196,
1571             'perc_name' => 195,
1572             'class_name_rename' => 198
1573             }
1574             },
1575             {#State 164
1576             ACTIONS => {
1577             "private" => 163,
1578             "protected" => 161,
1579             "public" => 160
1580             },
1581             GOTOS => {
1582             'base_class' => 199
1583             }
1584             },
1585             {#State 165
1586             ACTIONS => {
1587             'OPCURLY' => 202,
1588             'p_any' => 48,
1589             'p_catch' => 112
1590             },
1591             GOTOS => {
1592             'perc_catch' => 200,
1593             'perc_any' => 201
1594             }
1595             },
1596             {#State 166
1597             DEFAULT => -108
1598             },
1599             {#State 167
1600             DEFAULT => -144
1601             },
1602             {#State 168
1603             ACTIONS => {
1604             'ID' => 6,
1605             "void" => 29,
1606             "unsigned" => 50,
1607             "const" => 24,
1608             "char" => 13,
1609             "long" => 37,
1610             "short" => 42,
1611             "int" => 54
1612             },
1613             GOTOS => {
1614             'type_name' => 15,
1615             'type' => 203,
1616             'nconsttype' => 38,
1617             'class_name' => 46,
1618             'basic_type' => 52,
1619             'template' => 41
1620             }
1621             },
1622             {#State 169
1623             ACTIONS => {
1624             'SEMICOLON' => 204,
1625             'OPCURLY' => 205
1626             }
1627             },
1628             {#State 170
1629             ACTIONS => {
1630             'OPCURLY' => 177,
1631             'OPSPECIAL' => 40,
1632             'SEMICOLON' => 206
1633             },
1634             GOTOS => {
1635             'special_block' => 176,
1636             'special_block_start' => 35,
1637             'simple_block' => 175
1638             }
1639             },
1640             {#State 171
1641             DEFAULT => -126
1642             },
1643             {#State 172
1644             DEFAULT => -124
1645             },
1646             {#State 173
1647             DEFAULT => -119
1648             },
1649             {#State 174
1650             DEFAULT => -24,
1651             GOTOS => {
1652             'mixed_blocks' => 207
1653             }
1654             },
1655             {#State 175
1656             DEFAULT => -23
1657             },
1658             {#State 176
1659             DEFAULT => -22
1660             },
1661             {#State 177
1662             ACTIONS => {
1663             'ID' => 208
1664             }
1665             },
1666             {#State 178
1667             DEFAULT => -113
1668             },
1669             {#State 179
1670             DEFAULT => -111
1671             },
1672             {#State 180
1673             DEFAULT => -154
1674             },
1675             {#State 181
1676             DEFAULT => -155
1677             },
1678             {#State 182
1679             ACTIONS => {
1680             'SEMICOLON' => 209
1681             }
1682             },
1683             {#State 183
1684             DEFAULT => -30
1685             },
1686             {#State 184
1687             ACTIONS => {
1688             'FLOAT' => 213,
1689             'QUOTED_STRING' => 211,
1690             'DASH' => 216,
1691             'INTEGER' => 212,
1692             'ID' => 6
1693             },
1694             GOTOS => {
1695             'class_name' => 210,
1696             'value' => 214,
1697             'expression' => 215
1698             }
1699             },
1700             {#State 185
1701             DEFAULT => -34
1702             },
1703             {#State 186
1704             ACTIONS => {
1705             'OPCURLY' => 217
1706             }
1707             },
1708             {#State 187
1709             DEFAULT => -162,
1710             GOTOS => {
1711             'argument_metadata' => 218
1712             }
1713             },
1714             {#State 188
1715             ACTIONS => {
1716             "int" => 54,
1717             "short" => 42,
1718             "long" => 37,
1719             "char" => 13,
1720             "const" => 24,
1721             "void" => 29,
1722             "unsigned" => 50,
1723             'ID' => 6
1724             },
1725             GOTOS => {
1726             'class_name' => 46,
1727             'type_name' => 15,
1728             'template' => 41,
1729             'nconsttype' => 38,
1730             'argument' => 219,
1731             'type' => 147,
1732             'basic_type' => 52
1733             }
1734             },
1735             {#State 189
1736             ACTIONS => {
1737             "const" => 220
1738             },
1739             DEFAULT => -80,
1740             GOTOS => {
1741             'const' => 221
1742             }
1743             },
1744             {#State 190
1745             ACTIONS => {
1746             "int" => 54,
1747             "short" => 42,
1748             "char" => 13,
1749             "long" => 37,
1750             "unsigned" => 50,
1751             "void" => 29,
1752             'ID' => 6
1753             },
1754             GOTOS => {
1755             'basic_type' => 52,
1756             'type_name' => 222,
1757             'class_name' => 223
1758             }
1759             },
1760             {#State 191
1761             ACTIONS => {
1762             'CLCURLY' => 225,
1763             'COMMA' => 224
1764             }
1765             },
1766             {#State 192
1767             DEFAULT => -149
1768             },
1769             {#State 193
1770             ACTIONS => {
1771             'EQUAL' => 226
1772             }
1773             },
1774             {#State 194
1775             DEFAULT => -48
1776             },
1777             {#State 195
1778             ACTIONS => {
1779             'ID' => 6
1780             },
1781             GOTOS => {
1782             'class_name' => 227
1783             }
1784             },
1785             {#State 196
1786             DEFAULT => -51
1787             },
1788             {#State 197
1789             DEFAULT => -49
1790             },
1791             {#State 198
1792             DEFAULT => -50
1793             },
1794             {#State 199
1795             DEFAULT => -46
1796             },
1797             {#State 200
1798             DEFAULT => -53
1799             },
1800             {#State 201
1801             DEFAULT => -54
1802             },
1803             {#State 202
1804             DEFAULT => -56,
1805             GOTOS => {
1806             'class_body_list' => 228
1807             }
1808             },
1809             {#State 203
1810             DEFAULT => -146
1811             },
1812             {#State 204
1813             DEFAULT => -20
1814             },
1815             {#State 205
1816             ACTIONS => {
1817             'ID' => 229
1818             }
1819             },
1820             {#State 206
1821             DEFAULT => -125
1822             },
1823             {#State 207
1824             ACTIONS => {
1825             'OPCURLY' => 177,
1826             'OPSPECIAL' => 40
1827             },
1828             DEFAULT => -120,
1829             GOTOS => {
1830             'special_block_start' => 35,
1831             'simple_block' => 175,
1832             'special_block' => 176
1833             }
1834             },
1835             {#State 208
1836             ACTIONS => {
1837             'CLCURLY' => 230
1838             }
1839             },
1840             {#State 209
1841             DEFAULT => -31
1842             },
1843             {#State 210
1844             ACTIONS => {
1845             'OPPAR' => 231
1846             },
1847             DEFAULT => -171
1848             },
1849             {#State 211
1850             DEFAULT => -170
1851             },
1852             {#State 212
1853             DEFAULT => -167
1854             },
1855             {#State 213
1856             DEFAULT => -169
1857             },
1858             {#State 214
1859             ACTIONS => {
1860             'PIPE' => 232,
1861             'AMP' => 233
1862             },
1863             DEFAULT => -176
1864             },
1865             {#State 215
1866             DEFAULT => -36
1867             },
1868             {#State 216
1869             ACTIONS => {
1870             'INTEGER' => 234
1871             }
1872             },
1873             {#State 217
1874             ACTIONS => {
1875             'ID' => 235
1876             }
1877             },
1878             {#State 218
1879             ACTIONS => {
1880             'EQUAL' => 236,
1881             'p_any' => 48
1882             },
1883             DEFAULT => -166,
1884             GOTOS => {
1885             '_argument_metadata' => 237,
1886             'perc_any' => 238
1887             }
1888             },
1889             {#State 219
1890             DEFAULT => -159
1891             },
1892             {#State 220
1893             DEFAULT => -79
1894             },
1895             {#State 221
1896             DEFAULT => -85
1897             },
1898             {#State 222
1899             ACTIONS => {
1900             'CLCURLY' => 239
1901             }
1902             },
1903             {#State 223
1904             DEFAULT => -133
1905             },
1906             {#State 224
1907             ACTIONS => {
1908             'ID' => 6
1909             },
1910             GOTOS => {
1911             'class_name' => 240
1912             }
1913             },
1914             {#State 225
1915             DEFAULT => -118
1916             },
1917             {#State 226
1918             ACTIONS => {
1919             'INTEGER' => 241
1920             }
1921             },
1922             {#State 227
1923             DEFAULT => -52
1924             },
1925             {#State 228
1926             ACTIONS => {
1927             "virtual" => 272,
1928             "long" => 37,
1929             'ID' => 258,
1930             'OPSPECIAL' => 40,
1931             'CLCURLY' => 254,
1932             "static" => 271,
1933             "short" => 42,
1934             "void" => 29,
1935             'PREPROCESSOR' => 27,
1936             "const" => 24,
1937             "package_static" => 250,
1938             'TILDE' => 251,
1939             'RAW_CODE' => 3,
1940             'p_name' => 34,
1941             "unsigned" => 50,
1942             'p_any' => 48,
1943             "class_static" => 247,
1944             "protected" => 248,
1945             "private" => 264,
1946             "int" => 54,
1947             "public" => 246,
1948             "char" => 13,
1949             'p_exceptionmap' => 17,
1950             'COMMENT' => 20,
1951             'p_typemap' => 47
1952             },
1953             DEFAULT => -71,
1954             GOTOS => {
1955             'vmethod' => 268,
1956             'looks_like_function' => 25,
1957             'virtual' => 270,
1958             'exceptionmap' => 269,
1959             'looks_like_renamed_function' => 267,
1960             'perc_any' => 266,
1961             'special_block_start' => 35,
1962             'nconsttype' => 38,
1963             'special_block' => 5,
1964             'looks_like_member' => 255,
1965             'class_body_element' => 256,
1966             'static' => 257,
1967             'method_decl' => 252,
1968             'member_decl' => 253,
1969             'template' => 41,
1970             'type' => 243,
1971             'dtor' => 262,
1972             'type_name' => 15,
1973             'class_name' => 46,
1974             'method' => 260,
1975             'nmethod' => 259,
1976             'member' => 261,
1977             'raw' => 242,
1978             '_vmethod' => 265,
1979             'basic_type' => 52,
1980             'typemap' => 249,
1981             'ctor' => 245,
1982             'perc_name' => 263,
1983             'access_specifier' => 244
1984             }
1985             },
1986             {#State 229
1987             ACTIONS => {
1988             'CLCURLY' => 273
1989             }
1990             },
1991             {#State 230
1992             DEFAULT => -25
1993             },
1994             {#State 231
1995             ACTIONS => {
1996             'FLOAT' => 213,
1997             'DASH' => 216,
1998             'INTEGER' => 212,
1999             'ID' => 6,
2000             'QUOTED_STRING' => 211
2001             },
2002             DEFAULT => -175,
2003             GOTOS => {
2004             'value' => 275,
2005             'class_name' => 210,
2006             'value_list' => 274
2007             }
2008             },
2009             {#State 232
2010             ACTIONS => {
2011             'DASH' => 216,
2012             'INTEGER' => 212,
2013             'ID' => 6,
2014             'QUOTED_STRING' => 211,
2015             'FLOAT' => 213
2016             },
2017             GOTOS => {
2018             'class_name' => 210,
2019             'value' => 276
2020             }
2021             },
2022             {#State 233
2023             ACTIONS => {
2024             'FLOAT' => 213,
2025             'QUOTED_STRING' => 211,
2026             'INTEGER' => 212,
2027             'ID' => 6,
2028             'DASH' => 216
2029             },
2030             GOTOS => {
2031             'value' => 277,
2032             'class_name' => 210
2033             }
2034             },
2035             {#State 234
2036             DEFAULT => -168
2037             },
2038             {#State 235
2039             ACTIONS => {
2040             'CLCURLY' => 278
2041             }
2042             },
2043             {#State 236
2044             ACTIONS => {
2045             'ID' => 6,
2046             'INTEGER' => 212,
2047             'DASH' => 216,
2048             'QUOTED_STRING' => 211,
2049             'FLOAT' => 213
2050             },
2051             GOTOS => {
2052             'value' => 214,
2053             'class_name' => 210,
2054             'expression' => 279
2055             }
2056             },
2057             {#State 237
2058             DEFAULT => -161
2059             },
2060             {#State 238
2061             DEFAULT => -163
2062             },
2063             {#State 239
2064             ACTIONS => {
2065             'OPCURLY' => 280
2066             }
2067             },
2068             {#State 240
2069             DEFAULT => -150
2070             },
2071             {#State 241
2072             ACTIONS => {
2073             'CLCURLY' => 281
2074             }
2075             },
2076             {#State 242
2077             DEFAULT => -59
2078             },
2079             {#State 243
2080             ACTIONS => {
2081             'ID' => 282
2082             }
2083             },
2084             {#State 244
2085             DEFAULT => -62
2086             },
2087             {#State 245
2088             DEFAULT => -77
2089             },
2090             {#State 246
2091             ACTIONS => {
2092             'COLON' => 283
2093             }
2094             },
2095             {#State 247
2096             DEFAULT => -83
2097             },
2098             {#State 248
2099             ACTIONS => {
2100             'COLON' => 284
2101             }
2102             },
2103             {#State 249
2104             DEFAULT => -60
2105             },
2106             {#State 250
2107             DEFAULT => -82
2108             },
2109             {#State 251
2110             ACTIONS => {
2111             'ID' => 285
2112             }
2113             },
2114             {#State 252
2115             ACTIONS => {
2116             'SEMICOLON' => 286
2117             }
2118             },
2119             {#State 253
2120             ACTIONS => {
2121             'SEMICOLON' => 287
2122             }
2123             },
2124             {#State 254
2125             DEFAULT => -44
2126             },
2127             {#State 255
2128             DEFAULT => -72
2129             },
2130             {#State 256
2131             DEFAULT => -57
2132             },
2133             {#State 257
2134             ACTIONS => {
2135             "short" => 42,
2136             "static" => 271,
2137             "int" => 54,
2138             "class_static" => 247,
2139             'ID' => 6,
2140             "unsigned" => 50,
2141             "long" => 37,
2142             'p_name' => 34,
2143             "void" => 29,
2144             "package_static" => 250,
2145             "const" => 24,
2146             "char" => 13
2147             },
2148             GOTOS => {
2149             'static' => 257,
2150             'basic_type' => 52,
2151             'looks_like_function' => 25,
2152             'nconsttype' => 38,
2153             'type' => 12,
2154             'template' => 41,
2155             'perc_name' => 289,
2156             'class_name' => 46,
2157             'nmethod' => 288,
2158             'type_name' => 15,
2159             'looks_like_renamed_function' => 267
2160             }
2161             },
2162             {#State 258
2163             ACTIONS => {
2164             'DCOLON' => 59,
2165             'OPPAR' => 290
2166             },
2167             DEFAULT => -147,
2168             GOTOS => {
2169             'class_suffix' => 58
2170             }
2171             },
2172             {#State 259
2173             DEFAULT => -75
2174             },
2175             {#State 260
2176             DEFAULT => -58
2177             },
2178             {#State 261
2179             DEFAULT => -63
2180             },
2181             {#State 262
2182             DEFAULT => -78
2183             },
2184             {#State 263
2185             ACTIONS => {
2186             'ID' => 258,
2187             "virtual" => 272,
2188             "unsigned" => 50,
2189             "long" => 37,
2190             "short" => 42,
2191             "int" => 54,
2192             'TILDE' => 251,
2193             "void" => 29,
2194             "const" => 24,
2195             "char" => 13,
2196             'p_name' => 34
2197             },
2198             GOTOS => {
2199             'basic_type' => 52,
2200             'looks_like_member' => 294,
2201             '_vmethod' => 265,
2202             'nconsttype' => 38,
2203             'template' => 41,
2204             'perc_name' => 292,
2205             'ctor' => 295,
2206             'virtual' => 270,
2207             'type' => 243,
2208             'dtor' => 293,
2209             'looks_like_function' => 95,
2210             'vmethod' => 291,
2211             'type_name' => 15,
2212             'class_name' => 46
2213             }
2214             },
2215             {#State 264
2216             ACTIONS => {
2217             'COLON' => 296
2218             }
2219             },
2220             {#State 265
2221             DEFAULT => -98
2222             },
2223             {#State 266
2224             ACTIONS => {
2225             'SEMICOLON' => 297
2226             }
2227             },
2228             {#State 267
2229             DEFAULT => -95,
2230             GOTOS => {
2231             'function_metadata' => 298
2232             }
2233             },
2234             {#State 268
2235             DEFAULT => -76
2236             },
2237             {#State 269
2238             DEFAULT => -61
2239             },
2240             {#State 270
2241             ACTIONS => {
2242             "short" => 42,
2243             'p_name' => 34,
2244             "int" => 54,
2245             "virtual" => 272,
2246             "void" => 29,
2247             "unsigned" => 50,
2248             "const" => 24,
2249             "long" => 37,
2250             "char" => 13,
2251             'TILDE' => 251,
2252             'ID' => 6
2253             },
2254             GOTOS => {
2255             'virtual' => 299,
2256             'basic_type' => 52,
2257             'nconsttype' => 38,
2258             'looks_like_function' => 300,
2259             'dtor' => 301,
2260             'type' => 12,
2261             'template' => 41,
2262             'class_name' => 46,
2263             'perc_name' => 302,
2264             'type_name' => 15
2265             }
2266             },
2267             {#State 271
2268             DEFAULT => -84
2269             },
2270             {#State 272
2271             DEFAULT => -81
2272             },
2273             {#State 273
2274             ACTIONS => {
2275             'OPSPECIAL' => 40,
2276             'OPCURLY' => 305
2277             },
2278             DEFAULT => -181,
2279             GOTOS => {
2280             'special_blocks' => 303,
2281             'special_block_start' => 35,
2282             'special_block' => 304
2283             }
2284             },
2285             {#State 274
2286             ACTIONS => {
2287             'COMMA' => 307,
2288             'CLPAR' => 306
2289             }
2290             },
2291             {#State 275
2292             DEFAULT => -173
2293             },
2294             {#State 276
2295             DEFAULT => -178
2296             },
2297             {#State 277
2298             DEFAULT => -177
2299             },
2300             {#State 278
2301             DEFAULT => -164
2302             },
2303             {#State 279
2304             DEFAULT => -165
2305             },
2306             {#State 280
2307             ACTIONS => {
2308             'ID' => 308
2309             }
2310             },
2311             {#State 281
2312             DEFAULT => -109
2313             },
2314             {#State 282
2315             ACTIONS => {
2316             'OPPAR' => 105
2317             },
2318             DEFAULT => -69,
2319             GOTOS => {
2320             'member_metadata' => 309
2321             }
2322             },
2323             {#State 283
2324             DEFAULT => -65
2325             },
2326             {#State 284
2327             DEFAULT => -66
2328             },
2329             {#State 285
2330             ACTIONS => {
2331             'OPPAR' => 310
2332             }
2333             },
2334             {#State 286
2335             DEFAULT => -41
2336             },
2337             {#State 287
2338             DEFAULT => -42
2339             },
2340             {#State 288
2341             DEFAULT => -97
2342             },
2343             {#State 289
2344             ACTIONS => {
2345             "void" => 29,
2346             "unsigned" => 50,
2347             "const" => 24,
2348             "char" => 13,
2349             "long" => 37,
2350             'ID' => 6,
2351             "short" => 42,
2352             "int" => 54
2353             },
2354             GOTOS => {
2355             'template' => 41,
2356             'basic_type' => 52,
2357             'class_name' => 46,
2358             'looks_like_function' => 95,
2359             'nconsttype' => 38,
2360             'type' => 12,
2361             'type_name' => 15
2362             }
2363             },
2364             {#State 290
2365             ACTIONS => {
2366             "short" => 42,
2367             "int" => 54,
2368             'ID' => 6,
2369             "void" => 151,
2370             "unsigned" => 50,
2371             "const" => 24,
2372             "long" => 37,
2373             "char" => 13
2374             },
2375             DEFAULT => -160,
2376             GOTOS => {
2377             'template' => 41,
2378             'arg_list' => 311,
2379             'nonvoid_arg_list' => 149,
2380             'class_name' => 46,
2381             'type_name' => 15,
2382             'basic_type' => 52,
2383             'nconsttype' => 38,
2384             'argument' => 148,
2385             'type' => 147
2386             }
2387             },
2388             {#State 291
2389             DEFAULT => -99
2390             },
2391             {#State 292
2392             ACTIONS => {
2393             'ID' => 312,
2394             'TILDE' => 251,
2395             'p_name' => 34,
2396             "virtual" => 272
2397             },
2398             GOTOS => {
2399             'ctor' => 295,
2400             'perc_name' => 292,
2401             'virtual' => 270,
2402             'vmethod' => 291,
2403             'dtor' => 293,
2404             '_vmethod' => 265
2405             }
2406             },
2407             {#State 293
2408             DEFAULT => -92
2409             },
2410             {#State 294
2411             DEFAULT => -73
2412             },
2413             {#State 295
2414             DEFAULT => -90
2415             },
2416             {#State 296
2417             DEFAULT => -67
2418             },
2419             {#State 297
2420             DEFAULT => -64
2421             },
2422             {#State 298
2423             ACTIONS => {
2424             'p_catch' => 112,
2425             'p_postcall' => 113,
2426             'p_any' => 48,
2427             'p_alias' => 118,
2428             'p_cleanup' => 116,
2429             'p_code' => 120
2430             },
2431             DEFAULT => -96,
2432             GOTOS => {
2433             '_function_metadata' => 119,
2434             'perc_postcall' => 110,
2435             'perc_cleanup' => 111,
2436             'perc_any' => 114,
2437             'perc_code' => 109,
2438             'perc_catch' => 115,
2439             'perc_alias' => 117
2440             }
2441             },
2442             {#State 299
2443             ACTIONS => {
2444             "virtual" => 272,
2445             'TILDE' => 251,
2446             'p_name' => 34
2447             },
2448             GOTOS => {
2449             'perc_name' => 302,
2450             'dtor' => 301,
2451             'virtual' => 299
2452             }
2453             },
2454             {#State 300
2455             ACTIONS => {
2456             'EQUAL' => 313
2457             },
2458             DEFAULT => -95,
2459             GOTOS => {
2460             'function_metadata' => 314
2461             }
2462             },
2463             {#State 301
2464             DEFAULT => -93
2465             },
2466             {#State 302
2467             ACTIONS => {
2468             'p_name' => 34,
2469             'TILDE' => 251,
2470             "virtual" => 272
2471             },
2472             GOTOS => {
2473             'dtor' => 293,
2474             'perc_name' => 302,
2475             'virtual' => 299
2476             }
2477             },
2478             {#State 303
2479             ACTIONS => {
2480             'OPSPECIAL' => 40,
2481             'SEMICOLON' => 316
2482             },
2483             GOTOS => {
2484             'special_block_start' => 35,
2485             'special_block' => 315
2486             }
2487             },
2488             {#State 304
2489             DEFAULT => -179
2490             },
2491             {#State 305
2492             ACTIONS => {
2493             'p_any' => 129,
2494             'p_name' => 34
2495             },
2496             GOTOS => {
2497             'perc_any_arg' => 131,
2498             'perc_name' => 130,
2499             'perc_any_args' => 317
2500             }
2501             },
2502             {#State 306
2503             DEFAULT => -172
2504             },
2505             {#State 307
2506             ACTIONS => {
2507             'FLOAT' => 213,
2508             'QUOTED_STRING' => 211,
2509             'INTEGER' => 212,
2510             'ID' => 6,
2511             'DASH' => 216
2512             },
2513             GOTOS => {
2514             'value' => 318,
2515             'class_name' => 210
2516             }
2517             },
2518             {#State 308
2519             ACTIONS => {
2520             'CLCURLY' => 319
2521             }
2522             },
2523             {#State 309
2524             ACTIONS => {
2525             'p_any' => 48
2526             },
2527             DEFAULT => -74,
2528             GOTOS => {
2529             '_member_metadata' => 321,
2530             'perc_any' => 320
2531             }
2532             },
2533             {#State 310
2534             ACTIONS => {
2535             'CLPAR' => 322
2536             }
2537             },
2538             {#State 311
2539             ACTIONS => {
2540             'CLPAR' => 323
2541             }
2542             },
2543             {#State 312
2544             ACTIONS => {
2545             'OPPAR' => 290
2546             }
2547             },
2548             {#State 313
2549             ACTIONS => {
2550             'INTEGER' => 324
2551             }
2552             },
2553             {#State 314
2554             ACTIONS => {
2555             'p_catch' => 112,
2556             'p_any' => 48,
2557             'p_postcall' => 113,
2558             'p_cleanup' => 116,
2559             'p_alias' => 118,
2560             'p_code' => 120
2561             },
2562             DEFAULT => -100,
2563             GOTOS => {
2564             'perc_alias' => 117,
2565             'perc_code' => 109,
2566             '_function_metadata' => 119,
2567             'perc_catch' => 115,
2568             'perc_any' => 114,
2569             'perc_cleanup' => 111,
2570             'perc_postcall' => 110
2571             }
2572             },
2573             {#State 315
2574             DEFAULT => -180
2575             },
2576             {#State 316
2577             DEFAULT => -18
2578             },
2579             {#State 317
2580             ACTIONS => {
2581             'p_name' => 34,
2582             'CLCURLY' => 325,
2583             'p_any' => 129
2584             },
2585             GOTOS => {
2586             'perc_any_arg' => 172,
2587             'perc_name' => 130
2588             }
2589             },
2590             {#State 318
2591             DEFAULT => -174
2592             },
2593             {#State 319
2594             DEFAULT => -24,
2595             GOTOS => {
2596             'mixed_blocks' => 326
2597             }
2598             },
2599             {#State 320
2600             DEFAULT => -70
2601             },
2602             {#State 321
2603             DEFAULT => -68
2604             },
2605             {#State 322
2606             DEFAULT => -95,
2607             GOTOS => {
2608             'function_metadata' => 327
2609             }
2610             },
2611             {#State 323
2612             DEFAULT => -95,
2613             GOTOS => {
2614             'function_metadata' => 328
2615             }
2616             },
2617             {#State 324
2618             DEFAULT => -95,
2619             GOTOS => {
2620             'function_metadata' => 329
2621             }
2622             },
2623             {#State 325
2624             ACTIONS => {
2625             'SEMICOLON' => 330
2626             }
2627             },
2628             {#State 326
2629             ACTIONS => {
2630             'SEMICOLON' => 331,
2631             'OPSPECIAL' => 40,
2632             'OPCURLY' => 177
2633             },
2634             GOTOS => {
2635             'special_block' => 176,
2636             'simple_block' => 175,
2637             'special_block_start' => 35
2638             }
2639             },
2640             {#State 327
2641             ACTIONS => {
2642             'p_catch' => 112,
2643             'p_any' => 48,
2644             'p_postcall' => 113,
2645             'p_cleanup' => 116,
2646             'p_alias' => 118,
2647             'p_code' => 120
2648             },
2649             DEFAULT => -91,
2650             GOTOS => {
2651             'perc_cleanup' => 111,
2652             'perc_postcall' => 110,
2653             'perc_catch' => 115,
2654             'perc_any' => 114,
2655             '_function_metadata' => 119,
2656             'perc_code' => 109,
2657             'perc_alias' => 117
2658             }
2659             },
2660             {#State 328
2661             ACTIONS => {
2662             'p_catch' => 112,
2663             'p_postcall' => 113,
2664             'p_any' => 48,
2665             'p_alias' => 118,
2666             'p_cleanup' => 116,
2667             'p_code' => 120
2668             },
2669             DEFAULT => -89,
2670             GOTOS => {
2671             'perc_any' => 114,
2672             'perc_catch' => 115,
2673             'perc_postcall' => 110,
2674             'perc_cleanup' => 111,
2675             'perc_alias' => 117,
2676             'perc_code' => 109,
2677             '_function_metadata' => 119
2678             }
2679             },
2680             {#State 329
2681             ACTIONS => {
2682             'p_catch' => 112,
2683             'p_postcall' => 113,
2684             'p_any' => 48,
2685             'p_alias' => 118,
2686             'p_cleanup' => 116,
2687             'p_code' => 120
2688             },
2689             DEFAULT => -101,
2690             GOTOS => {
2691             'perc_code' => 109,
2692             'perc_alias' => 117,
2693             '_function_metadata' => 119,
2694             'perc_catch' => 115,
2695             'perc_any' => 114,
2696             'perc_cleanup' => 111,
2697             'perc_postcall' => 110
2698             }
2699             },
2700             {#State 330
2701             DEFAULT => -19
2702             },
2703             {#State 331
2704             DEFAULT => -21
2705             }
2706             ],
2707             yyrules =>
2708             [
2709             [#Rule 0
2710             '$start', 2, undef
2711             ],
2712             [#Rule 1
2713             'top_list', 1, undef
2714             ],
2715             [#Rule 2
2716             'top_list', 2,
2717             sub
2718             #line 22 "XSP.yp"
2719             { push @{$_[1]}, @{$_[2]}; $_[1] }
2720             ],
2721             [#Rule 3
2722             'top_list', 4,
2723             sub
2724             #line 24 "XSP.yp"
2725             { $_[3] }
2726             ],
2727             [#Rule 4
2728             'top', 1,
2729             sub
2730             #line 27 "XSP.yp"
2731             { !$_[1] ? [] :
2732             ref $_[1] eq 'ARRAY' ? $_[1] :
2733             [ $_[1] ] }
2734             ],
2735             [#Rule 5
2736             '_top', 1, undef
2737             ],
2738             [#Rule 6
2739             '_top', 1, undef
2740             ],
2741             [#Rule 7
2742             '_top', 1, undef
2743             ],
2744             [#Rule 8
2745             '_top', 1, undef
2746             ],
2747             [#Rule 9
2748             '_top', 1,
2749             sub
2750             #line 32 "XSP.yp"
2751             { process_function( $_[0], $_[1] ) }
2752             ],
2753             [#Rule 10
2754             'directive', 2,
2755             sub
2756             #line 35 "XSP.yp"
2757             { ExtUtils::XSpp::Node::Module->new( module => $_[1] ) }
2758             ],
2759             [#Rule 11
2760             'directive', 2,
2761             sub
2762             #line 37 "XSP.yp"
2763             { ExtUtils::XSpp::Node::Package->new( perl_name => $_[1] ) }
2764             ],
2765             [#Rule 12
2766             'directive', 2,
2767             sub
2768             #line 39 "XSP.yp"
2769             { ExtUtils::XSpp::Node::File->new( file => $_[1] ) }
2770             ],
2771             [#Rule 13
2772             'directive', 2,
2773             sub
2774             #line 41 "XSP.yp"
2775             { $_[0]->YYData->{PARSER}->load_plugin( $_[1] ); undef }
2776             ],
2777             [#Rule 14
2778             'directive', 2,
2779             sub
2780             #line 43 "XSP.yp"
2781             { $_[0]->YYData->{PARSER}->include_file( $_[1] ); undef }
2782             ],
2783             [#Rule 15
2784             'directive', 2,
2785             sub
2786             #line 45 "XSP.yp"
2787             { add_top_level_directive( $_[0], %{$_[1][1]} ) }
2788             ],
2789             [#Rule 16
2790             'directive', 1,
2791             sub
2792             #line 46 "XSP.yp"
2793             { }
2794             ],
2795             [#Rule 17
2796             'directive', 1,
2797             sub
2798             #line 47 "XSP.yp"
2799             { }
2800             ],
2801             [#Rule 18
2802             'typemap', 9,
2803             sub
2804             #line 52 "XSP.yp"
2805             { my $c = 0;
2806             my %args = map { "arg" . ++$c => $_ }
2807             map { join( '', @$_ ) }
2808             @{$_[8] || []};
2809             add_typemap( $_[6], $_[3], %args );
2810             undef }
2811             ],
2812             [#Rule 19
2813             'typemap', 11,
2814             sub
2815             #line 60 "XSP.yp"
2816             { # this assumes that there will be at most one named
2817             # block for each directive inside the typemap
2818             for( my $i = 1; $i <= $#{$_[9]}; $i += 2 ) {
2819             $_[9][$i] = join "\n", @{$_[9][$i][0]}
2820             if ref( $_[9][$i] ) eq 'ARRAY'
2821             && ref( $_[9][$i][0] ) eq 'ARRAY';
2822             }
2823             add_typemap( $_[6], $_[3], @{$_[9]} );
2824             undef }
2825             ],
2826             [#Rule 20
2827             'typemap', 5,
2828             sub
2829             #line 70 "XSP.yp"
2830             { add_typemap( 'simple', $_[3] );
2831             add_typemap( 'reference', make_ref($_[3]->clone) );
2832             undef }
2833             ],
2834             [#Rule 21
2835             'exceptionmap', 12,
2836             sub
2837             #line 78 "XSP.yp"
2838             { my $package = "ExtUtils::XSpp::Exception::" . $_[9];
2839             my $type = make_type($_[6]); my $c = 0;
2840             my %args = map { "arg" . ++$c => $_ }
2841             map { join( "\n", @$_ ) }
2842             @{$_[11] || []};
2843             my $e = $package->new( name => $_[3], type => $type, %args );
2844             ExtUtils::XSpp::Exception->add_exception( $e );
2845             undef }
2846             ],
2847             [#Rule 22
2848             'mixed_blocks', 2,
2849             sub
2850             #line 88 "XSP.yp"
2851             { [ @{$_[1]}, $_[2] ] }
2852             ],
2853             [#Rule 23
2854             'mixed_blocks', 2,
2855             sub
2856             #line 90 "XSP.yp"
2857             { [ @{$_[1]}, [ $_[2] ] ] }
2858             ],
2859             [#Rule 24
2860             'mixed_blocks', 0,
2861             sub
2862             #line 91 "XSP.yp"
2863             { [] }
2864             ],
2865             [#Rule 25
2866             'simple_block', 3,
2867             sub
2868             #line 94 "XSP.yp"
2869             { $_[2] }
2870             ],
2871             [#Rule 26
2872             'raw', 1,
2873             sub
2874             #line 96 "XSP.yp"
2875             { add_data_raw( $_[0], [ $_[1] ] ) }
2876             ],
2877             [#Rule 27
2878             'raw', 1,
2879             sub
2880             #line 97 "XSP.yp"
2881             { add_data_comment( $_[0], $_[1] ) }
2882             ],
2883             [#Rule 28
2884             'raw', 1,
2885             sub
2886             #line 98 "XSP.yp"
2887             { ExtUtils::XSpp::Node::Preprocessor->new
2888             ( rows => [ $_[1][0] ],
2889             symbol => $_[1][1],
2890             ) }
2891             ],
2892             [#Rule 29
2893             'raw', 1,
2894             sub
2895             #line 102 "XSP.yp"
2896             { add_data_raw( $_[0], [ @{$_[1]} ] ) }
2897             ],
2898             [#Rule 30
2899             'enum', 5,
2900             sub
2901             #line 106 "XSP.yp"
2902             { ExtUtils::XSpp::Node::Enum->new
2903             ( elements => $_[3],
2904             condition => $_[0]->get_conditional,
2905             ) }
2906             ],
2907             [#Rule 31
2908             'enum', 6,
2909             sub
2910             #line 111 "XSP.yp"
2911             { ExtUtils::XSpp::Node::Enum->new
2912             ( name => $_[2],
2913             elements => $_[4],
2914             condition => $_[0]->get_conditional,
2915             ) }
2916             ],
2917             [#Rule 32
2918             'enum_element_list', 0,
2919             sub
2920             #line 119 "XSP.yp"
2921             { [] }
2922             ],
2923             [#Rule 33
2924             'enum_element_list', 2,
2925             sub
2926             #line 121 "XSP.yp"
2927             { push @{$_[1]}, $_[2] if $_[2]; $_[1] }
2928             ],
2929             [#Rule 34
2930             'enum_element_list', 3,
2931             sub
2932             #line 123 "XSP.yp"
2933             { push @{$_[1]}, $_[2] if $_[2]; $_[1] }
2934             ],
2935             [#Rule 35
2936             'enum_element', 1,
2937             sub
2938             #line 128 "XSP.yp"
2939             { ExtUtils::XSpp::Node::EnumValue->new
2940             ( name => $_[1],
2941             condition => $_[0]->get_conditional,
2942             ) }
2943             ],
2944             [#Rule 36
2945             'enum_element', 3,
2946             sub
2947             #line 133 "XSP.yp"
2948             { ExtUtils::XSpp::Node::EnumValue->new
2949             ( name => $_[1],
2950             value => $_[3],
2951             condition => $_[0]->get_conditional,
2952             ) }
2953             ],
2954             [#Rule 37
2955             'enum_element', 1, undef
2956             ],
2957             [#Rule 38
2958             'class', 2, undef
2959             ],
2960             [#Rule 39
2961             'class', 2, undef
2962             ],
2963             [#Rule 40
2964             'function', 2, undef
2965             ],
2966             [#Rule 41
2967             'method', 2, undef
2968             ],
2969             [#Rule 42
2970             'member', 2, undef
2971             ],
2972             [#Rule 43
2973             'decorate_class', 2,
2974             sub
2975             #line 147 "XSP.yp"
2976             { $_[2]->set_perl_name( $_[1] ); $_[2] }
2977             ],
2978             [#Rule 44
2979             'class_decl', 7,
2980             sub
2981             #line 150 "XSP.yp"
2982             { create_class( $_[0], $_[2], $_[3], $_[4], $_[6],
2983             $_[0]->get_conditional ) }
2984             ],
2985             [#Rule 45
2986             'base_classes', 2,
2987             sub
2988             #line 154 "XSP.yp"
2989             { [ $_[2] ] }
2990             ],
2991             [#Rule 46
2992             'base_classes', 3,
2993             sub
2994             #line 155 "XSP.yp"
2995             { push @{$_[1]}, $_[3] if $_[3]; $_[1] }
2996             ],
2997             [#Rule 47
2998             'base_classes', 0, undef
2999             ],
3000             [#Rule 48
3001             'base_class', 2,
3002             sub
3003             #line 159 "XSP.yp"
3004             { $_[2] }
3005             ],
3006             [#Rule 49
3007             'base_class', 2,
3008             sub
3009             #line 160 "XSP.yp"
3010             { $_[2] }
3011             ],
3012             [#Rule 50
3013             'base_class', 2,
3014             sub
3015             #line 161 "XSP.yp"
3016             { $_[2] }
3017             ],
3018             [#Rule 51
3019             'class_name_rename', 1,
3020             sub
3021             #line 165 "XSP.yp"
3022             { create_class( $_[0], $_[1], [], [] ) }
3023             ],
3024             [#Rule 52
3025             'class_name_rename', 2,
3026             sub
3027             #line 166 "XSP.yp"
3028             { my $klass = create_class( $_[0], $_[2], [], [] );
3029             $klass->set_perl_name( $_[1] );
3030             $klass
3031             }
3032             ],
3033             [#Rule 53
3034             'class_metadata', 2,
3035             sub
3036             #line 172 "XSP.yp"
3037             { [ @{$_[1]}, @{$_[2]} ] }
3038             ],
3039             [#Rule 54
3040             'class_metadata', 2,
3041             sub
3042             #line 173 "XSP.yp"
3043             { [ @{$_[1]}, @{$_[2]} ] }
3044             ],
3045             [#Rule 55
3046             'class_metadata', 0,
3047             sub
3048             #line 174 "XSP.yp"
3049             { [] }
3050             ],
3051             [#Rule 56
3052             'class_body_list', 0,
3053             sub
3054             #line 178 "XSP.yp"
3055             { [] }
3056             ],
3057             [#Rule 57
3058             'class_body_list', 2,
3059             sub
3060             #line 180 "XSP.yp"
3061             { push @{$_[1]}, $_[2] if $_[2]; $_[1] }
3062             ],
3063             [#Rule 58
3064             'class_body_element', 1, undef
3065             ],
3066             [#Rule 59
3067             'class_body_element', 1, undef
3068             ],
3069             [#Rule 60
3070             'class_body_element', 1, undef
3071             ],
3072             [#Rule 61
3073             'class_body_element', 1, undef
3074             ],
3075             [#Rule 62
3076             'class_body_element', 1, undef
3077             ],
3078             [#Rule 63
3079             'class_body_element', 1, undef
3080             ],
3081             [#Rule 64
3082             'class_body_element', 2,
3083             sub
3084             #line 186 "XSP.yp"
3085             { ExtUtils::XSpp::Node::PercAny->new( %{$_[1][1]} ) }
3086             ],
3087             [#Rule 65
3088             'access_specifier', 2,
3089             sub
3090             #line 190 "XSP.yp"
3091             { ExtUtils::XSpp::Node::Access->new( access => $_[1] ) }
3092             ],
3093             [#Rule 66
3094             'access_specifier', 2,
3095             sub
3096             #line 191 "XSP.yp"
3097             { ExtUtils::XSpp::Node::Access->new( access => $_[1] ) }
3098             ],
3099             [#Rule 67
3100             'access_specifier', 2,
3101             sub
3102             #line 192 "XSP.yp"
3103             { ExtUtils::XSpp::Node::Access->new( access => $_[1] ) }
3104             ],
3105             [#Rule 68
3106             'member_metadata', 2,
3107             sub
3108             #line 195 "XSP.yp"
3109             { [ @{$_[1]}, @{$_[2]} ] }
3110             ],
3111             [#Rule 69
3112             'member_metadata', 0,
3113             sub
3114             #line 196 "XSP.yp"
3115             { [] }
3116             ],
3117             [#Rule 70
3118             '_member_metadata', 1, undef
3119             ],
3120             [#Rule 71
3121             'member_decl', 0, undef
3122             ],
3123             [#Rule 72
3124             'member_decl', 1, undef
3125             ],
3126             [#Rule 73
3127             'member_decl', 2,
3128             sub
3129             #line 204 "XSP.yp"
3130             { $_[2]->set_perl_name( $_[1] ); $_[2] }
3131             ],
3132             [#Rule 74
3133             'looks_like_member', 3,
3134             sub
3135             #line 208 "XSP.yp"
3136             { create_member( $_[0],
3137             name => $_[2],
3138             type => $_[1],
3139             condition => $_[0]->get_conditional,
3140             @{$_[3]} ) }
3141             ],
3142             [#Rule 75
3143             'method_decl', 1, undef
3144             ],
3145             [#Rule 76
3146             'method_decl', 1, undef
3147             ],
3148             [#Rule 77
3149             'method_decl', 1, undef
3150             ],
3151             [#Rule 78
3152             'method_decl', 1, undef
3153             ],
3154             [#Rule 79
3155             'const', 1,
3156             sub
3157             #line 216 "XSP.yp"
3158             { 1 }
3159             ],
3160             [#Rule 80
3161             'const', 0,
3162             sub
3163             #line 217 "XSP.yp"
3164             { 0 }
3165             ],
3166             [#Rule 81
3167             'virtual', 1, undef
3168             ],
3169             [#Rule 82
3170             'static', 1, undef
3171             ],
3172             [#Rule 83
3173             'static', 1, undef
3174             ],
3175             [#Rule 84
3176             'static', 1,
3177             sub
3178             #line 223 "XSP.yp"
3179             { 'package_static' }
3180             ],
3181             [#Rule 85
3182             'looks_like_function', 6,
3183             sub
3184             #line 228 "XSP.yp"
3185             {
3186             return { ret_type => $_[1],
3187             name => $_[2],
3188             arguments => $_[4],
3189             const => $_[6],
3190             };
3191             }
3192             ],
3193             [#Rule 86
3194             'looks_like_renamed_function', 1, undef
3195             ],
3196             [#Rule 87
3197             'looks_like_renamed_function', 2,
3198             sub
3199             #line 239 "XSP.yp"
3200             { $_[2]->{perl_name} = $_[1]; $_[2] }
3201             ],
3202             [#Rule 88
3203             'function_decl', 2,
3204             sub
3205             #line 242 "XSP.yp"
3206             { add_data_function( $_[0],
3207             name => $_[1]->{name},
3208             perl_name => $_[1]->{perl_name},
3209             ret_type => $_[1]->{ret_type},
3210             arguments => $_[1]->{arguments},
3211             condition => $_[0]->get_conditional,
3212             @{$_[2]} ) }
3213             ],
3214             [#Rule 89
3215             'ctor', 5,
3216             sub
3217             #line 251 "XSP.yp"
3218             { add_data_ctor( $_[0], name => $_[1],
3219             arguments => $_[3],
3220             condition => $_[0]->get_conditional,
3221             @{ $_[5] } ) }
3222             ],
3223             [#Rule 90
3224             'ctor', 2,
3225             sub
3226             #line 255 "XSP.yp"
3227             { $_[2]->set_perl_name( $_[1] ); $_[2] }
3228             ],
3229             [#Rule 91
3230             'dtor', 5,
3231             sub
3232             #line 258 "XSP.yp"
3233             { add_data_dtor( $_[0], name => $_[2],
3234             condition => $_[0]->get_conditional,
3235             @{ $_[5] },
3236             ) }
3237             ],
3238             [#Rule 92
3239             'dtor', 2,
3240             sub
3241             #line 262 "XSP.yp"
3242             { $_[2]->set_perl_name( $_[1] ); $_[2] }
3243             ],
3244             [#Rule 93
3245             'dtor', 2,
3246             sub
3247             #line 263 "XSP.yp"
3248             { $_[2]->set_virtual( 1 ); $_[2] }
3249             ],
3250             [#Rule 94
3251             'function_metadata', 2,
3252             sub
3253             #line 265 "XSP.yp"
3254             { [ @{$_[1]}, @{$_[2]} ] }
3255             ],
3256             [#Rule 95
3257             'function_metadata', 0,
3258             sub
3259             #line 266 "XSP.yp"
3260             { [] }
3261             ],
3262             [#Rule 96
3263             'nmethod', 2,
3264             sub
3265             #line 271 "XSP.yp"
3266             { my $m = add_data_method
3267             ( $_[0],
3268             name => $_[1]->{name},
3269             perl_name => $_[1]->{perl_name},
3270             ret_type => $_[1]->{ret_type},
3271             arguments => $_[1]->{arguments},
3272             const => $_[1]->{const},
3273             condition => $_[0]->get_conditional,
3274             @{$_[2]},
3275             );
3276             $m
3277             }
3278             ],
3279             [#Rule 97
3280             'nmethod', 2,
3281             sub
3282             #line 284 "XSP.yp"
3283             { $_[2]->set_static( $_[1] ); $_[2] }
3284             ],
3285             [#Rule 98
3286             'vmethod', 1, undef
3287             ],
3288             [#Rule 99
3289             'vmethod', 2,
3290             sub
3291             #line 289 "XSP.yp"
3292             { $_[2]->set_perl_name( $_[1] ); $_[2] }
3293             ],
3294             [#Rule 100
3295             '_vmethod', 3,
3296             sub
3297             #line 294 "XSP.yp"
3298             { my $m = add_data_method
3299             ( $_[0],
3300             name => $_[2]->{name},
3301             perl_name => $_[2]->{perl_name},
3302             ret_type => $_[2]->{ret_type},
3303             arguments => $_[2]->{arguments},
3304             const => $_[2]->{const},
3305             condition => $_[0]->get_conditional,
3306             @{$_[3]},
3307             );
3308             $m->set_virtual( 1 );
3309             $m
3310             }
3311             ],
3312             [#Rule 101
3313             '_vmethod', 5,
3314             sub
3315             #line 308 "XSP.yp"
3316             { my $m = add_data_method
3317             ( $_[0],
3318             name => $_[2]->{name},
3319             perl_name => $_[2]->{perl_name},
3320             ret_type => $_[2]->{ret_type},
3321             arguments => $_[2]->{arguments},
3322             const => $_[2]->{const},
3323             condition => $_[0]->get_conditional,
3324             @{$_[5]},
3325             );
3326             die "Invalid pure virtual method" unless $_[4] eq '0';
3327             $m->set_virtual( 2 );
3328             $m
3329             }
3330             ],
3331             [#Rule 102
3332             '_function_metadata', 1, undef
3333             ],
3334             [#Rule 103
3335             '_function_metadata', 1, undef
3336             ],
3337             [#Rule 104
3338             '_function_metadata', 1, undef
3339             ],
3340             [#Rule 105
3341             '_function_metadata', 1, undef
3342             ],
3343             [#Rule 106
3344             '_function_metadata', 1, undef
3345             ],
3346             [#Rule 107
3347             '_function_metadata', 1, undef
3348             ],
3349             [#Rule 108
3350             'perc_name', 4,
3351             sub
3352             #line 332 "XSP.yp"
3353             { $_[3] }
3354             ],
3355             [#Rule 109
3356             'perc_alias', 6,
3357             sub
3358             #line 333 "XSP.yp"
3359             { [ alias => [$_[3], $_[5]] ] }
3360             ],
3361             [#Rule 110
3362             'perc_package', 4,
3363             sub
3364             #line 334 "XSP.yp"
3365             { $_[3] }
3366             ],
3367             [#Rule 111
3368             'perc_module', 4,
3369             sub
3370             #line 335 "XSP.yp"
3371             { $_[3] }
3372             ],
3373             [#Rule 112
3374             'perc_file', 4,
3375             sub
3376             #line 336 "XSP.yp"
3377             { $_[3] }
3378             ],
3379             [#Rule 113
3380             'perc_loadplugin', 4,
3381             sub
3382             #line 337 "XSP.yp"
3383             { $_[3] }
3384             ],
3385             [#Rule 114
3386             'perc_include', 4,
3387             sub
3388             #line 338 "XSP.yp"
3389             { $_[3] }
3390             ],
3391             [#Rule 115
3392             'perc_code', 2,
3393             sub
3394             #line 339 "XSP.yp"
3395             { [ code => $_[2] ] }
3396             ],
3397             [#Rule 116
3398             'perc_cleanup', 2,
3399             sub
3400             #line 340 "XSP.yp"
3401             { [ cleanup => $_[2] ] }
3402             ],
3403             [#Rule 117
3404             'perc_postcall', 2,
3405             sub
3406             #line 341 "XSP.yp"
3407             { [ postcall => $_[2] ] }
3408             ],
3409             [#Rule 118
3410             'perc_catch', 4,
3411             sub
3412             #line 342 "XSP.yp"
3413             { [ map {(catch => $_)} @{$_[3]} ] }
3414             ],
3415             [#Rule 119
3416             'perc_any', 4,
3417             sub
3418             #line 347 "XSP.yp"
3419             { [ tag => { any => $_[1], named => $_[3] } ] }
3420             ],
3421             [#Rule 120
3422             'perc_any', 5,
3423             sub
3424             #line 349 "XSP.yp"
3425             { [ tag => { any => $_[1], positional => [ $_[3], @{$_[5]} ] } ] }
3426             ],
3427             [#Rule 121
3428             'perc_any', 3,
3429             sub
3430             #line 351 "XSP.yp"
3431             { [ tag => { any => $_[1], positional => [ $_[2], @{$_[3]} ] } ] }
3432             ],
3433             [#Rule 122
3434             'perc_any', 1,
3435             sub
3436             #line 353 "XSP.yp"
3437             { [ tag => { any => $_[1] } ] }
3438             ],
3439             [#Rule 123
3440             'perc_any_args', 1,
3441             sub
3442             #line 357 "XSP.yp"
3443             { $_[1] }
3444             ],
3445             [#Rule 124
3446             'perc_any_args', 2,
3447             sub
3448             #line 358 "XSP.yp"
3449             { [ @{$_[1]}, @{$_[2]} ] }
3450             ],
3451             [#Rule 125
3452             'perc_any_arg', 3,
3453             sub
3454             #line 362 "XSP.yp"
3455             { [ $_[1] => $_[2] ] }
3456             ],
3457             [#Rule 126
3458             'perc_any_arg', 2,
3459             sub
3460             #line 363 "XSP.yp"
3461             { [ name => $_[1] ] }
3462             ],
3463             [#Rule 127
3464             'type', 2,
3465             sub
3466             #line 367 "XSP.yp"
3467             { make_const( $_[2] ) }
3468             ],
3469             [#Rule 128
3470             'type', 1, undef
3471             ],
3472             [#Rule 129
3473             'nconsttype', 2,
3474             sub
3475             #line 372 "XSP.yp"
3476             { make_ptr( $_[1] ) }
3477             ],
3478             [#Rule 130
3479             'nconsttype', 2,
3480             sub
3481             #line 373 "XSP.yp"
3482             { make_ref( $_[1] ) }
3483             ],
3484             [#Rule 131
3485             'nconsttype', 1,
3486             sub
3487             #line 374 "XSP.yp"
3488             { make_type( $_[1] ) }
3489             ],
3490             [#Rule 132
3491             'nconsttype', 1, undef
3492             ],
3493             [#Rule 133
3494             'type_name', 1, undef
3495             ],
3496             [#Rule 134
3497             'type_name', 1, undef
3498             ],
3499             [#Rule 135
3500             'type_name', 1, undef
3501             ],
3502             [#Rule 136
3503             'type_name', 1,
3504             sub
3505             #line 382 "XSP.yp"
3506             { 'unsigned int' }
3507             ],
3508             [#Rule 137
3509             'type_name', 2,
3510             sub
3511             #line 383 "XSP.yp"
3512             { 'unsigned' . ' ' . $_[2] }
3513             ],
3514             [#Rule 138
3515             'basic_type', 1, undef
3516             ],
3517             [#Rule 139
3518             'basic_type', 1, undef
3519             ],
3520             [#Rule 140
3521             'basic_type', 1, undef
3522             ],
3523             [#Rule 141
3524             'basic_type', 1, undef
3525             ],
3526             [#Rule 142
3527             'basic_type', 2, undef
3528             ],
3529             [#Rule 143
3530             'basic_type', 2, undef
3531             ],
3532             [#Rule 144
3533             'template', 4,
3534             sub
3535             #line 389 "XSP.yp"
3536             { make_template( $_[1], $_[3] ) }
3537             ],
3538             [#Rule 145
3539             'type_list', 1,
3540             sub
3541             #line 393 "XSP.yp"
3542             { [ $_[1] ] }
3543             ],
3544             [#Rule 146
3545             'type_list', 3,
3546             sub
3547             #line 394 "XSP.yp"
3548             { push @{$_[1]}, $_[3]; $_[1] }
3549             ],
3550             [#Rule 147
3551             'class_name', 1, undef
3552             ],
3553             [#Rule 148
3554             'class_name', 2,
3555             sub
3556             #line 398 "XSP.yp"
3557             { $_[1] . '::' . $_[2] }
3558             ],
3559             [#Rule 149
3560             'class_name_list', 1,
3561             sub
3562             #line 401 "XSP.yp"
3563             { [ $_[1] ] }
3564             ],
3565             [#Rule 150
3566             'class_name_list', 3,
3567             sub
3568             #line 402 "XSP.yp"
3569             { push @{$_[1]}, $_[3]; $_[1] }
3570             ],
3571             [#Rule 151
3572             'class_suffix', 2,
3573             sub
3574             #line 405 "XSP.yp"
3575             { $_[2] }
3576             ],
3577             [#Rule 152
3578             'class_suffix', 3,
3579             sub
3580             #line 406 "XSP.yp"
3581             { $_[1] . '::' . $_[3] }
3582             ],
3583             [#Rule 153
3584             'file_name', 1,
3585             sub
3586             #line 408 "XSP.yp"
3587             { '-' }
3588             ],
3589             [#Rule 154
3590             'file_name', 3,
3591             sub
3592             #line 409 "XSP.yp"
3593             { $_[1] . '.' . $_[3] }
3594             ],
3595             [#Rule 155
3596             'file_name', 3,
3597             sub
3598             #line 410 "XSP.yp"
3599             { $_[1] . '/' . $_[3] }
3600             ],
3601             [#Rule 156
3602             'arg_list', 1, undef
3603             ],
3604             [#Rule 157
3605             'arg_list', 1,
3606             sub
3607             #line 413 "XSP.yp"
3608             { undef }
3609             ],
3610             [#Rule 158
3611             'nonvoid_arg_list', 1,
3612             sub
3613             #line 416 "XSP.yp"
3614             { [ $_[1] ] }
3615             ],
3616             [#Rule 159
3617             'nonvoid_arg_list', 3,
3618             sub
3619             #line 417 "XSP.yp"
3620             { push @{$_[1]}, $_[3]; $_[1] }
3621             ],
3622             [#Rule 160
3623             'nonvoid_arg_list', 0, undef
3624             ],
3625             [#Rule 161
3626             'argument_metadata', 2,
3627             sub
3628             #line 420 "XSP.yp"
3629             { [ @{$_[1]}, @{$_[2]} ] }
3630             ],
3631             [#Rule 162
3632             'argument_metadata', 0,
3633             sub
3634             #line 421 "XSP.yp"
3635             { [] }
3636             ],
3637             [#Rule 163
3638             '_argument_metadata', 1, undef
3639             ],
3640             [#Rule 164
3641             'argument', 5,
3642             sub
3643             #line 427 "XSP.yp"
3644             { make_argument( @_[0, 1], "length($_[4])" ) }
3645             ],
3646             [#Rule 165
3647             'argument', 5,
3648             sub
3649             #line 429 "XSP.yp"
3650             { make_argument( @_[0, 1, 2, 5], @{$_[3]} ) }
3651             ],
3652             [#Rule 166
3653             'argument', 3,
3654             sub
3655             #line 431 "XSP.yp"
3656             { make_argument( @_[0, 1, 2], undef, @{$_[3]} ) }
3657             ],
3658             [#Rule 167
3659             'value', 1, undef
3660             ],
3661             [#Rule 168
3662             'value', 2,
3663             sub
3664             #line 434 "XSP.yp"
3665             { '-' . $_[2] }
3666             ],
3667             [#Rule 169
3668             'value', 1, undef
3669             ],
3670             [#Rule 170
3671             'value', 1, undef
3672             ],
3673             [#Rule 171
3674             'value', 1, undef
3675             ],
3676             [#Rule 172
3677             'value', 4,
3678             sub
3679             #line 438 "XSP.yp"
3680             { "$_[1]($_[3])" }
3681             ],
3682             [#Rule 173
3683             'value_list', 1, undef
3684             ],
3685             [#Rule 174
3686             'value_list', 3,
3687             sub
3688             #line 443 "XSP.yp"
3689             { "$_[1], $_[2]" }
3690             ],
3691             [#Rule 175
3692             'value_list', 0,
3693             sub
3694             #line 444 "XSP.yp"
3695             { "" }
3696             ],
3697             [#Rule 176
3698             'expression', 1, undef
3699             ],
3700             [#Rule 177
3701             'expression', 3,
3702             sub
3703             #line 450 "XSP.yp"
3704             { "$_[1] & $_[3]" }
3705             ],
3706             [#Rule 178
3707             'expression', 3,
3708             sub
3709             #line 452 "XSP.yp"
3710             { "$_[1] | $_[3]" }
3711             ],
3712             [#Rule 179
3713             'special_blocks', 1,
3714             sub
3715             #line 456 "XSP.yp"
3716             { [ $_[1] ] }
3717             ],
3718             [#Rule 180
3719             'special_blocks', 2,
3720             sub
3721             #line 458 "XSP.yp"
3722             { [ @{$_[1]}, $_[2] ] }
3723             ],
3724             [#Rule 181
3725             'special_blocks', 0, undef
3726             ],
3727             [#Rule 182
3728             'special_block', 3,
3729             sub
3730             #line 462 "XSP.yp"
3731             { $_[2] }
3732             ],
3733             [#Rule 183
3734             'special_block', 2,
3735             sub
3736             #line 464 "XSP.yp"
3737             { [] }
3738             ],
3739             [#Rule 184
3740             'special_block_start', 1,
3741             sub
3742             #line 467 "XSP.yp"
3743             { push_lex_mode( $_[0], 'special' ) }
3744             ],
3745             [#Rule 185
3746             'special_block_end', 1,
3747             sub
3748             #line 469 "XSP.yp"
3749             { pop_lex_mode( $_[0], 'special' ) }
3750             ],
3751             [#Rule 186
3752             'lines', 1,
3753             sub
3754             #line 471 "XSP.yp"
3755             { [ $_[1] ] }
3756             ],
3757             [#Rule 187
3758             'lines', 2,
3759             sub
3760             #line 472 "XSP.yp"
3761             { push @{$_[1]}, $_[2]; $_[1] }
3762             ]
3763             ],
3764             @_);
3765             bless($self,$class);
3766             }
3767              
3768             #line 474 "XSP.yp"
3769              
3770              
3771             use ExtUtils::XSpp::Lexer;
3772              
3773             1;