[project @ 2000-05-08 15:19:48 by panne]
authorpanne <unknown>
Mon, 8 May 2000 15:19:48 +0000 (15:19 +0000)
committerpanne <unknown>
Mon, 8 May 2000 15:19:48 +0000 (15:19 +0000)
Replaced last remnants of C in the scanner/parser with carefully tuned
Haskell. TODO: Test with GHC < 3.03

ghc/compiler/parser/Ctypes.lhs [new file with mode: 0644]
ghc/compiler/parser/Lex.lhs
ghc/compiler/parser/ctypes.c [deleted file]
ghc/compiler/parser/ctypes.h [deleted file]

diff --git a/ghc/compiler/parser/Ctypes.lhs b/ghc/compiler/parser/Ctypes.lhs
new file mode 100644 (file)
index 0000000..9f72c1e
--- /dev/null
@@ -0,0 +1,313 @@
+Character classification
+
+\begin{code}
+module Ctypes
+       ( is_ident      -- Char# -> Bool
+       , is_symbol     -- Char# -> Bool
+       , is_any        -- Char# -> Bool
+       , is_space      -- Char# -> Bool
+       , is_lower      -- Char# -> Bool
+       , is_upper      -- Char# -> Bool
+       , is_digit      -- Char# -> Bool
+       ) where
+\end{code}
+
+\begin{code}
+import Bits    ( Bits((.&.)) )
+import Int     ( Int32 )
+import PrelBase ( Char#, Char(..) )
+\end{code}
+
+Bit masks
+
+\begin{code}
+cIdent, cSymbol, cAny, cSpace, cLower, cUpper, cDigit :: Int
+cIdent  =  1
+cSymbol =  2
+cAny    =  4
+cSpace  =  8
+cLower  = 16
+cUpper  = 32
+cDigit  = 64
+\end{code}
+
+The predicates below look costly, but aren't, GHC+GCC do a great job
+at the big case below.
+
+\begin{code}
+is_ctype :: Int -> Char# -> Bool
+is_ctype mask c = (fromIntegral (charType (C# c)) .&. fromIntegral mask) /= (0::Int32)
+
+is_ident, is_symbol, is_any, is_space, is_lower, is_upper, is_digit :: Char# -> Bool
+is_ident  = is_ctype cIdent
+is_symbol = is_ctype cSymbol
+is_any    = is_ctype cAny
+is_space  = is_ctype cSpace
+is_lower  = is_ctype cLower
+is_upper  = is_ctype cUpper
+is_digit  = is_ctype cDigit
+\end{code}
+
+We really mean .|. instead of + below, but GHC currently doesn't do
+any constant folding with bitops. *sigh*
+
+\begin{code}
+charType :: Char -> Int
+charType c = case c of
+   '\0'   -> 0                         -- \000
+   '\1'   -> 0                         -- \001
+   '\2'   -> 0                         -- \002
+   '\3'   -> 0                         -- \003
+   '\4'   -> 0                         -- \004
+   '\5'   -> 0                         -- \005
+   '\6'   -> 0                         -- \006
+   '\7'   -> 0                         -- \007
+   '\8'   -> 0                         -- \010
+   '\9'   -> cAny + cSpace             -- \t
+   '\10'  -> cAny + cSpace             -- \n
+   '\11'  -> cAny + cSpace             -- \v
+   '\12'  -> cAny + cSpace             -- \f
+   '\13'  -> cAny + cSpace             -- ^M
+   '\14'  -> 0                         -- \016
+   '\15'  -> 0                         -- \017
+   '\16'  -> 0                         -- \020
+   '\17'  -> 0                         -- \021
+   '\18'  -> 0                         -- \022
+   '\19'  -> 0                         -- \023
+   '\20'  -> 0                         -- \024
+   '\21'  -> 0                         -- \025
+   '\22'  -> 0                         -- \026
+   '\23'  -> 0                         -- \027
+   '\24'  -> 0                         -- \030
+   '\25'  -> 0                         -- \031
+   '\26'  -> 0                         -- \032
+   '\27'  -> 0                         -- \033
+   '\28'  -> 0                         -- \034
+   '\29'  -> 0                         -- \035
+   '\30'  -> 0                         -- \036
+   '\31'  -> 0                         -- \037
+   '\32'  -> cAny + cSpace             --
+   '\33'  -> cAny + cSymbol            -- !
+   '\34'  -> cAny                      -- "
+   '\35'  -> cAny + cSymbol            -- #
+   '\36'  -> cAny + cSymbol            -- $
+   '\37'  -> cAny + cSymbol            -- %
+   '\38'  -> cAny + cSymbol            -- &
+   '\39'  -> cAny + cIdent             -- '
+   '\40'  -> cAny                      -- (
+   '\41'  -> cAny                      -- )
+   '\42'  -> cAny + cSymbol            -- *
+   '\43'  -> cAny + cSymbol            -- +
+   '\44'  -> cAny                      -- ,
+   '\45'  -> cAny + cSymbol            -- -
+   '\46'  -> cAny + cSymbol            -- .
+   '\47'  -> cAny + cSymbol            -- /
+   '\48'  -> cAny + cIdent  + cDigit   -- 0
+   '\49'  -> cAny + cIdent  + cDigit   -- 1
+   '\50'  -> cAny + cIdent  + cDigit   -- 2
+   '\51'  -> cAny + cIdent  + cDigit   -- 3
+   '\52'  -> cAny + cIdent  + cDigit   -- 4
+   '\53'  -> cAny + cIdent  + cDigit   -- 5
+   '\54'  -> cAny + cIdent  + cDigit   -- 6
+   '\55'  -> cAny + cIdent  + cDigit   -- 7
+   '\56'  -> cAny + cIdent  + cDigit   -- 8
+   '\57'  -> cAny + cIdent  + cDigit   -- 9
+   '\58'  -> cAny + cSymbol            -- :
+   '\59'  -> cAny                      -- ;
+   '\60'  -> cAny + cSymbol            -- <
+   '\61'  -> cAny + cSymbol            -- =
+   '\62'  -> cAny + cSymbol            -- >
+   '\63'  -> cAny + cSymbol            -- ?
+   '\64'  -> cAny + cSymbol            -- @
+   '\65'  -> cAny + cIdent  + cUpper   -- A
+   '\66'  -> cAny + cIdent  + cUpper   -- B
+   '\67'  -> cAny + cIdent  + cUpper   -- C
+   '\68'  -> cAny + cIdent  + cUpper   -- D
+   '\69'  -> cAny + cIdent  + cUpper   -- E
+   '\70'  -> cAny + cIdent  + cUpper   -- F
+   '\71'  -> cAny + cIdent  + cUpper   -- G
+   '\72'  -> cAny + cIdent  + cUpper   -- H
+   '\73'  -> cAny + cIdent  + cUpper   -- I
+   '\74'  -> cAny + cIdent  + cUpper   -- J
+   '\75'  -> cAny + cIdent  + cUpper   -- K
+   '\76'  -> cAny + cIdent  + cUpper   -- L
+   '\77'  -> cAny + cIdent  + cUpper   -- M
+   '\78'  -> cAny + cIdent  + cUpper   -- N
+   '\79'  -> cAny + cIdent  + cUpper   -- O
+   '\80'  -> cAny + cIdent  + cUpper   -- P
+   '\81'  -> cAny + cIdent  + cUpper   -- Q
+   '\82'  -> cAny + cIdent  + cUpper   -- R
+   '\83'  -> cAny + cIdent  + cUpper   -- S
+   '\84'  -> cAny + cIdent  + cUpper   -- T
+   '\85'  -> cAny + cIdent  + cUpper   -- U
+   '\86'  -> cAny + cIdent  + cUpper   -- V
+   '\87'  -> cAny + cIdent  + cUpper   -- W
+   '\88'  -> cAny + cIdent  + cUpper   -- X
+   '\89'  -> cAny + cIdent  + cUpper   -- Y
+   '\90'  -> cAny + cIdent  + cUpper   -- Z
+   '\91'  -> cAny                      -- [
+   '\92'  -> cAny + cSymbol            -- \
+   '\93'  -> cAny                      -- ]
+   '\94'  -> cAny + cSymbol            -- ^
+   '\95'  -> cAny + cIdent  + cLower   -- _
+   '\96'  -> cAny                      -- `
+   '\97'  -> cAny + cIdent  + cLower   -- a
+   '\98'  -> cAny + cIdent  + cLower   -- b
+   '\99'  -> cAny + cIdent  + cLower   -- c
+   '\100' -> cAny + cIdent  + cLower   -- d
+   '\101' -> cAny + cIdent  + cLower   -- e
+   '\102' -> cAny + cIdent  + cLower   -- f
+   '\103' -> cAny + cIdent  + cLower   -- g
+   '\104' -> cAny + cIdent  + cLower   -- h
+   '\105' -> cAny + cIdent  + cLower   -- i
+   '\106' -> cAny + cIdent  + cLower   -- j
+   '\107' -> cAny + cIdent  + cLower   -- k
+   '\108' -> cAny + cIdent  + cLower   -- l
+   '\109' -> cAny + cIdent  + cLower   -- m
+   '\110' -> cAny + cIdent  + cLower   -- n
+   '\111' -> cAny + cIdent  + cLower   -- o
+   '\112' -> cAny + cIdent  + cLower   -- p
+   '\113' -> cAny + cIdent  + cLower   -- q
+   '\114' -> cAny + cIdent  + cLower   -- r
+   '\115' -> cAny + cIdent  + cLower   -- s
+   '\116' -> cAny + cIdent  + cLower   -- t
+   '\117' -> cAny + cIdent  + cLower   -- u
+   '\118' -> cAny + cIdent  + cLower   -- v
+   '\119' -> cAny + cIdent  + cLower   -- w
+   '\120' -> cAny + cIdent  + cLower   -- x
+   '\121' -> cAny + cIdent  + cLower   -- y
+   '\122' -> cAny + cIdent  + cLower   -- z
+   '\123' -> cAny                      -- {
+   '\124' -> cAny + cSymbol            -- |
+   '\125' -> cAny                      -- }
+   '\126' -> cAny + cSymbol            -- ~
+   '\127' -> 0                         -- \177
+   '\128' -> 0                         -- \200
+   '\129' -> 0                         -- \201
+   '\130' -> 0                         -- \202
+   '\131' -> 0                         -- \203
+   '\132' -> 0                         -- \204
+   '\133' -> 0                         -- \205
+   '\134' -> 0                         -- \206
+   '\135' -> 0                         -- \207
+   '\136' -> 0                         -- \210
+   '\137' -> 0                         -- \211
+   '\138' -> 0                         -- \212
+   '\139' -> 0                         -- \213
+   '\140' -> 0                         -- \214
+   '\141' -> 0                         -- \215
+   '\142' -> 0                         -- \216
+   '\143' -> 0                         -- \217
+   '\144' -> 0                         -- \220
+   '\145' -> 0                         -- \221
+   '\146' -> 0                         -- \222
+   '\147' -> 0                         -- \223
+   '\148' -> 0                         -- \224
+   '\149' -> 0                         -- \225
+   '\150' -> 0                         -- \226
+   '\151' -> 0                         -- \227
+   '\152' -> 0                         -- \230
+   '\153' -> 0                         -- \231
+   '\154' -> 0                         -- \232
+   '\155' -> 0                         -- \233
+   '\156' -> 0                         -- \234
+   '\157' -> 0                         -- \235
+   '\158' -> 0                         -- \236
+   '\159' -> 0                         -- \237
+   '\160' -> cSpace                    --
+   '\161' -> cAny + cSymbol            -- ¡
+   '\162' -> cAny + cSymbol            -- ¢
+   '\163' -> cAny + cSymbol            -- £
+   '\164' -> cAny + cSymbol            -- ¤
+   '\165' -> cAny + cSymbol            -- ¥
+   '\166' -> cAny + cSymbol            -- ¦
+   '\167' -> cAny + cSymbol            -- §
+   '\168' -> cAny + cSymbol            -- ¨
+   '\169' -> cAny + cSymbol            -- ©
+   '\170' -> cAny + cSymbol            -- ª
+   '\171' -> cAny + cSymbol            -- «
+   '\172' -> cAny + cSymbol            -- ¬
+   '\173' -> cAny + cSymbol            -- ­
+   '\174' -> cAny + cSymbol            -- ®
+   '\175' -> cAny + cSymbol            -- ¯
+   '\176' -> cAny + cSymbol            -- °
+   '\177' -> cAny + cSymbol            -- ±
+   '\178' -> cAny + cSymbol            -- ²
+   '\179' -> cAny + cSymbol            -- ³
+   '\180' -> cAny + cSymbol            -- ´
+   '\181' -> cAny + cSymbol            -- µ
+   '\182' -> cAny + cSymbol            -- ¶
+   '\183' -> cAny + cSymbol            -- ·
+   '\184' -> cAny + cSymbol            -- ¸
+   '\185' -> cAny + cSymbol            -- ¹
+   '\186' -> cAny + cSymbol            -- º
+   '\187' -> cAny + cSymbol            -- »
+   '\188' -> cAny + cSymbol            -- ¼
+   '\189' -> cAny + cSymbol            -- ½
+   '\190' -> cAny + cSymbol            -- ¾
+   '\191' -> cAny + cSymbol            -- ¿
+   '\192' -> cAny + cIdent  + cUpper   -- À
+   '\193' -> cAny + cIdent  + cUpper   -- Á
+   '\194' -> cAny + cIdent  + cUpper   -- Â
+   '\195' -> cAny + cIdent  + cUpper   -- Ã
+   '\196' -> cAny + cIdent  + cUpper   -- Ä
+   '\197' -> cAny + cIdent  + cUpper   -- Å
+   '\198' -> cAny + cIdent  + cUpper   -- Æ
+   '\199' -> cAny + cIdent  + cUpper   -- Ç
+   '\200' -> cAny + cIdent  + cUpper   -- È
+   '\201' -> cAny + cIdent  + cUpper   -- É
+   '\202' -> cAny + cIdent  + cUpper   -- Ê
+   '\203' -> cAny + cIdent  + cUpper   -- Ë
+   '\204' -> cAny + cIdent  + cUpper   -- Ì
+   '\205' -> cAny + cIdent  + cUpper   -- Í
+   '\206' -> cAny + cIdent  + cUpper   -- Î
+   '\207' -> cAny + cIdent  + cUpper   -- Ï
+   '\208' -> cAny + cIdent  + cUpper   -- Ð
+   '\209' -> cAny + cIdent  + cUpper   -- Ñ
+   '\210' -> cAny + cIdent  + cUpper   -- Ò
+   '\211' -> cAny + cIdent  + cUpper   -- Ó
+   '\212' -> cAny + cIdent  + cUpper   -- Ô
+   '\213' -> cAny + cIdent  + cUpper   -- Õ
+   '\214' -> cAny + cIdent  + cUpper   -- Ö
+   '\215' -> cAny + cSymbol + cLower   -- ×
+   '\216' -> cAny + cIdent  + cUpper   -- Ø
+   '\217' -> cAny + cIdent  + cUpper   -- Ù
+   '\218' -> cAny + cIdent  + cUpper   -- Ú
+   '\219' -> cAny + cIdent  + cUpper   -- Û
+   '\220' -> cAny + cIdent  + cUpper   -- Ü
+   '\221' -> cAny + cIdent  + cUpper   -- Ý
+   '\222' -> cAny + cIdent  + cUpper   -- Þ
+   '\223' -> cAny + cIdent             -- ß
+   '\224' -> cAny + cIdent  + cLower   -- à
+   '\225' -> cAny + cIdent  + cLower   -- á
+   '\226' -> cAny + cIdent  + cLower   -- â
+   '\227' -> cAny + cIdent  + cLower   -- ã
+   '\228' -> cAny + cIdent  + cLower   -- ä
+   '\229' -> cAny + cIdent  + cLower   -- å
+   '\230' -> cAny + cIdent  + cLower   -- æ
+   '\231' -> cAny + cIdent  + cLower   -- ç
+   '\232' -> cAny + cIdent  + cLower   -- è
+   '\233' -> cAny + cIdent  + cLower   -- é
+   '\234' -> cAny + cIdent  + cLower   -- ê
+   '\235' -> cAny + cIdent  + cLower   -- ë
+   '\236' -> cAny + cIdent  + cLower   -- ì
+   '\237' -> cAny + cIdent  + cLower   -- í
+   '\238' -> cAny + cIdent  + cLower   -- î
+   '\239' -> cAny + cIdent  + cLower   -- ï
+   '\240' -> cAny + cIdent  + cLower   -- ð
+   '\241' -> cAny + cIdent  + cLower   -- ñ
+   '\242' -> cAny + cIdent  + cLower   -- ò
+   '\243' -> cAny + cIdent  + cLower   -- ó
+   '\244' -> cAny + cIdent  + cLower   -- ô
+   '\245' -> cAny + cIdent  + cLower   -- õ
+   '\246' -> cAny + cIdent  + cLower   -- ö
+   '\247' -> cAny + cSymbol            -- ÷
+   '\248' -> cAny + cIdent             -- ø
+   '\249' -> cAny + cIdent  + cLower   -- ù
+   '\250' -> cAny + cIdent  + cLower   -- ú
+   '\251' -> cAny + cIdent  + cLower   -- û
+   '\252' -> cAny + cIdent  + cLower   -- ü
+   '\253' -> cAny + cIdent  + cLower   -- ý
+   '\254' -> cAny + cIdent  + cLower   -- þ
+   '\255' -> cAny + cIdent  + cLower   -- ÿ
+\end{code}
index f626f4f..c15f46f 100644 (file)
@@ -16,7 +16,6 @@ An example that provokes the error is
 --------------------------------------------------------
 
 \begin{code}
-{-# OPTIONS -#include "ctypes.h" #-}
 
 module Lex (
 
@@ -55,12 +54,7 @@ import FastString
 import StringBuffer
 import GlaExts
 import ST              ( runST )
-
-#if __GLASGOW_HASKELL__ >= 303
-import Bits
-import Word
-#endif
-
+import Ctypes
 import Char            ( chr )
 import Addr
 import PrelRead        ( readRational__ ) -- Glasgow non-std
@@ -869,33 +863,6 @@ lex_cstring cont buf =
                   (mergeLexemes buf buf')
    Nothing   -> lexError "unterminated ``" buf
 
-------------------------------------------------------------------------------
--- Character Classes
-
-is_ident, is_symbol, is_any, is_upper, is_digit :: Char# -> Bool
-
-{-# INLINE is_ctype #-}
-#if __GLASGOW_HASKELL__ >= 303
-is_ctype :: Word8 -> Char# -> Bool
-is_ctype mask = \c ->
-   (indexWord8OffAddr (``char_types'' :: Addr) (ord (C# c)) .&. mask) /= 0
-#else
-is_ctype :: Int -> Char# -> Bool
-is_ctype (I# mask) = \c ->
-    let (A# ctype) = ``char_types'' :: Addr
-       flag_word  = int2Word# (ord# (indexCharOffAddr# ctype (ord# c)))
-    in
-       (flag_word `and#` (int2Word# mask)) `neWord#` (int2Word# 0#)
-#endif
-
-is_ident  = is_ctype 1
-is_symbol = is_ctype 2
-is_any    = is_ctype 4
-is_space  = is_ctype 8
-is_lower  = is_ctype 16
-is_upper  = is_ctype 32
-is_digit  = is_ctype 64
-
 -----------------------------------------------------------------------------
 -- identifiers, symbols etc.
 
diff --git a/ghc/compiler/parser/ctypes.c b/ghc/compiler/parser/ctypes.c
deleted file mode 100644 (file)
index 0e3daaf..0000000
+++ /dev/null
@@ -1,267 +0,0 @@
-/*-----------------------------------------------------------------------------
-  ctype.c for Haskell
-
-  (c) Simon Marlow 1993
------------------------------------------------------------------------------*/
-
-#include "ctypes.h"
-
-const unsigned char char_types[] = 
-  {
-    0,                         /* \000 */
-    0,                         /* \001 */
-    0,                         /* \002 */
-    0,                         /* \003 */
-    0,                         /* \004 */
-    0,                         /* \005 */
-    0,                         /* \006 */
-    0,                         /* \007 */
-    0,                         /* \010 */
-    C_Any | C_Space,                   /* \t */
-    C_Any | C_Space,           /* \n */
-    C_Any | C_Space,           /* \v */
-    C_Any | C_Space,           /* \f */
-    C_Any | C_Space,           /* ^M */
-    0,                         /* \016 */
-    0,                         /* \017 */
-    0,                         /* \020 */
-    0,                         /* \021 */
-    0,                         /* \022 */
-    0,                         /* \023 */
-    0,                         /* \024 */
-    0,                         /* \025 */
-    0,                         /* \026 */
-    0,                         /* \027 */
-    0,                         /* \030 */
-    0,                         /* \031 */
-    0,                         /* \032 */
-    0,                         /* \033 */
-    0,                         /* \034 */
-    0,                         /* \035 */
-    0,                         /* \036 */
-    0,                         /* \037 */
-    C_Any | C_Space,           /*   */
-    C_Any | C_Symbol,          /* ! */
-    C_Any,                     /* " */
-    C_Any | C_Symbol,          /* # */
-    C_Any | C_Symbol,          /* $ */
-    C_Any | C_Symbol,          /* % */
-    C_Any | C_Symbol,          /* & */
-    C_Any | C_Ident,           /* ' */
-    C_Any,                     /* ( */
-    C_Any,                     /* ) */
-    C_Any | C_Symbol,          /* * */
-    C_Any | C_Symbol,          /* + */
-    C_Any,                     /* , */
-    C_Any | C_Symbol,           /* - */
-    C_Any | C_Symbol,          /* . */
-    C_Any | C_Symbol,          /* / */
-    C_Any | C_Ident | C_Digit, /* 0 */
-    C_Any | C_Ident | C_Digit, /* 1 */
-    C_Any | C_Ident | C_Digit, /* 2 */
-    C_Any | C_Ident | C_Digit, /* 3 */
-    C_Any | C_Ident | C_Digit, /* 4 */
-    C_Any | C_Ident | C_Digit, /* 5 */
-    C_Any | C_Ident | C_Digit, /* 6 */
-    C_Any | C_Ident | C_Digit, /* 7 */
-    C_Any | C_Ident | C_Digit, /* 8 */
-    C_Any | C_Ident | C_Digit, /* 9 */
-    C_Any | C_Symbol,          /* : */
-    C_Any,                     /* ; */
-    C_Any | C_Symbol,          /* < */
-    C_Any | C_Symbol,          /* = */
-    C_Any | C_Symbol,          /* > */
-    C_Any | C_Symbol,          /* ? */
-    C_Any | C_Symbol,          /* @ */
-    C_Any | C_Ident | C_Upper, /* A */
-    C_Any | C_Ident | C_Upper, /* B */
-    C_Any | C_Ident | C_Upper, /* C */
-    C_Any | C_Ident | C_Upper, /* D */
-    C_Any | C_Ident | C_Upper, /* E */
-    C_Any | C_Ident | C_Upper, /* F */
-    C_Any | C_Ident | C_Upper, /* G */
-    C_Any | C_Ident | C_Upper, /* H */
-    C_Any | C_Ident | C_Upper, /* I */
-    C_Any | C_Ident | C_Upper, /* J */
-    C_Any | C_Ident | C_Upper, /* K */
-    C_Any | C_Ident | C_Upper, /* L */
-    C_Any | C_Ident | C_Upper, /* M */
-    C_Any | C_Ident | C_Upper, /* N */
-    C_Any | C_Ident | C_Upper, /* O */
-    C_Any | C_Ident | C_Upper, /* P */
-    C_Any | C_Ident | C_Upper, /* Q */
-    C_Any | C_Ident | C_Upper, /* R */
-    C_Any | C_Ident | C_Upper, /* S */
-    C_Any | C_Ident | C_Upper, /* T */
-    C_Any | C_Ident | C_Upper, /* U */
-    C_Any | C_Ident | C_Upper, /* V */
-    C_Any | C_Ident | C_Upper, /* W */
-    C_Any | C_Ident | C_Upper, /* X */
-    C_Any | C_Ident | C_Upper, /* Y */
-    C_Any | C_Ident | C_Upper, /* Z */
-    C_Any,                     /* [ */
-    C_Any | C_Symbol,          /* \ */
-    C_Any,                     /* ] */
-    C_Any | C_Symbol,          /* ^ */
-    C_Any | C_Ident | C_Lower, /* _ */
-    C_Any,                     /* ` */
-    C_Any | C_Ident | C_Lower, /* a */
-    C_Any | C_Ident | C_Lower, /* b */
-    C_Any | C_Ident | C_Lower, /* c */
-    C_Any | C_Ident | C_Lower, /* d */
-    C_Any | C_Ident | C_Lower, /* e */
-    C_Any | C_Ident | C_Lower, /* f */
-    C_Any | C_Ident | C_Lower, /* g */
-    C_Any | C_Ident | C_Lower, /* h */
-    C_Any | C_Ident | C_Lower, /* i */
-    C_Any | C_Ident | C_Lower, /* j */
-    C_Any | C_Ident | C_Lower, /* k */
-    C_Any | C_Ident | C_Lower, /* l */
-    C_Any | C_Ident | C_Lower, /* m */
-    C_Any | C_Ident | C_Lower, /* n */
-    C_Any | C_Ident | C_Lower, /* o */
-    C_Any | C_Ident | C_Lower, /* p */
-    C_Any | C_Ident | C_Lower, /* q */
-    C_Any | C_Ident | C_Lower, /* r */
-    C_Any | C_Ident | C_Lower, /* s */
-    C_Any | C_Ident | C_Lower, /* t */
-    C_Any | C_Ident | C_Lower, /* u */
-    C_Any | C_Ident | C_Lower, /* v */
-    C_Any | C_Ident | C_Lower, /* w */
-    C_Any | C_Ident | C_Lower, /* x */
-    C_Any | C_Ident | C_Lower, /* y */
-    C_Any | C_Ident | C_Lower, /* z */
-    C_Any,                     /* { */
-    C_Any | C_Symbol,          /* | */
-    C_Any,                     /* } */
-    C_Any | C_Symbol,          /* ~ */
-    0,                         /* \177 */
-    0,                         /* \200 */
-    0,                         /* \201 */
-    0,                         /* \202 */
-    0,                         /* \203 */
-    0,                         /* \204 */
-    0,                         /* \205 */
-    0,                         /* \206 */
-    0,                         /* \207 */
-    0,                         /* \210 */
-    0,                         /* \211 */
-    0,                         /* \212 */
-    0,                         /* \213 */
-    0,                         /* \214 */
-    0,                         /* \215 */
-    0,                         /* \216 */
-    0,                         /* \217 */
-    0,                         /* \220 */
-    0,                         /* \221 */
-    0,                         /* \222 */
-    0,                         /* \223 */
-    0,                         /* \224 */
-    0,                         /* \225 */
-    0,                         /* \226 */
-    0,                         /* \227 */
-    0,                         /* \230 */
-    0,                         /* \231 */
-    0,                         /* \232 */
-    0,                         /* \233 */
-    0,                         /* \234 */
-    0,                         /* \235 */
-    0,                         /* \236 */
-    0,                         /* \237 */
-    C_Space,                   /*   */
-    C_Any | C_Symbol,          /* ¡ */
-    C_Any | C_Symbol,          /* ¢ */
-    C_Any | C_Symbol,          /* £ */
-    C_Any | C_Symbol,          /* ¤ */
-    C_Any | C_Symbol,          /* ¥ */
-    C_Any | C_Symbol,          /* ¦ */
-    C_Any | C_Symbol,          /* § */
-    C_Any | C_Symbol,          /* ¨ */
-    C_Any | C_Symbol,          /* © */
-    C_Any | C_Symbol,          /* ª */
-    C_Any | C_Symbol,          /* « */
-    C_Any | C_Symbol,          /* ¬ */
-    C_Any | C_Symbol,          /* ­ */
-    C_Any | C_Symbol,          /* ® */
-    C_Any | C_Symbol,          /* ¯ */
-    C_Any | C_Symbol,          /* ° */
-    C_Any | C_Symbol,          /* ± */
-    C_Any | C_Symbol,          /* ² */
-    C_Any | C_Symbol,          /* ³ */
-    C_Any | C_Symbol,          /* ´ */
-    C_Any | C_Symbol,          /* µ */
-    C_Any | C_Symbol,          /* ¶ */
-    C_Any | C_Symbol,          /* · */
-    C_Any | C_Symbol,          /* ¸ */
-    C_Any | C_Symbol,          /* ¹ */
-    C_Any | C_Symbol,          /* º */
-    C_Any | C_Symbol,          /* » */
-    C_Any | C_Symbol,          /* ¼ */
-    C_Any | C_Symbol,          /* ½ */
-    C_Any | C_Symbol,          /* ¾ */
-    C_Any | C_Symbol,          /* ¿ */
-    C_Any | C_Ident | C_Upper, /* À */
-    C_Any | C_Ident | C_Upper, /* Á */
-    C_Any | C_Ident | C_Upper, /* Â */
-    C_Any | C_Ident | C_Upper, /* Ã */
-    C_Any | C_Ident | C_Upper, /* Ä */
-    C_Any | C_Ident | C_Upper, /* Å */
-    C_Any | C_Ident | C_Upper, /* Æ */
-    C_Any | C_Ident | C_Upper, /* Ç */
-    C_Any | C_Ident | C_Upper, /* È */
-    C_Any | C_Ident | C_Upper, /* É */
-    C_Any | C_Ident | C_Upper, /* Ê */
-    C_Any | C_Ident | C_Upper, /* Ë */
-    C_Any | C_Ident | C_Upper, /* Ì */
-    C_Any | C_Ident | C_Upper, /* Í */
-    C_Any | C_Ident | C_Upper, /* Î */
-    C_Any | C_Ident | C_Upper, /* Ï */
-    C_Any | C_Ident | C_Upper, /* Ð */
-    C_Any | C_Ident | C_Upper, /* Ñ */
-    C_Any | C_Ident | C_Upper, /* Ò */
-    C_Any | C_Ident | C_Upper, /* Ó */
-    C_Any | C_Ident | C_Upper, /* Ô */
-    C_Any | C_Ident | C_Upper, /* Õ */
-    C_Any | C_Ident | C_Upper, /* Ö */
-    C_Any | C_Symbol | C_Lower,        /* × */
-    C_Any | C_Ident | C_Upper, /* Ø */
-    C_Any | C_Ident | C_Upper, /* Ù */
-    C_Any | C_Ident | C_Upper, /* Ú */
-    C_Any | C_Ident | C_Upper, /* Û */
-    C_Any | C_Ident | C_Upper, /* Ü */
-    C_Any | C_Ident | C_Upper, /* Ý */
-    C_Any | C_Ident | C_Upper, /* Þ */
-    C_Any | C_Ident,           /* ß */
-    C_Any | C_Ident | C_Lower, /* à */
-    C_Any | C_Ident | C_Lower, /* á */
-    C_Any | C_Ident | C_Lower, /* â */
-    C_Any | C_Ident | C_Lower, /* ã */
-    C_Any | C_Ident | C_Lower, /* ä */
-    C_Any | C_Ident | C_Lower, /* å */
-    C_Any | C_Ident | C_Lower, /* æ */
-    C_Any | C_Ident | C_Lower, /* ç */
-    C_Any | C_Ident | C_Lower, /* è */
-    C_Any | C_Ident | C_Lower, /* é */
-    C_Any | C_Ident | C_Lower, /* ê */
-    C_Any | C_Ident | C_Lower, /* ë */
-    C_Any | C_Ident | C_Lower, /* ì */
-    C_Any | C_Ident | C_Lower, /* í */
-    C_Any | C_Ident | C_Lower, /* î */
-    C_Any | C_Ident | C_Lower, /* ï */
-    C_Any | C_Ident | C_Lower, /* ð */
-    C_Any | C_Ident | C_Lower, /* ñ */
-    C_Any | C_Ident | C_Lower, /* ò */
-    C_Any | C_Ident | C_Lower, /* ó */
-    C_Any | C_Ident | C_Lower, /* ô */
-    C_Any | C_Ident | C_Lower, /* õ */
-    C_Any | C_Ident | C_Lower, /* ö */
-    C_Any | C_Symbol,          /* ÷ */
-    C_Any | C_Ident,           /* ø */
-    C_Any | C_Ident | C_Lower, /* ù */
-    C_Any | C_Ident | C_Lower, /* ú */
-    C_Any | C_Ident | C_Lower, /* û */
-    C_Any | C_Ident | C_Lower, /* ü */
-    C_Any | C_Ident | C_Lower, /* ý */
-    C_Any | C_Ident | C_Lower, /* þ */
-    C_Any | C_Ident | C_Lower, /* ÿ */
-  };
diff --git a/ghc/compiler/parser/ctypes.h b/ghc/compiler/parser/ctypes.h
deleted file mode 100644 (file)
index a67e162..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*-----------------------------------------------------------------------------
-  ctypes.h for Haskell
-
-  (c) Simon Marlow 1993
------------------------------------------------------------------------------*/
-
-#define C_Ident     1
-#define C_Symbol    1<<1
-#define C_Any       1<<2
-#define C_Space     1<<3
-#define C_Lower            1<<4
-#define C_Upper            1<<5
-#define C_Digit     1<<6
-
-#define _IsType(c,flags) (char_types[(int)(c)] & flags)
-
-#define IsSpace(c)     (_IsType(c,C_Space))
-#define IsIdent(c)     (_IsType(c,C_Ident))
-#define IsAny(c)       (_IsType(c,C_Any))
-#define IsSymbol(c)    (_IsType(c,C_Symbol))
-#define IsLower(c)     (_IsType(c,C_Lower))
-#define IsUpper(c)     (_IsType(c,C_Upper))
-#define IsDigit(c)     (_IsType(c,C_Digit))
-
-extern const unsigned char char_types[];