Sidef

 view release on metacpan or  search on metacpan

lib/Sidef/Parser.pm  view on Meta::CPAN

            }

            if (exists($self->{keywords}{$name}) or exists($self->{built_in_classes}{$name})) {
                $self->fatal_error(
                                   code  => $_,
                                   pos   => (pos($_) - length($name)),
                                   error => "`$name` is either a keyword or a predefined variable!",
                                  );
            }

            my $subset = bless({name => $name, class => $class_name}, 'Sidef::Variable::Subset');

            unshift @{$self->{vars}{$class_name}},
              {
                obj   => $subset,
                name  => $name,
                count => 0,
                type  => 'subset',
                line  => $self->{line},
              };

lib/Sidef/Parser.pm  view on Meta::CPAN

                and $type ne 'class'
                and (exists($self->{keywords}{$name}) or exists($self->{built_in_classes}{$name}))) {
                $self->fatal_error(
                                   code  => $_,
                                   pos   => $-[0],
                                   error => "`$name` is either a keyword or a predefined variable!",
                                  );
            }

            my $obj =
                ($type eq 'func' or $type eq 'method') ? bless({name => $name, type => $type, class => $class_name}, 'Sidef::Variable::Variable')
              : $type eq 'class' ? bless({name => ($built_in_obj // $name), class => $class_name}, 'Sidef::Variable::ClassInit')
              : $self->fatal_error(
                                   error  => "invalid type",
                                   reason => "expected a magic thing to happen",
                                   code   => $_,
                                   pos    => pos($_),
                                  );

            if ($name ne '') {
                my $var = $self->find_var($name, $class_name);

lib/Sidef/Parser.pm  view on Meta::CPAN

        # Regular expression
        if (m{\G(?=/)} || /\G%r\b/gc) {
            my $string = $self->get_quoted_string(code => $opt{code});
            return Sidef::Types::Regex::Regex->new($string, /\G($self->{match_flags_re})/goc ? $1 : undef);
        }

        # Class variable in form of `Class!var_name`
        if (/\G($self->{var_name_re})!($self->{var_name_re})/goc) {
            my ($class_name, $var_name) = ($1, $2);
            my $class_obj = $self->parse_expr(code => \$class_name);
            return (bless {class => $class_obj, name => $var_name}, 'Sidef::Variable::ClassVar');
        }

        # Static object (like String or nil)
        if (/$self->{static_obj_re}/goc) {
            return $^R;
        }

        if (/\G__MAIN__\b/gc) {
            if (-e $self->{script_name}) {
                state $x = require Cwd;

lib/Sidef/Parser.pm  view on Meta::CPAN

                                      );
                }

                $var->{count}++;
                return $var->{obj};
            }

            if ($name eq 'ARGV' or $name eq 'ENV') {

                my $type     = 'var';
                my $variable = bless({name => $name, type => $type, class => $class}, 'Sidef::Variable::Variable');

                unshift @{$self->{vars}{$class}},
                  {
                    obj   => $variable,
                    name  => $name,
                    count => 1,
                    type  => $type,
                    line  => $self->{line},
                  };



( run in 1.995 second using v1.01-cache-2.11-cpan-140bd7fdf52 )