📄 alternation.pm
字号:
#: Kid/AST/alternation.pm - generated from template/leftop.pm.tt
package alternation;
use strict;
use warnings;
#use Data::Dumper::Simple;
sub alternation {
my $self = shift;
if (!exists $self->{alternation}) {
my $rlist = $self->{'concat(s)'};
return nil->new if not $rlist;
my @concats = @$rlist;
my $concat = pop @concats;
my $alternation;
if (@concats) {
$alternation = bless {'concat(s)' => \@concats}, ref $self;
} else {
$alternation = nil->new;
}
$self->{alternation} = $alternation;
$self->{concat} = $concat;
#delete $self->{'concat(s)'};
#warn Dumper($self);
}
return $self->{alternation};
}
sub concat {
my $self = shift;
if (!exists $self->{concat}) {
$self->alternation;
}
if (@_) {
$self->{concat} = shift;
} else {
$self->{concat} || nil->new;
}
}
sub get_all {
my $list = shift;
my @elems;
while (ref $list eq 'alternation') {
unshift @elems, $list->concat;
$list = $list->alternation;
}
@elems;
}
1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -