packages feed

core 0.4 → 0.5

raw patch · 4 files changed

+5/−396 lines, 4 filesdep −arrayPVP ok

version bump matches the API change (PVP)

Dependencies removed: array

API changes (from Hackage documentation)

- Language.Core.Happy: HappyA# :: Addr# -> HappyAddr
- Language.Core.Happy: HappyAbsSyn :: HappyAny -> HappyAbsSyn t4
- Language.Core.Happy: HappyCons :: Int# -> Happy_IntList -> Happy_IntList
- Language.Core.Happy: HappyIdentity :: a -> HappyIdentity a
- Language.Core.Happy: HappyStk :: a -> (HappyStk a) -> HappyStk a
- Language.Core.Happy: data HappyAddr
- Language.Core.Happy: data HappyStk a
- Language.Core.Happy: data Happy_IntList
- Language.Core.Happy: happyActOffsets :: HappyAddr
- Language.Core.Happy: happyCheck :: HappyAddr
- Language.Core.Happy: happyDefActions :: HappyAddr
- Language.Core.Happy: happyDoSeq :: a -> b -> b
- Language.Core.Happy: happyDontSeq :: a -> b -> b
- Language.Core.Happy: happyError' :: [Token] -> HappyIdentity a
- Language.Core.Happy: happyGotoOffsets :: HappyAddr
- Language.Core.Happy: happyIn4 :: t4 -> (HappyAbsSyn t4)
- Language.Core.Happy: happyInTok :: Token -> (HappyAbsSyn t4)
- Language.Core.Happy: happyOut4 :: (HappyAbsSyn t4) -> t4
- Language.Core.Happy: happyOutTok :: (HappyAbsSyn t4) -> Token
- Language.Core.Happy: happyReturn :: a -> HappyIdentity a
- Language.Core.Happy: happyReturn1 :: a -> b -> HappyIdentity a
- Language.Core.Happy: happyTable :: HappyAddr
- Language.Core.Happy: happyTcHack :: Int# -> a -> a
- Language.Core.Happy: happyThen :: HappyIdentity a -> (a -> HappyIdentity b) -> HappyIdentity b
- Language.Core.Happy: instance Monad HappyIdentity
- Language.Core.Happy: newtype HappyAbsSyn t4
- Language.Core.Happy: newtype HappyIdentity a
- Language.Core.Happy: type HappyAny = Any
- Language.Core.Parser: Arrow :: Token
- Language.Core.Parser: At :: Token
- Language.Core.Parser: Backslash :: Token
- Language.Core.Parser: Char :: Char -> Token
- Language.Core.Parser: Colon :: Token
- Language.Core.Parser: DColon :: Token
- Language.Core.Parser: Dash :: Token
- Language.Core.Parser: Dot :: Token
- Language.Core.Parser: Equal :: Token
- Language.Core.Parser: Hash :: Token
- Language.Core.Parser: Keyword :: String -> Token
- Language.Core.Parser: LBrace :: Token
- Language.Core.Parser: LParen :: Token
- Language.Core.Parser: Lname :: ByteString -> Token
- Language.Core.Parser: Number :: Integer -> Token
- Language.Core.Parser: Percent :: Token
- Language.Core.Parser: Pos :: !Int -> !Int -> a -> Pos a
- Language.Core.Parser: QuestionMark :: Token
- Language.Core.Parser: RBrace :: Token
- Language.Core.Parser: RParen :: Token
- Language.Core.Parser: SColon :: Token
- Language.Core.Parser: Star :: Token
- Language.Core.Parser: String :: String -> Token
- Language.Core.Parser: Uname :: ByteString -> Token
- Language.Core.Parser: data Pos a
- Language.Core.Parser: data Token
- Language.Core.Parser: instance (Show a) => Show (Pos a)
- Language.Core.Parser: lexer :: ByteString -> [Pos Token]
+ Language.Core.Parser: instance Show a => Show (Pos a)

Files

