|
|
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: 11248 (0x2bf0)
Types: TextFile
Names: »B«
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
└─⟦d65440be7⟧ »DATA«
└─⟦this⟧
with Lexical;
use Lexical;
package body Parse is
function Dans return Boolean is separate;
function Repeter return Boolean is separate;
function Repeter_Ad_Eternam return Boolean is separate;
function Toutes return Boolean is separate;
function Liste_Dinstructions return Boolean is
begin
case Lexical.Get_Token is
when L_Dans =>
return Dans;
when L_Repeter =>
return Repeter;
when L_Repeter_Ad_Eternam =>
return Repeter_Ad_Eternam;
when L_Toutes =>
return Toutes;
when L_Id =>
Lexical.Next;
return Petites_Insructions;
when Groupe =>
return Groupe;
end case;
end Liste_Dinstructions;
function Instructions return Boolean is
begin
while (Lexical.Get_Token = L_Dans or Lexical.Get_Token = L_Repeter or
Lexical.Get_Token = L_Repeter_Ad_Eternam or
Lexical.Get_Token = L_Toutes or Lexical.Get_Token = L_Id or
Lexical.Get_Token = L_Groupe) loop
if not Liste_Dinstructions then
return False;
end if;
end loop;
return True;
end Instructions;
function Bloc_Scenario return Boolean is
begin
while Lexical.Get_Token = L_Scene loop
Lexical.Next;
if Lexical.Get_Token = L_Id then
Lexical.Next;
if Lexical.Get_Token = L_Begin then
if Instructions then
if Lexical.Get_Token = L_End then
Lexical.Next;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
end if;
end loop;
return True;
end Bloc_Scenario;
function Def_Scenario return Boolean is
begin
if Lexical.Get_Token = L_Scenario then
Lexical.Next;
if Lexical.Get_Token = L_Begin then
Lexical.Next;
if Bloc_Scenario then
if Lexical.Get_Token = L_End then
Lexical.Next;
return True;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
end Def_Scenario;
function Bloc_Experience return Boolean is
begin
while Lexical.Get_Token = L_Effet loop
Lexical.Next;
if Lexical.Get_Tiken = L_Id then
if Lexical.Get_Token = L_Open then
Leical.Next;
if Bloc_Groupe then
if Lexical.Get_Token = L_Begin then
Lexical.Next;
if Instructions then
if Lexical.Get_Token = L_End then
Lexical.Next;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
end if;
end loop;
return True;
end Bloc_Experience;
function Def_Experience return Boolean is
begin
if Lexical.Get_Token = L_Experience then
Lexical.Next;
if Lexical.Get_Token = L_Begin then
Lexical.Next;
if Bloc_Experience then
if Lexical.Get_Token = L_End then
Lexical.Next;
return True;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
end Def_Experience;
function Bloc_Acteur return Boolean is
begin
while Lexical.Get_Token = L_Id loop
Lexical.Next;
if Lexical.Get_Token = L_Est then
Lexical.Next;
if Lexical.Get_Token = L_Id then
Lexical.Next;
if Lexical.Get_Token = L_Sur then
Lexical.Next;
if Lexical.Get_Token = L_Station then
Lexical.Next;
if Lexical.Get_Token = L_Number then
Lexical.Next;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
end loop;
return True;
end Bloc_Acteur;
function Def_Acteurs return Boolean is
begin
if Lexical.Get_Token = L_Acteurs then
Lexical.Next;
if Lexical.Get_Token = L_Begin then
Lexical.Next;
if Bloc_Acteur then
if Lexical.Get_Token = L_End then
Lexical.Next;
return True;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
end Def_Acteurs;
function Le_Type return Boolean is
begin
if Lexical.Get_Token = L_Discret then
Lexical.Next;
return True;
else
if Lexical.Get_Token = L_Temporel then
Lexical.Next;
return True;
else
return False;
end if;
end if;
end Le_Type;
function Contenu_Option return Boolean is
begin
if Lexical.Get_Token = L_Vers then
Lexical.Next;
if Le_Type then
if Lexical.Get_Token = L_En then
Lexical.Next;
if Le_Type then
return True;
else
return False;
end if;
else
return True;
end if;
else
return False;
end if;
else
return True;
end if;
end Contenu_Option;
function Option return Boolean is
begin
if Lexical.Get_Token = L_Open then
Lexical.Next;
if Lexical.Get_Token = L_De then
Lexical.Next;
if Le_Type then
if Contenu_Option then
if Lexical.Get_Token = L_Close then
return True;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
else
return True;
end if;
end Option;
function Liste return Boolean is
begin
while Lexical.Get_Token = L_Id loop
Lexical.Next;
if Lexical.Get_Token = L_Est then
Lexical.Next;
if Lexical.Get_Token = L_Number then
Lexical.Next;
if not Option then
return False;
end if;
else
return False;
end if;
else
return False;
end if;
end loop;
return True;
end Liste;
function Bloc_Materiel return Boolean is
begin
while Lexical.Get_Token = L_Id loop
Lexical.Next;
if Lexical.Get_Token = L_Fait then
Lexical.Next;
if Lexical.Get_Token = L_Begin then
Lexical.Next;
if Liste then
if Lexical.Get_Token = L_End then
Lexical.Next;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
end loop;
return True;
end Bloc_Materiel;
function Def_Materiel return Boolean is
begin
if Lexical.Get_Token = L_Materiel then
Lexical.Next;
if Lexical.Get_Token = L_Begin then
Lexical.Next;
if Bloc_Materiel then
if Lexical.Get_Token = L_End then
Lexical.Next;
return True;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
end Def_Materiel;
function Code return Boolean is
begin
if Def_Materiel then
if Def_Acteurs then
if Def_Experience then
if Def_Scenario then
if Def_Enchainement then
return True;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
end Code;
function Start (File_Name : String) return Boolean is
begin
Lexical.Open (File_Name);
Lexical.Next;
if Code then
return True;
else
return False;
end if;
Lexical.Close_The_File;
end Start;
end Parse;