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

⟦124aa0806⟧ TextFile

    Length: 1547 (0x60b)
    Types: TextFile
    Names: »B«

Derivation

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

TextFile

with Scanner;
with Object;
with Class_Block;  
with Statements;

package body List is
    type Node_Structure is
        record
            Kwd : Object.Unary;
            Ident : Object.Unary;
            Stat : Statements.Node := Statements.Empty_Node;
            Parent : Block.Node := Block.Empty_Node;
        end record;

    procedure Parse (N : in out Block.Node;
                     Ident : in out Object.Unary;
                     Kwd : in out Object.Unary;
                     Error : out Boolean) is
        Failed : Boolean := False;
        use Scanner;
    begin  
        case Scanner.Get_Token is
            when Scanner.Identifier =>
                Object.Put (This => Scanner.Get_Value, Into => Ident);
                Scanner.Next;  
                if Scanner.Get_Token = Scanner.Identifier then
                    Parse (N, Ident, Kwd, Error);
                end if;
            when Scanner.Keyword =>
                Object.Put (This => Scanner.Get_Value, Into => Kwd);
                Scanner.Next;
                Object.Put (This => Scanner.Get_Value, Into => Ident);
                Scanner.Next;
                if Scanner.Get_Token = Scanner.Keyword then
                    Parse (N, Ident, Kwd, Error);
                end if;  
            when others =>
                null;
        end case;
        Error := Failed;
    end Parse;

    function Is_First (T : Scanner.Token) return Boolean is
        use Scanner;
    begin
        return T = Identifier or else T = Keyword;
    end Is_First;

end List;