pretty-show-1.2/ 0000755 0000000 0000000 00000000000 11706151300 012041 5 ustar 00 0000000 0000000 pretty-show-1.2/pretty-show.cabal 0000644 0000000 0000000 00000003047 11706151300 015336 0 ustar 00 0000000 0000000 name: 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/LICENSE 0000644 0000000 0000000 00000002045 11706151277 013064 0 ustar 00 0000000 0000000 Copyright (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.lhs 0000644 0000000 0000000 00000000213 11706151300 013645 0 ustar 00 0000000 0000000 #! /usr/bin/env runhaskell
> module Main (main) where
>
> import Distribution.Simple (defaultMain)
>
> main :: IO ()
> main = defaultMain
pretty-show-1.2/ppsh.hs 0000644 0000000 0000000 00000003746 11706151277 013376 0 ustar 00 0000000 0000000 import 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/ 0000755 0000000 0000000 00000000000 11706151277 013002 5 ustar 00 0000000 0000000 pretty-show-1.2/Text/Show/ 0000755 0000000 0000000 00000000000 11706151277 013722 5 ustar 00 0000000 0000000 pretty-show-1.2/Text/Show/Parser.y 0000644 0000000 0000000 00000006616 11706151277 015361 0 ustar 00 0000000 0000000 {
-- 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.hs 0000644 0000000 0000000 00000003501 11706151277 015751 0 ustar 00 0000000 0000000 -- | 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.hs 0000644 0000000 0000000 00000002454 11706151277 015337 0 ustar 00 0000000 0000000 --------------------------------------------------------------------------------
-- |
-- 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.hs 0000644 0000000 0000000 00000005430 11706151277 015547 0 ustar 00 0000000 0000000 --------------------------------------------------------------------------------
-- |
-- 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/ 0000755 0000000 0000000 00000000000 11706151277 013021 5 ustar 00 0000000 0000000 pretty-show-1.2/dist/build/ 0000755 0000000 0000000 00000000000 11706151277 014120 5 ustar 00 0000000 0000000 pretty-show-1.2/dist/build/ppsh/ 0000755 0000000 0000000 00000000000 11706151277 015072 5 ustar 00 0000000 0000000 pretty-show-1.2/dist/build/ppsh/ppsh-tmp/ 0000755 0000000 0000000 00000000000 11706151277 016642 5 ustar 00 0000000 0000000 pretty-show-1.2/dist/build/ppsh/ppsh-tmp/Text/ 0000755 0000000 0000000 00000000000 11706151277 017566 5 ustar 00 0000000 0000000 pretty-show-1.2/dist/build/ppsh/ppsh-tmp/Text/Show/ 0000755 0000000 0000000 00000000000 11706151300 020471 5 ustar 00 0000000 0000000 pretty-show-1.2/dist/build/ppsh/ppsh-tmp/Text/Show/Parser.hs 0000644 0000000 0000000 00000107612 11706151300 022270 0 ustar 00 0000000 0000000 {-# 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/ 0000755 0000000 0000000 00000000000 11706151277 015044 5 ustar 00 0000000 0000000 pretty-show-1.2/dist/build/Text/Show/ 0000755 0000000 0000000 00000000000 11706151277 015764 5 ustar 00 0000000 0000000 pretty-show-1.2/dist/build/Text/Show/Parser.hs 0000644 0000000 0000000 00000107612 11706151277 017563 0 ustar 00 0000000 0000000 {-# 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.