|
|
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: 13426 (0x3472)
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 Expression_Token
(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
--==========================================================
-- Expression_Token ::=
-- "(" Expression ")"
-- | "=>"
-- | ".."
-- | "OTHERS"
-- | "|"
-- | "<>"
-- | "RANGE"
-- | "AND" ["THEN"]
-- | "OR" ["ELSE"]
-- | "XOR"
-- | "NOT" ["IN"]
-- | "IN"
-- | "**"
-- | "ABS"
-- | "NULL"
-- | "="
-- | "/="
-- | "<"
-- | "<="
-- | ">"
-- | ">="
-- | "+"
-- | "-"
-- | "&"
-- | "*"
-- | "/"
-- | ","
-- | "MOD"
-- | "REM"
-- | "NEW"
-- | "DELTA"
-- | "DIGITS"
-- | "!"
-- | Numeric_Literal
-- | Name
--==========================================================
Current_Token : Token_Package.Token;
Dummy_Name_Kind : Name_Kind;
begin
-- Expression_Token
case Token_Package.Class_Of (Peek (From => Current_Compilation_Unit)) is
when Token_Package.Keyword | Token_Package.Punctuation =>
Get_Next_Token (Out_Token => Current_Token,
From => Current_Compilation_Unit,
Current_Loc => Loc);
case Token_Package.Value_Of (Current_Token) is
when Token_Package.Left_Parenthesis_Token =>
Expression
(Current_Compilation_Unit => Current_Compilation_Unit,
Program_Unit => Program_Unit,
Halstead => Halstead,
Loc => Loc,
Mccabe => Mccabe,
Terminate_Tokens =>
Set_Of_Tokens'
(1 => Token_Package.Right_Parenthesis_Token));
Get_Next_Token (Out_Token => Current_Token,
From => Current_Compilation_Unit,
Current_Loc => Loc);
if "/=" (Token_Package.Value_Of (Current_Token),
Token_Package.Right_Parenthesis_Token) then
raise Syntax_Error;
end if;
-- increment Halstead PARENTHESES operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Parentheses_Halstead));
when Token_Package.Arrow_Token =>
-- increment Halstead ARROW operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Arrow_Halstead));
when Token_Package.Double_Dot_Token =>
-- increment Halstead DOUBLE_DOT operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Double_Dot_Halstead));
when Token_Package.Others_Token =>
-- increment Halstead OTHERS operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Others_Halstead));
when Token_Package.Vertical_Bar_Token =>
-- increment Halstead VERTICAL_BAR operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Vertical_Bar_Halstead));
-- increment McCabe PI
Mccabe.Change_Pi;
when Token_Package.Box_Token =>
-- increment Halstead BOX operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Box_Halstead));
when Token_Package.Range_Token =>
-- increment Halstead RANGE operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Range_Halstead));
when Token_Package.And_Token =>
if Token_Package.Value_Of
(Peek (From => Current_Compilation_Unit)) =
Token_Package.Then_Token then
Get_Next_Token (Out_Token => Current_Token,
From => Current_Compilation_Unit,
Current_Loc => Loc);
-- increment Halstead AND_THEN operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.And_Then_Halstead));
else
-- increment Halstead AND operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.And_Halstead));
end if;
-- increment McCabe PI
Mccabe.Change_Pi;
when Token_Package.Or_Token =>
if Token_Package.Value_Of
(Peek (From => Current_Compilation_Unit)) =
Token_Package.Else_Token then
Get_Next_Token (Out_Token => Current_Token,
From => Current_Compilation_Unit,
Current_Loc => Loc);
-- increment Halstead OR_ELSE operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Or_Else_Halstead));
else
-- increment Halstead OR operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Or_Halstead));
end if;
-- increment McCabe PI
Mccabe.Change_Pi;
when Token_Package.Xor_Token =>
-- increment Halstead XOR operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Xor_Halstead));
-- increment McCabe PI
Mccabe.Change_Pi;
when Token_Package.Not_Token =>
-- increment Halstead NOT operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Not_Halstead));
when Token_Package.In_Token =>
-- increment Halstead IN operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.In_Halstead));
when Token_Package.Double_Star_Token =>
-- increment Halstead DOUBLE_STAR operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Double_Star_Halstead));
when Token_Package.Abs_Token =>
-- increment Halstead ABS operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Abs_Halstead));
when Token_Package.Null_Token =>
-- increment Halstead NULL operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Null_Halstead));
when Token_Package.Equal_Token =>
-- increment Halstead EQUAL operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Equal_Halstead));
when Token_Package.Inequality_Token =>
-- increment Halstead INEQUALITY operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Inequality_Halstead));
when Token_Package.Less_Than_Token =>
-- increment Halstead LESS_THAN operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Less_Than_Halstead));
when Token_Package.Less_Than_Or_Equal_Token =>
-- increment Halstead LESS_THAN_OR_EQUAL operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.
Less_Than_Or_Equal_Halstead));
when Token_Package.Greater_Than_Token =>
-- increment Halstead GREATER_THAN operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Greater_Than_Halstead));
when Token_Package.Greater_Than_Or_Equal_Token =>
-- increment Halstead GREATER_THAN_OR_EQUAL operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.
Greater_Than_Or_Equal_Halstead));
when Token_Package.Plus_Token =>
-- increment Halstead PLUS operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Plus_Halstead));
when Token_Package.Hyphen_Token =>
-- increment Halstead MINUS operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Minus_Halstead));
when Token_Package.Ampersand_Token =>
-- increment Halstead CONCATENATE operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Concatenate_Halstead));
when Token_Package.Star_Token =>
-- increment Halstead STAR operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Star_Halstead));
when Token_Package.Slash_Token =>
-- increment Halstead DIVIDE operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Divide_Halstead));
when Token_Package.Mod_Token =>
-- increment Halstead MOD operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Mod_Halstead));
when Token_Package.Rem_Token =>
-- increment Halstead REM operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Rem_Halstead));
when Token_Package.New_Token =>
-- increment Halstead NEW operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.New_Halstead));
when Token_Package.Delta_Token =>
-- increment Halstead DELTA operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Delta_Halstead));
when Token_Package.Digits_Token =>
-- increment Halstead DIGITS operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Digits_Halstead));
when Token_Package.Apostrophe_Token =>
-- increment Halstead APOSTROPHE operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Tick_Halstead));
when Token_Package.Exclamation_Mark_Token =>
-- increment Halstead EXCLAMATION_MARK operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Exclamation_Mark_Halstead));
-- increment McCabe PI
Mccabe.Change_Pi;
--** 3/7/86 modified by DHE and BDB as per Johan
when Token_Package.Comma_Token =>
-- increment Halstead COMMA operator count
Halstead.Store_Operator
((Kind => Halstead_Operator.Comma_Halstead));
when others =>
raise Syntax_Error;
end case; -- Token is KEYWORD or PUNCTUATION
when Token_Package.Numeric_Literal =>
Get_Next_Token (Out_Token => Current_Token,
From => Current_Compilation_Unit,
Current_Loc => Loc);
-- increment Halstead operand count
Halstead.Store_Operand (Halstead_Operand.Definition
(Token_Package.Value_Of
(This_Token => Current_Token)));
when Token_Package.Identifier | Token_Package.Standard_String_Literal |
Token_Package.Alternate_String_Literal |
Token_Package.Character_Literal =>
Name (Current_Compilation_Unit => Current_Compilation_Unit,
Program_Unit => Program_Unit,
Halstead => Halstead,
Loc => Loc,
Mccabe => Mccabe,
Out_Name_Kind => Dummy_Name_Kind);
when others =>
raise Syntax_Error;
end case;
end Expression_Token;