alex 3.2.5 → 3.2.6
raw patch · 12 files changed
+137/−538 lines, 12 filesdep ~basenew-uploader
Dependency ranges changed: base
Files
- CHANGELOG.md +17/−0
- alex.cabal +9/−3
- data/AlexTemplate +9/−0
- data/AlexTemplate-debug +9/−0
- data/AlexTemplate-ghc +11/−2
- data/AlexTemplate-ghc-debug +11/−2
- data/AlexTemplate-ghc-nopred +11/−2
- src/AbsSyn.hs +2/−2
- src/DFAMin.hs +3/−3
- src/Parser.hs +32/−519
- src/Scan.hs +12/−3
- templates/GenericTemplate.hs +11/−2
CHANGELOG.md view
@@ -1,3 +1,20 @@+## Changes in 3.2.6:++ * Support for the GHC 9.2.++ The array access primops now use the fixed-sized numeric types+ corresponding to the width of the data accessed. Additionally, the+ primops to convert to and from fixed-sized numeric types have been+ given new names.++ 9.2 isn't cut yet, so these changes are somewhat speculative.+ Unfortunately, GHC must used a released version of Alex (and Happy)+ at all times until further changes have been made, so we must make+ the release to actually implement these changes in GHC.++ If the final GHC 9.2 ends up being different, this release will be+ marked broken to make it less likely people use it by accident.+ ## Changes in 3.2.5: * Build fixes for GHC 8.8.x
alex.cabal view
@@ -1,6 +1,6 @@-cabal-version: >= 1.8+cabal-version: >= 1.10 name: alex-version: 3.2.5+version: 3.2.6 -- don't forget updating changelog.md! license: BSD3 license-file: LICENSE@@ -115,8 +115,12 @@ build-depends: base < 5 - extensions: CPP+ default-language: Haskell98+ default-extensions: CPP+ other-extensions: MagicHash+ ghc-options: -Wall -rtsopts+ other-modules: AbsSyn CharSet@@ -145,5 +149,7 @@ main-is: test.hs -- This line is important as it ensures that the local `exe:alex` component declared above is built before the test-suite component is invoked, as well as making sure that `alex` is made available on $PATH and `$alex_datadir` is set accordingly before invoking `test.hs` build-tools: alex++ default-language: Haskell98 build-depends: base, process
data/AlexTemplate view
@@ -70,7 +70,16 @@ +++++ alexIndexInt16OffAddr arr off = arr ! off++++
data/AlexTemplate-debug view
@@ -70,7 +70,16 @@ +++++ alexIndexInt16OffAddr arr off = arr ! off++++
data/AlexTemplate-ghc view
@@ -24,6 +24,7 @@ + -- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex. #if __GLASGOW_HASKELL__ > 706 #define GTE(n,m) (tagToEnum# (n >=# m))@@ -58,6 +59,7 @@ #endif {-# INLINE alexIndexInt16OffAddr #-}+alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int# alexIndexInt16OffAddr (AlexA# arr) off = #ifdef WORDS_BIGENDIAN narrow16Int# i@@ -67,14 +69,18 @@ low = int2Word# (ord# (indexCharOffAddr# arr off')) off' = off *# 2# #else- indexInt16OffAddr# arr off+#if __GLASGOW_HASKELL__ >= 901+ int16ToInt# #endif+ (indexInt16OffAddr# arr off)+#endif {-# INLINE alexIndexInt32OffAddr #-}+alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int# alexIndexInt32OffAddr (AlexA# arr) off = #ifdef WORDS_BIGENDIAN narrow32Int# i@@ -88,7 +94,10 @@ b0 = int2Word# (ord# (indexCharOffAddr# arr off')) off' = off *# 4# #else- indexInt32OffAddr# arr off+#if __GLASGOW_HASKELL__ >= 901+ int32ToInt#+#endif+ (indexInt32OffAddr# arr off) #endif
data/AlexTemplate-ghc-debug view
@@ -24,6 +24,7 @@ + -- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex. #if __GLASGOW_HASKELL__ > 706 #define GTE(n,m) (tagToEnum# (n >=# m))@@ -58,6 +59,7 @@ #endif {-# INLINE alexIndexInt16OffAddr #-}+alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int# alexIndexInt16OffAddr (AlexA# arr) off = #ifdef WORDS_BIGENDIAN narrow16Int# i@@ -67,14 +69,18 @@ low = int2Word# (ord# (indexCharOffAddr# arr off')) off' = off *# 2# #else- indexInt16OffAddr# arr off+#if __GLASGOW_HASKELL__ >= 901+ int16ToInt# #endif+ (indexInt16OffAddr# arr off)+#endif {-# INLINE alexIndexInt32OffAddr #-}+alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int# alexIndexInt32OffAddr (AlexA# arr) off = #ifdef WORDS_BIGENDIAN narrow32Int# i@@ -88,7 +94,10 @@ b0 = int2Word# (ord# (indexCharOffAddr# arr off')) off' = off *# 4# #else- indexInt32OffAddr# arr off+#if __GLASGOW_HASKELL__ >= 901+ int32ToInt#+#endif+ (indexInt32OffAddr# arr off) #endif
data/AlexTemplate-ghc-nopred view
@@ -24,6 +24,7 @@ + -- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex. #if __GLASGOW_HASKELL__ > 706 #define GTE(n,m) (tagToEnum# (n >=# m))@@ -58,6 +59,7 @@ #endif {-# INLINE alexIndexInt16OffAddr #-}+alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int# alexIndexInt16OffAddr (AlexA# arr) off = #ifdef WORDS_BIGENDIAN narrow16Int# i@@ -67,14 +69,18 @@ low = int2Word# (ord# (indexCharOffAddr# arr off')) off' = off *# 2# #else- indexInt16OffAddr# arr off+#if __GLASGOW_HASKELL__ >= 901+ int16ToInt# #endif+ (indexInt16OffAddr# arr off)+#endif {-# INLINE alexIndexInt32OffAddr #-}+alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int# alexIndexInt32OffAddr (AlexA# arr) off = #ifdef WORDS_BIGENDIAN narrow32Int# i@@ -88,7 +94,10 @@ b0 = int2Word# (ord# (indexCharOffAddr# arr off')) off' = off *# 4# #else- indexInt32OffAddr# arr off+#if __GLASGOW_HASKELL__ >= 901+ int32ToInt#+#endif+ (indexInt32OffAddr# arr off) #endif
src/AbsSyn.hs view
@@ -324,9 +324,9 @@ where (new_tokens, decls) = unzip (zipWith f (scannerTokens scanner) act_names) - f r@RECtx{ reCtxCode = Just code } name+ f r@(RECtx{ reCtxCode = Just code }) name = (r{reCtxCode = Just name}, Just (mkDecl name code))- f r@RECtx{ reCtxCode = Nothing } _+ f r@(RECtx{ reCtxCode = Nothing }) _ = (r{reCtxCode = Nothing}, Nothing) gscanActionType res =
src/DFAMin.hs view
@@ -32,9 +32,9 @@ -- end; minimizeDFA :: Ord a => DFA Int a -> DFA Int a-minimizeDFA dfa@ DFA { dfa_start_states = starts,- dfa_states = statemap- }+minimizeDFA dfa@(DFA { dfa_start_states = starts,+ dfa_states = statemap+ }) = DFA { dfa_start_states = starts, dfa_states = Map.fromList states } where
src/Parser.hs view
@@ -27,7 +27,7 @@ import Control.Applicative(Applicative(..)) import Control.Monad (ap) --- parser produced by Happy Version 1.19.10+-- parser produced by Happy Version 1.19.12 newtype HappyAbsSyn = HappyAbsSyn HappyAny #if __GLASGOW_HASKELL__ >= 607@@ -1059,468 +1059,7 @@ "utf8" -> return UTF8 _ -> failP ("encoding " ++ show s ++ " not supported") {-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "<built-in>" #-}-{-# LINE 1 "<command-line>" #-}-{-# LINE 10 "<command-line>" #-}-# 1 "/usr/include/stdc-predef.h" 1 3 4--# 17 "/usr/include/stdc-predef.h" 3 4-----------------------------------------------{-# LINE 10 "<command-line>" #-}-{-# LINE 1 "/home/smarlow/local/lib/ghc-8.4.3/include/ghcversion.h" #-}----------------{-# LINE 10 "<command-line>" #-}-{-# LINE 1 "/tmp/ghc27342_0/ghc_2.h" #-}------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-- $Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp $ @@ -1534,6 +1073,16 @@ +-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.+#if __GLASGOW_HASKELL__ > 706+#define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Bool)+#define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Bool)+#define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Bool)+#else+#define LT(n,m) (n Happy_GHC_Exts.<# m)+#define GTE(n,m) (n Happy_GHC_Exts.>=# m)+#define EQ(n,m) (n Happy_GHC_Exts.==# m)+#endif @@ -1553,6 +1102,7 @@ +data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList @@ -1593,48 +1143,6 @@ -{-# LINE 10 "<command-line>" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}--- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp ---------------- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.-#if __GLASGOW_HASKELL__ > 706-#define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Bool)-#define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Bool)-#define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Bool)-#else-#define LT(n,m) (n Happy_GHC_Exts.<# m)-#define GTE(n,m) (n Happy_GHC_Exts.>=# m)-#define EQ(n,m) (n Happy_GHC_Exts.==# m)-#endif-{-# LINE 43 "templates/GenericTemplate.hs" #-}--data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList--------{-# LINE 65 "templates/GenericTemplate.hs" #-}--{-# LINE 75 "templates/GenericTemplate.hs" #-}--{-# LINE 84 "templates/GenericTemplate.hs" #-}- infixr 9 `HappyStk` data HappyStk a = HappyStk a (HappyStk a) @@ -1646,7 +1154,7 @@ ----------------------------------------------------------------------------- -- Accepting the parse --- If the current token is 0#, it means we've just accepted a partial+-- If the current token is ERROR_TOK, it means we've just accepted a partial -- parse (a %partial parser). We must ignore the saved token on the top of -- the stack in this case. happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =@@ -1661,24 +1169,19 @@ happyDoAction i tk st = {- nothing -}-- case action of 0# -> {- nothing -} happyFail (happyExpListPerState ((Happy_GHC_Exts.I# (st)) :: Int)) i tk st -1# -> {- nothing -} happyAccept i tk st n | LT(n,(0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}- (happyReduceArr Happy_Data_Array.! rule) i tk st where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#)))))) n -> {- nothing -}-- happyShift new_state i tk st where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) where off = happyAdjustOffset (indexShortOffAddr happyActOffsets st)- off_i = (off Happy_GHC_Exts.+# i)+ off_i = (off Happy_GHC_Exts.+# i) check = if GTE(off_i,(0# :: Happy_GHC_Exts.Int#)) then EQ(indexShortOffAddr happyCheck off_i, i) else False@@ -1719,8 +1222,18 @@ ----------------------------------------------------------------------------- -- HappyState data type (not arrays) -{-# LINE 180 "templates/GenericTemplate.hs" #-} +++++++++++ ----------------------------------------------------------------------------- -- Shifting a token @@ -1781,7 +1294,7 @@ let drop_stk = happyDropStk k stk off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st1)- off_i = (off Happy_GHC_Exts.+# nt)+ off_i = (off Happy_GHC_Exts.+# nt) new_state = indexShortOffAddr happyTable off_i @@ -1804,14 +1317,14 @@ {- nothing -} happyDoAction j tk new_state where off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st)- off_i = (off Happy_GHC_Exts.+# nt)+ off_i = (off Happy_GHC_Exts.+# nt) new_state = indexShortOffAddr happyTable off_i -------------------------------------------------------------------------------- Error recovery (0# is the error token)+-- Error recovery (ERROR_TOK is the error token) -- parse error if we are in recovery and we fail again happyFail explist 0# tk old_st _ stk@(x `HappyStk` _) =@@ -1824,17 +1337,17 @@ for now --SDM -- discard a state-happyFail 0# tk old_st (HappyCons ((action)) (sts)) +happyFail ERROR_TOK tk old_st CONS(HAPPYSTATE(action),sts) (saved_tok `HappyStk` _ `HappyStk` stk) = -- trace ("discarding state, depth " ++ show (length stk)) $- happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))+ DO_ACTION(action,ERROR_TOK,tk,sts,(saved_tok`HappyStk`stk)) -} -- Enter error recovery: generate an error token, -- save the old token and carry on. happyFail explist i tk (action) sts stk = -- trace "entering error recovery" $- happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)+ happyDoAction 0# tk action sts ((Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk) -- Internal happy errors:
src/Scan.hs view
@@ -15,11 +15,11 @@ #endif #if __GLASGOW_HASKELL__ >= 503 import Data.Array-import Data.Array.Base (unsafeAt) #else import Array #endif #if __GLASGOW_HASKELL__ >= 503+import Data.Array.Base (unsafeAt) import GHC.Exts #else import GlaExts@@ -490,6 +490,7 @@ + -- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex. #if __GLASGOW_HASKELL__ > 706 #define GTE(n,m) (tagToEnum# (n >=# m))@@ -524,6 +525,7 @@ #endif {-# INLINE alexIndexInt16OffAddr #-}+alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int# alexIndexInt16OffAddr (AlexA# arr) off = #ifdef WORDS_BIGENDIAN narrow16Int# i@@ -533,14 +535,18 @@ low = int2Word# (ord# (indexCharOffAddr# arr off')) off' = off *# 2# #else- indexInt16OffAddr# arr off+#if __GLASGOW_HASKELL__ >= 901+ int16ToInt# #endif+ (indexInt16OffAddr# arr off)+#endif {-# INLINE alexIndexInt32OffAddr #-}+alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int# alexIndexInt32OffAddr (AlexA# arr) off = #ifdef WORDS_BIGENDIAN narrow32Int# i@@ -554,7 +560,10 @@ b0 = int2Word# (ord# (indexCharOffAddr# arr off')) off' = off *# 4# #else- indexInt32OffAddr# arr off+#if __GLASGOW_HASKELL__ >= 901+ int32ToInt#+#endif+ (indexInt32OffAddr# arr off) #endif
templates/GenericTemplate.hs view
@@ -12,6 +12,7 @@ #define ALEX_IF_GHC_GT_500 #if __GLASGOW_HASKELL__ > 500 #define ALEX_IF_GHC_LT_503 #if __GLASGOW_HASKELL__ < 503 #define ALEX_IF_GHC_GT_706 #if __GLASGOW_HASKELL__ > 706+#define ALEX_IF_GHC_GE_901 #if __GLASGOW_HASKELL__ >= 901 #define ALEX_ELIF_GHC_500 #elif __GLASGOW_HASKELL__ == 500 #define ALEX_IF_BIGENDIAN #ifdef WORDS_BIGENDIAN #define ALEX_ELSE #else@@ -57,6 +58,7 @@ ALEX_ENDIF {-# INLINE alexIndexInt16OffAddr #-}+alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int# alexIndexInt16OffAddr (AlexA# arr) off = ALEX_IF_BIGENDIAN narrow16Int# i@@ -66,14 +68,18 @@ low = int2Word# (ord# (indexCharOffAddr# arr off')) off' = off *# 2# ALEX_ELSE- indexInt16OffAddr# arr off+ALEX_IF_GHC_GE_901+ int16ToInt# ALEX_ENDIF+ (indexInt16OffAddr# arr off)+ALEX_ENDIF #else alexIndexInt16OffAddr arr off = arr ! off #endif #ifdef ALEX_GHC {-# INLINE alexIndexInt32OffAddr #-}+alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int# alexIndexInt32OffAddr (AlexA# arr) off = ALEX_IF_BIGENDIAN narrow32Int# i@@ -87,7 +93,10 @@ b0 = int2Word# (ord# (indexCharOffAddr# arr off')) off' = off *# 4# ALEX_ELSE- indexInt32OffAddr# arr off+ALEX_IF_GHC_GE_901+ int32ToInt#+ALEX_ENDIF+ (indexInt32OffAddr# arr off) ALEX_ENDIF #else alexIndexInt32OffAddr arr off = arr ! off