7. A method of parsing a plurality of preprocessor conditional branches of a preprocessor conditional directive statement comprising: using a processing unit, receiving an input from a caller, the input comprising the preprocessor conditional directive statement; using the processing unit, in order to have information available in each parsing path induced by mutually exclusive branches returned to the caller, serializing the input into a stream of tokens produced by following each parsing path induced by mutually exclusive branches of the preprocessor conditional directive statement interrupting a declaration by: labeling tokens belonging to a first parsing path with a first parsing path indicator; labeling tokens belonging to a second parsing path with a second parsing path indicator; fetching the tokens that belong to the first parsing path in a first pass and returning the tokens that belong to the first parsing path to the caller; and fetching the tokens that belong to the second parsing path in a second pass and returning the tokens that belong to the second parsing path to the caller, wherein parsing paths induced by mutually exclusive branches of the preprocessor conditional directive statement are detected by matching preprocessor conditional directives of the preprocessor conditional directive statement.
7. A method of parsing a plurality of preprocessor conditional branches of a preprocessor conditional directive statement comprising: using a processing unit, receiving an input from a caller, the input comprising the preprocessor conditional directive statement; using the processing unit, in order to have information available in each parsing path induced by mutually exclusive branches returned to the caller, serializing the input into a stream of tokens produced by following each parsing path induced by mutually exclusive branches of the preprocessor conditional directive statement interrupting a declaration by: labeling tokens belonging to a first parsing path with a first parsing path indicator; labeling tokens belonging to a second parsing path with a second parsing path indicator; fetching the tokens that belong to the first parsing path in a first pass and returning the tokens that belong to the first parsing path to the caller; and fetching the tokens that belong to the second parsing path in a second pass and returning the tokens that belong to the second parsing path to the caller, wherein parsing paths induced by mutually exclusive branches of the preprocessor conditional directive statement are detected by matching preprocessor conditional directives of the preprocessor conditional directive statement. 10. The method of claim 7 , further comprising returning tokens to the caller in the first pass wherein tokens labeled with the first parsing path indicator are processed and the second pass wherein tokens labeled with the second parsing path indicator are processed.