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

⟦2b0a5e38a⟧ TextFile

    Length: 1829 (0x725)
    Types: TextFile
    Names: »B«

Derivation

└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
    └─ ⟦d65440be7⟧ »DATA« 
        └─⟦this⟧ 

TextFile

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;