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

⟦a9bcacd4d⟧ Ada Source

    Length: 9216 (0x2400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Test_Boolean_Expressions, seg_004609

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 Profile;
with Log;
with Simple_Status;
with Boolean_Expressions;
with Testing_Pathnames;
with Abstract_Document;
with Create_Null_Document;
with Common;
with Ada_Program;
with Table_Formatter;
with Errors;
with Lrm_Renames;
use Lrm_Renames;
procedure Test_Boolean_Expressions
             (In_Unit : String :=
                 "$$.units.testing.test_input.bool_exps'body") is

    Unit_Id : Ada.Element := Ada.Conversion.Resolve (In_Unit);

    Unit_Under_Test : constant String := "$$.units.boolean_expressions";

    Status   : Errors.Condition;
    Doc      : Abstract_Document.Handle;
    Doc_Name : constant String := Testing_Pathnames.New_Test_Output
                                     (Unit_Under_Test, Suffix => "Output");

    B : Boolean := True;

    package Table is new Table_Formatter (4);

    procedure Traverse_Exps (Expression : Ada.Element) is
        Exp_Kind    : Boolean_Expressions.Expression_Kind :=
           Boolean_Expressions.Kind (Expression);
        Op          : Boolean_Expressions.Operator;
        Left, Right : Ada.Element;
    begin
        case Exp_Kind is
            when Boolean_Expressions.Expression | Boolean_Expressions.Relation |
                 Boolean_Expressions.Membership =>
                Left  := Boolean_Expressions.Left_Argument (Expression);
                Right := Boolean_Expressions.Right_Argument (Expression);
                Op    := Boolean_Expressions.Expression_Operator (Expression);
            when Boolean_Expressions.Not_Expression =>
                Left  := Boolean_Expressions.Argument (Expression);
                Right := Ada.Nil_Element;
                Op    := Boolean_Expressions.Expression_Operator (Expression);
            when Boolean_Expressions.Identifier |  
                 Boolean_Expressions.Literal |  
                 Boolean_Expressions.Membership_Range |  
                 Boolean_Expressions.Function_Call |
                 Boolean_Expressions.Not_An_Expression |
                 Boolean_Expressions.Attribute =>
                Table.Item (Ada.Image (Expression), Expression);
                Table.Item (Boolean_Expressions.Expression_Kind'Image
                               (Exp_Kind), Expression);
                Table.Item ("");
                Table.Item ("");
        end case;

        case Exp_Kind is
            when Boolean_Expressions.Expression |  
                 Boolean_Expressions.Relation |  
                 Boolean_Expressions.Membership =>


                Table.Item (Boolean_Expressions.Image (Op), Expression);
                Table.Item (Boolean_Expressions.Expression_Kind'Image
                               (Exp_Kind), Expression);

                Table.Item (Ada.Image (Left), Left);
                Table.Item (Ada.Image (Right), Right);

                Traverse_Exps (Left);
                Traverse_Exps (Right);
            when Boolean_Expressions.Not_Expression =>


                Table.Item (Ada.Image (Left), Left);
                Table.Item ("");

                Traverse_Exps (Left);
            when Boolean_Expressions.Identifier |  
                 Boolean_Expressions.Literal |  
                 Boolean_Expressions.Membership_Range |  
                 Boolean_Expressions.Function_Call |
                 Boolean_Expressions.Attribute |
                 Boolean_Expressions.Not_An_Expression =>
                null;
        end case;
    end Traverse_Exps;

    procedure Pre_Op (Program_Element :        Ada.Element;
                      State           : in out Boolean;
                      Control         : in out Ada.Traversal_Control) is
    begin
        case Exprs.Kind (Program_Element) is
            when Exprs.A_Complex_Expression | Exprs.A_Function_Call =>
                Traverse_Exps (Program_Element);
                Control := Ada.Abandon_Children;
            when others =>
                Control := Ada.Continue;
        end case;
    end Pre_Op;

    procedure Post_Op (Program_Element :        Ada.Element;
                       State           : in out Boolean;
                       Control         : in out Ada.Traversal_Control) is
    begin
        Control := Ada.Continue;
    end Post_Op;

    procedure Traverse is new Ada.Depth_First_Traversal
                                 (Boolean, Pre_Op, Post_Op);
begin
    Create_Null_Document (Named           => Doc_Name,
                          Error_Info      => Status,
                          Document_Handle => Doc);

    case Errors.Severity (Status) is
        when Simple_Status.Problem | Simple_Status.Fatal =>
            Log.Put_Line ("Problem creating object " & Doc_Name &
                          ".  " & Errors.Info (Status), Profile.Error_Msg);
        when others =>

            Table.Header ("Operator");
            Table.Header ("Kind");
            Table.Header ("Left arg");
            Table.Header ("Right arg");

            Traverse (Comp_Units.Parent_Compilation_Unit (Unit_Id), B, False);

            Table.Display (Doc, "expression breakout");
            Abstract_Document.Close (Doc);
            Common.Definition (Doc_Name);
    end case;
end Test_Boolean_Expressions;

E3 Meta Data

    nblk1=8
    nid=0
    hdr6=10
        [0x00] rec0=22 rec1=00 rec2=01 rec3=026
        [0x01] rec0=00 rec1=00 rec2=08 rec3=006
        [0x02] rec0=12 rec1=00 rec2=07 rec3=022
        [0x03] rec0=00 rec1=00 rec2=02 rec3=030
        [0x04] rec0=1a rec1=00 rec2=03 rec3=000
        [0x05] rec0=18 rec1=00 rec2=04 rec3=02e
        [0x06] rec0=1a rec1=00 rec2=05 rec3=04c
        [0x07] rec0=0a rec1=00 rec2=06 rec3=000
    tail 0x21500414e815c65a14b89 0x42a00088462061e03