pretty-show-1.2/0000755000000000000000000000000011706151300012041 5ustar0000000000000000pretty-show-1.2/pretty-show.cabal0000644000000000000000000000304711706151300015336 0ustar0000000000000000name: pretty-show version: 1.2 category: Text synopsis: Tools for working with derived Show instances. description: We provide a library and an executable for working with derived 'Show' instances. By using the library, we can parse derived 'Show' instances into a generic data structure. The @ppsh@ tool uses the library to produce human-readable versions of 'Show' instances, which can be quite handy for debugging Haskell programs. license: BSD3 license-file: LICENSE author: Iavor S. Diatchki maintainer: iavor.diatchki@gmail.com homepage: http://wiki.github.com/yav/pretty-show cabal-version: >= 1.2 build-type: Simple library exposed-modules: Text.Show.Pretty other-modules: Text.Show.Parser Text.Show.Value Text.Show.DateTime build-depends: array >= 0.2 && < 2, base >= 3 && < 5, haskell-lexer >= 1 && < 2, pretty >= 1 && < 2 ghc-options: -Wall source-repository head type: git location: git://github.com/yav/pretty-show.git executable ppsh main-is: ppsh.hs -- Silly. Our real dependency is on 'pretty-show'. other-modules: Text.Show.Parser Text.Show.Pretty Text.Show.Value Text.Show.DateTime build-depends: array >= 0.2 && < 2, base >= 3 && < 5, haskell-lexer >= 1 && < 2, pretty >= 1 && < 2 ghc-options: -Wall source-repository head type: git location: git://github.com/yav/pretty-show.git pretty-show-1.2/LICENSE0000644000000000000000000000204511706151277013064 0ustar0000000000000000Copyright (c) 2008 Iavor S. Diatchki Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. pretty-show-1.2/Setup.lhs0000644000000000000000000000021311706151300013645 0ustar0000000000000000#! /usr/bin/env runhaskell > module Main (main) where > > import Distribution.Simple (defaultMain) > > main :: IO () > main = defaultMain pretty-show-1.2/ppsh.hs0000644000000000000000000000374611706151277013376 0ustar0000000000000000import Text.Show.Pretty import System.Environment import System.IO(hPutStrLn,stderr) main :: IO () main = do as <- getArgs case as of ["--test"] -> interactLn (show . selftest1) ["--html"] -> do txt <- getContents case parseValue txt of Just v -> putStrLn (html v) Nothing -> hPutStrLn stderr "Failed to parse value." [] -> interactLn $ \s -> case parseValue s of Just v -> show (ppValue v) Nothing -> s _ -> hPutStrLn stderr $ unlines [ "usage: ppsh < showed_value > pretty_value" , " --html Generate HTML." , " --test Self test: True means we passed." ] interactLn :: (String -> String) -> IO () interactLn f = interact f >> putStrLn "" selftest :: Value -> Bool selftest v = case parseValue $ show $ ppValue v of Just v1 -> v1 == v Nothing -> False selftest1 :: String -> Bool selftest1 txt = case parseValue txt of Just v -> selftest v Nothing -> True html :: Value -> String html val = case val of Con n xs -> node "con" (name n : map html xs) Rec n xs -> node "rec" (name n : map field xs) Tuple xs -> node "tuple" (map html xs) List xs -> node "list" (map html xs) Neg x -> node "neg" [ html x ] Ratio x y -> node "ratio" [ html x, html y ] Integer x -> leaf "integer" x Float x -> leaf "float" x Char x -> leaf "char" x String x -> leaf "string" x where name = leaf "name" field (x,v) = node "field" [ name x, html v ] leaf c txt = "
" ++ concatMap esc txt ++ "
" node c els = "
" ++ concat els ++ "
" esc c = case c of '<' -> "<" '>' -> ">" '&' -> "&" '\''-> "'" '"' -> """ _ -> [c] pretty-show-1.2/Text/0000755000000000000000000000000011706151277013002 5ustar0000000000000000pretty-show-1.2/Text/Show/0000755000000000000000000000000011706151277013722 5ustar0000000000000000pretty-show-1.2/Text/Show/Parser.y0000644000000000000000000000661611706151277015361 0ustar0000000000000000{ -- We use these options because Happy generates code with a lot of warnings. {-# OPTIONS_GHC -w #-} module Text.Show.Parser (parseValue) where import Text.Show.Value import Language.Haskell.Lexer } %token '=' { (Reservedop, (_,"=")) } '(' { (Special, (_,"(")) } ')' { (Special, (_,")")) } '{' { (Special, (_,"{")) } '}' { (Special, (_,"}")) } '[' { (Special, (_,"[")) } ']' { (Special, (_,"]")) } ',' { (Special, (_,",")) } '-' { (Varsym, (_,"-")) } '%' { (Varsym, (_,"%")) } INT { (IntLit, (_,$$)) } FLOAT { (FloatLit, (_,$$)) } STRING { (StringLit, (_,$$)) } CHAR { (CharLit, (_,$$)) } VARID { (Varid, (_,$$)) } QVARID { (Qvarid, (_,$$)) } VARSYM { (Varsym, (_,$$)) } QVARSYM { (Qvarsym, (_,$$)) } CONID { (Conid, (_,$$)) } QCONID { (Qconid, (_,$$)) } CONSYM { (Consym, (_,$$)) } QCONSYM { (Qconsym, (_,$$)) } %monad { Maybe } { (>>=) } { return } %name parseValue value %tokentype { PosToken } %% value :: { Value } : value '%' app_value { Ratio $1 $3 } | '-' avalue { Neg $2 } | app_value { $1 } app_value :: { Value } : con list1(avalue) { Con $1 $2 } | avalue { $1 } avalue :: { Value } : '(' value ')' { $2 } | '[' sep(value,',') ']' { List $2 } | '(' tuple ')' { Tuple $2 } | con '{' sep(field,',') '}' { Rec $1 $3 } | con { Con $1 [] } | INT { Integer $1 } | FLOAT { Float $1 } | STRING { String $1 } | CHAR { Char $1 } con :: { String } : CONID { $1 } | QCONID { $1 } | prefix(CONSYM) { $1 } | prefix(QCONSYM) { $1 } -- to support things like "fromList x" | VARID { $1 } | QVARID { $1 } | prefix(VARSYM) { $1 } | prefix(QVARSYM) { $1 } field :: { (Name,Value) } : VARID '=' value { ($1,$3) } tuple :: { [Value] } : { [] } | value ',' sep1(value,',') { $1 : $3 } -- Common Rule Patterns -------------------------------------------------------- prefix(p) : '(' p ')' { "(" ++ $2 ++ ")" } sep1(p,q) : p list(snd(q,p)) { $1 : $2 } sep(p,q) : sep1(p,q) { $1 } | { [] } snd(p,q) : p q { $2 } list1(p) : rev_list1(p) { reverse $1 } list(p) : list1(p) { $1 } | { [] } rev_list1(p) : p { [$1] } | rev_list1(p) p { $2 : $1 } { happyError :: [PosToken] -> Maybe a happyError ((_,(p,_)) : _) = Nothing -- error ("Parser error at: " ++ show p) happyError [] = Nothing -- error ("Parser error at EOF") } pretty-show-1.2/Text/Show/DateTime.hs0000644000000000000000000000350111706151277015751 0ustar0000000000000000-- | This module provides some support for recognizing various date -- formats used by the 'time' package. Clearly, this is a bit of a hack -- but we try to be helpful. module Text.Show.DateTime (parseDateTime) where import Language.Haskell.Lexer(Token(..), PosToken, lexerPass0) parseDateTime :: [PosToken] -> [PosToken] parseDateTime inp = case date inp of Just (x@(tok,(p,d)), (y@(Whitespace,(_," ")) : rest)) -> case time rest of Just ((_,(_,t)), rest1) -> (tok, (p, d ++ t)) : parseDateTime rest1 Nothing -> x : y : parseDateTime rest Just (x, rest) -> x : parseDateTime rest Nothing -> case time inp of Just (x, rest) -> x : parseDateTime rest Nothing -> case timeDiff inp of Just (x, rest) -> x : parseDateTime rest Nothing -> case inp of x : xs -> x : parseDateTime xs [] -> [] where date ( (IntLit,(p,y)) : (Varsym,(_,"-")) : (IntLit,(_,m)) : (Varsym,(_,"-")) : (IntLit,(_,d)) : rest ) = Just ((StringLit, (p, y ++ "-" ++ m ++ "-" ++ d)), rest) date _ = Nothing time ( (IntLit,(p,h)) : (Reservedop,(_,":")) : (IntLit,(_,m)) : (Reservedop,(_,":")) : (mbSecs,(_,s)) : rest ) | mbSecs == IntLit || mbSecs == FloatLit = Just ((StringLit, (p,h ++ ":" ++ m ++ ":" ++ s ++ tz)), rest1) where (tz,rest1) = timezone rest time _ = Nothing timezone ((Whitespace,(_," ")) : (Conid,(_,c)) : rest) = (" " ++ c, rest) timezone xs = ("", xs) timeDiff ((mbLen,(p,h)) : (Varid,(_,"s")) : rest) | mbLen == IntLit || mbLen == FloatLit = Just ((StringLit, (p, h ++ "s")), rest) timeDiff _ = Nothing test x = mapM_ print $ parseDateTime $ lexerPass0 x pretty-show-1.2/Text/Show/Value.hs0000644000000000000000000000245411706151277015337 0ustar0000000000000000-------------------------------------------------------------------------------- -- | -- Module : Text.Show.Value -- Copyright : (c) Iavor S. Diatchki 2009 -- License : BSD3 -- -- Maintainer : iavor.diatchki@gmail.com -- Stability : provisional -- Portability : Haskell 98 -- -- Generic representation of Showable values. -------------------------------------------------------------------------------- module Text.Show.Value ( Name, Value(..) ) where -- | A name. type Name = String -- | Generic Haskell values. -- 'NaN' and 'Infinity' are represented as constructors. -- The 'String' in the literals is the text for the literals \"as is\". data Value = Con Name [Value] -- ^ Data constructor | Rec Name [ (Name,Value) ] -- ^ Record value | Tuple [Value] -- ^ Tuple | List [Value] -- ^ List | Neg Value -- ^ Negated value | Ratio Value Value -- ^ Rational | Integer String -- ^ Non-negative integer | Float String -- ^ Non-negative floating num. | Char String -- ^ Character | String String -- ^ String deriving (Eq,Show) pretty-show-1.2/Text/Show/Pretty.hs0000644000000000000000000000543011706151277015547 0ustar0000000000000000-------------------------------------------------------------------------------- -- | -- Module : Text.Show.Pretty -- Copyright : (c) Iavor S. Diatchki 2009 -- License : BSD3 -- -- Maintainer : iavor.diatchki@gmail.com -- Stability : provisional -- Portability : Haskell 98 -- -- Functions for human-readable derived 'Show' instances. -------------------------------------------------------------------------------- module Text.Show.Pretty ( Name, Value(..) , parseValue, reify, ppValue, ppDoc, ppShow ) where import Text.PrettyPrint import qualified Text.Show.Parser as P import Text.Show.Value import Text.Show.DateTime import Language.Haskell.Lexer(rmSpace,lexerPass0) reify :: Show a => a -> Maybe Value reify = parseValue . show parseValue :: String -> Maybe Value parseValue = P.parseValue . rmSpace . parseDateTime . lexerPass0 -- | Convert a generic value into a pretty 'String', if possible. ppShow :: Show a => a -> String ppShow = show . ppDoc -- | Try to show a value, prettily. If we do not understand the value, then we -- just use its standard 'Show' instance. ppDoc :: Show a => a -> Doc ppDoc a = case parseValue txt of Just v -> ppValue v Nothing -> text txt where txt = show a -- | Pretty print a generic value. Our intention is that the result is -- equivalent to the 'Show' instance for the original value, except possibly -- easier to understand by a human. ppValue :: Value -> Doc ppValue val = case val of Con c vs -> ppCon c vs Rec c fs -> hang (text c) 2 $ block '{' '}' (map ppField fs) where ppField (x,v) = text x <+> char '=' <+> ppValue v List vs -> block '[' ']' (map ppValue vs) Tuple vs -> block '(' ')' (map ppValue vs) Neg v -> char '-' <> ppAtom v Ratio x y -> ppCon "(%)" [x,y] Integer x -> text x Float x -> text x Char x -> text x String x -> text x -- Private --------------------------------------------------------------------- ppAtom :: Value -> Doc ppAtom v | isAtom v = ppValue v | otherwise = parens (ppValue v) ppCon :: Name -> [Value] -> Doc ppCon c [] = text c ppCon c (v : vs) = hang line1 2 (foldl addParam doc1 vs) where (line1,doc1) | isAtom v = (text c, ppValue v) | otherwise = (text c <+> char '(', ppValue v <+> char ')') addParam d p | isAtom p = d $$ ppValue p | otherwise = (d <+> char '(') $$ (ppValue p <+> char ')') isAtom :: Value -> Bool isAtom (Con _ (_:_)) = False isAtom (Ratio {}) = False isAtom (Neg {}) = False isAtom _ = True block :: Char -> Char -> [Doc] -> Doc block a b [] = char a <> char b block a b (d:ds) = char a <+> d $$ vcat [ char ',' <+> x | x <- ds ] $$ char b pretty-show-1.2/dist/0000755000000000000000000000000011706151277013021 5ustar0000000000000000pretty-show-1.2/dist/build/0000755000000000000000000000000011706151277014120 5ustar0000000000000000pretty-show-1.2/dist/build/ppsh/0000755000000000000000000000000011706151277015072 5ustar0000000000000000pretty-show-1.2/dist/build/ppsh/ppsh-tmp/0000755000000000000000000000000011706151277016642 5ustar0000000000000000pretty-show-1.2/dist/build/ppsh/ppsh-tmp/Text/0000755000000000000000000000000011706151277017566 5ustar0000000000000000pretty-show-1.2/dist/build/ppsh/ppsh-tmp/Text/Show/0000755000000000000000000000000011706151300020471 5ustar0000000000000000pretty-show-1.2/dist/build/ppsh/ppsh-tmp/Text/Show/Parser.hs0000644000000000000000000010761211706151300022270 0ustar0000000000000000{-# OPTIONS_GHC -w #-} {-# OPTIONS -fglasgow-exts -cpp #-} -- We use these options because Happy generates code with a lot of warnings. {-# OPTIONS_GHC -w #-} module Text.Show.Parser (parseValue) where import Text.Show.Value import Language.Haskell.Lexer import qualified Data.Array as Happy_Data_Array import qualified GHC.Exts as Happy_GHC_Exts -- parser produced by Happy Version 1.18.6 newtype HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 = HappyAbsSyn HappyAny #if __GLASGOW_HASKELL__ >= 607 type HappyAny = Happy_GHC_Exts.Any #else type HappyAny = forall a . a #endif happyIn4 :: (Value) -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn4 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn4 #-} happyOut4 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> (Value) happyOut4 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut4 #-} happyIn5 :: (Value) -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn5 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn5 #-} happyOut5 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> (Value) happyOut5 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut5 #-} happyIn6 :: (Value) -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn6 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn6 #-} happyOut6 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> (Value) happyOut6 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut6 #-} happyIn7 :: (String) -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn7 #-} happyOut7 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> (String) happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut7 #-} happyIn8 :: ((Name,Value)) -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn8 #-} happyOut8 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> ((Name,Value)) happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut8 #-} happyIn9 :: ([Value]) -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn9 #-} happyOut9 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> ([Value]) happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut9 #-} happyIn10 :: t10 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn10 #-} happyOut10 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t10 happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut10 #-} happyIn11 :: t11 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn11 #-} happyOut11 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t11 happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut11 #-} happyIn12 :: t12 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn12 #-} happyOut12 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t12 happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut12 #-} happyIn13 :: t13 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn13 #-} happyOut13 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t13 happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut13 #-} happyIn14 :: t14 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn14 #-} happyOut14 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t14 happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut14 #-} happyIn15 :: t15 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn15 #-} happyOut15 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t15 happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut15 #-} happyIn16 :: t16 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn16 #-} happyOut16 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t16 happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut16 #-} happyIn17 :: t17 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn17 #-} happyOut17 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t17 happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut17 #-} happyIn18 :: t18 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn18 #-} happyOut18 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t18 happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut18 #-} happyIn19 :: t19 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn19 #-} happyOut19 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t19 happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut19 #-} happyIn20 :: t20 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn20 #-} happyOut20 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t20 happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut20 #-} happyIn21 :: t21 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn21 #-} happyOut21 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t21 happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut21 #-} happyIn22 :: t22 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn22 #-} happyOut22 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t22 happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut22 #-} happyIn23 :: t23 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn23 #-} happyOut23 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t23 happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut23 #-} happyIn24 :: t24 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn24 #-} happyOut24 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t24 happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut24 #-} happyIn25 :: t25 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn25 #-} happyOut25 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t25 happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut25 #-} happyIn26 :: t26 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn26 #-} happyOut26 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t26 happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut26 #-} happyIn27 :: t27 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn27 #-} happyOut27 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t27 happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut27 #-} happyInTok :: (PosToken) -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyInTok x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyInTok #-} happyOutTok :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> (PosToken) happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOutTok #-} happyActOffsets :: HappyAddr happyActOffsets = HappyA# "\x36\x00\x36\x00\x4c\x00\x00\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x14\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x45\x00\x00\x00\x44\x00\x0f\x00\x32\x00\x00\x00\xd5\x00\x4a\x00\x49\x00\x3d\x00\x3b\x00\x3a\x00\x00\x00\x00\x00\x45\x00\x22\x00\x28\x00\x2a\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x14\x00\x00\x00\x20\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x17\x00\x00\x00\x00\x00\x12\x00\x00\x00"# happyGotoOffsets :: HappyAddr happyGotoOffsets = HappyA# "\xaf\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x5a\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x72\x00\xf2\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x00"# happyDefActions :: HappyAddr happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\xfc\xff\xfa\xff\xf5\xff\xee\xff\xed\xff\xe9\xff\xea\xff\xe7\xff\xdd\xff\x00\x00\xf4\xff\xf3\xff\xf2\xff\xf1\xff\xec\xff\xeb\xff\xf0\xff\xef\xff\x00\x00\x00\x00\xfd\xff\xf5\xff\xda\xff\x00\x00\xde\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\xfb\xff\xe5\xff\xdf\xff\xd4\xff\x00\x00\xe0\xff\x00\x00\xd8\xff\xe3\xff\xe4\xff\xe2\xff\xe1\xff\xf7\xff\xf9\xff\x00\x00\xf8\xff\xdc\xff\xd0\xff\xdb\xff\xd3\xff\x00\x00\xfe\xff\xd6\xff\xcf\xff\xe6\xff\x00\x00\xf6\xff\xd7\xff\xce\xff\xd5\xff\xd1\xff\x00\x00\xd2\xff\xcd\xff\xe8\xff"# happyCheck :: HappyAddr happyCheck = HappyA# "\xff\xff\x02\x00\x04\x00\x14\x00\x12\x00\x06\x00\x14\x00\x15\x00\x09\x00\x17\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x02\x00\x08\x00\x0a\x00\x0a\x00\x06\x00\x11\x00\x0a\x00\x09\x00\x08\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x17\x00\x0f\x00\x13\x00\x14\x00\x02\x00\x0a\x00\x04\x00\x08\x00\x06\x00\x01\x00\x05\x00\x08\x00\x0f\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x02\x00\x07\x00\x13\x00\x14\x00\x06\x00\x03\x00\x03\x00\x09\x00\x03\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x02\x00\x04\x00\x13\x00\x14\x00\x06\x00\x03\x00\x03\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x0a\x00\xff\xff\x13\x00\x14\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\xff\xff\x0c\x00\x0d\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x02\x00\x03\x00\x0d\x00\x04\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xff\xff\x0b\x00\xff\xff\xff\xff\x0f\x00\xff\xff\x10\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x05\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0e\x00\xff\xff\x03\x00\x11\x00\xff\xff\x13\x00\xff\xff\x08\x00\x16\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# happyTable :: HappyAddr happyTable = HappyA# "\x00\x00\x0b\x00\x43\x00\x44\x00\x3e\x00\x0c\x00\x3f\x00\x40\x00\x0d\x00\x41\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x1f\x00\x20\x00\x14\x00\x15\x00\x21\x00\x22\x00\x0b\x00\x38\x00\x17\x00\x17\x00\x0c\x00\x3a\x00\x17\x00\x0d\x00\x43\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\x2a\x00\x14\x00\x15\x00\x0b\x00\x17\x00\x26\x00\x38\x00\x0c\x00\x3d\x00\x3e\x00\x43\x00\x2a\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x0b\x00\x33\x00\x14\x00\x15\x00\x0c\x00\x2c\x00\x2d\x00\x0d\x00\x2e\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x0b\x00\x26\x00\x14\x00\x15\x00\x0c\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x17\x00\x00\x00\x14\x00\x15\x00\x19\x00\x03\x00\x04\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x00\x00\x1a\x00\x1b\x00\x19\x00\x03\x00\x04\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x22\x00\x18\x00\x3b\x00\x26\x00\x23\x00\x06\x00\x07\x00\x08\x00\x09\x00\x00\x00\x27\x00\x00\x00\x00\x00\x24\x00\x00\x00\x28\x00\x1c\x00\x03\x00\x04\x00\x05\x00\x00\x00\x1d\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x45\x00\x03\x00\x04\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x39\x00\x03\x00\x04\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x02\x00\x03\x00\x04\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x15\x00\x03\x00\x04\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x38\x00\x04\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x2a\x00\x18\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x33\x00\x00\x00\x31\x00\x34\x00\x00\x00\x35\x00\x00\x00\x32\x00\x36\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# happyReduceArr = Happy_Data_Array.array (1, 50) [ (1 , happyReduce_1), (2 , happyReduce_2), (3 , happyReduce_3), (4 , happyReduce_4), (5 , happyReduce_5), (6 , happyReduce_6), (7 , happyReduce_7), (8 , happyReduce_8), (9 , happyReduce_9), (10 , happyReduce_10), (11 , happyReduce_11), (12 , happyReduce_12), (13 , happyReduce_13), (14 , happyReduce_14), (15 , happyReduce_15), (16 , happyReduce_16), (17 , happyReduce_17), (18 , happyReduce_18), (19 , happyReduce_19), (20 , happyReduce_20), (21 , happyReduce_21), (22 , happyReduce_22), (23 , happyReduce_23), (24 , happyReduce_24), (25 , happyReduce_25), (26 , happyReduce_26), (27 , happyReduce_27), (28 , happyReduce_28), (29 , happyReduce_29), (30 , happyReduce_30), (31 , happyReduce_31), (32 , happyReduce_32), (33 , happyReduce_33), (34 , happyReduce_34), (35 , happyReduce_35), (36 , happyReduce_36), (37 , happyReduce_37), (38 , happyReduce_38), (39 , happyReduce_39), (40 , happyReduce_40), (41 , happyReduce_41), (42 , happyReduce_42), (43 , happyReduce_43), (44 , happyReduce_44), (45 , happyReduce_45), (46 , happyReduce_46), (47 , happyReduce_47), (48 , happyReduce_48), (49 , happyReduce_49), (50 , happyReduce_50) ] happy_n_terms = 24 :: Int happy_n_nonterms = 24 :: Int happyReduce_1 = happySpecReduce_3 0# happyReduction_1 happyReduction_1 happy_x_3 happy_x_2 happy_x_1 = case happyOut4 happy_x_1 of { happy_var_1 -> case happyOut5 happy_x_3 of { happy_var_3 -> happyIn4 (Ratio happy_var_1 happy_var_3 )}} happyReduce_2 = happySpecReduce_2 0# happyReduction_2 happyReduction_2 happy_x_2 happy_x_1 = case happyOut6 happy_x_2 of { happy_var_2 -> happyIn4 (Neg happy_var_2 )} happyReduce_3 = happySpecReduce_1 0# happyReduction_3 happyReduction_3 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> happyIn4 (happy_var_1 )} happyReduce_4 = happySpecReduce_2 1# happyReduction_4 happyReduction_4 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> case happyOut10 happy_x_2 of { happy_var_2 -> happyIn5 (Con happy_var_1 happy_var_2 )}} happyReduce_5 = happySpecReduce_1 1# happyReduction_5 happyReduction_5 happy_x_1 = case happyOut6 happy_x_1 of { happy_var_1 -> happyIn5 (happy_var_1 )} happyReduce_6 = happySpecReduce_3 2# happyReduction_6 happyReduction_6 happy_x_3 happy_x_2 happy_x_1 = case happyOut4 happy_x_2 of { happy_var_2 -> happyIn6 (happy_var_2 )} happyReduce_7 = happySpecReduce_3 2# happyReduction_7 happyReduction_7 happy_x_3 happy_x_2 happy_x_1 = case happyOut16 happy_x_2 of { happy_var_2 -> happyIn6 (List happy_var_2 )} happyReduce_8 = happySpecReduce_3 2# happyReduction_8 happyReduction_8 happy_x_3 happy_x_2 happy_x_1 = case happyOut9 happy_x_2 of { happy_var_2 -> happyIn6 (Tuple happy_var_2 )} happyReduce_9 = happyReduce 4# 2# happyReduction_9 happyReduction_9 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut7 happy_x_1 of { happy_var_1 -> case happyOut15 happy_x_3 of { happy_var_3 -> happyIn6 (Rec happy_var_1 happy_var_3 ) `HappyStk` happyRest}} happyReduce_10 = happySpecReduce_1 2# happyReduction_10 happyReduction_10 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn6 (Con happy_var_1 [] )} happyReduce_11 = happySpecReduce_1 2# happyReduction_11 happyReduction_11 happy_x_1 = case happyOutTok happy_x_1 of { ((IntLit, (_,happy_var_1))) -> happyIn6 (Integer happy_var_1 )} happyReduce_12 = happySpecReduce_1 2# happyReduction_12 happyReduction_12 happy_x_1 = case happyOutTok happy_x_1 of { ((FloatLit, (_,happy_var_1))) -> happyIn6 (Float happy_var_1 )} happyReduce_13 = happySpecReduce_1 2# happyReduction_13 happyReduction_13 happy_x_1 = case happyOutTok happy_x_1 of { ((StringLit, (_,happy_var_1))) -> happyIn6 (String happy_var_1 )} happyReduce_14 = happySpecReduce_1 2# happyReduction_14 happyReduction_14 happy_x_1 = case happyOutTok happy_x_1 of { ((CharLit, (_,happy_var_1))) -> happyIn6 (Char happy_var_1 )} happyReduce_15 = happySpecReduce_1 3# happyReduction_15 happyReduction_15 happy_x_1 = case happyOutTok happy_x_1 of { ((Conid, (_,happy_var_1))) -> happyIn7 (happy_var_1 )} happyReduce_16 = happySpecReduce_1 3# happyReduction_16 happyReduction_16 happy_x_1 = case happyOutTok happy_x_1 of { ((Qconid, (_,happy_var_1))) -> happyIn7 (happy_var_1 )} happyReduce_17 = happySpecReduce_1 3# happyReduction_17 happyReduction_17 happy_x_1 = case happyOut11 happy_x_1 of { happy_var_1 -> happyIn7 (happy_var_1 )} happyReduce_18 = happySpecReduce_1 3# happyReduction_18 happyReduction_18 happy_x_1 = case happyOut12 happy_x_1 of { happy_var_1 -> happyIn7 (happy_var_1 )} happyReduce_19 = happySpecReduce_1 3# happyReduction_19 happyReduction_19 happy_x_1 = case happyOutTok happy_x_1 of { ((Varid, (_,happy_var_1))) -> happyIn7 (happy_var_1 )} happyReduce_20 = happySpecReduce_1 3# happyReduction_20 happyReduction_20 happy_x_1 = case happyOutTok happy_x_1 of { ((Qvarid, (_,happy_var_1))) -> happyIn7 (happy_var_1 )} happyReduce_21 = happySpecReduce_1 3# happyReduction_21 happyReduction_21 happy_x_1 = case happyOut14 happy_x_1 of { happy_var_1 -> happyIn7 (happy_var_1 )} happyReduce_22 = happySpecReduce_1 3# happyReduction_22 happyReduction_22 happy_x_1 = case happyOut13 happy_x_1 of { happy_var_1 -> happyIn7 (happy_var_1 )} happyReduce_23 = happySpecReduce_3 4# happyReduction_23 happyReduction_23 happy_x_3 happy_x_2 happy_x_1 = case happyOutTok happy_x_1 of { ((Varid, (_,happy_var_1))) -> case happyOut4 happy_x_3 of { happy_var_3 -> happyIn8 ((happy_var_1,happy_var_3) )}} happyReduce_24 = happySpecReduce_0 5# happyReduction_24 happyReduction_24 = happyIn9 ([] ) happyReduce_25 = happySpecReduce_3 5# happyReduction_25 happyReduction_25 happy_x_3 happy_x_2 happy_x_1 = case happyOut4 happy_x_1 of { happy_var_1 -> case happyOut17 happy_x_3 of { happy_var_3 -> happyIn9 (happy_var_1 : happy_var_3 )}} happyReduce_26 = happySpecReduce_1 6# happyReduction_26 happyReduction_26 happy_x_1 = case happyOut19 happy_x_1 of { happy_var_1 -> happyIn10 (reverse happy_var_1 )} happyReduce_27 = happySpecReduce_3 7# happyReduction_27 happyReduction_27 happy_x_3 happy_x_2 happy_x_1 = case happyOutTok happy_x_2 of { ((Consym, (_,happy_var_2))) -> happyIn11 ("(" ++ happy_var_2 ++ ")" )} happyReduce_28 = happySpecReduce_3 8# happyReduction_28 happyReduction_28 happy_x_3 happy_x_2 happy_x_1 = case happyOutTok happy_x_2 of { ((Qconsym, (_,happy_var_2))) -> happyIn12 ("(" ++ happy_var_2 ++ ")" )} happyReduce_29 = happySpecReduce_3 9# happyReduction_29 happyReduction_29 happy_x_3 happy_x_2 happy_x_1 = case happyOutTok happy_x_2 of { ((Qvarsym, (_,happy_var_2))) -> happyIn13 ("(" ++ happy_var_2 ++ ")" )} happyReduce_30 = happySpecReduce_3 10# happyReduction_30 happyReduction_30 happy_x_3 happy_x_2 happy_x_1 = case happyOutTok happy_x_2 of { ((Varsym, (_,happy_var_2))) -> happyIn14 ("(" ++ happy_var_2 ++ ")" )} happyReduce_31 = happySpecReduce_1 11# happyReduction_31 happyReduction_31 happy_x_1 = case happyOut20 happy_x_1 of { happy_var_1 -> happyIn15 (happy_var_1 )} happyReduce_32 = happySpecReduce_0 11# happyReduction_32 happyReduction_32 = happyIn15 ([] ) happyReduce_33 = happySpecReduce_1 12# happyReduction_33 happyReduction_33 happy_x_1 = case happyOut17 happy_x_1 of { happy_var_1 -> happyIn16 (happy_var_1 )} happyReduce_34 = happySpecReduce_0 12# happyReduction_34 happyReduction_34 = happyIn16 ([] ) happyReduce_35 = happySpecReduce_2 13# happyReduction_35 happyReduction_35 happy_x_2 happy_x_1 = case happyOut4 happy_x_1 of { happy_var_1 -> case happyOut18 happy_x_2 of { happy_var_2 -> happyIn17 (happy_var_1 : happy_var_2 )}} happyReduce_36 = happySpecReduce_1 14# happyReduction_36 happyReduction_36 happy_x_1 = case happyOut23 happy_x_1 of { happy_var_1 -> happyIn18 (happy_var_1 )} happyReduce_37 = happySpecReduce_0 14# happyReduction_37 happyReduction_37 = happyIn18 ([] ) happyReduce_38 = happySpecReduce_1 15# happyReduction_38 happyReduction_38 happy_x_1 = case happyOut6 happy_x_1 of { happy_var_1 -> happyIn19 ([happy_var_1] )} happyReduce_39 = happySpecReduce_2 15# happyReduction_39 happyReduction_39 happy_x_2 happy_x_1 = case happyOut19 happy_x_1 of { happy_var_1 -> case happyOut6 happy_x_2 of { happy_var_2 -> happyIn19 (happy_var_2 : happy_var_1 )}} happyReduce_40 = happySpecReduce_2 16# happyReduction_40 happyReduction_40 happy_x_2 happy_x_1 = case happyOut8 happy_x_1 of { happy_var_1 -> case happyOut22 happy_x_2 of { happy_var_2 -> happyIn20 (happy_var_1 : happy_var_2 )}} happyReduce_41 = happySpecReduce_2 17# happyReduction_41 happyReduction_41 happy_x_2 happy_x_1 = case happyOut4 happy_x_2 of { happy_var_2 -> happyIn21 (happy_var_2 )} happyReduce_42 = happySpecReduce_1 18# happyReduction_42 happyReduction_42 happy_x_1 = case happyOut25 happy_x_1 of { happy_var_1 -> happyIn22 (happy_var_1 )} happyReduce_43 = happySpecReduce_0 18# happyReduction_43 happyReduction_43 = happyIn22 ([] ) happyReduce_44 = happySpecReduce_1 19# happyReduction_44 happyReduction_44 happy_x_1 = case happyOut26 happy_x_1 of { happy_var_1 -> happyIn23 (reverse happy_var_1 )} happyReduce_45 = happySpecReduce_2 20# happyReduction_45 happyReduction_45 happy_x_2 happy_x_1 = case happyOut8 happy_x_2 of { happy_var_2 -> happyIn24 (happy_var_2 )} happyReduce_46 = happySpecReduce_1 21# happyReduction_46 happyReduction_46 happy_x_1 = case happyOut27 happy_x_1 of { happy_var_1 -> happyIn25 (reverse happy_var_1 )} happyReduce_47 = happySpecReduce_1 22# happyReduction_47 happyReduction_47 happy_x_1 = case happyOut21 happy_x_1 of { happy_var_1 -> happyIn26 ([happy_var_1] )} happyReduce_48 = happySpecReduce_2 22# happyReduction_48 happyReduction_48 happy_x_2 happy_x_1 = case happyOut26 happy_x_1 of { happy_var_1 -> case happyOut21 happy_x_2 of { happy_var_2 -> happyIn26 (happy_var_2 : happy_var_1 )}} happyReduce_49 = happySpecReduce_1 23# happyReduction_49 happyReduction_49 happy_x_1 = case happyOut24 happy_x_1 of { happy_var_1 -> happyIn27 ([happy_var_1] )} happyReduce_50 = happySpecReduce_2 23# happyReduction_50 happyReduction_50 happy_x_2 happy_x_1 = case happyOut27 happy_x_1 of { happy_var_1 -> case happyOut24 happy_x_2 of { happy_var_2 -> happyIn27 (happy_var_2 : happy_var_1 )}} happyNewToken action sts stk [] = happyDoAction 23# notHappyAtAll action sts stk [] happyNewToken action sts stk (tk:tks) = let cont i = happyDoAction i tk action sts stk tks in case tk of { (Reservedop, (_,"=")) -> cont 1#; (Special, (_,"(")) -> cont 2#; (Special, (_,")")) -> cont 3#; (Special, (_,"{")) -> cont 4#; (Special, (_,"}")) -> cont 5#; (Special, (_,"[")) -> cont 6#; (Special, (_,"]")) -> cont 7#; (Special, (_,",")) -> cont 8#; (Varsym, (_,"-")) -> cont 9#; (Varsym, (_,"%")) -> cont 10#; (IntLit, (_,happy_dollar_dollar)) -> cont 11#; (FloatLit, (_,happy_dollar_dollar)) -> cont 12#; (StringLit, (_,happy_dollar_dollar)) -> cont 13#; (CharLit, (_,happy_dollar_dollar)) -> cont 14#; (Varid, (_,happy_dollar_dollar)) -> cont 15#; (Qvarid, (_,happy_dollar_dollar)) -> cont 16#; (Varsym, (_,happy_dollar_dollar)) -> cont 17#; (Qvarsym, (_,happy_dollar_dollar)) -> cont 18#; (Conid, (_,happy_dollar_dollar)) -> cont 19#; (Qconid, (_,happy_dollar_dollar)) -> cont 20#; (Consym, (_,happy_dollar_dollar)) -> cont 21#; (Qconsym, (_,happy_dollar_dollar)) -> cont 22#; _ -> happyError' (tk:tks) } happyError_ tk tks = happyError' (tk:tks) happyThen :: () => Maybe a -> (a -> Maybe b) -> Maybe b happyThen = ((>>=)) happyReturn :: () => a -> Maybe a happyReturn = (return) happyThen1 m k tks = ((>>=)) m (\a -> k a tks) happyReturn1 :: () => a -> b -> Maybe a happyReturn1 = \a tks -> (return) a happyError' :: () => [(PosToken)] -> Maybe a happyError' = happyError parseValue tks = happySomeParser where happySomeParser = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut4 x)) happySeq = happyDontSeq happyError :: [PosToken] -> Maybe a happyError ((_,(p,_)) : _) = Nothing -- error ("Parser error at: " ++ show p) happyError [] = Nothing -- error ("Parser error at EOF") {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "" #-} {-# LINE 1 "" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-} -- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp {-# LINE 30 "templates/GenericTemplate.hs" #-} data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList {-# LINE 51 "templates/GenericTemplate.hs" #-} {-# LINE 61 "templates/GenericTemplate.hs" #-} {-# LINE 70 "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 Happy_GHC_Exts.<# (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) = indexShortOffAddr happyActOffsets st (off_i) = (off Happy_GHC_Exts.+# i) check = if (off_i Happy_GHC_Exts.>=# (0# :: Happy_GHC_Exts.Int#)) then (indexShortOffAddr happyCheck off_i Happy_GHC_Exts.==# i) else False (action) | check = indexShortOffAddr happyTable off_i | otherwise = indexShortOffAddr happyDefActions st {-# LINE 130 "templates/GenericTemplate.hs" #-} indexShortOffAddr (HappyA# arr) off = Happy_GHC_Exts.narrow16Int# i where i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low) high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#))) low = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off')) off' = off Happy_GHC_Exts.*# 2# data HappyAddr = HappyA# Happy_GHC_Exts.Addr# ----------------------------------------------------------------------------- -- HappyState data type (not arrays) {-# LINE 163 "templates/GenericTemplate.hs" #-} ----------------------------------------------------------------------------- -- Shifting a token happyShift new_state 0# tk st sts stk@(x `HappyStk` _) = let (i) = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.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 Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.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 Happy_GHC_Exts.+# nt) (new_state) = indexShortOffAddr happyTable off_i happyDrop 0# l = l happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t happyDropStk 0# l = l happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.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 Happy_GHC_Exts.+# 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 ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk) -- Internal happy errors: notHappyAtAll :: a notHappyAtAll = error "Internal Happy error\n" ----------------------------------------------------------------------------- -- Hack to get the typechecker to accept our action functions happyTcHack :: Happy_GHC_Exts.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. pretty-show-1.2/dist/build/Text/0000755000000000000000000000000011706151277015044 5ustar0000000000000000pretty-show-1.2/dist/build/Text/Show/0000755000000000000000000000000011706151277015764 5ustar0000000000000000pretty-show-1.2/dist/build/Text/Show/Parser.hs0000644000000000000000000010761211706151277017563 0ustar0000000000000000{-# OPTIONS_GHC -w #-} {-# OPTIONS -fglasgow-exts -cpp #-} -- We use these options because Happy generates code with a lot of warnings. {-# OPTIONS_GHC -w #-} module Text.Show.Parser (parseValue) where import Text.Show.Value import Language.Haskell.Lexer import qualified Data.Array as Happy_Data_Array import qualified GHC.Exts as Happy_GHC_Exts -- parser produced by Happy Version 1.18.6 newtype HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 = HappyAbsSyn HappyAny #if __GLASGOW_HASKELL__ >= 607 type HappyAny = Happy_GHC_Exts.Any #else type HappyAny = forall a . a #endif happyIn4 :: (Value) -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn4 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn4 #-} happyOut4 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> (Value) happyOut4 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut4 #-} happyIn5 :: (Value) -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn5 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn5 #-} happyOut5 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> (Value) happyOut5 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut5 #-} happyIn6 :: (Value) -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn6 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn6 #-} happyOut6 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> (Value) happyOut6 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut6 #-} happyIn7 :: (String) -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn7 #-} happyOut7 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> (String) happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut7 #-} happyIn8 :: ((Name,Value)) -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn8 #-} happyOut8 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> ((Name,Value)) happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut8 #-} happyIn9 :: ([Value]) -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn9 #-} happyOut9 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> ([Value]) happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut9 #-} happyIn10 :: t10 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn10 #-} happyOut10 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t10 happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut10 #-} happyIn11 :: t11 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn11 #-} happyOut11 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t11 happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut11 #-} happyIn12 :: t12 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn12 #-} happyOut12 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t12 happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut12 #-} happyIn13 :: t13 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn13 #-} happyOut13 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t13 happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut13 #-} happyIn14 :: t14 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn14 #-} happyOut14 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t14 happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut14 #-} happyIn15 :: t15 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn15 #-} happyOut15 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t15 happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut15 #-} happyIn16 :: t16 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn16 #-} happyOut16 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t16 happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut16 #-} happyIn17 :: t17 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn17 #-} happyOut17 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t17 happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut17 #-} happyIn18 :: t18 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn18 #-} happyOut18 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t18 happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut18 #-} happyIn19 :: t19 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn19 #-} happyOut19 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t19 happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut19 #-} happyIn20 :: t20 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn20 #-} happyOut20 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t20 happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut20 #-} happyIn21 :: t21 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn21 #-} happyOut21 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t21 happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut21 #-} happyIn22 :: t22 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn22 #-} happyOut22 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t22 happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut22 #-} happyIn23 :: t23 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn23 #-} happyOut23 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t23 happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut23 #-} happyIn24 :: t24 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn24 #-} happyOut24 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t24 happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut24 #-} happyIn25 :: t25 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn25 #-} happyOut25 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t25 happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut25 #-} happyIn26 :: t26 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn26 #-} happyOut26 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t26 happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut26 #-} happyIn27 :: t27 -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn27 #-} happyOut27 :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t27 happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut27 #-} happyInTok :: (PosToken) -> (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyInTok x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyInTok #-} happyOutTok :: (HappyAbsSyn t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> (PosToken) happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOutTok #-} happyActOffsets :: HappyAddr happyActOffsets = HappyA# "\x36\x00\x36\x00\x4c\x00\x00\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x14\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x45\x00\x00\x00\x44\x00\x0f\x00\x32\x00\x00\x00\xd5\x00\x4a\x00\x49\x00\x3d\x00\x3b\x00\x3a\x00\x00\x00\x00\x00\x45\x00\x22\x00\x28\x00\x2a\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x14\x00\x00\x00\x20\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x17\x00\x00\x00\x00\x00\x12\x00\x00\x00"# happyGotoOffsets :: HappyAddr happyGotoOffsets = HappyA# "\xaf\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x5a\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x72\x00\xf2\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x00"# happyDefActions :: HappyAddr happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\xfc\xff\xfa\xff\xf5\xff\xee\xff\xed\xff\xe9\xff\xea\xff\xe7\xff\xdd\xff\x00\x00\xf4\xff\xf3\xff\xf2\xff\xf1\xff\xec\xff\xeb\xff\xf0\xff\xef\xff\x00\x00\x00\x00\xfd\xff\xf5\xff\xda\xff\x00\x00\xde\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\xfb\xff\xe5\xff\xdf\xff\xd4\xff\x00\x00\xe0\xff\x00\x00\xd8\xff\xe3\xff\xe4\xff\xe2\xff\xe1\xff\xf7\xff\xf9\xff\x00\x00\xf8\xff\xdc\xff\xd0\xff\xdb\xff\xd3\xff\x00\x00\xfe\xff\xd6\xff\xcf\xff\xe6\xff\x00\x00\xf6\xff\xd7\xff\xce\xff\xd5\xff\xd1\xff\x00\x00\xd2\xff\xcd\xff\xe8\xff"# happyCheck :: HappyAddr happyCheck = HappyA# "\xff\xff\x02\x00\x04\x00\x14\x00\x12\x00\x06\x00\x14\x00\x15\x00\x09\x00\x17\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x02\x00\x08\x00\x0a\x00\x0a\x00\x06\x00\x11\x00\x0a\x00\x09\x00\x08\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x17\x00\x0f\x00\x13\x00\x14\x00\x02\x00\x0a\x00\x04\x00\x08\x00\x06\x00\x01\x00\x05\x00\x08\x00\x0f\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x02\x00\x07\x00\x13\x00\x14\x00\x06\x00\x03\x00\x03\x00\x09\x00\x03\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x02\x00\x04\x00\x13\x00\x14\x00\x06\x00\x03\x00\x03\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x0a\x00\xff\xff\x13\x00\x14\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\xff\xff\x0c\x00\x0d\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x02\x00\x03\x00\x0d\x00\x04\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xff\xff\x0b\x00\xff\xff\xff\xff\x0f\x00\xff\xff\x10\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x05\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0e\x00\xff\xff\x03\x00\x11\x00\xff\xff\x13\x00\xff\xff\x08\x00\x16\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# happyTable :: HappyAddr happyTable = HappyA# "\x00\x00\x0b\x00\x43\x00\x44\x00\x3e\x00\x0c\x00\x3f\x00\x40\x00\x0d\x00\x41\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x1f\x00\x20\x00\x14\x00\x15\x00\x21\x00\x22\x00\x0b\x00\x38\x00\x17\x00\x17\x00\x0c\x00\x3a\x00\x17\x00\x0d\x00\x43\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\x2a\x00\x14\x00\x15\x00\x0b\x00\x17\x00\x26\x00\x38\x00\x0c\x00\x3d\x00\x3e\x00\x43\x00\x2a\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x0b\x00\x33\x00\x14\x00\x15\x00\x0c\x00\x2c\x00\x2d\x00\x0d\x00\x2e\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x0b\x00\x26\x00\x14\x00\x15\x00\x0c\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x17\x00\x00\x00\x14\x00\x15\x00\x19\x00\x03\x00\x04\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x00\x00\x1a\x00\x1b\x00\x19\x00\x03\x00\x04\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x22\x00\x18\x00\x3b\x00\x26\x00\x23\x00\x06\x00\x07\x00\x08\x00\x09\x00\x00\x00\x27\x00\x00\x00\x00\x00\x24\x00\x00\x00\x28\x00\x1c\x00\x03\x00\x04\x00\x05\x00\x00\x00\x1d\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x45\x00\x03\x00\x04\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x39\x00\x03\x00\x04\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x02\x00\x03\x00\x04\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x15\x00\x03\x00\x04\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x38\x00\x04\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x2a\x00\x18\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x33\x00\x00\x00\x31\x00\x34\x00\x00\x00\x35\x00\x00\x00\x32\x00\x36\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# happyReduceArr = Happy_Data_Array.array (1, 50) [ (1 , happyReduce_1), (2 , happyReduce_2), (3 , happyReduce_3), (4 , happyReduce_4), (5 , happyReduce_5), (6 , happyReduce_6), (7 , happyReduce_7), (8 , happyReduce_8), (9 , happyReduce_9), (10 , happyReduce_10), (11 , happyReduce_11), (12 , happyReduce_12), (13 , happyReduce_13), (14 , happyReduce_14), (15 , happyReduce_15), (16 , happyReduce_16), (17 , happyReduce_17), (18 , happyReduce_18), (19 , happyReduce_19), (20 , happyReduce_20), (21 , happyReduce_21), (22 , happyReduce_22), (23 , happyReduce_23), (24 , happyReduce_24), (25 , happyReduce_25), (26 , happyReduce_26), (27 , happyReduce_27), (28 , happyReduce_28), (29 , happyReduce_29), (30 , happyReduce_30), (31 , happyReduce_31), (32 , happyReduce_32), (33 , happyReduce_33), (34 , happyReduce_34), (35 , happyReduce_35), (36 , happyReduce_36), (37 , happyReduce_37), (38 , happyReduce_38), (39 , happyReduce_39), (40 , happyReduce_40), (41 , happyReduce_41), (42 , happyReduce_42), (43 , happyReduce_43), (44 , happyReduce_44), (45 , happyReduce_45), (46 , happyReduce_46), (47 , happyReduce_47), (48 , happyReduce_48), (49 , happyReduce_49), (50 , happyReduce_50) ] happy_n_terms = 24 :: Int happy_n_nonterms = 24 :: Int happyReduce_1 = happySpecReduce_3 0# happyReduction_1 happyReduction_1 happy_x_3 happy_x_2 happy_x_1 = case happyOut4 happy_x_1 of { happy_var_1 -> case happyOut5 happy_x_3 of { happy_var_3 -> happyIn4 (Ratio happy_var_1 happy_var_3 )}} happyReduce_2 = happySpecReduce_2 0# happyReduction_2 happyReduction_2 happy_x_2 happy_x_1 = case happyOut6 happy_x_2 of { happy_var_2 -> happyIn4 (Neg happy_var_2 )} happyReduce_3 = happySpecReduce_1 0# happyReduction_3 happyReduction_3 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> happyIn4 (happy_var_1 )} happyReduce_4 = happySpecReduce_2 1# happyReduction_4 happyReduction_4 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> case happyOut10 happy_x_2 of { happy_var_2 -> happyIn5 (Con happy_var_1 happy_var_2 )}} happyReduce_5 = happySpecReduce_1 1# happyReduction_5 happyReduction_5 happy_x_1 = case happyOut6 happy_x_1 of { happy_var_1 -> happyIn5 (happy_var_1 )} happyReduce_6 = happySpecReduce_3 2# happyReduction_6 happyReduction_6 happy_x_3 happy_x_2 happy_x_1 = case happyOut4 happy_x_2 of { happy_var_2 -> happyIn6 (happy_var_2 )} happyReduce_7 = happySpecReduce_3 2# happyReduction_7 happyReduction_7 happy_x_3 happy_x_2 happy_x_1 = case happyOut16 happy_x_2 of { happy_var_2 -> happyIn6 (List happy_var_2 )} happyReduce_8 = happySpecReduce_3 2# happyReduction_8 happyReduction_8 happy_x_3 happy_x_2 happy_x_1 = case happyOut9 happy_x_2 of { happy_var_2 -> happyIn6 (Tuple happy_var_2 )} happyReduce_9 = happyReduce 4# 2# happyReduction_9 happyReduction_9 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut7 happy_x_1 of { happy_var_1 -> case happyOut15 happy_x_3 of { happy_var_3 -> happyIn6 (Rec happy_var_1 happy_var_3 ) `HappyStk` happyRest}} happyReduce_10 = happySpecReduce_1 2# happyReduction_10 happyReduction_10 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn6 (Con happy_var_1 [] )} happyReduce_11 = happySpecReduce_1 2# happyReduction_11 happyReduction_11 happy_x_1 = case happyOutTok happy_x_1 of { ((IntLit, (_,happy_var_1))) -> happyIn6 (Integer happy_var_1 )} happyReduce_12 = happySpecReduce_1 2# happyReduction_12 happyReduction_12 happy_x_1 = case happyOutTok happy_x_1 of { ((FloatLit, (_,happy_var_1))) -> happyIn6 (Float happy_var_1 )} happyReduce_13 = happySpecReduce_1 2# happyReduction_13 happyReduction_13 happy_x_1 = case happyOutTok happy_x_1 of { ((StringLit, (_,happy_var_1))) -> happyIn6 (String happy_var_1 )} happyReduce_14 = happySpecReduce_1 2# happyReduction_14 happyReduction_14 happy_x_1 = case happyOutTok happy_x_1 of { ((CharLit, (_,happy_var_1))) -> happyIn6 (Char happy_var_1 )} happyReduce_15 = happySpecReduce_1 3# happyReduction_15 happyReduction_15 happy_x_1 = case happyOutTok happy_x_1 of { ((Conid, (_,happy_var_1))) -> happyIn7 (happy_var_1 )} happyReduce_16 = happySpecReduce_1 3# happyReduction_16 happyReduction_16 happy_x_1 = case happyOutTok happy_x_1 of { ((Qconid, (_,happy_var_1))) -> happyIn7 (happy_var_1 )} happyReduce_17 = happySpecReduce_1 3# happyReduction_17 happyReduction_17 happy_x_1 = case happyOut11 happy_x_1 of { happy_var_1 -> happyIn7 (happy_var_1 )} happyReduce_18 = happySpecReduce_1 3# happyReduction_18 happyReduction_18 happy_x_1 = case happyOut12 happy_x_1 of { happy_var_1 -> happyIn7 (happy_var_1 )} happyReduce_19 = happySpecReduce_1 3# happyReduction_19 happyReduction_19 happy_x_1 = case happyOutTok happy_x_1 of { ((Varid, (_,happy_var_1))) -> happyIn7 (happy_var_1 )} happyReduce_20 = happySpecReduce_1 3# happyReduction_20 happyReduction_20 happy_x_1 = case happyOutTok happy_x_1 of { ((Qvarid, (_,happy_var_1))) -> happyIn7 (happy_var_1 )} happyReduce_21 = happySpecReduce_1 3# happyReduction_21 happyReduction_21 happy_x_1 = case happyOut14 happy_x_1 of { happy_var_1 -> happyIn7 (happy_var_1 )} happyReduce_22 = happySpecReduce_1 3# happyReduction_22 happyReduction_22 happy_x_1 = case happyOut13 happy_x_1 of { happy_var_1 -> happyIn7 (happy_var_1 )} happyReduce_23 = happySpecReduce_3 4# happyReduction_23 happyReduction_23 happy_x_3 happy_x_2 happy_x_1 = case happyOutTok happy_x_1 of { ((Varid, (_,happy_var_1))) -> case happyOut4 happy_x_3 of { happy_var_3 -> happyIn8 ((happy_var_1,happy_var_3) )}} happyReduce_24 = happySpecReduce_0 5# happyReduction_24 happyReduction_24 = happyIn9 ([] ) happyReduce_25 = happySpecReduce_3 5# happyReduction_25 happyReduction_25 happy_x_3 happy_x_2 happy_x_1 = case happyOut4 happy_x_1 of { happy_var_1 -> case happyOut17 happy_x_3 of { happy_var_3 -> happyIn9 (happy_var_1 : happy_var_3 )}} happyReduce_26 = happySpecReduce_1 6# happyReduction_26 happyReduction_26 happy_x_1 = case happyOut19 happy_x_1 of { happy_var_1 -> happyIn10 (reverse happy_var_1 )} happyReduce_27 = happySpecReduce_3 7# happyReduction_27 happyReduction_27 happy_x_3 happy_x_2 happy_x_1 = case happyOutTok happy_x_2 of { ((Consym, (_,happy_var_2))) -> happyIn11 ("(" ++ happy_var_2 ++ ")" )} happyReduce_28 = happySpecReduce_3 8# happyReduction_28 happyReduction_28 happy_x_3 happy_x_2 happy_x_1 = case happyOutTok happy_x_2 of { ((Qconsym, (_,happy_var_2))) -> happyIn12 ("(" ++ happy_var_2 ++ ")" )} happyReduce_29 = happySpecReduce_3 9# happyReduction_29 happyReduction_29 happy_x_3 happy_x_2 happy_x_1 = case happyOutTok happy_x_2 of { ((Qvarsym, (_,happy_var_2))) -> happyIn13 ("(" ++ happy_var_2 ++ ")" )} happyReduce_30 = happySpecReduce_3 10# happyReduction_30 happyReduction_30 happy_x_3 happy_x_2 happy_x_1 = case happyOutTok happy_x_2 of { ((Varsym, (_,happy_var_2))) -> happyIn14 ("(" ++ happy_var_2 ++ ")" )} happyReduce_31 = happySpecReduce_1 11# happyReduction_31 happyReduction_31 happy_x_1 = case happyOut20 happy_x_1 of { happy_var_1 -> happyIn15 (happy_var_1 )} happyReduce_32 = happySpecReduce_0 11# happyReduction_32 happyReduction_32 = happyIn15 ([] ) happyReduce_33 = happySpecReduce_1 12# happyReduction_33 happyReduction_33 happy_x_1 = case happyOut17 happy_x_1 of { happy_var_1 -> happyIn16 (happy_var_1 )} happyReduce_34 = happySpecReduce_0 12# happyReduction_34 happyReduction_34 = happyIn16 ([] ) happyReduce_35 = happySpecReduce_2 13# happyReduction_35 happyReduction_35 happy_x_2 happy_x_1 = case happyOut4 happy_x_1 of { happy_var_1 -> case happyOut18 happy_x_2 of { happy_var_2 -> happyIn17 (happy_var_1 : happy_var_2 )}} happyReduce_36 = happySpecReduce_1 14# happyReduction_36 happyReduction_36 happy_x_1 = case happyOut23 happy_x_1 of { happy_var_1 -> happyIn18 (happy_var_1 )} happyReduce_37 = happySpecReduce_0 14# happyReduction_37 happyReduction_37 = happyIn18 ([] ) happyReduce_38 = happySpecReduce_1 15# happyReduction_38 happyReduction_38 happy_x_1 = case happyOut6 happy_x_1 of { happy_var_1 -> happyIn19 ([happy_var_1] )} happyReduce_39 = happySpecReduce_2 15# happyReduction_39 happyReduction_39 happy_x_2 happy_x_1 = case happyOut19 happy_x_1 of { happy_var_1 -> case happyOut6 happy_x_2 of { happy_var_2 -> happyIn19 (happy_var_2 : happy_var_1 )}} happyReduce_40 = happySpecReduce_2 16# happyReduction_40 happyReduction_40 happy_x_2 happy_x_1 = case happyOut8 happy_x_1 of { happy_var_1 -> case happyOut22 happy_x_2 of { happy_var_2 -> happyIn20 (happy_var_1 : happy_var_2 )}} happyReduce_41 = happySpecReduce_2 17# happyReduction_41 happyReduction_41 happy_x_2 happy_x_1 = case happyOut4 happy_x_2 of { happy_var_2 -> happyIn21 (happy_var_2 )} happyReduce_42 = happySpecReduce_1 18# happyReduction_42 happyReduction_42 happy_x_1 = case happyOut25 happy_x_1 of { happy_var_1 -> happyIn22 (happy_var_1 )} happyReduce_43 = happySpecReduce_0 18# happyReduction_43 happyReduction_43 = happyIn22 ([] ) happyReduce_44 = happySpecReduce_1 19# happyReduction_44 happyReduction_44 happy_x_1 = case happyOut26 happy_x_1 of { happy_var_1 -> happyIn23 (reverse happy_var_1 )} happyReduce_45 = happySpecReduce_2 20# happyReduction_45 happyReduction_45 happy_x_2 happy_x_1 = case happyOut8 happy_x_2 of { happy_var_2 -> happyIn24 (happy_var_2 )} happyReduce_46 = happySpecReduce_1 21# happyReduction_46 happyReduction_46 happy_x_1 = case happyOut27 happy_x_1 of { happy_var_1 -> happyIn25 (reverse happy_var_1 )} happyReduce_47 = happySpecReduce_1 22# happyReduction_47 happyReduction_47 happy_x_1 = case happyOut21 happy_x_1 of { happy_var_1 -> happyIn26 ([happy_var_1] )} happyReduce_48 = happySpecReduce_2 22# happyReduction_48 happyReduction_48 happy_x_2 happy_x_1 = case happyOut26 happy_x_1 of { happy_var_1 -> case happyOut21 happy_x_2 of { happy_var_2 -> happyIn26 (happy_var_2 : happy_var_1 )}} happyReduce_49 = happySpecReduce_1 23# happyReduction_49 happyReduction_49 happy_x_1 = case happyOut24 happy_x_1 of { happy_var_1 -> happyIn27 ([happy_var_1] )} happyReduce_50 = happySpecReduce_2 23# happyReduction_50 happyReduction_50 happy_x_2 happy_x_1 = case happyOut27 happy_x_1 of { happy_var_1 -> case happyOut24 happy_x_2 of { happy_var_2 -> happyIn27 (happy_var_2 : happy_var_1 )}} happyNewToken action sts stk [] = happyDoAction 23# notHappyAtAll action sts stk [] happyNewToken action sts stk (tk:tks) = let cont i = happyDoAction i tk action sts stk tks in case tk of { (Reservedop, (_,"=")) -> cont 1#; (Special, (_,"(")) -> cont 2#; (Special, (_,")")) -> cont 3#; (Special, (_,"{")) -> cont 4#; (Special, (_,"}")) -> cont 5#; (Special, (_,"[")) -> cont 6#; (Special, (_,"]")) -> cont 7#; (Special, (_,",")) -> cont 8#; (Varsym, (_,"-")) -> cont 9#; (Varsym, (_,"%")) -> cont 10#; (IntLit, (_,happy_dollar_dollar)) -> cont 11#; (FloatLit, (_,happy_dollar_dollar)) -> cont 12#; (StringLit, (_,happy_dollar_dollar)) -> cont 13#; (CharLit, (_,happy_dollar_dollar)) -> cont 14#; (Varid, (_,happy_dollar_dollar)) -> cont 15#; (Qvarid, (_,happy_dollar_dollar)) -> cont 16#; (Varsym, (_,happy_dollar_dollar)) -> cont 17#; (Qvarsym, (_,happy_dollar_dollar)) -> cont 18#; (Conid, (_,happy_dollar_dollar)) -> cont 19#; (Qconid, (_,happy_dollar_dollar)) -> cont 20#; (Consym, (_,happy_dollar_dollar)) -> cont 21#; (Qconsym, (_,happy_dollar_dollar)) -> cont 22#; _ -> happyError' (tk:tks) } happyError_ tk tks = happyError' (tk:tks) happyThen :: () => Maybe a -> (a -> Maybe b) -> Maybe b happyThen = ((>>=)) happyReturn :: () => a -> Maybe a happyReturn = (return) happyThen1 m k tks = ((>>=)) m (\a -> k a tks) happyReturn1 :: () => a -> b -> Maybe a happyReturn1 = \a tks -> (return) a happyError' :: () => [(PosToken)] -> Maybe a happyError' = happyError parseValue tks = happySomeParser where happySomeParser = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut4 x)) happySeq = happyDontSeq happyError :: [PosToken] -> Maybe a happyError ((_,(p,_)) : _) = Nothing -- error ("Parser error at: " ++ show p) happyError [] = Nothing -- error ("Parser error at EOF") {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "" #-} {-# LINE 1 "" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-} -- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp {-# LINE 30 "templates/GenericTemplate.hs" #-} data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList {-# LINE 51 "templates/GenericTemplate.hs" #-} {-# LINE 61 "templates/GenericTemplate.hs" #-} {-# LINE 70 "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 Happy_GHC_Exts.<# (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) = indexShortOffAddr happyActOffsets st (off_i) = (off Happy_GHC_Exts.+# i) check = if (off_i Happy_GHC_Exts.>=# (0# :: Happy_GHC_Exts.Int#)) then (indexShortOffAddr happyCheck off_i Happy_GHC_Exts.==# i) else False (action) | check = indexShortOffAddr happyTable off_i | otherwise = indexShortOffAddr happyDefActions st {-# LINE 130 "templates/GenericTemplate.hs" #-} indexShortOffAddr (HappyA# arr) off = Happy_GHC_Exts.narrow16Int# i where i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low) high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#))) low = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off')) off' = off Happy_GHC_Exts.*# 2# data HappyAddr = HappyA# Happy_GHC_Exts.Addr# ----------------------------------------------------------------------------- -- HappyState data type (not arrays) {-# LINE 163 "templates/GenericTemplate.hs" #-} ----------------------------------------------------------------------------- -- Shifting a token happyShift new_state 0# tk st sts stk@(x `HappyStk` _) = let (i) = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.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 Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.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 Happy_GHC_Exts.+# nt) (new_state) = indexShortOffAddr happyTable off_i happyDrop 0# l = l happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t happyDropStk 0# l = l happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.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 Happy_GHC_Exts.+# 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 ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk) -- Internal happy errors: notHappyAtAll :: a notHappyAtAll = error "Internal Happy error\n" ----------------------------------------------------------------------------- -- Hack to get the typechecker to accept our action functions happyTcHack :: Happy_GHC_Exts.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.