# Line comment after #define value #define FOO 42 // a comment int x; ==> Program( PreprocDirective( "#define", Identifier, PreprocArg, LineComment), Declaration(PrimitiveType, Identifier)) # #define without comment #define FOO 42 int x; ==> Program( PreprocDirective( "#define", Identifier, PreprocArg), Declaration(PrimitiveType, Identifier)) # Line comment after #define with macro params #define MAX(a,b) (a > b ? a : b) // max macro int x; ==> Program( PreprocDirective( "#define", Identifier, "(", Identifier, ",", Identifier, ")", PreprocArg, LineComment), Declaration(PrimitiveType, Identifier)) # Line comment after #if #if SOME_FLAG // check flag #endif int x; ==> Program( PreprocDirective( "#if", PreprocArg, LineComment), PreprocDirective( "#endif"), Declaration(PrimitiveType, Identifier))