diff options
Diffstat (limited to 'src/Transfer/Syntax')
| -rw-r--r-- | src/Transfer/Syntax/Abs.hs | 212 | ||||
| -rw-r--r-- | src/Transfer/Syntax/Doc.tex | 61 | ||||
| -rw-r--r-- | src/Transfer/Syntax/Lex.hs | 8 | ||||
| -rw-r--r-- | src/Transfer/Syntax/Lex.x | 2 | ||||
| -rw-r--r-- | src/Transfer/Syntax/Par.hs | 1057 | ||||
| -rw-r--r-- | src/Transfer/Syntax/Par.y | 46 | ||||
| -rw-r--r-- | src/Transfer/Syntax/Print.hs | 24 | ||||
| -rw-r--r-- | src/Transfer/Syntax/Skel.hs | 41 | ||||
| -rw-r--r-- | src/Transfer/Syntax/Syntax.cf | 38 |
9 files changed, 776 insertions, 713 deletions
diff --git a/src/Transfer/Syntax/Abs.hs b/src/Transfer/Syntax/Abs.hs index ab55ba3ae..334a1d469 100644 --- a/src/Transfer/Syntax/Abs.hs +++ b/src/Transfer/Syntax/Abs.hs @@ -14,6 +14,8 @@ data Decl_ type Decl = Tree Decl_ data ConsDecl_ type ConsDecl = Tree ConsDecl_ +data Guard_ +type Guard = Tree Guard_ data Pattern_ type Pattern = Tree Pattern_ data PListElem_ @@ -22,14 +24,14 @@ data FieldPattern_ type FieldPattern = Tree FieldPattern_ data Exp_ type Exp = Tree Exp_ +data VarOrWild_ +type VarOrWild = Tree VarOrWild_ data LetDef_ type LetDef = Tree LetDef_ data Case_ type Case = Tree Case_ data Bind_ type Bind = Tree Bind_ -data VarOrWild_ -type VarOrWild = Tree VarOrWild_ data FieldType_ type FieldType = Tree FieldType_ data FieldValue_ @@ -42,9 +44,11 @@ data Tree :: * -> * where Import :: Ident -> Tree Import_ DataDecl :: Ident -> Exp -> [ConsDecl] -> Tree Decl_ TypeDecl :: Ident -> Exp -> Tree Decl_ - ValueDecl :: Ident -> [Pattern] -> Exp -> Tree Decl_ + ValueDecl :: Ident -> [Pattern] -> Guard -> Exp -> Tree Decl_ DeriveDecl :: Ident -> Ident -> Tree Decl_ ConsDecl :: Ident -> Exp -> Tree ConsDecl_ + GuardExp :: Exp -> Tree Guard_ + GuardNo :: Tree Guard_ POr :: Pattern -> Pattern -> Tree Pattern_ PListCons :: Pattern -> Pattern -> Tree Pattern_ PConsTop :: Ident -> Pattern -> [Pattern] -> Tree Pattern_ @@ -58,13 +62,13 @@ data Tree :: * -> * where PWild :: Tree Pattern_ PListElem :: Pattern -> Tree PListElem_ FieldPattern :: Ident -> Pattern -> Tree FieldPattern_ + EPi :: VarOrWild -> Exp -> Exp -> Tree Exp_ + EPiNoVar :: Exp -> Exp -> Tree Exp_ + EAbs :: VarOrWild -> Exp -> Tree Exp_ ELet :: [LetDef] -> Exp -> Tree Exp_ ECase :: Exp -> [Case] -> Tree Exp_ EIf :: Exp -> Exp -> Exp -> Tree Exp_ EDo :: [Bind] -> Exp -> Tree Exp_ - EAbs :: VarOrWild -> Exp -> Tree Exp_ - EPi :: VarOrWild -> Exp -> Exp -> Tree Exp_ - EPiNoVar :: Exp -> Exp -> Tree Exp_ EBind :: Exp -> Exp -> Tree Exp_ EBindC :: Exp -> Exp -> Tree Exp_ EOr :: Exp -> Exp -> Tree Exp_ @@ -93,12 +97,12 @@ data Tree :: * -> * where EInteger :: Integer -> Tree Exp_ EDouble :: Double -> Tree Exp_ EMeta :: Tree Exp_ + VVar :: Ident -> Tree VarOrWild_ + VWild :: Tree VarOrWild_ LetDef :: Ident -> Exp -> Exp -> Tree LetDef_ - Case :: Pattern -> Exp -> Tree Case_ + Case :: Pattern -> Guard -> Exp -> Tree Case_ BindVar :: VarOrWild -> Exp -> Tree Bind_ BindNoVar :: Exp -> Tree Bind_ - VVar :: Ident -> Tree VarOrWild_ - VWild :: Tree VarOrWild_ FieldType :: Ident -> Exp -> Tree FieldType_ FieldValue :: Ident -> Exp -> Tree FieldValue_ Ident :: String -> Tree Ident_ @@ -121,9 +125,10 @@ composOpM f t = case t of Import i -> return Import `ap` f i DataDecl i exp consdecls -> return DataDecl `ap` f i `ap` f exp `ap` mapM f consdecls TypeDecl i exp -> return TypeDecl `ap` f i `ap` f exp - ValueDecl i patterns exp -> return ValueDecl `ap` f i `ap` mapM f patterns `ap` f exp + ValueDecl i patterns guard exp -> return ValueDecl `ap` f i `ap` mapM f patterns `ap` f guard `ap` f exp DeriveDecl i0 i1 -> return DeriveDecl `ap` f i0 `ap` f i1 ConsDecl i exp -> return ConsDecl `ap` f i `ap` f exp + GuardExp exp -> return GuardExp `ap` f exp POr pattern0 pattern1 -> return POr `ap` f pattern0 `ap` f pattern1 PListCons pattern0 pattern1 -> return PListCons `ap` f pattern0 `ap` f pattern1 PConsTop i pattern patterns -> return PConsTop `ap` f i `ap` f pattern `ap` mapM f patterns @@ -133,13 +138,13 @@ composOpM f t = case t of PVar i -> return PVar `ap` f i PListElem pattern -> return PListElem `ap` f pattern FieldPattern i pattern -> return FieldPattern `ap` f i `ap` f pattern + EPi varorwild exp0 exp1 -> return EPi `ap` f varorwild `ap` f exp0 `ap` f exp1 + EPiNoVar exp0 exp1 -> return EPiNoVar `ap` f exp0 `ap` f exp1 + EAbs varorwild exp -> return EAbs `ap` f varorwild `ap` f exp ELet letdefs exp -> return ELet `ap` mapM f letdefs `ap` f exp ECase exp cases -> return ECase `ap` f exp `ap` mapM f cases EIf exp0 exp1 exp2 -> return EIf `ap` f exp0 `ap` f exp1 `ap` f exp2 EDo binds exp -> return EDo `ap` mapM f binds `ap` f exp - EAbs varorwild exp -> return EAbs `ap` f varorwild `ap` f exp - EPi varorwild exp0 exp1 -> return EPi `ap` f varorwild `ap` f exp0 `ap` f exp1 - EPiNoVar exp0 exp1 -> return EPiNoVar `ap` f exp0 `ap` f exp1 EBind exp0 exp1 -> return EBind `ap` f exp0 `ap` f exp1 EBindC exp0 exp1 -> return EBindC `ap` f exp0 `ap` f exp1 EOr exp0 exp1 -> return EOr `ap` f exp0 `ap` f exp1 @@ -163,11 +168,11 @@ composOpM f t = case t of ERec fieldvalues -> return ERec `ap` mapM f fieldvalues EList exps -> return EList `ap` mapM f exps EVar i -> return EVar `ap` f i + VVar i -> return VVar `ap` f i LetDef i exp0 exp1 -> return LetDef `ap` f i `ap` f exp0 `ap` f exp1 - Case pattern exp -> return Case `ap` f pattern `ap` f exp + Case pattern guard exp -> return Case `ap` f pattern `ap` f guard `ap` f exp BindVar varorwild exp -> return BindVar `ap` f varorwild `ap` f exp BindNoVar exp -> return BindNoVar `ap` f exp - VVar i -> return VVar `ap` f i FieldType i exp -> return FieldType `ap` f i `ap` f exp FieldValue i exp -> return FieldValue `ap` f i `ap` f exp _ -> return t @@ -178,9 +183,10 @@ composOpFold zero combine f t = case t of Import i -> f i DataDecl i exp consdecls -> f i `combine` f exp `combine` foldr combine zero (map f consdecls) TypeDecl i exp -> f i `combine` f exp - ValueDecl i patterns exp -> f i `combine` foldr combine zero (map f patterns) `combine` f exp + ValueDecl i patterns guard exp -> f i `combine` foldr combine zero (map f patterns) `combine` f guard `combine` f exp DeriveDecl i0 i1 -> f i0 `combine` f i1 ConsDecl i exp -> f i `combine` f exp + GuardExp exp -> f exp POr pattern0 pattern1 -> f pattern0 `combine` f pattern1 PListCons pattern0 pattern1 -> f pattern0 `combine` f pattern1 PConsTop i pattern patterns -> f i `combine` f pattern `combine` foldr combine zero (map f patterns) @@ -190,13 +196,13 @@ composOpFold zero combine f t = case t of PVar i -> f i PListElem pattern -> f pattern FieldPattern i pattern -> f i `combine` f pattern + EPi varorwild exp0 exp1 -> f varorwild `combine` f exp0 `combine` f exp1 + EPiNoVar exp0 exp1 -> f exp0 `combine` f exp1 + EAbs varorwild exp -> f varorwild `combine` f exp ELet letdefs exp -> foldr combine zero (map f letdefs) `combine` f exp ECase exp cases -> f exp `combine` foldr combine zero (map f cases) EIf exp0 exp1 exp2 -> f exp0 `combine` f exp1 `combine` f exp2 EDo binds exp -> foldr combine zero (map f binds) `combine` f exp - EAbs varorwild exp -> f varorwild `combine` f exp - EPi varorwild exp0 exp1 -> f varorwild `combine` f exp0 `combine` f exp1 - EPiNoVar exp0 exp1 -> f exp0 `combine` f exp1 EBind exp0 exp1 -> f exp0 `combine` f exp1 EBindC exp0 exp1 -> f exp0 `combine` f exp1 EOr exp0 exp1 -> f exp0 `combine` f exp1 @@ -220,11 +226,11 @@ composOpFold zero combine f t = case t of ERec fieldvalues -> foldr combine zero (map f fieldvalues) EList exps -> foldr combine zero (map f exps) EVar i -> f i + VVar i -> f i LetDef i exp0 exp1 -> f i `combine` f exp0 `combine` f exp1 - Case pattern exp -> f pattern `combine` f exp + Case pattern guard exp -> f pattern `combine` f guard `combine` f exp BindVar varorwild exp -> f varorwild `combine` f exp BindNoVar exp -> f exp - VVar i -> f i FieldType i exp -> f i `combine` f exp FieldValue i exp -> f i `combine` f exp _ -> zero @@ -235,9 +241,11 @@ instance Show (Tree c) where Import i -> opar n . showString "Import" . showChar ' ' . showsPrec 1 i . cpar n DataDecl i exp consdecls -> opar n . showString "DataDecl" . showChar ' ' . showsPrec 1 i . showChar ' ' . showsPrec 1 exp . showChar ' ' . showsPrec 1 consdecls . cpar n TypeDecl i exp -> opar n . showString "TypeDecl" . showChar ' ' . showsPrec 1 i . showChar ' ' . showsPrec 1 exp . cpar n - ValueDecl i patterns exp -> opar n . showString "ValueDecl" . showChar ' ' . showsPrec 1 i . showChar ' ' . showsPrec 1 patterns . showChar ' ' . showsPrec 1 exp . cpar n + ValueDecl i patterns guard exp -> opar n . showString "ValueDecl" . showChar ' ' . showsPrec 1 i . showChar ' ' . showsPrec 1 patterns . showChar ' ' . showsPrec 1 guard . showChar ' ' . showsPrec 1 exp . cpar n DeriveDecl i0 i1 -> opar n . showString "DeriveDecl" . showChar ' ' . showsPrec 1 i0 . showChar ' ' . showsPrec 1 i1 . cpar n ConsDecl i exp -> opar n . showString "ConsDecl" . showChar ' ' . showsPrec 1 i . showChar ' ' . showsPrec 1 exp . cpar n + GuardExp exp -> opar n . showString "GuardExp" . showChar ' ' . showsPrec 1 exp . cpar n + GuardNo -> showString "GuardNo" POr pattern0 pattern1 -> opar n . showString "POr" . showChar ' ' . showsPrec 1 pattern0 . showChar ' ' . showsPrec 1 pattern1 . cpar n PListCons pattern0 pattern1 -> opar n . showString "PListCons" . showChar ' ' . showsPrec 1 pattern0 . showChar ' ' . showsPrec 1 pattern1 . cpar n PConsTop i pattern patterns -> opar n . showString "PConsTop" . showChar ' ' . showsPrec 1 i . showChar ' ' . showsPrec 1 pattern . showChar ' ' . showsPrec 1 patterns . cpar n @@ -251,13 +259,13 @@ instance Show (Tree c) where PWild -> showString "PWild" PListElem pattern -> opar n . showString "PListElem" . showChar ' ' . showsPrec 1 pattern . cpar n FieldPattern i pattern -> opar n . showString "FieldPattern" . showChar ' ' . showsPrec 1 i . showChar ' ' . showsPrec 1 pattern . cpar n + EPi varorwild exp0 exp1 -> opar n . showString "EPi" . showChar ' ' . showsPrec 1 varorwild . showChar ' ' . showsPrec 1 exp0 . showChar ' ' . showsPrec 1 exp1 . cpar n + EPiNoVar exp0 exp1 -> opar n . showString "EPiNoVar" . showChar ' ' . showsPrec 1 exp0 . showChar ' ' . showsPrec 1 exp1 . cpar n + EAbs varorwild exp -> opar n . showString "EAbs" . showChar ' ' . showsPrec 1 varorwild . showChar ' ' . showsPrec 1 exp . cpar n ELet letdefs exp -> opar n . showString "ELet" . showChar ' ' . showsPrec 1 letdefs . showChar ' ' . showsPrec 1 exp . cpar n ECase exp cases -> opar n . showString "ECase" . showChar ' ' . showsPrec 1 exp . showChar ' ' . showsPrec 1 cases . cpar n EIf exp0 exp1 exp2 -> opar n . showString "EIf" . showChar ' ' . showsPrec 1 exp0 . showChar ' ' . showsPrec 1 exp1 . showChar ' ' . showsPrec 1 exp2 . cpar n EDo binds exp -> opar n . showString "EDo" . showChar ' ' . showsPrec 1 binds . showChar ' ' . showsPrec 1 exp . cpar n - EAbs varorwild exp -> opar n . showString "EAbs" . showChar ' ' . showsPrec 1 varorwild . showChar ' ' . showsPrec 1 exp . cpar n - EPi varorwild exp0 exp1 -> opar n . showString "EPi" . showChar ' ' . showsPrec 1 varorwild . showChar ' ' . showsPrec 1 exp0 . showChar ' ' . showsPrec 1 exp1 . cpar n - EPiNoVar exp0 exp1 -> opar n . showString "EPiNoVar" . showChar ' ' . showsPrec 1 exp0 . showChar ' ' . showsPrec 1 exp1 . cpar n EBind exp0 exp1 -> opar n . showString "EBind" . showChar ' ' . showsPrec 1 exp0 . showChar ' ' . showsPrec 1 exp1 . cpar n EBindC exp0 exp1 -> opar n . showString "EBindC" . showChar ' ' . showsPrec 1 exp0 . showChar ' ' . showsPrec 1 exp1 . cpar n EOr exp0 exp1 -> opar n . showString "EOr" . showChar ' ' . showsPrec 1 exp0 . showChar ' ' . showsPrec 1 exp1 . cpar n @@ -286,12 +294,12 @@ instance Show (Tree c) where EInteger n -> opar n . showString "EInteger" . showChar ' ' . showsPrec 1 n . cpar n EDouble d -> opar n . showString "EDouble" . showChar ' ' . showsPrec 1 d . cpar n EMeta -> showString "EMeta" + VVar i -> opar n . showString "VVar" . showChar ' ' . showsPrec 1 i . cpar n + VWild -> showString "VWild" LetDef i exp0 exp1 -> opar n . showString "LetDef" . showChar ' ' . showsPrec 1 i . showChar ' ' . showsPrec 1 exp0 . showChar ' ' . showsPrec 1 exp1 . cpar n - Case pattern exp -> opar n . showString "Case" . showChar ' ' . showsPrec 1 pattern . showChar ' ' . showsPrec 1 exp . cpar n + Case pattern guard exp -> opar n . showString "Case" . showChar ' ' . showsPrec 1 pattern . showChar ' ' . showsPrec 1 guard . showChar ' ' . showsPrec 1 exp . cpar n BindVar varorwild exp -> opar n . showString "BindVar" . showChar ' ' . showsPrec 1 varorwild . showChar ' ' . showsPrec 1 exp . cpar n BindNoVar exp -> opar n . showString "BindNoVar" . showChar ' ' . showsPrec 1 exp . cpar n - VVar i -> opar n . showString "VVar" . showChar ' ' . showsPrec 1 i . cpar n - VWild -> showString "VWild" FieldType i exp -> opar n . showString "FieldType" . showChar ' ' . showsPrec 1 i . showChar ' ' . showsPrec 1 exp . cpar n FieldValue i exp -> opar n . showString "FieldValue" . showChar ' ' . showsPrec 1 i . showChar ' ' . showsPrec 1 exp . cpar n Ident str -> opar n . showString "Ident" . showChar ' ' . showsPrec 1 str . cpar n @@ -305,9 +313,11 @@ johnMajorEq (Module imports decls) (Module imports_ decls_) = imports == imports johnMajorEq (Import i) (Import i_) = i == i_ johnMajorEq (DataDecl i exp consdecls) (DataDecl i_ exp_ consdecls_) = i == i_ && exp == exp_ && consdecls == consdecls_ johnMajorEq (TypeDecl i exp) (TypeDecl i_ exp_) = i == i_ && exp == exp_ -johnMajorEq (ValueDecl i patterns exp) (ValueDecl i_ patterns_ exp_) = i == i_ && patterns == patterns_ && exp == exp_ +johnMajorEq (ValueDecl i patterns guard exp) (ValueDecl i_ patterns_ guard_ exp_) = i == i_ && patterns == patterns_ && guard == guard_ && exp == exp_ johnMajorEq (DeriveDecl i0 i1) (DeriveDecl i0_ i1_) = i0 == i0_ && i1 == i1_ johnMajorEq (ConsDecl i exp) (ConsDecl i_ exp_) = i == i_ && exp == exp_ +johnMajorEq (GuardExp exp) (GuardExp exp_) = exp == exp_ +johnMajorEq GuardNo GuardNo = True johnMajorEq (POr pattern0 pattern1) (POr pattern0_ pattern1_) = pattern0 == pattern0_ && pattern1 == pattern1_ johnMajorEq (PListCons pattern0 pattern1) (PListCons pattern0_ pattern1_) = pattern0 == pattern0_ && pattern1 == pattern1_ johnMajorEq (PConsTop i pattern patterns) (PConsTop i_ pattern_ patterns_) = i == i_ && pattern == pattern_ && patterns == patterns_ @@ -321,13 +331,13 @@ johnMajorEq (PVar i) (PVar i_) = i == i_ johnMajorEq PWild PWild = True johnMajorEq (PListElem pattern) (PListElem pattern_) = pattern == pattern_ johnMajorEq (FieldPattern i pattern) (FieldPattern i_ pattern_) = i == i_ && pattern == pattern_ +johnMajorEq (EPi varorwild exp0 exp1) (EPi varorwild_ exp0_ exp1_) = varorwild == varorwild_ && exp0 == exp0_ && exp1 == exp1_ +johnMajorEq (EPiNoVar exp0 exp1) (EPiNoVar exp0_ exp1_) = exp0 == exp0_ && exp1 == exp1_ +johnMajorEq (EAbs varorwild exp) (EAbs varorwild_ exp_) = varorwild == varorwild_ && exp == exp_ johnMajorEq (ELet letdefs exp) (ELet letdefs_ exp_) = letdefs == letdefs_ && exp == exp_ johnMajorEq (ECase exp cases) (ECase exp_ cases_) = exp == exp_ && cases == cases_ johnMajorEq (EIf exp0 exp1 exp2) (EIf exp0_ exp1_ exp2_) = exp0 == exp0_ && exp1 == exp1_ && exp2 == exp2_ johnMajorEq (EDo binds exp) (EDo binds_ exp_) = binds == binds_ && exp == exp_ -johnMajorEq (EAbs varorwild exp) (EAbs varorwild_ exp_) = varorwild == varorwild_ && exp == exp_ -johnMajorEq (EPi varorwild exp0 exp1) (EPi varorwild_ exp0_ exp1_) = varorwild == varorwild_ && exp0 == exp0_ && exp1 == exp1_ -johnMajorEq (EPiNoVar exp0 exp1) (EPiNoVar exp0_ exp1_) = exp0 == exp0_ && exp1 == exp1_ johnMajorEq (EBind exp0 exp1) (EBind exp0_ exp1_) = exp0 == exp0_ && exp1 == exp1_ johnMajorEq (EBindC exp0 exp1) (EBindC exp0_ exp1_) = exp0 == exp0_ && exp1 == exp1_ johnMajorEq (EOr exp0 exp1) (EOr exp0_ exp1_) = exp0 == exp0_ && exp1 == exp1_ @@ -356,12 +366,12 @@ johnMajorEq (EStr str) (EStr str_) = str == str_ johnMajorEq (EInteger n) (EInteger n_) = n == n_ johnMajorEq (EDouble d) (EDouble d_) = d == d_ johnMajorEq EMeta EMeta = True +johnMajorEq (VVar i) (VVar i_) = i == i_ +johnMajorEq VWild VWild = True johnMajorEq (LetDef i exp0 exp1) (LetDef i_ exp0_ exp1_) = i == i_ && exp0 == exp0_ && exp1 == exp1_ -johnMajorEq (Case pattern exp) (Case pattern_ exp_) = pattern == pattern_ && exp == exp_ +johnMajorEq (Case pattern guard exp) (Case pattern_ guard_ exp_) = pattern == pattern_ && guard == guard_ && exp == exp_ johnMajorEq (BindVar varorwild exp) (BindVar varorwild_ exp_) = varorwild == varorwild_ && exp == exp_ johnMajorEq (BindNoVar exp) (BindNoVar exp_) = exp == exp_ -johnMajorEq (VVar i) (VVar i_) = i == i_ -johnMajorEq VWild VWild = True johnMajorEq (FieldType i exp) (FieldType i_ exp_) = i == i_ && exp == exp_ johnMajorEq (FieldValue i exp) (FieldValue i_ exp_) = i == i_ && exp == exp_ johnMajorEq (Ident str) (Ident str_) = str == str_ @@ -374,73 +384,77 @@ instance Ord (Tree c) where index (Import _) = 1 index (DataDecl _ _ _) = 2 index (TypeDecl _ _) = 3 - index (ValueDecl _ _ _) = 4 + index (ValueDecl _ _ _ _) = 4 index (DeriveDecl _ _) = 5 index (ConsDecl _ _) = 6 - index (POr _ _) = 7 - index (PListCons _ _) = 8 - index (PConsTop _ _ _) = 9 - index (PCons _ _) = 10 - index (PRec _) = 11 - index (PList _) = 12 - index (PType ) = 13 - index (PStr _) = 14 - index (PInt _) = 15 - index (PVar _) = 16 - index (PWild ) = 17 - index (PListElem _) = 18 - index (FieldPattern _ _) = 19 - index (ELet _ _) = 20 - index (ECase _ _) = 21 - index (EIf _ _ _) = 22 - index (EDo _ _) = 23 + index (GuardExp _) = 7 + index (GuardNo ) = 8 + index (POr _ _) = 9 + index (PListCons _ _) = 10 + index (PConsTop _ _ _) = 11 + index (PCons _ _) = 12 + index (PRec _) = 13 + index (PList _) = 14 + index (PType ) = 15 + index (PStr _) = 16 + index (PInt _) = 17 + index (PVar _) = 18 + index (PWild ) = 19 + index (PListElem _) = 20 + index (FieldPattern _ _) = 21 + index (EPi _ _ _) = 22 + index (EPiNoVar _ _) = 23 index (EAbs _ _) = 24 - index (EPi _ _ _) = 25 - index (EPiNoVar _ _) = 26 - index (EBind _ _) = 27 - index (EBindC _ _) = 28 - index (EOr _ _) = 29 - index (EAnd _ _) = 30 - index (EEq _ _) = 31 - index (ENe _ _) = 32 - index (ELt _ _) = 33 - index (ELe _ _) = 34 - index (EGt _ _) = 35 - index (EGe _ _) = 36 - index (EListCons _ _) = 37 - index (EAdd _ _) = 38 - index (ESub _ _) = 39 - index (EMul _ _) = 40 - index (EDiv _ _) = 41 - index (EMod _ _) = 42 - index (ENeg _) = 43 - index (EApp _ _) = 44 - index (EProj _ _) = 45 - index (ERecType _) = 46 - index (ERec _) = 47 - index (EList _) = 48 - index (EVar _) = 49 - index (EType ) = 50 - index (EStr _) = 51 - index (EInteger _) = 52 - index (EDouble _) = 53 - index (EMeta ) = 54 - index (LetDef _ _ _) = 55 - index (Case _ _) = 56 - index (BindVar _ _) = 57 - index (BindNoVar _) = 58 - index (VVar _) = 59 - index (VWild ) = 60 - index (FieldType _ _) = 61 - index (FieldValue _ _) = 62 - index (Ident _) = 63 + index (ELet _ _) = 25 + index (ECase _ _) = 26 + index (EIf _ _ _) = 27 + index (EDo _ _) = 28 + index (EBind _ _) = 29 + index (EBindC _ _) = 30 + index (EOr _ _) = 31 + index (EAnd _ _) = 32 + index (EEq _ _) = 33 + index (ENe _ _) = 34 + index (ELt _ _) = 35 + index (ELe _ _) = 36 + index (EGt _ _) = 37 + index (EGe _ _) = 38 + index (EListCons _ _) = 39 + index (EAdd _ _) = 40 + index (ESub _ _) = 41 + index (EMul _ _) = 42 + index (EDiv _ _) = 43 + index (EMod _ _) = 44 + index (ENeg _) = 45 + index (EApp _ _) = 46 + index (EProj _ _) = 47 + index (ERecType _) = 48 + index (ERec _) = 49 + index (EList _) = 50 + index (EVar _) = 51 + index (EType ) = 52 + index (EStr _) = 53 + index (EInteger _) = 54 + index (EDouble _) = 55 + index (EMeta ) = 56 + index (VVar _) = 57 + index (VWild ) = 58 + index (LetDef _ _ _) = 59 + index (Case _ _ _) = 60 + index (BindVar _ _) = 61 + index (BindNoVar _) = 62 + index (FieldType _ _) = 63 + index (FieldValue _ _) = 64 + index (Ident _) = 65 compareSame (Module imports decls) (Module imports_ decls_) = mappend (compare imports imports_) (compare decls decls_) compareSame (Import i) (Import i_) = compare i i_ compareSame (DataDecl i exp consdecls) (DataDecl i_ exp_ consdecls_) = mappend (compare i i_) (mappend (compare exp exp_) (compare consdecls consdecls_)) compareSame (TypeDecl i exp) (TypeDecl i_ exp_) = mappend (compare i i_) (compare exp exp_) - compareSame (ValueDecl i patterns exp) (ValueDecl i_ patterns_ exp_) = mappend (compare i i_) (mappend (compare patterns patterns_) (compare exp exp_)) + compareSame (ValueDecl i patterns guard exp) (ValueDecl i_ patterns_ guard_ exp_) = mappend (compare i i_) (mappend (compare patterns patterns_) (mappend (compare guard guard_) (compare exp exp_))) compareSame (DeriveDecl i0 i1) (DeriveDecl i0_ i1_) = mappend (compare i0 i0_) (compare i1 i1_) compareSame (ConsDecl i exp) (ConsDecl i_ exp_) = mappend (compare i i_) (compare exp exp_) + compareSame (GuardExp exp) (GuardExp exp_) = compare exp exp_ + compareSame GuardNo GuardNo = EQ compareSame (POr pattern0 pattern1) (POr pattern0_ pattern1_) = mappend (compare pattern0 pattern0_) (compare pattern1 pattern1_) compareSame (PListCons pattern0 pattern1) (PListCons pattern0_ pattern1_) = mappend (compare pattern0 pattern0_) (compare pattern1 pattern1_) compareSame (PConsTop i pattern patterns) (PConsTop i_ pattern_ patterns_) = mappend (compare i i_) (mappend (compare pattern pattern_) (compare patterns patterns_)) @@ -454,13 +468,13 @@ instance Ord (Tree c) where compareSame PWild PWild = EQ compareSame (PListElem pattern) (PListElem pattern_) = compare pattern pattern_ compareSame (FieldPattern i pattern) (FieldPattern i_ pattern_) = mappend (compare i i_) (compare pattern pattern_) + compareSame (EPi varorwild exp0 exp1) (EPi varorwild_ exp0_ exp1_) = mappend (compare varorwild varorwild_) (mappend (compare exp0 exp0_) (compare exp1 exp1_)) + compareSame (EPiNoVar exp0 exp1) (EPiNoVar exp0_ exp1_) = mappend (compare exp0 exp0_) (compare exp1 exp1_) + compareSame (EAbs varorwild exp) (EAbs varorwild_ exp_) = mappend (compare varorwild varorwild_) (compare exp exp_) compareSame (ELet letdefs exp) (ELet letdefs_ exp_) = mappend (compare letdefs letdefs_) (compare exp exp_) compareSame (ECase exp cases) (ECase exp_ cases_) = mappend (compare exp exp_) (compare cases cases_) compareSame (EIf exp0 exp1 exp2) (EIf exp0_ exp1_ exp2_) = mappend (compare exp0 exp0_) (mappend (compare exp1 exp1_) (compare exp2 exp2_)) compareSame (EDo binds exp) (EDo binds_ exp_) = mappend (compare binds binds_) (compare exp exp_) - compareSame (EAbs varorwild exp) (EAbs varorwild_ exp_) = mappend (compare varorwild varorwild_) (compare exp exp_) - compareSame (EPi varorwild exp0 exp1) (EPi varorwild_ exp0_ exp1_) = mappend (compare varorwild varorwild_) (mappend (compare exp0 exp0_) (compare exp1 exp1_)) - compareSame (EPiNoVar exp0 exp1) (EPiNoVar exp0_ exp1_) = mappend (compare exp0 exp0_) (compare exp1 exp1_) compareSame (EBind exp0 exp1) (EBind exp0_ exp1_) = mappend (compare exp0 exp0_) (compare exp1 exp1_) compareSame (EBindC exp0 exp1) (EBindC exp0_ exp1_) = mappend (compare exp0 exp0_) (compare exp1 exp1_) compareSame (EOr exp0 exp1) (EOr exp0_ exp1_) = mappend (compare exp0 exp0_) (compare exp1 exp1_) @@ -489,12 +503,12 @@ instance Ord (Tree c) where compareSame (EInteger n) (EInteger n_) = compare n n_ compareSame (EDouble d) (EDouble d_) = compare d d_ compareSame EMeta EMeta = EQ + compareSame (VVar i) (VVar i_) = compare i i_ + compareSame VWild VWild = EQ compareSame (LetDef i exp0 exp1) (LetDef i_ exp0_ exp1_) = mappend (compare i i_) (mappend (compare exp0 exp0_) (compare exp1 exp1_)) - compareSame (Case pattern exp) (Case pattern_ exp_) = mappend (compare pattern pattern_) (compare exp exp_) + compareSame (Case pattern guard exp) (Case pattern_ guard_ exp_) = mappend (compare pattern pattern_) (mappend (compare guard guard_) (compare exp exp_)) compareSame (BindVar varorwild exp) (BindVar varorwild_ exp_) = mappend (compare varorwild varorwild_) (compare exp exp_) compareSame (BindNoVar exp) (BindNoVar exp_) = compare exp exp_ - compareSame (VVar i) (VVar i_) = compare i i_ - compareSame VWild VWild = EQ compareSame (FieldType i exp) (FieldType i_ exp_) = mappend (compare i i_) (compare exp exp_) compareSame (FieldValue i exp) (FieldValue i_ exp_) = mappend (compare i i_) (compare exp exp_) compareSame (Ident str) (Ident str_) = compare str str_ diff --git a/src/Transfer/Syntax/Doc.tex b/src/Transfer/Syntax/Doc.tex index 759047dd5..c9d98bced 100644 --- a/src/Transfer/Syntax/Doc.tex +++ b/src/Transfer/Syntax/Doc.tex @@ -62,16 +62,16 @@ The symbols used in Syntax are the following: \\ \begin{tabular}{lll} {\symb{;}} &{\symb{:}} &{\symb{\{}} \\ -{\symb{\}}} &{\symb{{$=$}}} &{\symb{{$|$}{$|$}}} \\ -{\symb{::}} &{\symb{(}} &{\symb{)}} \\ -{\symb{[}} &{\symb{]}} &{\symb{,}} \\ -{\symb{\_}} &{\symb{{$-$}{$>$}}} &{\symb{{$<$}{$-$}}} \\ -{\symb{$\backslash$}} &{\symb{{$>$}{$>$}{$=$}}} &{\symb{{$>$}{$>$}}} \\ -{\symb{\&\&}} &{\symb{{$=$}{$=$}}} &{\symb{/{$=$}}} \\ -{\symb{{$<$}}} &{\symb{{$<$}{$=$}}} &{\symb{{$>$}}} \\ -{\symb{{$>$}{$=$}}} &{\symb{{$+$}}} &{\symb{{$-$}}} \\ -{\symb{*}} &{\symb{/}} &{\symb{\%}} \\ -{\symb{.}} &{\symb{?}} & \\ +{\symb{\}}} &{\symb{{$=$}}} &{\symb{{$|$}}} \\ +{\symb{{$|$}{$|$}}} &{\symb{::}} &{\symb{(}} \\ +{\symb{)}} &{\symb{[}} &{\symb{]}} \\ +{\symb{,}} &{\symb{\_}} &{\symb{{$-$}{$>$}}} \\ +{\symb{$\backslash$}} &{\symb{{$<$}{$-$}}} &{\symb{{$>$}{$>$}{$=$}}} \\ +{\symb{{$>$}{$>$}}} &{\symb{\&\&}} &{\symb{{$=$}{$=$}}} \\ +{\symb{/{$=$}}} &{\symb{{$<$}}} &{\symb{{$<$}{$=$}}} \\ +{\symb{{$>$}}} &{\symb{{$>$}{$=$}}} &{\symb{{$+$}}} \\ +{\symb{{$-$}}} &{\symb{*}} &{\symb{/}} \\ +{\symb{\%}} &{\symb{.}} &{\symb{?}} \\ \end{tabular}\\ \subsection*{Comments} @@ -100,7 +100,7 @@ All other symbols are terminals.\\ \begin{tabular}{lll} {\nonterminal{Decl}} & {\arrow} &{\terminal{data}} {\nonterminal{Ident}} {\terminal{:}} {\nonterminal{Exp}} {\terminal{where}} {\terminal{\{}} {\nonterminal{ListConsDecl}} {\terminal{\}}} \\ & {\delimit} &{\nonterminal{Ident}} {\terminal{:}} {\nonterminal{Exp}} \\ - & {\delimit} &{\nonterminal{Ident}} {\nonterminal{ListPattern}} {\terminal{{$=$}}} {\nonterminal{Exp}} \\ + & {\delimit} &{\nonterminal{Ident}} {\nonterminal{ListPattern}} {\nonterminal{Guard}} {\terminal{{$=$}}} {\nonterminal{Exp}} \\ & {\delimit} &{\terminal{derive}} {\nonterminal{Ident}} {\nonterminal{Ident}} \\ \end{tabular}\\ @@ -121,6 +121,11 @@ All other symbols are terminals.\\ \end{tabular}\\ \begin{tabular}{lll} +{\nonterminal{Guard}} & {\arrow} &{\terminal{{$|$}}} {\nonterminal{Exp1}} \\ + & {\delimit} &{\emptyP} \\ +\end{tabular}\\ + +\begin{tabular}{lll} {\nonterminal{Pattern}} & {\arrow} &{\nonterminal{Pattern1}} {\terminal{{$|$}{$|$}}} {\nonterminal{Pattern}} \\ & {\delimit} &{\nonterminal{Pattern1}} \\ \end{tabular}\\ @@ -172,11 +177,23 @@ All other symbols are terminals.\\ \end{tabular}\\ \begin{tabular}{lll} -{\nonterminal{Exp}} & {\arrow} &{\terminal{let}} {\terminal{\{}} {\nonterminal{ListLetDef}} {\terminal{\}}} {\terminal{in}} {\nonterminal{Exp}} \\ +{\nonterminal{Exp}} & {\arrow} &{\terminal{(}} {\nonterminal{VarOrWild}} {\terminal{:}} {\nonterminal{Exp}} {\terminal{)}} {\terminal{{$-$}{$>$}}} {\nonterminal{Exp}} \\ + & {\delimit} &{\nonterminal{Exp1}} {\terminal{{$-$}{$>$}}} {\nonterminal{Exp}} \\ + & {\delimit} &{\nonterminal{Exp1}} \\ +\end{tabular}\\ + +\begin{tabular}{lll} +{\nonterminal{VarOrWild}} & {\arrow} &{\nonterminal{Ident}} \\ + & {\delimit} &{\terminal{\_}} \\ +\end{tabular}\\ + +\begin{tabular}{lll} +{\nonterminal{Exp1}} & {\arrow} &{\terminal{$\backslash$}} {\nonterminal{VarOrWild}} {\terminal{{$-$}{$>$}}} {\nonterminal{Exp1}} \\ + & {\delimit} &{\terminal{let}} {\terminal{\{}} {\nonterminal{ListLetDef}} {\terminal{\}}} {\terminal{in}} {\nonterminal{Exp1}} \\ & {\delimit} &{\terminal{case}} {\nonterminal{Exp}} {\terminal{of}} {\terminal{\{}} {\nonterminal{ListCase}} {\terminal{\}}} \\ - & {\delimit} &{\terminal{if}} {\nonterminal{Exp}} {\terminal{then}} {\nonterminal{Exp}} {\terminal{else}} {\nonterminal{Exp}} \\ + & {\delimit} &{\terminal{if}} {\nonterminal{Exp}} {\terminal{then}} {\nonterminal{Exp}} {\terminal{else}} {\nonterminal{Exp1}} \\ & {\delimit} &{\terminal{do}} {\terminal{\{}} {\nonterminal{ListBind}} {\nonterminal{Exp}} {\terminal{\}}} \\ - & {\delimit} &{\nonterminal{Exp1}} \\ + & {\delimit} &{\nonterminal{Exp2}} \\ \end{tabular}\\ \begin{tabular}{lll} @@ -190,7 +207,7 @@ All other symbols are terminals.\\ \end{tabular}\\ \begin{tabular}{lll} -{\nonterminal{Case}} & {\arrow} &{\nonterminal{Pattern}} {\terminal{{$-$}{$>$}}} {\nonterminal{Exp}} \\ +{\nonterminal{Case}} & {\arrow} &{\nonterminal{Pattern}} {\nonterminal{Guard}} {\terminal{{$-$}{$>$}}} {\nonterminal{Exp}} \\ \end{tabular}\\ \begin{tabular}{lll} @@ -210,18 +227,6 @@ All other symbols are terminals.\\ \end{tabular}\\ \begin{tabular}{lll} -{\nonterminal{Exp2}} & {\arrow} &{\terminal{$\backslash$}} {\nonterminal{VarOrWild}} {\terminal{{$-$}{$>$}}} {\nonterminal{Exp}} \\ - & {\delimit} &{\terminal{(}} {\nonterminal{VarOrWild}} {\terminal{:}} {\nonterminal{Exp}} {\terminal{)}} {\terminal{{$-$}{$>$}}} {\nonterminal{Exp}} \\ - & {\delimit} &{\nonterminal{Exp3}} {\terminal{{$-$}{$>$}}} {\nonterminal{Exp}} \\ - & {\delimit} &{\nonterminal{Exp3}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{VarOrWild}} & {\arrow} &{\nonterminal{Ident}} \\ - & {\delimit} &{\terminal{\_}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} {\nonterminal{Exp3}} & {\arrow} &{\nonterminal{Exp3}} {\terminal{{$>$}{$>$}{$=$}}} {\nonterminal{Exp4}} \\ & {\delimit} &{\nonterminal{Exp3}} {\terminal{{$>$}{$>$}}} {\nonterminal{Exp4}} \\ & {\delimit} &{\nonterminal{Exp4}} \\ @@ -314,7 +319,7 @@ All other symbols are terminals.\\ \end{tabular}\\ \begin{tabular}{lll} -{\nonterminal{Exp1}} & {\arrow} &{\nonterminal{Exp2}} \\ +{\nonterminal{Exp2}} & {\arrow} &{\nonterminal{Exp3}} \\ \end{tabular}\\ \begin{tabular}{lll} diff --git a/src/Transfer/Syntax/Lex.hs b/src/Transfer/Syntax/Lex.hs index c9ad6b22b..645eb1d81 100644 --- a/src/Transfer/Syntax/Lex.hs +++ b/src/Transfer/Syntax/Lex.hs @@ -24,18 +24,18 @@ import GHC.Exts import GlaExts #endif alex_base :: AlexAddr -alex_base = AlexA# "\x01\x00\x00\x00\x15\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x26\x00\x00\x00\x14\x00\x00\x00\x17\x00\x00\x00\x1e\x00\x00\x00\x27\x00\x00\x00\xd6\xff\xff\xff\x30\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\xd5\x00\x00\x00\x37\x00\x00\x00\xe7\x00\x00\x00\xf2\x00\x00\x00\x1d\x01\x00\x00\x6c\x01\x00\x00\x79\x01\x00\x00"# +alex_base = AlexA# "\x01\x00\x00\x00\x15\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\xd4\xff\xff\xff\x17\x00\x00\x00\x26\x00\x00\x00\x1e\x00\x00\x00\x27\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2c\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\xd5\x00\x00\x00\xf2\x00\x00\x00\x6c\x01\x00\x00\x1a\x01\x00\x00\x76\x01\x00\x00\x80\x01\x00\x00\x8d\x01\x00\x00"# alex_table :: AlexAddr -alex_table = AlexA# "\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\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\x0d\x00\xff\xff\x19\x00\xff\xff\xff\xff\x0e\x00\x16\x00\xff\xff\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x05\x00\x0e\x00\x14\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x0f\x00\x0e\x00\x10\x00\x13\x00\x12\x00\x0e\x00\xff\xff\x04\x00\xff\xff\xff\xff\x03\x00\x03\x00\x09\x00\x09\x00\x09\x00\x0b\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x11\x00\x0e\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\xff\xff\x0e\x00\xff\xff\x0d\x00\x0e\x00\x0e\x00\x1e\x00\x00\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x09\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x15\x00\x0e\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\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\x06\x00\x07\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x19\x00\xff\xff\x00\x00\x00\x00\x17\x00\x19\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\xff\xff\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x20\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x1a\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1f\x00\x00\x00\x00\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# +alex_table = AlexA# "\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\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\x0d\x00\xff\xff\x19\x00\xff\xff\xff\xff\x0e\x00\x16\x00\xff\xff\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x05\x00\x0e\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x10\x00\x0e\x00\x11\x00\x14\x00\x13\x00\x0e\x00\xff\xff\x04\x00\xff\xff\xff\xff\x03\x00\x03\x00\x09\x00\x09\x00\x09\x00\x0b\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\xff\xff\x0e\x00\xff\xff\x0d\x00\x0e\x00\x0e\x00\x12\x00\x0e\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0f\x00\x0e\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\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\x06\x00\x07\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x19\x00\xff\xff\x00\x00\x00\x00\x17\x00\x19\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\xff\xff\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x1a\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1f\x00\x00\x00\x00\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# alex_check :: AlexAddr -alex_check = AlexA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x2d\x00\x0a\x00\x0a\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x3a\x00\x3d\x00\x7c\x00\x2d\x00\x3d\x00\x3e\x00\x26\x00\x3e\x00\xff\xff\xff\xff\xff\xff\x3d\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x20\x00\x3d\x00\x3d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x2d\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\x7d\x00\x7d\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xd7\x00\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x22\x00\xf7\x00\xff\xff\xff\xff\x5f\x00\x27\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x65\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x5c\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x2d\x00\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\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\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\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\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\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\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"# +alex_check = AlexA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x2d\x00\x0a\x00\x0a\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x7c\x00\x3a\x00\x26\x00\x2d\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\x3d\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x20\x00\x3d\x00\x3d\x00\x3e\x00\x3d\x00\x3d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\x7d\x00\x7d\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xd7\x00\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x22\x00\xf7\x00\xff\xff\xff\xff\x5f\x00\x27\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x5c\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x2d\x00\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\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\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\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\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# alex_deflt :: AlexAddr alex_deflt = AlexA# "\x17\x00\xff\xff\x02\x00\x02\x00\xff\xff\xff\xff\x0a\x00\xff\xff\x0a\x00\x0a\x00\x0a\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# -alex_accept = listArray (0::Int,32) [[],[],[(AlexAccSkip)],[(AlexAccSkip)],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAccSkip)],[],[],[],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[],[],[(AlexAcc (alex_action_4))],[(AlexAcc (alex_action_5))],[],[],[(AlexAcc (alex_action_6))],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_7))],[],[],[]] +alex_accept = listArray (0::Int,32) [[],[],[(AlexAccSkip)],[(AlexAccSkip)],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAccSkip)],[],[],[],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[],[(AlexAcc (alex_action_4))],[(AlexAcc (alex_action_5))],[],[],[(AlexAcc (alex_action_6))],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_7))],[],[],[]] {-# LINE 34 "Transfer/Syntax/Lex.x" #-} tok f p s = f p s diff --git a/src/Transfer/Syntax/Lex.x b/src/Transfer/Syntax/Lex.x index f7376362a..8ef193a26 100644 --- a/src/Transfer/Syntax/Lex.x +++ b/src/Transfer/Syntax/Lex.x @@ -16,7 +16,7 @@ $i = [$l $d _ '] -- identifier character $u = [\0-\255] -- universal: any character @rsyms = -- reserved words consisting of special symbols - \; | \: | \{ | \} | \= | \| \| | \: \: | \( | \) | \[ | \] | \, | \_ | \- \> | \< \- | \\ | \> \> \= | \> \> | \& \& | \= \= | \/ \= | \< | \< \= | \> | \> \= | \+ | \- | \* | \/ | \% | \. | \? + \; | \: | \{ | \} | \= | \| | \| \| | \: \: | \( | \) | \[ | \] | \, | \_ | \- \> | \\ | \< \- | \> \> \= | \> \> | \& \& | \= \= | \/ \= | \< | \< \= | \> | \> \= | \+ | \- | \* | \/ | \% | \. | \? :- "--" [.]* ; -- Toss single line comments diff --git a/src/Transfer/Syntax/Par.hs b/src/Transfer/Syntax/Par.hs index 2f455c5e4..cc47a4c0b 100644 --- a/src/Transfer/Syntax/Par.hs +++ b/src/Transfer/Syntax/Par.hs @@ -79,10 +79,10 @@ happyIn15 x = unsafeCoerce# x happyOut15 :: (HappyAbsSyn ) -> ([ConsDecl]) happyOut15 x = unsafeCoerce# x {-# INLINE happyOut15 #-} -happyIn16 :: (Pattern) -> (HappyAbsSyn ) +happyIn16 :: (Guard) -> (HappyAbsSyn ) happyIn16 x = unsafeCoerce# x {-# INLINE happyIn16 #-} -happyOut16 :: (HappyAbsSyn ) -> (Pattern) +happyOut16 :: (HappyAbsSyn ) -> (Guard) happyOut16 x = unsafeCoerce# x {-# INLINE happyOut16 #-} happyIn17 :: (Pattern) -> (HappyAbsSyn ) @@ -103,94 +103,94 @@ happyIn19 x = unsafeCoerce# x happyOut19 :: (HappyAbsSyn ) -> (Pattern) happyOut19 x = unsafeCoerce# x {-# INLINE happyOut19 #-} -happyIn20 :: (PListElem) -> (HappyAbsSyn ) +happyIn20 :: (Pattern) -> (HappyAbsSyn ) happyIn20 x = unsafeCoerce# x {-# INLINE happyIn20 #-} -happyOut20 :: (HappyAbsSyn ) -> (PListElem) +happyOut20 :: (HappyAbsSyn ) -> (Pattern) happyOut20 x = unsafeCoerce# x {-# INLINE happyOut20 #-} -happyIn21 :: ([PListElem]) -> (HappyAbsSyn ) +happyIn21 :: (PListElem) -> (HappyAbsSyn ) happyIn21 x = unsafeCoerce# x {-# INLINE happyIn21 #-} -happyOut21 :: (HappyAbsSyn ) -> ([PListElem]) +happyOut21 :: (HappyAbsSyn ) -> (PListElem) happyOut21 x = unsafeCoerce# x {-# INLINE happyOut21 #-} -happyIn22 :: ([Pattern]) -> (HappyAbsSyn ) +happyIn22 :: ([PListElem]) -> (HappyAbsSyn ) happyIn22 x = unsafeCoerce# x {-# INLINE happyIn22 #-} -happyOut22 :: (HappyAbsSyn ) -> ([Pattern]) +happyOut22 :: (HappyAbsSyn ) -> ([PListElem]) happyOut22 x = unsafeCoerce# x {-# INLINE happyOut22 #-} -happyIn23 :: (FieldPattern) -> (HappyAbsSyn ) +happyIn23 :: ([Pattern]) -> (HappyAbsSyn ) happyIn23 x = unsafeCoerce# x {-# INLINE happyIn23 #-} -happyOut23 :: (HappyAbsSyn ) -> (FieldPattern) +happyOut23 :: (HappyAbsSyn ) -> ([Pattern]) happyOut23 x = unsafeCoerce# x {-# INLINE happyOut23 #-} -happyIn24 :: ([FieldPattern]) -> (HappyAbsSyn ) +happyIn24 :: (FieldPattern) -> (HappyAbsSyn ) happyIn24 x = unsafeCoerce# x {-# INLINE happyIn24 #-} -happyOut24 :: (HappyAbsSyn ) -> ([FieldPattern]) +happyOut24 :: (HappyAbsSyn ) -> (FieldPattern) happyOut24 x = unsafeCoerce# x {-# INLINE happyOut24 #-} -happyIn25 :: (Exp) -> (HappyAbsSyn ) +happyIn25 :: ([FieldPattern]) -> (HappyAbsSyn ) happyIn25 x = unsafeCoerce# x {-# INLINE happyIn25 #-} -happyOut25 :: (HappyAbsSyn ) -> (Exp) +happyOut25 :: (HappyAbsSyn ) -> ([FieldPattern]) happyOut25 x = unsafeCoerce# x {-# INLINE happyOut25 #-} -happyIn26 :: (LetDef) -> (HappyAbsSyn ) +happyIn26 :: (Exp) -> (HappyAbsSyn ) happyIn26 x = unsafeCoerce# x {-# INLINE happyIn26 #-} -happyOut26 :: (HappyAbsSyn ) -> (LetDef) +happyOut26 :: (HappyAbsSyn ) -> (Exp) happyOut26 x = unsafeCoerce# x {-# INLINE happyOut26 #-} -happyIn27 :: ([LetDef]) -> (HappyAbsSyn ) +happyIn27 :: (VarOrWild) -> (HappyAbsSyn ) happyIn27 x = unsafeCoerce# x {-# INLINE happyIn27 #-} -happyOut27 :: (HappyAbsSyn ) -> ([LetDef]) +happyOut27 :: (HappyAbsSyn ) -> (VarOrWild) happyOut27 x = unsafeCoerce# x {-# INLINE happyOut27 #-} -happyIn28 :: (Case) -> (HappyAbsSyn ) +happyIn28 :: (Exp) -> (HappyAbsSyn ) happyIn28 x = unsafeCoerce# x {-# INLINE happyIn28 #-} -happyOut28 :: (HappyAbsSyn ) -> (Case) +happyOut28 :: (HappyAbsSyn ) -> (Exp) happyOut28 x = unsafeCoerce# x {-# INLINE happyOut28 #-} -happyIn29 :: ([Case]) -> (HappyAbsSyn ) +happyIn29 :: (LetDef) -> (HappyAbsSyn ) happyIn29 x = unsafeCoerce# x {-# INLINE happyIn29 #-} -happyOut29 :: (HappyAbsSyn ) -> ([Case]) +happyOut29 :: (HappyAbsSyn ) -> (LetDef) happyOut29 x = unsafeCoerce# x {-# INLINE happyOut29 #-} -happyIn30 :: (Bind) -> (HappyAbsSyn ) +happyIn30 :: ([LetDef]) -> (HappyAbsSyn ) happyIn30 x = unsafeCoerce# x {-# INLINE happyIn30 #-} -happyOut30 :: (HappyAbsSyn ) -> (Bind) +happyOut30 :: (HappyAbsSyn ) -> ([LetDef]) happyOut30 x = unsafeCoerce# x {-# INLINE happyOut30 #-} -happyIn31 :: ([Bind]) -> (HappyAbsSyn ) +happyIn31 :: (Case) -> (HappyAbsSyn ) happyIn31 x = unsafeCoerce# x {-# INLINE happyIn31 #-} -happyOut31 :: (HappyAbsSyn ) -> ([Bind]) +happyOut31 :: (HappyAbsSyn ) -> (Case) happyOut31 x = unsafeCoerce# x {-# INLINE happyOut31 #-} -happyIn32 :: (Exp) -> (HappyAbsSyn ) +happyIn32 :: ([Case]) -> (HappyAbsSyn ) happyIn32 x = unsafeCoerce# x {-# INLINE happyIn32 #-} -happyOut32 :: (HappyAbsSyn ) -> (Exp) +happyOut32 :: (HappyAbsSyn ) -> ([Case]) happyOut32 x = unsafeCoerce# x {-# INLINE happyOut32 #-} -happyIn33 :: (VarOrWild) -> (HappyAbsSyn ) +happyIn33 :: (Bind) -> (HappyAbsSyn ) happyIn33 x = unsafeCoerce# x {-# INLINE happyIn33 #-} -happyOut33 :: (HappyAbsSyn ) -> (VarOrWild) +happyOut33 :: (HappyAbsSyn ) -> (Bind) happyOut33 x = unsafeCoerce# x {-# INLINE happyOut33 #-} -happyIn34 :: (Exp) -> (HappyAbsSyn ) +happyIn34 :: ([Bind]) -> (HappyAbsSyn ) happyIn34 x = unsafeCoerce# x {-# INLINE happyIn34 #-} -happyOut34 :: (HappyAbsSyn ) -> (Exp) +happyOut34 :: (HappyAbsSyn ) -> ([Bind]) happyOut34 x = unsafeCoerce# x {-# INLINE happyOut34 #-} happyIn35 :: (Exp) -> (HappyAbsSyn ) @@ -253,42 +253,48 @@ happyIn44 x = unsafeCoerce# x happyOut44 :: (HappyAbsSyn ) -> (Exp) happyOut44 x = unsafeCoerce# x {-# INLINE happyOut44 #-} -happyIn45 :: (FieldType) -> (HappyAbsSyn ) +happyIn45 :: (Exp) -> (HappyAbsSyn ) happyIn45 x = unsafeCoerce# x {-# INLINE happyIn45 #-} -happyOut45 :: (HappyAbsSyn ) -> (FieldType) +happyOut45 :: (HappyAbsSyn ) -> (Exp) happyOut45 x = unsafeCoerce# x {-# INLINE happyOut45 #-} -happyIn46 :: ([FieldType]) -> (HappyAbsSyn ) +happyIn46 :: (FieldType) -> (HappyAbsSyn ) happyIn46 x = unsafeCoerce# x {-# INLINE happyIn46 #-} -happyOut46 :: (HappyAbsSyn ) -> ([FieldType]) +happyOut46 :: (HappyAbsSyn ) -> (FieldType) happyOut46 x = unsafeCoerce# x {-# INLINE happyOut46 #-} -happyIn47 :: (FieldValue) -> (HappyAbsSyn ) +happyIn47 :: ([FieldType]) -> (HappyAbsSyn ) happyIn47 x = unsafeCoerce# x {-# INLINE happyIn47 #-} -happyOut47 :: (HappyAbsSyn ) -> (FieldValue) +happyOut47 :: (HappyAbsSyn ) -> ([FieldType]) happyOut47 x = unsafeCoerce# x {-# INLINE happyOut47 #-} -happyIn48 :: ([FieldValue]) -> (HappyAbsSyn ) +happyIn48 :: (FieldValue) -> (HappyAbsSyn ) happyIn48 x = unsafeCoerce# x {-# INLINE happyIn48 #-} -happyOut48 :: (HappyAbsSyn ) -> ([FieldValue]) +happyOut48 :: (HappyAbsSyn ) -> (FieldValue) happyOut48 x = unsafeCoerce# x {-# INLINE happyOut48 #-} -happyIn49 :: (Exp) -> (HappyAbsSyn ) +happyIn49 :: ([FieldValue]) -> (HappyAbsSyn ) happyIn49 x = unsafeCoerce# x {-# INLINE happyIn49 #-} -happyOut49 :: (HappyAbsSyn ) -> (Exp) +happyOut49 :: (HappyAbsSyn ) -> ([FieldValue]) happyOut49 x = unsafeCoerce# x {-# INLINE happyOut49 #-} -happyIn50 :: ([Exp]) -> (HappyAbsSyn ) +happyIn50 :: (Exp) -> (HappyAbsSyn ) happyIn50 x = unsafeCoerce# x {-# INLINE happyIn50 #-} -happyOut50 :: (HappyAbsSyn ) -> ([Exp]) +happyOut50 :: (HappyAbsSyn ) -> (Exp) happyOut50 x = unsafeCoerce# x {-# INLINE happyOut50 #-} +happyIn51 :: ([Exp]) -> (HappyAbsSyn ) +happyIn51 x = unsafeCoerce# x +{-# INLINE happyIn51 #-} +happyOut51 :: (HappyAbsSyn ) -> ([Exp]) +happyOut51 x = unsafeCoerce# x +{-# INLINE happyOut51 #-} happyInTok :: Token -> (HappyAbsSyn ) happyInTok x = unsafeCoerce# x {-# INLINE happyInTok #-} @@ -297,21 +303,21 @@ happyOutTok x = unsafeCoerce# x {-# INLINE happyOutTok #-} happyActOffsets :: HappyAddr -happyActOffsets = HappyA# "\x91\x01\x29\x03\x8a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x01\x00\x00\x3a\x00\x00\x00\xb1\x01\x79\x01\x29\x01\x48\x00\x73\x00\x00\x00\x59\x03\x84\x01\x00\x00\x00\x00\x15\x03\x29\x03\xfc\xff\x45\x03\x00\x00\x00\x00\x29\x03\x9e\x01\x29\x03\x9d\x01\x9c\x01\x9a\x01\x00\x00\x00\x00\x00\x00\x67\x01\x80\x01\xe3\xff\x6a\x01\x00\x00\x89\x01\x7f\x01\x00\x00\x5e\x01\x5e\x01\x57\x01\x4e\x01\x4e\x01\x4e\x01\x4f\x01\x00\x00\x51\x01\x00\x00\x29\x03\x00\x00\x6d\x01\x00\x00\x6e\x01\x59\x01\x3e\x00\x5d\x01\x61\x01\x32\x01\x41\x01\x45\x03\x45\x03\x45\x03\x45\x03\x45\x03\x45\x03\x45\x03\x45\x03\x45\x03\x45\x03\x45\x03\x45\x03\x45\x03\x45\x03\x29\x03\x45\x03\x45\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x03\x00\x00\x00\x00\x29\x03\x29\x03\x5c\x01\x15\x03\x29\x03\x5b\x01\x50\x01\x4b\x01\x49\x01\x43\x01\x3f\x01\x27\x01\x26\x01\x22\x01\x00\x00\xf5\x00\x21\x01\xe3\xff\x3c\x00\x29\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x03\x61\x03\x61\x03\x00\x00\x00\x00\x1f\x01\x00\x00\x29\x03\x00\x00\x00\x00\xe4\x00\x29\x03\x00\x00\xe4\x00\x29\x03\xf7\x00\xe2\x00\x29\x03\xeb\x00\x00\x01\x04\x01\xf3\x00\x61\x03\x00\x00\x00\x00\xe1\x00\xf2\x00\x61\x03\xd8\x00\xdf\x00\xdc\x00\x00\x00\xd4\x00\xca\x00\x29\x03\x00\x00\x00\x00\x29\x03\xc8\x00\x00\x00\x29\x03\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x91\x00\x00\x00\xb4\x00\xa2\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x61\x03\xaa\x00\xa8\x00\xa7\x00\xa5\x00\x00\x00\x29\x03\x00\x00\x00\x00\x00\x00\x61\x03\x61\x03\x61\x03\x29\x03\x00\x00\x29\x03\x00\x00\x61\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x00\x00\x76\x00\x61\x03\x00\x00\x00\x00\x00\x00\x6e\x00\x6a\x00\x65\x00\x00\x00\x31\x00\x29\x03\x00\x00\x00\x00\x00\x00"# +happyActOffsets = HappyA# "\x92\x01\x4c\x03\x88\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\xa6\x01\xc0\x00\x00\x00\xac\x01\xa0\x01\x9c\x02\x85\x00\x9c\x00\x00\x00\x68\x03\x7c\x01\x00\x00\x00\x00\xa0\x02\x4c\x03\xf9\xff\x38\x03\x00\x00\x00\x00\x4c\x03\xa4\x01\x4c\x03\x9f\x01\x9d\x01\x9a\x01\x00\x00\x00\x00\x00\x00\x65\x01\x99\x01\x63\x00\x5d\x01\x00\x00\x87\x01\x83\x01\x00\x00\x56\x01\x56\x01\x5a\x01\x51\x01\x51\x01\x51\x01\x52\x01\x00\x00\x49\x01\x00\x00\x4c\x03\x00\x00\x61\x01\x00\x00\x5e\x01\x62\x01\x03\x00\x5f\x01\x66\x01\x39\x01\x3c\x01\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x4c\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x03\x00\x00\x00\x00\x4c\x03\x30\x03\x54\x01\xa0\x02\x1c\x03\x53\x01\x4f\x01\x4e\x01\x4c\x01\x42\x01\x4b\x01\x37\x01\x3d\x01\x38\x01\x00\x00\x07\x01\x35\x01\x63\x00\x8d\x02\x1c\x03\x00\x00\x00\x00\x00\x00\x00\x00\x25\x01\x00\x00\x00\x03\x7d\x03\x7d\x03\x00\x00\x00\x00\x22\x01\x00\x00\xec\x02\x00\x00\x00\x00\x05\x01\xec\x02\x00\x00\x05\x01\xec\x02\xf9\x00\xef\x00\xec\x02\xf8\x00\x1a\x01\x0c\x01\x10\x01\x7d\x03\x00\x00\x00\x00\x02\x01\xfb\x00\x7d\x03\x01\x01\xff\x00\xfd\x00\x00\x00\xf7\x00\x00\x01\x00\x00\xec\x02\x00\x00\xd0\x02\xe9\x00\x00\x00\xd0\x02\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\xbc\x00\x00\x00\xe4\x00\xe0\x00\xe1\x00\x00\x00\xbc\x02\x00\x00\x00\x00\x00\x00\x7d\x03\xda\x00\xd9\x00\xd4\x00\xd2\x00\x00\x00\xbc\x02\x00\x00\x00\x00\x00\x00\x7d\x03\x7d\x03\x7d\x03\xc5\x00\x00\x00\xbc\x02\x00\x00\x7d\x03\xbc\x02\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x95\x00\x7d\x03\x00\x00\x00\x00\x00\x00\xbf\x00\xbe\x00\xb8\x00\x00\x00\x00\x00\x7c\x00\xbc\x02\x00\x00\x00\x00\x00\x00"# happyGotoOffsets :: HappyAddr -happyGotoOffsets = HappyA# "\x06\x00\xf5\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x7e\x00\x16\x00\x32\x00\x31\x04\x00\x00\x00\x00\xe0\x02\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x01\x5e\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x55\x00\x50\x00\x87\x00\x2b\x00\x14\x00\x4a\x00\x00\x00\x2d\x00\x00\x00\x00\x00\xa3\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x2d\x04\x29\x04\x1c\x04\x01\x04\x18\x04\x13\x04\xeb\x03\xe4\x03\xd9\x03\xd2\x03\xbc\x03\xaa\x03\x64\x00\xa3\x03\x7b\x02\x94\x03\x7b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x00\x00\x00\x00\x01\x00\x3e\x02\x00\x00\x56\x00\x29\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x01\x01\xc9\x00\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x01\xb4\x01\x7d\x04\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x29\x00\xaf\x01\x00\x00\x05\x00\x87\x01\x00\x00\x45\x00\x72\x01\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x04\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x01\x00\x00\x00\x00\x35\x01\x00\x00\x00\x00\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00\x59\x04\xf1\x01\x77\x01\xd0\x00\xfd\xff\xbb\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x00\x00\x00\x08\x00\x3a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x93\x00\x00\x00\x00\x00\x00\x00"# +happyGotoOffsets = HappyA# "\x65\x00\x20\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x04\x00\x00\x00\x00\x00\x00\x5e\x00\x1b\x00\x17\x00\x4e\x04\x00\x00\x00\x00\x07\x02\x00\x00\xee\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\xa8\x00\x00\x00\x94\x00\x00\x00\x00\x00\x8f\x00\x52\x00\x9d\x00\xac\x02\x19\x00\x4d\x00\x00\x00\x4a\x00\x00\x00\x00\x00\xd5\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x4a\x04\x46\x04\x42\x04\x39\x04\x3e\x04\x91\x03\x10\x04\x09\x04\x02\x04\xfb\x03\xf4\x03\xcb\x03\xc4\x03\xbb\x03\xb1\x03\x81\x03\xbc\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x01\x00\x00\x00\x00\x01\x00\x80\x02\x00\x00\x35\x00\x8a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x0a\x00\xc8\x04\x71\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x02\xb5\x04\x9b\x04\x00\x00\x00\x00\x00\x00\x00\x00\x58\x01\x00\x00\x00\x00\x46\x00\x3f\x01\x00\x00\x08\x00\x26\x01\x00\x00\x13\x00\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x50\x02\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x83\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x7b\x04\xb8\x04\xb1\x04\x00\x00\xf7\xff\xa9\x00\x00\x00\x0b\x00\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x50\x00\xa1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x77\x00\x00\x00\x00\x00\x00\x00"# happyDefActions :: HappyAddr -happyDefActions = HappyA# "\xf7\xff\x00\x00\x00\x00\xfd\xff\x9a\xff\x98\xff\x97\xff\x96\xff\x00\x00\x8b\xff\xbd\xff\xb8\xff\xb6\xff\xb4\xff\xad\xff\xab\xff\xa8\xff\xa4\xff\xa2\xff\xa0\xff\x9e\xff\xcd\xff\x00\x00\x8a\xff\x00\x00\x00\x00\x95\xff\x99\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xfb\xff\xfa\xff\x00\x00\xf6\xff\xf0\xff\x00\x00\xf8\xff\xd7\xff\xef\xff\xf9\xff\x00\x00\x00\x00\xf7\xff\x92\xff\x8e\xff\xcb\xff\x00\x00\xc2\xff\x00\x00\xa3\xff\x00\x00\xbc\xff\x00\x00\xbb\xff\x89\xff\x00\x00\x9a\xff\x00\x00\x00\x00\x00\x00\xa1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\xff\xba\xff\xbe\xff\xb7\xff\xb5\xff\xae\xff\xaf\xff\xb0\xff\xb1\xff\xb2\xff\xb3\xff\xa9\xff\xaa\xff\xac\xff\xa5\xff\xa6\xff\xa7\xff\x9f\xff\x00\x00\x94\xff\x9b\xff\x8a\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\xff\x00\x00\x00\x00\x8d\xff\x00\x00\x00\x00\x91\xff\x00\x00\xf5\xff\x00\x00\x00\x00\xf0\xff\x00\x00\x00\x00\xf3\xff\xde\xff\xe0\xff\xdf\xff\xd6\xff\x00\x00\x00\x00\xda\xff\xdd\xff\xe1\xff\x00\x00\xee\xff\x00\x00\xf1\xff\x9d\xff\x92\xff\x00\x00\x9c\xff\x8e\xff\x00\x00\x00\x00\xcb\xff\x00\x00\x00\x00\xc3\xff\x00\x00\x00\x00\xc7\xff\xc0\xff\x88\xff\x00\x00\x00\x00\xde\xff\x00\x00\xe8\xff\xe6\xff\xe4\xff\xc6\xff\x00\x00\x00\x00\xc1\xff\xce\xff\x00\x00\x00\x00\xc9\xff\x00\x00\x8f\xff\x8c\xff\x93\xff\x90\xff\x00\x00\xd4\xff\xdb\xff\xd9\xff\x00\x00\x00\x00\xf2\xff\xdc\xff\xe2\xff\xda\xff\x00\x00\xd3\xff\x00\x00\x00\x00\xd1\xff\x00\x00\xcf\xff\xc4\xff\xd0\xff\xc7\xff\x00\x00\x00\x00\x00\x00\xd7\xff\x00\x00\xbf\xff\xe5\xff\xc8\xff\xe9\xff\xe7\xff\xc5\xff\xcc\xff\xec\xff\xe3\xff\xd4\xff\x00\x00\xd8\xff\xd5\xff\xd2\xff\x00\x00\xeb\xff\x00\x00\xf4\xff\xec\xff\x00\x00\xed\xff\xea\xff"# +happyDefActions = HappyA# "\xf7\xff\x00\x00\x00\x00\xfd\xff\x98\xff\x96\xff\x95\xff\x94\xff\x00\x00\xcd\xff\x89\xff\xb6\xff\xb4\xff\xb2\xff\xab\xff\xa9\xff\xa6\xff\xa2\xff\xa0\xff\x9e\xff\x9c\xff\xc5\xff\x00\x00\x88\xff\x00\x00\x00\x00\x93\xff\x97\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xfb\xff\xfa\xff\x00\x00\xf6\xff\xf0\xff\x00\x00\xf8\xff\xd5\xff\xef\xff\xf9\xff\x00\x00\x00\x00\xf7\xff\x90\xff\x8c\xff\xc3\xff\x00\x00\xba\xff\x00\x00\xa1\xff\x00\x00\xcc\xff\x00\x00\xcb\xff\x87\xff\x00\x00\x98\xff\x00\x00\x00\x00\x00\x00\x9f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xb7\xff\xb8\xff\xb5\xff\xb3\xff\xac\xff\xad\xff\xae\xff\xaf\xff\xb0\xff\xb1\xff\xa7\xff\xa8\xff\xaa\xff\xa3\xff\xa4\xff\xa5\xff\x9d\xff\x00\x00\x92\xff\x99\xff\x88\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\xff\x00\x00\x00\x00\x8b\xff\x00\x00\x00\x00\x8f\xff\x00\x00\xf5\xff\x00\x00\x00\x00\xf0\xff\xe8\xff\x00\x00\xf3\xff\xdc\xff\xde\xff\xdd\xff\x00\x00\xd4\xff\x00\x00\x00\x00\xd8\xff\xdb\xff\xdf\xff\x00\x00\xee\xff\x00\x00\xf1\xff\x9b\xff\x90\xff\x00\x00\x9a\xff\x8c\xff\x00\x00\x00\x00\xc3\xff\x00\x00\x00\x00\xbb\xff\x00\x00\x00\x00\xbf\xff\xca\xff\x86\xff\x00\x00\x00\x00\xdc\xff\xe8\xff\xe6\xff\xe4\xff\xe2\xff\xbe\xff\x00\x00\xb9\xff\x00\x00\xc6\xff\x00\x00\x00\x00\xc1\xff\x00\x00\x8d\xff\x8a\xff\x91\xff\x8e\xff\x00\x00\xd2\xff\xd9\xff\xd7\xff\x00\x00\x00\x00\xe9\xff\x00\x00\xf2\xff\xda\xff\xe0\xff\xd8\xff\x00\x00\xd1\xff\x00\x00\x00\x00\xc9\xff\x00\x00\xc7\xff\xbc\xff\xc8\xff\xbf\xff\x00\x00\x00\x00\x00\x00\xd5\xff\x00\x00\xcf\xff\xe3\xff\x00\x00\xe7\xff\xe5\xff\xbd\xff\xc4\xff\xec\xff\xe1\xff\xd2\xff\x00\x00\xd6\xff\xd3\xff\xd0\xff\x00\x00\xeb\xff\x00\x00\xc0\xff\xf4\xff\xec\xff\x00\x00\xed\xff\xea\xff"# happyCheck :: HappyAddr -happyCheck = HappyA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x23\x00\x24\x00\x00\x00\x0d\x00\x04\x00\x05\x00\x06\x00\x00\x00\x11\x00\x00\x00\x01\x00\x02\x00\x00\x00\x30\x00\x00\x00\x14\x00\x00\x00\x01\x00\x02\x00\x03\x00\x12\x00\x13\x00\x1b\x00\x0e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x14\x00\x00\x00\x30\x00\x2c\x00\x2d\x00\x2a\x00\x2b\x00\x1b\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x2a\x00\x2b\x00\x02\x00\x05\x00\x2c\x00\x2d\x00\x08\x00\x00\x00\x0a\x00\x1a\x00\x0e\x00\x0d\x00\x00\x00\x11\x00\x12\x00\x0f\x00\x1c\x00\x07\x00\x00\x00\x28\x00\x29\x00\x28\x00\x29\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x15\x00\x16\x00\x11\x00\x21\x00\x00\x00\x15\x00\x16\x00\x30\x00\x1a\x00\x1b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2c\x00\x04\x00\x14\x00\x01\x00\x30\x00\x31\x00\x32\x00\x19\x00\x02\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2c\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x05\x00\x06\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x14\x00\x00\x00\x01\x00\x02\x00\x03\x00\x09\x00\x0a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x30\x00\x14\x00\x03\x00\x01\x00\x2c\x00\x04\x00\x09\x00\x0b\x00\x1b\x00\x05\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2c\x00\x0c\x00\x30\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x00\x00\x01\x00\x02\x00\x2f\x00\x05\x00\x04\x00\x14\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0e\x00\x01\x00\x1b\x00\x0e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x07\x00\x14\x00\x06\x00\x0e\x00\x2c\x00\x26\x00\x27\x00\x09\x00\x1b\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2c\x00\x00\x00\x12\x00\x13\x00\x0e\x00\x00\x00\x0f\x00\x00\x00\x04\x00\x01\x00\x09\x00\x0a\x00\x07\x00\x08\x00\x07\x00\x08\x00\x14\x00\x00\x00\x01\x00\x02\x00\x03\x00\x26\x00\x30\x00\x1b\x00\x30\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x29\x00\x14\x00\x03\x00\x02\x00\x2c\x00\x30\x00\x04\x00\x01\x00\x1b\x00\x02\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x04\x00\x01\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x14\x00\x00\x00\x01\x00\x02\x00\x03\x00\x05\x00\x04\x00\x1b\x00\x01\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x02\x00\x14\x00\x03\x00\x1f\x00\x2c\x00\x30\x00\x02\x00\x0b\x00\x1b\x00\x09\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x0c\x00\x0e\x00\x2b\x00\x2e\x00\x30\x00\x28\x00\x01\x00\x01\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x14\x00\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x13\x00\x1b\x00\x30\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x30\x00\x14\x00\x35\x00\x03\x00\x2c\x00\x03\x00\x03\x00\x03\x00\x1b\x00\x1f\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x06\x00\x35\x00\x28\x00\x30\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x14\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x14\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2c\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x14\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x14\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2c\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\x14\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x14\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2c\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\x14\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x14\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2c\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\x14\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x14\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2c\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\x14\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x14\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x08\x00\xff\xff\x0a\x00\xff\xff\x2c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x08\x00\xff\xff\x0a\x00\xff\xff\x20\x00\x21\x00\x22\x00\xff\xff\x10\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\x2c\x00\x2d\x00\xff\xff\x1b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x20\x00\x21\x00\x22\x00\xff\xff\x08\x00\x25\x00\x0a\x00\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\x2c\x00\x2d\x00\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\x1b\x00\x08\x00\xff\xff\x0a\x00\xff\xff\x20\x00\x21\x00\xff\xff\xff\xff\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x2c\x00\x2d\x00\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x20\x00\x21\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\xff\xff\x2c\x00\x2d\x00\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x2c\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\x26\x00\x27\x00\x24\x00\x25\x00\x26\x00\x27\x00\x24\x00\x25\x00\x26\x00\x27\x00\x00\x00\x01\x00\x02\x00\xff\xff\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x01\x00\x02\x00\xff\xff\x17\x00\x18\x00\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\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\xff\xff\xff\xff"# +happyCheck = HappyA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x09\x00\x0a\x00\x07\x00\x08\x00\x00\x00\x11\x00\x00\x00\x15\x00\x00\x00\x17\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x31\x00\x18\x00\x19\x00\x16\x00\x2d\x00\x2e\x00\x15\x00\x0b\x00\x17\x00\x2b\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x15\x00\x16\x00\x17\x00\x00\x00\x07\x00\x08\x00\x00\x00\x1c\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2d\x00\x13\x00\x14\x00\x18\x00\x19\x00\x1d\x00\x00\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x02\x00\x29\x00\x2a\x00\x09\x00\x0a\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0f\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x24\x00\x25\x00\x13\x00\x14\x00\x2d\x00\x15\x00\x08\x00\x17\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x1b\x00\x1c\x00\x05\x00\x06\x00\x2d\x00\x15\x00\x12\x00\x17\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x1d\x00\x1e\x00\x1f\x00\x04\x00\x2d\x00\x15\x00\x01\x00\x17\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x12\x00\x13\x00\x0f\x00\x03\x00\x2d\x00\x15\x00\x04\x00\x17\x00\x01\x00\x00\x00\x01\x00\x02\x00\x03\x00\x05\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x0a\x00\x0c\x00\x31\x00\x05\x00\x2d\x00\x15\x00\x0d\x00\x17\x00\x30\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x04\x00\x08\x00\x07\x00\x06\x00\x2d\x00\x15\x00\x0f\x00\x17\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x11\x00\x04\x00\x27\x00\x31\x00\x2d\x00\x15\x00\x2a\x00\x17\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x05\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x31\x00\x02\x00\x31\x00\x02\x00\x2d\x00\x15\x00\x04\x00\x17\x00\x01\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x04\x00\x01\x00\x05\x00\x04\x00\x2d\x00\x15\x00\x02\x00\x17\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x20\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x02\x00\x0a\x00\x31\x00\x0d\x00\x2d\x00\x15\x00\x0c\x00\x17\x00\x0f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2c\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x2f\x00\x31\x00\x29\x00\x01\x00\x2d\x00\x15\x00\x31\x00\x17\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x01\x00\x36\x00\x20\x00\x03\x00\x2d\x00\x15\x00\x03\x00\x17\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x07\x00\x14\x00\x0f\x00\x36\x00\x2d\x00\x15\x00\x31\x00\x17\x00\x29\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x06\x00\xff\xff\x2d\x00\x09\x00\x17\x00\x0b\x00\xff\xff\xff\xff\x0e\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x09\x00\xff\xff\x0b\x00\x00\x00\x2d\x00\x0e\x00\x22\x00\x10\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x1c\x00\xff\xff\x31\x00\x32\x00\x33\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x29\x00\x2a\x00\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\x1c\x00\x09\x00\x26\x00\x0b\x00\x28\x00\x21\x00\x22\x00\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x09\x00\xff\xff\x0b\x00\x21\x00\x22\x00\x0e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\x22\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x2d\x00\xff\xff\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x00\x00\x01\x00\x02\x00\x03\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\xff\xff\x00\x00\x01\x00\x02\x00\xff\xff\x00\x00\x01\x00\x02\x00\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x1a\x00\x1b\x00\xff\xff\xff\xff\x1a\x00\x1b\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x02\x00\xff\xff\x00\x00\x01\x00\x02\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\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\xff\xff\xff\xff\xff\xff\xff\xff"# happyTable :: HappyAddr -happyTable = HappyA# "\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x70\x00\x2e\x00\x2f\x00\xb8\x00\x3b\x00\x25\x00\x26\x00\x27\x00\x89\x00\xc8\x00\x7d\x00\x7e\x00\x7f\x00\x64\x00\x04\x00\x70\x00\x3b\x00\x04\x00\x05\x00\x06\x00\x07\x00\xb9\x00\xd4\x00\x09\x00\x80\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x73\x00\x3b\x00\x73\x00\x04\x00\x15\x00\x99\x00\x71\x00\xab\x00\x09\x00\x38\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x71\x00\x72\x00\xbc\xff\x82\x00\x15\x00\x3c\x00\x83\x00\x6d\x00\x84\x00\x6b\x00\x51\x00\x85\x00\x6d\x00\x52\x00\x53\x00\xbc\xff\x39\x00\x46\x00\x77\x00\x74\x00\xad\x00\x74\x00\x75\x00\x78\x00\x3d\x00\x05\x00\x06\x00\x07\x00\x6e\x00\xa8\x00\x7a\x00\x86\x00\x29\x00\x6e\x00\x6f\x00\x04\x00\x47\x00\x48\x00\x04\x00\x05\x00\x06\x00\x07\x00\x87\x00\xd9\x00\x94\x00\xda\x00\x04\x00\x23\x00\x24\x00\x95\x00\xdb\x00\x09\x00\x96\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x3d\x00\x05\x00\x06\x00\x07\x00\x15\x00\x57\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x26\x00\x76\x00\xd5\x00\x43\x00\x44\x00\x45\x00\x3e\x00\x04\x00\x05\x00\x06\x00\x07\x00\xd6\x00\xdc\x00\x09\x00\x3f\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\xdb\x00\xcf\x00\xd1\x00\x15\x00\xd0\x00\xb6\x00\xb7\x00\x09\x00\xd2\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x15\x00\xb8\x00\x04\x00\x04\x00\x05\x00\x06\x00\x07\x00\x7d\x00\x7e\x00\x7f\x00\x7d\x00\x7e\x00\x7f\x00\xbc\x00\xbe\x00\xc1\x00\xc7\x00\x04\x00\x05\x00\x06\x00\x07\x00\xc5\x00\xc2\x00\x09\x00\x80\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xc3\x00\xc9\x00\xc4\x00\xc5\x00\x15\x00\x41\x00\x14\x00\x9c\x00\x09\x00\xb8\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x15\x00\xd5\x00\xb9\x00\xba\x00\xc7\x00\x2a\x00\xa4\x00\x2a\x00\xa6\x00\xa5\x00\xd6\x00\xd7\x00\x2b\x00\x87\x00\x2b\x00\x2c\x00\xcd\x00\x04\x00\x05\x00\x06\x00\x07\x00\xa7\x00\x04\x00\x09\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xaa\x00\xbc\x00\xb0\x00\x89\x00\x15\x00\x04\x00\x8b\x00\x8c\x00\x09\x00\x8d\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x15\x00\x9c\x00\x7e\x00\x7f\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x8e\x00\x8f\x00\xd3\x00\x9e\x00\x9f\x00\xa0\x00\xbe\x00\x04\x00\x05\x00\x06\x00\x07\x00\x90\x00\x91\x00\x09\x00\x92\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x93\x00\xbf\x00\x98\x00\x41\x00\x15\x00\x04\x00\x66\x00\x68\x00\x09\x00\x67\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x15\x00\x9c\x00\x7e\x00\x7f\x00\x69\x00\x6a\x00\x6b\x00\x6d\x00\x04\x00\x29\x00\x7a\x00\x30\x00\xca\x00\x9e\x00\x9f\x00\xa0\x00\xa7\x00\x04\x00\x05\x00\x06\x00\x07\x00\x7c\x00\x4f\x00\x09\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\xaa\x00\xff\xff\x31\x00\x15\x00\x32\x00\x33\x00\x35\x00\x09\x00\x41\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x15\x00\x9c\x00\x7e\x00\x7f\x00\x50\x00\xff\xff\x29\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x9e\x00\x9f\x00\xa0\x00\xac\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\xae\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x15\x00\x9c\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\x00\x9f\x00\xa0\x00\xb4\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x98\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x55\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x33\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x08\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x17\x00\x00\x00\x18\x00\x00\x00\x15\x00\x3b\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x17\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x19\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x38\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x38\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x83\x00\x00\x00\x84\x00\x00\x00\x00\x00\x85\x00\x00\x00\x00\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x87\x00\x00\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x53\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x56\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x58\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x59\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5b\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x5c\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5d\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x60\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x5e\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5f\x00\x11\x00\x12\x00\x13\x00\x14\x00\x61\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x00\x12\x00\x13\x00\x14\x00\x63\x00\x12\x00\x13\x00\x14\x00\x36\x00\x12\x00\x13\x00\x14\x00\x9c\x00\x7e\x00\x7f\x00\x00\x00\x9c\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\x9c\x00\x7e\x00\x7f\x00\x00\x00\xa1\x00\xcc\x00\x00\x00\x00\x00\xa1\x00\xa2\x00\x00\x00\xb0\x00\x9e\x00\x9f\x00\xa0\x00\xb1\x00\xd2\x00\x9c\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x9e\x00\x9f\x00\xa0\x00\xb1\x00\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# +happyTable = HappyA# "\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\xcc\xff\xd8\x00\x3b\x00\x70\x00\xcb\x00\x2a\x00\x7d\x00\x7e\x00\x7f\x00\x8a\x00\xd9\x00\xe0\x00\x2b\x00\x88\x00\x6d\x00\xcc\xff\x64\x00\x3b\x00\x38\x00\x09\x00\x70\x00\x81\x00\x04\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x6e\x00\xa9\x00\x39\x00\x15\x00\x9a\x00\x3b\x00\xc7\x00\x09\x00\x71\x00\xac\x00\x3d\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x71\x00\x72\x00\x73\x00\x2a\x00\x15\x00\x3c\x00\x95\x00\x96\x00\x09\x00\x6d\x00\x2b\x00\x2c\x00\xbb\x00\x97\x00\x77\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x3d\x00\x05\x00\x06\x00\x07\x00\x15\x00\xbc\x00\xd7\x00\x6e\x00\x6f\x00\x6b\x00\xd8\x00\x25\x00\x26\x00\x27\x00\x7d\x00\x7e\x00\x7f\x00\x74\x00\xae\x00\xd9\x00\xda\x00\x3e\x00\x3f\x00\x09\x00\xbb\x00\x04\x00\x05\x00\x06\x00\x07\x00\xc8\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x2e\x00\x2f\x00\xbc\x00\xbd\x00\x15\x00\xdf\x00\x46\x00\x09\x00\x78\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x47\x00\x48\x00\x26\x00\x76\x00\x15\x00\xdb\x00\x7a\x00\x09\x00\x29\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x43\x00\x44\x00\x45\x00\xdd\x00\x15\x00\xca\x00\xde\x00\x09\x00\xdf\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x51\x00\x52\x00\xcd\x00\xd2\x00\x15\x00\xd0\x00\xd3\x00\x09\x00\xd4\x00\x04\x00\x05\x00\x06\x00\x07\x00\xd5\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xb9\x00\xba\x00\x04\x00\xc1\x00\x15\x00\xb7\x00\xbb\x00\x09\x00\xbf\x00\x04\x00\x05\x00\x06\x00\x07\x00\xc5\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xc4\x00\xc6\x00\xc7\x00\x83\x00\x15\x00\xc2\x00\xca\x00\x09\x00\x9d\x00\x04\x00\x05\x00\x06\x00\x07\x00\xa5\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xa6\x00\xa7\x00\xa8\x00\x04\x00\x15\x00\xa8\x00\xab\x00\x09\x00\xb1\x00\x04\x00\x05\x00\x06\x00\x07\x00\xb7\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x8a\x00\x04\x00\x8e\x00\x15\x00\xab\x00\x8c\x00\x09\x00\x8d\x00\x04\x00\x05\x00\x06\x00\x07\x00\x90\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x8f\x00\x93\x00\x91\x00\x92\x00\x15\x00\xad\x00\x94\x00\x09\x00\x99\x00\x04\x00\x05\x00\x06\x00\x07\x00\x41\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x66\x00\x67\x00\x04\x00\x69\x00\x15\x00\xaf\x00\x68\x00\x09\x00\x6a\x00\x04\x00\x05\x00\x06\x00\x07\x00\x6b\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x6d\x00\x04\x00\x29\x00\x7a\x00\x15\x00\x7c\x00\x04\x00\x09\x00\x7c\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x30\x00\xff\xff\x41\x00\x31\x00\x15\x00\x94\x00\x32\x00\x09\x00\x33\x00\x04\x00\x05\x00\x06\x00\x07\x00\x35\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x50\x00\x4f\x00\x53\x00\xff\xff\x15\x00\x9b\x00\x04\x00\x09\x00\x29\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x53\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x3e\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x33\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x35\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x08\x00\x00\x00\x09\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xbf\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xc1\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xb5\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x83\x00\x00\x00\x15\x00\x84\x00\x99\x00\x85\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x17\x00\x00\x00\x18\x00\x73\x00\x15\x00\x3b\x00\x87\x00\x19\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x1a\x00\x00\x00\x04\x00\x23\x00\x24\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x17\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x74\x00\x75\x00\x00\x00\x1a\x00\x38\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x17\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x38\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x17\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x38\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x38\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x1a\x00\x17\x00\x1e\x00\x18\x00\x1f\x00\x1b\x00\x1c\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x38\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x84\x00\x00\x00\x85\x00\x1b\x00\x1c\x00\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x87\x00\x54\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x88\x00\x00\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x04\x00\x05\x00\x06\x00\x07\x00\x5e\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x55\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x56\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x57\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x58\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x59\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5a\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5b\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5c\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5d\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5f\x00\x11\x00\x12\x00\x13\x00\x14\x00\x61\x00\x12\x00\x13\x00\x14\x00\x62\x00\x12\x00\x13\x00\x14\x00\x63\x00\x12\x00\x13\x00\x14\x00\x36\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x41\x00\x14\x00\x9d\x00\x7e\x00\x7f\x00\x00\x00\x9d\x00\x7e\x00\x7f\x00\x00\x00\x9d\x00\x7e\x00\x7f\x00\x00\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xb1\x00\x9f\x00\xa0\x00\xa1\x00\xb2\x00\xd5\x00\xa2\x00\xcf\x00\x00\x00\x00\x00\xa2\x00\xa3\x00\x9d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x9f\x00\xa0\x00\xa1\x00\xb2\x00\xb3\x00\xd6\x00\x9f\x00\xa0\x00\xa1\x00\x9d\x00\x7e\x00\x7f\x00\x00\x00\x9d\x00\x7e\x00\x7f\x00\x9d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\xcd\x00\x9f\x00\xa0\x00\xa1\x00\xb4\x00\x9f\x00\xa0\x00\xa1\x00\xce\x00\xa0\x00\xa1\x00\x7d\x00\x7e\x00\x7f\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\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# -happyReduceArr = array (2, 119) [ +happyReduceArr = array (2, 121) [ (2 , happyReduce_2), (3 , happyReduce_3), (4 , happyReduce_4), @@ -429,11 +435,13 @@ happyReduceArr = array (2, 119) [ (116 , happyReduce_116), (117 , happyReduce_117), (118 , happyReduce_118), - (119 , happyReduce_119) + (119 , happyReduce_119), + (120 , happyReduce_120), + (121 , happyReduce_121) ] -happy_n_terms = 54 :: Int -happy_n_nonterms = 46 :: Int +happy_n_terms = 55 :: Int +happy_n_nonterms = 47 :: Int happyReduce_2 = happySpecReduce_1 0# happyReduction_2 happyReduction_2 happy_x_1 @@ -513,7 +521,7 @@ happyReduction_11 (happy_x_8 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOut5 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_4 of { happy_var_4 -> + case happyOut26 happy_x_4 of { happy_var_4 -> case happyOut15 happy_x_7 of { happy_var_7 -> happyIn12 (DataDecl happy_var_2 happy_var_4 happy_var_7 @@ -524,23 +532,25 @@ happyReduction_12 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> - case happyOut25 happy_x_3 of { happy_var_3 -> + case happyOut26 happy_x_3 of { happy_var_3 -> happyIn12 (TypeDecl happy_var_1 happy_var_3 )}} -happyReduce_13 = happyReduce 4# 7# happyReduction_13 -happyReduction_13 (happy_x_4 `HappyStk` +happyReduce_13 = happyReduce 5# 7# happyReduction_13 +happyReduction_13 (happy_x_5 `HappyStk` + 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 happyOut22 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_4 of { happy_var_4 -> + case happyOut23 happy_x_2 of { happy_var_2 -> + case happyOut16 happy_x_3 of { happy_var_3 -> + case happyOut26 happy_x_5 of { happy_var_5 -> happyIn12 - (ValueDecl happy_var_1 (reverse happy_var_2) happy_var_4 - ) `HappyStk` happyRest}}} + (ValueDecl happy_var_1 (reverse happy_var_2) happy_var_3 happy_var_5 + ) `HappyStk` happyRest}}}} happyReduce_14 = happySpecReduce_3 7# happyReduction_14 happyReduction_14 happy_x_3 @@ -579,7 +589,7 @@ happyReduction_18 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> - case happyOut25 happy_x_3 of { happy_var_3 -> + case happyOut26 happy_x_3 of { happy_var_3 -> happyIn14 (ConsDecl happy_var_1 happy_var_3 )}} @@ -606,23 +616,19 @@ happyReduction_21 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_22 = happySpecReduce_3 11# happyReduction_22 -happyReduction_22 happy_x_3 - happy_x_2 +happyReduce_22 = happySpecReduce_2 11# happyReduction_22 +happyReduction_22 happy_x_2 happy_x_1 - = case happyOut17 happy_x_1 of { happy_var_1 -> - case happyOut16 happy_x_3 of { happy_var_3 -> + = case happyOut28 happy_x_2 of { happy_var_2 -> happyIn16 - (POr happy_var_1 happy_var_3 - )}} - -happyReduce_23 = happySpecReduce_1 11# happyReduction_23 -happyReduction_23 happy_x_1 - = case happyOut17 happy_x_1 of { happy_var_1 -> - happyIn16 - (happy_var_1 + (GuardExp happy_var_2 )} +happyReduce_23 = happySpecReduce_0 11# happyReduction_23 +happyReduction_23 = happyIn16 + (GuardNo + ) + happyReduce_24 = happySpecReduce_3 12# happyReduction_24 happyReduction_24 happy_x_3 happy_x_2 @@ -630,7 +636,7 @@ happyReduction_24 happy_x_3 = case happyOut18 happy_x_1 of { happy_var_1 -> case happyOut17 happy_x_3 of { happy_var_3 -> happyIn17 - (PListCons happy_var_1 happy_var_3 + (POr happy_var_1 happy_var_3 )}} happyReduce_25 = happySpecReduce_1 12# happyReduction_25 @@ -644,12 +650,11 @@ happyReduce_26 = happySpecReduce_3 13# happyReduction_26 happyReduction_26 happy_x_3 happy_x_2 happy_x_1 - = case happyOut5 happy_x_1 of { happy_var_1 -> - case happyOut19 happy_x_2 of { happy_var_2 -> - case happyOut22 happy_x_3 of { happy_var_3 -> + = case happyOut19 happy_x_1 of { happy_var_1 -> + case happyOut18 happy_x_3 of { happy_var_3 -> happyIn18 - (PConsTop happy_var_1 happy_var_2 (reverse happy_var_3) - )}}} + (PListCons happy_var_1 happy_var_3 + )}} happyReduce_27 = happySpecReduce_1 13# happyReduction_27 happyReduction_27 happy_x_1 @@ -658,399 +663,403 @@ happyReduction_27 happy_x_1 (happy_var_1 )} -happyReduce_28 = happyReduce 4# 14# happyReduction_28 -happyReduction_28 (happy_x_4 `HappyStk` +happyReduce_28 = happySpecReduce_3 14# happyReduction_28 +happyReduction_28 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut5 happy_x_1 of { happy_var_1 -> + case happyOut20 happy_x_2 of { happy_var_2 -> + case happyOut23 happy_x_3 of { happy_var_3 -> + happyIn19 + (PConsTop happy_var_1 happy_var_2 (reverse happy_var_3) + )}}} + +happyReduce_29 = happySpecReduce_1 14# happyReduction_29 +happyReduction_29 happy_x_1 + = case happyOut20 happy_x_1 of { happy_var_1 -> + happyIn19 + (happy_var_1 + )} + +happyReduce_30 = happyReduce 4# 15# happyReduction_30 +happyReduction_30 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut24 happy_x_3 of { happy_var_3 -> - happyIn19 + = case happyOut25 happy_x_3 of { happy_var_3 -> + happyIn20 (PRec happy_var_3 ) `HappyStk` happyRest} -happyReduce_29 = happySpecReduce_3 14# happyReduction_29 -happyReduction_29 happy_x_3 +happyReduce_31 = happySpecReduce_3 15# happyReduction_31 +happyReduction_31 happy_x_3 happy_x_2 happy_x_1 - = case happyOut21 happy_x_2 of { happy_var_2 -> - happyIn19 + = case happyOut22 happy_x_2 of { happy_var_2 -> + happyIn20 (PList happy_var_2 )} -happyReduce_30 = happySpecReduce_1 14# happyReduction_30 -happyReduction_30 happy_x_1 - = happyIn19 +happyReduce_32 = happySpecReduce_1 15# happyReduction_32 +happyReduction_32 happy_x_1 + = happyIn20 (PType ) -happyReduce_31 = happySpecReduce_1 14# happyReduction_31 -happyReduction_31 happy_x_1 +happyReduce_33 = happySpecReduce_1 15# happyReduction_33 +happyReduction_33 happy_x_1 = case happyOut6 happy_x_1 of { happy_var_1 -> - happyIn19 + happyIn20 (PStr happy_var_1 )} -happyReduce_32 = happySpecReduce_1 14# happyReduction_32 -happyReduction_32 happy_x_1 +happyReduce_34 = happySpecReduce_1 15# happyReduction_34 +happyReduction_34 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> - happyIn19 + happyIn20 (PInt happy_var_1 )} -happyReduce_33 = happySpecReduce_1 14# happyReduction_33 -happyReduction_33 happy_x_1 +happyReduce_35 = happySpecReduce_1 15# happyReduction_35 +happyReduction_35 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> - happyIn19 + happyIn20 (PVar happy_var_1 )} -happyReduce_34 = happySpecReduce_1 14# happyReduction_34 -happyReduction_34 happy_x_1 - = happyIn19 +happyReduce_36 = happySpecReduce_1 15# happyReduction_36 +happyReduction_36 happy_x_1 + = happyIn20 (PWild ) -happyReduce_35 = happySpecReduce_3 14# happyReduction_35 -happyReduction_35 happy_x_3 +happyReduce_37 = happySpecReduce_3 15# happyReduction_37 +happyReduction_37 happy_x_3 happy_x_2 happy_x_1 - = case happyOut16 happy_x_2 of { happy_var_2 -> - happyIn19 + = case happyOut17 happy_x_2 of { happy_var_2 -> + happyIn20 (happy_var_2 )} -happyReduce_36 = happySpecReduce_1 15# happyReduction_36 -happyReduction_36 happy_x_1 - = case happyOut16 happy_x_1 of { happy_var_1 -> - happyIn20 +happyReduce_38 = happySpecReduce_1 16# happyReduction_38 +happyReduction_38 happy_x_1 + = case happyOut17 happy_x_1 of { happy_var_1 -> + happyIn21 (PListElem happy_var_1 )} -happyReduce_37 = happySpecReduce_0 16# happyReduction_37 -happyReduction_37 = happyIn21 +happyReduce_39 = happySpecReduce_0 17# happyReduction_39 +happyReduction_39 = happyIn22 ([] ) -happyReduce_38 = happySpecReduce_1 16# happyReduction_38 -happyReduction_38 happy_x_1 - = case happyOut20 happy_x_1 of { happy_var_1 -> - happyIn21 +happyReduce_40 = happySpecReduce_1 17# happyReduction_40 +happyReduction_40 happy_x_1 + = case happyOut21 happy_x_1 of { happy_var_1 -> + happyIn22 ((:[]) happy_var_1 )} -happyReduce_39 = happySpecReduce_3 16# happyReduction_39 -happyReduction_39 happy_x_3 +happyReduce_41 = happySpecReduce_3 17# happyReduction_41 +happyReduction_41 happy_x_3 happy_x_2 happy_x_1 - = case happyOut20 happy_x_1 of { happy_var_1 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - happyIn21 + = case happyOut21 happy_x_1 of { happy_var_1 -> + case happyOut22 happy_x_3 of { happy_var_3 -> + happyIn22 ((:) happy_var_1 happy_var_3 )}} -happyReduce_40 = happySpecReduce_0 17# happyReduction_40 -happyReduction_40 = happyIn22 +happyReduce_42 = happySpecReduce_0 18# happyReduction_42 +happyReduction_42 = happyIn23 ([] ) -happyReduce_41 = happySpecReduce_2 17# happyReduction_41 -happyReduction_41 happy_x_2 +happyReduce_43 = happySpecReduce_2 18# happyReduction_43 +happyReduction_43 happy_x_2 happy_x_1 - = case happyOut22 happy_x_1 of { happy_var_1 -> - case happyOut19 happy_x_2 of { happy_var_2 -> - happyIn22 + = case happyOut23 happy_x_1 of { happy_var_1 -> + case happyOut20 happy_x_2 of { happy_var_2 -> + happyIn23 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_42 = happySpecReduce_3 18# happyReduction_42 -happyReduction_42 happy_x_3 +happyReduce_44 = happySpecReduce_3 19# happyReduction_44 +happyReduction_44 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> - case happyOut16 happy_x_3 of { happy_var_3 -> - happyIn23 + case happyOut17 happy_x_3 of { happy_var_3 -> + happyIn24 (FieldPattern happy_var_1 happy_var_3 )}} -happyReduce_43 = happySpecReduce_0 19# happyReduction_43 -happyReduction_43 = happyIn24 +happyReduce_45 = happySpecReduce_0 20# happyReduction_45 +happyReduction_45 = happyIn25 ([] ) -happyReduce_44 = happySpecReduce_1 19# happyReduction_44 -happyReduction_44 happy_x_1 - = case happyOut23 happy_x_1 of { happy_var_1 -> - happyIn24 +happyReduce_46 = happySpecReduce_1 20# happyReduction_46 +happyReduction_46 happy_x_1 + = case happyOut24 happy_x_1 of { happy_var_1 -> + happyIn25 ((:[]) happy_var_1 )} -happyReduce_45 = happySpecReduce_3 19# happyReduction_45 -happyReduction_45 happy_x_3 +happyReduce_47 = happySpecReduce_3 20# happyReduction_47 +happyReduction_47 happy_x_3 happy_x_2 happy_x_1 - = case happyOut23 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_3 of { happy_var_3 -> - happyIn24 + = case happyOut24 happy_x_1 of { happy_var_1 -> + case happyOut25 happy_x_3 of { happy_var_3 -> + happyIn25 ((:) happy_var_1 happy_var_3 )}} -happyReduce_46 = happyReduce 6# 20# happyReduction_46 -happyReduction_46 (happy_x_6 `HappyStk` +happyReduce_48 = happyReduce 7# 21# happyReduction_48 +happyReduction_48 (happy_x_7 `HappyStk` + happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut27 happy_x_3 of { happy_var_3 -> - case happyOut25 happy_x_6 of { happy_var_6 -> - happyIn25 + = case happyOut27 happy_x_2 of { happy_var_2 -> + case happyOut26 happy_x_4 of { happy_var_4 -> + case happyOut26 happy_x_7 of { happy_var_7 -> + happyIn26 + (EPi happy_var_2 happy_var_4 happy_var_7 + ) `HappyStk` happyRest}}} + +happyReduce_49 = happySpecReduce_3 21# happyReduction_49 +happyReduction_49 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut28 happy_x_1 of { happy_var_1 -> + case happyOut26 happy_x_3 of { happy_var_3 -> + happyIn26 + (EPiNoVar happy_var_1 happy_var_3 + )}} + +happyReduce_50 = happySpecReduce_1 21# happyReduction_50 +happyReduction_50 happy_x_1 + = case happyOut28 happy_x_1 of { happy_var_1 -> + happyIn26 + (happy_var_1 + )} + +happyReduce_51 = happySpecReduce_1 22# happyReduction_51 +happyReduction_51 happy_x_1 + = case happyOut5 happy_x_1 of { happy_var_1 -> + happyIn27 + (VVar happy_var_1 + )} + +happyReduce_52 = happySpecReduce_1 22# happyReduction_52 +happyReduction_52 happy_x_1 + = happyIn27 + (VWild + ) + +happyReduce_53 = happyReduce 4# 23# happyReduction_53 +happyReduction_53 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut27 happy_x_2 of { happy_var_2 -> + case happyOut28 happy_x_4 of { happy_var_4 -> + happyIn28 + (EAbs happy_var_2 happy_var_4 + ) `HappyStk` happyRest}} + +happyReduce_54 = happyReduce 6# 23# happyReduction_54 +happyReduction_54 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut30 happy_x_3 of { happy_var_3 -> + case happyOut28 happy_x_6 of { happy_var_6 -> + happyIn28 (ELet happy_var_3 happy_var_6 ) `HappyStk` happyRest}} -happyReduce_47 = happyReduce 6# 20# happyReduction_47 -happyReduction_47 (happy_x_6 `HappyStk` +happyReduce_55 = happyReduce 6# 23# happyReduction_55 +happyReduction_55 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut25 happy_x_2 of { happy_var_2 -> - case happyOut29 happy_x_5 of { happy_var_5 -> - happyIn25 + = case happyOut26 happy_x_2 of { happy_var_2 -> + case happyOut32 happy_x_5 of { happy_var_5 -> + happyIn28 (ECase happy_var_2 happy_var_5 ) `HappyStk` happyRest}} -happyReduce_48 = happyReduce 6# 20# happyReduction_48 -happyReduction_48 (happy_x_6 `HappyStk` +happyReduce_56 = happyReduce 6# 23# happyReduction_56 +happyReduction_56 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut25 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_4 of { happy_var_4 -> - case happyOut25 happy_x_6 of { happy_var_6 -> - happyIn25 + = case happyOut26 happy_x_2 of { happy_var_2 -> + case happyOut26 happy_x_4 of { happy_var_4 -> + case happyOut28 happy_x_6 of { happy_var_6 -> + happyIn28 (EIf happy_var_2 happy_var_4 happy_var_6 ) `HappyStk` happyRest}}} -happyReduce_49 = happyReduce 5# 20# happyReduction_49 -happyReduction_49 (happy_x_5 `HappyStk` +happyReduce_57 = happyReduce 5# 23# happyReduction_57 +happyReduction_57 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut31 happy_x_3 of { happy_var_3 -> - case happyOut25 happy_x_4 of { happy_var_4 -> - happyIn25 + = case happyOut34 happy_x_3 of { happy_var_3 -> + case happyOut26 happy_x_4 of { happy_var_4 -> + happyIn28 (EDo (reverse happy_var_3) happy_var_4 ) `HappyStk` happyRest}} -happyReduce_50 = happySpecReduce_1 20# happyReduction_50 -happyReduction_50 happy_x_1 - = case happyOut49 happy_x_1 of { happy_var_1 -> - happyIn25 +happyReduce_58 = happySpecReduce_1 23# happyReduction_58 +happyReduction_58 happy_x_1 + = case happyOut50 happy_x_1 of { happy_var_1 -> + happyIn28 (happy_var_1 )} -happyReduce_51 = happyReduce 5# 21# happyReduction_51 -happyReduction_51 (happy_x_5 `HappyStk` +happyReduce_59 = happyReduce 5# 24# happyReduction_59 +happyReduction_59 (happy_x_5 `HappyStk` 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 happyOut25 happy_x_3 of { happy_var_3 -> - case happyOut25 happy_x_5 of { happy_var_5 -> - happyIn26 + case happyOut26 happy_x_3 of { happy_var_3 -> + case happyOut26 happy_x_5 of { happy_var_5 -> + happyIn29 (LetDef happy_var_1 happy_var_3 happy_var_5 ) `HappyStk` happyRest}}} -happyReduce_52 = happySpecReduce_0 22# happyReduction_52 -happyReduction_52 = happyIn27 +happyReduce_60 = happySpecReduce_0 25# happyReduction_60 +happyReduction_60 = happyIn30 ([] ) -happyReduce_53 = happySpecReduce_1 22# happyReduction_53 -happyReduction_53 happy_x_1 - = case happyOut26 happy_x_1 of { happy_var_1 -> - happyIn27 +happyReduce_61 = happySpecReduce_1 25# happyReduction_61 +happyReduction_61 happy_x_1 + = case happyOut29 happy_x_1 of { happy_var_1 -> + happyIn30 ((:[]) happy_var_1 )} -happyReduce_54 = happySpecReduce_3 22# happyReduction_54 -happyReduction_54 happy_x_3 +happyReduce_62 = happySpecReduce_3 25# happyReduction_62 +happyReduction_62 happy_x_3 happy_x_2 happy_x_1 - = case happyOut26 happy_x_1 of { happy_var_1 -> - case happyOut27 happy_x_3 of { happy_var_3 -> - happyIn27 + = case happyOut29 happy_x_1 of { happy_var_1 -> + case happyOut30 happy_x_3 of { happy_var_3 -> + happyIn30 ((:) happy_var_1 happy_var_3 )}} -happyReduce_55 = happySpecReduce_3 23# happyReduction_55 -happyReduction_55 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut16 happy_x_1 of { happy_var_1 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - happyIn28 - (Case happy_var_1 happy_var_3 - )}} +happyReduce_63 = happyReduce 4# 26# happyReduction_63 +happyReduction_63 (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 happyOut16 happy_x_2 of { happy_var_2 -> + case happyOut26 happy_x_4 of { happy_var_4 -> + happyIn31 + (Case happy_var_1 happy_var_2 happy_var_4 + ) `HappyStk` happyRest}}} -happyReduce_56 = happySpecReduce_0 24# happyReduction_56 -happyReduction_56 = happyIn29 +happyReduce_64 = happySpecReduce_0 27# happyReduction_64 +happyReduction_64 = happyIn32 ([] ) -happyReduce_57 = happySpecReduce_1 24# happyReduction_57 -happyReduction_57 happy_x_1 - = case happyOut28 happy_x_1 of { happy_var_1 -> - happyIn29 +happyReduce_65 = happySpecReduce_1 27# happyReduction_65 +happyReduction_65 happy_x_1 + = case happyOut31 happy_x_1 of { happy_var_1 -> + happyIn32 ((:[]) happy_var_1 )} -happyReduce_58 = happySpecReduce_3 24# happyReduction_58 -happyReduction_58 happy_x_3 +happyReduce_66 = happySpecReduce_3 27# happyReduction_66 +happyReduction_66 happy_x_3 happy_x_2 happy_x_1 - = case happyOut28 happy_x_1 of { happy_var_1 -> - case happyOut29 happy_x_3 of { happy_var_3 -> - happyIn29 + = case happyOut31 happy_x_1 of { happy_var_1 -> + case happyOut32 happy_x_3 of { happy_var_3 -> + happyIn32 ((:) happy_var_1 happy_var_3 )}} -happyReduce_59 = happySpecReduce_3 25# happyReduction_59 -happyReduction_59 happy_x_3 +happyReduce_67 = happySpecReduce_3 28# happyReduction_67 +happyReduction_67 happy_x_3 happy_x_2 happy_x_1 - = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - happyIn30 + = case happyOut27 happy_x_1 of { happy_var_1 -> + case happyOut26 happy_x_3 of { happy_var_3 -> + happyIn33 (BindVar happy_var_1 happy_var_3 )}} -happyReduce_60 = happySpecReduce_1 25# happyReduction_60 -happyReduction_60 happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - happyIn30 +happyReduce_68 = happySpecReduce_1 28# happyReduction_68 +happyReduction_68 happy_x_1 + = case happyOut26 happy_x_1 of { happy_var_1 -> + happyIn33 (BindNoVar happy_var_1 )} -happyReduce_61 = happySpecReduce_0 26# happyReduction_61 -happyReduction_61 = happyIn31 +happyReduce_69 = happySpecReduce_0 29# happyReduction_69 +happyReduction_69 = happyIn34 ([] ) -happyReduce_62 = happySpecReduce_3 26# happyReduction_62 -happyReduction_62 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut31 happy_x_1 of { happy_var_1 -> - case happyOut30 happy_x_2 of { happy_var_2 -> - happyIn31 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_63 = happyReduce 4# 27# happyReduction_63 -happyReduction_63 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut33 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_4 of { happy_var_4 -> - happyIn32 - (EAbs happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_64 = happyReduce 7# 27# happyReduction_64 -happyReduction_64 (happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut33 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_4 of { happy_var_4 -> - case happyOut25 happy_x_7 of { happy_var_7 -> - happyIn32 - (EPi happy_var_2 happy_var_4 happy_var_7 - ) `HappyStk` happyRest}}} - -happyReduce_65 = happySpecReduce_3 27# happyReduction_65 -happyReduction_65 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut34 happy_x_1 of { happy_var_1 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - happyIn32 - (EPiNoVar happy_var_1 happy_var_3 - )}} - -happyReduce_66 = happySpecReduce_1 27# happyReduction_66 -happyReduction_66 happy_x_1 - = case happyOut34 happy_x_1 of { happy_var_1 -> - happyIn32 - (happy_var_1 - )} - -happyReduce_67 = happySpecReduce_1 28# happyReduction_67 -happyReduction_67 happy_x_1 - = case happyOut5 happy_x_1 of { happy_var_1 -> - happyIn33 - (VVar happy_var_1 - )} - -happyReduce_68 = happySpecReduce_1 28# happyReduction_68 -happyReduction_68 happy_x_1 - = happyIn33 - (VWild - ) - -happyReduce_69 = happySpecReduce_3 29# happyReduction_69 -happyReduction_69 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut34 happy_x_1 of { happy_var_1 -> - case happyOut35 happy_x_3 of { happy_var_3 -> - happyIn34 - (EBind happy_var_1 happy_var_3 - )}} - happyReduce_70 = happySpecReduce_3 29# happyReduction_70 happyReduction_70 happy_x_3 happy_x_2 happy_x_1 = case happyOut34 happy_x_1 of { happy_var_1 -> - case happyOut35 happy_x_3 of { happy_var_3 -> + case happyOut33 happy_x_2 of { happy_var_2 -> happyIn34 - (EBindC happy_var_1 happy_var_3 + (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_71 = happySpecReduce_1 29# happyReduction_71 -happyReduction_71 happy_x_1 +happyReduce_71 = happySpecReduce_3 30# happyReduction_71 +happyReduction_71 happy_x_3 + happy_x_2 + happy_x_1 = case happyOut35 happy_x_1 of { happy_var_1 -> - happyIn34 - (happy_var_1 - )} + case happyOut36 happy_x_3 of { happy_var_3 -> + happyIn35 + (EBind happy_var_1 happy_var_3 + )}} happyReduce_72 = happySpecReduce_3 30# happyReduction_72 happyReduction_72 happy_x_3 happy_x_2 happy_x_1 - = case happyOut36 happy_x_1 of { happy_var_1 -> - case happyOut35 happy_x_3 of { happy_var_3 -> + = case happyOut35 happy_x_1 of { happy_var_1 -> + case happyOut36 happy_x_3 of { happy_var_3 -> happyIn35 - (EOr happy_var_1 happy_var_3 + (EBindC happy_var_1 happy_var_3 )}} happyReduce_73 = happySpecReduce_1 30# happyReduction_73 @@ -1067,7 +1076,7 @@ happyReduction_74 happy_x_3 = case happyOut37 happy_x_1 of { happy_var_1 -> case happyOut36 happy_x_3 of { happy_var_3 -> happyIn36 - (EAnd happy_var_1 happy_var_3 + (EOr happy_var_1 happy_var_3 )}} happyReduce_75 = happySpecReduce_1 31# happyReduction_75 @@ -1082,76 +1091,76 @@ happyReduction_76 happy_x_3 happy_x_2 happy_x_1 = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut38 happy_x_3 of { happy_var_3 -> + case happyOut37 happy_x_3 of { happy_var_3 -> happyIn37 - (EEq happy_var_1 happy_var_3 + (EAnd happy_var_1 happy_var_3 )}} -happyReduce_77 = happySpecReduce_3 32# happyReduction_77 -happyReduction_77 happy_x_3 - happy_x_2 - happy_x_1 +happyReduce_77 = happySpecReduce_1 32# happyReduction_77 +happyReduction_77 happy_x_1 = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut38 happy_x_3 of { happy_var_3 -> happyIn37 - (ENe happy_var_1 happy_var_3 - )}} + (happy_var_1 + )} -happyReduce_78 = happySpecReduce_3 32# happyReduction_78 +happyReduce_78 = happySpecReduce_3 33# happyReduction_78 happyReduction_78 happy_x_3 happy_x_2 happy_x_1 - = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut38 happy_x_3 of { happy_var_3 -> - happyIn37 - (ELt happy_var_1 happy_var_3 + = case happyOut39 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_3 of { happy_var_3 -> + happyIn38 + (EEq happy_var_1 happy_var_3 )}} -happyReduce_79 = happySpecReduce_3 32# happyReduction_79 +happyReduce_79 = happySpecReduce_3 33# happyReduction_79 happyReduction_79 happy_x_3 happy_x_2 happy_x_1 - = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut38 happy_x_3 of { happy_var_3 -> - happyIn37 - (ELe happy_var_1 happy_var_3 + = case happyOut39 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_3 of { happy_var_3 -> + happyIn38 + (ENe happy_var_1 happy_var_3 )}} -happyReduce_80 = happySpecReduce_3 32# happyReduction_80 +happyReduce_80 = happySpecReduce_3 33# happyReduction_80 happyReduction_80 happy_x_3 happy_x_2 happy_x_1 - = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut38 happy_x_3 of { happy_var_3 -> - happyIn37 - (EGt happy_var_1 happy_var_3 + = case happyOut39 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_3 of { happy_var_3 -> + happyIn38 + (ELt happy_var_1 happy_var_3 )}} -happyReduce_81 = happySpecReduce_3 32# happyReduction_81 +happyReduce_81 = happySpecReduce_3 33# happyReduction_81 happyReduction_81 happy_x_3 happy_x_2 happy_x_1 - = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut38 happy_x_3 of { happy_var_3 -> - happyIn37 - (EGe happy_var_1 happy_var_3 + = case happyOut39 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_3 of { happy_var_3 -> + happyIn38 + (ELe happy_var_1 happy_var_3 )}} -happyReduce_82 = happySpecReduce_1 32# happyReduction_82 -happyReduction_82 happy_x_1 - = case happyOut38 happy_x_1 of { happy_var_1 -> - happyIn37 - (happy_var_1 - )} +happyReduce_82 = happySpecReduce_3 33# happyReduction_82 +happyReduction_82 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut39 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_3 of { happy_var_3 -> + happyIn38 + (EGt happy_var_1 happy_var_3 + )}} happyReduce_83 = happySpecReduce_3 33# happyReduction_83 happyReduction_83 happy_x_3 happy_x_2 happy_x_1 = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOut38 happy_x_3 of { happy_var_3 -> + case happyOut39 happy_x_3 of { happy_var_3 -> happyIn38 - (EListCons happy_var_1 happy_var_3 + (EGe happy_var_1 happy_var_3 )}} happyReduce_84 = happySpecReduce_1 33# happyReduction_84 @@ -1165,73 +1174,75 @@ happyReduce_85 = happySpecReduce_3 34# happyReduction_85 happyReduction_85 happy_x_3 happy_x_2 happy_x_1 - = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOut40 happy_x_3 of { happy_var_3 -> - happyIn39 - (EAdd happy_var_1 happy_var_3 - )}} - -happyReduce_86 = happySpecReduce_3 34# happyReduction_86 -happyReduction_86 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOut40 happy_x_3 of { happy_var_3 -> + = case happyOut40 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_3 of { happy_var_3 -> happyIn39 - (ESub happy_var_1 happy_var_3 + (EListCons happy_var_1 happy_var_3 )}} -happyReduce_87 = happySpecReduce_1 34# happyReduction_87 -happyReduction_87 happy_x_1 +happyReduce_86 = happySpecReduce_1 34# happyReduction_86 +happyReduction_86 happy_x_1 = case happyOut40 happy_x_1 of { happy_var_1 -> happyIn39 (happy_var_1 )} -happyReduce_88 = happySpecReduce_3 35# happyReduction_88 -happyReduction_88 happy_x_3 +happyReduce_87 = happySpecReduce_3 35# happyReduction_87 +happyReduction_87 happy_x_3 happy_x_2 happy_x_1 = case happyOut40 happy_x_1 of { happy_var_1 -> case happyOut41 happy_x_3 of { happy_var_3 -> happyIn40 - (EMul happy_var_1 happy_var_3 + (EAdd happy_var_1 happy_var_3 )}} -happyReduce_89 = happySpecReduce_3 35# happyReduction_89 -happyReduction_89 happy_x_3 +happyReduce_88 = happySpecReduce_3 35# happyReduction_88 +happyReduction_88 happy_x_3 happy_x_2 happy_x_1 = case happyOut40 happy_x_1 of { happy_var_1 -> case happyOut41 happy_x_3 of { happy_var_3 -> happyIn40 - (EDiv happy_var_1 happy_var_3 + (ESub happy_var_1 happy_var_3 )}} -happyReduce_90 = happySpecReduce_3 35# happyReduction_90 +happyReduce_89 = happySpecReduce_1 35# happyReduction_89 +happyReduction_89 happy_x_1 + = case happyOut41 happy_x_1 of { happy_var_1 -> + happyIn40 + (happy_var_1 + )} + +happyReduce_90 = happySpecReduce_3 36# happyReduction_90 happyReduction_90 happy_x_3 happy_x_2 happy_x_1 - = case happyOut40 happy_x_1 of { happy_var_1 -> - case happyOut41 happy_x_3 of { happy_var_3 -> - happyIn40 - (EMod happy_var_1 happy_var_3 + = case happyOut41 happy_x_1 of { happy_var_1 -> + case happyOut42 happy_x_3 of { happy_var_3 -> + happyIn41 + (EMul happy_var_1 happy_var_3 )}} -happyReduce_91 = happySpecReduce_1 35# happyReduction_91 -happyReduction_91 happy_x_1 +happyReduce_91 = happySpecReduce_3 36# happyReduction_91 +happyReduction_91 happy_x_3 + happy_x_2 + happy_x_1 = case happyOut41 happy_x_1 of { happy_var_1 -> - happyIn40 - (happy_var_1 - )} + case happyOut42 happy_x_3 of { happy_var_3 -> + happyIn41 + (EDiv happy_var_1 happy_var_3 + )}} -happyReduce_92 = happySpecReduce_2 36# happyReduction_92 -happyReduction_92 happy_x_2 +happyReduce_92 = happySpecReduce_3 36# happyReduction_92 +happyReduction_92 happy_x_3 + happy_x_2 happy_x_1 - = case happyOut41 happy_x_2 of { happy_var_2 -> + = case happyOut41 happy_x_1 of { happy_var_1 -> + case happyOut42 happy_x_3 of { happy_var_3 -> happyIn41 - (ENeg happy_var_2 - )} + (EMod happy_var_1 happy_var_3 + )}} happyReduce_93 = happySpecReduce_1 36# happyReduction_93 happyReduction_93 happy_x_1 @@ -1243,11 +1254,10 @@ happyReduction_93 happy_x_1 happyReduce_94 = happySpecReduce_2 37# happyReduction_94 happyReduction_94 happy_x_2 happy_x_1 - = case happyOut42 happy_x_1 of { happy_var_1 -> - case happyOut43 happy_x_2 of { happy_var_2 -> + = case happyOut42 happy_x_2 of { happy_var_2 -> happyIn42 - (EApp happy_var_1 happy_var_2 - )}} + (ENeg happy_var_2 + )} happyReduce_95 = happySpecReduce_1 37# happyReduction_95 happyReduction_95 happy_x_1 @@ -1256,14 +1266,13 @@ happyReduction_95 happy_x_1 (happy_var_1 )} -happyReduce_96 = happySpecReduce_3 38# happyReduction_96 -happyReduction_96 happy_x_3 - happy_x_2 +happyReduce_96 = happySpecReduce_2 38# happyReduction_96 +happyReduction_96 happy_x_2 happy_x_1 = case happyOut43 happy_x_1 of { happy_var_1 -> - case happyOut5 happy_x_3 of { happy_var_3 -> + case happyOut44 happy_x_2 of { happy_var_2 -> happyIn43 - (EProj happy_var_1 happy_var_3 + (EApp happy_var_1 happy_var_2 )}} happyReduce_97 = happySpecReduce_1 38# happyReduction_97 @@ -1273,181 +1282,198 @@ happyReduction_97 happy_x_1 (happy_var_1 )} -happyReduce_98 = happyReduce 4# 39# happyReduction_98 -happyReduction_98 (happy_x_4 `HappyStk` +happyReduce_98 = happySpecReduce_3 39# happyReduction_98 +happyReduction_98 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut44 happy_x_1 of { happy_var_1 -> + case happyOut5 happy_x_3 of { happy_var_3 -> + happyIn44 + (EProj happy_var_1 happy_var_3 + )}} + +happyReduce_99 = happySpecReduce_1 39# happyReduction_99 +happyReduction_99 happy_x_1 + = case happyOut45 happy_x_1 of { happy_var_1 -> + happyIn44 + (happy_var_1 + )} + +happyReduce_100 = happyReduce 4# 40# happyReduction_100 +happyReduction_100 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut46 happy_x_3 of { happy_var_3 -> - happyIn44 + = case happyOut47 happy_x_3 of { happy_var_3 -> + happyIn45 (ERecType happy_var_3 ) `HappyStk` happyRest} -happyReduce_99 = happyReduce 4# 39# happyReduction_99 -happyReduction_99 (happy_x_4 `HappyStk` +happyReduce_101 = happyReduce 4# 40# happyReduction_101 +happyReduction_101 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut48 happy_x_3 of { happy_var_3 -> - happyIn44 + = case happyOut49 happy_x_3 of { happy_var_3 -> + happyIn45 (ERec happy_var_3 ) `HappyStk` happyRest} -happyReduce_100 = happySpecReduce_3 39# happyReduction_100 -happyReduction_100 happy_x_3 +happyReduce_102 = happySpecReduce_3 40# happyReduction_102 +happyReduction_102 happy_x_3 happy_x_2 happy_x_1 - = case happyOut50 happy_x_2 of { happy_var_2 -> - happyIn44 + = case happyOut51 happy_x_2 of { happy_var_2 -> + happyIn45 (EList happy_var_2 )} -happyReduce_101 = happySpecReduce_1 39# happyReduction_101 -happyReduction_101 happy_x_1 +happyReduce_103 = happySpecReduce_1 40# happyReduction_103 +happyReduction_103 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> - happyIn44 + happyIn45 (EVar happy_var_1 )} -happyReduce_102 = happySpecReduce_1 39# happyReduction_102 -happyReduction_102 happy_x_1 - = happyIn44 +happyReduce_104 = happySpecReduce_1 40# happyReduction_104 +happyReduction_104 happy_x_1 + = happyIn45 (EType ) -happyReduce_103 = happySpecReduce_1 39# happyReduction_103 -happyReduction_103 happy_x_1 +happyReduce_105 = happySpecReduce_1 40# happyReduction_105 +happyReduction_105 happy_x_1 = case happyOut6 happy_x_1 of { happy_var_1 -> - happyIn44 + happyIn45 (EStr happy_var_1 )} -happyReduce_104 = happySpecReduce_1 39# happyReduction_104 -happyReduction_104 happy_x_1 +happyReduce_106 = happySpecReduce_1 40# happyReduction_106 +happyReduction_106 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> - happyIn44 + happyIn45 (EInteger happy_var_1 )} -happyReduce_105 = happySpecReduce_1 39# happyReduction_105 -happyReduction_105 happy_x_1 +happyReduce_107 = happySpecReduce_1 40# happyReduction_107 +happyReduction_107 happy_x_1 = case happyOut8 happy_x_1 of { happy_var_1 -> - happyIn44 + happyIn45 (EDouble happy_var_1 )} -happyReduce_106 = happySpecReduce_1 39# happyReduction_106 -happyReduction_106 happy_x_1 - = happyIn44 +happyReduce_108 = happySpecReduce_1 40# happyReduction_108 +happyReduction_108 happy_x_1 + = happyIn45 (EMeta ) -happyReduce_107 = happySpecReduce_3 39# happyReduction_107 -happyReduction_107 happy_x_3 +happyReduce_109 = happySpecReduce_3 40# happyReduction_109 +happyReduction_109 happy_x_3 happy_x_2 happy_x_1 - = case happyOut25 happy_x_2 of { happy_var_2 -> - happyIn44 + = case happyOut26 happy_x_2 of { happy_var_2 -> + happyIn45 (happy_var_2 )} -happyReduce_108 = happySpecReduce_3 40# happyReduction_108 -happyReduction_108 happy_x_3 +happyReduce_110 = happySpecReduce_3 41# happyReduction_110 +happyReduction_110 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - happyIn45 + case happyOut26 happy_x_3 of { happy_var_3 -> + happyIn46 (FieldType happy_var_1 happy_var_3 )}} -happyReduce_109 = happySpecReduce_0 41# happyReduction_109 -happyReduction_109 = happyIn46 +happyReduce_111 = happySpecReduce_0 42# happyReduction_111 +happyReduction_111 = happyIn47 ([] ) -happyReduce_110 = happySpecReduce_1 41# happyReduction_110 -happyReduction_110 happy_x_1 - = case happyOut45 happy_x_1 of { happy_var_1 -> - happyIn46 +happyReduce_112 = happySpecReduce_1 42# happyReduction_112 +happyReduction_112 happy_x_1 + = case happyOut46 happy_x_1 of { happy_var_1 -> + happyIn47 ((:[]) happy_var_1 )} -happyReduce_111 = happySpecReduce_3 41# happyReduction_111 -happyReduction_111 happy_x_3 +happyReduce_113 = happySpecReduce_3 42# happyReduction_113 +happyReduction_113 happy_x_3 happy_x_2 happy_x_1 - = case happyOut45 happy_x_1 of { happy_var_1 -> - case happyOut46 happy_x_3 of { happy_var_3 -> - happyIn46 + = case happyOut46 happy_x_1 of { happy_var_1 -> + case happyOut47 happy_x_3 of { happy_var_3 -> + happyIn47 ((:) happy_var_1 happy_var_3 )}} -happyReduce_112 = happySpecReduce_3 42# happyReduction_112 -happyReduction_112 happy_x_3 +happyReduce_114 = happySpecReduce_3 43# happyReduction_114 +happyReduction_114 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - happyIn47 + case happyOut26 happy_x_3 of { happy_var_3 -> + happyIn48 (FieldValue happy_var_1 happy_var_3 )}} -happyReduce_113 = happySpecReduce_0 43# happyReduction_113 -happyReduction_113 = happyIn48 +happyReduce_115 = happySpecReduce_0 44# happyReduction_115 +happyReduction_115 = happyIn49 ([] ) -happyReduce_114 = happySpecReduce_1 43# happyReduction_114 -happyReduction_114 happy_x_1 - = case happyOut47 happy_x_1 of { happy_var_1 -> - happyIn48 +happyReduce_116 = happySpecReduce_1 44# happyReduction_116 +happyReduction_116 happy_x_1 + = case happyOut48 happy_x_1 of { happy_var_1 -> + happyIn49 ((:[]) happy_var_1 )} -happyReduce_115 = happySpecReduce_3 43# happyReduction_115 -happyReduction_115 happy_x_3 +happyReduce_117 = happySpecReduce_3 44# happyReduction_117 +happyReduction_117 happy_x_3 happy_x_2 happy_x_1 - = case happyOut47 happy_x_1 of { happy_var_1 -> - case happyOut48 happy_x_3 of { happy_var_3 -> - happyIn48 + = case happyOut48 happy_x_1 of { happy_var_1 -> + case happyOut49 happy_x_3 of { happy_var_3 -> + happyIn49 ((:) happy_var_1 happy_var_3 )}} -happyReduce_116 = happySpecReduce_1 44# happyReduction_116 -happyReduction_116 happy_x_1 - = case happyOut32 happy_x_1 of { happy_var_1 -> - happyIn49 +happyReduce_118 = happySpecReduce_1 45# happyReduction_118 +happyReduction_118 happy_x_1 + = case happyOut35 happy_x_1 of { happy_var_1 -> + happyIn50 (happy_var_1 )} -happyReduce_117 = happySpecReduce_0 45# happyReduction_117 -happyReduction_117 = happyIn50 +happyReduce_119 = happySpecReduce_0 46# happyReduction_119 +happyReduction_119 = happyIn51 ([] ) -happyReduce_118 = happySpecReduce_1 45# happyReduction_118 -happyReduction_118 happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - happyIn50 +happyReduce_120 = happySpecReduce_1 46# happyReduction_120 +happyReduction_120 happy_x_1 + = case happyOut26 happy_x_1 of { happy_var_1 -> + happyIn51 ((:[]) happy_var_1 )} -happyReduce_119 = happySpecReduce_3 45# happyReduction_119 -happyReduction_119 happy_x_3 +happyReduce_121 = happySpecReduce_3 46# happyReduction_121 +happyReduction_121 happy_x_3 happy_x_2 happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut50 happy_x_3 of { happy_var_3 -> - happyIn50 + = case happyOut26 happy_x_1 of { happy_var_1 -> + case happyOut51 happy_x_3 of { happy_var_3 -> + happyIn51 ((:) happy_var_1 happy_var_3 )}} happyNewToken action sts stk [] = - happyDoAction 53# (error "reading EOF!") action sts stk [] + happyDoAction 54# (error "reading EOF!") action sts stk [] happyNewToken action sts stk (tk:tks) = let cont i = happyDoAction i tk action sts stk tks in @@ -1457,53 +1483,54 @@ happyNewToken action sts stk (tk:tks) = PT _ (TS "{") -> cont 3#; PT _ (TS "}") -> cont 4#; PT _ (TS "=") -> cont 5#; - PT _ (TS "||") -> cont 6#; - PT _ (TS "::") -> cont 7#; - PT _ (TS "(") -> cont 8#; - PT _ (TS ")") -> cont 9#; - PT _ (TS "[") -> cont 10#; - PT _ (TS "]") -> cont 11#; - PT _ (TS ",") -> cont 12#; - PT _ (TS "_") -> cont 13#; - PT _ (TS "->") -> cont 14#; - PT _ (TS "<-") -> cont 15#; + PT _ (TS "|") -> cont 6#; + PT _ (TS "||") -> cont 7#; + PT _ (TS "::") -> cont 8#; + PT _ (TS "(") -> cont 9#; + PT _ (TS ")") -> cont 10#; + PT _ (TS "[") -> cont 11#; + PT _ (TS "]") -> cont 12#; + PT _ (TS ",") -> cont 13#; + PT _ (TS "_") -> cont 14#; + PT _ (TS "->") -> cont 15#; PT _ (TS "\\") -> cont 16#; - PT _ (TS ">>=") -> cont 17#; - PT _ (TS ">>") -> cont 18#; - PT _ (TS "&&") -> cont 19#; - PT _ (TS "==") -> cont 20#; - PT _ (TS "/=") -> cont 21#; - PT _ (TS "<") -> cont 22#; - PT _ (TS "<=") -> cont 23#; - PT _ (TS ">") -> cont 24#; - PT _ (TS ">=") -> cont 25#; - PT _ (TS "+") -> cont 26#; - PT _ (TS "-") -> cont 27#; - PT _ (TS "*") -> cont 28#; - PT _ (TS "/") -> cont 29#; - PT _ (TS "%") -> cont 30#; - PT _ (TS ".") -> cont 31#; - PT _ (TS "?") -> cont 32#; - PT _ (TS "Type") -> cont 33#; - PT _ (TS "case") -> cont 34#; - PT _ (TS "data") -> cont 35#; - PT _ (TS "derive") -> cont 36#; - PT _ (TS "do") -> cont 37#; - PT _ (TS "else") -> cont 38#; - PT _ (TS "if") -> cont 39#; - PT _ (TS "import") -> cont 40#; - PT _ (TS "in") -> cont 41#; - PT _ (TS "let") -> cont 42#; - PT _ (TS "of") -> cont 43#; - PT _ (TS "rec") -> cont 44#; - PT _ (TS "sig") -> cont 45#; - PT _ (TS "then") -> cont 46#; - PT _ (TS "where") -> cont 47#; - PT _ (TV happy_dollar_dollar) -> cont 48#; - PT _ (TL happy_dollar_dollar) -> cont 49#; - PT _ (TI happy_dollar_dollar) -> cont 50#; - PT _ (TD happy_dollar_dollar) -> cont 51#; - _ -> cont 52#; + PT _ (TS "<-") -> cont 17#; + PT _ (TS ">>=") -> cont 18#; + PT _ (TS ">>") -> cont 19#; + PT _ (TS "&&") -> cont 20#; + PT _ (TS "==") -> cont 21#; + PT _ (TS "/=") -> cont 22#; + PT _ (TS "<") -> cont 23#; + PT _ (TS "<=") -> cont 24#; + PT _ (TS ">") -> cont 25#; + PT _ (TS ">=") -> cont 26#; + PT _ (TS "+") -> cont 27#; + PT _ (TS "-") -> cont 28#; + PT _ (TS "*") -> cont 29#; + PT _ (TS "/") -> cont 30#; + PT _ (TS "%") -> cont 31#; + PT _ (TS ".") -> cont 32#; + PT _ (TS "?") -> cont 33#; + PT _ (TS "Type") -> cont 34#; + PT _ (TS "case") -> cont 35#; + PT _ (TS "data") -> cont 36#; + PT _ (TS "derive") -> cont 37#; + PT _ (TS "do") -> cont 38#; + PT _ (TS "else") -> cont 39#; + PT _ (TS "if") -> cont 40#; + PT _ (TS "import") -> cont 41#; + PT _ (TS "in") -> cont 42#; + PT _ (TS "let") -> cont 43#; + PT _ (TS "of") -> cont 44#; + PT _ (TS "rec") -> cont 45#; + PT _ (TS "sig") -> cont 46#; + PT _ (TS "then") -> cont 47#; + PT _ (TS "where") -> cont 48#; + PT _ (TV happy_dollar_dollar) -> cont 49#; + PT _ (TL happy_dollar_dollar) -> cont 50#; + PT _ (TI happy_dollar_dollar) -> cont 51#; + PT _ (TD happy_dollar_dollar) -> cont 52#; + _ -> cont 53#; _ -> happyError' (tk:tks) } @@ -1523,7 +1550,7 @@ pModule tks = happySomeParser where happySomeParser = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut9 x)) pExp tks = happySomeParser where - happySomeParser = happyThen (happyParse 1# tks) (\x -> happyReturn (happyOut25 x)) + happySomeParser = happyThen (happyParse 1# tks) (\x -> happyReturn (happyOut26 x)) happySeq = happyDontSeq diff --git a/src/Transfer/Syntax/Par.y b/src/Transfer/Syntax/Par.y index d850c8bd8..9b66dccd1 100644 --- a/src/Transfer/Syntax/Par.y +++ b/src/Transfer/Syntax/Par.y @@ -19,6 +19,7 @@ import Transfer.ErrM '{' { PT _ (TS "{") } '}' { PT _ (TS "}") } '=' { PT _ (TS "=") } + '|' { PT _ (TS "|") } '||' { PT _ (TS "||") } '::' { PT _ (TS "::") } '(' { PT _ (TS "(") } @@ -28,8 +29,8 @@ import Transfer.ErrM ',' { PT _ (TS ",") } '_' { PT _ (TS "_") } '->' { PT _ (TS "->") } - '<-' { PT _ (TS "<-") } '\\' { PT _ (TS "\\") } + '<-' { PT _ (TS "<-") } '>>=' { PT _ (TS ">>=") } '>>' { PT _ (TS ">>") } '&&' { PT _ (TS "&&") } @@ -93,7 +94,7 @@ ListImport : {- empty -} { [] } Decl :: { Decl } Decl : 'data' Ident ':' Exp 'where' '{' ListConsDecl '}' { DataDecl $2 $4 $7 } | Ident ':' Exp { TypeDecl $1 $3 } - | Ident ListPattern '=' Exp { ValueDecl $1 (reverse $2) $4 } + | Ident ListPattern Guard '=' Exp { ValueDecl $1 (reverse $2) $3 $5 } | 'derive' Ident Ident { DeriveDecl $2 $3 } @@ -113,6 +114,11 @@ ListConsDecl : {- empty -} { [] } | ConsDecl ';' ListConsDecl { (:) $1 $3 } +Guard :: { Guard } +Guard : '|' Exp1 { GuardExp $2 } + | {- empty -} { GuardNo } + + Pattern :: { Pattern } Pattern : Pattern1 '||' Pattern { POr $1 $3 } | Pattern1 { $1 } @@ -165,11 +171,23 @@ ListFieldPattern : {- empty -} { [] } Exp :: { Exp } -Exp : 'let' '{' ListLetDef '}' 'in' Exp { ELet $3 $6 } +Exp : '(' VarOrWild ':' Exp ')' '->' Exp { EPi $2 $4 $7 } + | Exp1 '->' Exp { EPiNoVar $1 $3 } + | Exp1 { $1 } + + +VarOrWild :: { VarOrWild } +VarOrWild : Ident { VVar $1 } + | '_' { VWild } + + +Exp1 :: { Exp } +Exp1 : '\\' VarOrWild '->' Exp1 { EAbs $2 $4 } + | 'let' '{' ListLetDef '}' 'in' Exp1 { ELet $3 $6 } | 'case' Exp 'of' '{' ListCase '}' { ECase $2 $5 } - | 'if' Exp 'then' Exp 'else' Exp { EIf $2 $4 $6 } + | 'if' Exp 'then' Exp 'else' Exp1 { EIf $2 $4 $6 } | 'do' '{' ListBind Exp '}' { EDo (reverse $3) $4 } - | Exp1 { $1 } + | Exp2 { $1 } LetDef :: { LetDef } @@ -183,7 +201,7 @@ ListLetDef : {- empty -} { [] } Case :: { Case } -Case : Pattern '->' Exp { Case $1 $3 } +Case : Pattern Guard '->' Exp { Case $1 $2 $4 } ListCase :: { [Case] } @@ -202,18 +220,6 @@ ListBind : {- empty -} { [] } | ListBind Bind ';' { flip (:) $1 $2 } -Exp2 :: { Exp } -Exp2 : '\\' VarOrWild '->' Exp { EAbs $2 $4 } - | '(' VarOrWild ':' Exp ')' '->' Exp { EPi $2 $4 $7 } - | Exp3 '->' Exp { EPiNoVar $1 $3 } - | Exp3 { $1 } - - -VarOrWild :: { VarOrWild } -VarOrWild : Ident { VVar $1 } - | '_' { VWild } - - Exp3 :: { Exp } Exp3 : Exp3 '>>=' Exp4 { EBind $1 $3 } | Exp3 '>>' Exp4 { EBindC $1 $3 } @@ -306,8 +312,8 @@ ListFieldValue : {- empty -} { [] } | FieldValue ';' ListFieldValue { (:) $1 $3 } -Exp1 :: { Exp } -Exp1 : Exp2 { $1 } +Exp2 :: { Exp } +Exp2 : Exp3 { $1 } ListExp :: { [Exp] } diff --git a/src/Transfer/Syntax/Print.hs b/src/Transfer/Syntax/Print.hs index 25593f98a..5b614c6e2 100644 --- a/src/Transfer/Syntax/Print.hs +++ b/src/Transfer/Syntax/Print.hs @@ -84,9 +84,11 @@ instance Print (Tree c) where Import i -> prPrec _i 0 (concatD [doc (showString "import") , prt 0 i]) DataDecl i exp consdecls -> prPrec _i 0 (concatD [doc (showString "data") , prt 0 i , doc (showString ":") , prt 0 exp , doc (showString "where") , doc (showString "{") , prt 0 consdecls , doc (showString "}")]) TypeDecl i exp -> prPrec _i 0 (concatD [prt 0 i , doc (showString ":") , prt 0 exp]) - ValueDecl i patterns exp -> prPrec _i 0 (concatD [prt 0 i , prt 0 patterns , doc (showString "=") , prt 0 exp]) + ValueDecl i patterns guard exp -> prPrec _i 0 (concatD [prt 0 i , prt 0 patterns , prt 0 guard , doc (showString "=") , prt 0 exp]) DeriveDecl i0 i1 -> prPrec _i 0 (concatD [doc (showString "derive") , prt 0 i0 , prt 0 i1]) ConsDecl i exp -> prPrec _i 0 (concatD [prt 0 i , doc (showString ":") , prt 0 exp]) + GuardExp exp -> prPrec _i 0 (concatD [doc (showString "|") , prt 1 exp]) + GuardNo -> prPrec _i 0 (concatD []) POr pattern0 pattern1 -> prPrec _i 0 (concatD [prt 1 pattern0 , doc (showString "||") , prt 0 pattern1]) PListCons pattern0 pattern1 -> prPrec _i 1 (concatD [prt 2 pattern0 , doc (showString "::") , prt 1 pattern1]) PConsTop i pattern patterns -> prPrec _i 2 (concatD [prt 0 i , prt 3 pattern , prt 0 patterns]) @@ -100,13 +102,13 @@ instance Print (Tree c) where PWild -> prPrec _i 3 (concatD [doc (showString "_")]) PListElem pattern -> prPrec _i 0 (concatD [prt 0 pattern]) FieldPattern i pattern -> prPrec _i 0 (concatD [prt 0 i , doc (showString "=") , prt 0 pattern]) - ELet letdefs exp -> prPrec _i 0 (concatD [doc (showString "let") , doc (showString "{") , prt 0 letdefs , doc (showString "}") , doc (showString "in") , prt 0 exp]) - ECase exp cases -> prPrec _i 0 (concatD [doc (showString "case") , prt 0 exp , doc (showString "of") , doc (showString "{") , prt 0 cases , doc (showString "}")]) - EIf exp0 exp1 exp2 -> prPrec _i 0 (concatD [doc (showString "if") , prt 0 exp0 , doc (showString "then") , prt 0 exp1 , doc (showString "else") , prt 0 exp2]) - EDo binds exp -> prPrec _i 0 (concatD [doc (showString "do") , doc (showString "{") , prt 0 binds , prt 0 exp , doc (showString "}")]) - EAbs varorwild exp -> prPrec _i 2 (concatD [doc (showString "\\") , prt 0 varorwild , doc (showString "->") , prt 0 exp]) - EPi varorwild exp0 exp1 -> prPrec _i 2 (concatD [doc (showString "(") , prt 0 varorwild , doc (showString ":") , prt 0 exp0 , doc (showString ")") , doc (showString "->") , prt 0 exp1]) - EPiNoVar exp0 exp1 -> prPrec _i 2 (concatD [prt 3 exp0 , doc (showString "->") , prt 0 exp1]) + EPi varorwild exp0 exp1 -> prPrec _i 0 (concatD [doc (showString "(") , prt 0 varorwild , doc (showString ":") , prt 0 exp0 , doc (showString ")") , doc (showString "->") , prt 0 exp1]) + EPiNoVar exp0 exp1 -> prPrec _i 0 (concatD [prt 1 exp0 , doc (showString "->") , prt 0 exp1]) + EAbs varorwild exp -> prPrec _i 1 (concatD [doc (showString "\\") , prt 0 varorwild , doc (showString "->") , prt 1 exp]) + ELet letdefs exp -> prPrec _i 1 (concatD [doc (showString "let") , doc (showString "{") , prt 0 letdefs , doc (showString "}") , doc (showString "in") , prt 1 exp]) + ECase exp cases -> prPrec _i 1 (concatD [doc (showString "case") , prt 0 exp , doc (showString "of") , doc (showString "{") , prt 0 cases , doc (showString "}")]) + EIf exp0 exp1 exp2 -> prPrec _i 1 (concatD [doc (showString "if") , prt 0 exp0 , doc (showString "then") , prt 0 exp1 , doc (showString "else") , prt 1 exp2]) + EDo binds exp -> prPrec _i 1 (concatD [doc (showString "do") , doc (showString "{") , prt 0 binds , prt 0 exp , doc (showString "}")]) EBind exp0 exp1 -> prPrec _i 3 (concatD [prt 3 exp0 , doc (showString ">>=") , prt 4 exp1]) EBindC exp0 exp1 -> prPrec _i 3 (concatD [prt 3 exp0 , doc (showString ">>") , prt 4 exp1]) EOr exp0 exp1 -> prPrec _i 4 (concatD [prt 5 exp0 , doc (showString "||") , prt 4 exp1]) @@ -135,12 +137,12 @@ instance Print (Tree c) where EInteger n -> prPrec _i 13 (concatD [prt 0 n]) EDouble d -> prPrec _i 13 (concatD [prt 0 d]) EMeta -> prPrec _i 13 (concatD [doc (showString "?")]) + VVar i -> prPrec _i 0 (concatD [prt 0 i]) + VWild -> prPrec _i 0 (concatD [doc (showString "_")]) LetDef i exp0 exp1 -> prPrec _i 0 (concatD [prt 0 i , doc (showString ":") , prt 0 exp0 , doc (showString "=") , prt 0 exp1]) - Case pattern exp -> prPrec _i 0 (concatD [prt 0 pattern , doc (showString "->") , prt 0 exp]) + Case pattern guard exp -> prPrec _i 0 (concatD [prt 0 pattern , prt 0 guard , doc (showString "->") , prt 0 exp]) BindVar varorwild exp -> prPrec _i 0 (concatD [prt 0 varorwild , doc (showString "<-") , prt 0 exp]) BindNoVar exp -> prPrec _i 0 (concatD [prt 0 exp]) - VVar i -> prPrec _i 0 (concatD [prt 0 i]) - VWild -> prPrec _i 0 (concatD [doc (showString "_")]) FieldType i exp -> prPrec _i 0 (concatD [prt 0 i , doc (showString ":") , prt 0 exp]) FieldValue i exp -> prPrec _i 0 (concatD [prt 0 i , doc (showString "=") , prt 0 exp]) Ident str -> prPrec _i 0 (doc (showString str)) diff --git a/src/Transfer/Syntax/Skel.hs b/src/Transfer/Syntax/Skel.hs index d41d5512f..6262da7f9 100644 --- a/src/Transfer/Syntax/Skel.hs +++ b/src/Transfer/Syntax/Skel.hs @@ -15,9 +15,11 @@ transTree t = case t of Import i -> failure t DataDecl i exp consdecls -> failure t TypeDecl i exp -> failure t - ValueDecl i patterns exp -> failure t + ValueDecl i patterns guard exp -> failure t DeriveDecl i0 i1 -> failure t ConsDecl i exp -> failure t + GuardExp exp -> failure t + GuardNo -> failure t POr pattern0 pattern1 -> failure t PListCons pattern0 pattern1 -> failure t PConsTop i pattern patterns -> failure t @@ -31,13 +33,13 @@ transTree t = case t of PWild -> failure t PListElem pattern -> failure t FieldPattern i pattern -> failure t + EPi varorwild exp0 exp1 -> failure t + EPiNoVar exp0 exp1 -> failure t + EAbs varorwild exp -> failure t ELet letdefs exp -> failure t ECase exp cases -> failure t EIf exp0 exp1 exp2 -> failure t EDo binds exp -> failure t - EAbs varorwild exp -> failure t - EPi varorwild exp0 exp1 -> failure t - EPiNoVar exp0 exp1 -> failure t EBind exp0 exp1 -> failure t EBindC exp0 exp1 -> failure t EOr exp0 exp1 -> failure t @@ -66,12 +68,12 @@ transTree t = case t of EInteger n -> failure t EDouble d -> failure t EMeta -> failure t + VVar i -> failure t + VWild -> failure t LetDef i exp0 exp1 -> failure t - Case pattern exp -> failure t + Case pattern guard exp -> failure t BindVar varorwild exp -> failure t BindNoVar exp -> failure t - VVar i -> failure t - VWild -> failure t FieldType i exp -> failure t FieldValue i exp -> failure t Ident str -> failure t @@ -88,13 +90,18 @@ transDecl :: Decl -> Result transDecl t = case t of DataDecl i exp consdecls -> failure t TypeDecl i exp -> failure t - ValueDecl i patterns exp -> failure t + ValueDecl i patterns guard exp -> failure t DeriveDecl i0 i1 -> failure t transConsDecl :: ConsDecl -> Result transConsDecl t = case t of ConsDecl i exp -> failure t +transGuard :: Guard -> Result +transGuard t = case t of + GuardExp exp -> failure t + GuardNo -> failure t + transPattern :: Pattern -> Result transPattern t = case t of POr pattern0 pattern1 -> failure t @@ -119,13 +126,13 @@ transFieldPattern t = case t of transExp :: Exp -> Result transExp t = case t of + EPi varorwild exp0 exp1 -> failure t + EPiNoVar exp0 exp1 -> failure t + EAbs varorwild exp -> failure t ELet letdefs exp -> failure t ECase exp cases -> failure t EIf exp0 exp1 exp2 -> failure t EDo binds exp -> failure t - EAbs varorwild exp -> failure t - EPi varorwild exp0 exp1 -> failure t - EPiNoVar exp0 exp1 -> failure t EBind exp0 exp1 -> failure t EBindC exp0 exp1 -> failure t EOr exp0 exp1 -> failure t @@ -155,24 +162,24 @@ transExp t = case t of EDouble d -> failure t EMeta -> failure t +transVarOrWild :: VarOrWild -> Result +transVarOrWild t = case t of + VVar i -> failure t + VWild -> failure t + transLetDef :: LetDef -> Result transLetDef t = case t of LetDef i exp0 exp1 -> failure t transCase :: Case -> Result transCase t = case t of - Case pattern exp -> failure t + Case pattern guard exp -> failure t transBind :: Bind -> Result transBind t = case t of BindVar varorwild exp -> failure t BindNoVar exp -> failure t -transVarOrWild :: VarOrWild -> Result -transVarOrWild t = case t of - VVar i -> failure t - VWild -> failure t - transFieldType :: FieldType -> Result transFieldType t = case t of FieldType i exp -> failure t diff --git a/src/Transfer/Syntax/Syntax.cf b/src/Transfer/Syntax/Syntax.cf index 64b588376..50812d2f1 100644 --- a/src/Transfer/Syntax/Syntax.cf +++ b/src/Transfer/Syntax/Syntax.cf @@ -12,15 +12,18 @@ Module. Module ::= [Import] [Decl] ; Import. Import ::= "import" Ident ; separator Import ";" ; -DataDecl. Decl ::= "data" Ident ":" Exp "where" "{" [ConsDecl] "}" ; -TypeDecl. Decl ::= Ident ":" Exp ; -ValueDecl. Decl ::= Ident [Pattern] "=" Exp ; -DeriveDecl. Decl ::= "derive" Ident Ident ; +DataDecl. Decl ::= "data" Ident ":" Exp "where" "{" [ConsDecl] "}" ; +TypeDecl. Decl ::= Ident ":" Exp ; +ValueDecl. Decl ::= Ident [Pattern] Guard "=" Exp ; +DeriveDecl. Decl ::= "derive" Ident Ident ; separator Decl ";" ; ConsDecl. ConsDecl ::= Ident ":" Exp ; separator ConsDecl ";" ; +GuardExp. Guard ::= "|" Exp1 ; +GuardNo. Guard ::= ; + -- Disjunctive patterns. POr. Pattern ::= Pattern1 "||" Pattern ; @@ -61,27 +64,26 @@ coercions Pattern 3 ; FieldPattern. FieldPattern ::= Ident "=" Pattern ; separator FieldPattern ";" ; -ELet. Exp ::= "let" "{" [LetDef] "}" "in" Exp ; +-- Function types have precedence < 1 to keep the +-- "->" from conflicting with the "->" after guards +EPi. Exp ::= "(" VarOrWild ":" Exp ")" "->" Exp ; +EPiNoVar. Exp ::= Exp1 "->" Exp ; +VVar. VarOrWild ::= Ident ; +VWild. VarOrWild ::= "_" ; + +EAbs. Exp1 ::= "\\" VarOrWild "->" Exp1 ; +ELet. Exp1 ::= "let" "{" [LetDef] "}" "in" Exp1 ; LetDef. LetDef ::= Ident ":" Exp "=" Exp ; separator LetDef ";" ; - -ECase. Exp ::= "case" Exp "of" "{" [Case] "}" ; -Case. Case ::= Pattern "->" Exp ; +ECase. Exp1 ::= "case" Exp "of" "{" [Case] "}" ; +Case. Case ::= Pattern Guard "->" Exp ; separator Case ";" ; - -EIf. Exp ::= "if" Exp "then" Exp "else" Exp ; - -EDo. Exp ::= "do" "{" [Bind] Exp "}" ; +EIf. Exp1 ::= "if" Exp "then" Exp "else" Exp1 ; +EDo. Exp1 ::= "do" "{" [Bind] Exp "}" ; BindVar. Bind ::= VarOrWild "<-" Exp ; BindNoVar. Bind ::= Exp ; terminator Bind ";" ; -EAbs. Exp2 ::= "\\" VarOrWild "->" Exp ; -EPi. Exp2 ::= "(" VarOrWild ":" Exp ")" "->" Exp ; -EPiNoVar. Exp2 ::= Exp3 "->" Exp ; -VVar. VarOrWild ::= Ident ; -VWild. VarOrWild ::= "_" ; - EBind. Exp3 ::= Exp3 ">>=" Exp4 ; EBindC. Exp3 ::= Exp3 ">>" Exp4 ; |
