concat.pm
来自「这是一个DFA简化和生成LL(1)分析表的程序,自动生成表格及图形」· PM 代码 · 共 54 行
PM
54 行
#: Kid/AST/concat.pm - generated from template/leftop.pm.tt
package concat;
use strict;
use warnings;
#use Data::Dumper::Simple;
sub concat {
my $self = shift;
if (!exists $self->{concat}) {
my $rlist = $self->{'modified_atom(s?)'};
return nil->new if not $rlist;
my @modified_atoms = @$rlist;
my $modified_atom = pop @modified_atoms;
my $concat;
if (@modified_atoms) {
$concat = bless {'modified_atom(s?)' => \@modified_atoms}, ref $self;
} else {
$concat = nil->new;
}
$self->{concat} = $concat;
$self->{modified_atom} = $modified_atom;
#delete $self->{'modified_atom(s?)'};
#warn Dumper($self);
}
return $self->{concat};
}
sub modified_atom {
my $self = shift;
if (!exists $self->{modified_atom}) {
$self->concat;
}
if (@_) {
$self->{modified_atom} = shift;
} else {
$self->{modified_atom} || nil->new;
}
}
sub get_all {
my $list = shift;
my @elems;
while (ref $list eq 'concat') {
unshift @elems, $list->modified_atom;
$list = $list->concat;
}
@elems;
}
1;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?