|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 6144 (0x1800)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Statement_Traversal, seg_004635
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦5a81ac88f⟧ »Space Info Vol 1«
└─⟦this⟧
with Lrm_Utilities;
with Lrm_Renames;
use Lrm_Renames;
procedure Statement_Traversal
(Program_Unit_Body_Or_Statement : Ada_Program.Element;
State : in out State_Record;
Control : in out Ada_Program.Traversal_Control) is
Quit : exception;
procedure Traverse_Statements (Statements : Ada_Program.Element_Iterator);
procedure Traverse_Statement (Statement : Ada_Program.Element) is
Arms : Ada.Element_Iterator;
begin
Pre_Operation (Statement, State, Control);
case Control is
when Ada.Continue =>
case Stmts.Kind (Statement) is
when Stmts.A_Block_Statement =>
Traverse_Statements
(Stmts.Block_Body_Statements (Statement));
when Stmts.A_Loop_Statement =>
Traverse_Statements (Stmts.Loop_Statements (Statement));
when Stmts.An_If_Statement =>
Arms := Stmts.If_Arm_List (Statement);
while not Ada.Done (Arms) loop
Traverse_Statements (Stmts.If_Arm_Statements
(Ada.Value (Arms)));
Ada.Next (Arms);
end loop;
when Stmts.A_Case_Statement =>
Arms := Stmts.Case_Arms_List (Statement);
while not Ada.Done (Arms) loop
Traverse_Statements (Stmts.
Case_Alternative_Statements
(Ada.Value (Arms)));
Ada.Next (Arms);
end loop;
when Stmts.Not_A_Statement =>
null;
when others =>
null;
end case;
when Ada.Terminate_Immediately =>
raise Quit;
when Ada.Abandon_Children | Ada.Abandon_Siblings =>
null;
end case;
Post_Operation (Statement, State, Control);
case Control is
when Ada.Terminate_Immediately =>
raise Quit;
when others =>
null;
end case;
end Traverse_Statement;
procedure Traverse_Statements (Statements : Ada_Program.Element_Iterator) is
Iter : Ada.Element_Iterator := Statements;
begin
while not Ada.Done (Iter) loop
Traverse_Statement (Ada.Value (Iter));
case Control is
when Ada.Abandon_Siblings =>
exit;
when others =>
null;
end case;
Ada.Next (Iter);
end loop;
end Traverse_Statements;
begin
Control := Ada.Continue;
case Ada.Kind (Program_Unit_Body_Or_Statement) is
when Ada.A_Declaration =>
case Decls.Kind (Program_Unit_Body_Or_Statement) is
when Decls.A_Function_Body_Declaration |
Decls.A_Procedure_Body_Declaration =>
Traverse_Statements
(Stmts.Block_Body_Statements
(Decls.Subprogram_Block
(Program_Unit_Body_Or_Statement)));
when Decls.A_Package_Body_Declaration =>
Traverse_Statements
(Stmts.Block_Body_Statements
(Decls.Package_Body_Block
(Program_Unit_Body_Or_Statement)));
when Decls.A_Task_Body_Declaration =>
Traverse_Statements
(Stmts.Block_Body_Statements
(Decls.Task_Body_Block (Program_Unit_Body_Or_Statement)));
when others =>
raise Ada.Inappropriate_Program_Element;
end case;
when Ada.A_Statement =>
Traverse_Statement (Program_Unit_Body_Or_Statement);
when others =>
if Stmts.Is_Labeled (Program_Unit_Body_Or_Statement) then
Traverse_Statement (Program_Unit_Body_Or_Statement);
elsif Lrm_Utilities.Is_Named_Loop
(Program_Unit_Body_Or_Statement) then
Traverse_Statement (Lrm_Utilities.Get_Named_Loop
(Program_Unit_Body_Or_Statement));
else
raise Ada.Inappropriate_Program_Element;
end if;
end case;
exception
when Quit =>
null;
end Statement_Traversal;
nblk1=5
nid=0
hdr6=a
[0x00] rec0=1c rec1=00 rec2=01 rec3=02e
[0x01] rec0=15 rec1=00 rec2=02 rec3=002
[0x02] rec0=23 rec1=00 rec2=03 rec3=00a
[0x03] rec0=16 rec1=00 rec2=04 rec3=002
[0x04] rec0=17 rec1=00 rec2=05 rec3=000
tail 0x2150044f6815c6619a78e 0x42a00088462061e03