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

⟦9d72e4060⟧ Ada Source

    Length: 7168 (0x1c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Sc, seg_0480db

Derivation

└─⟦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 Nos_Chaines;
----------------------------------------------------------------------------------------
-- paquetage definissant:
--      les structures permettant de memoriser les parametres d'une expression a evaluer
--      les types des parametres autorises dans cette expression
--      les structures d'evaluation d'une expression
--      les differents types d'evaluation a realiser
--      la structure de memorisation d'une condition a realiser
---------------------------------------------------------------------------------------
package Sc is
    -- type des parametre q'une condition  peut contenir

    type T_Parameter is (Communication, Compteur, Lieu, Objet, Personnage,
                         Verbe, Preposition, Joueur, Positioncourante,
                         Etat, Possession, Position, Contenu, Existe,
                         Sortie, Vers, Direction, Est, Dans, Reliea, Texte,
                         Greater_Than, Less_Than, Equal, Number, Unknown);

    -- renvoie le type de parametre d une valeur
    function Wich_Type (T : Nos_Chaines.String_Text) return T_Parameter;

    -- verifie la compatibilite de deux parametres successifs
    function Compatible (A : T_Parameter; B : T_Parameter) return Boolean;


    -- structure de la memorisation d'un parametre

    type T_Data is
        record
            Typ : T_Parameter;
            Value : Nos_Chaines.String_Text;
        end record;

    type T_Tab_Of_Parameter is array (Positive range 1 .. 5) of T_Data;

    procedure Copy_Tab (T1 : in out T_Tab_Of_Parameter;
                        T2 : T_Tab_Of_Parameter);
----- definition des differents type d'expression booleenne a evaluer ----

    type T_Evaluation is (Type_Action, Type_Recherche,
                          Type_Egalite, Type_Comparaison);

----- comparateur autorises
    type T_Comparateur is (Greater, Less, Equal_As);

    function Is_Comparateur (P : Nos_Chaines.String_Text) return Boolean;
    function To_Type_Comparateur
                (P : Nos_Chaines.String_Text) return T_Comparateur;

----- structure d'une expression a evaluer
    type T_Expression (Typ : T_Evaluation := Type_Action) is
        record
            case Typ is
                when Type_Action | Type_Recherche =>
                    Parameters : T_Tab_Of_Parameter;
                    Number_Of_Parameters : Natural;
                when Type_Egalite =>
                    Member1 : T_Tab_Of_Parameter;
                    Member2 : T_Tab_Of_Parameter;
                    Size_Of_Member1 : Positive;
                    Size_Of_Member2 : Positive;
                when Type_Comparaison =>
                    Id : Nos_Chaines.String_Text;
                    Value : Natural;
                    Operator : T_Comparateur;
            end case;
        end record;

    ------ structure d'evaluation des conditions d'une regle----------

    type Selecteur_Leaf_Node is (Type_Leaf, Type_Node);

    type Boolean_Operator is (Et, Ou, Non);

    type T_Node (Typ : Selecteur_Leaf_Node := Type_Node) is private;

    type P_Node is access T_Node;

    subtype T_Condition is P_Node;

    -- evalue une  condition
    function Evaluate (P : T_Condition) return Boolean;


    -- cree une nouvelle feuille
    function Make_Node (The_Expression : T_Expression) return P_Node;
    -- cree un nouveau noeud
    -- operateur binaire
    function Make_Node
                (Op : Boolean_Operator; Left_Node : P_Node; Right_Node : P_Node)
                return P_Node;
    -- operateur unaire
    function Make_Node (Op : Boolean_Operator; Neg_Node : P_Node) return P_Node;




    --------------- donne privee de l'arbre d'evaluation ---------

private
    type T_Node (Typ : Selecteur_Leaf_Node := Type_Node) is
        record
            Left, Right : P_Node := null;
            case Typ is
                when Type_Node =>
                    Left_Value, Right_Value, Result : Boolean;
                    Operator : Boolean_Operator;
                when Type_Leaf =>
                    Expression : T_Expression;

            end case;
        end record;

end Sc;

E3 Meta Data

    nblk1=6
    nid=0
    hdr6=c
        [0x00] rec0=12 rec1=00 rec2=01 rec3=084
        [0x01] rec0=1d rec1=00 rec2=02 rec3=068
        [0x02] rec0=02 rec1=00 rec2=06 rec3=07c
        [0x03] rec0=1b rec1=00 rec2=03 rec3=03e
        [0x04] rec0=20 rec1=00 rec2=04 rec3=052
        [0x05] rec0=08 rec1=00 rec2=05 rec3=000
    tail 0x2174c121886584115fa84 0x42a00088462060003