|
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: 10240 (0x2800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Interpreteur, seg_042b85
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
with Document, Mots, Nombre_De_Mots, Numeros_De_Lignes, Text_Io, Gestion_De_Tables, Display; package body Interpreteur is Verbe_Table : Gestion_De_Tables.Tableau; Preposition_Table : Gestion_De_Tables.Tableau; Complement_Table : Gestion_De_Tables.Tableau; Complement2_Table : Gestion_De_Tables.Tableau; Compteur : Natural := 1; -- Pour eviter de chercher dans un tableau qui n'existe pas! Verbe_Locked : Boolean := False; Preposition_Locked : Boolean := False; Complement_Locked : Boolean := False; Complement2_Locked : Boolean := False; procedure Create_Table (Name_File : in String; Begin_Def, End_Def : in String; Une_Table : in out Gestion_De_Tables.Tableau; Lock : in out Boolean) is Read_Word : Mots.Mot; Num_Line : Numeros_De_Lignes.Numero; function Equal (Chaine1 : String; Chaine2 : String) return Boolean renames Standard."="; begin Document.Fopen (Name_File); while not Document.En_Fin_De_Fichier loop Document.File_Get (Read_Word, Num_Line); if Equal (Mots.Valeur (Read_Word), Begin_Def) then loop Document.File_Get (Read_Word, Num_Line); exit when Equal (Mots.Valeur (Read_Word), End_Def); Une_Table (Compteur) := new String'(Mots.Valeur (Read_Word)); Compteur := Compteur + 1; Text_Io.Put_Line (Mots.Valeur (Read_Word)); end loop; Une_Table (Compteur .. 80) := (others => (new String'(" "))); end if; end loop; Document.Fclose; Compteur := 1; Lock := True; exception when others => Text_Io.Put_Line ("Erreur create_table"); end Create_Table; procedure File_Interprete (File_Name : in String) is begin Create_Table (File_Name, "Debut_Verbes", "Fin_Verbes", Verbe_Table, Verbe_Locked); Create_Table (File_Name, "Debut_Prepositions", "Fin_Prepositions", Preposition_Table, Preposition_Locked); Create_Table (File_Name, "Debut_Complements", "Fin_Complements", Complement_Table, Complement_Locked); Create_Table (File_Name, "Debut_Complements2", "Fin_Complements2", Complement2_Table, Complement2_Locked); exception when others => Text_Io.Put_Line ("Erreur file_interprete"); end File_Interprete; -------------------------------------------------------------------------------------- procedure Interprete is Mot_Lu : Mots.Mot; Num_Word : Nombre_De_Mots.Numero; Line_Fini : Boolean := False; procedure Affiche (A_String : String) is begin Display.Write_On_Player (A_String); end Affiche; begin Mots.Creer (Mot_Lu, ""); loop -- Document.Open; -- Text_Io.Put ("/:> "); Loop_A_Instruction: loop Document.Get (Mot_Lu, Num_Word, Line_Fini); if (Num_Word > Nombre_De_Mots.Nombre_Max_Mots) then Affiche ("Une instruction ne comporte pas plus de quatre mots !"); exit Loop_A_Instruction; elsif Mots.Valeur (Mot_Lu) = "quit" then raise End_Of_Play; elsif (Num_Word > 0) then if Mots.Valeur (Mot_Lu) /= "nothing" then if Verbe_Locked and then Gestion_De_Tables.Chercher_Dans_Table (Verbe_Table, Mot_Lu) then Affiche ("mot correct"); elsif Preposition_Locked and then Gestion_De_Tables.Chercher_Dans_Table (Preposition_Table, Mot_Lu) then Affiche ("mot correct"); elsif Complement_Locked and then Gestion_De_Tables.Chercher_Dans_Table (Complement_Table, Mot_Lu) then Affiche ("mot correct"); elsif Complement2_Locked and then Gestion_De_Tables.Chercher_Dans_Table (Complement2_Table, Mot_Lu) then Affiche ("mot correct"); else Affiche ("mot incorrect"); end if; end if; end if; exit Loop_A_Instruction when Line_Fini = True; end loop Loop_A_Instruction; Line_Fini := False; Num_Word := 0; -- Document.Close; end loop; exception when End_Of_Play => return; when others => Text_Io.Put_Line ("ERREUR INTERPRETE"); end Interprete; end Interpreteur;
nblk1=9 nid=7 hdr6=c [0x00] rec0=1c rec1=00 rec2=01 rec3=07c [0x01] rec0=1b rec1=00 rec2=05 rec3=00a [0x02] rec0=1c rec1=00 rec2=03 rec3=010 [0x03] rec0=18 rec1=00 rec2=04 rec3=030 [0x04] rec0=10 rec1=00 rec2=06 rec3=024 [0x05] rec0=14 rec1=00 rec2=02 rec3=000 [0x06] rec0=17 rec1=00 rec2=07 rec3=000 [0x07] rec0=17 rec1=00 rec2=07 rec3=001 [0x08] rec0=84 rec1=1a rec2=80 rec3=004 tail 0x21743854086306a1d9816 0x42a00088462060003 Free Block Chain: 0x7: 0000 00 08 02 ae 80 0d 20 20 20 20 20 20 20 20 20 65 ┆ e┆ 0x8: 0000 00 09 00 04 80 01 65 01 02 03 4d 6f 74 20 63 6f ┆ e Mot co┆ 0x9: 0000 00 00 00 47 80 05 69 63 68 65 3b 05 00 00 00 00 ┆ G iche; ┆