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

⟦9ea1181d2⟧ TextFile

    Length: 3235 (0xca3)
    Types: TextFile
    Names: »V«

Derivation

└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2
    └─ ⟦77aa8350c⟧ »DATA« 
        └─⟦f794ecd1d⟧ 
            └─⟦4c85d69e2⟧ 
                └─⟦this⟧ 

TextFile

--    The use of this system is subject to the software license terms and
--    conditions agreed upon between Rational and the Customer.
--
--                Copyright 1988 by Rational.
--
--                          RESTRICTED RIGHTS LEGEND
--
--    Use, duplication, or disclosure by the Government is subject to
--    restrictions as set forth in subdivision (b)(3)(ii) of the Rights in
--    Technical Data and Computer Software clause at 52.227-7013.
--
--
--                Rational
--                3320 Scott Boulevard
--                Santa Clara, California 95054-3197
--
--   PROPRIETARY AND CONFIDENTIAL INFORMATION OF RATIONAL;
--   USE OR COPYING WITHOUT EXPRESS WRITTEN AUTHORIZATION
--   IS STRICTLY PROHIBITED.  THIS MATERIAL IS PROTECTED AS
--   AN UNPUBLISHED WORK UNDER THE U.S. COPYRIGHT ACT OF
--   1976.  CREATED 1988.  ALL RIGHTS RESERVED.
--
--

with System_Types;

package Numeric_Literals is

    -- This structure is used to record the semantic content (with
    -- the most precision that is practical) of a numeric literal.
    -- Mathematically, the value of the constant is:
    --
    --     sign * abs(Mantissa) * (Base ** Exponent)
    --
    -- The actual conversion to the appropriate type is in the domain of
    -- numerical analysis.  If Exact is True, all the significant digits of
    -- the lexical constant are represented; otherwise some were omitted to
    -- avoid overflowing the Mantissa.  The Mantissa is negative because
    -- there is one more negative Long_Integer than positive Long_Integer.


    -- These types should be the largest that exist on the target
    subtype Long_Integer is System_Types.Long_Integer;

    type    Sign_Type   is (Plus, Minus);
    subtype Field       is Integer range 0 .. Integer'Last;
    subtype Number_Base is Integer range 2 .. 16;

    -- The easiest thing to do would be to make a Numeric_Literal an
    -- access string, but then every time one was read a string would
    -- need to be allocated.  (Sharing the string is difficult because
    -- then Text_Io could die instead of merely giving bad results when
    -- used from multiple tasks.)  On the other hand, its not easy to set
    -- a maximum length because in the case of a floating point literal
    -- there may be a very large exponent range which would allow
    -- lots of significant zeros either before or after the decimal
    -- point.  The maximum length is actually more of a function of
    -- the maximum length of a Text_Io line, and even that isn't certain
    -- because of the forms where a string can be parsed.  And finally,
    -- it isn't easy to return an unconstrained string from a function
    -- because one important client, Literal_Parser.Parse_Numeric_Literal,
    -- wants to return several values.

    -- So we punt:  A Numeric_Literal is essentially a string and the
    -- client must take care of the case where the user provides a really
    -- really long numeric literal.

    type Numeric_Literal (Max_Length : Natural) is
        record
            V        : String (1 .. Max_Length);
            L        : Natural;
            Is_Based : Boolean;             -- has syntax of a based literal
        end record;

end Numeric_Literals;