cvsuser 04/07/22 02:27:22
Modified: . MANIFEST
languages/python pie-thon.pl
languages/python/t/basic 02_expr.t
Added: languages/python pie-thon
Log:
Pie-thon 88 - unary_negative; pie-thon driver shell
Revision Changes Path
1.708 +1 -0 parrot/MANIFEST
Index: MANIFEST
===================================================================
RCS file: /cvs/public/parrot/MANIFEST,v
retrieving revision 1.707
retrieving revision 1.708
diff -u -w -r1.707 -r1.708
--- MANIFEST 16 Jul 2004 16:09:07 -0000 1.707
+++ MANIFEST 22 Jul 2004 09:27:15 -0000 1.708
@@ -2264,6 +2264,7 @@
languages/python/python.prd []
languages/python/mdis.py []
languages/python/mydis.py []
+languages/python/pie-thon []
languages/python/pie-thon.pl []
languages/python/t/harness []
languages/python/t/basic/01_hello.t []
1.60 +31 -3 parrot/languages/python/pie-thon.pl
Index: pie-thon.pl
===================================================================
RCS file: /cvs/public/parrot/languages/python/pie-thon.pl,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -w -r1.59 -r1.60
--- pie-thon.pl 22 Jul 2004 08:01:19 -0000 1.59
+++ pie-thon.pl 22 Jul 2004 09:27:19 -0000 1.60
@@ -565,12 +565,16 @@
my ($n, $c, $cmt) = @_;
my $tos = pop @stack;
my $p = $tos->[1];
- if ($globals{$c}) {
+ my $t;
+ if ($t=$globals{$c}) {
+ if ($t ne $p) {
print <<EOC;
- assign $c, $p;
+ assign $t, $p
EOC
}
+ }
else {
+ $p = promote($tos);
print <<EOC;
global "$c" = $p $cmt
EOC
@@ -910,6 +914,30 @@
}
}
+sub UNARY_POSITIVE
+{
+ my (undef, $c, $cmt) = @_;
+ my $t = pop @stack;
+ my $p = $t->[1];
+ print <<EOC;
+ \t $cmt
+EOC
+ push @stack, [-1, $p, 'P'];
+}
+
+sub UNARY_NEGATIVE
+{
+ my (undef, $c, $cmt) = @_;
+ my $t = pop @stack;
+ my $n = temp('P');
+ my $p = $t->[1];
+ print <<EOC;
+ $n = new $DEFVAR
+ neg $n, $p $cmt
+EOC
+ push @stack, [-1, $n, 'P'];
+}
+
sub except_compare
{
my ($l, $r) = @_;
1.1 parrot/languages/python/pie-thon
Index: pie-thon
===================================================================
# pie-thon x.py [ parrot-options ]
f=${1%%".py"}
[ $f.py -nt $f.pbc ] && rm -f $f.pbc
[ -e $f.pbc ] || (
perl pie-thon.pl $1 > $f.pir
../../parrot -o $f.pbc -Oc $f.pir
)
../../parrot -j --python "${@:2}" $f.pbc
1.6 +8 -2 parrot/languages/python/t/basic/02_expr.t
Index: 02_expr.t
===================================================================
RCS file: /cvs/public/parrot/languages/python/t/basic/02_expr.t,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -w -r1.5 -r1.6
--- 02_expr.t 22 Jul 2004 08:01:27 -0000 1.5
+++ 02_expr.t 22 Jul 2004 09:27:22 -0000 1.6
@@ -1,9 +1,9 @@
-# $Id: 02_expr.t,v 1.5 2004/07/22 08:01:27 leo Exp $
+# $Id: 02_expr.t,v 1.6 2004/07/22 09:27:22 leo Exp $
use strict;
use lib '../../lib';
-use Parrot::Test tests => 8;
+use Parrot::Test tests => 9;
sub test {
language_output_is('python', $_[0], '', $_[1]);
@@ -64,3 +64,9 @@
if __name__ == '__main__':
main()
CODE
+
+test( <<'CODE', 'neg' );
+a = 3
+print -a
+print +a - -a
+CODE