flex: Numbers

 
 A.4.1 Numbers
 -------------
 
 C99 decimal constant
      '([[:digit:]]{-}[0])[[:digit:]]*'
 
 C99 hexadecimal constant
      '0[xX][[:xdigit:]]+'
 
 C99 octal constant
      '0[01234567]*'
 
 C99 floating point constant
       {dseq}      ([[:digit:]]+)
       {dseq_opt}  ([[:digit:]]*)
       {frac}      (({dseq_opt}"."{dseq})|{dseq}".")
       {exp}       ([eE][+-]?{dseq})
       {exp_opt}   ({exp}?)
       {fsuff}     [flFL]
       {fsuff_opt} ({fsuff}?)
       {hpref}     (0[xX])
       {hdseq}     ([[:xdigit:]]+)
       {hdseq_opt} ([[:xdigit:]]*)
       {hfrac}     (({hdseq_opt}"."{hdseq})|({hdseq}"."))
       {bexp}      ([pP][+-]?{dseq})
       {dfc}       (({frac}{exp_opt}{fsuff_opt})|({dseq}{exp}{fsuff_opt}))
       {hfc}       (({hpref}{hfrac}{bexp}{fsuff_opt})|({hpref}{hdseq}{bexp}{fsuff_opt}))
      
       {c99_floating_point_constant}  ({dfc}|{hfc})
 
      See C99 section 6.4.4.2 for the gory details.