The scope of a parameter is the entire body of the method, constructor or exception handler in which it is declared. The scope of a local variable declaration in a block is the rest of the block in which the declaration appears, starting with its own initializer and including any further declarators to the right in the local variable declaration. The scope of a local variable declared in the ForInit part of a for statement includes its own initializer, any further declarators to the right in the ForInit part of the for statement, the Expression and ForUpdate parts of the for statement, and the contained Statement. The scope of the parameter of a CatchClause is the Block of that clause.
Although a parameter actually obeys Algol scope rules rather than C scope rules, its declaration occurs syntactically at the beginning of the construct that is its scope. In this case, the Algol scope rules and C scope rules have the same effect. Therefore we can use the Eli CScope module to implement the scope rules for parameters. This simplifies the analysis of applied occurrences, because parameters and local variables are disambiguated in the same way.