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 - downloadIndex: ┃ B T ┃
Length: 13973 (0x3695) 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 procedure Dans is separate; function Liste_Dinstructions return Boolean is begin case Lexical.Get_Token is when L_Dans => Dans; when L_Repeter => Lexical.Next; if Expression_Red_Nbre then Lexical.Next; if Lexical.Get_Token = L_Fois then Lexical.Next; if Lexical.Get_Token = L_Begin then Lexical.Next; if Instructions 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; else return False; end if; when L_Repeter_Ad_Eternam => Lexical.Next; if Expression_Red_Nbre then Lexical.Next; if Lexical.Get_Token = L_Begin then Lexical.Next; if Instructions 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; when L_Toutes => Lexical.Next; if Lexical.Get_Token = L_Les then [statement] end if; Lexical.Next; if Oper_Temps then if Lexical.Get_Token = L_Pendant then Lexical.Next; if Oper_Temps then if Lexical.Get_Token = L_Begin then Lexical.Next; if Instructions 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; else return False; end if; else return False; end if; 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;