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 - downloadIndex: ┃ B T ┃
Length: 5327 (0x14cf) Types: TextFile Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11 └─ ⟦129cab021⟧ »DATA« └─⟦this⟧
with Bounded_String, Statements, Object, Scanner, Tiny_Error, Block_Class, Easy_X, Message, Pen_Class, Turtle_Class, Date_Class, String_Class, Tiny_X, Counter, Statistic, Bug, Io_Exceptions; package body Tiny_Talk is package Bs renames Bounded_String; Display : Message.Tiny_String; Program : Message.Tiny_String; function Get_Display return String is begin return Bs.Image (Display); end Get_Display; procedure Set_Display (To : String) is begin Bs.Copy (Display, To); end Set_Display; function Get_Program return String is begin return Bs.Image (Program); end Get_Program; procedure Set_Program (To : String) is begin Bs.Copy (Program, To); end Set_Program; procedure Run (The_Program : String; On_Display : String; Unparse : Boolean; Statistics : Boolean) is Result : Object.Reference; Main_Node : Statements.Node := Statements.Empty_Node; begin Set_Display (On_Display); Set_Program (The_Program); Scanner.Open (The_Program); Scanner.Next; Tiny_X.Open (The_Program); Turtle_Class.Create_Default; Pen_Class.Create_Default; Date_Class.Create_Default; Statements.Parse (Main_Node); if Unparse then Statements.Unparse (Main_Node); end if; loop case Easy_X.Next_Event is when Easy_X.Update => Turtle_Class.Reset; Pen_Class.Reset; String_Class.Reset; Counter.Start_General_Counter; Result := Statements.Interpret (Main_Node, Result); Counter.State_Message; when Easy_X.Button_Down => exit; when Easy_X.Button_Up => null; end case; end loop; if Statistics then Statistic.Write; end if; Tiny_X.Close; exception when Bug.Undefined_Name_In_Symbol_Table => Tiny_Error.Undefined_Name_In_Symbol_Table; when Bug.Id_String_Overflow | Bug.Too_Many_Strings => Tiny_Error.String_Class_Full; when Bug.String_Large_Overflow => Tiny_Error.String_Large_Overflow; when Bug.Search_No_String_Object => Tiny_Error.Search_No_String_Object; when Bug.Unknown_String_Message => Tiny_Error.Unknown_String_Message; when Bug.Missing_Point => Tiny_Error.Missing_Point; when Bug.Missing_Right_Brace => Tiny_Error.Missing_Right_Brace; when Bug.Missing_Reserved_Word => Tiny_Error.Missing_Reserved_Word; when Bug.Mismatch_Arguments_List => Tiny_Error.Mismatch_Arguments_List; when Bug.Missing_Right_Parentheses => Tiny_Error.Missing_Right_Parentheses; when Bug.Not_Enough_Messages => Tiny_Error.Not_Enough_Messages; when Bug.Too_Many_Messages => Tiny_Error.Too_Many_Messages; when Bug.Too_Many_Blocks => Tiny_Error.Too_Many_Blocks; when Bug.Block_Not_Found => Tiny_Error.Block_Not_Found; when Bug.Unknown_Block_Message => Tiny_Error.Unknown_Block_Message; when Bug.Unknown_Integer_Message => Tiny_Error.Unknown_Integer_Message; when Bug.Unknown_Boolean_Message => Tiny_Error.Unknown_Boolean_Message; when Bug.Unknown_Turtle_Message => Tiny_Error.Unknown_Turtle_Message; when Bug.Too_Many_Turtles => Tiny_Error.Turtle_Table_Full; when Bug.Unknown_Date_Message => Tiny_Error.Unknown_Date_Message; when Bug.Unexpected_Action_On_Date => Tiny_Error.Unexpected_Action_On_Date; when Bug.Unknown_Pen_Message => Tiny_Error.Unknown_Pen_Message; when Bug.Too_Many_Pens => Tiny_Error.Too_Many_Pens; when Bug.Unexpected_Object => Tiny_Error.Incorrect_Object; when Bug.Too_Many_Keywords => Tiny_Error.Too_Many_Keywords; when Bug.Not_Enough_Keywords => Tiny_Error.Not_Enough_Keywords; when Bug.Missing_Identifier => Tiny_Error.Missing_Identifier; when Bug.Unexpected_Token => Tiny_Error.Unexpected_Token; when Bug.Mismatch_Type => Tiny_Error.Mismatch_Type; when Bug.Mismatch_Message => Tiny_Error.Mismatch_Message; when Bug.Too_Many_Includes => Tiny_Error.Too_Many_Includes; when Io_Exceptions.Name_Error => Tiny_Error.Bad_File_Name; when Easy_X.Fatal_Error => Tiny_Error.Fatal_X; when Numeric_Error => Tiny_Error.Numeric_Error; when Constraint_Error => Tiny_Error.Out_Of_Range; when Program_Error => Tiny_Error.Internal_Error; when Storage_Error => Tiny_Error.Out_Of_Memory; when Bug.Unexpected_Include_File_Name => Tiny_Error.Unexpected_Include_File_Name; end Run; end Tiny_Talk;