packages feed

papillon 0.0.56 → 0.0.58

raw patch · 7 files changed

+2331/−1974 lines, 7 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Text.Papillon: (<*>) :: Applicative f => forall a b. f (a -> b) -> f a -> f b
+ Text.PapillonCore: (<*>) :: Applicative f => forall a b. f (a -> b) -> f a -> f b

Files

examples/arith.hs view
@@ -1,6 +1,5 @@ {-# LANGUAGE QuasiQuotes, TypeFamilies #-} -import Prelude hiding (product, sum) import Text.Papillon import Data.Char import System.Environment@@ -14,17 +13,25 @@  [papillon| -value :: Int-	= ds:(d:[isDigit d] { d })+	{ read ds }-	/ '(' e:expr ')'		{ e }+op1 :: Int -> Int -> Int+	= '*'			{ (*) }+	/ '/'			{ div }+	/ '%'			{ mod } ;-product :: Int-	= v0:value ops:(op:('*' { (*) } / '/' { div }) v:value { (`op` v) })*-					{ foldl (flip ($)) v0 ops }+op2 :: Int -> Int -> Int+	= '+'			{ (+) }+	/ '-'			{ (-) } ;+factor :: Int+	= ds:<isDigit>+		{ read ds }+	/ '(' e:expr ')'	{ e }+;+term :: Int+	= v0:factor vs:(op:op1 v:factor { (`op` v) })*+				{ foldl (flip ($)) v0 vs }+; expr :: Int-	= p0:product ops:(op:('+' { (+) } / '-' { (-) }) p:product { (`op` p) })*-					{ foldl (flip ($)) p0 ops }+	= p0:term ps:(op:op2 p:term { (`op` p) })*+				{ foldl (flip ($)) p0 ps } ;- |]
examples/config.hs view
@@ -15,16 +15,16 @@ [papillon|  name :: String-	= s:(c:[isLower c] { c })+		{ s }+	= s:<isLower>+			{ s } ; value :: Int-	= ds:(d:[isDigit d] { d })+		{ read ds }+	= ds:<isDigit>+			{ read ds } ; conf1 :: (String, Int)-	= n:name ':' ' ' v:value		{ (n, v) }+	= n:name ':' ' ' v:value '\n'	{ (n, v) } ; conf :: [(String, Int)]-	= cs:(c:conf1 '\n' { c })+ !_:[True]	{ cs }+	= cs:conf1+ !_:[True]		{ cs } ;  |]
papillon.cabal view
@@ -2,7 +2,7 @@ cabal-version:	>= 1.8  name:		papillon-version:	0.0.56+version:	0.0.58 stability:	Experimental author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp> maintainer:	Yoshikuni Jujo <PAF01143@nifty.ne.jp>@@ -28,7 +28,7 @@ source-repository	this   type:		git   location:	git://github.com/YoshikuniJujo/papillon.git-  tag:		0.0.56+  tag:		0.0.58  library   hs-source-dirs:	src
src/Text/Papillon.hs view
@@ -14,6 +14,7 @@ 	peComment, 	pePosition, 	pePositionS,+	(<*>) ) where  import Text.PapillonCore
src/Text/Papillon/Parser.hs view
@@ -1,1938 +1,2141 @@ {-# LANGUAGE FlexibleContexts, TemplateHaskell, UndecidableInstances, PackageImports, TypeFamilies, RankNTypes #-} module Text.Papillon.Parser ( 	Peg,-	Definition,-	Selection,-	ExpressionHs,-	NameLeaf(..),-	NameLeaf_(..),-	ReadFrom(..),-	parse,-	showNameLeaf,-	nameFromRF,-	ParseError(..),-	mkParseError,-	Derivs(peg, pegFile, char),-	Pos(..),-	ListPos(..),-	pePositionS,-	Source(..),-	SourceList(..),--	PPragma(..),-	ModuleName,-	ExportList,-	Code-) where--import Text.Papillon.Papillon-import Control.Applicative-import "monads-tf" Control.Monad.State-import "monads-tf" Control.Monad.Error----import Data.Char-import Language.Haskell.TH-import Text.Papillon.SyntaxTree--data Derivs-    = Derivs {pegFile :: (Either (ParseError (Pos String) Derivs)-                                 ((PegFile, Derivs))),-              pragmas :: (Either (ParseError (Pos String) Derivs)-                                 (([PPragma], Derivs))),-              pragma :: (Either (ParseError (Pos String) Derivs)-                                ((PPragma, Derivs))),-              pragmaStr :: (Either (ParseError (Pos String) Derivs)-                                   ((String, Derivs))),-              pragmaItems :: (Either (ParseError (Pos String) Derivs)-                                     (([String], Derivs))),-              pragmaEnd :: (Either (ParseError (Pos String) Derivs)-                                   (((), Derivs))),-              moduleDec :: (Either (ParseError (Pos String) Derivs)-                                   ((Maybe (([String], Maybe String)), Derivs))),-              moduleName :: (Either (ParseError (Pos String) Derivs)-                                    ((ModuleName, Derivs))),-              moduleDecStr :: (Either (ParseError (Pos String) Derivs)-                                      ((String, Derivs))),-              whr :: (Either (ParseError (Pos String) Derivs) (((), Derivs))),-              preImpPap :: (Either (ParseError (Pos String) Derivs)-                                   ((String, Derivs))),-              prePeg :: (Either (ParseError (Pos String) Derivs)-                                ((String, Derivs))),-              afterPeg :: (Either (ParseError (Pos String) Derivs)-                                  ((String, Derivs))),-              importPapillon :: (Either (ParseError (Pos String) Derivs)-                                        (((), Derivs))),-              varToken :: (Either (ParseError (Pos String) Derivs)-                                  ((String, Derivs))),-              typToken :: (Either (ParseError (Pos String) Derivs)-                                  ((String, Derivs))),-              pap :: (Either (ParseError (Pos String) Derivs) (((), Derivs))),-              peg :: (Either (ParseError (Pos String) Derivs) ((TTPeg, Derivs))),-              sourceType :: (Either (ParseError (Pos String) Derivs)-                                    ((String, Derivs))),-              peg_ :: (Either (ParseError (Pos String) Derivs) ((Peg, Derivs))),-              definition :: (Either (ParseError (Pos String) Derivs)-                                    ((Definition, Derivs))),-              selection :: (Either (ParseError (Pos String) Derivs)-                                   ((Selection, Derivs))),-              expressionHs :: (Either (ParseError (Pos String) Derivs)-                                      ((ExpressionHs, Derivs))),-              expression :: (Either (ParseError (Pos String) Derivs)-                                    ((Expression, Derivs))),-              nameLeaf_ :: (Either (ParseError (Pos String) Derivs)-                                   ((NameLeaf_, Derivs))),-              nameLeaf :: (Either (ParseError (Pos String) Derivs)-                                  ((NameLeaf, Derivs))),-              nameLeafNoCom :: (Either (ParseError (Pos String) Derivs)-                                       ((NameLeaf, Derivs))),-              comForErr :: (Either (ParseError (Pos String) Derivs)-                                   ((String, Derivs))),-              leaf :: (Either (ParseError (Pos String) Derivs)-                              (((ReadFrom, Maybe ((ExpQ, String))), Derivs))),-              patOp :: (Either (ParseError (Pos String) Derivs)-                               ((PatQ, Derivs))),-              pat :: (Either (ParseError (Pos String) Derivs) ((PatQ, Derivs))),-              pat1 :: (Either (ParseError (Pos String) Derivs) ((PatQ, Derivs))),-              patList :: (Either (ParseError (Pos String) Derivs)-                                 (([PatQ], Derivs))),-              opConName :: (Either (ParseError (Pos String) Derivs)-                                   ((Name, Derivs))),-              charLit :: (Either (ParseError (Pos String) Derivs)-                                 ((Char, Derivs))),-              stringLit :: (Either (ParseError (Pos String) Derivs)-                                   ((String, Derivs))),-              escapeC :: (Either (ParseError (Pos String) Derivs)-                                 ((Char, Derivs))),-              pats :: (Either (ParseError (Pos String) Derivs)-                              ((PatQs, Derivs))),-              readFromLs :: (Either (ParseError (Pos String) Derivs)-                                    ((ReadFrom, Derivs))),-              readFrom :: (Either (ParseError (Pos String) Derivs)-                                  ((ReadFrom, Derivs))),-              test :: (Either (ParseError (Pos String) Derivs)-                              (((ExR, String), Derivs))),-              hsExpLam :: (Either (ParseError (Pos String) Derivs)-                                  ((ExR, Derivs))),-              hsExpTyp :: (Either (ParseError (Pos String) Derivs)-                                  ((ExR, Derivs))),-              hsExpOp :: (Either (ParseError (Pos String) Derivs)-                                 ((ExR, Derivs))),-              hsOp :: (Either (ParseError (Pos String) Derivs) ((ExR, Derivs))),-              opTail :: (Either (ParseError (Pos String) Derivs)-                                ((String, Derivs))),-              hsExp :: (Either (ParseError (Pos String) Derivs) ((Ex, Derivs))),-              hsExp1 :: (Either (ParseError (Pos String) Derivs)-                                ((ExR, Derivs))),-              hsExpTpl :: (Either (ParseError (Pos String) Derivs)-                                  ((ExRL, Derivs))),-              hsTypeArr :: (Either (ParseError (Pos String) Derivs)-                                   ((TypeQ, Derivs))),-              hsType :: (Either (ParseError (Pos String) Derivs)-                                ((Typ, Derivs))),-              hsType1 :: (Either (ParseError (Pos String) Derivs)-                                 ((TypeQ, Derivs))),-              hsTypeTpl :: (Either (ParseError (Pos String) Derivs)-                                   ((TypeQL, Derivs))),-              typ :: (Either (ParseError (Pos String) Derivs)-                             ((String, Derivs))),-              variable :: (Either (ParseError (Pos String) Derivs)-                                  ((String, Derivs))),-              tvtail :: (Either (ParseError (Pos String) Derivs)-                                ((String, Derivs))),-              integer :: (Either (ParseError (Pos String) Derivs)-                                 ((Integer, Derivs))),-              alpha :: (Either (ParseError (Pos String) Derivs)-                               ((Char, Derivs))),-              upper :: (Either (ParseError (Pos String) Derivs)-                               ((Char, Derivs))),-              lower :: (Either (ParseError (Pos String) Derivs)-                               ((Char, Derivs))),-              digit :: (Either (ParseError (Pos String) Derivs)-                               ((Char, Derivs))),-              spaces :: (Either (ParseError (Pos String) Derivs) (((), Derivs))),-              space :: (Either (ParseError (Pos String) Derivs) (((), Derivs))),-              notNLString :: (Either (ParseError (Pos String) Derivs)-                                     ((String, Derivs))),-              newLine :: (Either (ParseError (Pos String) Derivs)-                                 (((), Derivs))),-              comment :: (Either (ParseError (Pos String) Derivs)-                                 (((), Derivs))),-              comments :: (Either (ParseError (Pos String) Derivs)-                                  (((), Derivs))),-              notComStr :: (Either (ParseError (Pos String) Derivs)-                                   (((), Derivs))),-              comEnd :: (Either (ParseError (Pos String) Derivs) (((), Derivs))),-              char :: (Either (ParseError (Pos String) Derivs)-                              ((Token String, Derivs))),-              position :: (Pos String)}-parse :: String -> Derivs-parse = parse0_0 initialPos-          where parse0_0 pos s = d-                             where d = Derivs pegFile73_1 pragmas74_2 pragma75_3 pragmaStr76_4 pragmaItems77_5 pragmaEnd78_6 moduleDec79_7 moduleName80_8 moduleDecStr81_9 whr82_10 preImpPap83_11 prePeg84_12 afterPeg85_13 importPapillon86_14 varToken87_15 typToken88_16 pap89_17 peg90_18 sourceType91_19 peg_92_20 definition93_21 selection94_22 expressionHs95_23 expression96_24 nameLeaf_97_25 nameLeaf98_26 nameLeafNoCom99_27 comForErr100_28 leaf101_29 patOp102_30 pat103_31 pat1104_32 patList105_33 opConName106_34 charLit107_35 stringLit108_36 escapeC109_37 pats110_38 readFromLs111_39 readFrom112_40 test113_41 hsExpLam114_42 hsExpTyp115_43 hsExpOp116_44 hsOp117_45 opTail118_46 hsExp119_47 hsExp1120_48 hsExpTpl121_49 hsTypeArr122_50 hsType123_51 hsType1124_52 hsTypeTpl125_53 typ126_54 variable127_55 tvtail128_56 integer129_57 alpha130_58 upper131_59 lower132_60 digit133_61 spaces134_62 space135_63 notNLString136_64 newLine137_65 comment138_66 comments139_67 notComStr140_68 comEnd141_69 chars142_70 pos-                                   pegFile73_1 = runStateT pegFile4_71 d-                                   pragmas74_2 = runStateT pragmas5_72 d-                                   pragma75_3 = runStateT pragma6_73 d-                                   pragmaStr76_4 = runStateT pragmaStr7_74 d-                                   pragmaItems77_5 = runStateT pragmaItems8_75 d-                                   pragmaEnd78_6 = runStateT pragmaEnd9_76 d-                                   moduleDec79_7 = runStateT moduleDec10_77 d-                                   moduleName80_8 = runStateT moduleName11_78 d-                                   moduleDecStr81_9 = runStateT moduleDecStr12_79 d-                                   whr82_10 = runStateT whr13_80 d-                                   preImpPap83_11 = runStateT preImpPap14_81 d-                                   prePeg84_12 = runStateT prePeg15_82 d-                                   afterPeg85_13 = runStateT afterPeg16_83 d-                                   importPapillon86_14 = runStateT importPapillon17_84 d-                                   varToken87_15 = runStateT varToken18_85 d-                                   typToken88_16 = runStateT typToken19_86 d-                                   pap89_17 = runStateT pap20_87 d-                                   peg90_18 = runStateT peg21_88 d-                                   sourceType91_19 = runStateT sourceType22_89 d-                                   peg_92_20 = runStateT peg_23_90 d-                                   definition93_21 = runStateT definition24_91 d-                                   selection94_22 = runStateT selection25_92 d-                                   expressionHs95_23 = runStateT expressionHs26_93 d-                                   expression96_24 = runStateT expression27_94 d-                                   nameLeaf_97_25 = runStateT nameLeaf_28_95 d-                                   nameLeaf98_26 = runStateT nameLeaf29_96 d-                                   nameLeafNoCom99_27 = runStateT nameLeafNoCom30_97 d-                                   comForErr100_28 = runStateT comForErr31_98 d-                                   leaf101_29 = runStateT leaf32_99 d-                                   patOp102_30 = runStateT patOp33_100 d-                                   pat103_31 = runStateT pat34_101 d-                                   pat1104_32 = runStateT pat135_102 d-                                   patList105_33 = runStateT patList36_103 d-                                   opConName106_34 = runStateT opConName37_104 d-                                   charLit107_35 = runStateT charLit38_105 d-                                   stringLit108_36 = runStateT stringLit39_106 d-                                   escapeC109_37 = runStateT escapeC40_107 d-                                   pats110_38 = runStateT pats41_108 d-                                   readFromLs111_39 = runStateT readFromLs42_109 d-                                   readFrom112_40 = runStateT readFrom43_110 d-                                   test113_41 = runStateT test44_111 d-                                   hsExpLam114_42 = runStateT hsExpLam45_112 d-                                   hsExpTyp115_43 = runStateT hsExpTyp46_113 d-                                   hsExpOp116_44 = runStateT hsExpOp47_114 d-                                   hsOp117_45 = runStateT hsOp48_115 d-                                   opTail118_46 = runStateT opTail49_116 d-                                   hsExp119_47 = runStateT hsExp50_117 d-                                   hsExp1120_48 = runStateT hsExp151_118 d-                                   hsExpTpl121_49 = runStateT hsExpTpl52_119 d-                                   hsTypeArr122_50 = runStateT hsTypeArr53_120 d-                                   hsType123_51 = runStateT hsType54_121 d-                                   hsType1124_52 = runStateT hsType155_122 d-                                   hsTypeTpl125_53 = runStateT hsTypeTpl56_123 d-                                   typ126_54 = runStateT typ57_124 d-                                   variable127_55 = runStateT variable58_125 d-                                   tvtail128_56 = runStateT tvtail59_126 d-                                   integer129_57 = runStateT integer60_127 d-                                   alpha130_58 = runStateT alpha61_128 d-                                   upper131_59 = runStateT upper62_129 d-                                   lower132_60 = runStateT lower63_130 d-                                   digit133_61 = runStateT digit64_131 d-                                   spaces134_62 = runStateT spaces65_132 d-                                   space135_63 = runStateT space66_133 d-                                   notNLString136_64 = runStateT notNLString67_134 d-                                   newLine137_65 = runStateT newLine68_135 d-                                   comment138_66 = runStateT comment69_136 d-                                   comments139_67 = runStateT comments70_137 d-                                   notComStr140_68 = runStateT notComStr71_138 d-                                   comEnd141_69 = runStateT comEnd72_139 d-                                   chars142_70 = runStateT (case getToken s of-                                                                Just (c,-                                                                      s') -> do put (parse0_0 (updatePos c pos) s')-                                                                                return c-                                                                _ -> gets position >>= (throwError . mkParseError "" "end of input" "" undefined [])) d-                pegFile4_71 = foldl1 mplus [do pr <- StateT pragmas-                                               md <- StateT moduleDec-                                               pip <- StateT preImpPap-                                               _ <- StateT importPapillon-                                               return ()-                                               pp <- StateT prePeg-                                               _ <- StateT pap-                                               return ()-                                               p <- StateT peg-                                               _ <- StateT spaces-                                               return ()-                                               d160_140 <- get-                                               xx159_141 <- StateT char-                                               case xx159_141 of-                                                   '|' -> return ()-                                                   _ -> gets position >>= (throwError . mkParseError "'|'" "not match pattern: " "" d160_140 ["char"])-                                               let '|' = xx159_141-                                               return ()-                                               d162_142 <- get-                                               xx161_143 <- StateT char-                                               case xx161_143 of-                                                   ']' -> return ()-                                                   _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d162_142 ["char"])-                                               let ']' = xx161_143-                                               return ()-                                               d164_144 <- get-                                               xx163_145 <- StateT char-                                               case xx163_145 of-                                                   '\n' -> return ()-                                                   _ -> gets position >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d164_144 ["char"])-                                               let '\n' = xx163_145-                                               return ()-                                               atp <- StateT afterPeg-                                               return (mkPegFile pr md pip pp p atp),-                                            do pr <- StateT pragmas-                                               md <- StateT moduleDec-                                               pp <- StateT prePeg-                                               _ <- StateT pap-                                               return ()-                                               p <- StateT peg-                                               _ <- StateT spaces-                                               return ()-                                               d180_146 <- get-                                               xx179_147 <- StateT char-                                               case xx179_147 of-                                                   '|' -> return ()-                                                   _ -> gets position >>= (throwError . mkParseError "'|'" "not match pattern: " "" d180_146 ["char"])-                                               let '|' = xx179_147-                                               return ()-                                               d182_148 <- get-                                               xx181_149 <- StateT char-                                               case xx181_149 of-                                                   ']' -> return ()-                                                   _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d182_148 ["char"])-                                               let ']' = xx181_149-                                               return ()-                                               d184_150 <- get-                                               xx183_151 <- StateT char-                                               case xx183_151 of-                                                   '\n' -> return ()-                                                   _ -> gets position >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d184_150 ["char"])-                                               let '\n' = xx183_151-                                               return ()-                                               atp <- StateT afterPeg-                                               return (mkPegFile pr md emp pp p atp)]-                pragmas5_72 = foldl1 mplus [do _ <- StateT spaces-                                               return ()-                                               pr <- StateT pragma-                                               prs <- StateT pragmas-                                               return (pr : prs),-                                            do _ <- StateT spaces-                                               return ()-                                               return []]-                pragma6_73 = foldl1 mplus [do d196_152 <- get-                                              xx195_153 <- StateT char-                                              case xx195_153 of-                                                  '{' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'{'" "not match pattern: " "" d196_152 ["char"])-                                              let '{' = xx195_153-                                              return ()-                                              d198_154 <- get-                                              xx197_155 <- StateT char-                                              case xx197_155 of-                                                  '-' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d198_154 ["char"])-                                              let '-' = xx197_155-                                              return ()-                                              d200_156 <- get-                                              xx199_157 <- StateT char-                                              case xx199_157 of-                                                  '#' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d200_156 ["char"])-                                              let '#' = xx199_157-                                              return ()-                                              _ <- StateT spaces-                                              return ()-                                              d204_158 <- get-                                              xx203_159 <- StateT char-                                              case xx203_159 of-                                                  'L' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'L'" "not match pattern: " "" d204_158 ["char"])-                                              let 'L' = xx203_159-                                              return ()-                                              d206_160 <- get-                                              xx205_161 <- StateT char-                                              case xx205_161 of-                                                  'A' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'A'" "not match pattern: " "" d206_160 ["char"])-                                              let 'A' = xx205_161-                                              return ()-                                              d208_162 <- get-                                              xx207_163 <- StateT char-                                              case xx207_163 of-                                                  'N' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'N'" "not match pattern: " "" d208_162 ["char"])-                                              let 'N' = xx207_163-                                              return ()-                                              d210_164 <- get-                                              xx209_165 <- StateT char-                                              case xx209_165 of-                                                  'G' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'G'" "not match pattern: " "" d210_164 ["char"])-                                              let 'G' = xx209_165-                                              return ()-                                              d212_166 <- get-                                              xx211_167 <- StateT char-                                              case xx211_167 of-                                                  'U' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'U'" "not match pattern: " "" d212_166 ["char"])-                                              let 'U' = xx211_167-                                              return ()-                                              d214_168 <- get-                                              xx213_169 <- StateT char-                                              case xx213_169 of-                                                  'A' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'A'" "not match pattern: " "" d214_168 ["char"])-                                              let 'A' = xx213_169-                                              return ()-                                              d216_170 <- get-                                              xx215_171 <- StateT char-                                              case xx215_171 of-                                                  'G' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'G'" "not match pattern: " "" d216_170 ["char"])-                                              let 'G' = xx215_171-                                              return ()-                                              d218_172 <- get-                                              xx217_173 <- StateT char-                                              case xx217_173 of-                                                  'E' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'E'" "not match pattern: " "" d218_172 ["char"])-                                              let 'E' = xx217_173-                                              return ()-                                              _ <- StateT spaces-                                              return ()-                                              s <- StateT pragmaItems-                                              _ <- StateT pragmaEnd-                                              return ()-                                              _ <- StateT spaces-                                              return ()-                                              return (LanguagePragma s),-                                           do d228_174 <- get-                                              xx227_175 <- StateT char-                                              case xx227_175 of-                                                  '{' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'{'" "not match pattern: " "" d228_174 ["char"])-                                              let '{' = xx227_175-                                              return ()-                                              d230_176 <- get-                                              xx229_177 <- StateT char-                                              case xx229_177 of-                                                  '-' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d230_176 ["char"])-                                              let '-' = xx229_177-                                              return ()-                                              d232_178 <- get-                                              xx231_179 <- StateT char-                                              case xx231_179 of-                                                  '#' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d232_178 ["char"])-                                              let '#' = xx231_179-                                              return ()-                                              _ <- StateT spaces-                                              return ()-                                              s <- StateT pragmaStr-                                              _ <- StateT pragmaEnd-                                              return ()-                                              return (OtherPragma s)]-                pragmaStr7_74 = foldl1 mplus [do ddd239_180 <- get-                                                 do err <- ((do _ <- StateT pragmaEnd-                                                                return ()) >> return False) `catchError` const (return True)-                                                    unless err (gets position >>= (throwError . mkParseError ('!' : "_:pragmaEnd") "not match: " "" ddd239_180 ["pragmaEnd"]))-                                                 put ddd239_180-                                                 c <- StateT char-                                                 s <- StateT pragmaStr-                                                 return (c : s),-                                              return ""]-                pragmaItems8_75 = foldl1 mplus [do t <- StateT typToken-                                                   d249_181 <- get-                                                   xx248_182 <- StateT char-                                                   case xx248_182 of-                                                       ',' -> return ()-                                                       _ -> gets position >>= (throwError . mkParseError "','" "not match pattern: " "" d249_181 ["char"])-                                                   let ',' = xx248_182-                                                   return ()-                                                   _ <- StateT spaces-                                                   return ()-                                                   i <- StateT pragmaItems-                                                   return (t : i),-                                                do t <- StateT typToken-                                                   return [t]]-                pragmaEnd9_76 = foldl1 mplus [do _ <- StateT spaces-                                                 return ()-                                                 d259_183 <- get-                                                 xx258_184 <- StateT char-                                                 case xx258_184 of-                                                     '#' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d259_183 ["char"])-                                                 let '#' = xx258_184-                                                 return ()-                                                 d261_185 <- get-                                                 xx260_186 <- StateT char-                                                 case xx260_186 of-                                                     '-' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d261_185 ["char"])-                                                 let '-' = xx260_186-                                                 return ()-                                                 d263_187 <- get-                                                 xx262_188 <- StateT char-                                                 case xx262_188 of-                                                     '}' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'}'" "not match pattern: " "" d263_187 ["char"])-                                                 let '}' = xx262_188-                                                 return ()-                                                 return ()]-                moduleDec10_77 = foldl1 mplus [do d265_189 <- get-                                                  xx264_190 <- StateT char-                                                  case xx264_190 of-                                                      'm' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'m'" "not match pattern: " "" d265_189 ["char"])-                                                  let 'm' = xx264_190-                                                  return ()-                                                  d267_191 <- get-                                                  xx266_192 <- StateT char-                                                  case xx266_192 of-                                                      'o' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'o'" "not match pattern: " "" d267_191 ["char"])-                                                  let 'o' = xx266_192-                                                  return ()-                                                  d269_193 <- get-                                                  xx268_194 <- StateT char-                                                  case xx268_194 of-                                                      'd' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'d'" "not match pattern: " "" d269_193 ["char"])-                                                  let 'd' = xx268_194-                                                  return ()-                                                  d271_195 <- get-                                                  xx270_196 <- StateT char-                                                  case xx270_196 of-                                                      'u' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'u'" "not match pattern: " "" d271_195 ["char"])-                                                  let 'u' = xx270_196-                                                  return ()-                                                  d273_197 <- get-                                                  xx272_198 <- StateT char-                                                  case xx272_198 of-                                                      'l' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'l'" "not match pattern: " "" d273_197 ["char"])-                                                  let 'l' = xx272_198-                                                  return ()-                                                  d275_199 <- get-                                                  xx274_200 <- StateT char-                                                  case xx274_200 of-                                                      'e' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d275_199 ["char"])-                                                  let 'e' = xx274_200-                                                  return ()-                                                  _ <- StateT spaces-                                                  return ()-                                                  n <- StateT moduleName-                                                  _ <- StateT spaces-                                                  return ()-                                                  d283_201 <- get-                                                  xx282_202 <- StateT char-                                                  case xx282_202 of-                                                      '(' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d283_201 ["char"])-                                                  let '(' = xx282_202-                                                  return ()-                                                  _ <- StateT spaces-                                                  return ()-                                                  s <- StateT moduleDecStr-                                                  _ <- StateT whr-                                                  return ()-                                                  return (Just (n, Just s)),-                                               do d291_203 <- get-                                                  xx290_204 <- StateT char-                                                  case xx290_204 of-                                                      'm' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'m'" "not match pattern: " "" d291_203 ["char"])-                                                  let 'm' = xx290_204-                                                  return ()-                                                  d293_205 <- get-                                                  xx292_206 <- StateT char-                                                  case xx292_206 of-                                                      'o' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'o'" "not match pattern: " "" d293_205 ["char"])-                                                  let 'o' = xx292_206-                                                  return ()-                                                  d295_207 <- get-                                                  xx294_208 <- StateT char-                                                  case xx294_208 of-                                                      'd' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'d'" "not match pattern: " "" d295_207 ["char"])-                                                  let 'd' = xx294_208-                                                  return ()-                                                  d297_209 <- get-                                                  xx296_210 <- StateT char-                                                  case xx296_210 of-                                                      'u' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'u'" "not match pattern: " "" d297_209 ["char"])-                                                  let 'u' = xx296_210-                                                  return ()-                                                  d299_211 <- get-                                                  xx298_212 <- StateT char-                                                  case xx298_212 of-                                                      'l' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'l'" "not match pattern: " "" d299_211 ["char"])-                                                  let 'l' = xx298_212-                                                  return ()-                                                  d301_213 <- get-                                                  xx300_214 <- StateT char-                                                  case xx300_214 of-                                                      'e' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d301_213 ["char"])-                                                  let 'e' = xx300_214-                                                  return ()-                                                  _ <- StateT spaces-                                                  return ()-                                                  n <- StateT moduleName-                                                  _ <- StateT spaces-                                                  return ()-                                                  d309_215 <- get-                                                  xx308_216 <- StateT char-                                                  case xx308_216 of-                                                      'w' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'w'" "not match pattern: " "" d309_215 ["char"])-                                                  let 'w' = xx308_216-                                                  return ()-                                                  d311_217 <- get-                                                  xx310_218 <- StateT char-                                                  case xx310_218 of-                                                      'h' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'h'" "not match pattern: " "" d311_217 ["char"])-                                                  let 'h' = xx310_218-                                                  return ()-                                                  d313_219 <- get-                                                  xx312_220 <- StateT char-                                                  case xx312_220 of-                                                      'e' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d313_219 ["char"])-                                                  let 'e' = xx312_220-                                                  return ()-                                                  d315_221 <- get-                                                  xx314_222 <- StateT char-                                                  case xx314_222 of-                                                      'r' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'r'" "not match pattern: " "" d315_221 ["char"])-                                                  let 'r' = xx314_222-                                                  return ()-                                                  d317_223 <- get-                                                  xx316_224 <- StateT char-                                                  case xx316_224 of-                                                      'e' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d317_223 ["char"])-                                                  let 'e' = xx316_224-                                                  return ()-                                                  _ <- StateT spaces-                                                  return ()-                                                  return (Just (n, Nothing)),-                                               return Nothing]-                moduleName11_78 = foldl1 mplus [do t <- StateT typ-                                                   d323_225 <- get-                                                   xx322_226 <- StateT char-                                                   case xx322_226 of-                                                       '.' -> return ()-                                                       _ -> gets position >>= (throwError . mkParseError "'.'" "not match pattern: " "" d323_225 ["char"])-                                                   let '.' = xx322_226-                                                   return ()-                                                   n <- StateT moduleName-                                                   return (t : n),-                                                do t <- StateT typ-                                                   return [t]]-                moduleDecStr12_79 = foldl1 mplus [do ddd328_227 <- get-                                                     do err <- ((do _ <- StateT whr-                                                                    return ()) >> return False) `catchError` const (return True)-                                                        unless err (gets position >>= (throwError . mkParseError ('!' : "_:whr") "not match: " "" ddd328_227 ["whr"]))-                                                     put ddd328_227-                                                     c <- StateT char-                                                     s <- StateT moduleDecStr-                                                     return (c : s),-                                                  return ""]-                whr13_80 = foldl1 mplus [do _ <- StateT spaces-                                            return ()-                                            d338_228 <- get-                                            xx337_229 <- StateT char-                                            case xx337_229 of-                                                ')' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d338_228 ["char"])-                                            let ')' = xx337_229-                                            return ()-                                            _ <- StateT spaces-                                            return ()-                                            d342_230 <- get-                                            xx341_231 <- StateT char-                                            case xx341_231 of-                                                'w' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'w'" "not match pattern: " "" d342_230 ["char"])-                                            let 'w' = xx341_231-                                            return ()-                                            d344_232 <- get-                                            xx343_233 <- StateT char-                                            case xx343_233 of-                                                'h' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'h'" "not match pattern: " "" d344_232 ["char"])-                                            let 'h' = xx343_233-                                            return ()-                                            d346_234 <- get-                                            xx345_235 <- StateT char-                                            case xx345_235 of-                                                'e' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d346_234 ["char"])-                                            let 'e' = xx345_235-                                            return ()-                                            d348_236 <- get-                                            xx347_237 <- StateT char-                                            case xx347_237 of-                                                'r' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'r'" "not match pattern: " "" d348_236 ["char"])-                                            let 'r' = xx347_237-                                            return ()-                                            d350_238 <- get-                                            xx349_239 <- StateT char-                                            case xx349_239 of-                                                'e' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d350_238 ["char"])-                                            let 'e' = xx349_239-                                            return ()-                                            return ()]-                preImpPap14_81 = foldl1 mplus [do ddd351_240 <- get-                                                  do err <- ((do _ <- StateT importPapillon-                                                                 return ()) >> return False) `catchError` const (return True)-                                                     unless err (gets position >>= (throwError . mkParseError ('!' : "_:importPapillon") "not match: " "" ddd351_240 ["importPapillon"]))-                                                  put ddd351_240-                                                  ddd354_241 <- get-                                                  do err <- ((do _ <- StateT pap-                                                                 return ()) >> return False) `catchError` const (return True)-                                                     unless err (gets position >>= (throwError . mkParseError ('!' : "_:pap") "not match: " "" ddd354_241 ["pap"]))-                                                  put ddd354_241-                                                  c <- StateT char-                                                  pip <- StateT preImpPap-                                                  return (cons c pip),-                                               return emp]-                prePeg15_82 = foldl1 mplus [do ddd361_242 <- get-                                               do err <- ((do _ <- StateT pap-                                                              return ()) >> return False) `catchError` const (return True)-                                                  unless err (gets position >>= (throwError . mkParseError ('!' : "_:pap") "not match: " "" ddd361_242 ["pap"]))-                                               put ddd361_242-                                               c <- StateT char-                                               pp <- StateT prePeg-                                               return (cons c pp),-                                            return emp]-                afterPeg16_83 = foldl1 mplus [do c <- StateT char-                                                 atp <- StateT afterPeg-                                                 return (cons c atp),-                                              return emp]-                importPapillon17_84 = foldl1 mplus [do d373_243 <- get-                                                       xx372_244 <- StateT varToken-                                                       case xx372_244 of-                                                           "import" -> return ()-                                                           _ -> gets position >>= (throwError . mkParseError "\"import\"" "not match pattern: " "" d373_243 ["varToken"])-                                                       let "import" = xx372_244-                                                       return ()-                                                       d375_245 <- get-                                                       xx374_246 <- StateT typToken-                                                       case xx374_246 of-                                                           "Text" -> return ()-                                                           _ -> gets position >>= (throwError . mkParseError "\"Text\"" "not match pattern: " "" d375_245 ["typToken"])-                                                       let "Text" = xx374_246-                                                       return ()-                                                       d377_247 <- get-                                                       xx376_248 <- StateT char-                                                       case xx376_248 of-                                                           '.' -> return ()-                                                           _ -> gets position >>= (throwError . mkParseError "'.'" "not match pattern: " "" d377_247 ["char"])-                                                       let '.' = xx376_248-                                                       return ()-                                                       _ <- StateT spaces-                                                       return ()-                                                       d381_249 <- get-                                                       xx380_250 <- StateT typToken-                                                       case xx380_250 of-                                                           "Papillon" -> return ()-                                                           _ -> gets position >>= (throwError . mkParseError "\"Papillon\"" "not match pattern: " "" d381_249 ["typToken"])-                                                       let "Papillon" = xx380_250-                                                       return ()-                                                       ddd382_251 <- get-                                                       do err <- ((do d384_252 <- get-                                                                      xx383_253 <- StateT char-                                                                      case xx383_253 of-                                                                          '.' -> return ()-                                                                          _ -> gets position >>= (throwError . mkParseError "'.'" "not match pattern: " "" d384_252 ["char"])-                                                                      let '.' = xx383_253-                                                                      return ()) >> return False) `catchError` const (return True)-                                                          unless err (gets position >>= (throwError . mkParseError ('!' : "'.':") "not match: " "" ddd382_251 ["char"]))-                                                       put ddd382_251-                                                       return ()]-                varToken18_85 = foldl1 mplus [do v <- StateT variable-                                                 _ <- StateT spaces-                                                 return ()-                                                 return v]-                typToken19_86 = foldl1 mplus [do t <- StateT typ-                                                 _ <- StateT spaces-                                                 return ()-                                                 return t]-                pap20_87 = foldl1 mplus [do d394_254 <- get-                                            xx393_255 <- StateT char-                                            case xx393_255 of-                                                '\n' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d394_254 ["char"])-                                            let '\n' = xx393_255-                                            return ()-                                            d396_256 <- get-                                            xx395_257 <- StateT char-                                            case xx395_257 of-                                                '[' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d396_256 ["char"])-                                            let '[' = xx395_257-                                            return ()-                                            d398_258 <- get-                                            xx397_259 <- StateT char-                                            case xx397_259 of-                                                'p' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'p'" "not match pattern: " "" d398_258 ["char"])-                                            let 'p' = xx397_259-                                            return ()-                                            d400_260 <- get-                                            xx399_261 <- StateT char-                                            case xx399_261 of-                                                'a' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'a'" "not match pattern: " "" d400_260 ["char"])-                                            let 'a' = xx399_261-                                            return ()-                                            d402_262 <- get-                                            xx401_263 <- StateT char-                                            case xx401_263 of-                                                'p' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'p'" "not match pattern: " "" d402_262 ["char"])-                                            let 'p' = xx401_263-                                            return ()-                                            d404_264 <- get-                                            xx403_265 <- StateT char-                                            case xx403_265 of-                                                'i' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'i'" "not match pattern: " "" d404_264 ["char"])-                                            let 'i' = xx403_265-                                            return ()-                                            d406_266 <- get-                                            xx405_267 <- StateT char-                                            case xx405_267 of-                                                'l' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'l'" "not match pattern: " "" d406_266 ["char"])-                                            let 'l' = xx405_267-                                            return ()-                                            d408_268 <- get-                                            xx407_269 <- StateT char-                                            case xx407_269 of-                                                'l' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'l'" "not match pattern: " "" d408_268 ["char"])-                                            let 'l' = xx407_269-                                            return ()-                                            d410_270 <- get-                                            xx409_271 <- StateT char-                                            case xx409_271 of-                                                'o' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'o'" "not match pattern: " "" d410_270 ["char"])-                                            let 'o' = xx409_271-                                            return ()-                                            d412_272 <- get-                                            xx411_273 <- StateT char-                                            case xx411_273 of-                                                'n' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'n'" "not match pattern: " "" d412_272 ["char"])-                                            let 'n' = xx411_273-                                            return ()-                                            d414_274 <- get-                                            xx413_275 <- StateT char-                                            case xx413_275 of-                                                '|' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'|'" "not match pattern: " "" d414_274 ["char"])-                                            let '|' = xx413_275-                                            return ()-                                            d416_276 <- get-                                            xx415_277 <- StateT char-                                            case xx415_277 of-                                                '\n' -> return ()-                                                _ -> gets position >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d416_276 ["char"])-                                            let '\n' = xx415_277-                                            return ()-                                            return ()]-                peg21_88 = foldl1 mplus [do _ <- StateT spaces-                                            return ()-                                            s <- StateT sourceType-                                            p <- StateT peg_-                                            return (mkTTPeg s p),-                                         do p <- StateT peg_-                                            return (mkTTPeg tString p)]-                sourceType22_89 = foldl1 mplus [do d426_278 <- get-                                                   xx425_279 <- StateT varToken-                                                   case xx425_279 of-                                                       "source" -> return ()-                                                       _ -> gets position >>= (throwError . mkParseError "\"source\"" "not match pattern: " "" d426_278 ["varToken"])-                                                   let "source" = xx425_279-                                                   return ()-                                                   d428_280 <- get-                                                   xx427_281 <- StateT char-                                                   case xx427_281 of-                                                       ':' -> return ()-                                                       _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d428_280 ["char"])-                                                   let ':' = xx427_281-                                                   return ()-                                                   _ <- StateT spaces-                                                   return ()-                                                   v <- StateT typToken-                                                   return v]-                peg_23_90 = foldl1 mplus [do _ <- StateT spaces-                                             return ()-                                             d <- StateT definition-                                             p <- StateT peg_-                                             return (cons d p),-                                          return emp]-                definition24_91 = foldl1 mplus [do v <- StateT variable-                                                   _ <- StateT spaces-                                                   return ()-                                                   d444_282 <- get-                                                   xx443_283 <- StateT char-                                                   case xx443_283 of-                                                       ':' -> return ()-                                                       _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d444_282 ["char"])-                                                   let ':' = xx443_283-                                                   return ()-                                                   d446_284 <- get-                                                   xx445_285 <- StateT char-                                                   case xx445_285 of-                                                       ':' -> return ()-                                                       _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d446_284 ["char"])-                                                   let ':' = xx445_285-                                                   return ()-                                                   _ <- StateT spaces-                                                   return ()-                                                   t <- StateT hsTypeArr-                                                   _ <- StateT spaces-                                                   return ()-                                                   d454_286 <- get-                                                   xx453_287 <- StateT char-                                                   case xx453_287 of-                                                       '=' -> return ()-                                                       _ -> gets position >>= (throwError . mkParseError "'='" "not match pattern: " "" d454_286 ["char"])-                                                   let '=' = xx453_287-                                                   return ()-                                                   _ <- StateT spaces-                                                   return ()-                                                   sel <- StateT selection-                                                   _ <- StateT spaces-                                                   return ()-                                                   d462_288 <- get-                                                   xx461_289 <- StateT char-                                                   case xx461_289 of-                                                       ';' -> return ()-                                                       _ -> gets position >>= (throwError . mkParseError "';'" "not match pattern: " "" d462_288 ["char"])-                                                   let ';' = xx461_289-                                                   return ()-                                                   return (mkDef v t sel)]-                selection25_92 = foldl1 mplus [do ex <- StateT expressionHs-                                                  _ <- StateT spaces-                                                  return ()-                                                  d468_290 <- get-                                                  xx467_291 <- StateT char-                                                  case xx467_291 of-                                                      '/' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'/'" "not match pattern: " "" d468_290 ["char"])-                                                  let '/' = xx467_291-                                                  return ()-                                                  _ <- StateT spaces-                                                  return ()-                                                  sel <- StateT selection-                                                  return (cons ex sel),-                                               do ex <- StateT expressionHs-                                                  return (cons ex emp)]-                expressionHs26_93 = foldl1 mplus [do e <- StateT expression-                                                     _ <- StateT spaces-                                                     return ()-                                                     d480_292 <- get-                                                     xx479_293 <- StateT char-                                                     case xx479_293 of-                                                         '{' -> return ()-                                                         _ -> gets position >>= (throwError . mkParseError "'{'" "not match pattern: " "" d480_292 ["char"])-                                                     let '{' = xx479_293-                                                     return ()-                                                     _ <- StateT spaces-                                                     return ()-                                                     h <- StateT hsExpLam-                                                     _ <- StateT spaces-                                                     return ()-                                                     d488_294 <- get-                                                     xx487_295 <- StateT char-                                                     case xx487_295 of-                                                         '}' -> return ()-                                                         _ -> gets position >>= (throwError . mkParseError "'}'" "not match pattern: " "" d488_294 ["char"])-                                                     let '}' = xx487_295-                                                     return ()-                                                     return (mkExpressionHs e h)]-                expression27_94 = foldl1 mplus [do l <- StateT nameLeaf_-                                                   _ <- StateT spaces-                                                   return ()-                                                   e <- StateT expression-                                                   return (cons l e),-                                                return emp]-                nameLeaf_28_95 = foldl1 mplus [do d496_296 <- get-                                                  xx495_297 <- StateT char-                                                  case xx495_297 of-                                                      '!' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'!'" "not match pattern: " "" d496_296 ["char"])-                                                  let '!' = xx495_297-                                                  return ()-                                                  nl <- StateT nameLeafNoCom-                                                  _ <- StateT spaces-                                                  return ()-                                                  com <- optional3_298 (StateT comForErr)-                                                  return (NotAfter nl $ maybe "" id com),-                                               do d504_299 <- get-                                                  xx503_300 <- StateT char-                                                  let c = xx503_300-                                                  unless (isAmp c) (gets position >>= (throwError . mkParseError "isAmp c" "not match: " "" d504_299 ["char"]))-                                                  nl <- StateT nameLeaf-                                                  return (After nl),-                                               do nl <- StateT nameLeaf-                                                  return (Here nl)]-                nameLeaf29_96 = foldl1 mplus [do n <- StateT pat1-                                                 _ <- StateT spaces-                                                 return ()-                                                 com <- optional3_298 (StateT comForErr)-                                                 d516_301 <- get-                                                 xx515_302 <- StateT char-                                                 case xx515_302 of-                                                     ':' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d516_301 ["char"])-                                                 let ':' = xx515_302-                                                 return ()-                                                 (rf, p) <- StateT leaf-                                                 return (NameLeaf (n, maybe "" id com) rf p),-                                              do n <- StateT pat1-                                                 _ <- StateT spaces-                                                 return ()-                                                 com <- optional3_298 (StateT comForErr)-                                                 return (NameLeaf (n,-                                                                   maybe "" id com) FromToken Nothing)]-                nameLeafNoCom30_97 = foldl1 mplus [do n <- StateT pat1-                                                      _ <- StateT spaces-                                                      return ()-                                                      com <- optional3_298 (StateT comForErr)-                                                      d532_303 <- get-                                                      xx531_304 <- StateT char-                                                      case xx531_304 of-                                                          ':' -> return ()-                                                          _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d532_303 ["char"])-                                                      let ':' = xx531_304-                                                      return ()-                                                      (rf, p) <- StateT leaf-                                                      return (NameLeaf (n, maybe "" id com) rf p),-                                                   do n <- StateT pat1-                                                      _ <- StateT spaces-                                                      return ()-                                                      return (NameLeaf (n, "") FromToken Nothing)]-                comForErr31_98 = foldl1 mplus [do d540_305 <- get-                                                  xx539_306 <- StateT char-                                                  case xx539_306 of-                                                      '{' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'{'" "not match pattern: " "" d540_305 ["char"])-                                                  let '{' = xx539_306-                                                  return ()-                                                  d542_307 <- get-                                                  xx541_308 <- StateT char-                                                  case xx541_308 of-                                                      '-' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d542_307 ["char"])-                                                  let '-' = xx541_308-                                                  return ()-                                                  d544_309 <- get-                                                  xx543_310 <- StateT char-                                                  case xx543_310 of-                                                      '#' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d544_309 ["char"])-                                                  let '#' = xx543_310-                                                  return ()-                                                  _ <- StateT spaces-                                                  return ()-                                                  d548_311 <- get-                                                  xx547_312 <- StateT char-                                                  case xx547_312 of-                                                      '"' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d548_311 ["char"])-                                                  let '"' = xx547_312-                                                  return ()-                                                  s <- StateT stringLit-                                                  d552_313 <- get-                                                  xx551_314 <- StateT char-                                                  case xx551_314 of-                                                      '"' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d552_313 ["char"])-                                                  let '"' = xx551_314-                                                  return ()-                                                  _ <- StateT spaces-                                                  return ()-                                                  d556_315 <- get-                                                  xx555_316 <- StateT char-                                                  case xx555_316 of-                                                      '#' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d556_315 ["char"])-                                                  let '#' = xx555_316-                                                  return ()-                                                  d558_317 <- get-                                                  xx557_318 <- StateT char-                                                  case xx557_318 of-                                                      '-' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d558_317 ["char"])-                                                  let '-' = xx557_318-                                                  return ()-                                                  d560_319 <- get-                                                  xx559_320 <- StateT char-                                                  case xx559_320 of-                                                      '}' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'}'" "not match pattern: " "" d560_319 ["char"])-                                                  let '}' = xx559_320-                                                  return ()-                                                  _ <- StateT spaces-                                                  return ()-                                                  return s]-                leaf32_99 = foldl1 mplus [do rf <- StateT readFromLs-                                             t <- StateT test-                                             return (rf, Just t),-                                          do rf <- StateT readFromLs-                                             return (rf, Nothing),-                                          do t <- StateT test-                                             return (FromToken, Just t)]-                patOp33_100 = foldl1 mplus [do p <- StateT pat-                                               o <- StateT opConName-                                               po <- StateT patOp-                                               return (uInfixP p o po),-                                            do p <- StateT pat-                                               _ <- StateT spaces-                                               return ()-                                               d582_321 <- get-                                               xx581_322 <- StateT char-                                               let q = xx581_322-                                               unless (isBQ q) (gets position >>= (throwError . mkParseError "isBQ q" "not match: " "" d582_321 ["char"]))-                                               t <- StateT typ-                                               d586_323 <- get-                                               xx585_324 <- StateT char-                                               let q_ = xx585_324-                                               unless (isBQ q_) (gets position >>= (throwError . mkParseError "isBQ q_" "not match: " "" d586_323 ["char"]))-                                               _ <- StateT spaces-                                               return ()-                                               po <- StateT patOp-                                               return (uInfixP p (mkName t) po),-                                            do p <- StateT pat-                                               return p]-                pat34_101 = foldl1 mplus [do t <- StateT typ-                                             _ <- StateT spaces-                                             return ()-                                             ps <- StateT pats-                                             return (conToPatQ t ps),-                                          do d600_325 <- get-                                             xx599_326 <- StateT char-                                             case xx599_326 of-                                                 '(' -> return ()-                                                 _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d600_325 ["char"])-                                             let '(' = xx599_326-                                             return ()-                                             o <- StateT opConName-                                             d604_327 <- get-                                             xx603_328 <- StateT char-                                             case xx603_328 of-                                                 ')' -> return ()-                                                 _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d604_327 ["char"])-                                             let ')' = xx603_328-                                             return ()-                                             _ <- StateT spaces-                                             return ()-                                             ps <- StateT pats-                                             return (conP o ps),-                                          do p <- StateT pat1-                                             return p]-                pat135_102 = foldl1 mplus [do t <- StateT typ-                                              return (conToPatQ t emp),-                                           do d614_329 <- get-                                              xx613_330 <- StateT variable-                                              case xx613_330 of-                                                  "_" -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "\"_\"" "not match pattern: " "" d614_329 ["variable"])-                                              let "_" = xx613_330-                                              return ()-                                              return wildP,-                                           do n <- StateT variable-                                              return (strToPatQ n),-                                           do i <- StateT integer-                                              return (litP (integerL i)),-                                           do d620_331 <- get-                                              xx619_332 <- StateT char-                                              case xx619_332 of-                                                  '-' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d620_331 ["char"])-                                              let '-' = xx619_332-                                              return ()-                                              _ <- StateT spaces-                                              return ()-                                              i <- StateT integer-                                              return (litP (integerL $ negate i)),-                                           do d626_333 <- get-                                              xx625_334 <- StateT char-                                              case xx625_334 of-                                                  '\'' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d626_333 ["char"])-                                              let '\'' = xx625_334-                                              return ()-                                              c <- StateT charLit-                                              d630_335 <- get-                                              xx629_336 <- StateT char-                                              case xx629_336 of-                                                  '\'' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d630_335 ["char"])-                                              let '\'' = xx629_336-                                              return ()-                                              return (charP c),-                                           do d632_337 <- get-                                              xx631_338 <- StateT char-                                              case xx631_338 of-                                                  '"' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d632_337 ["char"])-                                              let '"' = xx631_338-                                              return ()-                                              s <- StateT stringLit-                                              d636_339 <- get-                                              xx635_340 <- StateT char-                                              case xx635_340 of-                                                  '"' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d636_339 ["char"])-                                              let '"' = xx635_340-                                              return ()-                                              return (stringP s),-                                           do d638_341 <- get-                                              xx637_342 <- StateT char-                                              case xx637_342 of-                                                  '(' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d638_341 ["char"])-                                              let '(' = xx637_342-                                              return ()-                                              p <- StateT patList-                                              d642_343 <- get-                                              xx641_344 <- StateT char-                                              case xx641_344 of-                                                  ')' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d642_343 ["char"])-                                              let ')' = xx641_344-                                              return ()-                                              return (tupP p),-                                           do d644_345 <- get-                                              xx643_346 <- StateT char-                                              case xx643_346 of-                                                  '[' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d644_345 ["char"])-                                              let '[' = xx643_346-                                              return ()-                                              p <- StateT patList-                                              d648_347 <- get-                                              xx647_348 <- StateT char-                                              case xx647_348 of-                                                  ']' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d648_347 ["char"])-                                              let ']' = xx647_348-                                              return ()-                                              return (listP p)]-                patList36_103 = foldl1 mplus [do p <- StateT patOp-                                                 _ <- StateT spaces-                                                 return ()-                                                 d654_349 <- get-                                                 xx653_350 <- StateT char-                                                 case xx653_350 of-                                                     ',' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "','" "not match pattern: " "" d654_349 ["char"])-                                                 let ',' = xx653_350-                                                 return ()-                                                 _ <- StateT spaces-                                                 return ()-                                                 ps <- StateT patList-                                                 return (p : ps),-                                              do p <- StateT patOp-                                                 return [p],-                                              return []]-                opConName37_104 = foldl1 mplus [do d662_351 <- get-                                                   xx661_352 <- StateT char-                                                   case xx661_352 of-                                                       ':' -> return ()-                                                       _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d662_351 ["char"])-                                                   let ':' = xx661_352-                                                   return ()-                                                   ot <- StateT opTail-                                                   return (mkName $ colon : ot)]-                charLit38_105 = foldl1 mplus [do d666_353 <- get-                                                 xx665_354 <- StateT char-                                                 let c = xx665_354-                                                 unless (isAlphaNumOt c) (gets position >>= (throwError . mkParseError "isAlphaNumOt c" "not match: " "" d666_353 ["char"]))-                                                 return c,-                                              do d668_355 <- get-                                                 xx667_356 <- StateT char-                                                 case xx667_356 of-                                                     '\\' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d668_355 ["char"])-                                                 let '\\' = xx667_356-                                                 return ()-                                                 c <- StateT escapeC-                                                 return c]-                stringLit39_106 = foldl1 mplus [do d672_357 <- get-                                                   xx671_358 <- StateT char-                                                   let c = xx671_358-                                                   unless (isStrLitC c) (gets position >>= (throwError . mkParseError "isStrLitC c" "not match: " "" d672_357 ["char"]))-                                                   s <- StateT stringLit-                                                   return (cons c s),-                                                do d676_359 <- get-                                                   xx675_360 <- StateT char-                                                   case xx675_360 of-                                                       '\\' -> return ()-                                                       _ -> gets position >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d676_359 ["char"])-                                                   let '\\' = xx675_360-                                                   return ()-                                                   c <- StateT escapeC-                                                   s <- StateT stringLit-                                                   return (c : s),-                                                return emp]-                escapeC40_107 = foldl1 mplus [do d682_361 <- get-                                                 xx681_362 <- StateT char-                                                 case xx681_362 of-                                                     '"' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d682_361 ["char"])-                                                 let '"' = xx681_362-                                                 return ()-                                                 return '"',-                                              do d684_363 <- get-                                                 xx683_364 <- StateT char-                                                 case xx683_364 of-                                                     '\'' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d684_363 ["char"])-                                                 let '\'' = xx683_364-                                                 return ()-                                                 return '\'',-                                              do d686_365 <- get-                                                 xx685_366 <- StateT char-                                                 case xx685_366 of-                                                     '\\' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d686_365 ["char"])-                                                 let '\\' = xx685_366-                                                 return ()-                                                 return '\\',-                                              do d688_367 <- get-                                                 xx687_368 <- StateT char-                                                 case xx687_368 of-                                                     'n' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'n'" "not match pattern: " "" d688_367 ["char"])-                                                 let 'n' = xx687_368-                                                 return ()-                                                 return '\n',-                                              do d690_369 <- get-                                                 xx689_370 <- StateT char-                                                 case xx689_370 of-                                                     't' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'t'" "not match pattern: " "" d690_369 ["char"])-                                                 let 't' = xx689_370-                                                 return ()-                                                 return tab]-                pats41_108 = foldl1 mplus [do p <- StateT pat-                                              _ <- StateT spaces-                                              return ()-                                              ps <- StateT pats-                                              return (cons p ps),-                                           return emp]-                readFromLs42_109 = foldl1 mplus [do rf <- StateT readFrom-                                                    d700_371 <- get-                                                    xx699_372 <- StateT char-                                                    case xx699_372 of-                                                        '*' -> return ()-                                                        _ -> gets position >>= (throwError . mkParseError "'*'" "not match pattern: " "" d700_371 ["char"])-                                                    let '*' = xx699_372-                                                    return ()-                                                    return (FromList rf),-                                                 do rf <- StateT readFrom-                                                    d704_373 <- get-                                                    xx703_374 <- StateT char-                                                    case xx703_374 of-                                                        '+' -> return ()-                                                        _ -> gets position >>= (throwError . mkParseError "'+'" "not match pattern: " "" d704_373 ["char"])-                                                    let '+' = xx703_374-                                                    return ()-                                                    return (FromList1 rf),-                                                 do rf <- StateT readFrom-                                                    d708_375 <- get-                                                    xx707_376 <- StateT char-                                                    case xx707_376 of-                                                        '?' -> return ()-                                                        _ -> gets position >>= (throwError . mkParseError "'?'" "not match pattern: " "" d708_375 ["char"])-                                                    let '?' = xx707_376-                                                    return ()-                                                    return (FromOptional rf),-                                                 do rf <- StateT readFrom-                                                    return rf]-                readFrom43_110 = foldl1 mplus [do v <- StateT variable-                                                  return (FromVariable v),-                                               do d714_377 <- get-                                                  xx713_378 <- StateT char-                                                  case xx713_378 of-                                                      '(' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d714_377 ["char"])-                                                  let '(' = xx713_378-                                                  return ()-                                                  s <- StateT selection-                                                  d718_379 <- get-                                                  xx717_380 <- StateT char-                                                  case xx717_380 of-                                                      ')' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d718_379 ["char"])-                                                  let ')' = xx717_380-                                                  return ()-                                                  return (FromSelection s)]-                test44_111 = foldl1 mplus [do d720_381 <- get-                                              xx719_382 <- StateT char-                                              case xx719_382 of-                                                  '[' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d720_381 ["char"])-                                              let '[' = xx719_382-                                              return ()-                                              h <- StateT hsExpLam-                                              _ <- StateT spaces-                                              return ()-                                              com <- optional3_298 (StateT comForErr)-                                              d728_383 <- get-                                              xx727_384 <- StateT char-                                              case xx727_384 of-                                                  ']' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d728_383 ["char"])-                                              let ']' = xx727_384-                                              return ()-                                              return (h, maybe "" id com)]-                hsExpLam45_112 = foldl1 mplus [do d730_385 <- get-                                                  xx729_386 <- StateT char-                                                  case xx729_386 of-                                                      '\\' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d730_385 ["char"])-                                                  let '\\' = xx729_386-                                                  return ()-                                                  _ <- StateT spaces-                                                  return ()-                                                  ps <- StateT pats-                                                  _ <- StateT spaces-                                                  return ()-                                                  d738_387 <- get-                                                  xx737_388 <- StateT char-                                                  case xx737_388 of-                                                      '-' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d738_387 ["char"])-                                                  let '-' = xx737_388-                                                  return ()-                                                  d740_389 <- get-                                                  xx739_390 <- StateT char-                                                  let c = xx739_390-                                                  unless (isGt c) (gets position >>= (throwError . mkParseError "isGt c" "not match: " "" d740_389 ["char"]))-                                                  _ <- StateT spaces-                                                  return ()-                                                  e <- StateT hsExpTyp-                                                  return (lamE ps e),-                                               do e <- StateT hsExpTyp-                                                  return e]-                hsExpTyp46_113 = foldl1 mplus [do eo <- StateT hsExpOp-                                                  d750_391 <- get-                                                  xx749_392 <- StateT char-                                                  case xx749_392 of-                                                      ':' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d750_391 ["char"])-                                                  let ':' = xx749_392-                                                  return ()-                                                  d752_393 <- get-                                                  xx751_394 <- StateT char-                                                  case xx751_394 of-                                                      ':' -> return ()-                                                      _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d752_393 ["char"])-                                                  let ':' = xx751_394-                                                  return ()-                                                  _ <- StateT spaces-                                                  return ()-                                                  t <- StateT hsTypeArr-                                                  return (sigE eo t),-                                               do eo <- StateT hsExpOp-                                                  return eo]-                hsExpOp47_114 = foldl1 mplus [do l <- StateT hsExp-                                                 _ <- StateT spaces-                                                 return ()-                                                 o <- StateT hsOp-                                                 _ <- StateT spaces-                                                 return ()-                                                 r <- StateT hsExpOp-                                                 return (uInfixE (getEx l) o r),-                                              do e <- StateT hsExp-                                                 return (getEx e)]-                hsOp48_115 = foldl1 mplus [do d772_395 <- get-                                              xx771_396 <- StateT char-                                              let c = xx771_396-                                              unless (isOpHeadChar c) (gets position >>= (throwError . mkParseError "isOpHeadChar c" "not match: " "" d772_395 ["char"]))-                                              o <- StateT opTail-                                              return (varE (mkName (cons c o))),-                                           do d776_397 <- get-                                              xx775_398 <- StateT char-                                              case xx775_398 of-                                                  ':' -> return ()-                                                  _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d776_397 ["char"])-                                              let ':' = xx775_398-                                              return ()-                                              ddd777_399 <- get-                                              do err <- ((do d779_400 <- get-                                                             xx778_401 <- StateT char-                                                             case xx778_401 of-                                                                 ':' -> return ()-                                                                 _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d779_400 ["char"])-                                                             let ':' = xx778_401-                                                             return ()) >> return False) `catchError` const (return True)-                                                 unless err (gets position >>= (throwError . mkParseError ('!' : "':':") "not match: " "" ddd777_399 ["char"]))-                                              put ddd777_399-                                              o <- StateT opTail-                                              return (conE (mkName (':' : o))),-                                           do d783_402 <- get-                                              xx782_403 <- StateT char-                                              let c = xx782_403-                                              unless (isBQ c) (gets position >>= (throwError . mkParseError "isBQ c" "not match: " "" d783_402 ["char"]))-                                              v <- StateT variable-                                              d787_404 <- get-                                              xx786_405 <- StateT char-                                              let c_ = xx786_405-                                              unless (isBQ c_) (gets position >>= (throwError . mkParseError "isBQ c_" "not match: " "" d787_404 ["char"]))-                                              return (varE (mkName v)),-                                           do d789_406 <- get-                                              xx788_407 <- StateT char-                                              let c = xx788_407-                                              unless (isBQ c) (gets position >>= (throwError . mkParseError "isBQ c" "not match: " "" d789_406 ["char"]))-                                              t <- StateT typ-                                              d793_408 <- get-                                              xx792_409 <- StateT char-                                              let c_ = xx792_409-                                              unless (isBQ c_) (gets position >>= (throwError . mkParseError "isBQ c_" "not match: " "" d793_408 ["char"]))-                                              return (conE (mkName t))]-                opTail49_116 = foldl1 mplus [do d795_410 <- get-                                                xx794_411 <- StateT char-                                                let c = xx794_411-                                                unless (isOpTailChar c) (gets position >>= (throwError . mkParseError "isOpTailChar c" "not match: " "" d795_410 ["char"]))-                                                s <- StateT opTail-                                                return (cons c s),-                                             return emp]-                hsExp50_117 = foldl1 mplus [do e <- StateT hsExp1-                                               _ <- StateT spaces-                                               return ()-                                               h <- StateT hsExp-                                               return (applyExR e h),-                                            do e <- StateT hsExp1-                                               return (toEx e)]-                hsExp151_118 = foldl1 mplus [do d807_412 <- get-                                                xx806_413 <- StateT char-                                                case xx806_413 of-                                                    '(' -> return ()-                                                    _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d807_412 ["char"])-                                                let '(' = xx806_413-                                                return ()-                                                l <- optional3_298 (foldl1 mplus [do e <- StateT hsExpTyp-                                                                                     return e])-                                                _ <- StateT spaces-                                                return ()-                                                o <- StateT hsOp-                                                _ <- StateT spaces-                                                return ()-                                                r <- optional3_298 (foldl1 mplus [do e <- StateT hsExpTyp-                                                                                     return e])-                                                d823_414 <- get-                                                xx822_415 <- StateT char-                                                case xx822_415 of-                                                    ')' -> return ()-                                                    _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d823_414 ["char"])-                                                let ')' = xx822_415-                                                return ()-                                                return (infixE l o r),-                                             do d825_416 <- get-                                                xx824_417 <- StateT char-                                                case xx824_417 of-                                                    '(' -> return ()-                                                    _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d825_416 ["char"])-                                                let '(' = xx824_417-                                                return ()-                                                et <- StateT hsExpTpl-                                                d829_418 <- get-                                                xx828_419 <- StateT char-                                                case xx828_419 of-                                                    ')' -> return ()-                                                    _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d829_418 ["char"])-                                                let ')' = xx828_419-                                                return ()-                                                return (tupE et),-                                             do d831_420 <- get-                                                xx830_421 <- StateT char-                                                case xx830_421 of-                                                    '[' -> return ()-                                                    _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d831_420 ["char"])-                                                let '[' = xx830_421-                                                return ()-                                                et <- StateT hsExpTpl-                                                d835_422 <- get-                                                xx834_423 <- StateT char-                                                case xx834_423 of-                                                    ']' -> return ()-                                                    _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d835_422 ["char"])-                                                let ']' = xx834_423-                                                return ()-                                                return (listE et),-                                             do v <- StateT variable-                                                return (varE (mkName v)),-                                             do t <- StateT typ-                                                return (conE (mkName t)),-                                             do i <- StateT integer-                                                _ <- StateT spaces-                                                return ()-                                                return (litE (integerL i)),-                                             do d845_424 <- get-                                                xx844_425 <- StateT char-                                                case xx844_425 of-                                                    '\'' -> return ()-                                                    _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d845_424 ["char"])-                                                let '\'' = xx844_425-                                                return ()-                                                c <- StateT charLit-                                                d849_426 <- get-                                                xx848_427 <- StateT char-                                                case xx848_427 of-                                                    '\'' -> return ()-                                                    _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d849_426 ["char"])-                                                let '\'' = xx848_427-                                                return ()-                                                return (litE (charL c)),-                                             do d851_428 <- get-                                                xx850_429 <- StateT char-                                                case xx850_429 of-                                                    '"' -> return ()-                                                    _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d851_428 ["char"])-                                                let '"' = xx850_429-                                                return ()-                                                s <- StateT stringLit-                                                d855_430 <- get-                                                xx854_431 <- StateT char-                                                case xx854_431 of-                                                    '"' -> return ()-                                                    _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d855_430 ["char"])-                                                let '"' = xx854_431-                                                return ()-                                                return (litE (stringL s)),-                                             do d857_432 <- get-                                                xx856_433 <- StateT char-                                                case xx856_433 of-                                                    '-' -> return ()-                                                    _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d857_432 ["char"])-                                                let '-' = xx856_433-                                                return ()-                                                _ <- StateT spaces-                                                return ()-                                                e <- StateT hsExp1-                                                return (appE (varE $ mkName "negate") e)]-                hsExpTpl52_119 = foldl1 mplus [do e <- StateT hsExpLam-                                                  _ <- StateT spaces-                                                  return ()-                                                  d867_434 <- get-                                                  xx866_435 <- StateT char-                                                  let c = xx866_435-                                                  unless (isComma c) (gets position >>= (throwError . mkParseError "isComma c" "not match: " "" d867_434 ["char"]))-                                                  _ <- StateT spaces-                                                  return ()-                                                  et <- StateT hsExpTpl-                                                  return (cons e et),-                                               do e <- StateT hsExpLam-                                                  return (cons e emp),-                                               return emp]-                hsTypeArr53_120 = foldl1 mplus [do l <- StateT hsType-                                                   d877_436 <- get-                                                   xx876_437 <- StateT char-                                                   case xx876_437 of-                                                       '-' -> return ()-                                                       _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d877_436 ["char"])-                                                   let '-' = xx876_437-                                                   return ()-                                                   d879_438 <- get-                                                   xx878_439 <- StateT char-                                                   let c = xx878_439-                                                   unless (isGt c) (gets position >>= (throwError . mkParseError "isGt c" "not match: " "" d879_438 ["char"]))-                                                   _ <- StateT spaces-                                                   return ()-                                                   r <- StateT hsTypeArr-                                                   return (appT (appT arrowT (getTyp l)) r),-                                                do t <- StateT hsType-                                                   return (getTyp t)]-                hsType54_121 = foldl1 mplus [do t <- StateT hsType1-                                                ts <- StateT hsType-                                                return (applyTyp (toTyp t) ts),-                                             do t <- StateT hsType1-                                                return (toTyp t)]-                hsType155_122 = foldl1 mplus [do d893_440 <- get-                                                 xx892_441 <- StateT char-                                                 case xx892_441 of-                                                     '[' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d893_440 ["char"])-                                                 let '[' = xx892_441-                                                 return ()-                                                 d895_442 <- get-                                                 xx894_443 <- StateT char-                                                 case xx894_443 of-                                                     ']' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d895_442 ["char"])-                                                 let ']' = xx894_443-                                                 return ()-                                                 _ <- StateT spaces-                                                 return ()-                                                 return listT,-                                              do d899_444 <- get-                                                 xx898_445 <- StateT char-                                                 case xx898_445 of-                                                     '[' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d899_444 ["char"])-                                                 let '[' = xx898_445-                                                 return ()-                                                 t <- StateT hsTypeArr-                                                 d903_446 <- get-                                                 xx902_447 <- StateT char-                                                 case xx902_447 of-                                                     ']' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d903_446 ["char"])-                                                 let ']' = xx902_447-                                                 return ()-                                                 _ <- StateT spaces-                                                 return ()-                                                 return (appT listT t),-                                              do d907_448 <- get-                                                 xx906_449 <- StateT char-                                                 case xx906_449 of-                                                     '(' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d907_448 ["char"])-                                                 let '(' = xx906_449-                                                 return ()-                                                 _ <- StateT spaces-                                                 return ()-                                                 tt <- StateT hsTypeTpl-                                                 d913_450 <- get-                                                 xx912_451 <- StateT char-                                                 case xx912_451 of-                                                     ')' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d913_450 ["char"])-                                                 let ')' = xx912_451-                                                 return ()-                                                 return (tupT tt),-                                              do t <- StateT typToken-                                                 return (conT (mkName t)),-                                              do d917_452 <- get-                                                 xx916_453 <- StateT char-                                                 case xx916_453 of-                                                     '(' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d917_452 ["char"])-                                                 let '(' = xx916_453-                                                 return ()-                                                 d919_454 <- get-                                                 xx918_455 <- StateT char-                                                 case xx918_455 of-                                                     '-' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d919_454 ["char"])-                                                 let '-' = xx918_455-                                                 return ()-                                                 d921_456 <- get-                                                 xx920_457 <- StateT char-                                                 let c = xx920_457-                                                 unless (isGt c) (gets position >>= (throwError . mkParseError "isGt c" "not match: " "" d921_456 ["char"]))-                                                 d923_458 <- get-                                                 xx922_459 <- StateT char-                                                 case xx922_459 of-                                                     ')' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d923_458 ["char"])-                                                 let ')' = xx922_459-                                                 return ()-                                                 _ <- StateT spaces-                                                 return ()-                                                 return arrowT]-                hsTypeTpl56_123 = foldl1 mplus [do t <- StateT hsTypeArr-                                                   d929_460 <- get-                                                   xx928_461 <- StateT char-                                                   let c = xx928_461-                                                   unless (isComma c) (gets position >>= (throwError . mkParseError "isComma c" "not match: " "" d929_460 ["char"]))-                                                   _ <- StateT spaces-                                                   return ()-                                                   tt <- StateT hsTypeTpl-                                                   return (cons t tt),-                                                do t <- StateT hsTypeArr-                                                   return (cons t emp),-                                                return emp]-                typ57_124 = foldl1 mplus [do u <- StateT upper-                                             t <- StateT tvtail-                                             return (cons u t)]-                variable58_125 = foldl1 mplus [do l <- StateT lower-                                                  t <- StateT tvtail-                                                  return (cons l t)]-                tvtail59_126 = foldl1 mplus [do a <- StateT alpha-                                                t <- StateT tvtail-                                                return (cons a t),-                                             return emp]-                integer60_127 = foldl1 mplus [do dh <- StateT digit-                                                 ds <- list1_462 (foldl1 mplus [do d <- StateT digit-                                                                                   return d])-                                                 return (read (cons dh ds))]-                alpha61_128 = foldl1 mplus [do u <- StateT upper-                                               return u,-                                            do l <- StateT lower-                                               return l,-                                            do d <- StateT digit-                                               return d,-                                            do d961_463 <- get-                                               xx960_464 <- StateT char-                                               case xx960_464 of-                                                   '\'' -> return ()-                                                   _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d961_463 ["char"])-                                               let '\'' = xx960_464-                                               return ()-                                               return '\'']-                upper62_129 = foldl1 mplus [do d963_465 <- get-                                               xx962_466 <- StateT char-                                               let u = xx962_466-                                               unless (isUpper u) (gets position >>= (throwError . mkParseError "isUpper u" "not match: " "" d963_465 ["char"]))-                                               return u]-                lower63_130 = foldl1 mplus [do d965_467 <- get-                                               xx964_468 <- StateT char-                                               let l = xx964_468-                                               unless (isLowerU l) (gets position >>= (throwError . mkParseError "isLowerU l" "not match: " "" d965_467 ["char"]))-                                               return l]-                digit64_131 = foldl1 mplus [do d967_469 <- get-                                               xx966_470 <- StateT char-                                               let d = xx966_470-                                               unless (isDigit d) (gets position >>= (throwError . mkParseError "isDigit d" "not match: " "" d967_469 ["char"]))-                                               return d]-                spaces65_132 = foldl1 mplus [do _ <- StateT space-                                                return ()-                                                _ <- StateT spaces-                                                return ()-                                                return (),-                                             return ()]-                space66_133 = foldl1 mplus [do d973_471 <- get-                                               xx972_472 <- StateT char-                                               let s = xx972_472-                                               unless (isSpace s) (gets position >>= (throwError . mkParseError "isSpace s" "not match: " "" d973_471 ["char"]))-                                               return (),-                                            do d975_473 <- get-                                               xx974_474 <- StateT char-                                               case xx974_474 of-                                                   '-' -> return ()-                                                   _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d975_473 ["char"])-                                               let '-' = xx974_474-                                               return ()-                                               d977_475 <- get-                                               xx976_476 <- StateT char-                                               case xx976_476 of-                                                   '-' -> return ()-                                                   _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d977_475 ["char"])-                                               let '-' = xx976_476-                                               return ()-                                               _ <- StateT notNLString-                                               return ()-                                               _ <- StateT newLine-                                               return ()-                                               return (),-                                            do _ <- StateT comment-                                               return ()-                                               return ()]-                notNLString67_134 = foldl1 mplus [do ddd984_477 <- get-                                                     do err <- ((do _ <- StateT newLine-                                                                    return ()) >> return False) `catchError` const (return True)-                                                        unless err (gets position >>= (throwError . mkParseError ('!' : "_:newLine") "not match: " "" ddd984_477 ["newLine"]))-                                                     put ddd984_477-                                                     c <- StateT char-                                                     s <- StateT notNLString-                                                     return (cons c s),-                                                  return emp]-                newLine68_135 = foldl1 mplus [do d992_478 <- get-                                                 xx991_479 <- StateT char-                                                 case xx991_479 of-                                                     '\n' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d992_478 ["char"])-                                                 let '\n' = xx991_479-                                                 return ()-                                                 return ()]-                comment69_136 = foldl1 mplus [do d994_480 <- get-                                                 xx993_481 <- StateT char-                                                 case xx993_481 of-                                                     '{' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'{'" "not match pattern: " "" d994_480 ["char"])-                                                 let '{' = xx993_481-                                                 return ()-                                                 d996_482 <- get-                                                 xx995_483 <- StateT char-                                                 case xx995_483 of-                                                     '-' -> return ()-                                                     _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d996_482 ["char"])-                                                 let '-' = xx995_483-                                                 return ()-                                                 ddd997_484 <- get-                                                 do err <- ((do d999_485 <- get-                                                                xx998_486 <- StateT char-                                                                case xx998_486 of-                                                                    '#' -> return ()-                                                                    _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d999_485 ["char"])-                                                                let '#' = xx998_486-                                                                return ()) >> return False) `catchError` const (return True)-                                                    unless err (gets position >>= (throwError . mkParseError ('!' : "'#':") "not match: " "" ddd997_484 ["char"]))-                                                 put ddd997_484-                                                 _ <- StateT comments-                                                 return ()-                                                 _ <- StateT comEnd-                                                 return ()-                                                 return ()]-                comments70_137 = foldl1 mplus [do _ <- StateT notComStr-                                                  return ()-                                                  _ <- StateT comment-                                                  return ()-                                                  _ <- StateT comments-                                                  return ()-                                                  return (),-                                               do _ <- StateT notComStr-                                                  return ()-                                                  return ()]-                notComStr71_138 = foldl1 mplus [do ddd1012_487 <- get-                                                   do err <- ((do _ <- StateT comment-                                                                  return ()) >> return False) `catchError` const (return True)-                                                      unless err (gets position >>= (throwError . mkParseError ('!' : "_:comment") "not match: " "" ddd1012_487 ["comment"]))-                                                   put ddd1012_487-                                                   ddd1015_488 <- get-                                                   do err <- ((do _ <- StateT comEnd-                                                                  return ()) >> return False) `catchError` const (return True)-                                                      unless err (gets position >>= (throwError . mkParseError ('!' : "_:comEnd") "not match: " "" ddd1015_488 ["comEnd"]))-                                                   put ddd1015_488-                                                   _ <- StateT char-                                                   return ()-                                                   _ <- StateT notComStr-                                                   return ()-                                                   return (),-                                                return ()]-                comEnd72_139 = foldl1 mplus [do d1023_489 <- get-                                                xx1022_490 <- StateT char-                                                case xx1022_490 of-                                                    '-' -> return ()-                                                    _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d1023_489 ["char"])-                                                let '-' = xx1022_490-                                                return ()-                                                d1025_491 <- get-                                                xx1024_492 <- StateT char-                                                case xx1024_492 of-                                                    '}' -> return ()-                                                    _ -> gets position >>= (throwError . mkParseError "'}'" "not match pattern: " "" d1025_491 ["char"])-                                                let '}' = xx1024_492-                                                return ()-                                                return ()]-                list1_462 :: forall m a . (MonadPlus m, Applicative m) =>-                                          m a -> m ([a])-                list12_493 :: forall m a . (MonadPlus m, Applicative m) =>-                                           m a -> m ([a])-                list1_462 p = list12_493 p `mplus` return []-                list12_493 p = ((:) <$> p) <*> list1_462 p-                optional3_298 :: forall m a . (MonadPlus m, Applicative m) =>-                                              m a -> m (Maybe a)-                optional3_298 p = (Just <$> p) `mplus` return Nothing+	Definition(..),+	Selection(..),+	getSelectionType,+	ExpressionHs(..),+	NameLeaf(..),+	NameLeaf_(..),+	ReadFrom(..),+	parse,+	showNameLeaf,+	nameFromRF,+	ParseError(..),+	mkParseError,+	Derivs(peg, pegFile, char),+	Pos(..),+	ListPos(..),+	pePositionS,+	Source(..),+	SourceList(..),++	PPragma(..),+	ModuleName,+	ExportList,+	Code+) where++import Text.Papillon.Papillon+import Control.Applicative+import "monads-tf" Control.Monad.State+import "monads-tf" Control.Monad.Error++++import Data.Char+import Language.Haskell.TH+import Text.Papillon.SyntaxTree++data Derivs+    = Derivs {pegFile :: (Either (ParseError (Pos String) Derivs)+                                 ((PegFile, Derivs))),+              pragmas :: (Either (ParseError (Pos String) Derivs)+                                 (([PPragma], Derivs))),+              pragma :: (Either (ParseError (Pos String) Derivs)+                                ((PPragma, Derivs))),+              pragmaStr :: (Either (ParseError (Pos String) Derivs)+                                   ((String, Derivs))),+              pragmaItems :: (Either (ParseError (Pos String) Derivs)+                                     (([String], Derivs))),+              pragmaEnd :: (Either (ParseError (Pos String) Derivs)+                                   (((), Derivs))),+              moduleDec :: (Either (ParseError (Pos String) Derivs)+                                   ((Maybe (([String], Maybe String)), Derivs))),+              moduleName :: (Either (ParseError (Pos String) Derivs)+                                    ((ModuleName, Derivs))),+              moduleDecStr :: (Either (ParseError (Pos String) Derivs)+                                      ((String, Derivs))),+              whr :: (Either (ParseError (Pos String) Derivs) (((), Derivs))),+              preImpPap :: (Either (ParseError (Pos String) Derivs)+                                   ((String, Derivs))),+              prePeg :: (Either (ParseError (Pos String) Derivs)+                                ((String, Derivs))),+              afterPeg :: (Either (ParseError (Pos String) Derivs)+                                  ((String, Derivs))),+              importPapillon :: (Either (ParseError (Pos String) Derivs)+                                        (((), Derivs))),+              varToken :: (Either (ParseError (Pos String) Derivs)+                                  ((String, Derivs))),+              typToken :: (Either (ParseError (Pos String) Derivs)+                                  ((String, Derivs))),+              pap :: (Either (ParseError (Pos String) Derivs) (((), Derivs))),+              peg :: (Either (ParseError (Pos String) Derivs) ((TTPeg, Derivs))),+              sourceType :: (Either (ParseError (Pos String) Derivs)+                                    ((String, Derivs))),+              peg_ :: (Either (ParseError (Pos String) Derivs) ((Peg, Derivs))),+              definition :: (Either (ParseError (Pos String) Derivs)+                                    ((Definition, Derivs))),+              selection :: (Either (ParseError (Pos String) Derivs)+                                   ((Selection, Derivs))),+              normalSelection :: (Either (ParseError (Pos String) Derivs)+                                         ((Selection, Derivs))),+              plainSelection :: (Either (ParseError (Pos String) Derivs)+                                        ((Selection, Derivs))),+              expressionHs :: (Either (ParseError (Pos String) Derivs)+                                      ((ExpressionHs, Derivs))),+              expressionHsSugar :: (Either (ParseError (Pos String) Derivs)+                                           ((ExpressionHs, Derivs))),+              plainExpressionHs :: (Either (ParseError (Pos String) Derivs)+                                           ((ExpressionHs, Derivs))),+              plainReadFromLs :: (Either (ParseError (Pos String) Derivs)+                                         ((ReadFrom, Derivs))),+              expression :: (Either (ParseError (Pos String) Derivs)+                                    ((Expression, Derivs))),+              nameLeaf_ :: (Either (ParseError (Pos String) Derivs)+                                   ((NameLeaf_, Derivs))),+              nameLeaf :: (Either (ParseError (Pos String) Derivs)+                                  ((NameLeaf, Derivs))),+              nameLeafNoCom :: (Either (ParseError (Pos String) Derivs)+                                       ((NameLeaf, Derivs))),+              comForErr :: (Either (ParseError (Pos String) Derivs)+                                   ((String, Derivs))),+              leaf :: (Either (ParseError (Pos String) Derivs)+                              (((ReadFrom, Maybe ((ExpQ, String))), Derivs))),+              patOp :: (Either (ParseError (Pos String) Derivs)+                               ((PatQ, Derivs))),+              pat :: (Either (ParseError (Pos String) Derivs) ((PatQ, Derivs))),+              pat1 :: (Either (ParseError (Pos String) Derivs) ((PatQ, Derivs))),+              patList :: (Either (ParseError (Pos String) Derivs)+                                 (([PatQ], Derivs))),+              opConName :: (Either (ParseError (Pos String) Derivs)+                                   ((Name, Derivs))),+              charLit :: (Either (ParseError (Pos String) Derivs)+                                 ((Char, Derivs))),+              stringLit :: (Either (ParseError (Pos String) Derivs)+                                   ((String, Derivs))),+              escapeC :: (Either (ParseError (Pos String) Derivs)+                                 ((Char, Derivs))),+              pats :: (Either (ParseError (Pos String) Derivs)+                              ((PatQs, Derivs))),+              readFromLs :: (Either (ParseError (Pos String) Derivs)+                                    ((ReadFrom, Derivs))),+              readFrom :: (Either (ParseError (Pos String) Derivs)+                                  ((ReadFrom, Derivs))),+              selectCharsLs :: (Either (ParseError (Pos String) Derivs)+                                       ((ReadFrom, Derivs))),+              selectChars :: (Either (ParseError (Pos String) Derivs)+                                     ((ReadFrom, Derivs))),+              test :: (Either (ParseError (Pos String) Derivs)+                              (((ExR, String), Derivs))),+              hsExpLam :: (Either (ParseError (Pos String) Derivs)+                                  ((ExR, Derivs))),+              hsExpTyp :: (Either (ParseError (Pos String) Derivs)+                                  ((ExR, Derivs))),+              hsExpOp :: (Either (ParseError (Pos String) Derivs)+                                 ((ExR, Derivs))),+              hsOp :: (Either (ParseError (Pos String) Derivs) ((ExR, Derivs))),+              opTail :: (Either (ParseError (Pos String) Derivs)+                                ((String, Derivs))),+              hsExp :: (Either (ParseError (Pos String) Derivs) ((Ex, Derivs))),+              hsExp1 :: (Either (ParseError (Pos String) Derivs)+                                ((ExR, Derivs))),+              hsExpTpl :: (Either (ParseError (Pos String) Derivs)+                                  ((ExRL, Derivs))),+              hsTypeArr :: (Either (ParseError (Pos String) Derivs)+                                   ((TypeQ, Derivs))),+              hsType :: (Either (ParseError (Pos String) Derivs)+                                ((Typ, Derivs))),+              hsType1 :: (Either (ParseError (Pos String) Derivs)+                                 ((TypeQ, Derivs))),+              hsTypeTpl :: (Either (ParseError (Pos String) Derivs)+                                   ((TypeQL, Derivs))),+              typ :: (Either (ParseError (Pos String) Derivs)+                             ((String, Derivs))),+              variable :: (Either (ParseError (Pos String) Derivs)+                                  ((String, Derivs))),+              tvtail :: (Either (ParseError (Pos String) Derivs)+                                ((String, Derivs))),+              integer :: (Either (ParseError (Pos String) Derivs)+                                 ((Integer, Derivs))),+              alpha :: (Either (ParseError (Pos String) Derivs)+                               ((Char, Derivs))),+              upper :: (Either (ParseError (Pos String) Derivs)+                               ((Char, Derivs))),+              lower :: (Either (ParseError (Pos String) Derivs)+                               ((Char, Derivs))),+              digit :: (Either (ParseError (Pos String) Derivs)+                               ((Char, Derivs))),+              spaces :: (Either (ParseError (Pos String) Derivs) (((), Derivs))),+              space :: (Either (ParseError (Pos String) Derivs) (((), Derivs))),+              notNLString :: (Either (ParseError (Pos String) Derivs)+                                     ((String, Derivs))),+              newLine :: (Either (ParseError (Pos String) Derivs)+                                 (((), Derivs))),+              comment :: (Either (ParseError (Pos String) Derivs)+                                 (((), Derivs))),+              comments :: (Either (ParseError (Pos String) Derivs)+                                  (((), Derivs))),+              notComStr :: (Either (ParseError (Pos String) Derivs)+                                   (((), Derivs))),+              comEnd :: (Either (ParseError (Pos String) Derivs) (((), Derivs))),+              char :: (Either (ParseError (Pos String) Derivs)+                              ((Token String, Derivs))),+              position :: (Pos String)}+parse :: String -> Derivs+parse = parse0_0 initialPos+          where parse0_0 pos s = d+                             where d = Derivs pegFile80_1 pragmas81_2 pragma82_3 pragmaStr83_4 pragmaItems84_5 pragmaEnd85_6 moduleDec86_7 moduleName87_8 moduleDecStr88_9 whr89_10 preImpPap90_11 prePeg91_12 afterPeg92_13 importPapillon93_14 varToken94_15 typToken95_16 pap96_17 peg97_18 sourceType98_19 peg_99_20 definition100_21 selection101_22 normalSelection102_23 plainSelection103_24 expressionHs104_25 expressionHsSugar105_26 plainExpressionHs106_27 plainReadFromLs107_28 expression108_29 nameLeaf_109_30 nameLeaf110_31 nameLeafNoCom111_32 comForErr112_33 leaf113_34 patOp114_35 pat115_36 pat1116_37 patList117_38 opConName118_39 charLit119_40 stringLit120_41 escapeC121_42 pats122_43 readFromLs123_44 readFrom124_45 selectCharsLs125_46 selectChars126_47 test127_48 hsExpLam128_49 hsExpTyp129_50 hsExpOp130_51 hsOp131_52 opTail132_53 hsExp133_54 hsExp1134_55 hsExpTpl135_56 hsTypeArr136_57 hsType137_58 hsType1138_59 hsTypeTpl139_60 typ140_61 variable141_62 tvtail142_63 integer143_64 alpha144_65 upper145_66 lower146_67 digit147_68 spaces148_69 space149_70 notNLString150_71 newLine151_72 comment152_73 comments153_74 notComStr154_75 comEnd155_76 chars156_77 pos+                                   pegFile80_1 = runStateT pegFile4_78 d+                                   pragmas81_2 = runStateT pragmas5_79 d+                                   pragma82_3 = runStateT pragma6_80 d+                                   pragmaStr83_4 = runStateT pragmaStr7_81 d+                                   pragmaItems84_5 = runStateT pragmaItems8_82 d+                                   pragmaEnd85_6 = runStateT pragmaEnd9_83 d+                                   moduleDec86_7 = runStateT moduleDec10_84 d+                                   moduleName87_8 = runStateT moduleName11_85 d+                                   moduleDecStr88_9 = runStateT moduleDecStr12_86 d+                                   whr89_10 = runStateT whr13_87 d+                                   preImpPap90_11 = runStateT preImpPap14_88 d+                                   prePeg91_12 = runStateT prePeg15_89 d+                                   afterPeg92_13 = runStateT afterPeg16_90 d+                                   importPapillon93_14 = runStateT importPapillon17_91 d+                                   varToken94_15 = runStateT varToken18_92 d+                                   typToken95_16 = runStateT typToken19_93 d+                                   pap96_17 = runStateT pap20_94 d+                                   peg97_18 = runStateT peg21_95 d+                                   sourceType98_19 = runStateT sourceType22_96 d+                                   peg_99_20 = runStateT peg_23_97 d+                                   definition100_21 = runStateT definition24_98 d+                                   selection101_22 = runStateT selection25_99 d+                                   normalSelection102_23 = runStateT normalSelection26_100 d+                                   plainSelection103_24 = runStateT plainSelection27_101 d+                                   expressionHs104_25 = runStateT expressionHs28_102 d+                                   expressionHsSugar105_26 = runStateT expressionHsSugar29_103 d+                                   plainExpressionHs106_27 = runStateT plainExpressionHs30_104 d+                                   plainReadFromLs107_28 = runStateT plainReadFromLs31_105 d+                                   expression108_29 = runStateT expression32_106 d+                                   nameLeaf_109_30 = runStateT nameLeaf_33_107 d+                                   nameLeaf110_31 = runStateT nameLeaf34_108 d+                                   nameLeafNoCom111_32 = runStateT nameLeafNoCom35_109 d+                                   comForErr112_33 = runStateT comForErr36_110 d+                                   leaf113_34 = runStateT leaf37_111 d+                                   patOp114_35 = runStateT patOp38_112 d+                                   pat115_36 = runStateT pat39_113 d+                                   pat1116_37 = runStateT pat140_114 d+                                   patList117_38 = runStateT patList41_115 d+                                   opConName118_39 = runStateT opConName42_116 d+                                   charLit119_40 = runStateT charLit43_117 d+                                   stringLit120_41 = runStateT stringLit44_118 d+                                   escapeC121_42 = runStateT escapeC45_119 d+                                   pats122_43 = runStateT pats46_120 d+                                   readFromLs123_44 = runStateT readFromLs47_121 d+                                   readFrom124_45 = runStateT readFrom48_122 d+                                   selectCharsLs125_46 = runStateT selectCharsLs49_123 d+                                   selectChars126_47 = runStateT selectChars50_124 d+                                   test127_48 = runStateT test51_125 d+                                   hsExpLam128_49 = runStateT hsExpLam52_126 d+                                   hsExpTyp129_50 = runStateT hsExpTyp53_127 d+                                   hsExpOp130_51 = runStateT hsExpOp54_128 d+                                   hsOp131_52 = runStateT hsOp55_129 d+                                   opTail132_53 = runStateT opTail56_130 d+                                   hsExp133_54 = runStateT hsExp57_131 d+                                   hsExp1134_55 = runStateT hsExp158_132 d+                                   hsExpTpl135_56 = runStateT hsExpTpl59_133 d+                                   hsTypeArr136_57 = runStateT hsTypeArr60_134 d+                                   hsType137_58 = runStateT hsType61_135 d+                                   hsType1138_59 = runStateT hsType162_136 d+                                   hsTypeTpl139_60 = runStateT hsTypeTpl63_137 d+                                   typ140_61 = runStateT typ64_138 d+                                   variable141_62 = runStateT variable65_139 d+                                   tvtail142_63 = runStateT tvtail66_140 d+                                   integer143_64 = runStateT integer67_141 d+                                   alpha144_65 = runStateT alpha68_142 d+                                   upper145_66 = runStateT upper69_143 d+                                   lower146_67 = runStateT lower70_144 d+                                   digit147_68 = runStateT digit71_145 d+                                   spaces148_69 = runStateT spaces72_146 d+                                   space149_70 = runStateT space73_147 d+                                   notNLString150_71 = runStateT notNLString74_148 d+                                   newLine151_72 = runStateT newLine75_149 d+                                   comment152_73 = runStateT comment76_150 d+                                   comments153_74 = runStateT comments77_151 d+                                   notComStr154_75 = runStateT notComStr78_152 d+                                   comEnd155_76 = runStateT comEnd79_153 d+                                   chars156_77 = runStateT (case getToken s of+                                                                Just (c,+                                                                      s') -> do put (parse0_0 (updatePos c pos) s')+                                                                                return c+                                                                _ -> gets position >>= (throwError . mkParseError "" "end of input" "" undefined [])) d+                pegFile4_78 = foldl1 mplus [do pr <- StateT pragmas+                                               md <- StateT moduleDec+                                               pip <- StateT preImpPap+                                               _ <- StateT importPapillon+                                               return ()+                                               pp <- StateT prePeg+                                               _ <- StateT pap+                                               return ()+                                               p <- StateT peg+                                               _ <- StateT spaces+                                               return ()+                                               d174_154 <- get+                                               xx173_155 <- StateT char+                                               case xx173_155 of+                                                   '|' -> return ()+                                                   _ -> gets position >>= (throwError . mkParseError "'|'" "not match pattern: " "" d174_154 ["char"])+                                               let '|' = xx173_155+                                               return ()+                                               d176_156 <- get+                                               xx175_157 <- StateT char+                                               case xx175_157 of+                                                   ']' -> return ()+                                                   _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d176_156 ["char"])+                                               let ']' = xx175_157+                                               return ()+                                               d178_158 <- get+                                               xx177_159 <- StateT char+                                               case xx177_159 of+                                                   '\n' -> return ()+                                                   _ -> gets position >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d178_158 ["char"])+                                               let '\n' = xx177_159+                                               return ()+                                               atp <- StateT afterPeg+                                               return (mkPegFile pr md pip pp p atp),+                                            do pr <- StateT pragmas+                                               md <- StateT moduleDec+                                               pp <- StateT prePeg+                                               _ <- StateT pap+                                               return ()+                                               p <- StateT peg+                                               _ <- StateT spaces+                                               return ()+                                               d194_160 <- get+                                               xx193_161 <- StateT char+                                               case xx193_161 of+                                                   '|' -> return ()+                                                   _ -> gets position >>= (throwError . mkParseError "'|'" "not match pattern: " "" d194_160 ["char"])+                                               let '|' = xx193_161+                                               return ()+                                               d196_162 <- get+                                               xx195_163 <- StateT char+                                               case xx195_163 of+                                                   ']' -> return ()+                                                   _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d196_162 ["char"])+                                               let ']' = xx195_163+                                               return ()+                                               d198_164 <- get+                                               xx197_165 <- StateT char+                                               case xx197_165 of+                                                   '\n' -> return ()+                                                   _ -> gets position >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d198_164 ["char"])+                                               let '\n' = xx197_165+                                               return ()+                                               atp <- StateT afterPeg+                                               return (mkPegFile pr md emp pp p atp)]+                pragmas5_79 = foldl1 mplus [do _ <- StateT spaces+                                               return ()+                                               pr <- StateT pragma+                                               prs <- StateT pragmas+                                               return (pr : prs),+                                            do _ <- StateT spaces+                                               return ()+                                               return []]+                pragma6_80 = foldl1 mplus [do d210_166 <- get+                                              xx209_167 <- StateT char+                                              case xx209_167 of+                                                  '{' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'{'" "not match pattern: " "" d210_166 ["char"])+                                              let '{' = xx209_167+                                              return ()+                                              d212_168 <- get+                                              xx211_169 <- StateT char+                                              case xx211_169 of+                                                  '-' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d212_168 ["char"])+                                              let '-' = xx211_169+                                              return ()+                                              d214_170 <- get+                                              xx213_171 <- StateT char+                                              case xx213_171 of+                                                  '#' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d214_170 ["char"])+                                              let '#' = xx213_171+                                              return ()+                                              _ <- StateT spaces+                                              return ()+                                              d218_172 <- get+                                              xx217_173 <- StateT char+                                              case xx217_173 of+                                                  'L' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'L'" "not match pattern: " "" d218_172 ["char"])+                                              let 'L' = xx217_173+                                              return ()+                                              d220_174 <- get+                                              xx219_175 <- StateT char+                                              case xx219_175 of+                                                  'A' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'A'" "not match pattern: " "" d220_174 ["char"])+                                              let 'A' = xx219_175+                                              return ()+                                              d222_176 <- get+                                              xx221_177 <- StateT char+                                              case xx221_177 of+                                                  'N' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'N'" "not match pattern: " "" d222_176 ["char"])+                                              let 'N' = xx221_177+                                              return ()+                                              d224_178 <- get+                                              xx223_179 <- StateT char+                                              case xx223_179 of+                                                  'G' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'G'" "not match pattern: " "" d224_178 ["char"])+                                              let 'G' = xx223_179+                                              return ()+                                              d226_180 <- get+                                              xx225_181 <- StateT char+                                              case xx225_181 of+                                                  'U' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'U'" "not match pattern: " "" d226_180 ["char"])+                                              let 'U' = xx225_181+                                              return ()+                                              d228_182 <- get+                                              xx227_183 <- StateT char+                                              case xx227_183 of+                                                  'A' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'A'" "not match pattern: " "" d228_182 ["char"])+                                              let 'A' = xx227_183+                                              return ()+                                              d230_184 <- get+                                              xx229_185 <- StateT char+                                              case xx229_185 of+                                                  'G' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'G'" "not match pattern: " "" d230_184 ["char"])+                                              let 'G' = xx229_185+                                              return ()+                                              d232_186 <- get+                                              xx231_187 <- StateT char+                                              case xx231_187 of+                                                  'E' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'E'" "not match pattern: " "" d232_186 ["char"])+                                              let 'E' = xx231_187+                                              return ()+                                              _ <- StateT spaces+                                              return ()+                                              s <- StateT pragmaItems+                                              _ <- StateT pragmaEnd+                                              return ()+                                              _ <- StateT spaces+                                              return ()+                                              return (LanguagePragma s),+                                           do d242_188 <- get+                                              xx241_189 <- StateT char+                                              case xx241_189 of+                                                  '{' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'{'" "not match pattern: " "" d242_188 ["char"])+                                              let '{' = xx241_189+                                              return ()+                                              d244_190 <- get+                                              xx243_191 <- StateT char+                                              case xx243_191 of+                                                  '-' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d244_190 ["char"])+                                              let '-' = xx243_191+                                              return ()+                                              d246_192 <- get+                                              xx245_193 <- StateT char+                                              case xx245_193 of+                                                  '#' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d246_192 ["char"])+                                              let '#' = xx245_193+                                              return ()+                                              _ <- StateT spaces+                                              return ()+                                              s <- StateT pragmaStr+                                              _ <- StateT pragmaEnd+                                              return ()+                                              return (OtherPragma s)]+                pragmaStr7_81 = foldl1 mplus [do ddd253_194 <- get+                                                 do err <- ((do _ <- StateT pragmaEnd+                                                                return ()) >> return False) `catchError` const (return True)+                                                    unless err (gets position >>= (throwError . mkParseError ('!' : "_:pragmaEnd") "not match: " "" ddd253_194 ["pragmaEnd"]))+                                                 put ddd253_194+                                                 c <- StateT char+                                                 s <- StateT pragmaStr+                                                 return (c : s),+                                              return ""]+                pragmaItems8_82 = foldl1 mplus [do t <- StateT typToken+                                                   d263_195 <- get+                                                   xx262_196 <- StateT char+                                                   case xx262_196 of+                                                       ',' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "','" "not match pattern: " "" d263_195 ["char"])+                                                   let ',' = xx262_196+                                                   return ()+                                                   _ <- StateT spaces+                                                   return ()+                                                   i <- StateT pragmaItems+                                                   return (t : i),+                                                do t <- StateT typToken+                                                   return [t]]+                pragmaEnd9_83 = foldl1 mplus [do _ <- StateT spaces+                                                 return ()+                                                 d273_197 <- get+                                                 xx272_198 <- StateT char+                                                 case xx272_198 of+                                                     '#' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d273_197 ["char"])+                                                 let '#' = xx272_198+                                                 return ()+                                                 d275_199 <- get+                                                 xx274_200 <- StateT char+                                                 case xx274_200 of+                                                     '-' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d275_199 ["char"])+                                                 let '-' = xx274_200+                                                 return ()+                                                 d277_201 <- get+                                                 xx276_202 <- StateT char+                                                 case xx276_202 of+                                                     '}' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'}'" "not match pattern: " "" d277_201 ["char"])+                                                 let '}' = xx276_202+                                                 return ()+                                                 return ()]+                moduleDec10_84 = foldl1 mplus [do d279_203 <- get+                                                  xx278_204 <- StateT char+                                                  case xx278_204 of+                                                      'm' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'m'" "not match pattern: " "" d279_203 ["char"])+                                                  let 'm' = xx278_204+                                                  return ()+                                                  d281_205 <- get+                                                  xx280_206 <- StateT char+                                                  case xx280_206 of+                                                      'o' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'o'" "not match pattern: " "" d281_205 ["char"])+                                                  let 'o' = xx280_206+                                                  return ()+                                                  d283_207 <- get+                                                  xx282_208 <- StateT char+                                                  case xx282_208 of+                                                      'd' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'d'" "not match pattern: " "" d283_207 ["char"])+                                                  let 'd' = xx282_208+                                                  return ()+                                                  d285_209 <- get+                                                  xx284_210 <- StateT char+                                                  case xx284_210 of+                                                      'u' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'u'" "not match pattern: " "" d285_209 ["char"])+                                                  let 'u' = xx284_210+                                                  return ()+                                                  d287_211 <- get+                                                  xx286_212 <- StateT char+                                                  case xx286_212 of+                                                      'l' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'l'" "not match pattern: " "" d287_211 ["char"])+                                                  let 'l' = xx286_212+                                                  return ()+                                                  d289_213 <- get+                                                  xx288_214 <- StateT char+                                                  case xx288_214 of+                                                      'e' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d289_213 ["char"])+                                                  let 'e' = xx288_214+                                                  return ()+                                                  _ <- StateT spaces+                                                  return ()+                                                  n <- StateT moduleName+                                                  _ <- StateT spaces+                                                  return ()+                                                  d297_215 <- get+                                                  xx296_216 <- StateT char+                                                  case xx296_216 of+                                                      '(' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d297_215 ["char"])+                                                  let '(' = xx296_216+                                                  return ()+                                                  _ <- StateT spaces+                                                  return ()+                                                  s <- StateT moduleDecStr+                                                  _ <- StateT whr+                                                  return ()+                                                  return (Just (n, Just s)),+                                               do d305_217 <- get+                                                  xx304_218 <- StateT char+                                                  case xx304_218 of+                                                      'm' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'m'" "not match pattern: " "" d305_217 ["char"])+                                                  let 'm' = xx304_218+                                                  return ()+                                                  d307_219 <- get+                                                  xx306_220 <- StateT char+                                                  case xx306_220 of+                                                      'o' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'o'" "not match pattern: " "" d307_219 ["char"])+                                                  let 'o' = xx306_220+                                                  return ()+                                                  d309_221 <- get+                                                  xx308_222 <- StateT char+                                                  case xx308_222 of+                                                      'd' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'d'" "not match pattern: " "" d309_221 ["char"])+                                                  let 'd' = xx308_222+                                                  return ()+                                                  d311_223 <- get+                                                  xx310_224 <- StateT char+                                                  case xx310_224 of+                                                      'u' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'u'" "not match pattern: " "" d311_223 ["char"])+                                                  let 'u' = xx310_224+                                                  return ()+                                                  d313_225 <- get+                                                  xx312_226 <- StateT char+                                                  case xx312_226 of+                                                      'l' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'l'" "not match pattern: " "" d313_225 ["char"])+                                                  let 'l' = xx312_226+                                                  return ()+                                                  d315_227 <- get+                                                  xx314_228 <- StateT char+                                                  case xx314_228 of+                                                      'e' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d315_227 ["char"])+                                                  let 'e' = xx314_228+                                                  return ()+                                                  _ <- StateT spaces+                                                  return ()+                                                  n <- StateT moduleName+                                                  _ <- StateT spaces+                                                  return ()+                                                  d323_229 <- get+                                                  xx322_230 <- StateT char+                                                  case xx322_230 of+                                                      'w' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'w'" "not match pattern: " "" d323_229 ["char"])+                                                  let 'w' = xx322_230+                                                  return ()+                                                  d325_231 <- get+                                                  xx324_232 <- StateT char+                                                  case xx324_232 of+                                                      'h' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'h'" "not match pattern: " "" d325_231 ["char"])+                                                  let 'h' = xx324_232+                                                  return ()+                                                  d327_233 <- get+                                                  xx326_234 <- StateT char+                                                  case xx326_234 of+                                                      'e' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d327_233 ["char"])+                                                  let 'e' = xx326_234+                                                  return ()+                                                  d329_235 <- get+                                                  xx328_236 <- StateT char+                                                  case xx328_236 of+                                                      'r' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'r'" "not match pattern: " "" d329_235 ["char"])+                                                  let 'r' = xx328_236+                                                  return ()+                                                  d331_237 <- get+                                                  xx330_238 <- StateT char+                                                  case xx330_238 of+                                                      'e' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d331_237 ["char"])+                                                  let 'e' = xx330_238+                                                  return ()+                                                  _ <- StateT spaces+                                                  return ()+                                                  return (Just (n, Nothing)),+                                               return Nothing]+                moduleName11_85 = foldl1 mplus [do t <- StateT typ+                                                   d337_239 <- get+                                                   xx336_240 <- StateT char+                                                   case xx336_240 of+                                                       '.' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "'.'" "not match pattern: " "" d337_239 ["char"])+                                                   let '.' = xx336_240+                                                   return ()+                                                   n <- StateT moduleName+                                                   return (t : n),+                                                do t <- StateT typ+                                                   return [t]]+                moduleDecStr12_86 = foldl1 mplus [do ddd342_241 <- get+                                                     do err <- ((do _ <- StateT whr+                                                                    return ()) >> return False) `catchError` const (return True)+                                                        unless err (gets position >>= (throwError . mkParseError ('!' : "_:whr") "not match: " "" ddd342_241 ["whr"]))+                                                     put ddd342_241+                                                     c <- StateT char+                                                     s <- StateT moduleDecStr+                                                     return (c : s),+                                                  return ""]+                whr13_87 = foldl1 mplus [do _ <- StateT spaces+                                            return ()+                                            d352_242 <- get+                                            xx351_243 <- StateT char+                                            case xx351_243 of+                                                ')' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d352_242 ["char"])+                                            let ')' = xx351_243+                                            return ()+                                            _ <- StateT spaces+                                            return ()+                                            d356_244 <- get+                                            xx355_245 <- StateT char+                                            case xx355_245 of+                                                'w' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'w'" "not match pattern: " "" d356_244 ["char"])+                                            let 'w' = xx355_245+                                            return ()+                                            d358_246 <- get+                                            xx357_247 <- StateT char+                                            case xx357_247 of+                                                'h' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'h'" "not match pattern: " "" d358_246 ["char"])+                                            let 'h' = xx357_247+                                            return ()+                                            d360_248 <- get+                                            xx359_249 <- StateT char+                                            case xx359_249 of+                                                'e' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d360_248 ["char"])+                                            let 'e' = xx359_249+                                            return ()+                                            d362_250 <- get+                                            xx361_251 <- StateT char+                                            case xx361_251 of+                                                'r' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'r'" "not match pattern: " "" d362_250 ["char"])+                                            let 'r' = xx361_251+                                            return ()+                                            d364_252 <- get+                                            xx363_253 <- StateT char+                                            case xx363_253 of+                                                'e' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d364_252 ["char"])+                                            let 'e' = xx363_253+                                            return ()+                                            return ()]+                preImpPap14_88 = foldl1 mplus [do ddd365_254 <- get+                                                  do err <- ((do _ <- StateT importPapillon+                                                                 return ()) >> return False) `catchError` const (return True)+                                                     unless err (gets position >>= (throwError . mkParseError ('!' : "_:importPapillon") "not match: " "" ddd365_254 ["importPapillon"]))+                                                  put ddd365_254+                                                  ddd368_255 <- get+                                                  do err <- ((do _ <- StateT pap+                                                                 return ()) >> return False) `catchError` const (return True)+                                                     unless err (gets position >>= (throwError . mkParseError ('!' : "_:pap") "not match: " "" ddd368_255 ["pap"]))+                                                  put ddd368_255+                                                  c <- StateT char+                                                  pip <- StateT preImpPap+                                                  return (cons c pip),+                                               return emp]+                prePeg15_89 = foldl1 mplus [do ddd375_256 <- get+                                               do err <- ((do _ <- StateT pap+                                                              return ()) >> return False) `catchError` const (return True)+                                                  unless err (gets position >>= (throwError . mkParseError ('!' : "_:pap") "not match: " "" ddd375_256 ["pap"]))+                                               put ddd375_256+                                               c <- StateT char+                                               pp <- StateT prePeg+                                               return (cons c pp),+                                            return emp]+                afterPeg16_90 = foldl1 mplus [do c <- StateT char+                                                 atp <- StateT afterPeg+                                                 return (cons c atp),+                                              return emp]+                importPapillon17_91 = foldl1 mplus [do d387_257 <- get+                                                       xx386_258 <- StateT varToken+                                                       case xx386_258 of+                                                           "import" -> return ()+                                                           _ -> gets position >>= (throwError . mkParseError "\"import\"" "not match pattern: " "" d387_257 ["varToken"])+                                                       let "import" = xx386_258+                                                       return ()+                                                       d389_259 <- get+                                                       xx388_260 <- StateT typToken+                                                       case xx388_260 of+                                                           "Text" -> return ()+                                                           _ -> gets position >>= (throwError . mkParseError "\"Text\"" "not match pattern: " "" d389_259 ["typToken"])+                                                       let "Text" = xx388_260+                                                       return ()+                                                       d391_261 <- get+                                                       xx390_262 <- StateT char+                                                       case xx390_262 of+                                                           '.' -> return ()+                                                           _ -> gets position >>= (throwError . mkParseError "'.'" "not match pattern: " "" d391_261 ["char"])+                                                       let '.' = xx390_262+                                                       return ()+                                                       _ <- StateT spaces+                                                       return ()+                                                       d395_263 <- get+                                                       xx394_264 <- StateT typToken+                                                       case xx394_264 of+                                                           "Papillon" -> return ()+                                                           _ -> gets position >>= (throwError . mkParseError "\"Papillon\"" "not match pattern: " "" d395_263 ["typToken"])+                                                       let "Papillon" = xx394_264+                                                       return ()+                                                       ddd396_265 <- get+                                                       do err <- ((do d398_266 <- get+                                                                      xx397_267 <- StateT char+                                                                      case xx397_267 of+                                                                          '.' -> return ()+                                                                          _ -> gets position >>= (throwError . mkParseError "'.'" "not match pattern: " "" d398_266 ["char"])+                                                                      let '.' = xx397_267+                                                                      return ()) >> return False) `catchError` const (return True)+                                                          unless err (gets position >>= (throwError . mkParseError ('!' : "'.':") "not match: " "" ddd396_265 ["char"]))+                                                       put ddd396_265+                                                       return ()]+                varToken18_92 = foldl1 mplus [do v <- StateT variable+                                                 _ <- StateT spaces+                                                 return ()+                                                 return v]+                typToken19_93 = foldl1 mplus [do t <- StateT typ+                                                 _ <- StateT spaces+                                                 return ()+                                                 return t]+                pap20_94 = foldl1 mplus [do d408_268 <- get+                                            xx407_269 <- StateT char+                                            case xx407_269 of+                                                '\n' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d408_268 ["char"])+                                            let '\n' = xx407_269+                                            return ()+                                            d410_270 <- get+                                            xx409_271 <- StateT char+                                            case xx409_271 of+                                                '[' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d410_270 ["char"])+                                            let '[' = xx409_271+                                            return ()+                                            d412_272 <- get+                                            xx411_273 <- StateT char+                                            case xx411_273 of+                                                'p' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'p'" "not match pattern: " "" d412_272 ["char"])+                                            let 'p' = xx411_273+                                            return ()+                                            d414_274 <- get+                                            xx413_275 <- StateT char+                                            case xx413_275 of+                                                'a' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'a'" "not match pattern: " "" d414_274 ["char"])+                                            let 'a' = xx413_275+                                            return ()+                                            d416_276 <- get+                                            xx415_277 <- StateT char+                                            case xx415_277 of+                                                'p' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'p'" "not match pattern: " "" d416_276 ["char"])+                                            let 'p' = xx415_277+                                            return ()+                                            d418_278 <- get+                                            xx417_279 <- StateT char+                                            case xx417_279 of+                                                'i' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'i'" "not match pattern: " "" d418_278 ["char"])+                                            let 'i' = xx417_279+                                            return ()+                                            d420_280 <- get+                                            xx419_281 <- StateT char+                                            case xx419_281 of+                                                'l' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'l'" "not match pattern: " "" d420_280 ["char"])+                                            let 'l' = xx419_281+                                            return ()+                                            d422_282 <- get+                                            xx421_283 <- StateT char+                                            case xx421_283 of+                                                'l' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'l'" "not match pattern: " "" d422_282 ["char"])+                                            let 'l' = xx421_283+                                            return ()+                                            d424_284 <- get+                                            xx423_285 <- StateT char+                                            case xx423_285 of+                                                'o' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'o'" "not match pattern: " "" d424_284 ["char"])+                                            let 'o' = xx423_285+                                            return ()+                                            d426_286 <- get+                                            xx425_287 <- StateT char+                                            case xx425_287 of+                                                'n' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'n'" "not match pattern: " "" d426_286 ["char"])+                                            let 'n' = xx425_287+                                            return ()+                                            d428_288 <- get+                                            xx427_289 <- StateT char+                                            case xx427_289 of+                                                '|' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'|'" "not match pattern: " "" d428_288 ["char"])+                                            let '|' = xx427_289+                                            return ()+                                            d430_290 <- get+                                            xx429_291 <- StateT char+                                            case xx429_291 of+                                                '\n' -> return ()+                                                _ -> gets position >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d430_290 ["char"])+                                            let '\n' = xx429_291+                                            return ()+                                            return ()]+                peg21_95 = foldl1 mplus [do _ <- StateT spaces+                                            return ()+                                            s <- StateT sourceType+                                            p <- StateT peg_+                                            return (mkTTPeg s p),+                                         do p <- StateT peg_+                                            return (mkTTPeg tString p)]+                sourceType22_96 = foldl1 mplus [do d440_292 <- get+                                                   xx439_293 <- StateT varToken+                                                   case xx439_293 of+                                                       "source" -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "\"source\"" "not match pattern: " "" d440_292 ["varToken"])+                                                   let "source" = xx439_293+                                                   return ()+                                                   d442_294 <- get+                                                   xx441_295 <- StateT char+                                                   case xx441_295 of+                                                       ':' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d442_294 ["char"])+                                                   let ':' = xx441_295+                                                   return ()+                                                   _ <- StateT spaces+                                                   return ()+                                                   v <- StateT typToken+                                                   return v]+                peg_23_97 = foldl1 mplus [do _ <- StateT spaces+                                             return ()+                                             d <- StateT definition+                                             p <- StateT peg_+                                             return (cons d p),+                                          return emp]+                definition24_98 = foldl1 mplus [do v <- StateT variable+                                                   _ <- StateT spaces+                                                   return ()+                                                   d458_296 <- get+                                                   xx457_297 <- StateT char+                                                   case xx457_297 of+                                                       ':' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d458_296 ["char"])+                                                   let ':' = xx457_297+                                                   return ()+                                                   d460_298 <- get+                                                   xx459_299 <- StateT char+                                                   case xx459_299 of+                                                       ':' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d460_298 ["char"])+                                                   let ':' = xx459_299+                                                   return ()+                                                   _ <- StateT spaces+                                                   return ()+                                                   t <- StateT hsTypeArr+                                                   _ <- StateT spaces+                                                   return ()+                                                   d468_300 <- get+                                                   xx467_301 <- StateT char+                                                   case xx467_301 of+                                                       '=' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "'='" "not match pattern: " "" d468_300 ["char"])+                                                   let '=' = xx467_301+                                                   return ()+                                                   _ <- StateT spaces+                                                   return ()+                                                   sel <- StateT selection+                                                   _ <- StateT spaces+                                                   return ()+                                                   d476_302 <- get+                                                   xx475_303 <- StateT char+                                                   case xx475_303 of+                                                       ';' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "';'" "not match pattern: " "" d476_302 ["char"])+                                                   let ';' = xx475_303+                                                   return ()+                                                   return (mkDef v t sel),+                                                do v <- StateT variable+                                                   _ <- StateT spaces+                                                   return ()+                                                   d482_304 <- get+                                                   xx481_305 <- StateT char+                                                   case xx481_305 of+                                                       '<' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "'<'" "not match pattern: " "" d482_304 ["char"])+                                                   let '<' = xx481_305+                                                   return ()+                                                   d484_306 <- get+                                                   xx483_307 <- StateT char+                                                   case xx483_307 of+                                                       '-' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d484_306 ["char"])+                                                   let '-' = xx483_307+                                                   return ()+                                                   _ <- StateT spaces+                                                   return ()+                                                   sel <- StateT plainSelection+                                                   _ <- StateT spaces+                                                   return ()+                                                   d492_308 <- get+                                                   xx491_309 <- StateT char+                                                   case xx491_309 of+                                                       ';' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "';'" "not match pattern: " "" d492_308 ["char"])+                                                   let ';' = xx491_309+                                                   return ()+                                                   return (PlainDefinition v sel)]+                selection25_99 = foldl1 mplus [do s <- StateT normalSelection+                                                  return s,+                                               do s <- StateT plainSelection+                                                  return s]+                normalSelection26_100 = foldl1 mplus [do ex <- StateT expressionHs+                                                         _ <- StateT spaces+                                                         return ()+                                                         d502_310 <- get+                                                         xx501_311 <- StateT char+                                                         case xx501_311 of+                                                             '/' -> return ()+                                                             _ -> gets position >>= (throwError . mkParseError "'/'" "not match pattern: " "" d502_310 ["char"])+                                                         let '/' = xx501_311+                                                         return ()+                                                         _ <- StateT spaces+                                                         return ()+                                                         sel <- StateT normalSelection+                                                         return (Selection $ ex : expressions sel),+                                                      do ex <- StateT expressionHs+                                                         return (Selection [ex])]+                plainSelection27_101 = foldl1 mplus [do ex <- StateT plainExpressionHs+                                                        _ <- StateT spaces+                                                        return ()+                                                        d514_312 <- get+                                                        xx513_313 <- StateT char+                                                        case xx513_313 of+                                                            '/' -> return ()+                                                            _ -> gets position >>= (throwError . mkParseError "'/'" "not match pattern: " "" d514_312 ["char"])+                                                        let '/' = xx513_313+                                                        return ()+                                                        _ <- StateT spaces+                                                        return ()+                                                        sel <- StateT plainSelection+                                                        return (PlainSelection $ ex : plainExpressions sel),+                                                     do ex <- StateT plainExpressionHs+                                                        return (PlainSelection [ex])]+                expressionHs28_102 = foldl1 mplus [do e <- StateT expression+                                                      _ <- StateT spaces+                                                      return ()+                                                      d526_314 <- get+                                                      xx525_315 <- StateT char+                                                      case xx525_315 of+                                                          '{' -> return ()+                                                          _ -> gets position >>= (throwError . mkParseError "'{'" "not match pattern: " "" d526_314 ["char"])+                                                      let '{' = xx525_315+                                                      return ()+                                                      _ <- StateT spaces+                                                      return ()+                                                      h <- StateT hsExpLam+                                                      _ <- StateT spaces+                                                      return ()+                                                      d534_316 <- get+                                                      xx533_317 <- StateT char+                                                      case xx533_317 of+                                                          '}' -> return ()+                                                          _ -> gets position >>= (throwError . mkParseError "'}'" "not match pattern: " "" d534_316 ["char"])+                                                      let '}' = xx533_317+                                                      return ()+                                                      return (ExpressionHs e h),+                                                   do e <- StateT expressionHsSugar+                                                      return e]+                expressionHsSugar29_103 = foldl1 mplus [do d538_318 <- get+                                                           xx537_319 <- StateT char+                                                           case xx537_319 of+                                                               '<' -> return ()+                                                               _ -> gets position >>= (throwError . mkParseError "'<'" "not match pattern: " "" d538_318 ["char"])+                                                           let '<' = xx537_319+                                                           return ()+                                                           _ <- StateT spaces+                                                           return ()+                                                           h <- StateT hsExpLam+                                                           _ <- StateT spaces+                                                           return ()+                                                           d546_320 <- get+                                                           xx545_321 <- StateT char+                                                           case xx545_321 of+                                                               '>' -> return ()+                                                               _ -> gets position >>= (throwError . mkParseError "'>'" "not match pattern: " "" d546_320 ["char"])+                                                           let '>' = xx545_321+                                                           return ()+                                                           return (ExpressionHsSugar h)]+                plainExpressionHs30_104 = foldl1 mplus [do rfs <- list1_322 (foldl1 mplus [do rf <- StateT plainReadFromLs+                                                                                              _ <- StateT spaces+                                                                                              return ()+                                                                                              return rf])+                                                           return (PlainExpressionHs rfs)]+                plainReadFromLs31_105 = foldl1 mplus [do rf <- StateT readFromLs+                                                         return rf,+                                                      do rf <- StateT selectCharsLs+                                                         return rf]+                expression32_106 = foldl1 mplus [do l <- StateT nameLeaf_+                                                    _ <- StateT spaces+                                                    return ()+                                                    e <- StateT expression+                                                    return (cons l e),+                                                 return emp]+                nameLeaf_33_107 = foldl1 mplus [do d564_323 <- get+                                                   xx563_324 <- StateT char+                                                   case xx563_324 of+                                                       '!' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "'!'" "not match pattern: " "" d564_323 ["char"])+                                                   let '!' = xx563_324+                                                   return ()+                                                   nl <- StateT nameLeafNoCom+                                                   _ <- StateT spaces+                                                   return ()+                                                   com <- optional3_325 (StateT comForErr)+                                                   return (NotAfter nl $ maybe "" id com),+                                                do d572_326 <- get+                                                   xx571_327 <- StateT char+                                                   let c = xx571_327+                                                   unless (isAmp c) (gets position >>= (throwError . mkParseError "isAmp c" "not match: " "" d572_326 ["char"]))+                                                   nl <- StateT nameLeaf+                                                   return (After nl),+                                                do nl <- StateT nameLeaf+                                                   return (Here nl)]+                nameLeaf34_108 = foldl1 mplus [do n <- StateT pat1+                                                  _ <- StateT spaces+                                                  return ()+                                                  com <- optional3_325 (StateT comForErr)+                                                  d584_328 <- get+                                                  xx583_329 <- StateT char+                                                  case xx583_329 of+                                                      ':' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d584_328 ["char"])+                                                  let ':' = xx583_329+                                                  return ()+                                                  (rf, p) <- StateT leaf+                                                  return (NameLeaf (n, maybe "" id com) rf p),+                                               do n <- StateT pat1+                                                  _ <- StateT spaces+                                                  return ()+                                                  com <- optional3_325 (StateT comForErr)+                                                  return (NameLeaf (n,+                                                                    maybe "" id com) FromToken Nothing)]+                nameLeafNoCom35_109 = foldl1 mplus [do n <- StateT pat1+                                                       _ <- StateT spaces+                                                       return ()+                                                       com <- optional3_325 (StateT comForErr)+                                                       d600_330 <- get+                                                       xx599_331 <- StateT char+                                                       case xx599_331 of+                                                           ':' -> return ()+                                                           _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d600_330 ["char"])+                                                       let ':' = xx599_331+                                                       return ()+                                                       (rf, p) <- StateT leaf+                                                       return (NameLeaf (n, maybe "" id com) rf p),+                                                    do n <- StateT pat1+                                                       _ <- StateT spaces+                                                       return ()+                                                       return (NameLeaf (n, "") FromToken Nothing)]+                comForErr36_110 = foldl1 mplus [do d608_332 <- get+                                                   xx607_333 <- StateT char+                                                   case xx607_333 of+                                                       '{' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "'{'" "not match pattern: " "" d608_332 ["char"])+                                                   let '{' = xx607_333+                                                   return ()+                                                   d610_334 <- get+                                                   xx609_335 <- StateT char+                                                   case xx609_335 of+                                                       '-' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d610_334 ["char"])+                                                   let '-' = xx609_335+                                                   return ()+                                                   d612_336 <- get+                                                   xx611_337 <- StateT char+                                                   case xx611_337 of+                                                       '#' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d612_336 ["char"])+                                                   let '#' = xx611_337+                                                   return ()+                                                   _ <- StateT spaces+                                                   return ()+                                                   d616_338 <- get+                                                   xx615_339 <- StateT char+                                                   case xx615_339 of+                                                       '"' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d616_338 ["char"])+                                                   let '"' = xx615_339+                                                   return ()+                                                   s <- StateT stringLit+                                                   d620_340 <- get+                                                   xx619_341 <- StateT char+                                                   case xx619_341 of+                                                       '"' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d620_340 ["char"])+                                                   let '"' = xx619_341+                                                   return ()+                                                   _ <- StateT spaces+                                                   return ()+                                                   d624_342 <- get+                                                   xx623_343 <- StateT char+                                                   case xx623_343 of+                                                       '#' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d624_342 ["char"])+                                                   let '#' = xx623_343+                                                   return ()+                                                   d626_344 <- get+                                                   xx625_345 <- StateT char+                                                   case xx625_345 of+                                                       '-' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d626_344 ["char"])+                                                   let '-' = xx625_345+                                                   return ()+                                                   d628_346 <- get+                                                   xx627_347 <- StateT char+                                                   case xx627_347 of+                                                       '}' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "'}'" "not match pattern: " "" d628_346 ["char"])+                                                   let '}' = xx627_347+                                                   return ()+                                                   _ <- StateT spaces+                                                   return ()+                                                   return s]+                leaf37_111 = foldl1 mplus [do rf <- StateT readFromLs+                                              t <- StateT test+                                              return (rf, Just t),+                                           do rf <- StateT readFromLs+                                              return (rf, Nothing),+                                           do t <- StateT test+                                              return (FromToken, Just t)]+                patOp38_112 = foldl1 mplus [do p <- StateT pat+                                               o <- StateT opConName+                                               po <- StateT patOp+                                               return (uInfixP p o po),+                                            do p <- StateT pat+                                               _ <- StateT spaces+                                               return ()+                                               d650_348 <- get+                                               xx649_349 <- StateT char+                                               let q = xx649_349+                                               unless (isBQ q) (gets position >>= (throwError . mkParseError "isBQ q" "not match: " "" d650_348 ["char"]))+                                               t <- StateT typ+                                               d654_350 <- get+                                               xx653_351 <- StateT char+                                               let q_ = xx653_351+                                               unless (isBQ q_) (gets position >>= (throwError . mkParseError "isBQ q_" "not match: " "" d654_350 ["char"]))+                                               _ <- StateT spaces+                                               return ()+                                               po <- StateT patOp+                                               return (uInfixP p (mkName t) po),+                                            do p <- StateT pat+                                               return p]+                pat39_113 = foldl1 mplus [do t <- StateT typ+                                             _ <- StateT spaces+                                             return ()+                                             ps <- StateT pats+                                             return (conToPatQ t ps),+                                          do d668_352 <- get+                                             xx667_353 <- StateT char+                                             case xx667_353 of+                                                 '(' -> return ()+                                                 _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d668_352 ["char"])+                                             let '(' = xx667_353+                                             return ()+                                             o <- StateT opConName+                                             d672_354 <- get+                                             xx671_355 <- StateT char+                                             case xx671_355 of+                                                 ')' -> return ()+                                                 _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d672_354 ["char"])+                                             let ')' = xx671_355+                                             return ()+                                             _ <- StateT spaces+                                             return ()+                                             ps <- StateT pats+                                             return (conP o ps),+                                          do p <- StateT pat1+                                             return p]+                pat140_114 = foldl1 mplus [do t <- StateT typ+                                              return (conToPatQ t emp),+                                           do d682_356 <- get+                                              xx681_357 <- StateT variable+                                              case xx681_357 of+                                                  "_" -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "\"_\"" "not match pattern: " "" d682_356 ["variable"])+                                              let "_" = xx681_357+                                              return ()+                                              return wildP,+                                           do n <- StateT variable+                                              return (strToPatQ n),+                                           do i <- StateT integer+                                              return (litP (integerL i)),+                                           do d688_358 <- get+                                              xx687_359 <- StateT char+                                              case xx687_359 of+                                                  '-' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d688_358 ["char"])+                                              let '-' = xx687_359+                                              return ()+                                              _ <- StateT spaces+                                              return ()+                                              i <- StateT integer+                                              return (litP (integerL $ negate i)),+                                           do d694_360 <- get+                                              xx693_361 <- StateT char+                                              case xx693_361 of+                                                  '\'' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d694_360 ["char"])+                                              let '\'' = xx693_361+                                              return ()+                                              c <- StateT charLit+                                              d698_362 <- get+                                              xx697_363 <- StateT char+                                              case xx697_363 of+                                                  '\'' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d698_362 ["char"])+                                              let '\'' = xx697_363+                                              return ()+                                              return (charP c),+                                           do d700_364 <- get+                                              xx699_365 <- StateT char+                                              case xx699_365 of+                                                  '"' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d700_364 ["char"])+                                              let '"' = xx699_365+                                              return ()+                                              s <- StateT stringLit+                                              d704_366 <- get+                                              xx703_367 <- StateT char+                                              case xx703_367 of+                                                  '"' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d704_366 ["char"])+                                              let '"' = xx703_367+                                              return ()+                                              return (stringP s),+                                           do d706_368 <- get+                                              xx705_369 <- StateT char+                                              case xx705_369 of+                                                  '(' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d706_368 ["char"])+                                              let '(' = xx705_369+                                              return ()+                                              p <- StateT patList+                                              d710_370 <- get+                                              xx709_371 <- StateT char+                                              case xx709_371 of+                                                  ')' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d710_370 ["char"])+                                              let ')' = xx709_371+                                              return ()+                                              return (tupP p),+                                           do d712_372 <- get+                                              xx711_373 <- StateT char+                                              case xx711_373 of+                                                  '[' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d712_372 ["char"])+                                              let '[' = xx711_373+                                              return ()+                                              p <- StateT patList+                                              d716_374 <- get+                                              xx715_375 <- StateT char+                                              case xx715_375 of+                                                  ']' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d716_374 ["char"])+                                              let ']' = xx715_375+                                              return ()+                                              return (listP p)]+                patList41_115 = foldl1 mplus [do p <- StateT patOp+                                                 _ <- StateT spaces+                                                 return ()+                                                 d722_376 <- get+                                                 xx721_377 <- StateT char+                                                 case xx721_377 of+                                                     ',' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "','" "not match pattern: " "" d722_376 ["char"])+                                                 let ',' = xx721_377+                                                 return ()+                                                 _ <- StateT spaces+                                                 return ()+                                                 ps <- StateT patList+                                                 return (p : ps),+                                              do p <- StateT patOp+                                                 return [p],+                                              return []]+                opConName42_116 = foldl1 mplus [do d730_378 <- get+                                                   xx729_379 <- StateT char+                                                   case xx729_379 of+                                                       ':' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d730_378 ["char"])+                                                   let ':' = xx729_379+                                                   return ()+                                                   ot <- StateT opTail+                                                   return (mkName $ colon : ot)]+                charLit43_117 = foldl1 mplus [do d734_380 <- get+                                                 xx733_381 <- StateT char+                                                 let c = xx733_381+                                                 unless (isAlphaNumOt c) (gets position >>= (throwError . mkParseError "isAlphaNumOt c" "not match: " "" d734_380 ["char"]))+                                                 return c,+                                              do d736_382 <- get+                                                 xx735_383 <- StateT char+                                                 case xx735_383 of+                                                     '\\' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d736_382 ["char"])+                                                 let '\\' = xx735_383+                                                 return ()+                                                 c <- StateT escapeC+                                                 return c]+                stringLit44_118 = foldl1 mplus [do d740_384 <- get+                                                   xx739_385 <- StateT char+                                                   let c = xx739_385+                                                   unless (isStrLitC c) (gets position >>= (throwError . mkParseError "isStrLitC c" "not match: " "" d740_384 ["char"]))+                                                   s <- StateT stringLit+                                                   return (cons c s),+                                                do d744_386 <- get+                                                   xx743_387 <- StateT char+                                                   case xx743_387 of+                                                       '\\' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d744_386 ["char"])+                                                   let '\\' = xx743_387+                                                   return ()+                                                   c <- StateT escapeC+                                                   s <- StateT stringLit+                                                   return (c : s),+                                                return emp]+                escapeC45_119 = foldl1 mplus [do d750_388 <- get+                                                 xx749_389 <- StateT char+                                                 case xx749_389 of+                                                     '"' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d750_388 ["char"])+                                                 let '"' = xx749_389+                                                 return ()+                                                 return '"',+                                              do d752_390 <- get+                                                 xx751_391 <- StateT char+                                                 case xx751_391 of+                                                     '\'' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d752_390 ["char"])+                                                 let '\'' = xx751_391+                                                 return ()+                                                 return '\'',+                                              do d754_392 <- get+                                                 xx753_393 <- StateT char+                                                 case xx753_393 of+                                                     '\\' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d754_392 ["char"])+                                                 let '\\' = xx753_393+                                                 return ()+                                                 return '\\',+                                              do d756_394 <- get+                                                 xx755_395 <- StateT char+                                                 case xx755_395 of+                                                     'n' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'n'" "not match pattern: " "" d756_394 ["char"])+                                                 let 'n' = xx755_395+                                                 return ()+                                                 return '\n',+                                              do d758_396 <- get+                                                 xx757_397 <- StateT char+                                                 case xx757_397 of+                                                     't' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'t'" "not match pattern: " "" d758_396 ["char"])+                                                 let 't' = xx757_397+                                                 return ()+                                                 return tab]+                pats46_120 = foldl1 mplus [do p <- StateT pat+                                              _ <- StateT spaces+                                              return ()+                                              ps <- StateT pats+                                              return (cons p ps),+                                           return emp]+                readFromLs47_121 = foldl1 mplus [do rf <- StateT readFrom+                                                    d768_398 <- get+                                                    xx767_399 <- StateT char+                                                    case xx767_399 of+                                                        '*' -> return ()+                                                        _ -> gets position >>= (throwError . mkParseError "'*'" "not match pattern: " "" d768_398 ["char"])+                                                    let '*' = xx767_399+                                                    return ()+                                                    return (FromList rf),+                                                 do rf <- StateT readFrom+                                                    d772_400 <- get+                                                    xx771_401 <- StateT char+                                                    case xx771_401 of+                                                        '+' -> return ()+                                                        _ -> gets position >>= (throwError . mkParseError "'+'" "not match pattern: " "" d772_400 ["char"])+                                                    let '+' = xx771_401+                                                    return ()+                                                    return (FromList1 rf),+                                                 do rf <- StateT readFrom+                                                    d776_402 <- get+                                                    xx775_403 <- StateT char+                                                    case xx775_403 of+                                                        '?' -> return ()+                                                        _ -> gets position >>= (throwError . mkParseError "'?'" "not match pattern: " "" d776_402 ["char"])+                                                    let '?' = xx775_403+                                                    return ()+                                                    return (FromOptional rf),+                                                 do rf <- StateT readFrom+                                                    return rf]+                readFrom48_122 = foldl1 mplus [do v <- StateT variable+                                                  return (FromVariable v),+                                               do d782_404 <- get+                                                  xx781_405 <- StateT char+                                                  case xx781_405 of+                                                      '(' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d782_404 ["char"])+                                                  let '(' = xx781_405+                                                  return ()+                                                  s <- StateT selection+                                                  d786_406 <- get+                                                  xx785_407 <- StateT char+                                                  case xx785_407 of+                                                      ')' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d786_406 ["char"])+                                                  let ')' = xx785_407+                                                  return ()+                                                  return (FromSelection s),+                                               do e <- StateT expressionHsSugar+                                                  return (FromSelection $ Selection [e])]+                selectCharsLs49_123 = foldl1 mplus [do rf <- StateT selectChars+                                                       d792_408 <- get+                                                       xx791_409 <- StateT char+                                                       case xx791_409 of+                                                           '*' -> return ()+                                                           _ -> gets position >>= (throwError . mkParseError "'*'" "not match pattern: " "" d792_408 ["char"])+                                                       let '*' = xx791_409+                                                       return ()+                                                       return (FromList rf),+                                                    do rf <- StateT selectChars+                                                       d796_410 <- get+                                                       xx795_411 <- StateT char+                                                       case xx795_411 of+                                                           '+' -> return ()+                                                           _ -> gets position >>= (throwError . mkParseError "'+'" "not match pattern: " "" d796_410 ["char"])+                                                       let '+' = xx795_411+                                                       return ()+                                                       return (FromList1 rf),+                                                    do rf <- StateT selectChars+                                                       d800_412 <- get+                                                       xx799_413 <- StateT char+                                                       case xx799_413 of+                                                           '?' -> return ()+                                                           _ -> gets position >>= (throwError . mkParseError "'?'" "not match pattern: " "" d800_412 ["char"])+                                                       let '?' = xx799_413+                                                       return ()+                                                       return (FromOptional rf),+                                                    do rf <- StateT selectChars+                                                       return rf]+                selectChars50_124 = foldl1 mplus [do d804_414 <- get+                                                     xx803_415 <- StateT char+                                                     case xx803_415 of+                                                         '[' -> return ()+                                                         _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d804_414 ["char"])+                                                     let '[' = xx803_415+                                                     return ()+                                                     cs <- list12_416 (foldl1 mplus [do d808_417 <- get+                                                                                        xx807_418 <- StateT char+                                                                                        let c = xx807_418+                                                                                        unless (isLower c) (gets position >>= (throwError . mkParseError "isLower c" "not match: " "" d808_417 ["char"]))+                                                                                        return c])+                                                     d810_419 <- get+                                                     xx809_420 <- StateT char+                                                     case xx809_420 of+                                                         ']' -> return ()+                                                         _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d810_419 ["char"])+                                                     let ']' = xx809_420+                                                     return ()+                                                     return (FromTokenChars cs),+                                                  do d812_421 <- get+                                                     xx811_422 <- StateT char+                                                     case xx811_422 of+                                                         '[' -> return ()+                                                         _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d812_421 ["char"])+                                                     let '[' = xx811_422+                                                     return ()+                                                     d814_423 <- get+                                                     xx813_424 <- StateT char+                                                     let cb = xx813_424+                                                     unless (cb `notElem` "\\-") (gets position >>= (throwError . mkParseError "cb `notElem` \"\\\\-\"" "not match: " "" d814_423 ["char"]))+                                                     d816_425 <- get+                                                     xx815_426 <- StateT char+                                                     case xx815_426 of+                                                         '-' -> return ()+                                                         _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d816_425 ["char"])+                                                     let '-' = xx815_426+                                                     return ()+                                                     d818_427 <- get+                                                     xx817_428 <- StateT char+                                                     let ce = xx817_428+                                                     unless (ce `notElem` "\\-") (gets position >>= (throwError . mkParseError "ce `notElem` \"\\\\-\"" "not match: " "" d818_427 ["char"]))+                                                     d820_429 <- get+                                                     xx819_430 <- StateT char+                                                     case xx819_430 of+                                                         ']' -> return ()+                                                         _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d820_429 ["char"])+                                                     let ']' = xx819_430+                                                     return ()+                                                     return (FromTokenChars [cb .. ce]),+                                                  do d822_431 <- get+                                                     xx821_432 <- StateT char+                                                     case xx821_432 of+                                                         '\'' -> return ()+                                                         _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d822_431 ["char"])+                                                     let '\'' = xx821_432+                                                     return ()+                                                     d824_433 <- get+                                                     xx823_434 <- StateT char+                                                     let c = xx823_434+                                                     unless (c `notElem` "\\'") (gets position >>= (throwError . mkParseError "c `notElem` \"\\\\'\"" "not match: " "" d824_433 ["char"]))+                                                     d826_435 <- get+                                                     xx825_436 <- StateT char+                                                     case xx825_436 of+                                                         '\'' -> return ()+                                                         _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d826_435 ["char"])+                                                     let '\'' = xx825_436+                                                     return ()+                                                     return (FromTokenChars [c])]+                test51_125 = foldl1 mplus [do d828_437 <- get+                                              xx827_438 <- StateT char+                                              case xx827_438 of+                                                  '[' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d828_437 ["char"])+                                              let '[' = xx827_438+                                              return ()+                                              h <- StateT hsExpLam+                                              _ <- StateT spaces+                                              return ()+                                              com <- optional3_325 (StateT comForErr)+                                              d836_439 <- get+                                              xx835_440 <- StateT char+                                              case xx835_440 of+                                                  ']' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d836_439 ["char"])+                                              let ']' = xx835_440+                                              return ()+                                              return (h, maybe "" id com)]+                hsExpLam52_126 = foldl1 mplus [do d838_441 <- get+                                                  xx837_442 <- StateT char+                                                  case xx837_442 of+                                                      '\\' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d838_441 ["char"])+                                                  let '\\' = xx837_442+                                                  return ()+                                                  _ <- StateT spaces+                                                  return ()+                                                  ps <- StateT pats+                                                  _ <- StateT spaces+                                                  return ()+                                                  d846_443 <- get+                                                  xx845_444 <- StateT char+                                                  case xx845_444 of+                                                      '-' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d846_443 ["char"])+                                                  let '-' = xx845_444+                                                  return ()+                                                  d848_445 <- get+                                                  xx847_446 <- StateT char+                                                  let c = xx847_446+                                                  unless (isGt c) (gets position >>= (throwError . mkParseError "isGt c" "not match: " "" d848_445 ["char"]))+                                                  _ <- StateT spaces+                                                  return ()+                                                  e <- StateT hsExpTyp+                                                  return (lamE ps e),+                                               do e <- StateT hsExpTyp+                                                  return e]+                hsExpTyp53_127 = foldl1 mplus [do eo <- StateT hsExpOp+                                                  d858_447 <- get+                                                  xx857_448 <- StateT char+                                                  case xx857_448 of+                                                      ':' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d858_447 ["char"])+                                                  let ':' = xx857_448+                                                  return ()+                                                  d860_449 <- get+                                                  xx859_450 <- StateT char+                                                  case xx859_450 of+                                                      ':' -> return ()+                                                      _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d860_449 ["char"])+                                                  let ':' = xx859_450+                                                  return ()+                                                  _ <- StateT spaces+                                                  return ()+                                                  t <- StateT hsTypeArr+                                                  return (sigE eo t),+                                               do eo <- StateT hsExpOp+                                                  return eo]+                hsExpOp54_128 = foldl1 mplus [do l <- StateT hsExp+                                                 _ <- StateT spaces+                                                 return ()+                                                 o <- StateT hsOp+                                                 _ <- StateT spaces+                                                 return ()+                                                 r <- StateT hsExpOp+                                                 return (uInfixE (getEx l) o r),+                                              do e <- StateT hsExp+                                                 return (getEx e)]+                hsOp55_129 = foldl1 mplus [do d880_451 <- get+                                              xx879_452 <- StateT char+                                              let c = xx879_452+                                              unless (isOpHeadChar c) (gets position >>= (throwError . mkParseError "isOpHeadChar c" "not match: " "" d880_451 ["char"]))+                                              o <- StateT opTail+                                              return (varE (mkName (cons c o))),+                                           do d884_453 <- get+                                              xx883_454 <- StateT char+                                              case xx883_454 of+                                                  ':' -> return ()+                                                  _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d884_453 ["char"])+                                              let ':' = xx883_454+                                              return ()+                                              ddd885_455 <- get+                                              do err <- ((do d887_456 <- get+                                                             xx886_457 <- StateT char+                                                             case xx886_457 of+                                                                 ':' -> return ()+                                                                 _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d887_456 ["char"])+                                                             let ':' = xx886_457+                                                             return ()) >> return False) `catchError` const (return True)+                                                 unless err (gets position >>= (throwError . mkParseError ('!' : "':':") "not match: " "" ddd885_455 ["char"]))+                                              put ddd885_455+                                              o <- StateT opTail+                                              return (conE (mkName (':' : o))),+                                           do d891_458 <- get+                                              xx890_459 <- StateT char+                                              let c = xx890_459+                                              unless (isBQ c) (gets position >>= (throwError . mkParseError "isBQ c" "not match: " "" d891_458 ["char"]))+                                              v <- StateT variable+                                              d895_460 <- get+                                              xx894_461 <- StateT char+                                              let c_ = xx894_461+                                              unless (isBQ c_) (gets position >>= (throwError . mkParseError "isBQ c_" "not match: " "" d895_460 ["char"]))+                                              return (varE (mkName v)),+                                           do d897_462 <- get+                                              xx896_463 <- StateT char+                                              let c = xx896_463+                                              unless (isBQ c) (gets position >>= (throwError . mkParseError "isBQ c" "not match: " "" d897_462 ["char"]))+                                              t <- StateT typ+                                              d901_464 <- get+                                              xx900_465 <- StateT char+                                              let c_ = xx900_465+                                              unless (isBQ c_) (gets position >>= (throwError . mkParseError "isBQ c_" "not match: " "" d901_464 ["char"]))+                                              return (conE (mkName t))]+                opTail56_130 = foldl1 mplus [do d903_466 <- get+                                                xx902_467 <- StateT char+                                                let c = xx902_467+                                                unless (isOpTailChar c) (gets position >>= (throwError . mkParseError "isOpTailChar c" "not match: " "" d903_466 ["char"]))+                                                s <- StateT opTail+                                                return (cons c s),+                                             return emp]+                hsExp57_131 = foldl1 mplus [do e <- StateT hsExp1+                                               _ <- StateT spaces+                                               return ()+                                               h <- StateT hsExp+                                               return (applyExR e h),+                                            do e <- StateT hsExp1+                                               return (toEx e)]+                hsExp158_132 = foldl1 mplus [do d915_468 <- get+                                                xx914_469 <- StateT char+                                                case xx914_469 of+                                                    '(' -> return ()+                                                    _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d915_468 ["char"])+                                                let '(' = xx914_469+                                                return ()+                                                l <- optional3_325 (foldl1 mplus [do e <- StateT hsExpTyp+                                                                                     return e])+                                                _ <- StateT spaces+                                                return ()+                                                o <- StateT hsOp+                                                _ <- StateT spaces+                                                return ()+                                                r <- optional3_325 (foldl1 mplus [do e <- StateT hsExpTyp+                                                                                     return e])+                                                d931_470 <- get+                                                xx930_471 <- StateT char+                                                case xx930_471 of+                                                    ')' -> return ()+                                                    _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d931_470 ["char"])+                                                let ')' = xx930_471+                                                return ()+                                                return (infixE l o r),+                                             do d933_472 <- get+                                                xx932_473 <- StateT char+                                                case xx932_473 of+                                                    '(' -> return ()+                                                    _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d933_472 ["char"])+                                                let '(' = xx932_473+                                                return ()+                                                et <- StateT hsExpTpl+                                                d937_474 <- get+                                                xx936_475 <- StateT char+                                                case xx936_475 of+                                                    ')' -> return ()+                                                    _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d937_474 ["char"])+                                                let ')' = xx936_475+                                                return ()+                                                return (tupE et),+                                             do d939_476 <- get+                                                xx938_477 <- StateT char+                                                case xx938_477 of+                                                    '[' -> return ()+                                                    _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d939_476 ["char"])+                                                let '[' = xx938_477+                                                return ()+                                                et <- StateT hsExpTpl+                                                d943_478 <- get+                                                xx942_479 <- StateT char+                                                case xx942_479 of+                                                    ']' -> return ()+                                                    _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d943_478 ["char"])+                                                let ']' = xx942_479+                                                return ()+                                                return (listE et),+                                             do v <- StateT variable+                                                return (varE (mkName v)),+                                             do t <- StateT typ+                                                return (conE (mkName t)),+                                             do i <- StateT integer+                                                _ <- StateT spaces+                                                return ()+                                                return (litE (integerL i)),+                                             do d953_480 <- get+                                                xx952_481 <- StateT char+                                                case xx952_481 of+                                                    '\'' -> return ()+                                                    _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d953_480 ["char"])+                                                let '\'' = xx952_481+                                                return ()+                                                c <- StateT charLit+                                                d957_482 <- get+                                                xx956_483 <- StateT char+                                                case xx956_483 of+                                                    '\'' -> return ()+                                                    _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d957_482 ["char"])+                                                let '\'' = xx956_483+                                                return ()+                                                return (litE (charL c)),+                                             do d959_484 <- get+                                                xx958_485 <- StateT char+                                                case xx958_485 of+                                                    '"' -> return ()+                                                    _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d959_484 ["char"])+                                                let '"' = xx958_485+                                                return ()+                                                s <- StateT stringLit+                                                d963_486 <- get+                                                xx962_487 <- StateT char+                                                case xx962_487 of+                                                    '"' -> return ()+                                                    _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d963_486 ["char"])+                                                let '"' = xx962_487+                                                return ()+                                                return (litE (stringL s)),+                                             do d965_488 <- get+                                                xx964_489 <- StateT char+                                                case xx964_489 of+                                                    '-' -> return ()+                                                    _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d965_488 ["char"])+                                                let '-' = xx964_489+                                                return ()+                                                _ <- StateT spaces+                                                return ()+                                                e <- StateT hsExp1+                                                return (appE (varE $ mkName "negate") e)]+                hsExpTpl59_133 = foldl1 mplus [do e <- StateT hsExpLam+                                                  _ <- StateT spaces+                                                  return ()+                                                  d975_490 <- get+                                                  xx974_491 <- StateT char+                                                  let c = xx974_491+                                                  unless (isComma c) (gets position >>= (throwError . mkParseError "isComma c" "not match: " "" d975_490 ["char"]))+                                                  _ <- StateT spaces+                                                  return ()+                                                  et <- StateT hsExpTpl+                                                  return (cons e et),+                                               do e <- StateT hsExpLam+                                                  return (cons e emp),+                                               return emp]+                hsTypeArr60_134 = foldl1 mplus [do l <- StateT hsType+                                                   d985_492 <- get+                                                   xx984_493 <- StateT char+                                                   case xx984_493 of+                                                       '-' -> return ()+                                                       _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d985_492 ["char"])+                                                   let '-' = xx984_493+                                                   return ()+                                                   d987_494 <- get+                                                   xx986_495 <- StateT char+                                                   let c = xx986_495+                                                   unless (isGt c) (gets position >>= (throwError . mkParseError "isGt c" "not match: " "" d987_494 ["char"]))+                                                   _ <- StateT spaces+                                                   return ()+                                                   r <- StateT hsTypeArr+                                                   return (appT (appT arrowT (getTyp l)) r),+                                                do t <- StateT hsType+                                                   return (getTyp t)]+                hsType61_135 = foldl1 mplus [do t <- StateT hsType1+                                                ts <- StateT hsType+                                                return (applyTyp (toTyp t) ts),+                                             do t <- StateT hsType1+                                                return (toTyp t)]+                hsType162_136 = foldl1 mplus [do d1001_496 <- get+                                                 xx1000_497 <- StateT char+                                                 case xx1000_497 of+                                                     '[' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d1001_496 ["char"])+                                                 let '[' = xx1000_497+                                                 return ()+                                                 d1003_498 <- get+                                                 xx1002_499 <- StateT char+                                                 case xx1002_499 of+                                                     ']' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d1003_498 ["char"])+                                                 let ']' = xx1002_499+                                                 return ()+                                                 _ <- StateT spaces+                                                 return ()+                                                 return listT,+                                              do d1007_500 <- get+                                                 xx1006_501 <- StateT char+                                                 case xx1006_501 of+                                                     '[' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d1007_500 ["char"])+                                                 let '[' = xx1006_501+                                                 return ()+                                                 t <- StateT hsTypeArr+                                                 d1011_502 <- get+                                                 xx1010_503 <- StateT char+                                                 case xx1010_503 of+                                                     ']' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d1011_502 ["char"])+                                                 let ']' = xx1010_503+                                                 return ()+                                                 _ <- StateT spaces+                                                 return ()+                                                 return (appT listT t),+                                              do d1015_504 <- get+                                                 xx1014_505 <- StateT char+                                                 case xx1014_505 of+                                                     '(' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d1015_504 ["char"])+                                                 let '(' = xx1014_505+                                                 return ()+                                                 _ <- StateT spaces+                                                 return ()+                                                 tt <- StateT hsTypeTpl+                                                 d1021_506 <- get+                                                 xx1020_507 <- StateT char+                                                 case xx1020_507 of+                                                     ')' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d1021_506 ["char"])+                                                 let ')' = xx1020_507+                                                 return ()+                                                 return (tupT tt),+                                              do t <- StateT typToken+                                                 return (conT (mkName t)),+                                              do d1025_508 <- get+                                                 xx1024_509 <- StateT char+                                                 case xx1024_509 of+                                                     '(' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d1025_508 ["char"])+                                                 let '(' = xx1024_509+                                                 return ()+                                                 d1027_510 <- get+                                                 xx1026_511 <- StateT char+                                                 case xx1026_511 of+                                                     '-' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d1027_510 ["char"])+                                                 let '-' = xx1026_511+                                                 return ()+                                                 d1029_512 <- get+                                                 xx1028_513 <- StateT char+                                                 let c = xx1028_513+                                                 unless (isGt c) (gets position >>= (throwError . mkParseError "isGt c" "not match: " "" d1029_512 ["char"]))+                                                 d1031_514 <- get+                                                 xx1030_515 <- StateT char+                                                 case xx1030_515 of+                                                     ')' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d1031_514 ["char"])+                                                 let ')' = xx1030_515+                                                 return ()+                                                 _ <- StateT spaces+                                                 return ()+                                                 return arrowT]+                hsTypeTpl63_137 = foldl1 mplus [do t <- StateT hsTypeArr+                                                   d1037_516 <- get+                                                   xx1036_517 <- StateT char+                                                   let c = xx1036_517+                                                   unless (isComma c) (gets position >>= (throwError . mkParseError "isComma c" "not match: " "" d1037_516 ["char"]))+                                                   _ <- StateT spaces+                                                   return ()+                                                   tt <- StateT hsTypeTpl+                                                   return (cons t tt),+                                                do t <- StateT hsTypeArr+                                                   return (cons t emp),+                                                return emp]+                typ64_138 = foldl1 mplus [do u <- StateT upper+                                             t <- StateT tvtail+                                             return (cons u t)]+                variable65_139 = foldl1 mplus [do l <- StateT lower+                                                  t <- StateT tvtail+                                                  return (cons l t)]+                tvtail66_140 = foldl1 mplus [do a <- StateT alpha+                                                t <- StateT tvtail+                                                return (cons a t),+                                             return emp]+                integer67_141 = foldl1 mplus [do dh <- StateT digit+                                                 ds <- list1_322 (foldl1 mplus [do d <- StateT digit+                                                                                   return d])+                                                 return (read (cons dh ds))]+                alpha68_142 = foldl1 mplus [do u <- StateT upper+                                               return u,+                                            do l <- StateT lower+                                               return l,+                                            do d <- StateT digit+                                               return d,+                                            do d1069_518 <- get+                                               xx1068_519 <- StateT char+                                               case xx1068_519 of+                                                   '\'' -> return ()+                                                   _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d1069_518 ["char"])+                                               let '\'' = xx1068_519+                                               return ()+                                               return '\'']+                upper69_143 = foldl1 mplus [do d1071_520 <- get+                                               xx1070_521 <- StateT char+                                               let u = xx1070_521+                                               unless (isUpper u) (gets position >>= (throwError . mkParseError "isUpper u" "not match: " "" d1071_520 ["char"]))+                                               return u]+                lower70_144 = foldl1 mplus [do d1073_522 <- get+                                               xx1072_523 <- StateT char+                                               let l = xx1072_523+                                               unless (isLowerU l) (gets position >>= (throwError . mkParseError "isLowerU l" "not match: " "" d1073_522 ["char"]))+                                               return l]+                digit71_145 = foldl1 mplus [do d1075_524 <- get+                                               xx1074_525 <- StateT char+                                               let d = xx1074_525+                                               unless (isDigit d) (gets position >>= (throwError . mkParseError "isDigit d" "not match: " "" d1075_524 ["char"]))+                                               return d]+                spaces72_146 = foldl1 mplus [do _ <- StateT space+                                                return ()+                                                _ <- StateT spaces+                                                return ()+                                                return (),+                                             return ()]+                space73_147 = foldl1 mplus [do d1081_526 <- get+                                               xx1080_527 <- StateT char+                                               let s = xx1080_527+                                               unless (isSpace s) (gets position >>= (throwError . mkParseError "isSpace s" "not match: " "" d1081_526 ["char"]))+                                               return (),+                                            do d1083_528 <- get+                                               xx1082_529 <- StateT char+                                               case xx1082_529 of+                                                   '-' -> return ()+                                                   _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d1083_528 ["char"])+                                               let '-' = xx1082_529+                                               return ()+                                               d1085_530 <- get+                                               xx1084_531 <- StateT char+                                               case xx1084_531 of+                                                   '-' -> return ()+                                                   _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d1085_530 ["char"])+                                               let '-' = xx1084_531+                                               return ()+                                               _ <- StateT notNLString+                                               return ()+                                               _ <- StateT newLine+                                               return ()+                                               return (),+                                            do _ <- StateT comment+                                               return ()+                                               return ()]+                notNLString74_148 = foldl1 mplus [do ddd1092_532 <- get+                                                     do err <- ((do _ <- StateT newLine+                                                                    return ()) >> return False) `catchError` const (return True)+                                                        unless err (gets position >>= (throwError . mkParseError ('!' : "_:newLine") "not match: " "" ddd1092_532 ["newLine"]))+                                                     put ddd1092_532+                                                     c <- StateT char+                                                     s <- StateT notNLString+                                                     return (cons c s),+                                                  return emp]+                newLine75_149 = foldl1 mplus [do d1100_533 <- get+                                                 xx1099_534 <- StateT char+                                                 case xx1099_534 of+                                                     '\n' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d1100_533 ["char"])+                                                 let '\n' = xx1099_534+                                                 return ()+                                                 return ()]+                comment76_150 = foldl1 mplus [do d1102_535 <- get+                                                 xx1101_536 <- StateT char+                                                 case xx1101_536 of+                                                     '{' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'{'" "not match pattern: " "" d1102_535 ["char"])+                                                 let '{' = xx1101_536+                                                 return ()+                                                 d1104_537 <- get+                                                 xx1103_538 <- StateT char+                                                 case xx1103_538 of+                                                     '-' -> return ()+                                                     _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d1104_537 ["char"])+                                                 let '-' = xx1103_538+                                                 return ()+                                                 ddd1105_539 <- get+                                                 do err <- ((do d1107_540 <- get+                                                                xx1106_541 <- StateT char+                                                                case xx1106_541 of+                                                                    '#' -> return ()+                                                                    _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d1107_540 ["char"])+                                                                let '#' = xx1106_541+                                                                return ()) >> return False) `catchError` const (return True)+                                                    unless err (gets position >>= (throwError . mkParseError ('!' : "'#':") "not match: " "" ddd1105_539 ["char"]))+                                                 put ddd1105_539+                                                 _ <- StateT comments+                                                 return ()+                                                 _ <- StateT comEnd+                                                 return ()+                                                 return ()]+                comments77_151 = foldl1 mplus [do _ <- StateT notComStr+                                                  return ()+                                                  _ <- StateT comment+                                                  return ()+                                                  _ <- StateT comments+                                                  return ()+                                                  return (),+                                               do _ <- StateT notComStr+                                                  return ()+                                                  return ()]+                notComStr78_152 = foldl1 mplus [do ddd1120_542 <- get+                                                   do err <- ((do _ <- StateT comment+                                                                  return ()) >> return False) `catchError` const (return True)+                                                      unless err (gets position >>= (throwError . mkParseError ('!' : "_:comment") "not match: " "" ddd1120_542 ["comment"]))+                                                   put ddd1120_542+                                                   ddd1123_543 <- get+                                                   do err <- ((do _ <- StateT comEnd+                                                                  return ()) >> return False) `catchError` const (return True)+                                                      unless err (gets position >>= (throwError . mkParseError ('!' : "_:comEnd") "not match: " "" ddd1123_543 ["comEnd"]))+                                                   put ddd1123_543+                                                   _ <- StateT char+                                                   return ()+                                                   _ <- StateT notComStr+                                                   return ()+                                                   return (),+                                                return ()]+                comEnd79_153 = foldl1 mplus [do d1131_544 <- get+                                                xx1130_545 <- StateT char+                                                case xx1130_545 of+                                                    '-' -> return ()+                                                    _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d1131_544 ["char"])+                                                let '-' = xx1130_545+                                                return ()+                                                d1133_546 <- get+                                                xx1132_547 <- StateT char+                                                case xx1132_547 of+                                                    '}' -> return ()+                                                    _ -> gets position >>= (throwError . mkParseError "'}'" "not match pattern: " "" d1133_546 ["char"])+                                                let '}' = xx1132_547+                                                return ()+                                                return ()]+                list1_322 :: forall m a . (MonadPlus m, Applicative m) =>+                                          m a -> m ([a])+                list12_416 :: forall m a . (MonadPlus m, Applicative m) =>+                                           m a -> m ([a])+                list1_322 p = list12_416 p `mplus` return []+                list12_416 p = ((:) <$> p) <*> list1_322 p+                optional3_325 :: forall m a . (MonadPlus m, Applicative m) =>+                                              m a -> m (Maybe a)+                optional3_325 p = (Just <$> p) `mplus` return Nothing 
src/Text/Papillon/SyntaxTree.hs view
@@ -9,13 +9,26 @@ 	= FromVariable String 	| FromSelection Selection 	| FromToken+	| FromTokenChars [Char] 	| FromList ReadFrom 	| FromList1 ReadFrom 	| FromOptional ReadFrom +getReadFromType :: Peg -> TypeQ -> ReadFrom -> TypeQ+getReadFromType peg tknt (FromVariable var) =+	getDefinitionType peg tknt $ searchDefinition peg var+getReadFromType peg tknt (FromSelection sel) = getSelectionType peg tknt sel+getReadFromType _ tknt FromToken = tknt+getReadFromType _ tknt (FromTokenChars _) = tknt+getReadFromType peg tknt (FromList rf) = listT `appT` getReadFromType peg tknt rf+getReadFromType peg tknt (FromList1 rf) = listT `appT` getReadFromType peg tknt rf+getReadFromType peg tknt (FromOptional rf) =+	conT (mkName "Maybe") `appT` getReadFromType peg tknt rf+ nameFromRF :: ReadFrom -> [String] nameFromRF (FromVariable s) = [s] nameFromRF FromToken = ["char"]+nameFromRF (FromTokenChars _) = ["char"] nameFromRF (FromList rf) = nameFromRF rf nameFromRF (FromList1 rf) = nameFromRF rf nameFromRF (FromOptional rf) = nameFromRF rf@@ -23,6 +36,7 @@  showReadFrom :: ReadFrom -> Q String showReadFrom FromToken = return ""+showReadFrom (FromTokenChars cs) = return $ '[' : cs ++ "]" showReadFrom (FromVariable v) = return v showReadFrom (FromList rf) = (++ "*") <$> showReadFrom rf showReadFrom (FromList1 rf) = (++ "+") <$> showReadFrom rf@@ -68,29 +82,74 @@ nameFromExpression :: Expression -> [String] nameFromExpression = nameFromNameLeaf_ . head -type ExpressionHs = (Expression, ExR)+data ExpressionHs+	= ExpressionHs {+		expressionHsExpression :: Expression,+		expressionHsExR :: ExR+	 }+	| ExpressionHsSugar ExR+	| PlainExpressionHs [ReadFrom] +getExpressionHsType :: Peg -> TypeQ -> ExpressionHs -> TypeQ+getExpressionHsType peg tknt (PlainExpressionHs rfs) =+	foldl appT (tupleT $ length rfs) $ map (getReadFromType peg tknt) rfs+getExpressionHsType _ _ _ = error "getExpressionHsType: can't get type"+ showExpressionHs :: ExpressionHs -> Q String-showExpressionHs (ex, hs) = do+showExpressionHs (ExpressionHs ex hs) = do 	expp <- showExpression ex 	hss <- hs 	return $ expp ++ " { " ++ show (ppr hss) ++ " }"+showExpressionHs (ExpressionHsSugar hs) = do+	hss <- hs+	return $ "<" ++ show (ppr hss) ++ ">"+showExpressionHs (PlainExpressionHs rfs) = unwords <$> mapM showReadFrom rfs  nameFromExpressionHs :: ExpressionHs -> [String]-nameFromExpressionHs = nameFromExpression . fst+nameFromExpressionHs (ExpressionHs ex _) = nameFromExpression ex+nameFromExpressionHs (ExpressionHsSugar _) = []+nameFromExpressionHs (PlainExpressionHs rfs) = concatMap nameFromRF rfs -type Selection = [ExpressionHs]+data Selection+	= Selection { expressions :: [ExpressionHs] }+	| PlainSelection { plainExpressions :: [ExpressionHs] } +getSelectionType :: Peg -> TypeQ -> Selection -> TypeQ+getSelectionType peg tknt (PlainSelection ex) =+	foldr (\x y -> (eitherT `appT` x) `appT` y) (conT $ mkName "()") $+		map (getExpressionHsType peg tknt) ex+	where+	eitherT = conT $ mkName "Either"+getSelectionType _ _ _ = error "getSelectionType: can't get type"+ showSelection :: Selection -> Q String-showSelection ehss = intercalate " / " <$> mapM showExpressionHs ehss+showSelection (Selection ehss) = intercalate " / " <$> mapM showExpressionHs ehss+showSelection (PlainSelection ehss) =+	intercalate " / " <$> mapM showExpressionHs ehss  nameFromSelection :: Selection -> [String]-nameFromSelection = concatMap nameFromExpressionHs+nameFromSelection (Selection exs) = concatMap nameFromExpressionHs exs+nameFromSelection (PlainSelection exs) = concatMap nameFromExpressionHs exs -type Definition = (String, TypeQ, Selection)+data Definition+	= Definition String TypeQ Selection+	| PlainDefinition String Selection type Peg = [Definition] type TTPeg = (TypeQ, TypeQ, Peg) +searchDefinition :: Peg -> String -> Definition+searchDefinition peg var = case filter ((== var) . getDefinitionName) peg of+	[d] -> d+	_ -> error "searchDefinition: bad"++getDefinitionName :: Definition -> String+getDefinitionName (Definition n _ _) = n+getDefinitionName (PlainDefinition n _) = n++getDefinitionType :: Peg -> TypeQ -> Definition -> TypeQ+getDefinitionType _ _ (Definition _ typ _) = typ+getDefinitionType peg tknt (PlainDefinition _ sel) = getSelectionType peg tknt sel+ type Ex = (ExpQ -> ExpQ) -> ExpQ type ExR = ExpQ type ExRL = [ExpQ]@@ -132,8 +191,8 @@ mkExpressionHs :: a -> ExR -> (a, ExR) mkExpressionHs x y = (x, y) -mkDef :: a -> TypeQ -> c -> (a, TypeQ, c)-mkDef x y z = (x, y, z)+mkDef :: String -> TypeQ -> Selection -> Definition+mkDef = Definition  isOpTailChar :: Char -> Bool isOpTailChar = (`elem` ":+*/-!|&.^=<>$")
src/Text/PapillonCore.hs view
@@ -1,5 +1,5 @@ {-# LANGUAGE TemplateHaskell, PackageImports, TypeFamilies, FlexibleContexts,-	FlexibleInstances #-}+	FlexibleInstances, TupleSections #-}  module Text.PapillonCore ( 	-- * For Text.Papillon library@@ -27,6 +27,7 @@ 	ModuleName, 	ExportList, 	Code,+	(<*>) ) where  import Language.Haskell.TH@@ -45,10 +46,19 @@ isOptionalUsed = any isOptionalUsedDefinition  isOptionalUsedDefinition :: Definition -> Bool-isOptionalUsedDefinition (_, _, sel) = any isOptionalUsedSelection sel+isOptionalUsedDefinition (Definition _ _ (Selection sel)) =+	any isOptionalUsedSelection sel+isOptionalUsedDefinition (Definition _ _ (PlainSelection sel)) =+	any isOptionalUsedSelection sel+isOptionalUsedDefinition (PlainDefinition _ (Selection sel)) =+	any isOptionalUsedSelection sel+isOptionalUsedDefinition (PlainDefinition _ (PlainSelection sel)) =+	any isOptionalUsedSelection sel  isOptionalUsedSelection :: ExpressionHs -> Bool-isOptionalUsedSelection = any isOptionalUsedLeafName . fst+isOptionalUsedSelection (ExpressionHs ex _) = any isOptionalUsedLeafName ex+isOptionalUsedSelection (ExpressionHsSugar _) = False+isOptionalUsedSelection (PlainExpressionHs rfs) = any isOptionalUsedReadFrom rfs  isOptionalUsedLeafName :: NameLeaf_ -> Bool isOptionalUsedLeafName (Here nl) = isOptionalUsedLeafName' nl@@ -60,17 +70,27 @@  isOptionalUsedReadFrom :: ReadFrom -> Bool isOptionalUsedReadFrom (FromOptional _) = True-isOptionalUsedReadFrom (FromSelection sel) = any isOptionalUsedSelection sel+isOptionalUsedReadFrom (FromSelection (Selection sel)) =+	any isOptionalUsedSelection sel isOptionalUsedReadFrom _ = False  isListUsed :: Peg -> Bool isListUsed = any isListUsedDefinition  isListUsedDefinition :: Definition -> Bool-isListUsedDefinition (_, _, sel) = any isListUsedSelection sel+isListUsedDefinition (Definition _ _ (Selection sel)) =+	any isListUsedSelection sel+isListUsedDefinition (Definition _ _ (PlainSelection sel)) =+	any isListUsedSelection sel+isListUsedDefinition (PlainDefinition _ (Selection sel)) =+	any isListUsedSelection sel+isListUsedDefinition (PlainDefinition _ (PlainSelection sel)) =+	any isListUsedSelection sel  isListUsedSelection :: ExpressionHs -> Bool-isListUsedSelection = any isListUsedLeafName . fst+isListUsedSelection (ExpressionHs ex _) = any isListUsedLeafName ex+isListUsedSelection (ExpressionHsSugar _) = False+isListUsedSelection (PlainExpressionHs rfs) = any isListUsedReadFrom rfs  isListUsedLeafName :: NameLeaf_ -> Bool isListUsedLeafName (Here nl) = isListUsedLeafName' nl@@ -82,6 +102,11 @@ isListUsedLeafName' (NameLeaf _ (FromList1 _) _) = True isListUsedLeafName' _ = False +isListUsedReadFrom :: ReadFrom -> Bool+isListUsedReadFrom (FromList _) = True+isListUsedReadFrom (FromList1 _) = True+isListUsedReadFrom _ = False+ catchErrorN, unlessN :: Bool -> Name catchErrorN True = 'catchError catchErrorN False = mkName "catchError"@@ -187,7 +212,7 @@ 	listN <- newNewName glb "list" 	list1N <- newNewName glb "list1" 	optionalN <- newNewName glb "optional"-	pNames <- mapM (newNewName glb . \(n, _, _) -> n) pg+	pNames <- mapM (newNewName glb . getDefinitionName) pg  	pgenE <- varE pgn `appE` varE (mkName "initialPos") 	decs <- (:)@@ -205,7 +230,7 @@  derivs :: Bool -> TypeQ -> TypeQ -> Peg -> DecQ derivs _ src tkn pegg = dataD (cxt []) (mkName "Derivs") [] [-	recC (mkName "Derivs") $ map (derivs1 src) pegg ++ [+	recC (mkName "Derivs") $ map (derivs1 pegg src tkn) pegg ++ [ 		varStrictType dvCharsN $ strictType notStrict $ 			resultT src tkn, 		varStrictType dvPosN $ strictType notStrict $@@ -213,9 +238,12 @@ 	 ]  ] [] -derivs1 :: TypeQ -> Definition -> VarStrictTypeQ-derivs1 src (name, typ, _) =+derivs1 :: Peg -> TypeQ -> TypeQ -> Definition -> VarStrictTypeQ+derivs1 _ src _ (Definition name typ _) = 	varStrictType (mkName name) $ strictType notStrict $ resultT src typ+derivs1 pg src tkn (PlainDefinition name sel) =+	varStrictType (mkName name) $ strictType notStrict $ resultT src $+		getSelectionType pg tkn sel  throwErrorPackratMBody :: Bool -> ExpQ -> ExpQ -> ExpQ -> ExpQ -> ExpQ -> ExpQ throwErrorPackratMBody th code msg com d ns = infixApp@@ -254,7 +282,12 @@ 	tmps <- mapM (newNewName g) names 	parseE' g th pgn tmps pnames $ map mkName names 	where-	names = map (\(n, _, _) -> n) pegg+	names = map getDefinitionName pegg++getDefinitionName :: Definition -> String+getDefinitionName (Definition n _ _) = n+getDefinitionName (PlainDefinition n _) = n+ parseE' :: IORef Int -> Bool -> Name -> [Name] -> [Name] -> [Name] -> ClauseQ parseE' g th pgn tmps pnames names = do 	chars <- newNewName g "chars"@@ -301,14 +334,57 @@ pSomes g th lst lst1 opt = zipWithM $ pSomes1 g th lst lst1 opt  pSomes1 :: IORef Int -> Bool -> Name -> Name -> Name -> Name -> Definition -> DecQ-pSomes1 g th lst lst1 opt pname (_, _, sel) = flip (valD $ varP pname) [] $-	normalB $ pSomes1Sel g th lst lst1 opt sel+pSomes1 g th lst lst1 opt pname (Definition _ _ sel) =+	flip (valD $ varP pname) [] $ normalB $ pSomes1Sel g th lst lst1 opt sel+pSomes1 g th lst lst1 opt pname (PlainDefinition _ sel) =+	flip (valD $ varP pname) [] $ normalB $ pSomes1Sel g th lst lst1 opt sel  pSomes1Sel :: IORef Int -> Bool -> Name -> Name -> Name -> Selection -> ExpQ-pSomes1Sel g th lst lst1 opt sel =+pSomes1Sel g th lst lst1 opt (Selection sel) = 	varE (mkName "foldl1") `appE` varE (mplusN th) `appE`-		listE (map (uncurry $ pSome_ g th lst lst1 opt) sel)+		listE (map (processExpressionHs g th lst lst1 opt) sel)+pSomes1Sel g th lst lst1 opt (PlainSelection sel) =+	varE (mkName "foldl1") `appE` varE (mplusN th) `appE`+		listE (zipWith+			(flip putLeftRight . processExpressionHs g th lst lst1 opt)+			sel [0..]) +putLeftRight :: Int -> ExpQ -> ExpQ+putLeftRight 0 ex = leftE `appE` ex+putLeftRight n ex = rightE `appE` putLeftRight (n - 1) ex++rightE, leftE :: ExpQ+rightE = varE (mkName "fmap") `appE` conE (mkName "Right")+leftE = varE (mkName "fmap") `appE` conE (mkName "Left")++processExpressionHs ::+	IORef Int -> Bool -> Name -> Name -> Name -> ExpressionHs -> ExpQ+processExpressionHs g th lst lst1 opt (ExpressionHs expr exr) =+	pSome_ g th lst lst1 opt expr exr+processExpressionHs g th lst lst1 opt (ExpressionHsSugar ex) = do+	r <- newNewName g "r"+	pSome_ g th lst lst1 opt [expr r] (varE r)+	where+	expr x = Here $ NameLeaf (varP x, "") FromToken $ Just $ (, "") $+		ex `appE` varE x+processExpressionHs g th lst lst1 opt (PlainExpressionHs rfs) =+	foldl (\x y -> infixApp x appApply y)+		(returnEQ `appE` tupleE g (length rfs)) $+			map (transReadFrom g th lst lst1 opt) rfs++tupleE :: IORef Int -> Int -> ExpQ+tupleE _ 0 = conE $ mkName "()"+tupleE _ 1 = varE $ mkName "id"+tupleE g n = do+	xs <- replicateM n $ newNewName g "x"+	lamE (map varP xs) $ tupE (map varE xs)++appApply :: ExpQ+appApply = varE $ mkName "<*>"++returnEQ :: ExpQ+returnEQ = varE $ mkName "return"+ pSome_ :: IORef Int -> Bool -> Name -> Name -> Name -> [NameLeaf_] -> ExpQ -> ExpQ pSome_ g th lst lst1 opt nls ret = fmap smartDoE $ do 	x <- mapM (transLeaf g th lst lst1 opt) nls@@ -355,6 +431,17 @@  transReadFrom :: IORef Int -> Bool -> Name -> Name -> Name -> ReadFrom -> ExpQ transReadFrom _ th _ _ _ FromToken = conE (stateTN' th) `appE` varE dvCharsN+transReadFrom g th _ _ _ rf@(FromTokenChars cs) = do+	d <- newNewName g "d"+	r <- newNewName g "r"+	doE [+		bindS (varP d) $ varE $ getN th,+		bindS (varP r) $ conE (stateTN' th) `appE` varE dvCharsN,+		afterCheck th (test r) d (nameFromRF rf) "",+		noBindS $ varE (mkName "return") `appE` varE r+	 ]+	where+	test d' = infixApp (varE d') (varE $ mkName "elem") (litE $ stringL cs) transReadFrom _ th _ _ _ (FromVariable var) = conE (stateTN' th) `appE` varE (mkName var) transReadFrom g th l l1 o (FromSelection sel) = pSomes1Sel g th l l1 o sel transReadFrom g th l l1 o (FromList rf) = varE l `appE` transReadFrom g th l l1 o rf