Author: pmichaud
Date: Thu Jan 25 12:31:11 2007
New Revision: 16793
Added:
trunk/languages/perl6/src/classes/List.pir
Modified:
trunk/MANIFEST
trunk/languages/perl6/config/makefiles/root.in
trunk/languages/perl6/src/ (props changed)
trunk/languages/perl6/src/PAST/Grammar.tg
trunk/languages/perl6/src/builtins/list.pir
trunk/languages/perl6/src/builtins/range.pir
trunk/languages/perl6/src/parser/ (props changed)
Log:
[perl6]: Refactor, part 2
* Move List object methods into src/classes/List.pir
* Update some svn:ignore properties
Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST (original)
+++ trunk/MANIFEST Thu Jan 25 12:31:11 2007
@@ -1539,6 +1539,7 @@
languages/perl6/src/builtins/range.pir [perl6]
languages/perl6/src/builtins/string.pir [perl6]
languages/perl6/src/classes/Code.pir [perl6]
+languages/perl6/src/classes/List.pir [perl6]
languages/perl6/src/classes/Num.pir [perl6]
languages/perl6/src/classes/Str.pir [perl6]
languages/perl6/src/parser/expression.pir [perl6]
Modified: trunk/languages/perl6/config/makefiles/root.in
==============================================================================
--- trunk/languages/perl6/config/makefiles/root.in (original)
+++ trunk/languages/perl6/config/makefiles/root.in Thu Jan 25 12:31:11 2007
@@ -44,6 +44,7 @@
src/builtins/range.pir \
src/builtins/string.pir \
src/classes/Code.pir \
+ src/classes/List.pir \
src/classes/Num.pir \
src/classes/Str.pir
Modified: trunk/languages/perl6/src/PAST/Grammar.tg
==============================================================================
--- trunk/languages/perl6/src/PAST/Grammar.tg (original)
+++ trunk/languages/perl6/src/PAST/Grammar.tg Thu Jan 25 12:31:11 2007
@@ -298,7 +298,7 @@
.return cpast.'new'('PAST::Var', cpast, xpast, 'node'=>node,
'scope'=>'keyed', 'viviself'=>'.Undef', 'islvalue'=>islvalue)
postcfix_bracket:
- cpast.'viviself'("'Perl6List'")
+ cpast.'viviself'("'List'")
.return cpast.'new'('PAST::Var', cpast, xpast, 'node'=>node,
'scope'=>'keyed', 'viviself'=>'.Undef', 'islvalue'=>islvalue)
postcfix_paren:
@@ -512,7 +512,7 @@
viviself = '.Undef'
goto have_viviself
sigil_array:
- viviself = "'Perl6List'"
+ viviself = "'List'"
goto have_viviself
sigil_hash:
viviself = "'Perl6Hash'"
Modified: trunk/languages/perl6/src/builtins/list.pir
==============================================================================
--- trunk/languages/perl6/src/builtins/list.pir (original)
+++ trunk/languages/perl6/src/builtins/list.pir Thu Jan 25 12:31:11 2007
@@ -2,71 +2,15 @@
=head1 NAME
-src/builtins/list.pir - Perl 6 List class
+src/builtins/list.pir - Perl 6 list operators
=head1 Functions
=over 4
-=cut
-
-.namespace
-
-.sub '__onload' :load :init
- $P0 = subclass 'ResizablePMCArray', 'Perl6List'
-.end
-
-# FIXME: The 'clone' opcode doesn't seem to naturally work
-# for subclasses of ResizablePMCArray, so we write our own here.
-# FIXME: #2 - iterators don't properly work for subclasses
-# of ResizablePMCArray (RT #40958), so we have to enumerate the
-# elements by index.
-
-.namespace [ 'Perl6List' ]
-
-.sub '__clone' :method
- $P0 = new 'Perl6List'
- $I1 = elements self
- $I0 = 0
- loop:
- if $I0 >= $I1 goto end
- $P1 = self[$I0]
- $P0[$I0] = $P1
- inc $I0
- goto loop
- end:
- .return ($P0)
-.end
-
-.namespace [ 'Perl6List' ]
-
-.sub '__get_string' :method
- $S0 = ''
- $I1 = elements self
- if $I1 < 1 goto end
- $I0 = 1
- $S0 = self[0]
- loop:
- if $I0 >= $I1 goto end
- $S1 = self[$I0]
- $S0 = concat $S0, ' '
- $S0 .= $S1
- inc $I0
- goto loop
- end:
- .return ($S0)
-.end
-
-
-.sub 'elems' :method
- $I0 = elements self
- .return ($I0)
-.end
-
-
=item C<list(...)>
-Build a Perl6List from its arguments.
+Build a List from its arguments.
=cut
@@ -75,7 +19,7 @@
.sub 'list'
.param pmc args :slurpy
.local pmc list
- list = new 'Perl6List'
+ list = new 'List'
args_loop:
unless args goto end
$P0 = shift args
Modified: trunk/languages/perl6/src/builtins/range.pir
==============================================================================
--- trunk/languages/perl6/src/builtins/range.pir (original)
+++ trunk/languages/perl6/src/builtins/range.pir Thu Jan 25 12:31:11 2007
@@ -6,7 +6,7 @@
.param num a
.param num b
.local pmc range
- range = new 'Perl6List'
+ range = new 'List'
loop:
if a > b goto end
push range, a
Added: trunk/languages/perl6/src/classes/List.pir
==============================================================================
--- (empty file)
+++ trunk/languages/perl6/src/classes/List.pir Thu Jan 25 12:31:11 2007
@@ -0,0 +1,70 @@
+## $Id: list.pir 15768 2006-11-22 19:38:04Z pmichaud $
+
+=head1 NAME
+
+src/classes/List.pir - Perl 6 List class
+
+=head1 Functions
+
+=over 4
+
+=cut
+
+.namespace
+
+.sub '__onload' :load :init
+ $P0 = subclass 'ResizablePMCArray', 'List'
+.end
+
+# FIXME: The 'clone' opcode doesn't seem to naturally work
+# for subclasses of ResizablePMCArray, so we write our own here.
+# FIXME: #2 - iterators don't properly work for subclasses
+# of ResizablePMCArray (RT #40958), so we have to enumerate the
+# elements by index.
+
+.namespace [ 'List' ]
+
+.sub '__clone' :method
+ $P0 = new 'List'
+ $I1 = elements self
+ $I0 = 0
+ loop:
+ if $I0 >= $I1 goto end
+ $P1 = self[$I0]
+ $P0[$I0] = $P1
+ inc $I0
+ goto loop
+ end:
+ .return ($P0)
+.end
+
+
+.sub '__get_string' :method
+ $S0 = ''
+ $I1 = elements self
+ if $I1 < 1 goto end
+ $I0 = 1
+ $S0 = self[0]
+ loop:
+ if $I0 >= $I1 goto end
+ $S1 = self[$I0]
+ $S0 = concat $S0, ' '
+ $S0 .= $S1
+ inc $I0
+ goto loop
+ end:
+ .return ($S0)
+.end
+
+
+.sub 'elems' :method
+ $I0 = elements self
+ .return ($I0)
+.end
+
+
+=back
+
+=cut
+
+## vim: expandtab sw=4