{-# OPTIONS_GHC -w #-}
{-# OPTIONS -XMagicHash -XBangPatterns -XTypeSynonymInstances -XFlexibleInstances -cpp #-}
#if __GLASGOW_HASKELL__ >= 710
{-# OPTIONS_GHC -XPartialTypeSignatures #-}
#endif
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Language.Cimple.TreeParser
    ( TreeParser
    , parseTranslationUnit
    , toEither
    ) where

import           Data.Fix              (Fix (..))
import           Data.Text             (Text)
import           Language.Cimple.Ast   (CommentStyle (..), Node, NodeF (..))
import           Language.Cimple.Lexer (Lexeme)
import qualified Data.Array as Happy_Data_Array
import qualified Data.Bits as Bits
import qualified GHC.Exts as Happy_GHC_Exts
import Control.Applicative(Applicative(..))
import Control.Monad (ap)

-- parser produced by Happy Version 1.20.0

newtype HappyAbsSyn  = HappyAbsSyn HappyAny
#if __GLASGOW_HASKELL__ >= 607
type HappyAny = Happy_GHC_Exts.Any
#else
type HappyAny = forall a . a
#endif
newtype HappyWrap6 = HappyWrap6 ([TextNode])
happyIn6 :: ([TextNode]) -> (HappyAbsSyn )
happyIn6 :: [TextNode] -> HappyAbsSyn
happyIn6 [TextNode]
x = HappyWrap6 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([TextNode] -> HappyWrap6
HappyWrap6 [TextNode]
x)
{-# INLINE happyIn6 #-}
happyOut6 :: (HappyAbsSyn ) -> HappyWrap6
happyOut6 :: HappyAbsSyn -> HappyWrap6
happyOut6 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap6
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut6 #-}
newtype HappyWrap7 = HappyWrap7 (TextNode)
happyIn7 :: (TextNode) -> (HappyAbsSyn )
happyIn7 :: TextNode -> HappyAbsSyn
happyIn7 TextNode
x = HappyWrap7 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (TextNode -> HappyWrap7
HappyWrap7 TextNode
x)
{-# INLINE happyIn7 #-}
happyOut7 :: (HappyAbsSyn ) -> HappyWrap7
happyOut7 :: HappyAbsSyn -> HappyWrap7
happyOut7 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap7
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut7 #-}
newtype HappyWrap8 = HappyWrap8 (TextNode)
happyIn8 :: (TextNode) -> (HappyAbsSyn )
happyIn8 :: TextNode -> HappyAbsSyn
happyIn8 TextNode
x = HappyWrap8 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (TextNode -> HappyWrap8
HappyWrap8 TextNode
x)
{-# INLINE happyIn8 #-}
happyOut8 :: (HappyAbsSyn ) -> HappyWrap8
happyOut8 :: HappyAbsSyn -> HappyWrap8
happyOut8 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap8
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut8 #-}
newtype HappyWrap9 = HappyWrap9 ([TextNode])
happyIn9 :: ([TextNode]) -> (HappyAbsSyn )
happyIn9 :: [TextNode] -> HappyAbsSyn
happyIn9 [TextNode]
x = HappyWrap9 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([TextNode] -> HappyWrap9
HappyWrap9 [TextNode]
x)
{-# INLINE happyIn9 #-}
happyOut9 :: (HappyAbsSyn ) -> HappyWrap9
happyOut9 :: HappyAbsSyn -> HappyWrap9
happyOut9 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap9
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut9 #-}
newtype HappyWrap10 = HappyWrap10 ([TextNode])
happyIn10 :: ([TextNode]) -> (HappyAbsSyn )
happyIn10 :: [TextNode] -> HappyAbsSyn
happyIn10 [TextNode]
x = HappyWrap10 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([TextNode] -> HappyWrap10
HappyWrap10 [TextNode]
x)
{-# INLINE happyIn10 #-}
happyOut10 :: (HappyAbsSyn ) -> HappyWrap10
happyOut10 :: HappyAbsSyn -> HappyWrap10
happyOut10 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap10
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut10 #-}
newtype HappyWrap11 = HappyWrap11 ([TextNode])
happyIn11 :: ([TextNode]) -> (HappyAbsSyn )
happyIn11 :: [TextNode] -> HappyAbsSyn
happyIn11 [TextNode]
x = HappyWrap11 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([TextNode] -> HappyWrap11
HappyWrap11 [TextNode]
x)
{-# INLINE happyIn11 #-}
happyOut11 :: (HappyAbsSyn ) -> HappyWrap11
happyOut11 :: HappyAbsSyn -> HappyWrap11
happyOut11 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap11
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut11 #-}
newtype HappyWrap12 = HappyWrap12 (TextNode)
happyIn12 :: (TextNode) -> (HappyAbsSyn )
happyIn12 :: TextNode -> HappyAbsSyn
happyIn12 TextNode
x = HappyWrap12 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (TextNode -> HappyWrap12
HappyWrap12 TextNode
x)
{-# INLINE happyIn12 #-}
happyOut12 :: (HappyAbsSyn ) -> HappyWrap12
happyOut12 :: HappyAbsSyn -> HappyWrap12
happyOut12 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap12
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut12 #-}
newtype HappyWrap13 = HappyWrap13 ([TextNode])
happyIn13 :: ([TextNode]) -> (HappyAbsSyn )
happyIn13 :: [TextNode] -> HappyAbsSyn
happyIn13 [TextNode]
x = HappyWrap13 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([TextNode] -> HappyWrap13
HappyWrap13 [TextNode]
x)
{-# INLINE happyIn13 #-}
happyOut13 :: (HappyAbsSyn ) -> HappyWrap13
happyOut13 :: HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap13
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut13 #-}
newtype HappyWrap14 = HappyWrap14 (TextNode)
happyIn14 :: (TextNode) -> (HappyAbsSyn )
happyIn14 :: TextNode -> HappyAbsSyn
happyIn14 TextNode
x = HappyWrap14 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (TextNode -> HappyWrap14
HappyWrap14 TextNode
x)
{-# INLINE happyIn14 #-}
happyOut14 :: (HappyAbsSyn ) -> HappyWrap14
happyOut14 :: HappyAbsSyn -> HappyWrap14
happyOut14 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap14
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut14 #-}
newtype HappyWrap15 = HappyWrap15 ([TextNode])
happyIn15 :: ([TextNode]) -> (HappyAbsSyn )
happyIn15 :: [TextNode] -> HappyAbsSyn
happyIn15 [TextNode]
x = HappyWrap15 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# ([TextNode] -> HappyWrap15
HappyWrap15 [TextNode]
x)
{-# INLINE happyIn15 #-}
happyOut15 :: (HappyAbsSyn ) -> HappyWrap15
happyOut15 :: HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap15
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut15 #-}
newtype HappyWrap16 = HappyWrap16 (TextNode)
happyIn16 :: (TextNode) -> (HappyAbsSyn )
happyIn16 :: TextNode -> HappyAbsSyn
happyIn16 TextNode
x = HappyWrap16 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (TextNode -> HappyWrap16
HappyWrap16 TextNode
x)
{-# INLINE happyIn16 #-}
happyOut16 :: (HappyAbsSyn ) -> HappyWrap16
happyOut16 :: HappyAbsSyn -> HappyWrap16
happyOut16 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap16
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut16 #-}
newtype HappyWrap17 = HappyWrap17 (TextNode)
happyIn17 :: (TextNode) -> (HappyAbsSyn )
happyIn17 :: TextNode -> HappyAbsSyn
happyIn17 TextNode
x = HappyWrap17 -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# (TextNode -> HappyWrap17
HappyWrap17 TextNode
x)
{-# INLINE happyIn17 #-}
happyOut17 :: (HappyAbsSyn ) -> HappyWrap17
happyOut17 :: HappyAbsSyn -> HappyWrap17
happyOut17 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap17
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut17 #-}
happyInTok :: (TextNode) -> (HappyAbsSyn )
happyInTok :: TextNode -> HappyAbsSyn
happyInTok TextNode
x = TextNode -> HappyAbsSyn
Happy_GHC_Exts.unsafeCoerce# TextNode
x
{-# INLINE happyInTok #-}
happyOutTok :: (HappyAbsSyn ) -> (TextNode)
happyOutTok :: HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
x = HappyAbsSyn -> TextNode
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOutTok #-}


happyExpList :: HappyAddr
happyExpList :: HappyAddr
happyExpList = Addr# -> HappyAddr
HappyA# Addr#
"\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x40\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\x00\x00\x00\x00\x00\x70\xf4\x03\x24\x01\x00\x00\x00\xd8\x01\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x08\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\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\x00\x00\x00\x00\x00\x00\x1c\x02\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\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x70\xf0\x03\x04\x01\x00\x00\x00\xd8\x01\x66\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\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\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\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\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\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\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\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\xc0\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\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\x00\x00\x00\x00\x00\x00\x80\xa3\x1f\x20\x09\x00\x00\x00\xc0\x0e\x30\x03\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x7e\x80\x24\x00\x00\x00\x00\x3b\xc0\x0c\x00\x00"#

{-# NOINLINE happyExpListPerState #-}
happyExpListPerState :: Int -> [String]
happyExpListPerState Int
st =
    [String]
token_strs_expected
  where token_strs :: [String]
token_strs = [String
"error",String
"%dummy",String
"%start_parseTranslationUnit",String
"%start_parseDecls",String
"%start_parseHeaderBody",String
"TranslationUnit",String
"FileComment",String
"Header",String
"HeaderBody",String
"Source",String
"Features",String
"IfDefine",String
"Includes",String
"Include",String
"Decls",String
"Decl",String
"CommentableDecl",String
"ifndefDefine",String
"ifdefDefine",String
"ifDefine",String
"ifndefInclude",String
"ifdefInclude",String
"ifInclude",String
"docComment",String
"preprocInclude",String
"preprocDefine",String
"preprocDefineConst",String
"preprocDefineMacro",String
"preprocIf",String
"preprocIfdef",String
"preprocIfndef",String
"preprocElse",String
"preprocElif",String
"preprocUndef",String
"preprocDefined",String
"preprocScopedDefine",String
"macroBodyStmt",String
"macroBodyFunCall",String
"macroParam",String
"staticAssert",String
"licenseDecl",String
"copyrightDecl",String
"comment",String
"commentBlock",String
"commented",String
"externC",String
"compoundStmt",String
"break",String
"goto",String
"continue",String
"return",String
"switchStmt",String
"ifStmt",String
"forStmt",String
"whileStmt",String
"doWhileStmt",String
"case",String
"default",String
"label",String
"vLA",String
"varDeclStmt",String
"varDecl",String
"declSpecArray",String
"initialiserList",String
"unaryExpr",String
"binaryExpr",String
"ternaryExpr",String
"assignExpr",String
"parenExpr",String
"castExpr",String
"compoundExpr",String
"sizeofExpr",String
"sizeofType",String
"literalExpr",String
"varExpr",String
"memberAccess",String
"pointerAccess",String
"arrayAccess",String
"functionCall",String
"commentExpr",String
"enumConsts",String
"enumDecl",String
"enumerator",String
"typedef",String
"typedefFunction",String
"struct",String
"union",String
"memberDecl",String
"tyConst",String
"tyPointer",String
"tyStruct",String
"tyFunc",String
"tyStd",String
"tyUserDefined",String
"functionDecl",String
"functionDefn",String
"functionPrototype",String
"ellipsis",String
"constDecl",String
"constDefn",String
"%eof"]
        bit_start :: Int
bit_start = Int
st Int -> Int -> Int
forall a. Num a => a -> a -> a
Prelude.* Int
101
        bit_end :: Int
bit_end = (Int
st Int -> Int -> Int
forall a. Num a => a -> a -> a
Prelude.+ Int
1) Int -> Int -> Int
forall a. Num a => a -> a -> a
Prelude.* Int
101
        read_bit :: Int -> Bool
read_bit = HappyAddr -> Int -> Bool
readArrayBit HappyAddr
happyExpList
        bits :: [Bool]
bits = (Int -> Bool) -> [Int] -> [Bool]
forall a b. (a -> b) -> [a] -> [b]
Prelude.map Int -> Bool
read_bit [Int
bit_start..Int
bit_end Int -> Int -> Int
forall a. Num a => a -> a -> a
Prelude.- Int
1]
        bits_indexed :: [(Bool, Int)]
bits_indexed = [Bool] -> [Int] -> [(Bool, Int)]
forall a b. [a] -> [b] -> [(a, b)]
Prelude.zip [Bool]
bits [Int
0..Int
100]
        token_strs_expected :: [String]
token_strs_expected = ((Bool, Int) -> [String]) -> [(Bool, Int)] -> [String]
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
Prelude.concatMap (Bool, Int) -> [String]
f [(Bool, Int)]
bits_indexed
        f :: (Bool, Int) -> [String]
f (Bool
Prelude.False, Int
_) = []
        f (Bool
Prelude.True, Int
nr) = [[String]
token_strs [String] -> Int -> String
forall a. [a] -> Int -> a
Prelude.!! Int
nr]

happyActOffsets :: HappyAddr
happyActOffsets :: HappyAddr
happyActOffsets = Addr# -> HappyAddr
HappyA# Addr#
"\xef\xff\x00\x00\x0a\x00\x05\x00\xfa\xff\xce\xff\x00\x00\x01\x00\xce\xff\x02\x00\x15\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\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\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x15\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x1e\x00\x00\x00"#

happyGotoOffsets :: HappyAddr
happyGotoOffsets :: HappyAddr
happyGotoOffsets = Addr# -> HappyAddr
HappyA# Addr#
"\x24\x00\x1d\x00\x3c\x00\x00\x00\x30\x00\x00\x00\x40\x00\x0b\x00\x00\x00\x35\x00\x2e\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\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\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xff\x46\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x11\x00\x0b\x00\x00\x00"#

happyAdjustOffset :: Happy_GHC_Exts.Int# -> Happy_GHC_Exts.Int#
happyAdjustOffset :: Int# -> Int#
happyAdjustOffset Int#
off = Int#
off

happyDefActions :: HappyAddr
happyDefActions :: HappyAddr
happyDefActions = Addr# -> HappyAddr
HappyA# Addr#
"\x00\x00\xe8\xff\x00\x00\x00\x00\x00\x00\x00\x00\xee\xff\x00\x00\x00\x00\xf3\xff\xf3\xff\xfa\xff\xf9\xff\x00\x00\xf7\xff\xf6\xff\xf8\xff\xd2\xff\xe7\xff\xe5\xff\xf1\xff\xf0\xff\xef\xff\x00\x00\xda\xff\xd9\xff\xd8\xff\xd7\xff\xd6\xff\xd5\xff\xd4\xff\xe6\xff\xdb\xff\xdd\xff\xdc\xff\xe0\xff\xd3\xff\xe1\xff\xe3\xff\xe2\xff\xdf\xff\xde\xff\xe8\xff\x00\x00\xfc\xff\xed\xff\xf5\xff\xeb\xff\xea\xff\xe9\xff\xec\xff\xe4\xff\xf2\xff\xee\xff\xfb\xff\xe8\xff\xf4\xff"#

happyCheck :: HappyAddr
happyCheck :: HappyAddr
happyCheck = Addr# -> HappyAddr
HappyA# Addr#
"\xff\xff\x07\x00\x01\x00\x02\x00\x03\x00\x08\x00\x09\x00\x18\x00\x07\x00\x07\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0e\x00\x06\x00\x06\x00\x09\x00\x1a\x00\x0a\x00\x0b\x00\x0b\x00\x17\x00\x08\x00\x09\x00\x1a\x00\x1a\x00\x18\x00\x1d\x00\x01\x00\x02\x00\x03\x00\x54\x00\x0e\x00\x00\x00\x07\x00\x09\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x01\x00\x02\x00\x03\x00\x02\x00\x01\x00\x04\x00\x05\x00\x08\x00\x17\x00\x01\x00\x02\x00\x1a\x00\x04\x00\x05\x00\x1d\x00\x04\x00\x05\x00\x06\x00\x03\x00\x08\x00\x40\x00\x41\x00\x06\x00\x43\x00\x44\x00\x45\x00\x07\x00\x02\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\xff\xff\xff\xff\x52\x00\x53\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff"#

happyTable :: HappyAddr
happyTable :: HappyAddr
happyTable = Addr# -> HappyAddr
HappyA# Addr#
"\x00\x00\x0f\x00\x15\x00\x16\x00\x17\x00\x2d\x00\x2e\x00\x0a\x00\x18\x00\x0f\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x10\x00\x11\x00\x11\x00\x07\x00\x11\x00\x12\x00\x13\x00\x33\x00\x1f\x00\x2d\x00\x38\x00\x20\x00\x11\x00\x05\x00\x21\x00\x15\x00\x16\x00\x17\x00\xff\xff\x10\x00\x08\x00\x18\x00\x07\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x15\x00\x16\x00\x17\x00\x2c\x00\x2b\x00\x36\x00\x0d\x00\x36\x00\x1f\x00\x0a\x00\x0b\x00\x20\x00\x0c\x00\x0d\x00\x21\x00\x30\x00\x31\x00\x32\x00\x05\x00\x33\x00\x22\x00\x23\x00\x34\x00\x24\x00\x25\x00\x26\x00\x2a\x00\x2c\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x23\x00\x00\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x23\x00\x00\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00"#

happyReduceArr :: Array
  Int
  (Int#
   -> TextNode
   -> Int#
   -> Happy_IntList
   -> HappyStk HappyAbsSyn
   -> [TextNode]
   -> TreeParser HappyAbsSyn)
happyReduceArr = (Int, Int)
-> [(Int,
     Int#
     -> TextNode
     -> Int#
     -> Happy_IntList
     -> HappyStk HappyAbsSyn
     -> [TextNode]
     -> TreeParser HappyAbsSyn)]
-> Array
     Int
     (Int#
      -> TextNode
      -> Int#
      -> Happy_IntList
      -> HappyStk HappyAbsSyn
      -> [TextNode]
      -> TreeParser HappyAbsSyn)
forall i e. Ix i => (i, i) -> [(i, e)] -> Array i e
Happy_Data_Array.array (Int
3, Int
45) [
	(Int
3 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_3),
	(Int
4 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_4),
	(Int
5 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_5),
	(Int
6 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_6),
	(Int
7 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_7),
	(Int
8 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_8),
	(Int
9 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_9),
	(Int
10 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_10),
	(Int
11 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_11),
	(Int
12 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_12),
	(Int
13 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_13),
	(Int
14 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_14),
	(Int
15 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_15),
	(Int
16 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_16),
	(Int
17 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_17),
	(Int
18 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_18),
	(Int
19 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_19),
	(Int
20 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_20),
	(Int
21 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_21),
	(Int
22 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_22),
	(Int
23 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_23),
	(Int
24 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_24),
	(Int
25 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_25),
	(Int
26 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_26),
	(Int
27 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_27),
	(Int
28 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_28),
	(Int
29 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_29),
	(Int
30 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_30),
	(Int
31 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_31),
	(Int
32 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_32),
	(Int
33 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_33),
	(Int
34 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_34),
	(Int
35 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_35),
	(Int
36 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_36),
	(Int
37 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_37),
	(Int
38 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_38),
	(Int
39 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_39),
	(Int
40 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_40),
	(Int
41 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_41),
	(Int
42 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_42),
	(Int
43 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_43),
	(Int
44 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_44),
	(Int
45 , Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_45)
	]

happy_n_terms :: Int
happy_n_terms = Int
85 :: Prelude.Int
happy_n_nonterms :: Int
happy_n_nonterms = Int
12 :: Prelude.Int

happyReduce_3 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_3 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_3  Int#
0# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_3
happyReduction_3 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_3 HappyAbsSyn
happy_x_3
	HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	case HappyAbsSyn -> HappyWrap7
happyOut7 HappyAbsSyn
happy_x_2 of { (HappyWrap7 TextNode
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap8
happyOut8 HappyAbsSyn
happy_x_3 of { (HappyWrap8 TextNode
happy_var_3) -> 
	[TextNode] -> HappyAbsSyn
happyIn6
		 ([TextNode
happy_var_1, TextNode
happy_var_2, TextNode
happy_var_3]
	)}}}

happyReduce_4 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_4 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_3  Int#
0# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_4
happyReduction_4 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_4 HappyAbsSyn
happy_x_3
	HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	case HappyAbsSyn -> HappyWrap7
happyOut7 HappyAbsSyn
happy_x_2 of { (HappyWrap7 TextNode
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap10
happyOut10 HappyAbsSyn
happy_x_3 of { (HappyWrap10 [TextNode]
happy_var_3) -> 
	[TextNode] -> HappyAbsSyn
happyIn6
		 (TextNode
happy_var_1 TextNode -> [TextNode] -> [TextNode]
forall a. a -> [a] -> [a]
: TextNode
happy_var_2 TextNode -> [TextNode] -> [TextNode]
forall a. a -> [a] -> [a]
: [TextNode]
happy_var_3
	)}}}

happyReduce_5 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_5 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_2  Int#
0# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_5
happyReduction_5 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_5 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	case HappyAbsSyn -> HappyWrap8
happyOut8 HappyAbsSyn
happy_x_2 of { (HappyWrap8 TextNode
happy_var_2) -> 
	[TextNode] -> HappyAbsSyn
happyIn6
		 ([TextNode
happy_var_1, TextNode
happy_var_2]
	)}}

happyReduce_6 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_6 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_2  Int#
0# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_6
happyReduction_6 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_6 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	case HappyAbsSyn -> HappyWrap10
happyOut10 HappyAbsSyn
happy_x_2 of { (HappyWrap10 [TextNode]
happy_var_2) -> 
	[TextNode] -> HappyAbsSyn
happyIn6
		 (TextNode
happy_var_1 TextNode -> [TextNode] -> [TextNode]
forall a. a -> [a] -> [a]
: [TextNode]
happy_var_2
	)}}

happyReduce_7 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_7 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
1# HappyAbsSyn -> HappyAbsSyn
happyReduction_7
happyReduction_7 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_7 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn7
		 (TextNode
happy_var_1
	)}

happyReduce_8 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_8 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
1# HappyAbsSyn -> HappyAbsSyn
happyReduction_8
happyReduction_8 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_8 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn7
		 (TextNode
happy_var_1
	)}

happyReduce_9 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_9 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> TextNode -> TreeParser HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyMonadReduce Int#
1# Int#
2# HappyStk HappyAbsSyn -> TextNode -> TreeParser HappyAbsSyn
happyReduction_9
happyReduction_9 :: HappyStk HappyAbsSyn -> TextNode -> TreeParser HappyAbsSyn
happyReduction_9 (HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) TextNode
tk
	 = TreeParser TextNode
-> (TextNode -> TreeParser HappyAbsSyn) -> TreeParser HappyAbsSyn
forall a b. TreeParser a -> (a -> TreeParser b) -> TreeParser b
happyThen ((case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	( ([TextNode] -> TreeParser [TextNode])
-> TextNode -> TreeParser TextNode
recurse [TextNode] -> TreeParser [TextNode]
parseHeaderBody TextNode
happy_var_1)})
	) (\TextNode
r -> HappyAbsSyn -> TreeParser HappyAbsSyn
forall a. a -> TreeParser a
happyReturn (TextNode -> HappyAbsSyn
happyIn8 TextNode
r))

happyReduce_10 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_10 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_3  Int#
3# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_10
happyReduction_10 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_10 HappyAbsSyn
happy_x_3
	HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	case HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
happy_x_2 of { (HappyWrap13 [TextNode]
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_3 of { (HappyWrap15 [TextNode]
happy_var_3) -> 
	[TextNode] -> HappyAbsSyn
happyIn9
		 (TextNode
happy_var_1 TextNode -> [TextNode] -> [TextNode]
forall a. a -> [a] -> [a]
: [TextNode] -> [TextNode]
forall a. [a] -> [a]
reverse [TextNode]
happy_var_2 [TextNode] -> [TextNode] -> [TextNode]
forall a. [a] -> [a] -> [a]
++ [TextNode] -> [TextNode]
forall a. [a] -> [a]
reverse [TextNode]
happy_var_3
	)}}}

happyReduce_11 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_11 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce Int#
4# Int#
4# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_11
happyReduction_11 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_11 (HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap11
happyOut11 HappyAbsSyn
happy_x_1 of { (HappyWrap11 [TextNode]
happy_var_1) -> 
	case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_2 of { TextNode
happy_var_2 -> 
	case HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
happy_x_3 of { (HappyWrap13 [TextNode]
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_4 of { (HappyWrap15 [TextNode]
happy_var_4) -> 
	[TextNode] -> HappyAbsSyn
happyIn10
		 ([TextNode]
happy_var_1 [TextNode] -> [TextNode] -> [TextNode]
forall a. [a] -> [a] -> [a]
++ [TextNode
happy_var_2] [TextNode] -> [TextNode] -> [TextNode]
forall a. [a] -> [a] -> [a]
++ [TextNode] -> [TextNode]
forall a. [a] -> [a]
reverse [TextNode]
happy_var_3 [TextNode] -> [TextNode] -> [TextNode]
forall a. [a] -> [a] -> [a]
++ [TextNode] -> [TextNode]
forall a. [a] -> [a]
reverse [TextNode]
happy_var_4
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}}

happyReduce_12 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_12 = Int#
-> HappyAbsSyn
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_0  Int#
5# HappyAbsSyn
happyReduction_12
happyReduction_12 :: HappyAbsSyn
happyReduction_12  =  [TextNode] -> HappyAbsSyn
happyIn11
		 ([]
	)

happyReduce_13 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_13 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_2  Int#
5# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_13
happyReduction_13 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_13 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap11
happyOut11 HappyAbsSyn
happy_x_1 of { (HappyWrap11 [TextNode]
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap12
happyOut12 HappyAbsSyn
happy_x_2 of { (HappyWrap12 TextNode
happy_var_2) -> 
	[TextNode] -> HappyAbsSyn
happyIn11
		 (TextNode
happy_var_2 TextNode -> [TextNode] -> [TextNode]
forall a. a -> [a] -> [a]
: [TextNode]
happy_var_1
	)}}

happyReduce_14 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_14 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
6# HappyAbsSyn -> HappyAbsSyn
happyReduction_14
happyReduction_14 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_14 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn12
		 (TextNode
happy_var_1
	)}

happyReduce_15 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_15 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
6# HappyAbsSyn -> HappyAbsSyn
happyReduction_15
happyReduction_15 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_15 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn12
		 (TextNode
happy_var_1
	)}

happyReduce_16 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_16 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
6# HappyAbsSyn -> HappyAbsSyn
happyReduction_16
happyReduction_16 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_16 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn12
		 (TextNode
happy_var_1
	)}

happyReduce_17 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_17 = Int#
-> HappyAbsSyn
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_0  Int#
7# HappyAbsSyn
happyReduction_17
happyReduction_17 :: HappyAbsSyn
happyReduction_17  =  [TextNode] -> HappyAbsSyn
happyIn13
		 ([]
	)

happyReduce_18 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_18 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_2  Int#
7# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_18
happyReduction_18 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_18 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
happy_x_1 of { (HappyWrap13 [TextNode]
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap14
happyOut14 HappyAbsSyn
happy_x_2 of { (HappyWrap14 TextNode
happy_var_2) -> 
	[TextNode] -> HappyAbsSyn
happyIn13
		 (TextNode
happy_var_2 TextNode -> [TextNode] -> [TextNode]
forall a. a -> [a] -> [a]
: [TextNode]
happy_var_1
	)}}

happyReduce_19 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_19 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
8# HappyAbsSyn -> HappyAbsSyn
happyReduction_19
happyReduction_19 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_19 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn14
		 (TextNode
happy_var_1
	)}

happyReduce_20 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_20 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
8# HappyAbsSyn -> HappyAbsSyn
happyReduction_20
happyReduction_20 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_20 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn14
		 (TextNode
happy_var_1
	)}

happyReduce_21 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_21 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
8# HappyAbsSyn -> HappyAbsSyn
happyReduction_21
happyReduction_21 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_21 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn14
		 (TextNode
happy_var_1
	)}

happyReduce_22 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_22 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
8# HappyAbsSyn -> HappyAbsSyn
happyReduction_22
happyReduction_22 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_22 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn14
		 (TextNode
happy_var_1
	)}

happyReduce_23 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_23 = Int#
-> HappyAbsSyn
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_0  Int#
9# HappyAbsSyn
happyReduction_23
happyReduction_23 :: HappyAbsSyn
happyReduction_23  =  [TextNode] -> HappyAbsSyn
happyIn15
		 ([]
	)

happyReduce_24 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_24 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_2  Int#
9# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_24
happyReduction_24 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_24 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_1 of { (HappyWrap15 [TextNode]
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap16
happyOut16 HappyAbsSyn
happy_x_2 of { (HappyWrap16 TextNode
happy_var_2) -> 
	[TextNode] -> HappyAbsSyn
happyIn15
		 (TextNode
happy_var_2 TextNode -> [TextNode] -> [TextNode]
forall a. a -> [a] -> [a]
: [TextNode]
happy_var_1
	)}}

happyReduce_25 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_25 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
10# HappyAbsSyn -> HappyAbsSyn
happyReduction_25
happyReduction_25 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_25 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn16
		 (TextNode
happy_var_1
	)}

happyReduce_26 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_26 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
10# HappyAbsSyn -> HappyAbsSyn
happyReduction_26
happyReduction_26 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_26 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap17
happyOut17 HappyAbsSyn
happy_x_1 of { (HappyWrap17 TextNode
happy_var_1) -> 
	TextNode -> HappyAbsSyn
happyIn16
		 (TextNode
happy_var_1
	)}

happyReduce_27 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_27 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_2  Int#
10# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_27
happyReduction_27 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_27 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	case HappyAbsSyn -> HappyWrap17
happyOut17 HappyAbsSyn
happy_x_2 of { (HappyWrap17 TextNode
happy_var_2) -> 
	TextNode -> HappyAbsSyn
happyIn16
		 (NodeF TextLexeme TextNode -> TextNode
forall (f :: * -> *). f (Fix f) -> Fix f
Fix (NodeF TextLexeme TextNode -> TextNode)
-> NodeF TextLexeme TextNode -> TextNode
forall a b. (a -> b) -> a -> b
$ TextNode -> TextNode -> NodeF TextLexeme TextNode
forall lexeme a. a -> a -> NodeF lexeme a
Commented TextNode
happy_var_1 TextNode
happy_var_2
	)}}

happyReduce_28 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_28 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
11# HappyAbsSyn -> HappyAbsSyn
happyReduction_28
happyReduction_28 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_28 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn17
		 (TextNode
happy_var_1
	)}

happyReduce_29 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_29 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
11# HappyAbsSyn -> HappyAbsSyn
happyReduction_29
happyReduction_29 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_29 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn17
		 (TextNode
happy_var_1
	)}

happyReduce_30 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_30 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
11# HappyAbsSyn -> HappyAbsSyn
happyReduction_30
happyReduction_30 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_30 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn17
		 (TextNode
happy_var_1
	)}

happyReduce_31 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_31 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
11# HappyAbsSyn -> HappyAbsSyn
happyReduction_31
happyReduction_31 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_31 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn17
		 (TextNode
happy_var_1
	)}

happyReduce_32 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_32 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
11# HappyAbsSyn -> HappyAbsSyn
happyReduction_32
happyReduction_32 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_32 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn17
		 (TextNode
happy_var_1
	)}

happyReduce_33 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_33 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
11# HappyAbsSyn -> HappyAbsSyn
happyReduction_33
happyReduction_33 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_33 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn17
		 (TextNode
happy_var_1
	)}

happyReduce_34 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_34 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
11# HappyAbsSyn -> HappyAbsSyn
happyReduction_34
happyReduction_34 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_34 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn17
		 (TextNode
happy_var_1
	)}

happyReduce_35 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_35 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
11# HappyAbsSyn -> HappyAbsSyn
happyReduction_35
happyReduction_35 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_35 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn17
		 (TextNode
happy_var_1
	)}

happyReduce_36 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_36 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> TextNode -> TreeParser HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyMonadReduce Int#
1# Int#
11# HappyStk HappyAbsSyn -> TextNode -> TreeParser HappyAbsSyn
happyReduction_36
happyReduction_36 :: HappyStk HappyAbsSyn -> TextNode -> TreeParser HappyAbsSyn
happyReduction_36 (HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) TextNode
tk
	 = TreeParser TextNode
-> (TextNode -> TreeParser HappyAbsSyn) -> TreeParser HappyAbsSyn
forall a b. TreeParser a -> (a -> TreeParser b) -> TreeParser b
happyThen ((case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	( ([TextNode] -> TreeParser [TextNode])
-> TextNode -> TreeParser TextNode
recurse [TextNode] -> TreeParser [TextNode]
parseDecls TextNode
happy_var_1)})
	) (\TextNode
r -> HappyAbsSyn -> TreeParser HappyAbsSyn
forall a. a -> TreeParser a
happyReturn (TextNode -> HappyAbsSyn
happyIn17 TextNode
r))

