<<
Handling non-nesting
>>
Easy: a
nesting
counter that is non-zero when inside a declaration.
Pre-invalidate fragments if
nesting>0
on fragment enter or exit.
Better: combine fragments. If
nesting>0
on fragment boundary, combine neighboring fragments into one.
Difficulty: must test conditionals before first combined fragment.
Dis-allowed if conditional moved across
#define
,
#undef
or
#include
.