DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

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 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T V

⟦f779654a0⟧ TextFile

    Length: 2864 (0xb30)
    Types: TextFile
    Names: »V«

Derivation

└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13
    └─ ⟦124ff5788⟧ »DATA« 
        └─⟦this⟧ 
└─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16
    └─ ⟦6f12a12be⟧ »DATA« 
        └─⟦this⟧ 

TextFile

with Output_Stream;
generic  
    Max_Expression_Count : Positive := 500;

    type System_Defined_Operators is (<>);

    with function System_Defined_Match
                     (Using_Operator : System_Defined_Operators;
                      Value          : Integer;
                      Against        : Integer) return Boolean is <>;

    with function System_Defined_Evaluate
                     (Using_Operator : System_Defined_Operators;
                      Left, Right    : Integer) return Integer is <>;

    type User_Defined_Operators is (<>);

    with function User_Defined_Match (Using_Operator : User_Defined_Operators;
                                      Value : Integer;
                                      Against : Integer) return Boolean is <>;

    with function User_Defined_Evaluate
                     (Using_Operator : User_Defined_Operators;
                      Left, Right    : Integer) return Integer is <>;

package Generic_Expression is

    type Object is private;  -- an expression
    Null_Expression : constant Object;

    type Alias is (A, B, C, D, E, F, G, H, I, J, K, L, M,
                   N, O, P, Q, R, S, T, U, V, W, X, Y, Z);

    -- expression constructors

    function Value     (For_Integer : Integer) return Object;
    function Value     (For_Alias : Alias)     return Object;
    function Define_As (The_Alias : Alias)     return Object;

    -- only for predicates

    function "and" (Left, Right : Object) return Object;

    -- system defined

    generic
        Operator : System_Defined_Operators;
    function Unary_System_Predicate return Object;

    generic
        Operator : System_Defined_Operators;
    function Binary_System_Predicate (Using_Value : Object) return Object;

    generic
        Operator : System_Defined_Operators;
    function Unary_System_Expression (Using_Value : Object) return Object;

    generic
        Operator : System_Defined_Operators;
    function Binary_System_Expression (Left, Right : Object) return Object;

    -- user defined

    generic
        Operator : User_Defined_Operators;
    function Unary_User_Predicate return Object;

    generic
        Operator : User_Defined_Operators;
    function Binary_User_Predicate (Using_Value : Object) return Object;

    generic
        Operator : User_Defined_Operators;
    function Unary_User_Expression (Using_Value : Object) return Object;

    generic
        Operator : User_Defined_Operators;
    function Binary_User_Expression (Left, Right : Object) return Object;


    function  Match (Value : Integer; Against : Object) return Boolean;
    procedure Put   (The_Object : Object; Where : Output_Stream.Object);

    Illegal_Operation : exception;  
    Overflow          : exception;
private

    type Object is new Natural;
    Null_Expression : constant Object := 0;

end Generic_Expression;