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: ┃ B T

⟦169de50d6⟧ TextFile

    Length: 4960 (0x1360)
    Types: TextFile
    Names: »B«

Derivation

└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
    └─ ⟦d65440be7⟧ »DATA« 
        └─⟦this⟧ 

TextFile

with Bounded_String;
with Stack_Generic;
package body Symbol is

    String_Max_Size : constant := 80;
    Table_Size : constant := 37;




    package Symbol_Tree is
        type Object is private;

        function Name_Exist
                    (In_The_Object : Object;
                     The_Name : Bounded_String.Variable_String) return Boolean;
        function Get_Value (Of_The_Var : Bounded_String.Variable_String;
                            In_The_Object : Object) return Naural;
        function Get_Type (Of_The_Var : Bounded_String.Variable_String;
                           In_The_Object : Object) return Symbol_Type;
        procedure Add (To : in out Object;
                       S : Bounded_String.Variable_String;
                       Of_Type : Symbol_Type);
        procedure Set_Value (Of_The_Var : Bounded_String.Variable_String;
                             In_The_Object : Object;
                             To : Natural);

    private


        type Attributes (T : Symbol_Type) is
            record
                The_Name : Bounded_String.Variable_String (String_Max_Size);
                The_Type : Symbol_Type;
                case T is
                    when T_Integer | T_Time =>
                        The_Value : Natural;
                    when T_Function =>
                        The_Value : Natural;
                end case;
            end record;

        type Symbol_Node;

        type Object is access Symbol_Node;

        type Symbol_Node is
            record
                The_Symbol : Attributes;
                Left_Son, Right_Son : Object;
            end record;


    end Symbol_Tree;


    package body Symbol_Tree is separate;









------------------------------------------------------------------------------
------------------------------------------------------------------------------



    type Parameter;

    type Parameter_Ptr is access Parameter;

    type Parameter is
        record
            Name : Bounded_String.Variable_String (String_Max_Size);
            Succ : Parameter_Ptr;
        end record;

    type Attributes is
        record
            The_Name : Bounded_String.Variable_String (String_Max_Size);
            The_Type : Symbol_Type;
            The_Value : Natural;
            The_Parameters : Parameter_Ptr;
        end record;

    type Symbol_Node;

    type Symbol_Node_Ptr is access Symbol_Node;

    type Symbol_Node is
        record
            The_Symbol : Attributes;
            Left_Son, Right_Son : Symbol_Node_Ptr;
        end record;

    type Table is array (1 .. Table_Size) of Symbol_Node_Ptr;

    type Symbol_Table_Stack_Item is
        record
            The_Name : Bounded_String.Variable_String (String_Max_Size);
            The_Table : Table := (others => null);  
            The_Father : Natural := 0;
        end record;

    package Symbol_Table_Stack is new Stack_Generic (Symbol_Table_Stack_Item);



    The_Object : Symbol_Table_Stack.Stack := Symbol_Table_Stack.Empty_Stack;
    Current_Table : Table;
    Current_Symbol_Node : Symbol_Node;  
    Current_Symbol : Attributes;
    Current_Parameter : Parameter_Ptr;


    function End_Of_Parameter_List return Boolean is
    begin
        return Current_Parameter = null or else Current_Parameter.Succ = null;
    end End_Of_Parameter_List;


    function Exist (S : String) return Boolean is
    begin
        [statement]
    end Exist;


    function Get_Name return String is
    begin
        [statement]
    end Get_Name;


    function Get_Parameter_Name return String is
    begin
        return Bounded_String.Image (Current_Parameter.Name);
    end Get_Parameter_Name;


    function Get_Type return Symbol_Type is
    begin
        [statement]
    end Get_Type;


    function Get_Value return Natural is
    begin
        [statement]
    end Get_Value;


    function Table_Exist (T : String) return Boolean is
    begin
        [statement]
    end Table_Exist;


    procedure Close is
    begin
        [statement]
    end Close;


    procedure First_Parameter is
    begin
        [statement]
    end First_Parameter;


    procedure Insert (S : String) is
    begin
        [statement]
    end Insert;


    procedure Next_Parameter is
    begin
        [statement]
    end Next_Parameter;


    procedure New_Table (T : String) is
    begin
        [statement]
    end New_Table;


    procedure Open is
    begin
        Symbol_Table_Stack.Make_Empty (The_Object);
    end Open;


    procedure Remove is
    begin
        [statement]
    end Remove;


    procedure Set_Parameter_Name (To : String) is
    begin
        [statement]
    end Set_Parameter_Name;


    procedure Set_Type (To : Symbol_Type) is
    begin
        [statement]
    end Set_Type;


    procedure Set_Value (To : Natural) is
    begin
        [statement]
    end Set_Value;


    procedure Table_Go_Back is
    begin
        [statement]
    end Table_Go_Back;
end Symbol;