_Coroutine FloatConstant { char ch; // character passed by cocaller // YOU ADD MEMBERS HERE void main(); // coroutine main public: enum { EOT = '\003' }; // end of text _Exception Match { // last character match public: double value; // floating-point value Match( double value ) : value( value ) {} }; _Exception Error {}; // last character invalid void next( char c ) { ch = c; // communication input resume(); // activate } }; /* Test data +12.E-2 -12.5 12. -.5 .1e+123 -12.5F 002.l +01234567890123456. a +. 12.0 12.0 1.2.0a - 12.5F 123.ee 0123456789.01234567E-0124 */