|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 3884 (0xf2c)
Types: TextFile
Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
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;