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

⟦cf7c07776⟧ Ada Source

    Length: 6144 (0x1800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Player_Dictionary, seg_047718

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 Structure_Des_Variables;
use Structure_Des_Variables;  -- necessaire pour reconnaitre "sans_type"

package body Player_Dictionary is
    type Command_Typ is (Verbe, Complement, Preposition, No_More,
                         Preposition_Or_Complement, Without_Type);

    function Equal (A, B : Interface_Structure.Type_Of_Var) return Boolean
        renames Structure_Des_Variables.Equal;

    function Player_Sens (A_Word_Of_The_Command : Mots.Word) return Boolean is

    begin
        if Equal (Interface_Structure.Get_Type (A_Word_Of_The_Command),
                  Interface_Structure.Type_Of_Var (Sans_Type)) then
            return True;
        end if;
        return False;
    end Player_Sens;

    function Player_Syntax (Player_Table_Of_Word : in Mots.T_Tab_Commande;
                            Number : Natural) return Boolean is

        Next_Command : Command_Typ := Without_Type;
        Ok : Boolean := False;

        function Equal (A, B : Command_Typ) return Boolean is
        begin
            if A = B then
                return True;
            end if;
            return False;
        end Equal;

    begin
        for Row_Syntax in 1 .. Number loop
            Ok := False;
            case Interface_Structure.Get_Type
                    (Player_Table_Of_Word (Row_Syntax)) is
                when Verbe =>
                    if ((Row_Syntax = 1) and then
                        Equal (Next_Command, Without_Type)) then
                        Ok := True;
                    else
                        exit;
                    end if;
                    Next_Command := Complement;
                when Preposition =>
                    if ((Row_Syntax = 3) and then
                        Equal (Next_Command, Preposition)) then
                        Ok := True;
                    else
                        exit;
                    end if;
                    Next_Command := Complement;
                when Communication | Compteur | Lieu | Objet | Personnage =>
                    if ((Row_Syntax = 2) and then
                        Equal (Next_Command, Complement)) then
                        Ok := True;  
                        Next_Command := Preposition_Or_Complement;
                    elsif ((Row_Syntax = 3) and then
                           Equal (Next_Command, Preposition_Or_Complement)) then
                        Ok := True;
                        if Equal (Interface_Structure.Get_Type
                                     (Player_Table_Of_Word (Row_Syntax)),
                                  Preposition) then
                            Next_Command := Complement;
                        else
                            Next_Command := No_More;
                        end if;
                    elsif ((Row_Syntax = 4) and then
                           Equal (Next_Command, Complement)) then
                        Ok := True;
                        Next_Command := No_More;
                    else
                        exit;
                    end if;
                when others =>
                    exit;
            end case;
            if Ok then
                return True;
            else
                return False;
            end if;
        end loop;
    end Player_Syntax;

end Player_Dictionary;

E3 Meta Data

    nblk1=5
    nid=2
    hdr6=8
        [0x00] rec0=1c rec1=00 rec2=01 rec3=038
        [0x01] rec0=1c rec1=00 rec2=04 rec3=038
        [0x02] rec0=12 rec1=00 rec2=05 rec3=024
        [0x03] rec0=11 rec1=00 rec2=03 rec3=000
        [0x04] rec0=0d rec1=00 rec2=03 rec3=000
    tail 0x215447d4486544f27ade4 0x42a00088462060003
Free Block Chain:
  0x2: 0000  00 00 00 04 80 01 2c 01 42 6f 6f 6c 65 61 6e 20  ┆      , Boolean ┆