|
|
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, package body Interprete, seg_04650b
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
with Comps_Dictionary, Verbs_Dictionary, Player_Entries;
with Text_Io, Bounded_String;
package body Interprete is
function Exist_Entries_In_Dictionaries
(C : Comps_Dictionary.Object; V : Verbs_Dictionary.Object)
return Boolean is
Exist : Boolean := True;
begin
Player_Entries.Open_Index;
if not Player_Entries.Index_At_End then
if not (Comps_Dictionary.Exist
(Player_Entries.Get_Indexed_Entry, C) or
Verbs_Dictionary.Exist
(Player_Entries.Get_Indexed_Entry, V)) then
Text_Io.Put_Line ("Erreur :" &
Player_Entries.Get_Indexed_Entry &
" est une donnee inconnue du scenario");
return False;
end if;
Player_Entries.Next_Index;
end if;
while not Player_Entries.Index_At_End loop
if not (Comps_Dictionary.Exist
(Player_Entries.Get_Indexed_Entry, C)) then
Exist := False;
Text_Io.Put_Line ("Erreur :" &
Player_Entries.Get_Indexed_Entry &
" n est pas un complement");
end if;
Player_Entries.Next_Index;
end loop;
return Exist;
end Exist_Entries_In_Dictionaries;
function Number_Of_Entries return Natural is
The_Number : Natural := 0;
begin
Player_Entries.Open_Index;
while not Player_Entries.Index_At_End loop
The_Number := The_Number + 1;
Player_Entries.Next_Index;
end loop;
return The_Number;
end Number_Of_Entries;
function Is_Entry (A, B, C : String) return Boolean is
Test_Entry : Boolean := False;
begin
Player_Entries.Open_Index;
if not Player_Entries.Index_At_End then
if Player_Entries.Get_Indexed_Entry = A then
Player_Entries.Next_Index;
if not Player_Entries.Index_At_End then
if (Player_Entries.Get_Indexed_Entry = B) then
Player_Entries.Next_Index;
if not Player_Entries.Index_At_End then
if (Player_Entries.Get_Indexed_Entry = C) then
Test_Entry := True;
end if;
elsif C = "" then
Test_Entry := True;
end if;
end if;
elsif B = "" then
Test_Entry := True;
end if;
end if;
end if;
return Test_Entry;
end Is_Entry;
function First_Comp_Value (C : Comps_Dictionary.Object) return String is
begin
Player_Entries.Open_Index;
while not Player_Entries.Index_At_End loop
if Comps_Dictionary.Exist (Player_Entries.Get_Indexed_Entry, C) then
return Player_Entries.Get_Indexed_Entry;
end if;
Player_Entries.Next_Index;
end loop;
return "";
end First_Comp_Value;
function Get_Player (C : Comps_Dictionary.Object;
V : Verbs_Dictionary.Object)
return Player_Entries.Token is
Valid_Entry : Boolean := False;
begin
Test_Entry:
while not Valid_Entry loop
Valid_Entry := Player_Entries.Get_Player_Entry;
-- Player_Entries.Print_Player_Entry;
if not Valid_Entry then
Text_Io.Put_Line (Player_Entries.Get_Player_Error);
elsif Player_Entries.Is_Command then
exit Test_Entry;
else
Valid_Entry := Exist_Entries_In_Dictionaries (C, V);
end if;
end loop Test_Entry;
return Player_Entries.Get_Command;
end Get_Player;
end Interprete;
nblk1=5
nid=0
hdr6=a
[0x00] rec0=1e rec1=00 rec2=01 rec3=05c
[0x01] rec0=20 rec1=00 rec2=05 rec3=00e
[0x02] rec0=19 rec1=00 rec2=04 rec3=00a
[0x03] rec0=03 rec1=00 rec2=02 rec3=06e
[0x04] rec0=1f rec1=00 rec2=03 rec3=001
tail 0x21748b442865045707e09 0x42a00088462060003