{-# OPTIONS_GHC -w #-} {-# OPTIONS -XMagicHash -XBangPatterns -XTypeSynonymInstances -XFlexibleInstances -cpp #-} #if __GLASGOW_HASKELL__ >= 710 {-# OPTIONS_GHC -XPartialTypeSignatures #-} #endif -------------------------------------------------------------------- -- | -- Module : Language.Dot.Parser -- License : GPL-3 -- -- Maintainer : Marcelo Garlet Millani -- Stability : experimental -- Portability : portable -- -- Parsing function and abstract syntax tree for the [DOT language] -- (https://www.graphviz.org/doc/info/lang.html). -- -- The parser is implemented using `happy`, and so is fairly fast. -------------------------------------------------------------------- module Language.Dot.Parser (parse , GraphType(..) , Name(..) , Statement(..) , Subgraph(..) , Port(..) , Compass(..) ) where import HappyDot.Parser import Language.Dot.Graph import Data.Char import Control.Monad.Trans.State import qualified Debug.Trace as D 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.19.12 newtype HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 = HappyAbsSyn HappyAny #if __GLASGOW_HASKELL__ >= 607 type HappyAny = Happy_GHC_Exts.Any #else type HappyAny = forall a . a #endif happyIn4 :: t4 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn4 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn4 #-} happyOut4 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t4 happyOut4 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut4 #-} happyIn5 :: t5 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn5 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn5 #-} happyOut5 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t5 happyOut5 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut5 #-} happyIn6 :: t6 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn6 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn6 #-} happyOut6 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t6 happyOut6 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut6 #-} happyIn7 :: t7 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn7 #-} happyOut7 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t7 happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut7 #-} happyIn8 :: t8 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn8 #-} happyOut8 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t8 happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut8 #-} happyIn9 :: t9 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn9 #-} happyOut9 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t9 happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut9 #-} happyIn10 :: t10 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn10 #-} happyOut10 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t10 happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut10 #-} happyIn11 :: t11 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn11 #-} happyOut11 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t11 happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut11 #-} happyIn12 :: t12 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn12 #-} happyOut12 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t12 happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut12 #-} happyIn13 :: t13 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn13 #-} happyOut13 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t13 happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut13 #-} happyIn14 :: t14 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn14 #-} happyOut14 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t14 happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut14 #-} happyIn15 :: t15 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn15 #-} happyOut15 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t15 happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut15 #-} happyIn16 :: t16 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn16 #-} happyOut16 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t16 happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut16 #-} happyIn17 :: t17 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn17 #-} happyOut17 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t17 happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut17 #-} happyIn18 :: t18 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn18 #-} happyOut18 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t18 happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut18 #-} happyIn19 :: t19 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn19 #-} happyOut19 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t19 happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut19 #-} happyIn20 :: t20 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn20 #-} happyOut20 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t20 happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut20 #-} happyIn21 :: t21 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn21 #-} happyOut21 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t21 happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut21 #-} happyIn22 :: t22 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn22 #-} happyOut22 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t22 happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut22 #-} happyIn23 :: t23 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn23 #-} happyOut23 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t23 happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut23 #-} happyIn24 :: t24 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn24 #-} happyOut24 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t24 happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut24 #-} happyIn25 :: t25 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn25 #-} happyOut25 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t25 happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut25 #-} happyIn26 :: t26 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn26 #-} happyOut26 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t26 happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut26 #-} happyIn27 :: t27 -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyIn27 #-} happyOut27 :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> t27 happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOut27 #-} happyInTok :: (Token) -> (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) happyInTok x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyInTok #-} happyOutTok :: (HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27) -> (Token) happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x {-# INLINE happyOutTok #-} happyExpList :: HappyAddr happyExpList = HappyA# "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x08\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x3e\x06\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x03\x00\x00\x00\x80\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\xe0\x08\x13\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\x60\x00\x08\x00\x00\x00\xc0\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x01\x02\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\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\x06\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x30\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00"# {-# NOINLINE happyExpListPerState #-} happyExpListPerState st = token_strs_expected where token_strs = ["error","%dummy","%start_dot","Graph","Strictness","GraphType","Name_empty","Name","Quoted_string","Quoted_sum","Stmt_list","Stmt_list_aux","Stmt_sep","Stmt","Attr_stmt","Attr_list","Attr_list_aux","A_list","Edge_stmt","EdgeRHS","Node_stmt","Node","Port","Subgraph","Xml","XmlList","XmlElement","graph","digraph","node","edge","subgraph","label","qlabel","strict","arrow","'='","'{'","'}'","'['","']'","':'","';'","','","'+'","xmlClose","xmlOpen","xmlProc","%eof"] bit_start = st * 49 bit_end = (st + 1) * 49 read_bit = readArrayBit happyExpList bits = map read_bit [bit_start..bit_end - 1] bits_indexed = zip bits [0..48] token_strs_expected = concatMap f bits_indexed f (False, _) = [] f (True, nr) = [token_strs !! nr] happyActOffsets :: HappyAddr happyActOffsets = HappyA# "\xf9\xff\xf9\xff\x23\x00\x00\x00\xed\xff\x0d\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x36\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x1c\x00\x00\x00\x38\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x47\x00\x00\x00\x34\x00\x00\x00\x00\x00\x56\x00\x46\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x65\x00\x00\x00\x00\x00\x49\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x55\x00\x00\x00\x0d\x00\x00\x00\x6b\x00\x0d\x00\x00\x00\x00\x00"# happyGotoOffsets :: HappyAddr happyGotoOffsets = HappyA# "\x68\x00\x76\x00\x77\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x00\x63\x00\x00\x00\x00\x00\x73\x00\x18\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x6e\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x72\x00\x5e\x00\x60\x00\x62\x00\x13\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x2a\x00\x00\x00\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00"# happyAdjustOffset :: Happy_GHC_Exts.Int# -> Happy_GHC_Exts.Int# happyAdjustOffset off = off happyDefActions :: HappyAddr happyDefActions = HappyA# "\xfc\xff\x00\x00\x00\x00\xfd\xff\x00\x00\xf8\xff\xfb\xff\xfa\xff\x00\x00\xf9\xff\xf6\xff\xf4\xff\xf5\xff\xf7\xff\xf3\xff\xcd\xff\x00\x00\x00\x00\xfe\xff\xef\xff\x00\x00\xf2\xff\xce\xff\xcf\xff\xcd\xff\xcb\xff\x00\x00\xd5\xff\xd0\xff\xec\xff\xeb\xff\xe9\xff\xea\xff\xe1\xff\xe7\xff\xe1\xff\xe1\xff\xe1\xff\xf8\xff\xf1\xff\x00\x00\xe5\xff\xe3\xff\xe6\xff\xe4\xff\xe1\xff\x00\x00\xd6\xff\xe1\xff\xf0\xff\xee\xff\xed\xff\xd4\xff\x00\x00\x00\x00\xcc\xff\xd3\xff\xe8\xff\xde\xff\x00\x00\xd5\xff\xda\xff\xd9\xff\xd8\xff\xd7\xff\xdd\xff\xdf\xff\xd1\xff\xec\xff\xdc\xff\xdb\xff\x00\x00\xd2\xff\x00\x00\xe2\xff\x00\x00\x00\x00\xe0\xff"# happyCheck :: HappyAddr happyCheck = HappyA# "\xff\xff\x08\x00\x01\x00\x16\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x0b\x00\x0c\x00\x03\x00\x04\x00\x05\x00\x06\x00\x0b\x00\x06\x00\x07\x00\x14\x00\x03\x00\x04\x00\x05\x00\x06\x00\x15\x00\x12\x00\x04\x00\x05\x00\x06\x00\x07\x00\x15\x00\x14\x00\x0a\x00\x0b\x00\x01\x00\x02\x00\x0a\x00\x0f\x00\x15\x00\x11\x00\x12\x00\x0f\x00\x14\x00\x15\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x04\x00\x05\x00\x06\x00\x12\x00\x07\x00\x14\x00\x15\x00\x12\x00\x0d\x00\x14\x00\x15\x00\x04\x00\x05\x00\x06\x00\x15\x00\x10\x00\x11\x00\x15\x00\x05\x00\x06\x00\x07\x00\x05\x00\x06\x00\x07\x00\x0b\x00\x0b\x00\x09\x00\x0b\x00\x15\x00\x10\x00\x11\x00\x0c\x00\x0d\x00\x14\x00\x06\x00\x10\x00\x14\x00\x0e\x00\x09\x00\x10\x00\x11\x00\x13\x00\x14\x00\x15\x00\x13\x00\x14\x00\x15\x00\x00\x00\x01\x00\x0c\x00\x0d\x00\x0c\x00\x0d\x00\x0c\x00\x0d\x00\x0c\x00\x0d\x00\x0c\x00\x0d\x00\x0f\x00\x0a\x00\x0f\x00\x01\x00\x07\x00\x02\x00\x17\x00\x08\x00\x07\x00\x09\x00\x0e\x00\x16\x00\x16\x00\x13\x00\x10\x00\x17\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# happyTable :: HappyAddr happyTable = HappyA# "\x00\x00\x04\x00\x24\x00\xff\xff\x25\x00\x26\x00\x27\x00\x0e\x00\x0f\x00\x39\x00\x0a\x00\x0b\x00\x14\x00\x28\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x14\x00\x0e\x00\x0f\x00\x10\x00\x28\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x12\x00\x1b\x00\x0a\x00\x0b\x00\x1c\x00\x0c\x00\x10\x00\x1d\x00\x1e\x00\x07\x00\x08\x00\x36\x00\x1f\x00\x0c\x00\x20\x00\x21\x00\x37\x00\x22\x00\x0c\x00\x3c\x00\x0a\x00\x0b\x00\x1c\x00\x3c\x00\x0a\x00\x0b\x00\x1c\x00\x38\x00\x0a\x00\x0b\x00\x4b\x00\x0a\x00\x0b\x00\x3d\x00\x16\x00\x3e\x00\x0c\x00\x45\x00\x43\x00\x46\x00\x0c\x00\x4d\x00\x0a\x00\x0b\x00\x0c\x00\x33\x00\x34\x00\x0c\x00\x27\x00\x0e\x00\x0f\x00\x27\x00\x0e\x00\x0f\x00\x14\x00\x14\x00\x2f\x00\x14\x00\x0c\x00\x40\x00\x41\x00\x2f\x00\x2a\x00\x10\x00\x49\x00\x30\x00\x10\x00\x4b\x00\x3c\x00\x33\x00\x34\x00\x18\x00\x19\x00\x1a\x00\x38\x00\x19\x00\x1a\x00\x04\x00\x02\x00\x2c\x00\x2a\x00\x2b\x00\x2a\x00\x29\x00\x2a\x00\x41\x00\x2a\x00\x3a\x00\x2a\x00\x48\x00\x4d\x00\x37\x00\x02\x00\x12\x00\x05\x00\x16\x00\x14\x00\x43\x00\x31\x00\x44\x00\x10\x00\x1a\x00\x34\x00\x2d\x00\x16\x00\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# happyReduceArr = Happy_Data_Array.array (1, 52) [ (1 , happyReduce_1), (2 , happyReduce_2), (3 , happyReduce_3), (4 , happyReduce_4), (5 , happyReduce_5), (6 , happyReduce_6), (7 , happyReduce_7), (8 , happyReduce_8), (9 , happyReduce_9), (10 , happyReduce_10), (11 , happyReduce_11), (12 , happyReduce_12), (13 , happyReduce_13), (14 , happyReduce_14), (15 , happyReduce_15), (16 , happyReduce_16), (17 , happyReduce_17), (18 , happyReduce_18), (19 , happyReduce_19), (20 , happyReduce_20), (21 , happyReduce_21), (22 , happyReduce_22), (23 , happyReduce_23), (24 , happyReduce_24), (25 , happyReduce_25), (26 , happyReduce_26), (27 , happyReduce_27), (28 , happyReduce_28), (29 , happyReduce_29), (30 , happyReduce_30), (31 , happyReduce_31), (32 , happyReduce_32), (33 , happyReduce_33), (34 , happyReduce_34), (35 , happyReduce_35), (36 , happyReduce_36), (37 , happyReduce_37), (38 , happyReduce_38), (39 , happyReduce_39), (40 , happyReduce_40), (41 , happyReduce_41), (42 , happyReduce_42), (43 , happyReduce_43), (44 , happyReduce_44), (45 , happyReduce_45), (46 , happyReduce_46), (47 , happyReduce_47), (48 , happyReduce_48), (49 , happyReduce_49), (50 , happyReduce_50), (51 , happyReduce_51), (52 , happyReduce_52) ] happy_n_terms = 23 :: Int happy_n_nonterms = 24 :: Int #if __GLASGOW_HASKELL__ >= 710 happyReduce_1 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_1 = happyReduce 4# 0# happyReduction_1 happyReduction_1 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut5 happy_x_1 of { happy_var_1 -> case happyOut6 happy_x_2 of { happy_var_2 -> case happyOut7 happy_x_3 of { happy_var_3 -> case happyOut11 happy_x_4 of { happy_var_4 -> happyIn4 ((happy_var_1, happy_var_2, happy_var_3, happy_var_4) ) `HappyStk` happyRest}}}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_2 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_2 = happySpecReduce_1 1# happyReduction_2 happyReduction_2 happy_x_1 = happyIn5 (True ) #if __GLASGOW_HASKELL__ >= 710 happyReduce_3 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_3 = happySpecReduce_0 1# happyReduction_3 happyReduction_3 = happyIn5 (False ) #if __GLASGOW_HASKELL__ >= 710 happyReduce_4 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_4 = happySpecReduce_1 2# happyReduction_4 happyReduction_4 happy_x_1 = happyIn6 (Graph ) #if __GLASGOW_HASKELL__ >= 710 happyReduce_5 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_5 = happySpecReduce_1 2# happyReduction_5 happyReduction_5 happy_x_1 = happyIn6 (Digraph ) #if __GLASGOW_HASKELL__ >= 710 happyReduce_6 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_6 = happySpecReduce_1 3# happyReduction_6 happyReduction_6 happy_x_1 = case happyOut8 happy_x_1 of { happy_var_1 -> happyIn7 (Just happy_var_1 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_7 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_7 = happySpecReduce_0 3# happyReduction_7 happyReduction_7 = happyIn7 (Nothing ) #if __GLASGOW_HASKELL__ >= 710 happyReduce_8 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_8 = happySpecReduce_1 4# happyReduction_8 happyReduction_8 happy_x_1 = case happyOutTok happy_x_1 of { (TokenLabel happy_var_1) -> happyIn8 (StringID happy_var_1 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_9 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_9 = happySpecReduce_1 4# happyReduction_9 happyReduction_9 happy_x_1 = case happyOut9 happy_x_1 of { happy_var_1 -> happyIn8 (StringID happy_var_1 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_10 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_10 = happySpecReduce_1 4# happyReduction_10 happyReduction_10 happy_x_1 = case happyOut25 happy_x_1 of { happy_var_1 -> happyIn8 (XMLID happy_var_1 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_11 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_11 = happySpecReduce_1 5# happyReduction_11 happyReduction_11 happy_x_1 = case happyOut10 happy_x_1 of { happy_var_1 -> happyIn9 (concat $ reverse happy_var_1 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_12 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_12 = happySpecReduce_1 6# happyReduction_12 happyReduction_12 happy_x_1 = case happyOutTok happy_x_1 of { (TokenQuotedLabel happy_var_1) -> happyIn10 ([happy_var_1] )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_13 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_13 = happySpecReduce_3 6# happyReduction_13 happyReduction_13 happy_x_3 happy_x_2 happy_x_1 = case happyOut10 happy_x_1 of { happy_var_1 -> case happyOutTok happy_x_3 of { (TokenQuotedLabel happy_var_3) -> happyIn10 (happy_var_3 : happy_var_1 )}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_14 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_14 = happySpecReduce_3 7# happyReduction_14 happyReduction_14 happy_x_3 happy_x_2 happy_x_1 = case happyOut12 happy_x_2 of { happy_var_2 -> happyIn11 (reverse happy_var_2 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_15 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_15 = happySpecReduce_3 8# happyReduction_15 happyReduction_15 happy_x_3 happy_x_2 happy_x_1 = case happyOut12 happy_x_1 of { happy_var_1 -> case happyOut14 happy_x_2 of { happy_var_2 -> happyIn12 (happy_var_2 : happy_var_1 )}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_16 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_16 = happySpecReduce_0 8# happyReduction_16 happyReduction_16 = happyIn12 ([] ) #if __GLASGOW_HASKELL__ >= 710 happyReduce_17 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_17 = happySpecReduce_1 9# happyReduction_17 happyReduction_17 happy_x_1 = case happyOutTok happy_x_1 of { happy_var_1 -> happyIn13 (Just happy_var_1 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_18 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_18 = happySpecReduce_1 9# happyReduction_18 happyReduction_18 happy_x_1 = case happyOutTok happy_x_1 of { happy_var_1 -> happyIn13 (Just happy_var_1 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_19 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_19 = happySpecReduce_0 9# happyReduction_19 happyReduction_19 = happyIn13 (Nothing ) #if __GLASGOW_HASKELL__ >= 710 happyReduce_20 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_20 = happySpecReduce_1 10# happyReduction_20 happyReduction_20 happy_x_1 = case happyOut15 happy_x_1 of { happy_var_1 -> happyIn14 (happy_var_1 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_21 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_21 = happySpecReduce_1 10# happyReduction_21 happyReduction_21 happy_x_1 = case happyOut21 happy_x_1 of { happy_var_1 -> happyIn14 (happy_var_1 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_22 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_22 = happySpecReduce_1 10# happyReduction_22 happyReduction_22 happy_x_1 = case happyOut19 happy_x_1 of { happy_var_1 -> happyIn14 (happy_var_1 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_23 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_23 = happySpecReduce_3 10# happyReduction_23 happyReduction_23 happy_x_3 happy_x_2 happy_x_1 = case happyOut8 happy_x_1 of { happy_var_1 -> case happyOut8 happy_x_3 of { happy_var_3 -> happyIn14 (AttributeStatement ( happy_var_1, happy_var_3) )}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_24 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_24 = happySpecReduce_1 10# happyReduction_24 happyReduction_24 happy_x_1 = case happyOut24 happy_x_1 of { happy_var_1 -> happyIn14 (SubgraphStatement happy_var_1 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_25 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_25 = happySpecReduce_2 11# happyReduction_25 happyReduction_25 happy_x_2 happy_x_1 = case happyOut16 happy_x_2 of { happy_var_2 -> happyIn15 (NodeAttribute happy_var_2 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_26 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_26 = happySpecReduce_2 11# happyReduction_26 happyReduction_26 happy_x_2 happy_x_1 = case happyOut16 happy_x_2 of { happy_var_2 -> happyIn15 (EdgeAttribute happy_var_2 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_27 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_27 = happySpecReduce_2 11# happyReduction_27 happyReduction_27 happy_x_2 happy_x_1 = case happyOut16 happy_x_2 of { happy_var_2 -> happyIn15 (GraphAttribute happy_var_2 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_28 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_28 = happySpecReduce_1 12# happyReduction_28 happyReduction_28 happy_x_1 = case happyOut17 happy_x_1 of { happy_var_1 -> happyIn16 (reverse happy_var_1 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_29 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_29 = happyReduce 4# 13# happyReduction_29 happyReduction_29 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut17 happy_x_1 of { happy_var_1 -> case happyOut18 happy_x_3 of { happy_var_3 -> happyIn17 (happy_var_3 ++ happy_var_1 ) `HappyStk` happyRest}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_30 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_30 = happySpecReduce_0 13# happyReduction_30 happyReduction_30 = happyIn17 ([] ) #if __GLASGOW_HASKELL__ >= 710 happyReduce_31 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_31 = happyReduce 5# 14# happyReduction_31 happyReduction_31 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut18 happy_x_1 of { happy_var_1 -> case happyOut8 happy_x_3 of { happy_var_3 -> case happyOut8 happy_x_5 of { happy_var_5 -> happyIn18 (( happy_var_3, happy_var_5) : happy_var_1 ) `HappyStk` happyRest}}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_32 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_32 = happySpecReduce_0 14# happyReduction_32 happyReduction_32 = happyIn18 ([] ) #if __GLASGOW_HASKELL__ >= 710 happyReduce_33 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_33 = happySpecReduce_3 15# happyReduction_33 happyReduction_33 happy_x_3 happy_x_2 happy_x_1 = case happyOut22 happy_x_1 of { happy_var_1 -> case happyOut20 happy_x_2 of { happy_var_2 -> case happyOut16 happy_x_3 of { happy_var_3 -> happyIn19 (EdgeStatement ((uncurry NodeRef happy_var_1):(reverse happy_var_2)) happy_var_3 )}}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_34 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_34 = happySpecReduce_3 15# happyReduction_34 happyReduction_34 happy_x_3 happy_x_2 happy_x_1 = case happyOut24 happy_x_1 of { happy_var_1 -> case happyOut20 happy_x_2 of { happy_var_2 -> case happyOut16 happy_x_3 of { happy_var_3 -> happyIn19 (EdgeStatement (happy_var_1:(reverse happy_var_2)) happy_var_3 )}}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_35 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_35 = happySpecReduce_3 16# happyReduction_35 happyReduction_35 happy_x_3 happy_x_2 happy_x_1 = case happyOut20 happy_x_1 of { happy_var_1 -> case happyOut22 happy_x_3 of { happy_var_3 -> happyIn20 ((uncurry NodeRef happy_var_3) : happy_var_1 )}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_36 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_36 = happySpecReduce_3 16# happyReduction_36 happyReduction_36 happy_x_3 happy_x_2 happy_x_1 = case happyOut20 happy_x_1 of { happy_var_1 -> case happyOut24 happy_x_3 of { happy_var_3 -> happyIn20 (happy_var_3 : happy_var_1 )}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_37 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_37 = happySpecReduce_2 16# happyReduction_37 happyReduction_37 happy_x_2 happy_x_1 = case happyOut22 happy_x_2 of { happy_var_2 -> happyIn20 ([uncurry NodeRef happy_var_2] )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_38 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_38 = happySpecReduce_2 16# happyReduction_38 happyReduction_38 happy_x_2 happy_x_1 = case happyOut24 happy_x_2 of { happy_var_2 -> happyIn20 ([happy_var_2] )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_39 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_39 = happyMonadReduce 2# 16# happyReduction_39 happyReduction_39 (happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) tk = happyThen ((( getLineNumber `thenE` \line -> failE $ "Unfinished edge statement.")) ) (\r -> happyReturn (happyIn20 r)) #if __GLASGOW_HASKELL__ >= 710 happyReduce_40 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_40 = happyMonadReduce 2# 16# happyReduction_40 happyReduction_40 (happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) tk = happyThen ((( getLineNumber `thenE` \line -> failE $ "Unfinished edge statement.")) ) (\r -> happyReturn (happyIn20 r)) #if __GLASGOW_HASKELL__ >= 710 happyReduce_41 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_41 = happySpecReduce_2 17# happyReduction_41 happyReduction_41 happy_x_2 happy_x_1 = case happyOut22 happy_x_1 of { happy_var_1 -> case happyOut16 happy_x_2 of { happy_var_2 -> happyIn21 ((uncurry NodeStatement) happy_var_1 happy_var_2 )}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_42 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_42 = happySpecReduce_1 18# happyReduction_42 happyReduction_42 happy_x_1 = case happyOut8 happy_x_1 of { happy_var_1 -> happyIn22 ((happy_var_1, Nothing) )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_43 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_43 = happySpecReduce_2 18# happyReduction_43 happyReduction_43 happy_x_2 happy_x_1 = case happyOut8 happy_x_1 of { happy_var_1 -> case happyOut23 happy_x_2 of { happy_var_2 -> happyIn22 ((happy_var_1, (Just happy_var_2)) )}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_44 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_44 = happySpecReduce_2 19# happyReduction_44 happyReduction_44 happy_x_2 happy_x_1 = case happyOut8 happy_x_2 of { happy_var_2 -> happyIn23 (case toCompass $ show happy_var_2 of Just c -> Port Nothing (Just c) Nothing -> Port (if show happy_var_2 == "_" then Nothing else (Just happy_var_2)) Nothing )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_45 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_45 = happyReduce 4# 19# happyReduction_45 happyReduction_45 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut8 happy_x_2 of { happy_var_2 -> case happyOutTok happy_x_4 of { (TokenLabel happy_var_4) -> happyIn23 (Port (Just happy_var_2) (toCompass happy_var_4) ) `HappyStk` happyRest}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_46 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_46 = happySpecReduce_3 20# happyReduction_46 happyReduction_46 happy_x_3 happy_x_2 happy_x_1 = case happyOut7 happy_x_2 of { happy_var_2 -> case happyOut11 happy_x_3 of { happy_var_3 -> happyIn24 (Subgraph happy_var_2 happy_var_3 )}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_47 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_47 = happySpecReduce_1 20# happyReduction_47 happyReduction_47 happy_x_1 = case happyOut11 happy_x_1 of { happy_var_1 -> happyIn24 (Subgraph Nothing happy_var_1 )} #if __GLASGOW_HASKELL__ >= 710 happyReduce_48 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_48 = happySpecReduce_3 21# happyReduction_48 happyReduction_48 happy_x_3 happy_x_2 happy_x_1 = case happyOutTok happy_x_1 of { (TokenOT happy_var_1) -> case happyOut26 happy_x_2 of { happy_var_2 -> case happyOutTok happy_x_3 of { (TokenCT happy_var_3) -> happyIn25 (show happy_var_1 ++ (concat $ reverse happy_var_2) ++ show happy_var_3 )}}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_49 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_49 = happySpecReduce_2 22# happyReduction_49 happyReduction_49 happy_x_2 happy_x_1 = case happyOut26 happy_x_1 of { happy_var_1 -> case happyOut27 happy_x_2 of { happy_var_2 -> happyIn26 (happy_var_2 : happy_var_1 )}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_50 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_50 = happySpecReduce_0 22# happyReduction_50 happyReduction_50 = happyIn26 ([] ) #if __GLASGOW_HASKELL__ >= 710 happyReduce_51 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_51 = happySpecReduce_3 23# happyReduction_51 happyReduction_51 happy_x_3 happy_x_2 happy_x_1 = case happyOutTok happy_x_1 of { (TokenOT happy_var_1) -> case happyOut26 happy_x_2 of { happy_var_2 -> case happyOutTok happy_x_3 of { (TokenCT happy_var_3) -> happyIn27 (show happy_var_1 ++ (concat $ reverse happy_var_2) ++ show happy_var_3 )}}} #if __GLASGOW_HASKELL__ >= 710 happyReduce_52 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) #endif happyReduce_52 = happySpecReduce_1 23# happyReduction_52 happyReduction_52 happy_x_1 = case happyOutTok happy_x_1 of { (TokenProc happy_var_1) -> happyIn27 (show happy_var_1 )} happyNewToken action sts stk = lexer(\tk -> let cont i = happyDoAction i tk action sts stk in case tk of { TokenEOF -> happyDoAction 22# tk action sts stk; TokenGraph -> cont 1#; TokenDigraph -> cont 2#; TokenNode -> cont 3#; TokenEdge -> cont 4#; TokenSubgraph -> cont 5#; TokenLabel happy_dollar_dollar -> cont 6#; TokenQuotedLabel happy_dollar_dollar -> cont 7#; TokenStrict -> cont 8#; TokenArrow happy_dollar_dollar -> cont 9#; TokenEQ -> cont 10#; TokenOCB -> cont 11#; TokenCCB -> cont 12#; TokenOSB -> cont 13#; TokenCSB -> cont 14#; TokenCo -> cont 15#; TokenSemiCo -> cont 16#; TokenComma -> cont 17#; TokenPlus -> cont 18#; TokenCT happy_dollar_dollar -> cont 19#; TokenOT happy_dollar_dollar -> cont 20#; TokenProc happy_dollar_dollar -> cont 21#; _ -> happyError' (tk, []) }) happyError_ explist 22# tk = happyError' (tk, explist) happyError_ explist _ tk = happyError' (tk, explist) happyThen :: () => P a -> (a -> P b) -> P b happyThen = (thenE) happyReturn :: () => a -> P a happyReturn = (returnE) #if __GLASGOW_HASKELL__ >= 710 happyParse :: () => Happy_GHC_Exts.Int# -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) happyNewToken :: () => Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) happyDoAction :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) happyReduceArr :: () => Happy_Data_Array.Array Int (Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> P (HappyAbsSyn _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _)) #endif happyThen1 :: () => P a -> (a -> P b) -> P b happyThen1 = happyThen happyReturn1 :: () => a -> P a happyReturn1 = happyReturn happyError' :: () => ((Token), [String]) -> P a happyError' tk = (\(tokens, _) -> parseError tokens) tk dot = happySomeParser where happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (let {x' = happyOut4 x} in x')) happySeq = happyDontSeq data Except a = Success a | Failure String type P a = String -> Int -> Except a thenE :: P a -> (a -> P b) -> P b thenE m k s l = case m s l of Success a -> k a s l Failure e -> Failure e returnE :: a -> P a returnE a s l = Success a failE :: String -> P a failE e s l = Failure $ "Error on line " ++ show l ++ ": " ++ e catchE :: P a -> (String -> P a) -> P a catchE m k s l = case m s l of Success a -> Success a Failure e -> k e s l getLineNumber s l = Success l parseError :: Token -> P a parseError t = getLineNumber `thenE` \line -> failE $ "Parse error on line " ++ show line ++ "." data Token = TokenGraph | TokenDigraph | TokenNode | TokenEdge | TokenSubgraph | TokenStrict | TokenLabel String | TokenQuotedLabel String | TokenXML String | TokenCompass Compass | TokenArrow Char | TokenEQ | TokenOCB | TokenCCB | TokenOSB | TokenCSB | TokenCo | TokenSemiCo | TokenComma | TokenCT String | TokenOT String | TokenProc String | TokenPlus | TokenEOF deriving (Eq) instance Show Token where show tk = case tk of TokenGraph -> "graph" TokenDigraph -> "digraph" TokenNode -> "node" TokenEdge -> "edge" TokenSubgraph -> "subgraph" TokenStrict -> "strict" TokenLabel label -> label TokenQuotedLabel label -> label TokenXML xml -> xml TokenCompass compass -> show compass TokenArrow c -> [c] TokenEQ -> "=" TokenOCB -> "{" TokenCCB -> "]" TokenOSB -> "[" TokenCSB -> "]" TokenCo -> ":" TokenSemiCo -> ";" TokenComma -> "," TokenCT tag -> "" TokenOT tag -> "<" ++ tag ++ ">" TokenProc xml -> "" TokenPlus -> "+" TokenEOF -> "" -- | Parse a graph written in the DOT language. parse s = case dot ('\n':s) 0 of -- A newline is added to treat '#' in the beginning of a line properly. Success ast -> Right ast Failure msg -> Left msg toCompass l = case map toLower l of "n" -> Just $ North "ne" -> Just $ NorthEast "e" -> Just $ East "se" -> Just $ SouthEast "s" -> Just $ South "sw" -> Just $ SouthWest "w" -> Just $ West "nw" -> Just $ NorthWest "c" -> Just $ Center "_" -> Nothing _ -> Nothing lexer :: (Token -> (P a)) -> (P a) lexer cont str line = case dropWhile (\c -> c /= '\n' && isSpace c) str of '\n':'#':s' -> let s'' = dropWhile (/= '\n') s' in lexer cont s'' (line + 1) '\n':s' -> lexer cont s' (line +1) ',':s' -> cont TokenComma s' line ';':s' -> cont TokenSemiCo s' line 's':'u':'b':'g':'r':'a':'p':'h':s' -> cont TokenSubgraph s' line 'g':'r':'a':'p':'h':s' -> cont TokenGraph s' line 'd':'i':'g':'r':'a':'p':'h':s' -> cont TokenDigraph s' line 'e':'d':'g':'e':s' -> cont TokenEdge s' line 'n':'o':'d':'e':s' -> cont TokenNode s' line 's':'t':'r':'i':'c':'t':s' -> cont TokenStrict s' line '{':s' -> cont TokenOCB s' line '}':s' -> cont TokenCCB s' line '[':s' -> cont TokenOSB s' line ']':s' -> cont TokenCSB s' line '+':s' -> cont TokenPlus s' line '=':s' -> cont TokenEQ s' line ':':s' -> cont TokenCo s' line '-':'-':s' -> cont (TokenArrow '-') s' line '-':'>':s' -> cont (TokenArrow '>') s' line '/':'/':s' -> let s'' = dropWhile (/= '\n') s' in lexer cont s'' line '/':'*':s' -> let (s'', line') = execState consumeComment (s', line) in lexer cont s'' (line') '"':s' -> let (qs, (s'', line')) = runState consumeQuotedString (s', line) in case qs of Right string -> cont (TokenQuotedLabel string) s'' line' Left msg -> failE msg s' line' '<':'/':s' -> let (tag, (s'', line')) = runState consumeTag (s', line) in cont (TokenCT tag) (tail s'') line' '<':'!':'-':'-':s' -> let (s'', line') = execState consumeXMLComment (s', line) in lexer cont s'' line' '<':'?':s' -> let (proc, (s'', line')) = runState consumeProcessing (s', line) in cont (TokenProc proc) s'' line' [] -> cont TokenEOF [] line s' -> let (label, s'') = span (\x -> not $ isSpace x || x `elem` ";,{}[]=\"") s' in if null label then failE ("Unexpected character: " ++ [head s'']) s' line else cont (TokenLabel label) s'' line {-# 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)) :: Bool) #define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Bool) #define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: 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)) :: 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 False action | check = indexShortOffAddr happyTable off_i | 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 `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 = error "Internal Happy error\n" ----------------------------------------------------------------------------- -- Hack to get the typechecker to accept our action functions happyTcHack :: Happy_GHC_Exts.Int# -> a -> a happyTcHack x y = y {-# INLINE happyTcHack #-} ----------------------------------------------------------------------------- -- Seq-ing. If the --strict flag is given, then Happy emits -- happySeq = happyDoSeq -- otherwise it emits -- happySeq = happyDontSeq happyDoSeq, happyDontSeq :: a -> b -> b happyDoSeq a b = a `seq` b happyDontSeq a b = b ----------------------------------------------------------------------------- -- Don't inline any functions from the template. GHC has a nasty habit -- of deciding to inline happyGoto everywhere, which increases the size of -- the generated parser quite a bit. {-# NOINLINE happyDoAction #-} {-# NOINLINE happyTable #-} {-# NOINLINE happyCheck #-} {-# NOINLINE happyActOffsets #-} {-# NOINLINE happyGotoOffsets #-} {-# NOINLINE happyDefActions #-} {-# NOINLINE happyShift #-} {-# NOINLINE happySpecReduce_0 #-} {-# NOINLINE happySpecReduce_1 #-} {-# NOINLINE happySpecReduce_2 #-} {-# NOINLINE happySpecReduce_3 #-} {-# NOINLINE happyReduce #-} {-# NOINLINE happyMonadReduce #-} {-# NOINLINE happyGoto #-} {-# NOINLINE happyFail #-} -- end of Happy Template.