Next: , Up: Common Patterns


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.