In 2183fe2 I didn't notice that PPLevelBranchIndex was common to the
entire file. The commit caused problems when there are multiple
preprocessor if sections. Using a single PPLevelBranchIndex also
brings the problem that the extra branches in an if section with more
branches than other sections are parsed without other sections.
This patch fixes the problem by storing the structure of the
preprocessor if sections. This way, PPLevelBranchIndex is checked
against the stored structure, and if a nonexistent branch is called for
because another section has more branches, the first or second branch
will be parsed. The change in 2183fe2 setting PPLevelBranchIndex is
reverted. Instead the stored branch structure is used to determine when
the second branch should be parsed instead of the first.
The logic for determining when a branch is skipped in moved from
conditionalCompilationStart and conditionalCompilationAlternative
into conditionalCompilationCondition because the two cases now have
more overlap. PPChainbranchIndex is changed to include the section
number in addition to the branch number.