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

⟦e35087666⟧ TextFile

    Length: 3884 (0xf2c)
    Types: TextFile
    Names: »B«

Derivation

└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
    └─ ⟦129cab021⟧ »DATA« 
        └─⟦this⟧ 

TextFile

with Block_Class;
with Boolean_Class;
with Easy_X;  
with Integer_Class;
with Msg_Report;
with Object;
with Pen_Class;
with Primary;
with Scanner;
with Statements;  
with String_Class;
with Symbol_Table;
with Text_Io;
with Turtle_Class;
with Unparse_Report;

procedure Go_Tiny (Source_File_Name : String := "demo_tiny_talk";  
                   Unparse_File_Name : String := "demo_tiny_talk";
                   Display : String;  
                   With_Unparse : Character := 'Y';
                   With_Tracing_Mode : Character := 'N') is

    Node : Statements.Node;
    Tiny_Object : Object.Reference;
    Parse_Failed : Boolean := False;

    Window_Name : constant String := "Tiny Talk";

    use Scanner;
begin

    if With_Tracing_Mode = 'Y' or With_Tracing_Mode = 'y' then
        Msg_Report.Tracing_On;
    else  
        Msg_Report.Tracing_Off;  
    end if;

    Scanner.Open (Source_File_Name);  
    Scanner.Next;

    Text_Io.Put ("Parsing in progress ...");
    Text_Io.New_Line;

    Symbol_Table.Create;
    Statements.Parse (Node, Parse_Failed);
    if not Parse_Failed then

        if With_Unparse = 'Y' or With_Unparse = 'y' then

            Unparse_Report.Open (Unparse_File_Name);

            Text_Io.Put ("Unparsing in progress ...");
            Text_Io.New_Line;

            Statements.Unparse (Node);  
            Unparse_Report.Close;

        end if;

        Easy_X.Open (Display, Window_Name);

        loop

            Turtle_Class.Init_Instance_Table;
            Pen_Class.Init_Instance_Table;

            case Easy_X.Next_Event is

                when Easy_X.Update =>

                    Text_Io.Put ("Interpretation in progress ...");
                    Text_Io.New_Line;

                    Tiny_Object := Statements.Interpret (Node);

                    Text_Io.Put ("Tiny_object is " &
                                 Object.Class'Image
                                    (Object.The_Class (Tiny_Object)) &
                                 " content " & Integer'Image
                                                  (Object.Identificator
                                                      (Tiny_Object)));
                    Text_Io.New_Line;

                when Easy_X.Button_Down | Easy_X.Button_Up =>
                    exit;

            end case;
        end loop;

        Easy_X.Close;
        Text_Io.Put ("Good bye !!!");
        Text_Io.New_Line;

    else  
        if Scanner.Symbol /= L_Unknown then
            Scanner.Close;  
        end if;

    end if;


exception

    when Scanner.Inexistant_File =>  
        Msg_Report.Interpret_Error ("Stop Tiny Talk");

    when Boolean_Class.Incorrect_Method =>  
        Msg_Report.Interpret_Error ("Stop interpret");
        Easy_X.Close;

    when Block_Class.Incorrect_Method | Block_Class.Incorrect_Return_Object |
         Block_Class.Instance_Table_Full =>  
        Msg_Report.Interpret_Error ("Stop interpret");
        Easy_X.Close;

    when Integer_Class.Incorrect_Method | Integer_Class.Incorrect_Nb_Args =>  
        Msg_Report.Interpret_Error ("Stop interpret");
        Easy_X.Close;

    when Pen_Class.Incorrect_Method | Pen_Class.Instance_Table_Full =>  
        Msg_Report.Interpret_Error ("Stop interpret");
        Easy_X.Close;

    when Primary.Undefined_Variable =>  
        Msg_Report.Interpret_Error ("Stop interpret");
        Easy_X.Close;

    when String_Class.Incorrect_Method | String_Class.Incorrect_Nb_Args |
         String_Class.Instance_Table_Full =>  
        Msg_Report.Interpret_Error ("Stop interpret");
        Easy_X.Close;

    when Turtle_Class.Incorrect_Method | Turtle_Class.Instance_Table_Full =>  
        Msg_Report.Interpret_Error ("Stop interpret");
        Easy_X.Close;

    when others =>
        Msg_Report.Interpret_Error ("Unknown exception !!! Stop Tiny Talk");
        Easy_X.Close;

end Go_Tiny;