happyReduce_37 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_37 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
11# HappyAbsSyn -> HappyAbsSyn
happyReduction_37
happyReduction_37 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_37 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn17
		 (TextNode
happy_var_1
	)}

happyReduce_38 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_38 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
11# HappyAbsSyn -> HappyAbsSyn
happyReduction_38
happyReduction_38 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_38 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn17
		 (TextNode
happy_var_1
	)}

happyReduce_39 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_39 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
11# HappyAbsSyn -> HappyAbsSyn
happyReduction_39
happyReduction_39 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_39 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn17
		 (TextNode
happy_var_1
	)}

happyReduce_40 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_40 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> TextNode -> TreeParser HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyMonadReduce Int#
1# Int#
11# HappyStk HappyAbsSyn -> TextNode -> TreeParser HappyAbsSyn
happyReduction_40
happyReduction_40 :: HappyStk HappyAbsSyn -> TextNode -> TreeParser HappyAbsSyn
happyReduction_40 (HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) TextNode
tk
	 = TreeParser TextNode
-> (TextNode -> TreeParser HappyAbsSyn) -> TreeParser HappyAbsSyn
forall a b. TreeParser a -> (a -> TreeParser b) -> TreeParser b
happyThen ((case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	( ([TextNode] -> TreeParser [TextNode])
-> TextNode -> TreeParser TextNode
recurse [TextNode] -> TreeParser [TextNode]
parseDecls TextNode
happy_var_1)})
	) (\TextNode
r -> HappyAbsSyn -> TreeParser HappyAbsSyn
forall a. a -> TreeParser a
happyReturn (TextNode -> HappyAbsSyn
happyIn17 TextNode
r))

