This procedure processes Pascal declarations: Constants, Types, Variables, Procedures, Functions, and if declarations are not in the
Interface part of the unit, also Lables, Constructors and Destructors are processed. Before declarations are processes, statement compiler switches are reset to module compiler switches. This procedure is called from program compilation, unit interface and implementation compilation and Procedure/Function compilation.
Procedure ProcessDeclarations; begin Repeat StatementCompilerSwitches := ModuleCompilerSwitches; Case Token of Token_CONST: ProcessConstantDeclarations; Token_TYPE: ProcessTypeDeclarations; Token_VAR: ProcessVariableDeclarations; Token_PROCEDURE: ProcessProcedureDeclaration; Token_FUNCTION: ProcessProcedureDeclaration; else If SourceType <> stUnitInterface then Case Token of Token_LABEL: ProcessLabelDeclarations; Token_CONSTRUCTOR: ProcessProcedureDeclaration; Token_DESTRUCTOR: ProcessProcedureDeclaration; else Exit; end else Exit; end; until False; end;