DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

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

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦82b7d0550⟧ Ada Source

    Length: 20480 (0x5000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Parseur, seg_03bb2b

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



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;

E3 Meta Data

    nblk1=13
    nid=c
    hdr6=1a
        [0x00] rec0=21 rec1=00 rec2=01 rec3=004
        [0x01] rec0=02 rec1=00 rec2=0b rec3=00e
        [0x02] rec0=1f rec1=00 rec2=04 rec3=000
        [0x03] rec0=20 rec1=00 rec2=07 rec3=00e
        [0x04] rec0=1c rec1=00 rec2=06 rec3=002
        [0x05] rec0=1e rec1=00 rec2=05 rec3=046
        [0x06] rec0=1d rec1=00 rec2=08 rec3=058
        [0x07] rec0=25 rec1=00 rec2=0a rec3=004
        [0x08] rec0=1f rec1=00 rec2=0d rec3=02a
        [0x09] rec0=24 rec1=00 rec2=09 rec3=002
        [0x0a] rec0=21 rec1=00 rec2=12 rec3=042
        [0x0b] rec0=20 rec1=00 rec2=11 rec3=006
        [0x0c] rec0=1c rec1=00 rec2=0e rec3=000
        [0x0d] rec0=1c rec1=00 rec2=0e rec3=000
        [0x0e] rec0=1c rec1=00 rec2=0e rec3=000
        [0x0f] rec0=24 rec1=00 rec2=02 rec3=030
        [0x10] rec0=08 rec1=00 rec2=03 rec3=000
        [0x11] rec0=00 rec1=00 rec2=00 rec3=000
        [0x12] rec0=00 rec1=00 rec2=00 rec3=000
    tail 0x215306ee884e173c510c0 0x42a00088462060003
Free Block Chain:
  0xc: 0000  00 02 03 fc 80 0e 20 72 65 74 75 72 6e 20 46 61  ┆       return Fa┆
  0x2: 0000  00 03 03 fc 80 1a 47 65 74 5f 54 6f 6b 65 6e 20  ┆      Get_Token ┆
  0x3: 0000  00 13 03 fc 80 05 61 6c 73 65 3b 05 00 0f 20 20  ┆      alse;     ┆
  0x13: 0000  00 10 00 19 80 0a 42 6f 6f 6c 65 61 6e 20 69 73  ┆      Boolean is┆
  0x10: 0000  00 0f 03 fc 80 05 61 6c 73 65 3b 05 00 0f 20 20  ┆      alse;     ┆
  0xf: 0000  00 00 00 06 80 03 20 20 20 03 20 20 20 20 20 20  ┆                ┆