{-# 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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\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\x00\x1c\xfd\x00\x49\x00\x00\x00\x00\xec\x00\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x20\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xfc\x00\x41\x00\x00\x00\x00\xec\x00\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\xfa\x01\x92\x00\x00\x00\x00\xd8\x01\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x7e\x80\x24\x00\x00\x00\x00\x76\x80\x31\x00\x00"#

{-# NOINLINE happyExpListPerState #-}
happyExpListPerState :: Int -> [[Char]]
happyExpListPerState Int
st =
    [[Char]]
token_strs_expected
  where token_strs :: [[Char]]
token_strs = [[Char]
"error",[Char]
"%dummy",[Char]
"%start_parseTranslationUnit",[Char]
"%start_parseDecls",[Char]
"%start_parseHeaderBody",[Char]
"TranslationUnit",[Char]
"FileComment",[Char]
"Header",[Char]
"HeaderBody",[Char]
"Source",[Char]
"Features",[Char]
"IfDefine",[Char]
"Includes",[Char]
"Include",[Char]
"Decls",[Char]
"Decl",[Char]
"CommentableDecl",[Char]
"ifndefDefine",[Char]
"ifdefDefine",[Char]
"ifDefine",[Char]
"ifndefInclude",[Char]
"ifdefInclude",[Char]
"ifInclude",[Char]
"docComment",[Char]
"preprocInclude",[Char]
"preprocDefine",[Char]
"preprocDefineConst",[Char]
"preprocDefineMacro",[Char]
"preprocIf",[Char]
"preprocIfdef",[Char]
"preprocIfndef",[Char]
"preprocElse",[Char]
"preprocElif",[Char]
"preprocUndef",[Char]
"preprocDefined",[Char]
"preprocScopedDefine",[Char]
"macroBodyStmt",[Char]
"macroBodyFunCall",[Char]
"macroParam",[Char]
"staticAssert",[Char]
"licenseDecl",[Char]
"copyrightDecl",[Char]
"comment",[Char]
"commentBlock",[Char]
"commented",[Char]
"externC",[Char]
"compoundStmt",[Char]
"break",[Char]
"goto",[Char]
"continue",[Char]
"return",[Char]
"switchStmt",[Char]
"ifStmt",[Char]
"forStmt",[Char]
"whileStmt",[Char]
"doWhileStmt",[Char]
"case",[Char]
"default",[Char]
"label",[Char]
"vLA",[Char]
"varDecl",[Char]
"declarator",[Char]
"declSpecVar",[Char]
"declSpecArray",[Char]
"initialiserList",[Char]
"unaryExpr",[Char]
"binaryExpr",[Char]
"ternaryExpr",[Char]
"assignExpr",[Char]
"parenExpr",[Char]
"castExpr",[Char]
"compoundExpr",[Char]
"sizeofExpr",[Char]
"sizeofType",[Char]
"literalExpr",[Char]
"varExpr",[Char]
"memberAccess",[Char]
"pointerAccess",[Char]
"arrayAccess",[Char]
"functionCall",[Char]
"commentExpr",[Char]
"enumConsts",[Char]
"enumDecl",[Char]
"enumerator",[Char]
"typedef",[Char]
"typedefFunction",[Char]
"struct",[Char]
"union",[Char]
"memberDecl",[Char]
"tyConst",[Char]
"tyPointer",[Char]
"tyStruct",[Char]
"tyFunc",[Char]
"tyStd",[Char]
"tyUserDefined",[Char]
"functionDecl",[Char]
"functionDefn",[Char]
"functionPrototype",[Char]
"functionParam",[Char]
"ellipsis",[Char]
"constDecl",[Char]
"constDefn",[Char]
"%eof"]
        bit_start :: Int
bit_start = Int
st Int -> Int -> Int
forall a. Num a => a -> a -> a
Prelude.* Int
103
        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
103
        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
102]
        token_strs_expected :: [[Char]]
token_strs_expected = ((Bool, Int) -> [[Char]]) -> [(Bool, Int)] -> [[Char]]
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
Prelude.concatMap (Bool, Int) -> [[Char]]
f [(Bool, Int)]
bits_indexed
        f :: (Bool, Int) -> [[Char]]
f (Bool
Prelude.False, Int
_) = []
        f (Bool
Prelude.True, Int
nr) = [[[Char]]
token_strs [[Char]] -> Int -> [Char]
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\xcc\xff\x00\x00\x01\x00\xcc\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\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3a\x00\x0b\x00\x00\x00\x35\x00\x2e\x00\x00\x00\x00\x00\x3e\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\x56\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\x07\x00\x41\x00\x42\x00\x06\x00\x44\x00\x45\x00\x46\x00\x02\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\xff\xff\xff\xff\xff\xff\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x01\x00\x02\x00\x03\x00\x54\x00\x55\x00\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\xff\xff\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\xff\xff\xff\xff\xff\xff\x54\x00\x55\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\x2a\x00\x22\x00\x23\x00\x34\x00\x24\x00\x25\x00\x26\x00\x2c\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\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\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\x15\x00\x16\x00\x17\x00\x29\x00\x2a\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\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\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
87 :: 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 k1. k1 -> [k1] -> [k1]
: TextNode
happy_var_2 TextNode -> [TextNode] -> [TextNode]
forall k1. k1 -> [k1] -> [k1]
: [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 k1. k1 -> [k1] -> [k1]
: [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 k1. k1 -> [k1] -> [k1]
: [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 k1. k1 -> [k1] -> [k1]
: [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 k1. k1 -> [k1] -> [k1]
: [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 k1. k1 -> [k1] -> [k1]
: [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#
86# 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 (Declarator{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
45#;
	Fix (DeclSpecVar{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
46#;
	Fix (DeclSpecArray{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
47#;
	Fix (InitialiserList{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
48#;
	Fix (UnaryExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
49#;
	Fix (BinaryExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
50#;
	Fix (TernaryExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
51#;
	Fix (AssignExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
52#;
	Fix (ParenExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
53#;
	Fix (CastExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
54#;
	Fix (CompoundExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
55#;
	Fix (SizeofExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
56#;
	Fix (SizeofType{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
57#;
	Fix (LiteralExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
58#;
	Fix (VarExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
59#;
	Fix (MemberAccess{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
60#;
	Fix (PointerAccess{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
61#;
	Fix (ArrayAccess{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
62#;
	Fix (FunctionCall{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
63#;
	Fix (CommentExpr{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
64#;
	Fix (EnumConsts{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
65#;
	Fix (EnumDecl{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
66#;
	Fix (Enumerator{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
67#;
	Fix (Typedef{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
68#;
	Fix (TypedefFunction{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
69#;
	Fix (Struct{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
70#;
	Fix (Union{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
71#;
	Fix (MemberDecl{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
72#;
	Fix (TyConst{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
73#;
	Fix (TyPointer{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
74#;
	Fix (TyStruct{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
75#;
	Fix (TyFunc{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
76#;
	Fix (TyStd{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
77#;
	Fix (TyUserDefined{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
78#;
	Fix (FunctionDecl{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
79#;
	Fix (FunctionDefn{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
80#;
	Fix (FunctionPrototype{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
81#;
	Fix (FunctionParam{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
82#;
	Fix (NodeF TextLexeme TextNode
Ellipsis) -> Int# -> TreeParser HappyAbsSyn
cont Int#
83#;
	Fix (ConstDecl{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
84#;
	Fix (ConstDefn{}) -> Int# -> TreeParser HappyAbsSyn
cont Int#
85#;
	TextNode
_ -> ([TextNode], [[Char]]) -> TreeParser HappyAbsSyn
forall a. ([TextNode], [[Char]]) -> TreeParser a
happyError' ((TextNode
tkTextNode -> [TextNode] -> [TextNode]
forall k1. k1 -> [k1] -> [k1]
:[TextNode]
tks), [])
	}

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

happyThen :: () => TreeParser a -> (a -> TreeParser b) -> TreeParser b
happyThen :: 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 :: 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 :: 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' :: ([TextNode], [[Char]]) -> TreeParser a
happyError' = ([TextNode], [[Char]]) -> TreeParser a
forall a. ([TextNode], [[Char]]) -> 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 { TreeParser a -> Either [Char] a
toEither :: Either String a }
    deriving (a -> TreeParser b -> TreeParser a
(a -> b) -> TreeParser a -> TreeParser b
(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
<$ :: a -> TreeParser b -> TreeParser a
$c<$ :: forall a b. a -> TreeParser b -> TreeParser a
fmap :: (a -> b) -> TreeParser a -> TreeParser b
$cfmap :: forall a b. (a -> b) -> TreeParser a -> TreeParser b
Functor, Functor TreeParser
a -> TreeParser a
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
TreeParser a -> TreeParser b -> TreeParser b
TreeParser a -> TreeParser b -> TreeParser a
TreeParser (a -> b) -> TreeParser a -> TreeParser b
(a -> b -> c) -> TreeParser a -> TreeParser b -> TreeParser c
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
<* :: TreeParser a -> TreeParser b -> TreeParser a
$c<* :: forall a b. TreeParser a -> TreeParser b -> TreeParser a
*> :: TreeParser a -> TreeParser b -> TreeParser b
$c*> :: forall a b. TreeParser a -> TreeParser b -> TreeParser b
liftA2 :: (a -> b -> c) -> TreeParser a -> TreeParser b -> TreeParser c
$cliftA2 :: forall a b c.
(a -> b -> c) -> TreeParser a -> TreeParser b -> TreeParser c
<*> :: TreeParser (a -> b) -> TreeParser a -> TreeParser b
$c<*> :: forall a b. TreeParser (a -> b) -> TreeParser a -> TreeParser b
pure :: a -> TreeParser a
$cpure :: forall a. a -> TreeParser a
$cp1Applicative :: Functor TreeParser
Applicative, Applicative TreeParser
a -> TreeParser a
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
TreeParser a -> (a -> TreeParser b) -> TreeParser b
TreeParser a -> TreeParser b -> TreeParser b
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 :: a -> TreeParser a
$creturn :: forall a. a -> TreeParser a
>> :: TreeParser a -> TreeParser b -> TreeParser b
$c>> :: forall a b. TreeParser a -> TreeParser b -> TreeParser b
>>= :: TreeParser a -> (a -> TreeParser b) -> TreeParser b
$c>>= :: forall a b. TreeParser a -> (a -> TreeParser b) -> TreeParser b
$cp1Monad :: Applicative TreeParser
Monad)

instance MonadFail TreeParser where
    fail :: [Char] -> TreeParser a
fail = Either [Char] a -> TreeParser a
forall a. Either [Char] a -> TreeParser a
TreeParser (Either [Char] a -> TreeParser a)
-> ([Char] -> Either [Char] a) -> [Char] -> TreeParser a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Char] -> Either [Char] 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                          = [Char] -> TreeParser TextNode
forall (m :: * -> *) a. MonadFail m => [Char] -> m a
fail ([Char] -> TreeParser TextNode) -> [Char] -> TreeParser TextNode
forall a b. (a -> b) -> a -> b
$ [Char]
"TreeParser.recurse: " [Char] -> [Char] -> [Char]
forall a. Semigroup a => a -> a -> a
<> TextNode -> [Char]
forall a. Show a => a -> [Char]
show TextNode
ns


parseError :: ([TextNode], [String]) -> TreeParser a
parseError :: ([TextNode], [[Char]]) -> TreeParser a
parseError ([], [[Char]]
options)  = [Char] -> TreeParser a
forall (m :: * -> *) a. MonadFail m => [Char] -> m a
fail ([Char] -> TreeParser a) -> [Char] -> TreeParser a
forall a b. (a -> b) -> a -> b
$ [Char]
"end of file; expected one of " [Char] -> [Char] -> [Char]
forall a. Semigroup a => a -> a -> a
<> [[Char]] -> [Char]
forall a. Show a => a -> [Char]
show [[Char]]
options
parseError (TextNode
n:[TextNode]
_, [])      = [Char] -> TreeParser a
forall (m :: * -> *) a. MonadFail m => [Char] -> m a
fail ([Char] -> TreeParser a) -> [Char] -> TreeParser a
forall a b. (a -> b) -> a -> b
$ TextNode -> [Char]
forall a. Show a => a -> [Char]
show TextNode
n [Char] -> [Char] -> [Char]
forall a. Semigroup a => a -> a -> a
<> [Char]
"; expected end of file"
parseError (TextNode
n:[TextNode]
_, [[Char]]
options) = [Char] -> TreeParser a
forall (m :: * -> *) a. MonadFail m => [Char] -> m a
fail ([Char] -> TreeParser a) -> [Char] -> TreeParser a
forall a b. (a -> b) -> a -> b
$ TextNode -> [Char]
forall a. Show a => a -> [Char]
show TextNode
n [Char] -> [Char] -> [Char]
forall a. Semigroup a => a -> a -> a
<> [Char]
"; expected one of " [Char] -> [Char] -> [Char]
forall a. Semigroup a => a -> a -> a
<> [[Char]] -> [Char]
forall a. Show a => a -> [Char]
show [[Char]]
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.