Al,
The question is how do they treat $ in preprocessor tokens. Is it a full equivalent of letter? I.e. is $x a valid identifier? If it is, that's easy - all we need is to add it cclass[] in tokenize.c as a letter and be done with that. If not (i.e. if it can only appear after the first letter), we probably want to either classify it as digit or split the "Digit" bit in two and modify the code checking for it. In any case, we need to figure out what to do with #define A(x,y) x##y A(a,$b) Either $b is an identifier, or it would better be a valid pp-number; otherwise, we'll get the second argument split in two tokens and get a$ b out of that macro.
Item 10 of http://www.open-std.org/jtc1/sc22/wg14/www/docs/n861.htm gives some history and possible solutions. If an implementation supports $ in identifiers, then it is an extension. Implementation extensions are blessed in C99 provided they don't change the behavior of strictly conforming programs. Since $ is not in the basic source character set a program that contains them is not strictly conforming. If sparse supports $ then it just has to do what the implementation it is mimicing does. There is no C Standard behavior as such to worry about. -- Derek M. Jones tel: +44 (0) 1252 520 667 Knowledge Software Ltd mailto:derek@xxxxxxxxxxxx Applications Standards Conformance Testing http://www.knosof.co.uk - To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html