DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦81cccb11a⟧ TextFile

    Length: 3535 (0xdcf)
    Types: TextFile
    Names: »B«

Derivation

└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
    └─ ⟦129cab021⟧ »DATA« 
        └─⟦this⟧ 

TextFile

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;