@@ -33,7 +33,8 @@ utf8Encode :: Char -> [Word8]
33
33
utf8Encode = uncurry (:) . utf8Encode'
34
34
35
35
utf8Encode' :: Char -> (Word8 , [Word8 ])
36
- utf8Encode' c = (fromIntegral x, map fromIntegral xs)
36
+ utf8Encode' c = case go (ord c) of
37
+ (x, xs) -> (fromIntegral x, map fromIntegral xs)
37
38
where
38
39
go oc
39
40
| oc <= 0x7f = ( oc
@@ -53,7 +54,6 @@ utf8Encode' c = (fromIntegral x, map fromIntegral xs)
53
54
, 0x80 + ((oc `Data.Bits.shiftR` 6 ) Data.Bits. .&. 0x3f )
54
55
, 0x80 + oc Data.Bits. .&. 0x3f
55
56
])
56
- (x, xs) = go (ord c)
57
57
58
58
#endif
59
59
@@ -78,8 +78,8 @@ alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)
78
78
alexGetByte (p,c,(b: bs),s) = Just (b,(p,c,bs,s))
79
79
alexGetByte (_,_,[] ,[] ) = Nothing
80
80
alexGetByte (p,_,[] ,(c: s)) = let p' = alexMove p c
81
- (b, bs) = utf8Encode' c
82
- in p' `seq` Just (b, (p', c, bs, s))
81
+ in case utf8Encode' c of
82
+ (b, bs) -> p' `seq` Just (b, (p', c, bs, s))
83
83
#endif
84
84
85
85
#if defined(ALEX_POSN_BYTESTRING) || defined(ALEX_MONAD_BYTESTRING)
@@ -340,8 +340,8 @@ alexScanTokens str = go ('\n',[],str)
340
340
alexGetByte :: AlexInput -> Maybe (Byte ,AlexInput )
341
341
alexGetByte (c,(b: bs),s) = Just (b,(c,bs,s))
342
342
alexGetByte (_,[] ,[] ) = Nothing
343
- alexGetByte (_,[] ,(c: s)) = let (b, bs) = utf8Encode' c
344
- in Just (b, (c, bs, s))
343
+ alexGetByte (_,[] ,(c: s)) = case utf8Encode' c of
344
+ (b, bs) -> Just (b, (c, bs, s))
345
345
#endif
346
346
347
347
0 commit comments