PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` use strict; use warnings; package Inline::C::Parser::Pegex::AST; use Pegex::Base; extends 'Pegex::Tree'; has data => {}; sub initial { my ($self) = @_; my $data = { functions => [], function => {}, done => {}, }; $self->data($data); } sub final { my ($self, $got) = @_; return $self->{data}; } sub got_function_definition { my ($self, $ast) = @_; my ($rtype, $name, $args) = @$ast; my ($rname, $rstars) = @$rtype; my $data = $self->data; my $def = $data->{function}{$name} = {}; push @{$data->{functions}}, $name; $def->{return_type} = $rname . ($rstars ? " $rstars" : ''); $def->{arg_names} = []; $def->{arg_types} = []; for my $arg (@$args) { my ($type, $stars, $name) = @$arg; push @{$def->{arg_names}}, $name; push @{$def->{arg_types}}, $type . ($stars ? " $stars" : ''); } $data->{done}{$name} = 1; return; } sub got_arg { my ($self, $ast) = @_; pop @$ast; return $ast; } 1;