/usr/share/perl5/Inline/C/Parser/Pegex/AST.pm is in libinline-c-perl 0.76-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 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;
|