Implicit enum conversions are a stupid PITA

Ellery Newcomer ellery-newcomer at utulsa.edu
Thu Mar 25 17:32:16 PDT 2010


On 03/25/2010 06:21 PM, Walter Bright wrote:
> Ellery Newcomer wrote:
>> What do you think of Erlang's bit syntax if you've looked at it, or
>> could you if you haven't?
>
> I know nothing about it.

I suppose you could think of it as sort of a regex-for-generic-data, but 
you can use it as a pattern matcher or a data constructor.

The example Armstrong gives in Programming Erlang is

<<2#11111111111:11,B:2,C:2,_D:1,E:4,F:2,G:1,Bits:9>> = X

where X is assumedly a byte array or something.

the first 11 bits are asserted to be 1, and the remaining bits get 
associated with the following variables.

Yeah, that example isn't much more impressive than bitfields.

You could do something like

<<N:32, Data:N/binary, _/binary>> = X

which would interpret the first four bytes as a length field, bind the 
next N bytes to Data, and ignore the rest..

The general syntax for them should look something like

Bit:   << >>
        << E >>

E:     E , E1
        E1

E1:    Value
        Value : Size
        Value / TypeSpecList
        Value : Size / TypeSpecList

//integral, fp, or binary (byte arrays, strings, etc) type
Value: Expression

// integral type
Size:  Expression

TypeSpecList: TypeSpecList - TypeSpec
               TypeSpec

TypeSpec: Endianness
           Sign
           Type
           Unit

// default is big
Endianness:  big
              little
              native

Sign:  signed
        unsigned

Type:  integer
        float
        binary

//Size*Unit is the number of bits that get matched
// Unit defaults to 1 for Type = integer or float,
                     8 for Type = binary
Unit:  IntegerLiteral



More information about the Digitalmars-d mailing list