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: ┃ T V

⟦5c194b81a⟧ TextFile

    Length: 4512 (0x11a0)
    Types: TextFile
    Names: »V«

Derivation

└─⟦85b835f43⟧ Bits:30000549 8mm tape, Rational 1000, Xlib rev 6.00
    └─ ⟦0c20f784e⟧ »DATA« 
        └─⟦1abbe589f⟧ 
            └─⟦591c5b094⟧ 
                └─⟦this⟧ 

TextFile

with Text_Io;

with Vstring_Type;
use Vstring_Type;

package Lexemes is
------------------------------------------------------------------------------
-- Recognition and separation of lexemes within the input stream.
------------------------------------------------------------------------------
-- Copyright 1989 - 1991 by Rational, Santa Clara, California.
--
--                  All Rights Reserved.
--
-- Permission to use, copy, modify, and distribute this software and its
-- documentation for any purpose and without fee is hereby granted,
-- provided that the above copyright notice(s) appear in all copies and that
-- both that copyright notice(s) and this permission notice appear in
-- supporting documentation, and that the name of Rational not be used in
-- advertising or publicity pertaining to distribution of the software
-- without specific, written prior permission.
--
-- Rational disclaims all warranties with regard to this software, including
-- all implied warranties of merchantability and fitness, in no event shall
-- Rational be liable for any special, indirect or consequential damages or
-- any damages whatsoever resulting from loss of use, data or profits, whether
-- in an action of contract, negligence or other tortious action, arising out
-- of or in connection with the use or performance of this software.
------------------------------------------------------------------------------

------------------------------------------------------------------------------
-- Lexeme_Kind - The lexemes that we recognize
------------------------------------------------------------------------------

    type Lexeme_Kind is (Lk_If,  
                         Lk_Then,  
                         Lk_Elsif,  
                         Lk_Else,  
                         Lk_End,

                         Lk_Identifier,    -- recognized parameter name
                         Lk_Unknown,       -- unknown/misspelled parameter name

                         Lk_Not,  
                         Lk_And,  
                         Lk_Or,  
                         Lk_Xor,

                         Lk_Eql,           -- =
                         Lk_Neq,           -- /=
                         -- lk_gtr,
                         -- lk_lss,
                         -- lk_geq,
                         -- lk_leq,

                         Lk_Vbar,          -- |
                         Lk_Arrow,         -- =>
                         Lk_Comma,         -- ,
                         Lk_Semicolon,     -- ;
                         Lk_Lparen,        -- (
                         Lk_Rparen,        -- )

                         Lk_Error,         -- bad character, bad token
                         Lk_Eol);          -- end of line

------------------------------------------------------------------------------
-- Symbol_Value - Each named keyword or parameter has a value of this type and
-- kind.
------------------------------------------------------------------------------

    type Symbol_Kind is (Sk_Keyword,     -- control keyword
                         Sk_Boolean);    -- boolean value

    type Symbol_Value (Kind : Symbol_Kind := Sk_Boolean) is
        record
            Permanent : Boolean;
            case Kind is
                when Sk_Keyword =>  
                    Kwd : Lexeme_Kind;
                when Sk_Boolean =>
                    Bool : Boolean;
            end case;
        end record;

--\f

    procedure Next_Lexeme (Line   :        Vstring;  
                           Lexeme : in out Lexeme_Kind;  
                           Text   : in out Vstring;
                           Value  : in out Symbol_Value);
------------------------------------------------------------------------------
--  Line    - Specifies the input line/fragment to scan
--  Lexeme  - Receives the Lexeme_Kind of the next lexeme
--  Text    - Receives the textual representation of the next lexeme; if any
--  Value   - Receives the value associated with the lexeme; if any
--
-- Called to scan the Line and to recognize and remove the next lexeme.
-- Lexeme is set to Lk_Error if we get confused.  Lk_Eol is returned if
-- the line is empty or ends with a comment.  The Text argument is only
-- set for Lk_Identifier values.  The Value argument is changed for any
-- lexeme value that is a name (keywords and parameter names); it's value
-- only has meaning for Lk_Identifiers.
------------------------------------------------------------------------------

--\f

end Lexemes;