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

⟦e4b411d4e⟧ Ada Source

    Length: 3072 (0xc00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Expression, seg_047ffa, seg_049a3c, seg_049a5e

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 Attribute;
package Expression is

    type Node_Kind is (Add, Substract, Multiply, Divide, Number,
                       Single_Attribute, Enumerate, Unknown);

    subtype Operator is Node_Kind range Add .. Divide;

    type Object is private;

    procedure Create (Item : out Object;
                      Kind : in Operator;
                      Left, Right : in Object;
                      Ok : out Boolean);
    procedure Create (Item : out Object; A_Number : in Integer);
    procedure Create (Item : out Object; An_Attribute : in Attribute.Object);
    procedure Create (Item : out Object; Enumeration, Literal : in Positive);
    procedure Show (Item : in Object);
    function Is_A_Number (Item : in Object) return Boolean;
    function Is_An_Enumerate (Item : in Object) return Boolean;
    function Evaluate (Item : in Object) return Integer;
    function Literal (Item : in Object) return Natural;
    function Enumeration (Item : in Object) return Natural;

    Null_Object : constant Object;

private

    type Node (Kind : Node_Kind := Unknown) is
        record
            case Kind is
                when Add | Substract | Multiply | Divide =>
                    Left_Node, Right_Node : Object;
                when Number =>
                    Number_Value : Integer := 0;
                when Single_Attribute =>
                    The_Attribute : Attribute.Object := Attribute.Null_Object;  
                when Enumerate =>
                    Enumeration_Index : Natural := 0;
                    Literal_Index : Natural := 0;
                when Unknown =>
                    null;
            end case;
        end record;

    type Object is access Node;

    Null_Object : constant Object := new Node'(Kind => Unknown);

end Expression;

E3 Meta Data

    nblk1=2
    nid=0
    hdr6=4
        [0x00] rec0=18 rec1=00 rec2=01 rec3=064
        [0x01] rec0=1c rec1=00 rec2=02 rec3=001
    tail 0x2174befd286579a7db857 0x42a00088462060003