{-# LANGUAGE CPP #-}
module Ctype
( is_ident
, is_symbol
, is_any
, is_space
, is_lower
, is_upper
, is_digit
, is_alphanum
, is_decdigit, is_hexdigit, is_octdigit, is_bindigit
, hexDigit, octDecDigit
) where
#include "GhclibHsVersions.h"
import GhcPrelude
import Data.Bits ( Bits((.&.),(.|.)) )
import Data.Char ( ord, chr )
import Data.Word
import Panic
cIdent, cSymbol, cAny, cSpace, cLower, cUpper, cDigit :: Word8
cIdent :: Word8
cIdent = 1
cSymbol :: Word8
cSymbol = 2
cAny :: Word8
cAny = 4
cSpace :: Word8
cSpace = 8
cLower :: Word8
cLower = 16
cUpper :: Word8
cUpper = 32
cDigit :: Word8
cDigit = 64
{-# INLINABLE is_ctype #-}
is_ctype :: Word8 -> Char -> Bool
is_ctype :: Word8 -> Char -> Bool
is_ctype mask :: Word8
mask c :: Char
c = (Char -> Word8
charType Char
c Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.&. Word8
mask) Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
/= 0
is_ident, is_symbol, is_any, is_space, is_lower, is_upper, is_digit,
is_alphanum :: Char -> Bool
is_ident :: Char -> Bool
is_ident = Word8 -> Char -> Bool
is_ctype Word8
cIdent
is_symbol :: Char -> Bool
is_symbol = Word8 -> Char -> Bool
is_ctype Word8
cSymbol
is_any :: Char -> Bool
is_any = Word8 -> Char -> Bool
is_ctype Word8
cAny
is_space :: Char -> Bool
is_space = Word8 -> Char -> Bool
is_ctype Word8
cSpace
is_lower :: Char -> Bool
is_lower = Word8 -> Char -> Bool
is_ctype Word8
cLower
is_upper :: Char -> Bool
is_upper = Word8 -> Char -> Bool
is_ctype Word8
cUpper
is_digit :: Char -> Bool
is_digit = Word8 -> Char -> Bool
is_ctype Word8
cDigit
is_alphanum :: Char -> Bool
is_alphanum = Word8 -> Char -> Bool
is_ctype (Word8
cLowerWord8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
+Word8
cUpperWord8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
+Word8
cDigit)
hexDigit :: Char -> Int
hexDigit :: Char -> Int
hexDigit c :: Char
c | Char -> Bool
is_decdigit Char
c = Char -> Int
ord Char
c Int -> Int -> Int
forall a. Num a => a -> a -> a
- Char -> Int
ord '0'
| Bool
otherwise = Char -> Int
ord (Char -> Char
to_lower Char
c) Int -> Int -> Int
forall a. Num a => a -> a -> a
- Char -> Int
ord 'a' Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 10
octDecDigit :: Char -> Int
octDecDigit :: Char -> Int
octDecDigit c :: Char
c = Char -> Int
ord Char
c Int -> Int -> Int
forall a. Num a => a -> a -> a
- Char -> Int
ord '0'
is_decdigit :: Char -> Bool
is_decdigit :: Char -> Bool
is_decdigit c :: Char
c
= Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
>= '0' Bool -> Bool -> Bool
&& Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= '9'
is_hexdigit :: Char -> Bool
is_hexdigit :: Char -> Bool
is_hexdigit c :: Char
c
= Char -> Bool
is_decdigit Char
c
Bool -> Bool -> Bool
|| (Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
>= 'a' Bool -> Bool -> Bool
&& Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= 'f')
Bool -> Bool -> Bool
|| (Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
>= 'A' Bool -> Bool -> Bool
&& Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= 'F')
is_octdigit :: Char -> Bool
is_octdigit :: Char -> Bool
is_octdigit c :: Char
c = Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
>= '0' Bool -> Bool -> Bool
&& Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= '7'
is_bindigit :: Char -> Bool
is_bindigit :: Char -> Bool
is_bindigit c :: Char
c = Char
c Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== '0' Bool -> Bool -> Bool
|| Char
c Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== '1'
to_lower :: Char -> Char
to_lower :: Char -> Char
to_lower c :: Char
c
| Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
>= 'A' Bool -> Bool -> Bool
&& Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= 'Z' = Int -> Char
chr (Char -> Int
ord Char
c Int -> Int -> Int
forall a. Num a => a -> a -> a
- (Char -> Int
ord 'A' Int -> Int -> Int
forall a. Num a => a -> a -> a
- Char -> Int
ord 'a'))
| Bool
otherwise = Char
c
charType :: Char -> Word8
charType :: Char -> Word8
charType c :: Char
c = case Char
c of
'\0' -> 0
'\1' -> 0
'\2' -> 0
'\3' -> 0
'\4' -> 0
'\5' -> 0
'\6' -> 0
'\7' -> 0
'\8' -> 0
'\9' -> Word8
cSpace
'\10' -> Word8
cSpace
'\11' -> Word8
cSpace
'\12' -> Word8
cSpace
'\13' -> Word8
cSpace
'\14' -> 0
'\15' -> 0
'\16' -> 0
'\17' -> 0
'\18' -> 0
'\19' -> 0
'\20' -> 0
'\21' -> 0
'\22' -> 0
'\23' -> 0
'\24' -> 0
'\25' -> 0
'\26' -> 0
'\27' -> 0
'\28' -> 0
'\29' -> 0
'\30' -> 0
'\31' -> 0
'\32' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSpace
'\33' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\34' -> Word8
cAny
'\35' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\36' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\37' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\38' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\39' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent
'\40' -> Word8
cAny
'\41' -> Word8
cAny
'\42' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\43' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\44' -> Word8
cAny
'\45' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\46' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\47' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\48' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cDigit
'\49' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cDigit
'\50' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cDigit
'\51' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cDigit
'\52' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cDigit
'\53' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cDigit
'\54' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cDigit
'\55' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cDigit
'\56' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cDigit
'\57' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cDigit
'\58' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\59' -> Word8
cAny
'\60' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\61' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\62' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\63' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\64' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\65' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\66' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\67' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\68' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\69' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\70' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\71' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\72' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\73' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\74' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\75' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\76' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\77' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\78' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\79' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\80' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\81' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\82' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\83' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\84' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\85' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\86' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\87' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\88' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\89' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\90' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cUpper
'\91' -> Word8
cAny
'\92' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\93' -> Word8
cAny
'\94' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\95' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\96' -> Word8
cAny
'\97' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\98' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\99' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\100' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\101' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\102' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\103' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\104' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\105' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\106' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\107' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\108' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\109' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\110' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\111' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\112' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\113' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\114' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\115' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\116' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\117' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\118' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\119' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\120' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\121' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\122' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cIdent Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cLower
'\123' -> Word8
cAny
'\124' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\125' -> Word8
cAny
'\126' -> Word8
cAny Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
.|. Word8
cSymbol
'\127' -> 0
_ -> String -> Word8
forall a. String -> a
panic ("charType: " String -> String -> String
forall a. [a] -> [a] -> [a]
++ Char -> String
forall a. Show a => a -> String
show Char
c)