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

⟦92da15469⟧ Ada Source

    Length: 13312 (0x3400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Instruction, seg_0477ee, seg_048c3c, seg_048cac, seg_048ddd

Derivation

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

E3 Source Code



with Afficher;
with Ajouter_Supprimer;
with Creer;
with Decrire_Informer;
with Deplacer;
with Detruire;
with Fonction_Numerique;
with Inventaire;
with Joueur_Est;
with Modifier_Description;
with Lex;
with Synchro;
with Error;
with Follow;
with Traduction_Scenario;

package body Instruction is
    procedure Parse (Ok : in out Boolean) is
        use Lex;
    begin
        case (Lex.Get_Token) is
            when L_Afficher =>
                Traduction_Scenario.Make_Instruction;
                Traduction_Scenario.Name_Of_Function (Nom => Lex.Get_Value);
                Lex.Next;
                Afficher.Parse (Ok);
                Traduction_Scenario.End_Of_Function;
                if not Ok then  
                    Synchro.Is_On (Error.Instruction_Afficher,
                                   Follow.Instruction);
                    Ok := True;
                end if;
            when L_Ajouter =>
                Traduction_Scenario.Make_Instruction;
                Traduction_Scenario.Name_Of_Function (Nom => Lex.Get_Value);
                Lex.Next;
                Ajouter_Supprimer.Parse (Ok);
                Traduction_Scenario.End_Of_Function;

                if not Ok then
                    Synchro.Is_On (Error.Instruction_Ajouter,
                                   Follow.Instruction);
                    Ok := True;
                end if;  
            when L_Creer =>
                Traduction_Scenario.Make_Instruction;
                Traduction_Scenario.Name_Of_Function (Nom => Lex.Get_Value);
                Lex.Next;
                Creer.Parse (Ok);
                Traduction_Scenario.End_Of_Function;

                if not Ok then
                    Synchro.Is_On (Error.Instruction_Creer, Follow.Instruction);
                    Ok := True;
                end if;
            when L_Decrire =>
                Traduction_Scenario.Make_Instruction;
                Traduction_Scenario.Name_Of_Function (Nom => Lex.Get_Value);
                Lex.Next;
                Decrire_Informer.Parse (Ok);
                Traduction_Scenario.End_Of_Function;

                if not Ok then
                    Synchro.Is_On (Error.Instruction_Decrire,
                                   Follow.Instruction);
                    Ok := True;
                end if;
            when L_Deplacer =>
                Traduction_Scenario.Make_Instruction;
                Traduction_Scenario.Name_Of_Function (Nom => Lex.Get_Value);
                Lex.Next;
                Deplacer.Parse (Ok);
                Traduction_Scenario.End_Of_Function;

                if not Ok then
                    Synchro.Is_On (Error.Instruction_Deplacer,
                                   Follow.Instruction);
                    Ok := True;
                end if;
            when L_Detruire =>
                Traduction_Scenario.Make_Instruction;
                Traduction_Scenario.Name_Of_Function (Nom => Lex.Get_Value);
                Lex.Next;
                Detruire.Parse (Ok);
                Traduction_Scenario.End_Of_Function;

                if not Ok then
                    Synchro.Is_On (Error.Instruction_Detruire,
                                   Follow.Instruction);
                    Ok := True;
                end if;
            when L_Findujeu =>
                Traduction_Scenario.Make_Instruction;
                Traduction_Scenario.Name_Of_Function (Nom => Lex.Get_Value);
                Lex.Next;
                Traduction_Scenario.End_Of_Function;

                Ok := True;
            when L_Informer =>
                Traduction_Scenario.Make_Instruction;
                Traduction_Scenario.Name_Of_Function (Nom => Lex.Get_Value);
                Lex.Next;
                Decrire_Informer.Parse (Ok);
                if not Ok then
                    Synchro.Is_On (Error.Instruction_Informer,
                                   Follow.Instruction);
                    Ok := True;
                end if;
            when L_Inventaire =>
                Traduction_Scenario.Make_Instruction;
                Traduction_Scenario.Name_Of_Function (Nom => Lex.Get_Value);
                Lex.Next;
                Inventaire.Parse (Ok);
                Traduction_Scenario.End_Of_Function;

                if not Ok then
                    Synchro.Is_On (Error.Instruction_Inventaire,
                                   Follow.Instruction);
                    Ok := True;
                end if;
            when L_Joueur =>
                Traduction_Scenario.Make_Instruction;
                Traduction_Scenario.Name_Of_Function (Nom => Lex.Get_Value);
                Lex.Next;
                Joueur_Est.Parse (Ok);
                Traduction_Scenario.End_Of_Function;

                if not Ok then
                    Synchro.Is_On (Error.Instruction_Joueur_Est,
                                   Follow.Instruction);
                    Ok := True;
                end if;
            when L_Modifierdescription =>
                Traduction_Scenario.Make_Instruction;
                Traduction_Scenario.Name_Of_Function (Nom => Lex.Get_Value);
                Lex.Next;
                Modifier_Description.Parse (Ok);
                Traduction_Scenario.End_Of_Function;

                if not Ok then
                    Synchro.Is_On (Error.Instruction_Modifier_Description,
                                   Follow.Instruction);
                    Ok := True;
                end if;
            when L_Supprimer =>
                Traduction_Scenario.Make_Instruction;
                Traduction_Scenario.Name_Of_Function (Nom => Lex.Get_Value);
                Lex.Next;
                Ajouter_Supprimer.Parse (Ok);
                Traduction_Scenario.End_Of_Function;

                if not Ok then
                    Synchro.Is_On (Error.Instruction_Supprimer,
                                   Follow.Instruction);
                    Ok := True;
                end if;
            when L_Id =>
                Traduction_Scenario.Make_Instruction;
                Traduction_Scenario.New_Numeric_Function (Nom => Lex.Get_Value);
                Lex.Next;
                Fonction_Numerique.Parse (Ok);

                if not Ok then
                    Synchro.Is_On (Error.Instruction_Numerique,
                                   Follow.Instruction);
                    Ok := True;
                end if;
            when others =>
                Ok := False;
        end case;

    end Parse;
end Instruction;

E3 Meta Data

    nblk1=c
    nid=3
    hdr6=e
        [0x00] rec0=22 rec1=00 rec2=01 rec3=024
        [0x01] rec0=18 rec1=00 rec2=02 rec3=02c
        [0x02] rec0=18 rec1=00 rec2=05 rec3=01c
        [0x03] rec0=17 rec1=00 rec2=08 rec3=038
        [0x04] rec0=18 rec1=00 rec2=07 rec3=02a
        [0x05] rec0=16 rec1=00 rec2=06 rec3=03e
        [0x06] rec0=18 rec1=00 rec2=04 rec3=000
        [0x07] rec0=04 rec1=00 rec2=03 rec3=000
        [0x08] rec0=56 rec1=ab rec2=80 rec3=004
        [0x09] rec0=d9 rec1=0c rec2=01 rec3=01b
        [0x0a] rec0=ca rec1=5e rec2=90 rec3=000
        [0x0b] rec0=9b rec1=00 rec2=00 rec3=000
    tail 0x2174afb6686545eef0f4f 0x42a00088462060003
Free Block Chain:
  0x3: 0000  00 09 00 9d 80 06 20 54 72 75 65 3b 06 00 17 20  ┆       True;    ┆
  0x9: 0000  00 0a 00 55 80 31 20 20 20 20 20 20 20 20 20 20  ┆   U 1          ┆
  0xa: 0000  00 0b 00 7e 80 04 4f 6b 29 3b 04 00 34 20 20 20  ┆   ~  Ok);  4   ┆
  0xb: 0000  00 0c 00 55 80 2d 20 20 20 53 79 6e 63 68 72 6f  ┆   U -   Synchro┆
  0xc: 0000  00 00 00 55 80 01 3e 01 00 26 20 74 72 61 64 75  ┆   U  >  & tradu┆