home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gnat-2.06-src.tgz / tar.out / fsf / gnat / ada / csets.ads < prev    next >
Text File  |  1996-09-28  |  5KB  |  88 lines

  1. ------------------------------------------------------------------------------
  2. --                                                                          --
  3. --                         GNAT COMPILER COMPONENTS                         --
  4. --                                                                          --
  5. --                                C S E T S                                 --
  6. --                                                                          --
  7. --                                 S p e c                                  --
  8. --                                                                          --
  9. --                            $Revision: 1.13 $                             --
  10. --                                                                          --
  11. --        Copyright (c) 1992,1993,1994,1995 NYU, All Rights Reserved        --
  12. --                                                                          --
  13. -- The GNAT library is free software; you can redistribute it and/or modify --
  14. -- it under terms of the GNU Library General Public License as published by --
  15. -- the Free Software  Foundation; either version 2, or (at your option) any --
  16. -- later version.  The GNAT library is distributed in the hope that it will --
  17. -- be useful, but WITHOUT ANY WARRANTY;  without even  the implied warranty --
  18. -- of MERCHANTABILITY  or  FITNESS FOR  A PARTICULAR PURPOSE.  See the  GNU --
  19. -- Library  General  Public  License for  more  details.  You  should  have --
  20. -- received  a copy of the GNU  Library  General Public License  along with --
  21. -- the GNAT library;  see the file  COPYING.LIB.  If not, write to the Free --
  22. -- Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.        --
  23. --                                                                          --
  24. ------------------------------------------------------------------------------
  25.  
  26. package Csets is
  27.  
  28.    --  This package contains character tables for the various character
  29.    --  sets that are supported for source representation. Character and
  30.    --  string literals are not affected, only identifiers. For each set,
  31.    --  the table in this package gives the mapping of letters to their
  32.    --  upper case equivalent. Each table thus provides the information
  33.    --  for building the table used to fold lower case to upper case, and
  34.    --  also the table of flags showing which characters are allowed in
  35.    --  identifiers.
  36.  
  37.    type Translate_Table is array (Character) of Character;
  38.    --  Type used to describe translate tables
  39.  
  40.    type Char_Array_Flags is array (Character) of Boolean;
  41.    --  Type used for character attribute arrays. Note that we deliberately
  42.    --  do NOT pack this table, since we don't want the extra overhead of
  43.    --  accessing a packed bit string.
  44.  
  45.    -----------------------------------------------
  46.    --  Character Tables For Current Compilation --
  47.    -----------------------------------------------
  48.  
  49.    procedure Initialize;
  50.    --  Routine to initialize following character tables, whose content depends
  51.    --  on the character code being used to represent the source program. In
  52.    --  particular, the use of the upper half of the 8-bit code set varies.
  53.    --  The character set in use is specified by the value stored in
  54.    --  Opt.Identifier_Character_Set, which has the following settings:
  55.  
  56.    --    '1'  Latin-1
  57.    --    '2'  Latin-2
  58.    --    '3'  Latin-3
  59.    --    '4'  Latin-4
  60.    --    'p'  IBM PC (code page 437)
  61.    --    '8'  IBM PC (code page 850)
  62.    --    'f'  Full upper set (all distinct)
  63.    --    'n'  No upper characters (Ada/83 rules)
  64.    --    'w'  Latin-1 plus wide characters also allowed
  65.  
  66.    function Is_Upper_Case_Letter (C : Character) return Boolean;
  67.    pragma Inline (Is_Upper_Case_Letter);
  68.    --  Determine if character is upper case letter
  69.  
  70.    function Is_Lower_Case_Letter (C : Character) return Boolean;
  71.    pragma Inline (Is_Lower_Case_Letter);
  72.    --  Determine if character is lower case letter
  73.  
  74.    Fold_Upper : Translate_Table;
  75.    --  Table to fold lower case identifier letters to upper case
  76.  
  77.    Fold_Lower : Translate_Table;
  78.    --  Table to fold upper case identifier letters to lower case
  79.  
  80.    Identifier_Char : Char_Array_Flags;
  81.    --  This table has True entries for all characters that can legally appear
  82.    --  in identifiers, including digits, the underline character, all letters
  83.    --  including upper and lower case and extended letters (as controlled by
  84.    --  the setting of Opt.Identifier_Character_Set, and also ESC if wide
  85.    --  characters are permitted in identifiers.
  86.  
  87. end Csets;
  88.