|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 6379 (0x18eb)
Types: TextFile
Names: »B«
└─⟦180fe333a⟧ Bits:30000405 8mm tape, Rational 1000, SW CATALOG, 10_20_0
└─⟦180fe333a⟧ Bits:30000537 8mm tape, Rational 1000, SW Catalog 10_20_0
└─⟦5cb1d1d7f⟧ »DATA«
└─⟦3b1ee7bd8⟧
└─⟦this⟧
separate (Compilation_Unit.Produce_Metrics)
procedure Declarative_Part
(Current_Compilation_Unit : in out Ada_Compilation_Unit;
Program_Unit : in Program_Unit_State_Machine;
Halstead : in Halstead_State_Machine;
Loc : in Loc_State_Machine;
Mccabe : in Mccabe_State_Machine) is
--==============================================================
-- process the declaration and produce statistics
--
-- Declarative_Part ::=
-- Pragma_Clause { Declarative_Item Pragma_Clause }
-- Declarative_Item ::=
-- ID_Declaration
-- increment LOC data declaration count by one.
-- | Type_Declaration
-- increment LOC data declaration count by one.
-- | Subtype_Declaration
-- increment LOC data declaration count by one.
-- | Renaming_Declaration
-- increment LOC data declaration count by one.
-- | Representation_Clause
-- | Use_Clause
-- Increment LOC data declaration count by one.
-- Recurse.
-- | <BEGIN_COMPILATION_UNIT>
--===============================================================
No_More_Declarative_Items : Boolean := False;
Peek_Ahead_Token : Token_Package.Token;
--**
Current_Token : Token_Package.Token;
begin
-- Declarative_Part
Pragma_Clause (Current_Compilation_Unit => Current_Compilation_Unit,
Program_Unit => Program_Unit,
Halstead => Halstead,
Loc => Loc,
Mccabe => Mccabe);
Process_Declarative_Items:
-- repeat for every declaration
loop
Peek_Ahead_Token := Peek (From => Current_Compilation_Unit);
case Token_Package.Class_Of (Peek_Ahead_Token) is
when Token_Package.Identifier =>
Id_Declaration
(Current_Compilation_Unit => Current_Compilation_Unit,
Program_Unit => Program_Unit,
Halstead => Halstead,
Loc => Loc,
Mccabe => Mccabe);
when Token_Package.Keyword =>
case Token_Package.Value_Of (Peek_Ahead_Token) is
when Token_Package.Type_Token =>
-- increment LOC data declaration count
Loc.Change_Data_Declarations_Count;
Type_Declaration (Current_Compilation_Unit =>
Current_Compilation_Unit,
Program_Unit => Program_Unit,
Halstead => Halstead,
Loc => Loc,
Mccabe => Mccabe);
when Token_Package.Subtype_Token =>
-- increment LOC data declaration count
Loc.Change_Data_Declarations_Count;
Subtype_Declaration (Current_Compilation_Unit =>
Current_Compilation_Unit,
Program_Unit => Program_Unit,
Halstead => Halstead,
Loc => Loc,
Mccabe => Mccabe);
when Token_Package.Procedure_Token |
Token_Package.Function_Token |
Token_Package.Package_Token =>
-- increment LOC data declaration count
Loc.Change_Data_Declarations_Count;
Renaming_Declaration (Current_Compilation_Unit =>
Current_Compilation_Unit,
Program_Unit => Program_Unit,
Halstead => Halstead,
Loc => Loc,
Mccabe => Mccabe);
when Token_Package.For_Token =>
Representation_Clause (Current_Compilation_Unit =>
Current_Compilation_Unit,
Program_Unit => Program_Unit,
Halstead => Halstead,
Loc => Loc,
Mccabe => Mccabe);
when Token_Package.Use_Token =>
Use_Clause (Current_Compilation_Unit =>
Current_Compilation_Unit,
Program_Unit => Program_Unit,
Halstead => Halstead,
Loc => Loc,
Mccabe => Mccabe);
when others =>
No_More_Declarative_Items := True;
end case;
when Token_Package.Begin_Compilation_Unit =>
-- increment LOC data declaration count
Loc.Change_Data_Declarations_Count;
--**
-- flush new lines, blank lines, and comments
Get_Next_Token (Out_Token => Current_Token,
From => Current_Compilation_Unit,
Current_Loc => Loc);
-- set current compilation unit back
Current_Compilation_Unit :=
Seek (Origin => Current_Compilation_Unit, Offset => -1);
-- recurse on Produce_Metrics
Produce_Metrics (This_Compilation_Unit =>
Current_Compilation_Unit);
when others =>
raise Syntax_Error;
end case;
exit Process_Declarative_Items when No_More_Declarative_Items;
end loop Process_Declarative_Items;
end Declarative_Part;