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