Skip to content

Commit

Permalink
implement require EXPR;
Browse files Browse the repository at this point in the history
  • Loading branch information
moritz committed Sep 24, 2010
1 parent b3efa7a commit 7b21bf1
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
8 changes: 5 additions & 3 deletions src/Perl6/Actions.pm
Expand Up @@ -515,18 +515,20 @@ method statement_control:sym<use>($/) {
}

method statement_control:sym<require>($/) {
if $<EXPR> {
if $<module_name> && $<EXPR> {
$/.CURSOR.panic("require with argument list not yet implemented");
}
my $name := $<module_name><longname><name>.Str;
my $name_past := $<module_name>
?? PAST::Val.new(:value($<module_name><longname><name>.Str))
!! $<EXPR>[0].ast;
my @module_loader := Perl6::Grammar::parse_name('Perl6::Module::Loader');
my $past := PAST::Op.new(
:node($/),
:pasttype('callmethod'),
:name('need'),
PAST::Var.new( :name(@module_loader.pop),
:namespace(@module_loader), :scope('package') ),
$name
$name_past
);
make $past;
}
Expand Down
5 changes: 4 additions & 1 deletion src/Perl6/Grammar.pm
Expand Up @@ -462,7 +462,10 @@ token statement_control:sym<use> {

rule statement_control:sym<require> {
<sym>
<module_name> <EXPR>?
[
| <module_name> <EXPR>?
| <EXPR>
]
}

token statement_control:sym<given> {
Expand Down

0 comments on commit 7b21bf1

Please sign in to comment.