|
|
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: 1829 (0x725)
Types: TextFile
Names: »B«
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
└─⟦d65440be7⟧ »DATA«
└─⟦this⟧
with Scanner, Object, Text_Io;
package body List is
procedure Parse (Keyword_List : in out Message.List;
Id_List : in out Message.List;
Symbol : in out Table.Symbol_Kind;
Error : out Boolean) is
Failed : Boolean := False;
Keyword, Id : Message.Tiny_String;
use Scanner;
begin
Text_Io.Put_Line ("I am in List.Parse");
if Scanner.Get_Token = Scanner.T_Keyword then
Keyword := Scanner.Get_Value;
Keyword_List := Message.Put (Keyword_List, Keyword);
Scanner.Next;
Scanner.Get_Value (Current_Table => Symbol, S => Id);
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, Failed);
elsif Scanner.Get_Token = Scanner.T_Identifier then
Failed := True;
raise Mismatch_Argument;
end if;
else
Scanner.Get_Value (Symbol, Id);
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, Failed);
elsif Scanner.Get_Token = Scanner.T_Keyword then
Failed := True;
raise Mismatch_Argument;
end if;
end if;
Error := Failed;
end Parse;
function Is_First (T : Scanner.Token) return Boolean is
begin
case T is
when Scanner.T_Identifier | Scanner.T_Keyword =>
return (Standard.True);
when others =>
return (Standard.False);
end case;
end Is_First;
end List;