The parser gets the type for floating-point numeric constants wrong. The constant 10.0 is typed as T_FLOAT, whereas it should be T_DOUBLE (Ellis & Stroustrup section 2.5.3, "The type of a floating constant is _double_ unless explicitly specified by a suffix". --lars