core.cabal view
@@ -1,5 +1,5 @@ name:                core-version:             0.4+version:             0.5 synopsis:            External core parser and pretty printer. description:         External core parser and pretty printer. category:            Language@@ -7,7 +7,7 @@ license-file:        LICENSE author:              David Himmelstrup maintainer:          lemmih@gmail.com-build-Depends:       base, parsec, bytestring, pretty, array+build-Depends:       base, parsec, bytestring, pretty ghc-options:          ghc-prof-options:    -auto-all build-type:          Simple@@ -16,4 +16,3 @@                      Language.Core.Syntax                      Language.Core.Parser                      Language.Core.Pretty-                     Language.Core.Happy
− dist/build/Language/Core/Happy.hs
@@ -1,364 +0,0 @@-{-# OPTIONS -fglasgow-exts -cpp #-}-module Language.Core.Happy where--import Language.Core.Parser (Pos, Token, lexer)-#if __GLASGOW_HASKELL__ >= 503-import Data.Array-#else-import Array-#endif-#if __GLASGOW_HASKELL__ >= 503-import GHC.Exts-#else-import GlaExts-#endif---- parser produced by Happy Version 1.17--newtype HappyAbsSyn t4 = HappyAbsSyn HappyAny-#if __GLASGOW_HASKELL__ >= 607-type HappyAny = GHC.Exts.Any-#else-type HappyAny = forall a . a-#endif-happyIn4 :: t4 -> (HappyAbsSyn t4)-happyIn4 x = unsafeCoerce# x-{-# INLINE happyIn4 #-}-happyOut4 :: (HappyAbsSyn t4) -> t4-happyOut4 x = unsafeCoerce# x-{-# INLINE happyOut4 #-}-happyInTok :: Token -> (HappyAbsSyn t4)-happyInTok x = unsafeCoerce# x-{-# INLINE happyInTok #-}-happyOutTok :: (HappyAbsSyn t4) -> Token-happyOutTok x = unsafeCoerce# x-{-# INLINE happyOutTok #-}---happyActOffsets :: HappyAddr-happyActOffsets = HappyA# "\x00\x00\x00\x00\x02\x00\x00\x00"#--happyGotoOffsets :: HappyAddr-happyGotoOffsets = HappyA# "\x01\x00\x00\x00\x00\x00\x00\x00"#--happyDefActions :: HappyAddr-happyDefActions = HappyA# "\xfe\xff\x00\x00\x00\x00"#--happyCheck :: HappyAddr-happyCheck = HappyA# "\xff\xff\x00\x00\xff\xff\x01\x00"#--happyTable :: HappyAddr-happyTable = HappyA# "\x00\x00\x02\x00\x00\x00\xff\xff"#--happyReduceArr = array (1, 1) [-	(1 , happyReduce_1)-	]--happy_n_terms = 2 :: Int-happy_n_nonterms = 1 :: Int--happyReduce_1 = happySpecReduce_0  0# happyReduction_1-happyReduction_1  =  happyIn4-		 (undefined-	)--happyNewToken action sts stk [] =-	happyDoAction 1# notHappyAtAll action sts stk []--happyNewToken action sts stk (tk:tks) =-	let cont i = happyDoAction i tk action sts stk tks in-	case tk of {-	_ -> happyError' (tk:tks)-	}--happyError_ tk tks = happyError' (tk:tks)--newtype HappyIdentity a = HappyIdentity a-happyIdentity = HappyIdentity-happyRunIdentity (HappyIdentity a) = a--instance Monad HappyIdentity where-    return = HappyIdentity-    (HappyIdentity p) >>= q = q p--happyThen :: () => HappyIdentity a -> (a -> HappyIdentity b) -> HappyIdentity b-happyThen = (>>=)-happyReturn :: () => a -> HappyIdentity a-happyReturn = (return)-happyThen1 m k tks = (>>=) m (\a -> k a tks)-happyReturn1 :: () => a -> b -> HappyIdentity a-happyReturn1 = \a tks -> (return) a-happyError' :: () => [Token] -> HappyIdentity a-happyError' = HappyIdentity . parseError--parseModule tks = happyRunIdentity happySomeParser where-  happySomeParser = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut4 x))--happySeq = happyDontSeq---parseError _ = error "parse error"-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "<built-in>" #-}-{-# LINE 1 "<command-line>" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}--- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp --{-# LINE 28 "templates/GenericTemplate.hs" #-}---data Happy_IntList = HappyCons Int# Happy_IntList------{-# LINE 49 "templates/GenericTemplate.hs" #-}--{-# LINE 59 "templates/GenericTemplate.hs" #-}--{-# LINE 68 "templates/GenericTemplate.hs" #-}--infixr 9 `HappyStk`-data HappyStk a = HappyStk a (HappyStk a)---------------------------------------------------------------------------------- starting the parse--happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll---------------------------------------------------------------------------------- Accepting the parse---- If the current token is 0#, 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` _) =-	happyReturn1 ans-happyAccept j tk st sts (HappyStk ans _) = -	(happyTcHack j (happyTcHack st)) (happyReturn1 ans)---------------------------------------------------------------------------------- Arrays only: do the next action----happyDoAction i tk st-	= {- nothing -}---	  case action of-		0#		  -> {- nothing -}-				     happyFail i tk st-		-1# 	  -> {- nothing -}-				     happyAccept i tk st-		n | (n <# (0# :: Int#)) -> {- nothing -}--				     (happyReduceArr ! rule) i tk st-				     where rule = (I# ((negateInt# ((n +# (1# :: Int#))))))-		n		  -> {- nothing -}---				     happyShift new_state i tk st-				     where new_state = (n -# (1# :: Int#))-   where off    = indexShortOffAddr happyActOffsets st-	 off_i  = (off +# i)-	 check  = if (off_i >=# (0# :: Int#))-			then (indexShortOffAddr happyCheck off_i ==#  i)-			else False- 	 action | check     = indexShortOffAddr happyTable off_i-		| otherwise = indexShortOffAddr happyDefActions st--{-# LINE 127 "templates/GenericTemplate.hs" #-}---indexShortOffAddr (HappyA# arr) off =-#if __GLASGOW_HASKELL__ > 500-	narrow16Int# i-#elif __GLASGOW_HASKELL__ == 500-	intToInt16# i-#else-	(i `iShiftL#` 16#) `iShiftRA#` 16#-#endif-  where-#if __GLASGOW_HASKELL__ >= 503-	i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)-#else-	i = word2Int# ((high `shiftL#` 8#) `or#` low)-#endif-	high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))-	low  = int2Word# (ord# (indexCharOffAddr# arr off'))-	off' = off *# 2#------data HappyAddr = HappyA# Addr#------------------------------------------------------------------------------------- HappyState data type (not arrays)--{-# LINE 170 "templates/GenericTemplate.hs" #-}---------------------------------------------------------------------------------- Shifting a token--happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =-     let i = (case unsafeCoerce# x of { (I# (i)) -> i }) in---     trace "shifting the error token" $-     happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)--happyShift new_state i tk st sts stk =-     happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)---- happyReduce is specialised for the common cases.--happySpecReduce_0 i fn 0# tk st sts stk-     = happyFail 0# tk st sts stk-happySpecReduce_0 nt fn j tk st@((action)) sts stk-     = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)--happySpecReduce_1 i fn 0# tk st sts stk-     = happyFail 0# tk st sts stk-happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')-     = let r = fn v1 in-       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_2 i fn 0# tk st sts stk-     = happyFail 0# tk st sts stk-happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')-     = let r = fn v1 v2 in-       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_3 i fn 0# tk st sts stk-     = happyFail 0# tk st sts stk-happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')-     = let r = fn v1 v2 v3 in-       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happyReduce k i fn 0# tk st sts stk-     = happyFail 0# tk st sts stk-happyReduce k nt fn j tk st sts stk-     = case happyDrop (k -# (1# :: Int#)) sts of-	 sts1@((HappyCons (st1@(action)) (_))) ->-        	let r = fn stk in  -- it doesn't hurt to always seq here...-       		happyDoSeq r (happyGoto nt j tk st1 sts1 r)--happyMonadReduce k nt fn 0# tk st sts stk-     = happyFail 0# tk st sts stk-happyMonadReduce k nt fn j tk st sts stk =-        happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))-       where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts))-             drop_stk = happyDropStk k stk--happyMonad2Reduce k nt fn 0# tk st sts stk-     = happyFail 0# tk st sts stk-happyMonad2Reduce k nt fn j tk st sts stk =-       happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))-       where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts))-             drop_stk = happyDropStk k stk--             off    = indexShortOffAddr happyGotoOffsets st1-             off_i  = (off +# nt)-             new_state = indexShortOffAddr happyTable off_i-----happyDrop 0# l = l-happyDrop n (HappyCons (_) (t)) = happyDrop (n -# (1# :: Int#)) t--happyDropStk 0# l = l-happyDropStk n (x `HappyStk` xs) = happyDropStk (n -# (1#::Int#)) xs---------------------------------------------------------------------------------- Moving to a new state after a reduction---happyGoto nt j tk st = -   {- nothing -}-   happyDoAction j tk new_state-   where off    = indexShortOffAddr happyGotoOffsets st-	 off_i  = (off +# nt)- 	 new_state = indexShortOffAddr happyTable off_i------------------------------------------------------------------------------------- Error recovery (0# is the error token)---- parse error if we are in recovery and we fail again-happyFail  0# tk old_st _ stk =---	trace "failing" $ -    	happyError_ tk--{-  We don't need state discarding for our restricted implementation of-    "error".  In fact, it can cause some bogus parses, so I've disabled it-    for now --SDM---- discard a state-happyFail  0# tk old_st (HappyCons ((action)) (sts)) -						(saved_tok `HappyStk` _ `HappyStk` stk) =---	trace ("discarding state, depth " ++ show (length stk))  $-	happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))--}---- Enter error recovery: generate an error token,---                       save the old token and carry on.-happyFail  i tk (action) sts stk =---      trace "entering error recovery" $-	happyDoAction 0# tk action sts ( (unsafeCoerce# (I# (i))) `HappyStk` stk)---- Internal happy errors:--notHappyAtAll = error "Internal Happy error\n"---------------------------------------------------------------------------------- Hack to get the typechecker to accept our action functions---happyTcHack :: Int# -> a -> a-happyTcHack x y = y-{-# INLINE happyTcHack #-}----------------------------------------------------------------------------------- Seq-ing.  If the --strict flag is given, then Happy emits ---	happySeq = happyDoSeq--- otherwise it emits--- 	happySeq = happyDontSeq--happyDoSeq, happyDontSeq :: a -> b -> b-happyDoSeq   a b = a `seq` b-happyDontSeq a b = b---------------------------------------------------------------------------------- Don't inline any functions from the template.  GHC has a nasty habit--- of deciding to inline happyGoto everywhere, which increases the size of--- the generated parser quite a bit.---{-# NOINLINE happyDoAction #-}-{-# NOINLINE happyTable #-}-{-# NOINLINE happyCheck #-}-{-# NOINLINE happyActOffsets #-}-{-# NOINLINE happyGotoOffsets #-}-{-# NOINLINE happyDefActions #-}--{-# NOINLINE happyShift #-}-{-# NOINLINE happySpecReduce_0 #-}-{-# NOINLINE happySpecReduce_1 #-}-{-# NOINLINE happySpecReduce_2 #-}-{-# NOINLINE happySpecReduce_3 #-}-{-# NOINLINE happyReduce #-}-{-# NOINLINE happyMonadReduce #-}-{-# NOINLINE happyGoto #-}-{-# NOINLINE happyFail #-}---- end of Happy Template.
− src/Language/Core/Happy.y
@@ -1,23 +0,0 @@-{-module Language.Core.Happy where--import Language.Core.Parser (Pos, Token, lexer)--}--%name parseModule-%tokentype { Token }-%error { parseError }---%%--Module :                  { undefined }--{--parseError _ = error "parse error"---}-
src/Language/Core/Parser.hs view
@@ -1,9 +1,6 @@ {-# LANGUAGE NoMonomorphismRestriction, PatternGuards #-} module Language.Core.Parser     ( parseModule-    , Pos(..)-    , Token(..)-    , lexer     ) where  import Data.Char@@ -269,13 +266,13 @@            t <- ty            return (Lchar c t)       , try $ parens $-        do m <- optional (matchToken Dash)+        do m <- option id (matchToken Dash >> return negate)            ds <- number            matchToken DColon            t <- ty-           return (Lint ds t)+           return (Lint (m ds) t)       , try $ parens $-        do n <- number <|> parens (matchToken Dash >> number)+        do n <- number <|> parens (matchToken Dash >> liftM negate number)            matchToken Percent            d <- number            matchToken DColon