Author: jonathan
Date: Fri Jul 18 06:48:08 2008
New Revision: 29582
Modified:
trunk/languages/perl6/src/parser/actions.pm
trunk/languages/perl6/src/parser/grammar.pg
Log:
[rakudo] role_name goes away, since we want to parse a signature in a role
definition, and an expression when it's used with does. This should somewhat
simplify things when we implement parametric roles. Note role_name is also gone
in STD.pm (though getting to what it has now would take a larger refactor).
Modified: trunk/languages/perl6/src/parser/actions.pm
==============================================================================
--- trunk/languages/perl6/src/parser/actions.pm (original)
+++ trunk/languages/perl6/src/parser/actions.pm Fri Jul 18 06:48:08 2008
@@ -1377,7 +1377,7 @@
:scope('lexical')
),
PAST::Var.new(
- :name(~$_<trait_auxiliary><role_name><name>),
+ :name(~$_<trait_auxiliary><name>),
:scope('package')
)
)
@@ -1625,19 +1625,19 @@
PAST::Op.new(
:pasttype('call'),
:name('!keyword_role'),
- PAST::Val.new( :value(~$<role_name>) )
+ PAST::Val.new( :value(~$<name>) )
)
)
);
# Also store the current namespace.
- $?NS := $<role_name><name><ident>;
+ $?NS := $<name><ident>;
}
else {
# Declare the namespace and that the result block holds things that we
# do "on load".
my $past := $( $<package_block> );
- $past.namespace($<role_name><name><ident>);
+ $past.namespace($<name><ident>);
$past.blocktype('declaration');
$past.pirflags(':init :load');
Modified: trunk/languages/perl6/src/parser/grammar.pg
==============================================================================
--- trunk/languages/perl6/src/parser/grammar.pg (original)
+++ trunk/languages/perl6/src/parser/grammar.pg Fri Jul 18 06:48:08 2008
@@ -353,7 +353,7 @@
rule trait_auxiliary {
| $<sym>=[is] <name><postcircumfix>?
- | $<sym>=[does] <role_name>
+ | $<sym>=[does] <name>['['<EXPR>']']?
| $<sym>=[will] <ident> <block>
}
@@ -362,8 +362,6 @@
| $<sym>=[handles] <EXPR>
}
-token role_name { <name> [ <?before '['> <postcircumfix> ]? }
-
token capterm {
'\\(' <capture> ')'
{*}
@@ -569,7 +567,7 @@
rule role_def {
- <role_name> <trait>* {*} #= open
+ <name>['['<signature>']']? <trait>* {*} #= open
<package_block> {*} #= close
}