From: panne Date: Mon, 8 May 2000 15:19:48 +0000 (+0000) Subject: [project @ 2000-05-08 15:19:48 by panne] X-Git-Tag: Approximately_9120_patches~4558 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=0588967a4bc5f2e1b5e3bf433334fad59aa07221;p=ghc-hetmet.git [project @ 2000-05-08 15:19:48 by panne] Replaced last remnants of C in the scanner/parser with carefully tuned Haskell. TODO: Test with GHC < 3.03 --- diff --git a/ghc/compiler/parser/Ctypes.lhs b/ghc/compiler/parser/Ctypes.lhs new file mode 100644 index 0000000..9f72c1e --- /dev/null +++ b/ghc/compiler/parser/Ctypes.lhs @@ -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} diff --git a/ghc/compiler/parser/Lex.lhs b/ghc/compiler/parser/Lex.lhs index f626f4f..c15f46f 100644 --- a/ghc/compiler/parser/Lex.lhs +++ b/ghc/compiler/parser/Lex.lhs @@ -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 index 0e3daaf..0000000 --- a/ghc/compiler/parser/ctypes.c +++ /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 index a67e162..0000000 --- a/ghc/compiler/parser/ctypes.h +++ /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[];