Parsing minimization when extracting information from code in the presence of conditional compilation

Exploring and understanding a software system requires extracting meaningful information from it. This in turn involves syntactical analysis of source code, an activity that can be complicated by the use of conditional compilation. In this paper we discuss difficulties when parsing code with conditional compilation. We argue that the effective way to ensure the extraction of all meaningful information from a source file is to parse a set of versions of that file defined by conditional compilation. We then describe a heuristic-based approach to minimize the amount of parsing.