cvsuser     04/08/02 22:14:23

  Modified:    ast      node.c
               languages/python/t/basic 02_expr.t
  Log:
  ast 5 - better var handling and code expansion
  
  Revision  Changes    Path
  1.7       +22 -22    parrot/ast/node.c
  
  Index: node.c
  ===================================================================
  RCS file: /cvs/public/parrot/ast/node.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -w -r1.6 -r1.7
  --- node.c    2 Aug 2004 13:33:02 -0000       1.6
  +++ node.c    3 Aug 2004 05:14:19 -0000       1.7
  @@ -1,6 +1,6 @@
   /*
   Copyright: 2001-2004 The Perl Foundation.  All Rights Reserved.
  -$Id: node.c,v 1.6 2004/08/02 13:33:02 leo Exp $
  +$Id: node.c,v 1.7 2004/08/03 05:14:19 leo Exp $
   
   =head1 NAME
   
  @@ -182,24 +182,25 @@
   }
   
   static nodeType*
  -exp_default(Interp* interpreter, nodeType *p)
  +exp_next(Interp* interpreter, nodeType *p)
   {
  -    nodeType *child;
  -    nodeType *next = p->next;
  -    child = NODE0(p);
  -    if (child)
  -        child->expand(interpreter, child);
  -    if (next)
  +    nodeType *next;
  +    for (next = p->next; next; next = next->next) {
  +        if (next->expand)
           next->expand(interpreter, next);
  +    }
       return p;
   }
   
   static nodeType*
  -exp_next(Interp* interpreter, nodeType *p)
  +exp_default(Interp* interpreter, nodeType *p)
   {
  -    nodeType *next = p->next;
  -    if (next)
  +    nodeType *next;
  +    next = NODE0(p);
  +    for (; next; next = next->next) {
  +        if (next->expand)
           next->expand(interpreter, next);
  +    }
       return p;
   }
   
  @@ -218,7 +219,7 @@
       regs[0] = NODE0(var)->u.r;
       regs[1] = rhs->u.r;
       insINS(interpreter, unit, ins, "assign", regs, 2);
  -    return exp_next(interpreter, p);
  +    return rhs;
   }
   
   static nodeType*
  @@ -256,7 +257,7 @@
       nodeType *var = NODE0(p);
   
       insert_new(interpreter, var, "Undef");
  -    return exp_next(interpreter, p);
  +    return NULL;
   }
   
   static nodeType*
  @@ -278,8 +279,7 @@
       i->r[1] = mk_pcc_sub(str_dup(i->r[0]->name), 0);
       add_namespace(interpreter, i->r[1]);
       i->r[1]->pcc_sub->pragma = P_MAIN|P_PROTOTYPED ;
  -    doc = NODE0(p);      /* TODO */
  -    return exp_default(interpreter, doc);
  +    return exp_default(interpreter, p);
   }
   
   static nodeType*
  @@ -303,7 +303,7 @@
               fatal(1, "exp_Py_Print", "unknown node to print: '%s'", d->d);
           ins = insINS(interpreter, unit, ins, "print_item", regs, 1);
       }
  -    return exp_next(interpreter, p);
  +    return NULL;
   }
   
   static nodeType*
  @@ -313,19 +313,19 @@
       Instruction *ins = unit->last_ins;
       SymReg *regs[IMCC_MAX_REGS];
       insINS(interpreter, unit, ins, "print_newline", regs, 0);
  -    return exp_next(interpreter, p);
  +    return NULL;
   }
   
   static nodeType*
   exp_Src_File(Interp* interpreter, nodeType *p)
   {
  -    return exp_default(interpreter, p);
  +    return exp_next(interpreter, p);
   }
   
   static nodeType*
   exp_Src_Lines(Interp* interpreter, nodeType *p)
   {
  -    return exp_default(interpreter, p);
  +    return exp_next(interpreter, p);
   }
   
   
  @@ -358,7 +358,7 @@
       { "Src_File",            create_1, exp_Src_File, NULL, NULL },
       { "Src_Line",            create_1, exp_Src_Lines, NULL, NULL },
       { "Stmts",          create_1, exp_default, NULL, NULL },
  -    { "_",              create_0, exp_next, NULL, NULL }
  +    { "_",              create_0, NULL, NULL, NULL }
   #define CONST_NODE 4
   };
   
  
  
  
  1.8       +7 -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.7
  retrieving revision 1.8
  diff -u -w -r1.7 -r1.8
  --- 02_expr.t 2 Aug 2004 13:33:09 -0000       1.7
  +++ 02_expr.t 3 Aug 2004 05:14:23 -0000       1.8
  @@ -1,9 +1,9 @@
  -# $Id: 02_expr.t,v 1.7 2004/08/02 13:33:09 leo Exp $
  +# $Id: 02_expr.t,v 1.8 2004/08/03 05:14:23 leo Exp $
   
   use strict;
   use lib '../../lib';
   
  -use Parrot::Test tests => 10;
  +use Parrot::Test tests => 11;
   
   sub test {
       language_output_is('python', $_[0], '', $_[1]);
  @@ -46,6 +46,11 @@
   print a
   CODE
   
  +test( <<'CODE', 'assign a,b' );
  +a = b = 2
  +print a, b
  +CODE
  +
   SKIP: {
      skip("Not yet", 3);
   
  
  
  

Reply via email to