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: 2434 (0x982) Types: TextFile Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11 └─ ⟦129cab021⟧ »DATA« └─⟦this⟧
with Object, Scanner, Table, Bug; package body List is procedure Parse (Keyword_List : in out Message.List; Id_List : in out Message.List; Symbol : in out Table.Symbol_Kind) is Keyword, Id : Message.Tiny_String; In_Table : Boolean := False; Void_Object : Object.Reference := Object.Void_Reference; use Scanner; begin if Scanner.Get_Token = Scanner.T_Keyword then Keyword := Scanner.Get_Value; Keyword_List := Message.Put (Keyword_List, Keyword); Scanner.Next; if Scanner.Get_Token /= Scanner.T_Identifier then raise Bug.Missing_Identifier; end if; Id := Scanner.Get_Value; Table.Find (The_Table => Symbol, Name => Id, New_Reference => Void_Object, Success => In_Table); if not In_Table then Table.Insert (The_Table => Symbol, Name => Id, New_Reference => Void_Object); end if; Id_List := Message.Put (L => Id_List, Mess => Id); Scanner.Next; if Scanner.Get_Token = Scanner.T_Keyword then Parse (Keyword_List, Id_List, Symbol); elsif Scanner.Get_Token = Scanner.T_Identifier then raise Bug.Mismatch_Arguments_List; end if; else if Scanner.Get_Token /= Scanner.T_Identifier then raise Bug.Missing_Identifier; end if; Id := Scanner.Get_Value; Table.Find (The_Table => Symbol, Name => Id, New_Reference => Void_Object, Success => In_Table); if not In_Table then Table.Insert (The_Table => Symbol, Name => Id, New_Reference => Void_Object); end if; Id_List := Message.Put (L => Id_List, Mess => Id); Scanner.Next; if Scanner.Get_Token = Scanner.T_Identifier then Parse (Keyword_List, Id_List, Symbol); elsif Scanner.Get_Token = Scanner.T_Keyword then raise Bug.Mismatch_Arguments_List; end if; end if; end Parse; end List;