cvsuser     01/09/17 09:47:20

  Modified:    .        assemble.pl
  Log:
  added some default equates, and if they're sub references, they are computed
  each time it is referenced.
  
  Revision  Changes    Path
  1.25      +12 -3     parrot/assemble.pl
  
  Index: assemble.pl
  ===================================================================
  RCS file: /home/perlcvs/parrot/assemble.pl,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -w -r1.24 -r1.25
  --- assemble.pl       2001/09/16 18:25:27     1.24
  +++ assemble.pl       2001/09/17 16:47:20     1.25
  @@ -18,7 +18,7 @@
                      'listing=s'));
   
   if($options{'version'}) {
  -    print $0,'Version $Id: assemble.pl,v 1.24 2001/09/16 18:25:27 bdwheele Exp $ 
',"\n";
  +    print $0,'Version $Id: assemble.pl,v 1.25 2001/09/17 16:47:20 bdwheele Exp $ 
',"\n";
       exit;
   }
   
  @@ -68,11 +68,16 @@
   
   
   
  +
   # read source and assemble
   my $pc=0; my $op_pc=0;
  -my ($bytecode,%label,%fixup,%constants,@constants,%equate);
  +my ($bytecode,%label,%fixup,%constants,@constants);
   my (%local_label, %local_fixup, $last_label);
   my $line=0;
  +my %equate=('*'=>sub { return $pc },
  +         '__DATE__'=>'"'.scalar(localtime).'"',
  +         '__VERSION__'=>'" $Revision: 1.25 $ "',
  +         '__LINE__' => sub { return $line });
   while(<>) {
       $line++;
       chomp;
  @@ -150,7 +155,11 @@
        foreach (@args) {
            if(exists($equate{$_})) {
                # substitute the equate value
  +             if(ref($equate{$_})) {
  +                 $_=&{$equate{$_}};
  +             } else {
                $_=$equate{$_};
  +             }
                s/\"([^\\\"]*(?:\\.[^\\\"]*)*)\"/constantize($1)/eg;
            }
            if(m/^([INPS])\d+$/) {
  
  
  

Reply via email to