On Sun, 30 Sep 2001, Josh Wilmes wrote:
>
> Is [EMAIL PROTECTED] working? The message below is the last one I have
> received.
I believe it is. I don't see anything to hitchhiker.org in the mail
queue here.
- ask
> 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
> >
> >
> >
>
>
--
ask bjoern hansen, http://ask.netcetera.dk/ !try; do();