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
  
  
  

Reply via email to