happyReduce_41 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_41 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> TextNode -> TreeParser HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyMonadReduce Int#
1# Int#
11# HappyStk HappyAbsSyn -> TextNode -> TreeParser HappyAbsSyn
happyReduction_41
happyReduction_41 :: HappyStk HappyAbsSyn -> TextNode -> TreeParser HappyAbsSyn
happyReduction_41 (HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) TextNode
tk
	 = TreeParser TextNode
-> (TextNode -> TreeParser HappyAbsSyn) -> TreeParser HappyAbsSyn
forall a b. TreeParser a -> (a -> TreeParser b) -> TreeParser b
happyThen ((case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	( ([TextNode] -> TreeParser [TextNode])
-> TextNode -> TreeParser TextNode
recurse [TextNode] -> TreeParser [TextNode]
parseDecls TextNode
happy_var_1)})
	) (\TextNode
r -> HappyAbsSyn -> TreeParser HappyAbsSyn
forall a. a -> TreeParser a
happyReturn (TextNode -> HappyAbsSyn
happyIn17 TextNode
r))

happyReduce_42 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_42 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> TextNode -> TreeParser HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyMonadReduce Int#
1# Int#
11# HappyStk HappyAbsSyn -> TextNode -> TreeParser HappyAbsSyn
happyReduction_42
happyReduction_42 :: HappyStk HappyAbsSyn -> TextNode -> TreeParser HappyAbsSyn
happyReduction_42 (HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) TextNode
tk
	 = TreeParser TextNode
