 C (before C99) strictly defines that any declarations must occur "before" the statements within a particular block but allows blocks to appear within blocks, which is a way to go around this.Pascal is strict that declarations must occur before statements, but allows "definitions" of types and functions - not only variable declarations - to be encapsulated by function definitions to any level of depth.The grammars of both languages are of a similar size.