|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T V
Length: 3235 (0xca3)
Types: TextFile
Names: »V«
└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2
└─⟦77aa8350c⟧ »DATA«
└─⟦f794ecd1d⟧
└─⟦4c85d69e2⟧
└─⟦this⟧
-- 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;