struct Token{ uint col, line;uint flags;//indicated info about token, serves as both type tag and flag set; //indicates proper type once token was cooked (like "31.415926" -> 3.145926e1) i.e. values are calculatedunion { string chars; float f_val; double d_val; uint uint_val; long long_val; ulnog ulong_val; //... anything else you may need (8 bytes are plenty) }//even then you may use up to 12bytes //total size == 24 or 20 };
I wouldn't convert the string representation to a value unless needed. Even the parser does not need to know.