-> (TextNode -> TreeParser HappyAbsSyn) -> TreeParser HappyAbsSyn
forall a b. TreeParser a -> (a -> TreeParser b) -> TreeParser b
happyThen ((case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	( ([TextNode] -> TreeParser [TextNode])
-> TextNode -> TreeParser TextNode
recurse [TextNode] -> TreeParser [TextNode]
parseDecls TextNode
happy_var_1)})
	) (\TextNode
r -> HappyAbsSyn -> TreeParser HappyAbsSyn
forall a. a -> TreeParser a
happyReturn (TextNode -> HappyAbsSyn
happyIn17 TextNode
r))

happyReduce_43 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_43 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
11# HappyAbsSyn -> HappyAbsSyn
happyReduction_43
happyReduction_43 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_43 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn17
		 (TextNode
happy_var_1
	)}

happyReduce_44 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_44 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
11# HappyAbsSyn -> HappyAbsSyn
happyReduction_44
happyReduction_44 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_44 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> TextNode
happyOutTok HappyAbsSyn
happy_x_1 of { TextNode
happy_var_1 -> 
	TextNode -> HappyAbsSyn
happyIn17
		 (TextNode
happy_var_1
	)}

happyReduce_45 :: Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyReduce_45 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happySpecReduce_1  Int#
11# HappyAbsSyn -> HappyAbsSyn
happyReduction_45
happyReduction_45 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_45 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap12
happyOut12 HappyAbsSyn
happy_x_1 of { (HappyWrap12 TextNode
happy_var_1) -> 
	TextNode -> HappyAbsSyn
happyIn17
		 (TextNode
happy_var_1
	)}

