Is [EMAIL PROTECTED] working?   The message below is the last one I have 
received.

--Josh


At 3:46 on 09/27/2001 -0000, [EMAIL PROTECTED] wrote:

> cvsuser     01/09/26 20:46:05
> 
>   Modified:    .        assemble.pl
>   Log:
>   This patch makes integer constants of the form 0b[01]+ work with perl 5.005
.  The oct function in versions of perl before 5.6 did not handle the 0b numeri
c prefix; therefore, it was returning 0.  To fix this, I added a from_binary fu
nction that would take a binary string and return its decimal representation.  
Now, instead of blindly calilng oct, it makes a distinction between 0/0x number
s and 0b numbers.
>   
>   Revision  Changes    Path
>   1.48      +16 -3     parrot/assemble.pl
>   
>   Index: assemble.pl
>   ===================================================================
>   RCS file: /home/perlcvs/parrot/assemble.pl,v
>   retrieving revision 1.47
>   retrieving revision 1.48
>   diff -u -w -r1.47 -r1.48
>   --- assemble.pl     2001/09/26 18:30:43     1.47
>   +++ assemble.pl     2001/09/27 03:46:05     1.48
>   @@ -65,7 +65,7 @@
>    # %equate maps assembler directives to their replacements.
>    my %equate=('*'=>sub { return $pc },
>           '__DATE__'=>'"'.scalar(localtime).'"',
>   -       '__VERSION__'=>'" $Revision: 1.47 $ "',
>   +       '__VERSION__'=>'" $Revision: 1.48 $ "',
>           '__LINE__' => sub { return $line },
>           '__FILE__' => sub { return "\"$file\"" });
>    
>   @@ -126,7 +126,7 @@
>      }
>      
>      if($options{'version'}) {
>   -    print $0,'Version $Id: assemble.pl,v 1.47 2001/09/26 18:30:43 thgibbs 
Exp $ ',"\n";
>   +    print $0,'Version $Id: assemble.pl,v 1.48 2001/09/27 03:46:05 thgibbs 
Exp $ ',"\n";
>        exit;
>      }
>      
>   @@ -616,8 +616,13 @@
>          $args[$_] =~ s/[\[\]]//g;
>        }
>        else {
>   -      $args[$_] = oct($args[$_]) if($args[$_]=~/^0[xb]?[0-9a-f]*$/);
>   +      if ($args[$_] =~ /^0b[01]+$/) {
>   +        $args[$_] = from_binary( $args[$_] );
>        }
>   +      elsif ($args[$_] =~ /^0x?[0-9a-f]*$/) {
>   +        $args[$_] = oct($args[$_]);
>   +      }
>   +    }
>        $pc += sizeof($rtype);
>        $bytecode .= pack_arg($rtype, $args[$_]);
>      }
>   @@ -628,6 +633,14 @@
>    # adds a line to the listing string.
>    sub add_line_to_listing {
>      $listing .= $_[0];
>   +}
>   +
>   +# from_binary
>   +# convert a string of the form 0b[01]+ to a decimal number
>   +sub from_binary {
>   +  my ($pow, $final) = (0,0);
>   +  $final += $_ * 2 ** $pow++ for split //, reverse substr( shift, 2 );
>   +  return $final;
>    }
>    
>    # error
>   
>   
>   


Reply via email to