DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦17a7719ce⟧ TextFile

    Length: 11252 (0x2bf4)
    Types: TextFile
    Names: »B«

Derivation

└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
    └─ ⟦129cab021⟧ »DATA« 
        └─⟦this⟧ 

TextFile

with Lexical;
use Lexical;
package body Parseur 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 Parseur;