|
|
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: 38912 (0x9800)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Liste_D_Instructions, seg_046a82
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦5a81ac88f⟧ »Space Info Vol 1«
└─⟦this⟧
with Unchecked_Deallocation, Text_Io, Simulateur_Itr, Bounded_String,
Set_Of_Links, Set_Of_Connections, Lexical, Erreur;
use Bounded_String, Lexical;
package body Liste_D_Instructions is
procedure Free is new Unchecked_Deallocation (Cell, Object);
type Listiter is new Object;
function Last (L : in Object) return Object is
Place_In_L : Object;
Temp_Place_In_L : Object;
begin
if L = null then
return null;
else
Place_In_L := L;
while Place_In_L /= null loop
Temp_Place_In_L := Place_In_L;
Place_In_L := Place_In_L.Next;
end loop;
return Temp_Place_In_L;
end if;
end Last;
procedure Attache (List1 : in out Object; List2 : in Object) is
Endoflist1 : Object;
begin
if List1 = null then
List1 := List2;
return;
else
Endoflist1 := Last (List1);
Endoflist1.Next := List2;
end if;
end Attache;
procedure Attache (L : in out Object; Element : in Itemtype) is
Newend : Object;
begin
Newend := new Cell'(Info => Element, Next => null);
Attache (L, Newend);
end Attache;
function Creation return Object is
begin
return null;
end Creation;
function Creation_Iterateur (L : in Object) return Listiter is
begin
return Listiter (L);
end Creation_Iterateur;
procedure Avancer (I : in out Listiter) is
begin
if I /= null then
I := Listiter (I.Next);
end if;
end Avancer;
function Est_Vide (L : in Object) return Boolean is
begin
return (L = null);
end Est_Vide;
function Encore (L : in Listiter) return Boolean is
begin
return L /= null;
end Encore;
function Valeur (
I : in Listiter) return Itemtype is
L : Object;
begin
L := Object (I);
return L.Info;
end Valeur;
function Creer_Si (E : in Abstract_Tree.Object;
L_Alors : in Object;
L_Sinon : in Object) return Object is
L : Object;
Elt : Itemtype (Si_Alors_Sinon);
begin
L := Creation;
Elt.Genre := Si_Alors_Sinon;
Elt.Exp_Cond := E;
Elt.Alors := L_Alors;
Elt.Sinon := L_Sinon;
Attache (L, Elt);
return L;
end Creer_Si;
function Creer_Pour (E : in Integer; L_Faire : in Object) return Object is
L : Object;
Elt : Itemtype (Pour_Faire);
begin
Elt.Genre := Pour_Faire;
Elt.Entier := E;
Elt.Faire := L_Faire;
Attache (L, Elt);
return L;
end Creer_Pour;
function Creer_Affec (N_Var, N_Ext : in Bounded_String.Variable_String;
E : in Abstract_Tree.Object) return Object is
L : Object;
Elt : Itemtype (Affectation);
begin
Elt.Genre := Affectation;
Elt.Nom_Var := N_Var;
Elt.Nom_Extension := N_Ext;
Elt.Exp_Generale := E;
Attache (L, Elt);
return L;
end Creer_Affec;
function Creer_Lie_Con
(V1, V2 : in Bounded_String.Variable_String) return Object is
L : Object;
Elt : Itemtype (Lie_Connexion);
begin
Elt.Genre := Lie_Connexion;
Elt.Var1_Lie := V1;
Elt.Var2_Lie := V2;
Attache (L, Elt);
return L;
end Creer_Lie_Con;
function Creer_Delie_Con
(V1, V2 : in Bounded_String.Variable_String) return Object is
L : Object;
Elt : Itemtype (Delie_Connexion);
begin
Elt.Genre := Delie_Connexion;
Elt.Var1_Lie := V1;
Elt.Var2_Lie := V2;
Attache (L, Elt);
return L;
end Creer_Delie_Con;
function Creer_Lie_Lien
(V1, V2 : in Bounded_String.Variable_String) return Object is
L : Object;
Elt : Itemtype (Lie_Lien);
begin
Elt.Genre := Lie_Lien;
Elt.Var1_Lie := V1;
Elt.Var2_Lie := V2;
Attache (L, Elt);
return L;
end Creer_Lie_Lien;
function Creer_Delie_Lien
(V1, V2 : in Bounded_String.Variable_String) return Object is
L : Object;
Elt : Itemtype (Delie_Lien);
begin
Elt.Genre := Delie_Lien;
Elt.Var1_Lie := V1;
Elt.Var2_Lie := V2;
Attache (L, Elt);
return L;
end Creer_Delie_Lien;
function Creer_Echanger_Lien
(V1, V2, V3 : in Bounded_String.Variable_String)
return Object is
L : Object;
Elt : Itemtype (Echanger_Lien);
begin
Elt.Genre := Echanger_Lien;
Elt.Var1_Ech := V1;
Elt.Var2_Ech := V2;
Elt.Var3_Ech := V3;
Attache (L, Elt);
return L;
end Creer_Echanger_Lien;
function Creer_Liste
(V1 : in Bounded_String.Variable_String; V2 : Lexical.Token)
return Object is
L : Object;
Elt : Itemtype (Liste_Lien);
begin
Elt.Genre := Liste_Lien;
Elt.Var_Liste := V1;
Elt.Etat := V2;
Attache (L, Elt);
return L;
end Creer_Liste;
function Creer_Afficher (P1 : in Integer) return Object is
L : Object;
Elt : Itemtype (Afficher);
begin
Elt.Genre := Afficher;
Elt.Param1 := P1;
Attache (L, Elt);
return L;
end Creer_Afficher;
function Creer_Fin return Object is
L : Object;
Elt : Itemtype (Fin);
begin
Elt.Genre := Fin;
Attache (L, Elt);
return L;
end Creer_Fin;
function Creer_Vide return Object is
L : Object;
Elt : Itemtype (Vide);
begin
Elt.Genre := Vide;
Attache (L, Elt);
return L;
end Creer_Vide;
procedure Afficher (Elt : in Itemtype) is
begin
case Elt.Genre is
when Affectation =>
Text_Io.Put (Image (Elt.Nom_Var));
if (Bounded_String.Length (Elt.Nom_Extension) > 0) then
Text_Io.Put ("." & Image (Elt.Nom_Extension));
end if;
Text_Io.Put_Line (" = ");
Abstract_Tree.Dump (Elt.Exp_Generale);
when Lie_Connexion =>
Text_Io.Put (Image (Elt.Var1_Lie) & " , ");
Text_Io.Put_Line (Image (Elt.Var2_Lie));
when Delie_Connexion =>
Text_Io.Put (Image (Elt.Var1_Lie) & " , ");
Text_Io.Put_Line (Image (Elt.Var2_Lie));
when Lie_Lien =>
Text_Io.Put (Image (Elt.Var1_Lie) & " , ");
Text_Io.Put_Line (Image (Elt.Var2_Lie));
when Delie_Lien =>
Text_Io.Put (Image (Elt.Var1_Lie) & " , ");
Text_Io.Put_Line (Image (Elt.Var2_Lie));
when Liste_Lien =>
Text_Io.Put (Image (Elt.Var_Liste) & " , ");
Text_Io.Put_Line (Lexical.Token'Image (Elt.Etat));
when Echanger_Lien =>
Text_Io.Put (Image (Elt.Var1_Ech) & " , ");
Text_Io.Put (Image (Elt.Var2_Ech) & " , ");
Text_Io.Put_Line (Image (Elt.Var3_Ech));
when Afficher =>
Text_Io.Put_Line (Integer'Image (Elt.Param1));
when Fin =>
null;
when Vide =>
null;
when others =>
null;
end case;
end Afficher;
procedure Afficher_Esp (Nb : Integer) is
begin
for I in 1 .. Nb loop
Text_Io.Put (" ");
end loop;
end Afficher_Esp;
procedure Afficher_Struct (Nb : Integer; O : in Object) is
I : Listiter;
E : Itemtype;
begin
I := Creation_Iterateur (O);
while Encore (I) loop
E := Valeur (I);
case E.Genre is
when Si_Alors_Sinon =>
Afficher_Esp (Nb);
Text_Io.Put_Line ("SI");
Abstract_Tree.Dump_Struct (Nb + 2, E.Exp_Cond);
Afficher_Esp (Nb);
Text_Io.Put_Line ("ALORS");
Afficher_Struct (Nb + 2, E.Alors);
Afficher_Esp (Nb);
Text_Io.Put_Line ("SINON");
Afficher_Struct (Nb + 2, E.Sinon);
Afficher_Esp (Nb);
Text_Io.Put_Line ("FIN_SI");
when Pour_Faire =>
Afficher_Esp (Nb);
Text_Io.Put_Line ("POUR " & Integer'Image (E.Entier) &
" ENTREE FAIRE ");
Afficher_Struct (Nb + 2, E.Faire);
Afficher_Esp (Nb);
Text_Io.Put_Line ("FIN_POUR");
when Affectation =>
Afficher_Esp (Nb);
Text_Io.Put (Image (E.Nom_Var));
if Bounded_String.Length (E.Nom_Extension) > 0 then
Text_Io.Put ("." & Image (E.Nom_Extension));
end if;
Text_Io.Put_Line (" = ");
Abstract_Tree.Dump_Struct (Nb + 2, E.Exp_Generale);
when Lie_Connexion =>
Afficher_Esp (Nb);
Text_Io.Put_Line ("LIE_CONNEXION ( " & Image (E.Var1_Lie) &
", " & Image (E.Var2_Lie) & " )");
when Delie_Connexion =>
Afficher_Esp (Nb);
Text_Io.Put_Line ("DELIE_CONNEXION ( " &
Image (E.Var1_Lie) & ", " &
Image (E.Var2_Lie) & " )");
when Lie_Lien =>
Afficher_Esp (Nb);
Text_Io.Put_Line ("LIE_LIEN ( " & Image (E.Var1_Lie) &
", " & Image (E.Var2_Lie) & " )");
when Delie_Lien =>
Afficher_Esp (Nb);
Text_Io.Put_Line ("DELIE_LIEN ( " & Image (E.Var1_Lie) &
", " & Image (E.Var2_Lie) & " )");
when Liste_Lien =>
Afficher_Esp (Nb);
Text_Io.Put_Line ("LISTE_LIEN ( " &
Image (E.Var_Liste) & ", " &
Lexical.Token'Image (E.Etat) & " )");
when Echanger_Lien =>
Afficher_Esp (Nb);
Text_Io.Put_Line ("ECHANGER_LIEN ( " & Image (E.Var1_Ech) &
", " & Image (E.Var2_Ech) & ", " &
Image (E.Var3_Ech) & " )");
when Afficher =>
Afficher_Esp (Nb);
Text_Io.Put_Line ("-- fonction afficher ");
when Fin =>
Afficher_Esp (Nb);
Text_Io.Put_Line ("FIN");
when Vide =>
Afficher_Esp (Nb);
Text_Io.Put_Line ("-- Vide");
end case;
Avancer (I);
end loop;
end Afficher_Struct;
procedure Afficher (O : in Object) is
begin
Afficher_Struct (0, O);
end Afficher;
procedure Executer_Si (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Connect : in out Set_Of_Connections.Object;
Links : in out Set_Of_Links.Object);
procedure Executer_Pour (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Connect : in out Set_Of_Connections.Object;
Links : in out Set_Of_Links.Object);
procedure Executer_Affec (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Connect : in out Set_Of_Connections.Object;
Links : in out Set_Of_Links.Object);
procedure Executer_Lie_Con (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Connect : in out Set_Of_Connections.Object);
procedure Executer_Delie_Con (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Connect : in out Set_Of_Connections.Object);
procedure Executer_Lie_Lien (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Links : in out Set_Of_Links.Object);
procedure Executer_Delie_Lien (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Links : in out Set_Of_Links.Object);
procedure Executer_Liste (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Links : in out Set_Of_Links.Object);
procedure Executer_Echanger (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Links : in out Set_Of_Links.Object);
procedure Executer_Afficher (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object);
procedure Executer_Fin (E : Itemtype);
procedure Executer_Vide (E : Itemtype);
procedure Executer (L : in Object;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Connect : in out Set_Of_Connections.Object;
Links : in out Set_Of_Links.Object) is
E : Itemtype;
I : Listiter;
begin
I := Creation_Iterateur (L);
while (Encore (I)) loop
E := Valeur (I);
case E.Genre is
when Si_Alors_Sinon =>
Executer_Si (E, Models_Table, Symbols_Table,
Connect, Links);
when Pour_Faire =>
Executer_Pour (E, Models_Table, Symbols_Table,
Connect, Links);
when Affectation =>
Executer_Affec (E, Models_Table, Symbols_Table,
Connect, Links);
when Lie_Connexion =>
Executer_Lie_Con (E, Models_Table, Symbols_Table, Connect);
when Delie_Connexion =>
Executer_Delie_Con (E, Models_Table,
Symbols_Table, Connect);
when Lie_Lien =>
Executer_Lie_Lien (E, Models_Table, Symbols_Table, Links);
when Delie_Lien =>
Executer_Delie_Lien (E, Models_Table, Symbols_Table, Links);
when Liste_Lien =>
Executer_Liste (E, Models_Table, Symbols_Table, Links);
when Echanger_Lien =>
Executer_Echanger (E, Models_Table, Symbols_Table, Links);
when Afficher =>
Executer_Afficher (E, Models_Table, Symbols_Table);
when Fin =>
Executer_Fin (E);
when Vide =>
Executer_Vide (E);
end case;
Avancer (I);
end loop;
end Executer;
procedure Executer_Si (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Connect : in out Set_Of_Connections.Object;
Links : in out Set_Of_Links.Object) is
Cond : Boolean;
begin
Text_Io.Put_Line (" execution de si-alors-sinon ");
Cond := Abstract_Tree.Evaluate_Node
(E.Exp_Cond, Models_Table, Symbols_Table, Connect, Links);
Abstract_Tree.Dump (E.Exp_Cond);
if (Cond) then
Text_Io.Put_Line (" verifiee execution de alors ");
Executer (E.Alors, Models_Table, Symbols_Table, Connect, Links);
else
Text_Io.Put_Line (" non verifiee execution de sinon ");
Executer (E.Sinon, Models_Table, Symbols_Table, Connect, Links);
end if;
Text_Io.Put_Line (" fin de si-alors-sinon ");
end Executer_Si;
procedure Executer_Pour (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Connect : in out Set_Of_Connections.Object;
Links : in out Set_Of_Links.Object) is
begin
Text_Io.Put_Line (" execution de pour-faire =>");
if (Simulateur_Itr.Total_Entries mod E.Entier = 0) then
Text_Io.Put_Line (" condition verifiee ");
Executer (E.Faire, Models_Table, Symbols_Table, Connect, Links);
end if;
Text_Io.Put_Line (" fin de pour-faire ");
end Executer_Pour;
procedure Executer_Affec (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Connect : in out Set_Of_Connections.Object;
Links : in out Set_Of_Links.Object) is
The_Integer : Integer;
The_Booleen : Boolean;
begin
Text_Io.Put_Line (" execution affectation ");
Afficher (E);
if Bounded_String.Length (E.Nom_Extension) = 0 then
if Symbols.Is_Pointer (Symbols_Table, Image (E.Nom_Var)) then
null;
-- A implementer
else
Erreur.Execution
("Manque l'extension pour l'acces a la variable !!!");
end if;
else
if Symbols.Get_Symbol_Type
(Symbols_Table, Models_Table,
Image (E.Nom_Var), Image (E.Nom_Extension)) = "ENTIER" or
Symbols.Get_Symbol_Type
(Symbols_Table, Models_Table,
Image (E.Nom_Var), Image (E.Nom_Extension)) = "ENUMERE" then
The_Integer := Abstract_Tree.Evaluate_Node
(E.Exp_Generale, Models_Table,
Symbols_Table, Connect, Links);
-- symbols.put_symbol_value(Symbols_Table, Models_Table,Image(e.Nom_Var),Image(e.nom_extension));
else
if Symbols.Get_Symbol_Type
(Symbols_Table, Models_Table,
Image (E.Nom_Var), Image (E.Nom_Extension)) =
"BOOLEEN" then
The_Booleen := Abstract_Tree.Evaluate_Node
(E.Exp_Generale, Models_Table,
Symbols_Table, Connect, Links);
-- symbols.put_symbol_value(Symbols_Table, Models_Table,Image(e.Nom_Var),Image(e.nom_extension))
else
Erreur.Execution ("Affectation non valide !!!");
end if;
end if;
end if;
Text_Io.Put_Line (" fin de affectation ");
end Executer_Affec;
procedure Executer_Lie_Con (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Connect : in out Set_Of_Connections.Object) is
begin
Text_Io.Put_Line (" execution lie_connexion ");
Afficher (E);
if Image (E.Var1_Lie) = "COMP" then
Set_Of_Connections.Modify_State
(Simulateur_Itr.First_Comp_Value, Image (E.Var2_Lie),
Set_Of_Connections.Linked, Connect);
else
if Image (E.Var2_Lie) = "COMP" then
Set_Of_Connections.Modify_State
(Image (E.Var1_Lie), Simulateur_Itr.First_Comp_Value,
Set_Of_Connections.Linked, Connect);
else
Set_Of_Connections.Modify_State
(Image (E.Var1_Lie), Image (E.Var2_Lie),
Set_Of_Connections.Linked, Connect);
end if;
end if;
Text_Io.Put_Line (" fin de lie_connexion ");
end Executer_Lie_Con;
procedure Executer_Delie_Con (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Connect : in out Set_Of_Connections.Object) is
begin
Text_Io.Put_Line (" execution delie_connexion ");
Afficher (E);
if Image (E.Var1_Lie) = "COMP" then
Set_Of_Connections.Modify_State
(Simulateur_Itr.First_Comp_Value, Image (E.Var2_Lie),
Set_Of_Connections.Unlinked, Connect);
else
if Image (E.Var2_Lie) = "COMP" then
Set_Of_Connections.Modify_State
(Image (E.Var1_Lie), Simulateur_Itr.First_Comp_Value,
Set_Of_Connections.Unlinked, Connect);
else
Set_Of_Connections.Modify_State
(Image (E.Var1_Lie), Image (E.Var2_Lie),
Set_Of_Connections.Unlinked, Connect);
end if;
end if;
Text_Io.Put_Line (" fin de delie_connexion ");
end Executer_Delie_Con;
procedure Executer_Lie_Lien (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Links : in out Set_Of_Links.Object) is
begin
Text_Io.Put_Line (" execution lie_lien ");
Afficher (E);
if Image (E.Var1_Lie) = "COMP" then
Set_Of_Links.Modify_State
(Simulateur_Itr.First_Comp_Value,
Image (E.Var2_Lie), Set_Of_Links.Linked, Links);
else
if Image (E.Var2_Lie) = "COMP" then
Set_Of_Links.Modify_State (Image (E.Var1_Lie),
Simulateur_Itr.First_Comp_Value,
Set_Of_Links.Linked, Links);
else
Set_Of_Links.Modify_State
(Image (E.Var1_Lie), Image (E.Var2_Lie),
Set_Of_Links.Linked, Links);
end if;
end if;
Text_Io.Put_Line (" fin de lie_lien ");
end Executer_Lie_Lien;
procedure Executer_Delie_Lien (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Links : in out Set_Of_Links.Object) is
begin
Text_Io.Put_Line (" execution delie_lien ");
Afficher (E);
if Image (E.Var1_Lie) = "COMP" then
Set_Of_Links.Modify_State
(Simulateur_Itr.First_Comp_Value,
Image (E.Var2_Lie), Set_Of_Links.Unlinked, Links);
else
if Image (E.Var2_Lie) = "COMP" then
Set_Of_Links.Modify_State (Image (E.Var1_Lie),
Simulateur_Itr.First_Comp_Value,
Set_Of_Links.Unlinked, Links);
else
Set_Of_Links.Modify_State
(Image (E.Var1_Lie), Image (E.Var2_Lie),
Set_Of_Links.Unlinked, Links);
end if;
end if;
Text_Io.Put_Line (" fin de delie_lien ");
end Executer_Delie_Lien;
procedure Executer_Liste (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Links : in out Set_Of_Links.Object) is
begin
Text_Io.Put_Line (" execution liste_lien ");
Afficher (E);
if E.Etat = Lie then
if Image (E.Var_Liste) = "COMP" then
Set_Of_Links.List (Simulateur_Itr.First_Comp_Value,
Set_Of_Links.Linked, Links);
else
Set_Of_Links.List (Image (E.Var_Liste),
Set_Of_Links.Linked, Links);
end if;
else
if Image (E.Var_Liste) = "COMP" then
Set_Of_Links.List (Simulateur_Itr.First_Comp_Value,
Set_Of_Links.Unlinked, Links);
else
Set_Of_Links.List (Image (E.Var_Liste),
Set_Of_Links.Unlinked, Links);
end if;
end if;
Text_Io.Put_Line (" fin de liste_lien ");
end Executer_Liste;
procedure Executer_Echanger (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object;
Links : in out Set_Of_Links.Object) is
begin
Text_Io.Put_Line (" execution echanger_lien ");
Afficher (E);
if Image (E.Var1_Ech) = "COMP" then
Set_Of_Links.Exchange
(Simulateur_Itr.First_Comp_Value,
Image (E.Var2_Ech), Image (E.Var3_Ech), Links);
else
if Image (E.Var2_Ech) = "COMP" then
Set_Of_Links.Exchange (Image (E.Var1_Ech),
Simulateur_Itr.First_Comp_Value,
Image (E.Var3_Ech), Links);
else
if Image (E.Var3_Ech) = "COMP" then
Set_Of_Links.Exchange
(Image (E.Var1_Ech), Image (E.Var2_Ech),
Simulateur_Itr.First_Comp_Value, Links);
else
Set_Of_Links.Exchange
(Image (E.Var1_Lie), Image (E.Var2_Lie),
Image (E.Var3_Ech), Links);
end if;
end if;
end if;
Text_Io.Put_Line (" fin de echanger_lien ");
end Executer_Echanger;
procedure Executer_Afficher (E : Itemtype;
Models_Table : Models.Object;
Symbols_Table : Symbols.Object) is
begin
Text_Io.Put_Line (" execution afficher ");
Afficher (E);
Text_Io.Put_Line (" fin de afficher ");
end Executer_Afficher;
procedure Executer_Fin (E : Itemtype) is
begin
Text_Io.Put_Line (" execution fin ");
Afficher (E);
Text_Io.Put_Line (" fin de fin ");
end Executer_Fin;
procedure Executer_Vide (E : Itemtype) is
begin
Text_Io.Put_Line (" execution vide ");
Afficher (E);
Text_Io.Put_Line (" fin de vide ");
end Executer_Vide;
procedure Detruire_Element (L : in out Object) is
begin
case L.Info.Genre is
when Si_Alors_Sinon =>
Abstract_Tree.Destroy (L.Info.Exp_Cond);
Detruire (L.Info.Alors);
Detruire (L.Info.Sinon);
Free (L);
when Pour_Faire =>
Detruire (L.Info.Faire);
Free (L);
when Afficher => -- a completer
Free (L);
when Affectation =>
Abstract_Tree.Destroy (L.Info.Exp_Generale);
Free (L);
when others =>
Free (L);
end case;
end Detruire_Element;
procedure Detruire (L : in out Object) is
L1, L2 : Object;
begin
L1 := L;
while not Est_Vide (L1) loop
L2 := L1.Next;
Detruire_Element (L1); L1 := L2;
end loop;
end Detruire;
end Liste_D_Instructions;
nblk1=25
nid=25
hdr6=48
[0x00] rec0=26 rec1=00 rec2=01 rec3=00a
[0x01] rec0=2b rec1=00 rec2=1a rec3=018
[0x02] rec0=01 rec1=00 rec2=05 rec3=02a
[0x03] rec0=22 rec1=00 rec2=06 rec3=00a
[0x04] rec0=20 rec1=00 rec2=07 rec3=01a
[0x05] rec0=22 rec1=00 rec2=08 rec3=03a
[0x06] rec0=26 rec1=00 rec2=13 rec3=01e
[0x07] rec0=13 rec1=00 rec2=09 rec3=002
[0x08] rec0=18 rec1=00 rec2=11 rec3=01e
[0x09] rec0=23 rec1=00 rec2=0e rec3=010
[0x0a] rec0=16 rec1=00 rec2=0a rec3=03a
[0x0b] rec0=15 rec1=00 rec2=10 rec3=05c
[0x0c] rec0=00 rec1=00 rec2=12 rec3=028
[0x0d] rec0=16 rec1=00 rec2=15 rec3=02c
[0x0e] rec0=1e rec1=00 rec2=16 rec3=03c
[0x0f] rec0=14 rec1=00 rec2=19 rec3=008
[0x10] rec0=00 rec1=00 rec2=0c rec3=00e
[0x11] rec0=14 rec1=00 rec2=02 rec3=010
[0x12] rec0=01 rec1=00 rec2=1f rec3=028
[0x13] rec0=1e rec1=00 rec2=14 rec3=014
[0x14] rec0=02 rec1=00 rec2=03 rec3=00a
[0x15] rec0=15 rec1=00 rec2=04 rec3=04c
[0x16] rec0=1b rec1=00 rec2=1c rec3=008
[0x17] rec0=15 rec1=00 rec2=1b rec3=076
[0x18] rec0=18 rec1=00 rec2=20 rec3=074
[0x19] rec0=12 rec1=00 rec2=24 rec3=064
[0x1a] rec0=12 rec1=00 rec2=21 rec3=008
[0x1b] rec0=17 rec1=00 rec2=23 rec3=05a
[0x1c] rec0=18 rec1=00 rec2=22 rec3=024
[0x1d] rec0=17 rec1=00 rec2=17 rec3=03e
[0x1e] rec0=17 rec1=00 rec2=1e rec3=010
[0x1f] rec0=18 rec1=00 rec2=18 rec3=01c
[0x20] rec0=14 rec1=00 rec2=0f rec3=016
[0x21] rec0=1d rec1=00 rec2=1d rec3=01e
[0x22] rec0=20 rec1=00 rec2=0b rec3=002
[0x23] rec0=05 rec1=00 rec2=0d rec3=001
[0x24] rec0=86 rec1=ba rec2=42 rec3=400
tail 0x215437024865183dd1058 0x42a00088462060003
Free Block Chain:
0x25: 0000 00 00 00 95 80 0e 20 3d 20 22 43 4f 4d 50 22 20 ┆ = "COMP" ┆