|
|
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: 3535 (0xdcf)
Types: TextFile
Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
separate (Parse)
procedure Parse_Stations (Ok : out Boolean) is
Success : Boolean;
The_Class : Element.Class;
begin
Ok := True;
Text_Io.Put_Line ("parse_stations");
while Lex.Get_Token /= L_Fin loop
if Lex.Get_Token = L_Id then
declare
Id : constant String := Lex.Get_Value;
begin
Symbol_Table.Insert (Id, Success);
if not (Success) then
Error.Found;
end if;
Lex.Next;
if Lex.Get_Token = L_2points then
Lex.Next;
if Lex.Get_Token = L_Station then
Symbol_Table.Set_Type (Id, Element.Station, Success);
Symbol_Table.Set_Num_Station
(Id, Num_Station.Get_New, Success);
Lex.Next;
if Lex.Get_Token = L_Ouvrante then
Lex.Next;
if Lex.Get_Token = L_Id then
declare
Id2 : constant String := Lex.Get_Value;
begin
if Symbol_Table.Is_Visible (Id2) then
The_Class :=
Element.Convert_To_Class (Id2);
Symbol_Table.Set_Class
(Id, The_Class, Success);
else
Error.Found;
end if;
Lex.Next;
if Lex.Get_Token = L_Virgule then
Lex.Next;
if Lex.Get_Token = L_Adresse then
Symbol_Table.Set_Adress
(Id, Element.Adress
(Lex.Get_Value),
Success);
Lex.Next;
if Lex.Get_Token = L_Fermante then
Lex.Next;
else
Ok := False;
exit;
end if;
else
Ok := False;
exit;
end if;
else
Ok := False;
exit;
end if;
end;
else
Ok := False;
exit;
end if;
else
Ok := False;
exit;
end if;
else
Ok := False;
exit;
end if;
else
Ok := False;
exit;
end if;
end;
else
Ok := False;
exit;
end if;
end loop;
end Parse_Stations;