Skip to content

Commit

Permalink
Ignore arguments to rules for LTM purposes
Browse files Browse the repository at this point in the history
  • Loading branch information
sorear committed Jan 29, 2012
1 parent 20aa772 commit 6915253
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/niecza
Expand Up @@ -89,21 +89,22 @@ method assertion:name ($/) {
[ self.op_for_regex($/, $<nibbler>.ast) ] !!
$<arglist> ?? $<arglist>.ast !! [];

my $callop;
my ($callop, $ltm);
if $is_lexical {
$callop = $OpCallSub.new(invocant => mklex($/, "&$name"),
positionals => [ mklex($/, '$¢'), @$args ]);
} elsif $pname<iname> {
$callop = $Operator_Method.new(name => $pname<iname>, :$args,
meta => '::(').with_args($/, mklex($/, '$¢'));
} else {
$ltm = [ 'Method', $pname<name> ];
$callop = $Operator_Method.new(name => $pname<name>, :$args,
package => $pname<pkg>).with_args($/, mklex($/, '$¢'));
}

my $regex = self.rxembed($/, $callop, True);

make $RxOpSubrule.new(regex => $regex);
make $RxOpSubrule.new(:$regex, :$ltm);
}
make self.rxcapturize($/, ~$<longname>, $/.ast);
}
Expand Down
8 changes: 8 additions & 0 deletions test3.pl
Expand Up @@ -85,3 +85,11 @@
sub foo(%x) { } #OK
dies_ok { foo(3) }, '%x needs Associative';
}

{
my grammar Z5 {
token TOP { fo* | <k(5)> }
token k( $ ) { foo }
}
ok Z5.parse('foo')<k>.defined, 'arguments do not disturb LTM';
}

0 comments on commit 6915253

Please sign in to comment.