Task 1:
======
The initial version of the metrics tool should compute the
following metrics for each user-defined unit in the Context:

   - the total number of statements in the code of the unit;
   - the total number of declarations in the code of the unit;

Task 2:
======
Add to the initial version of the metrics tool computation for the
following metrics:

   - the total number of simple statements (that is, statements
     which do not contain some other statement as its subcomponent);

   - the total number of compound statements (that is,
     statements which do contain other some statement as its
     subcomponent);

   - the total number of all the names explicitly declared in the
     unit;

The subdirectory 'task_1' contains four files:

- actuals_for_traversing-pre_op.adb - actual Pre-Operation to
    instantiate Traverse_Element, this file should replace the file
    with the same name in ASIS Application Templates to get the
    solution for Task 1.

- unit_processing.adb - the modified version of the
    unit_processing.adb file from the ASIS Application templates; the
    modification consists of adding the calls to subprograms which
    reset and print out the data structures used to collect metrics
    values. This file is the same for the solutions of Task 1 and
    Task 2;

- metrics_utilities.ads and metrics_utilities.adb - the package
    Metrics_Utilities, contains the data structures to
    collect metrics information and the procedures for printing this
    information out and to reset these data structures before
    processing the next unit.

The subdirectory 'task_2' contains three files:

- actuals_for_traversing-pre_op.adb - actual Pre-Operation to
    instantiate Traverse_Element, this file should replace the file
    with the same name in ASIS Application Templates to get the
    solution for Task 2, it is the extended version of the same
    file from subdirectory 'task_1', and it contains the code for
    computing new metrics information, as required by Task 2.

- metrics_utilities.ads and metrics_utilities.adb - the package
    Metrics_Utilities, updated to collect and output the new
    metrics information as required by Task 2


Hints for Task 1
----------------
To solve Task 1, you have to provide the real code for actual
Pre-Operation for Traverse_Element (this code should collect the
metrics information) and to add the calls to some procedures which
reset and which output the metrics values to the procedure providing
the general processing of a Compilation Unit (in the ASIS Application
Templates this is the Unit_Processing.Process_Unit). You have to
modify the general unit processing routine because you can only
collect the metrics information when traversing the unit structure,
and you have to reset the metrics data structures to the initial
values before starting the traversal, and you can print out the
metrics values only when the traversal is over.

The metrics to collect are very simple. In Pre-Operation, you have to
detect the kind of the Element being visited, and if it is a
statement or a declaration, you have to add 1 to the corresponding
metric counter.

Hints for Task 2 are given as comments in the solution for Task 1
(file task_1/actuals_for_traversing-pre_op.adb).