happyNewToken :: Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyNewToken Int#
action Happy_IntList
sts HappyStk HappyAbsSyn
stk [] =
	Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyDoAction Int#
84# TextNode
forall a. a
notHappyAtAll Int#
action Happy_IntList
sts HappyStk HappyAbsSyn
stk []

happyNewToken Int#
action Happy_IntList
sts HappyStk HappyAbsSyn
stk (TextNode
tk:[TextNode]
tks) =
	let cont :: Int# -> TreeParser HappyAbsSyn
cont Int#
i = Int#
-> TextNode
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> [TextNode]
-> TreeParser HappyAbsSyn
happyDoAction Int#
i TextNode
tk Int#
action Happy_IntList
sts HappyStk HappyAbsSyn
stk [TextNode]
tks in
	case TextNode
tk of {
	Fix (PreprocIfndef TextLexeme
_ [TextNode]
body (Fix (PreprocElse []))) | [TextNode] -> Bool
isDefine [TextNode]
body -> Int# -> TreeParser HappyAbsSyn
cont Int#
1#;
	Fix (PreprocIfdef TextLexeme
_ [TextNode]
body (Fix (PreprocElse []))) | [TextNode] -> Bool
isDefine [TextNode]
body -> Int# -> TreeParser HappyAbsSyn
cont Int#
2#;
	Fix (PreprocIf TextNode
_ [TextNode]
body (Fix (PreprocElse []))) | [TextNode] -> Bool
isDefine [TextNode]
body -> Int# -> TreeParser HappyAbsSyn
cont Int#
3#;
	Fix (PreprocIfndef{}) | TextNode -> Bool
isPreproc TextNode
tk Bool -> Bool -> Bool
&& TextNode -> Bool
hasInclude TextNode
tk -> Int# -> TreeParser HappyAbsSyn
cont Int#
4#;
	Fix (PreprocIfdef{}) | TextNode -> Bool
isPreproc TextNode
tk Bool -> Bool -> Bool
&& TextNode -> Bool
hasInclude TextNode
tk -> Int# -> TreeParser HappyAbsSyn
cont Int#
5#;
	Fix (PreprocIf{}) | TextNode -> Bool
isPreproc TextNode
tk Bool -> Bool -> Bool
&& TextNode -> Bool
hasInclude TextNode
tk -> Int# -> TreeParser HappyAbsSyn
cont Int#
6#;
	Fix (Comment CommentStyle
Doxygen TextLexeme
_ [TextLexeme]
_ TextLexeme
_) -> Int# -> TreeParser HappyAbsSyn
cont Int#
7#;
	Fix (PreprocInclude{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
8#;
	Fix (PreprocDefine{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
9#;
	Fix (PreprocDefineConst{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
10#;
	Fix (PreprocDefineMacro{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
11#;
	Fix (PreprocIf{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
12#;
	Fix (PreprocIfdef{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
13#;
	Fix (PreprocIfndef{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
14#;
	Fix (PreprocElse{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
15#;
	Fix (PreprocElif{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
16#;
	Fix (PreprocUndef{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
17#;
	Fix (PreprocDefined{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
18#;
	Fix (PreprocScopedDefine{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
19#;
	Fix (MacroBodyStmt{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
20#;
	Fix (MacroBodyFunCall{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
21#;
	Fix (MacroParam{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
22#;
	Fix (StaticAssert{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
23#;
	Fix (LicenseDecl{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
24#;
	Fix (CopyrightDecl{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
25#;
	Fix (Comment{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
26#;
	Fix (CommentBlock{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
27#;
	Fix (Commented{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
28#;
	Fix (ExternC{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
29#;
	Fix (CompoundStmt{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
30#;
	Fix (NodeF TextLexeme TextNode
Break) -> Int# -> TreeParser HappyAbsSyn
cont Int#
31#;
	Fix (Goto{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
32#;
	Fix (NodeF TextLexeme TextNode
Continue) -> Int# -> TreeParser HappyAbsSyn
cont Int#
33#;
	Fix (Return{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
34#;
	Fix (SwitchStmt{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
35#;
	Fix (IfStmt{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
36#;
	Fix (ForStmt{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
37#;
	Fix (WhileStmt{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
38#;
	Fix (DoWhileStmt{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
39#;
	Fix (Case{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
40#;
	Fix (Default{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
41#;
	Fix (Label{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
42#;
	Fix (VLA{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
43#;
	Fix (VarDecl{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
44#;
	Fix (VarDecl{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
45#;
	Fix (DeclSpecArray{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
46#;
	Fix (InitialiserList{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
47#;
	Fix (UnaryExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
48#;
	Fix (BinaryExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
49#;
	Fix (TernaryExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
50#;
	Fix (AssignExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
51#;
	Fix (ParenExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
52#;
	Fix (CastExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
53#;
	Fix (CompoundExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
54#;
	Fix (SizeofExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
55#;
	Fix (SizeofType{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
56#;
	Fix (LiteralExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
57#;
	Fix (VarExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
58#;
	Fix (MemberAccess{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
59#;
	Fix (PointerAccess{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
60#;
	Fix (ArrayAccess{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
61#;
	Fix (FunctionCall{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
62#;
	Fix (CommentExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
63#;
	Fix (EnumConsts{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
64#;
	Fix (EnumDecl{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
65#;
	Fix (Enumerator{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
66#;
	Fix (Typedef{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
67#;
	Fix (TypedefFunction{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
68#;
	Fix (Struct{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
69#;
	Fix (Union{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
70#;
	Fix (MemberDecl{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
71#;
	Fix (TyConst{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
72#;
	Fix (TyPointer{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
73#;
	Fix (TyStruct{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
74#;
	Fix (TyFunc{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
75#;
	Fix (TyStd{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
76#;
	Fix (TyUserDefined{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
77#;
	Fix (FunctionDecl{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
78#;
	Fix (FunctionDefn{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
79#;
	Fix (FunctionPrototype{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
80#;
	Fix (NodeF TextLexeme TextNode
Ellipsis) -> Int# -> TreeParser HappyAbsSyn
cont Int#
81#;
	Fix (ConstDecl{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
82#;
	Fix (ConstDefn{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
83#;
	TextNode
_ -> ([TextNode], [String]) -> TreeParser HappyAbsSyn
forall a. ([TextNode], [String]) -> TreeParser a
happyError' ((TextNode
tkTextNode -> [TextNode] -> [TextNode]
forall a. a -> [a] -> [a]
:[TextNode]
tks), [])
	}

happyError_ :: [String] -> Int# -> TextNode -> [TextNode] -> TreeParser a
happyError_ [String]
explist Int#
84# TextNode
tk [TextNode]
tks = ([TextNode], [String]) -> TreeParser a
forall a. ([TextNode], [String]) -> TreeParser a
happyError' ([TextNode]
tks, [String]
explist)
happyError_ [String]
explist Int#
_ TextNode
tk [TextNode]
tks = ([TextNode], [String]) -> TreeParser a
forall a. ([TextNode], [String]) -> TreeParser a
happyError' ((TextNode
tkTextNode -> [TextNode] -> [TextNode]
forall a. a -> [a] -> [a]
:[TextNode]
tks), [String]
explist)

happyThen :: () => TreeParser a -> (a -> TreeParser b) -> TreeParser b
happyThen :: forall a b. TreeParser a -> (a -> TreeParser b) -> TreeParser b
happyThen = TreeParser a -> (a -> TreeParser b) -> TreeParser b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
(Prelude.>>=)
happyReturn :: () => a -> TreeParser a
happyReturn :: forall a. a -> TreeParser a
happyReturn = (a -> TreeParser a
forall (m :: * -> *) a. Monad m => a -> m a
Prelude.return)
happyThen1 :: m t -> (t -> t -> m b) -> t -> m b
happyThen1 m t
m t -> t -> m b
k t
tks = m t -> (t -> m b) -> m b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
(Prelude.>>=) m t
m (\t
a -> t -> t -> m b
k t
a t
tks)
happyReturn1 :: () => a -> b -> TreeParser a
happyReturn1 :: forall a b. a -> b -> TreeParser a
happyReturn1 = \a
a b
tks -> (a -> TreeParser a
forall (m :: * -> *) a. Monad m => a -> m a
Prelude.return) a
a
happyError' :: () => ([(TextNode)], [Prelude.String]) -> TreeParser a
happyError' :: forall a. ([TextNode], [String]) -> TreeParser a
happyError' = ([TextNode], [String]) -> TreeParser a
forall a. ([TextNode], [String]) -> TreeParser a
parseError
parseTranslationUnit :: [TextNode] -> TreeParser [TextNode]
parseTranslationUnit [TextNode]
tks = TreeParser [TextNode]
happySomeParser where
 happySomeParser :: TreeParser [TextNode]
happySomeParser = TreeParser HappyAbsSyn
-> (HappyAbsSyn -> TreeParser [TextNode]) -> TreeParser [TextNode]
forall a b. TreeParser a -> (a -> TreeParser b) -> TreeParser b
happyThen (Int# -> [TextNode] -> TreeParser HappyAbsSyn
happyParse Int#
0# [TextNode]
tks) (\HappyAbsSyn
x -> [TextNode] -> TreeParser [TextNode]
forall a. a -> TreeParser a
happyReturn (let {(HappyWrap6 [TextNode]
x') = HappyAbsSyn -> HappyWrap6
happyOut6 HappyAbsSyn
x} in [TextNode]
x'))

parseDecls :: [TextNode] -> TreeParser [TextNode]
parseDecls [TextNode]
tks = TreeParser [TextNode]
happySomeParser where
 happySomeParser :: TreeParser [TextNode]
happySomeParser = TreeParser HappyAbsSyn
-> (HappyAbsSyn -> TreeParser [TextNode]) -> TreeParser [TextNode]
forall a b. TreeParser a -> (a -> TreeParser b) -> TreeParser b
happyThen (Int# -> [TextNode] -> TreeParser HappyAbsSyn
happyParse Int#
1# [TextNode]
tks) (\HappyAbsSyn
x -> [TextNode] -> TreeParser [TextNode]
forall a. a -> TreeParser a
happyReturn (let {(HappyWrap15 [TextNode]
x') = HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
x} in [TextNode]
x'))

parseHeaderBody :: [TextNode] -> TreeParser [TextNode]
parseHeaderBody [TextNode]
tks = TreeParser [TextNode]
happySomeParser where
 happySomeParser :: TreeParser [TextNode]
happySomeParser = TreeParser HappyAbsSyn
-> (HappyAbsSyn -> TreeParser [TextNode]) -> TreeParser [TextNode]
forall a b. TreeParser a -> (a -> TreeParser b) -> TreeParser b
happyThen (Int# -> [TextNode] -> TreeParser HappyAbsSyn
happyParse Int#
2# [TextNode]
tks) (\HappyAbsSyn
x -> [TextNode] -> TreeParser [TextNode]
forall a. a -> TreeParser a
happyReturn (let {(HappyWrap9 [TextNode]
x') = HappyAbsSyn -> HappyWrap9
happyOut9 HappyAbsSyn
x} in [TextNode]
x'))

happySeq :: a -> b -> b
happySeq = a -> b -> b
forall a b. a -> b -> b
happyDontSeq


type TextLexeme = Lexeme Text
type TextNode = Node TextLexeme

newtype TreeParser a = TreeParser { forall a. TreeParser a -> Either String a
toEither :: Either String a }
    deriving ((forall a b. (a -> b) -> TreeParser a -> TreeParser b)
-> (forall a b. a -> TreeParser b -> TreeParser a)
-> Functor TreeParser
forall a b. a -> TreeParser b -> TreeParser a
forall a b. (a -> b) -> TreeParser a -> TreeParser b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: forall a b. a -> TreeParser b -> TreeParser a
$c<$ :: forall a b. a -> TreeParser b -> TreeParser a
fmap :: forall a b. (a -> b) -> TreeParser a -> TreeParser b
$cfmap :: forall a b. (a -> b) -> TreeParser a -> TreeParser b
Functor, Functor TreeParser
Functor TreeParser
-> (forall a. a -> TreeParser a)
-> (forall a b.
    TreeParser (a -> b) -> TreeParser a -> TreeParser b)
-> (forall a b c.
    (a -> b -> c) -> TreeParser a -> TreeParser b -> TreeParser c)
-> (forall a b. TreeParser a -> TreeParser b -> TreeParser b)
-> (forall a b. TreeParser a -> TreeParser b -> TreeParser a)
-> Applicative TreeParser
forall a. a -> TreeParser a
forall a b. TreeParser a -> TreeParser b -> TreeParser a
forall a b. TreeParser a -> TreeParser b -> TreeParser b
forall a b. TreeParser (a -> b) -> TreeParser a -> TreeParser b
forall a b c.
(a -> b -> c) -> TreeParser a -> TreeParser b -> TreeParser c
forall (f :: * -> *).
Functor f
-> (forall a. a -> f a)
-> (forall a b. f (a -> b) -> f a -> f b)
-> (forall a b c. (a -> b -> c) -> f a -> f b -> f c)
-> (forall a b. f a -> f b -> f b)
-> (forall a b. f a -> f b -> f a)
-> Applicative f
<* :: forall a b. TreeParser a -> TreeParser b -> TreeParser a
$c<* :: forall a b. TreeParser a -> TreeParser b -> TreeParser a
*> :: forall a b. TreeParser a -> TreeParser b -> TreeParser b
$c*> :: forall a b. TreeParser a -> TreeParser b -> TreeParser b
liftA2 :: forall a b c.
(a -> b -> c) -> TreeParser a -> TreeParser b -> TreeParser c
$cliftA2 :: forall a b c.
(a -> b -> c) -> TreeParser a -> TreeParser b -> TreeParser c
<*> :: forall a b. TreeParser (a -> b) -> TreeParser a -> TreeParser b
$c<*> :: forall a b. TreeParser (a -> b) -> TreeParser a -> TreeParser b
pure :: forall a. a -> TreeParser a
$cpure :: forall a. a -> TreeParser a
Applicative, Applicative TreeParser
Applicative TreeParser
-> (forall a b.
    TreeParser a -> (a -> TreeParser b) -> TreeParser b)
-> (forall a b. TreeParser a -> TreeParser b -> TreeParser b)
-> (forall a. a -> TreeParser a)
-> Monad TreeParser
forall a. a -> TreeParser a
forall a b. TreeParser a -> TreeParser b -> TreeParser b
forall a b. TreeParser a -> (a -> TreeParser b) -> TreeParser b
forall (m :: * -> *).
Applicative m
-> (forall a b. m a -> (a -> m b) -> m b)
-> (forall a b. m a -> m b -> m b)
-> (forall a. a -> m a)
-> Monad m
return :: forall a. a -> TreeParser a
$creturn :: forall a. a -> TreeParser a
>> :: forall a b. TreeParser a -> TreeParser b -> TreeParser b
$c>> :: forall a b. TreeParser a -> TreeParser b -> TreeParser b
>>= :: forall a b. TreeParser a -> (a -> TreeParser b) -> TreeParser b
$c>>= :: forall a b. TreeParser a -> (a -> TreeParser b) -> TreeParser b
Monad)

instance MonadFail TreeParser where
    fail :: forall a. String -> TreeParser a
fail = Either String a -> TreeParser a
forall a. Either String a -> TreeParser a
TreeParser (Either String a -> TreeParser a)
-> (String -> Either String a) -> String -> TreeParser a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Either String a
forall a b. a -> Either a b
Left


isDefine :: [TextNode] -> Bool
isDefine :: [TextNode] -> Bool
isDefine (Fix PreprocUndef{}:[TextNode]
d)     = [TextNode] -> Bool
isDefine [TextNode]
d
isDefine [Fix PreprocDefine{}]      = Bool
True
isDefine [Fix PreprocDefineConst{}] = Bool
True
isDefine [TextNode]
_                          = Bool
False

isPreproc :: TextNode -> Bool
isPreproc :: TextNode -> Bool
isPreproc (Fix PreprocInclude{})        = Bool
True
isPreproc (Fix PreprocUndef{})          = Bool
True
isPreproc (Fix PreprocDefine{})         = Bool
True
isPreproc (Fix PreprocDefineConst{})    = Bool
True
isPreproc (Fix (PreprocIf TextNode
_ [TextNode]
td TextNode
ed))     = (TextNode -> Bool) -> [TextNode] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all TextNode -> Bool
isPreproc [TextNode]
td Bool -> Bool -> Bool
&& TextNode -> Bool
isPreproc TextNode
ed
isPreproc (Fix (PreprocIfdef TextLexeme
_ [TextNode]
td TextNode
ed))  = (TextNode -> Bool) -> [TextNode] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all TextNode -> Bool
isPreproc [TextNode]
td Bool -> Bool -> Bool
&& TextNode -> Bool
isPreproc TextNode
ed
isPreproc (Fix (PreprocIfndef TextLexeme
_ [TextNode]
td TextNode
ed)) = (TextNode -> Bool) -> [TextNode] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all TextNode -> Bool
isPreproc [TextNode]
td Bool -> Bool -> Bool
&& TextNode -> Bool
isPreproc TextNode
ed
isPreproc (Fix (PreprocElse [TextNode]
ed))        = (TextNode -> Bool) -> [TextNode] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all TextNode -> Bool
isPreproc [TextNode]
ed
isPreproc TextNode
_                             = Bool
False

hasInclude :: TextNode -> Bool
hasInclude :: TextNode -> Bool
hasInclude (Fix PreprocInclude{})        = Bool
True
hasInclude (Fix (PreprocIf TextNode
_ [TextNode]
td TextNode
ed))     = (TextNode -> Bool) -> [TextNode] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any TextNode -> Bool
hasInclude [TextNode]
td Bool -> Bool -> Bool
|| TextNode -> Bool
hasInclude TextNode
ed
hasInclude (Fix (PreprocIfdef TextLexeme
_ [TextNode]
td TextNode
ed))  = (TextNode -> Bool) -> [TextNode] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any TextNode -> Bool
hasInclude [TextNode]
td Bool -> Bool -> Bool
|| TextNode -> Bool
hasInclude TextNode
ed
hasInclude (Fix (PreprocIfndef TextLexeme
_ [TextNode]
td TextNode
ed)) = (TextNode -> Bool) -> [TextNode] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any TextNode -> Bool
hasInclude [TextNode]
td Bool -> Bool -> Bool
|| TextNode -> Bool
hasInclude TextNode
ed
hasInclude (Fix (PreprocElse [TextNode]
ed))        = (TextNode -> Bool) -> [TextNode] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any TextNode -> Bool
hasInclude [TextNode]
ed
hasInclude TextNode
_                             = Bool
False


recurse :: ([TextNode] -> TreeParser [TextNode]) -> TextNode -> TreeParser TextNode
recurse :: ([TextNode] -> TreeParser [TextNode])
-> TextNode -> TreeParser TextNode
recurse [TextNode] -> TreeParser [TextNode]
f (Fix (ExternC [TextNode]
ds))          = NodeF TextLexeme TextNode -> TextNode
forall (f :: * -> *). f (Fix f) -> Fix f
Fix (NodeF TextLexeme TextNode -> TextNode)
-> TreeParser (NodeF TextLexeme TextNode) -> TreeParser TextNode
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ([TextNode] -> NodeF TextLexeme TextNode
forall lexeme a. [a] -> NodeF lexeme a
ExternC ([TextNode] -> NodeF TextLexeme TextNode)
-> TreeParser [TextNode] -> TreeParser (NodeF TextLexeme TextNode)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TextNode] -> TreeParser [TextNode]
f [TextNode]
ds)
recurse [TextNode] -> TreeParser [TextNode]
f (Fix (PreprocIf TextNode
c [TextNode]
t TextNode
e))     = NodeF TextLexeme TextNode -> TextNode
forall (f :: * -> *). f (Fix f) -> Fix f
Fix (NodeF TextLexeme TextNode -> TextNode)
-> TreeParser (NodeF TextLexeme TextNode) -> TreeParser TextNode
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (TextNode -> [TextNode] -> TextNode -> NodeF TextLexeme TextNode
forall lexeme a. a -> [a] -> a -> NodeF lexeme a
PreprocIf TextNode
c ([TextNode] -> TextNode -> NodeF TextLexeme TextNode)
-> TreeParser [TextNode]
-> TreeParser (TextNode -> NodeF TextLexeme TextNode)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TextNode] -> TreeParser [TextNode]
f [TextNode]
t TreeParser (TextNode -> NodeF TextLexeme TextNode)
-> TreeParser TextNode -> TreeParser (NodeF TextLexeme TextNode)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ([TextNode] -> TreeParser [TextNode])
-> TextNode -> TreeParser TextNode
recurse [TextNode] -> TreeParser [TextNode]
f TextNode
e)
recurse [TextNode] -> TreeParser [TextNode]
f (Fix (PreprocIfdef TextLexeme
c [TextNode]
t TextNode
e))  = NodeF TextLexeme TextNode -> TextNode
forall (f :: * -> *). f (Fix f) -> Fix f
Fix (NodeF TextLexeme TextNode -> TextNode)
-> TreeParser (NodeF TextLexeme TextNode) -> TreeParser TextNode
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (TextLexeme -> [TextNode] -> TextNode -> NodeF TextLexeme TextNode
forall lexeme a. lexeme -> [a] -> a -> NodeF lexeme a
PreprocIfdef TextLexeme
c ([TextNode] -> TextNode -> NodeF TextLexeme TextNode)
-> TreeParser [TextNode]
-> TreeParser (TextNode -> NodeF TextLexeme TextNode)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TextNode] -> TreeParser [TextNode]
f [TextNode]
t TreeParser (TextNode -> NodeF TextLexeme TextNode)
-> TreeParser TextNode -> TreeParser (NodeF TextLexeme TextNode)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ([TextNode] -> TreeParser [TextNode])
-> TextNode -> TreeParser TextNode
recurse [TextNode] -> TreeParser [TextNode]
f TextNode
e)
recurse [TextNode] -> TreeParser [TextNode]
f (Fix (PreprocIfndef TextLexeme
c [TextNode]
t TextNode
e)) = NodeF TextLexeme TextNode -> TextNode
forall (f :: * -> *). f (Fix f) -> Fix f
Fix (NodeF TextLexeme TextNode -> TextNode)
-> TreeParser (NodeF TextLexeme TextNode) -> TreeParser TextNode
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (TextLexeme -> [TextNode] -> TextNode -> NodeF TextLexeme TextNode
forall lexeme a. lexeme -> [a] -> a -> NodeF lexeme a
PreprocIfndef TextLexeme
c ([TextNode] -> TextNode -> NodeF TextLexeme TextNode)
-> TreeParser [TextNode]
-> TreeParser (TextNode -> NodeF TextLexeme TextNode)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TextNode] -> TreeParser [TextNode]
f [TextNode]
t TreeParser (TextNode -> NodeF TextLexeme TextNode)
-> TreeParser TextNode -> TreeParser (NodeF TextLexeme TextNode)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ([TextNode] -> TreeParser [TextNode])
-> TextNode -> TreeParser TextNode
recurse [TextNode] -> TreeParser [TextNode]
f TextNode
e)
recurse [TextNode] -> TreeParser [TextNode]
f (Fix (PreprocIfndef TextLexeme
c [TextNode]
t TextNode
e)) = NodeF TextLexeme TextNode -> TextNode
forall (f :: * -> *). f (Fix f) -> Fix f
Fix (NodeF TextLexeme TextNode -> TextNode)
-> TreeParser (NodeF TextLexeme TextNode) -> TreeParser TextNode
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (TextLexeme -> [TextNode] -> TextNode -> NodeF TextLexeme TextNode
forall lexeme a. lexeme -> [a] -> a -> NodeF lexeme a
PreprocIfndef TextLexeme
c ([TextNode] -> TextNode -> NodeF TextLexeme TextNode)
-> TreeParser [TextNode]
-> TreeParser (TextNode -> NodeF TextLexeme TextNode)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TextNode] -> TreeParser [TextNode]
f [TextNode]
t TreeParser (TextNode -> NodeF TextLexeme TextNode)
-> TreeParser TextNode -> TreeParser (NodeF TextLexeme TextNode)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ([TextNode] -> TreeParser [TextNode])
-> TextNode -> TreeParser TextNode
recurse [TextNode] -> TreeParser [TextNode]
f TextNode
e)
recurse [TextNode] -> TreeParser [TextNode]
f (Fix (PreprocElif TextNode
c [TextNode]
t TextNode
e))   = NodeF TextLexeme TextNode -> TextNode
forall (f :: * -> *). f (Fix f) -> Fix f
Fix (NodeF TextLexeme TextNode -> TextNode)
-> TreeParser (NodeF TextLexeme TextNode) -> TreeParser TextNode
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (TextNode -> [TextNode] -> TextNode -> NodeF TextLexeme TextNode
forall lexeme a. a -> [a] -> a -> NodeF lexeme a
PreprocElif TextNode
c ([TextNode] -> TextNode -> NodeF TextLexeme TextNode)
-> TreeParser [TextNode]
-> TreeParser (TextNode -> NodeF TextLexeme TextNode)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TextNode] -> TreeParser [TextNode]
f [TextNode]
t TreeParser (TextNode -> NodeF TextLexeme TextNode)
-> TreeParser TextNode -> TreeParser (NodeF TextLexeme TextNode)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ([TextNode] -> TreeParser [TextNode])
-> TextNode -> TreeParser TextNode
recurse [TextNode] -> TreeParser [TextNode]
f TextNode
e)
recurse [TextNode] -> TreeParser [TextNode]
f (Fix (PreprocElse []))      = TextNode -> TreeParser TextNode
forall (m :: * -> *) a. Monad m => a -> m a
return (TextNode -> TreeParser TextNode)
-> TextNode -> TreeParser TextNode
forall a b. (a -> b) -> a -> b
$ NodeF TextLexeme TextNode -> TextNode
forall (f :: * -> *). f (Fix f) -> Fix f
Fix (NodeF TextLexeme TextNode -> TextNode)
-> NodeF TextLexeme TextNode -> TextNode
forall a b. (a -> b) -> a -> b
$ [TextNode] -> NodeF TextLexeme TextNode
forall lexeme a. [a] -> NodeF lexeme a
PreprocElse []
recurse [TextNode] -> TreeParser [TextNode]
f (Fix (PreprocElse [TextNode]
e))       = NodeF TextLexeme TextNode -> TextNode
forall (f :: * -> *). f (Fix f) -> Fix f
Fix (NodeF TextLexeme TextNode -> TextNode)
-> TreeParser (NodeF TextLexeme TextNode) -> TreeParser TextNode
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ([TextNode] -> NodeF TextLexeme TextNode
forall lexeme a. [a] -> NodeF lexeme a
PreprocElse ([TextNode] -> NodeF TextLexeme TextNode)
-> TreeParser [TextNode] -> TreeParser (NodeF TextLexeme TextNode)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TextNode] -> TreeParser [TextNode]
f [TextNode]
e)
recurse [TextNode] -> TreeParser [TextNode]
_ TextNode
ns                          = String -> TreeParser TextNode
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> TreeParser TextNode) -> String -> TreeParser TextNode
forall a b. (a -> b) -> a -> b
$ String
"TreeParser.recurse: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> TextNode -> String
forall a. Show a => a -> String
show TextNode
ns


parseError :: ([TextNode], [String]) -> TreeParser a
parseError :: forall a. ([TextNode], [String]) -> TreeParser a
parseError ([], [String]
options)  = String -> TreeParser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> TreeParser a) -> String -> TreeParser a
forall a b. (a -> b) -> a -> b
$ String
"end of file; expected one of " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> [String] -> String
forall a. Show a => a -> String
show [String]
options
parseError (TextNode
n:[TextNode]
_, [])      = String -> TreeParser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> TreeParser a) -> String -> TreeParser a
forall a b. (a -> b) -> a -> b
$ TextNode -> String
forall a. Show a => a -> String
show TextNode
n String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"; expected end of file"
parseError (TextNode
n:[TextNode]
_, [String]
options) = String -> TreeParser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> TreeParser a) -> String -> TreeParser a
forall a b. (a -> b) -> a -> b
$ TextNode -> String
forall a. Show a => a -> String
show TextNode
n String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"; expected one of " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> [String] -> String
forall a. Show a => a -> String
show [String]
options
{-# LINE 1 "templates/GenericTemplate.hs" #-}
-- $Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp $













-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.
#if __GLASGOW_HASKELL__ > 706
#define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Prelude.Bool)
#define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Prelude.Bool)
#define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Prelude.Bool)
#else
#define LT(n,m) (n Happy_GHC_Exts.<# m)
#define GTE(n,m) (n Happy_GHC_Exts.>=# m)
#define EQ(n,m) (n Happy_GHC_Exts.==# m)
#endif



















data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList








































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 ERROR_TOK, it means we've just accepted a partial
-- parse (a %partial parser).  We must ignore the saved token on the top of
-- the stack in this case.
happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =
        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 (happyExpListPerState ((Happy_GHC_Exts.I# (st)) :: Prelude.Int)) i tk st
                -1#          -> {- nothing -}
                                     happyAccept i tk st
                n | LT(n,(0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
                                                   (happyReduceArr Happy_Data_Array.! rule) i tk st
                                                   where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
                n                 -> {- nothing -}
                                     happyShift new_state i tk st
                                     where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
   where off    = happyAdjustOffset (indexShortOffAddr happyActOffsets st)
         off_i  = (off Happy_GHC_Exts.+# i)
         check  = if GTE(off_i,(0# :: Happy_GHC_Exts.Int#))
                  then EQ(indexShortOffAddr happyCheck off_i, i)
                  else Prelude.False
         action
          | check     = indexShortOffAddr happyTable off_i
          | Prelude.otherwise = indexShortOffAddr happyDefActions st




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#




{-# INLINE happyLt #-}
happyLt x y = LT(x,y)


readArrayBit arr bit =
    Bits.testBit (Happy_GHC_Exts.I# (indexShortOffAddr arr ((unbox_int bit) `Happy_GHC_Exts.iShiftRA#` 4#))) (bit `Prelude.mod` 16)
  where unbox_int (Happy_GHC_Exts.I# x) = x






data HappyAddr = HappyA# Happy_GHC_Exts.Addr#


-----------------------------------------------------------------------------
-- HappyState data type (not arrays)













-----------------------------------------------------------------------------
-- 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 =
      case happyDrop k (HappyCons (st) (sts)) of
        sts1@((HappyCons (st1@(action)) (_))) ->
          let drop_stk = happyDropStk k stk in
          happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_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 =
      case happyDrop k (HappyCons (st) (sts)) of
        sts1@((HappyCons (st1@(action)) (_))) ->
         let drop_stk = happyDropStk k stk

             off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st1)
             off_i = (off Happy_GHC_Exts.+# nt)
             new_state = indexShortOffAddr happyTable off_i




          in
          happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))

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 = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st)
         off_i = (off Happy_GHC_Exts.+# nt)
         new_state = indexShortOffAddr happyTable off_i




-----------------------------------------------------------------------------
-- Error recovery (ERROR_TOK is the error token)

-- parse error if we are in recovery and we fail again
happyFail explist 0# tk old_st _ stk@(x `HappyStk` _) =
     let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
--      trace "failing" $ 
        happyError_ explist i 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  ERROR_TOK tk old_st CONS(HAPPYSTATE(action),sts) 
                                                (saved_tok `HappyStk` _ `HappyStk` stk) =
--      trace ("discarding state, depth " ++ show (length stk))  $
        DO_ACTION(action,ERROR_TOK,tk,sts,(saved_tok`HappyStk`stk))
-}

-- Enter error recovery: generate an error token,
--                       save the old token and carry on.
happyFail explist i tk (action) sts stk =
--      trace "entering error recovery" $
        happyDoAction 0# tk action sts ((Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)

-- Internal happy errors:

notHappyAtAll :: a
notHappyAtAll = Prelude.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 `Prelude.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.