home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 3 / CDASC03.ISO / sorties / 118 / lrm_c < prev    next >
Encoding:
Text File  |  1993-04-01  |  13.0 KB  |  297 lines

  1.  
  2.  
  3. The Ada Joint Program Office does not guarantee the accuracy of this
  4. file, as compared with the contents of ANSI/MIL-STD-1815A-1983,
  5. the Reference Manual for the Ada Programming Language.  If errors or
  6. discrepancies are found in this machine-readable version, please 
  7. forward comments via the Defense Data Network (DDN) to:
  8.  
  9.                      ACTION@AJPO.SEI.CMU.EDU
  10.  
  11. or via conventional mail to
  12.  
  13.                   Ada Information Clearinghouse
  14.                    3D139 (1211 S. Fern, C-107)
  15.                          The Pentagon
  16.                    Washington, D.C.  20301-3081
  17.  
  18. -----------------------------------------------------------------------
  19.  
  20. Copyright 1980, 1982, 1983 owned by the United States Government as
  21. represented by the Under Secretary of Defense, Research and
  22. Engineering.  All rights reserved.  Provided that notice of copyright
  23. is included on the first page, this document may be copied in its
  24. entirety without alteration or as altered by (1) adding text that is
  25. clearly marked as an insertion; (2) shading or highlighting existing
  26. text; (3) deleting examples.  Permission to publish other excerpts
  27. should be obtained from the Ada Joint Program Office, OUSDRE (R&AT),
  28. The Pentagon, Washington, DC 20301-2081, U.S.A.
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.                     C. Predefined Language Environment    
  36.  
  37. This  annex  outlines  the specification of the package STANDARD containing
  38. all predefined identifiers in the language.  The corresponding package body
  39. is implementation-defined and is not shown. 
  40.  
  41. The operators that are predefined for the types  declared  in  the  package
  42. STANDARD are given in comments since they are implicitly declared.  Italics
  43. are  used for  pseudo-names of anonymous types (such as universal_real) and
  44. for   undefined   information   (such   as    implementation_defined    and
  45. any_fixed_point_type). 
  46.  
  47. package STANDARD is 
  48.  
  49.    type BOOLEAN is (FALSE, TRUE); 
  50.  
  51.    -- The predefined relational operators for this type are as follows: 
  52.  
  53.    -- function "="   (LEFT, RIGHT : BOOLEAN) return BOOLEAN;
  54.    -- function "/="  (LEFT, RIGHT : BOOLEAN) return BOOLEAN;
  55.    -- function "<"   (LEFT, RIGHT : BOOLEAN) return BOOLEAN;
  56.    -- function "<="  (LEFT, RIGHT : BOOLEAN) return BOOLEAN;
  57.    -- function ">"   (LEFT, RIGHT : BOOLEAN) return BOOLEAN;
  58.    -- function ">="  (LEFT, RIGHT : BOOLEAN) return BOOLEAN;
  59.  
  60.    -- The predefined logical operators and the predefined logical  negation
  61.       operator are as follows:
  62.  
  63.    -- function "and" (LEFT, RIGHT : BOOLEAN) return BOOLEAN;
  64.    -- function "or"  (LEFT, RIGHT : BOOLEAN) return BOOLEAN;
  65.    -- function "xor" (LEFT, RIGHT : BOOLEAN) return BOOLEAN; 
  66.  
  67.    -- function "not" (RIGHT : BOOLEAN) return BOOLEAN;   
  68.  
  69.    -- The universal type universal_integer is predefined.  
  70.  
  71.    type INTEGER is implementation_defined; 
  72.  
  73.    -- The predefined operators for this type are as follows: 
  74.  
  75.    -- function "="  (LEFT, RIGHT : INTEGER) return BOOLEAN;
  76.    -- function "/=" (LEFT, RIGHT : INTEGER) return BOOLEAN;
  77.    -- function "<"  (LEFT, RIGHT : INTEGER) return BOOLEAN;
  78.    -- function "<=" (LEFT, RIGHT : INTEGER) return BOOLEAN;
  79.    -- function ">"  (LEFT, RIGHT : INTEGER) return BOOLEAN;  
  80.    -- function ">=" (LEFT, RIGHT : INTEGER) return BOOLEAN;                                                        
  81.  
  82.    -- function "+"   (RIGHT : INTEGER) return INTEGER;
  83.    -- function "-"   (RIGHT : INTEGER) return INTEGER;
  84.    -- function "abs" (RIGHT : INTEGER) return INTEGER; 
  85.  
  86.    -- function "+"   (LEFT, RIGHT : INTEGER) return INTEGER;
  87.    -- function "-"   (LEFT, RIGHT : INTEGER) return INTEGER;
  88.    -- function "*"   (LEFT, RIGHT : INTEGER) return INTEGER;
  89.    -- function "/"   (LEFT, RIGHT : INTEGER) return INTEGER;
  90.    -- function "rem" (LEFT, RIGHT : INTEGER) return INTEGER;
  91.    -- function "mod" (LEFT, RIGHT : INTEGER) return INTEGER; 
  92.  
  93.    -- function "**"  (LEFT : INTEGER; RIGHT : INTEGER) return INTEGER; 
  94.  
  95.    -- An  implementation  may  provide additional predefined integer types.
  96.    -- It is recommended that  the  names  of such additional types end with
  97.    -- INTEGER as in SHORT_INTEGER  or  LONG_INTEGER.  The  specification of
  98.    -- each operator for the type universal_integer, or for  any  additional
  99.    -- predefined  integer   type,  is  obtained  by  replacing  INTEGER  by
  100.    -- the   name  of the type  in  the specification  of  the corresponding
  101.    -- operator  of the type INTEGER, except  for the  right  operand of the
  102.    -- exponentiating operator.
  103.  
  104.    -- The universal type universal_real is predefined.
  105.  
  106.    type FLOAT is implementation_defined; 
  107.  
  108.    -- The predefined operators for this type are as follows: 
  109.  
  110.    -- function "="   (LEFT, RIGHT : FLOAT) return BOOLEAN; 
  111.    -- function "/="  (LEFT, RIGHT : FLOAT) return BOOLEAN;
  112.    -- function "<"   (LEFT, RIGHT : FLOAT) return BOOLEAN;
  113.    -- function "<="  (LEFT, RIGHT : FLOAT) return BOOLEAN;
  114.    -- function ">"   (LEFT, RIGHT : FLOAT) return BOOLEAN;
  115.    -- function ">="  (LEFT, RIGHT : FLOAT) return BOOLEAN;                           
  116.  
  117.    -- function "+"   (RIGHT : FLOAT) return FLOAT;
  118.    -- function "-"   (RIGHT : FLOAT) return FLOAT;
  119.    -- function "abs" (RIGHT : FLOAT) return FLOAT; 
  120.  
  121.    -- function "+"   (LEFT, RIGHT : FLOAT) return FLOAT;
  122.    -- function "-"   (LEFT, RIGHT : FLOAT) return FLOAT;
  123.    -- function "*"   (LEFT, RIGHT : FLOAT) return FLOAT;
  124.    -- function "/"   (LEFT, RIGHT : FLOAT) return FLOAT; 
  125.  
  126.    -- function "**"  (LEFT : FLOAT; RIGHT : INTEGER) return FLOAT; 
  127.  
  128.    -- An implementation may provide  additional  predefined  floating point
  129.    -- point  types.   It is recommended that the names of  such  additional
  130.    -- types   end   with   FLOAT  as  in  SHORT_FLOAT  or  LONG_FLOAT.  The
  131.    -- specification of each operator for the type  universal_real,  or  for
  132.    -- any  additional  predefined  floating  point  type,  is  obtained  by
  133.    -- replacing  FLOAT by the name of  the type in the specification of the
  134.    -- corresponding  operator  of  the  type  FLOAT.                                
  135.  
  136.    -- In  addition,  the  following operators are predefined for  universal
  137.       types: 
  138.  
  139.    -- function "*" (LEFT : universal_integer; RIGHT : universal_real)
  140.       return universal_real;
  141.  
  142.    -- function "*" (LEFT : universal_real;    RIGHT : universal_integer)
  143.       return universal_real;
  144.  
  145.    -- function "/" (LEFT : universal_real;    RIGHT : universal_integer)
  146.       return universal_real;
  147.  
  148.    -- The  type universal_fixed is predefined.  The only operators declared
  149.       for this type are
  150.  
  151.    -- function "*" (LEFT : any_fixed_point_type; RIGHT : any_fixed_point_type)
  152.       return universal_fixed;
  153.  
  154.    -- function "/" (LEFT : any_fixed_point_type; RIGHT : any_fixed_point_type)
  155.       return universal_fixed;
  156.  
  157.   --  The  following  characters  form  the  standard  ASCII character set.
  158.       set.   Character  literals -- corresponding to control characters are
  159.       not  identifiers;   they  are  indicated  in  italics  in this 
  160.       definition.
  161.        
  162.  
  163.    type CHARACTER is 
  164.  
  165.           (nul,  soh,  stx,  etx,     eot,  enq,  ack,  bel,
  166.            bs,   ht,   lf,   vt,      ff,   cr,   so,   si,
  167.            dle,  dc1,  dc2,  dc3,     dc4,  nak,  syn,  etb,
  168.            can,  em,   sub,  esc,     fs,   gs,   rs,   us, 
  169.  
  170.            ' ',  '!',  '"',  '#',     '$',  '%',  '&',  ''',
  171.            '(',  ')',  '*',  '+',     ',',  '-',  '.',  '/',
  172.            '0',  '1',  '2',  '3',     '4',  '5',  '6',  '7',
  173.            '8',  '9',  ':',  ';',     '<',  '=',  '>',  '?', 
  174.  
  175.            '@',  'A',  'B',  'C',     'D',  'E',  'F',  'G',
  176.            'H',  'I',  'J',  'K',     'L',  'M',  'N',  'O',
  177.            'P',  'Q',  'R',  'S',     'T',  'U',  'V',  'W',
  178.            'X',  'Y',  'Z',  '[',     '\',  ']',  '~',  '_',
  179.  
  180.            '`',  'a',  'b',  'c',     'd',  'e',  'f',  'g',
  181.            'h',  'i',  'j',  'k',     'l',  'm',  'n',  'o',
  182.            'p',  'q',  'r',  's',     't',  'u',  'v',  'w',
  183.            'x',  'y',  'z',  '{',     '|',  '}',  '~',  del);  
  184.  
  185.   for CHARACTER use  --  128 ASCII character set without holes
  186.        (0, 1, 2, 3, 4, 5, ..., 125, 126, 127); 
  187.  
  188.   -- The predefined operators for the type CHARACTER are the  same  as  for
  189.      any enumeration type.                                                       
  190.  
  191.   package ASCII is
  192.  
  193.       --  Control characters: 
  194.  
  195.   NUL   : constant CHARACTER := nul;     SOH   : constant CHARACTER := soh:
  196.   STX   : constant CHARACTER := stx;     ETX   : constant CHARACTER := etx;
  197.   EOT   : constant CHARACTER := eot;     ENQ   : constant CHARACTER := enq:
  198.   ACK   : constant CHARACTER := ack;     BEL   : constant CHARACTER := bel;
  199.   BS    : constant CHARACTER := bs;      HT    : constant CHARACTER := ht;
  200.   LF    : constant CHARACTER := lf;      VT    : constant CHARACTER := vt;
  201.   FF    : constant CHARACTER := ff;      CR    : constant CHARACTER := cr;
  202.   SO    : constant CHARACTER := so;      SI    : constant CHARACTER := si;
  203.   DLE   : constant CHARACTER := dle;     DC1   : constant CHARACTER := dc1;
  204.   DC2   : constant CHARACTER := dc2;     DC3   : constant CHARACTER := dc3;
  205.   DC4   : constant CHARACTER := dc4;     NAK   : constant CHARACTER := nak;
  206.   SYN   : constant CHARACTER := syn;     ETB   : constant CHARACTER := etb;
  207.   CAN   : constant CHARACTER := can;     EM    : constant CHARACTER := em:
  208.   SUB   : constant CHARACTER := sub;     ESC   : constant CHARACTER := esc;
  209.   FS    : constant CHARACTER := fs;      GS    : constant CHARACTER := gs;
  210.   RS    : constant CHARACTER := rs;      US    : constant CHARACTER := us;
  211.   DEL   : constant CHARACTER := del;
  212.  
  213.       -- Other characters: 
  214.  
  215. EXCLAM   : constant CHARACTER := '!';  QUOTATION : constant CHARACTER := '"';
  216. SHARP    : constant CHARACTER := '#';  DOLLAR    : constant CHARACTER := '$';
  217. PERCENT  : constant CHARACTER := '%';  AMPERSAND : constant CHARACTER := '&';
  218. COLON    : constant CHARACTER := ':';  SEMICOLON : constant CHARACTER := ';';
  219. QUERY    : constant CHARACTER := '?';  AT_SIGN   : constant CHARACTER := '@';
  220. L_BRACKET: constant CHARACTER := '[';  BACK_SLASH: constant CHARACTER := '\';
  221. R_BRACKET: constant CHARACTER := ']';  CIRCUMFLEX: constant CHARACTER := '~';
  222. UNDERLINE: constant CHARACTER := '_';  GRAVE     : constant CHARACTER := '`';
  223. L_BRACE  : constant CHARACTER := '{';  BAR       : constant CHARACTER := '|';
  224. R_BRACE  : constant CHARACTER := '}';  TILDE     : constant CHARACTER := '~';
  225.  
  226.       -- Lower case letters: 
  227.  
  228.       LC_A : constant CHARACTER := 'a';
  229.       ...
  230.       LC_Z : constant CHARACTER := 'z'; 
  231.  
  232.    end ASCII;  
  233.  
  234.        -- Predefined subtypes: 
  235.  
  236.        subtype NATURAL  is INTEGER range 0 .. INTEGER'LAST;
  237.        subtype POSITIVE is INTEGER range 1 .. INTEGER'LAST;                           
  238.  
  239.        -- Predefined string type: 
  240.  
  241.        type STRING is array(POSITIVE range <>) of CHARACTER; 
  242.  
  243.        pragma PACK(STRING);  
  244.  
  245.        -- The predefined operators for this type are as follows: 
  246.  
  247.        -- function "="  (LEFT, RIGHT : STRING) return BOOLEAN;
  248.        -- function "/=" (LEFT, RIGHT : STRING) return BOOLEAN;
  249.        -- function "<"  (LEFT, RIGHT : STRING) return BOOLEAN;
  250.        -- function "<=" (LEFT, RIGHT : STRING) return BOOLEAN;
  251.        -- function ">"  (LEFT, RIGHT : STRING) return BOOLEAN;
  252.        -- function ">=" (LEFT, RIGHT : STRING) return BOOLEAN; 
  253.  
  254.        -- function "&" (LEFT : STRING;    RIGHT : STRING)    return STRING;
  255.        -- function "&" (LEFT : CHARACTER; RIGHT : STRING)    return STRING;
  256.        -- function "&" (LEFT : STRING;    RIGHT : CHARACTER) return STRING;
  257.        -- function "&" (LEFT : CHARACTER; RIGHT : CHARACTER) return STRING; 
  258.  
  259.   type DURATION is delta implementation_defined range implementation_defined;
  260.  
  261.     -- The  predefined  operators for the type DURATION are the same as for
  262.        any fixed point type.
  263.  
  264.     -- The predefined exceptions: 
  265.  
  266.    CONSTRAINT_ERROR : exception;
  267.    NUMERIC_ERROR    : exception;
  268.    PROGRAM_ERROR    : exception;
  269.    STORAGE_ERROR    : exception;
  270.    TASKING_ERROR    : exception; 
  271.  
  272. end STANDARD; 
  273.  
  274. Certain  aspects  of the predefined entities cannot be completely described
  275. in the language itself.  For example, although the enumeration type BOOLEAN
  276. can be written showing the two enumeration literals  FALSE  and  TRUE,  the
  277. short-circuit control forms cannot be expressed in the language.
  278.  
  279. Note: 
  280.  
  281. The language definition predefines the following library units: 
  282.  
  283.     -  The package CALENDAR                         (see 9.6) 
  284.  
  285.     -  The package SYSTEM                           (see 13.7)
  286.     -  The package MACHINE_CODE (if provided)       (see 13.8)
  287.     -  The generic procedure UNCHECKED_DEALLOCATION (see 13.10.1)
  288.     -  The generic function UNCHECKED_CONVERSION    (see 13.10.2) 
  289.  
  290.     -  The generic package SEQUENTIAL_IO            (see 14.2.3)
  291.     -  The generic package DIRECT_IO                (see 14.2.5)
  292.     -  The package TEXT_IO                          (see 14.3.10)  
  293.     -  The package IO_EXCEPTIONS                    (see 14.5)
  294.     -  The package LOW_LEVEL_IO                     (see 14.6)                                                               
  295.  
  296.  
  297.