packages feed

uuagc 0.9.6 → 0.9.7

raw patch · 29 files changed

+11736/−12945 lines, 29 files

Files

src-derived/AbstractSyntax.hs view
@@ -40,8 +40,9 @@          child manualAttrOrderMap : {AttrOrderMap}          child paramMap       : {ParamMap}          child contextMap     : {ContextMap}+         child uniqueMap      : {UniqueMap} -}-data Grammar = Grammar (TypeSyns) (UseMap) (Derivings) (Set NontermIdent) (Nonterminals) (PragmaMap) (AttrOrderMap) (ParamMap) (ContextMap)+data Grammar = Grammar (TypeSyns) (UseMap) (Derivings) (Set NontermIdent) (Nonterminals) (PragmaMap) (AttrOrderMap) (ParamMap) (ContextMap) (UniqueMap) -- Nonterminal ------------------------------------------------- {-    alternatives:
src-derived/AbstractSyntaxDump.hs view
@@ -165,12 +165,13 @@          child manualAttrOrderMap : {AttrOrderMap}          child paramMap       : {ParamMap}          child contextMap     : {ContextMap}+         child uniqueMap      : {UniqueMap} -} -- cata sem_Grammar :: Grammar ->                T_Grammar-sem_Grammar (Grammar _typeSyns _useMap _derivings _wrappers _nonts _pragmas _manualAttrOrderMap _paramMap _contextMap) =-    (sem_Grammar_Grammar _typeSyns _useMap _derivings _wrappers (sem_Nonterminals _nonts) _pragmas _manualAttrOrderMap _paramMap _contextMap)+sem_Grammar (Grammar _typeSyns _useMap _derivings _wrappers _nonts _pragmas _manualAttrOrderMap _paramMap _contextMap _uniqueMap) =+    (sem_Grammar_Grammar _typeSyns _useMap _derivings _wrappers (sem_Nonterminals _nonts) _pragmas _manualAttrOrderMap _paramMap _contextMap _uniqueMap) -- semantic domain newtype T_Grammar = T_Grammar (( PP_Doc)) data Inh_Grammar = Inh_Grammar {}@@ -188,8 +189,9 @@                        AttrOrderMap ->                        ParamMap ->                        ContextMap ->+                       UniqueMap ->                        T_Grammar-sem_Grammar_Grammar typeSyns_ useMap_ derivings_ wrappers_ (T_Nonterminals nonts_) pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ =+sem_Grammar_Grammar typeSyns_ useMap_ derivings_ wrappers_ (T_Nonterminals nonts_) pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ uniqueMap_ =     (T_Grammar (let _lhsOpp :: PP_Doc                     _nontsIpp :: PP_Doc                     _nontsIppL :: ([PP_Doc])
src-derived/Code.hs view
@@ -246,6 +246,7 @@           | TupleType (Types)           | TypeApp (Type) (Types)           | UnboxedTupleType (Types)+          deriving ( Show) -- Types ------------------------------------------------------- {-    alternatives:
src-derived/ConcreteSyntax.hs view
@@ -97,7 +97,8 @@          child set            : NontSet       alternative Txt:          child pos            : {Pos}-         child name           : {NontermIdent}+         child name           : {Identifier}+         child mbNt           : {Maybe NontermIdent}          child lines          : {[String]}       alternative Type:          child pos            : {Pos}@@ -116,7 +117,7 @@           | Pragma (Pos) ([NontermIdent])           | Sem (Pos) (ClassContext) (NontSet) (Attrs) (SemAlts)           | Set (Pos) (NontermIdent) (NontSet)-          | Txt (Pos) (NontermIdent) ([String])+          | Txt (Pos) (Identifier) (Maybe NontermIdent) ([String])           | Type (Pos) (ClassContext) (NontermIdent) ([Identifier]) (ComplexType)           | Wrapper (Pos) (NontSet) -- Elems -------------------------------------------------------@@ -186,11 +187,15 @@       alternative TypeDef:          child ident          : {Identifier}          child tp             : {Type}+      alternative UniqueDef:+         child ident          : {Identifier}+         child ref            : {Identifier} -} data SemDef = AttrOrderBefore ([(Identifier,Identifier)]) ([(Identifier,Identifier)])             | Def (Pattern) (Expression) (Bool)             | SemPragma ([NontermIdent])             | TypeDef (Identifier) (Type)+            | UniqueDef (Identifier) (Identifier) -- SemDefs ----------------------------------------------------- {-    alternatives:
src-derived/DeclBlocks.hs view
@@ -1,4 +1,3 @@- -- UUAGC 0.9.5 (DeclBlocks.ag) module DeclBlocks where @@ -9,17 +8,17 @@       alternative DeclBlock:          child defs           : {[Decl]}          child visit          : {Decl}-         child next           : DeclBlocks +         child next           : DeclBlocks       alternative DeclTerminator:          child defs           : {[Decl]}          child result         : {Expr} -}-data DeclBlocks = DeclBlock ([Decl]) (Decl) (DeclBlocks) -                | DeclTerminator ([Decl]) (Expr) +data DeclBlocks = DeclBlock ([Decl]) (Decl) (DeclBlocks)+                | DeclTerminator ([Decl]) (Expr) -- DeclBlocksRoot ---------------------------------------------- {-    alternatives:       alternative DeclBlocksRoot:-         child blocks         : DeclBlocks +         child blocks         : DeclBlocks -}-data DeclBlocksRoot = DeclBlocksRoot (DeclBlocks) +data DeclBlocksRoot = DeclBlocksRoot (DeclBlocks)
src-derived/DefaultRules.hs view
@@ -1,2115 +1,1635 @@--- UUAGC 0.9.5 (DefaultRules.ag)-module DefaultRules where--import qualified List (delete,intersperse)--import qualified Data.Set as Set-import qualified Data.Map as Map-import Data.Map(Map)-import qualified UU.DData.Seq as Seq-import UU.DData.Seq(Seq,(<>))-import UU.Scanner.Position(noPos)-import Pretty-import Maybe-import HsToken-import HsTokenScanner--import AbstractSyntax-import ErrorMessages--import Options(Options,modcopy,rename)---- AbstractSyntax.ag imports-import Data.Set(Set)-import Data.Map(Map)-import Patterns    (Pattern(..),Patterns)-import Expression  (Expression(..))-import CommonTypes---- Patterns.ag imports-import UU.Scanner.Position(Pos)-import CommonTypes (ConstructorIdent,Identifier)--fieldName n       = '@' : getName n-	-locName n         = '@' : getName n--attrName fld attr- | fld == _LOC    = '@' :                       getName attr - | otherwise      = '@' : getName fld ++ "." ++ getName attr--_ACHILD = Ident "(" noPos -- hack-	-	-getConName typeSyns rename nt con1 - | nt `elem` map fst typeSyns  =  synonym- | otherwise                   =  normalName- where con                            = getName con1-       normalName | rename            = getName nt++"_"++ con-                  | otherwise         =  con-       synonym    | con == "Cons"     = "(:)"-                  | con == "Nil"      = "[]"-                  | con == "Just"     = "Just"-                  | con == "Nothing"  = "Nothing"-                  | otherwise         = normalName----concatSeq = foldr Seq.append Seq.empty--splitAttrs :: Map Identifier a -> [Identifier] -> ([(Identifier,a)],[Identifier])	  -- a used as (String,String)-splitAttrs _      []           -  =  ([],[])-splitAttrs useMap (n:rest) -  =  let (uses,normals) = splitAttrs useMap rest-     in case Map.lookup n useMap of-          Just x  -> ((n,x):uses ,   normals )       -          Nothing -> (      uses , n:normals )--removeDefined ::  Set (Identifier,Identifier) -> (Identifier,Attributes) -> (Identifier,[Identifier])-removeDefined defined (fld,as) -  = ( fld-    , [ a -      | a <- Map.keys as-      , not (Set.member (fld,a) defined) -      ]-    )---	-	-	-deprecatedCopyRuleError nt con fld a- = let mesg = -                "In the definitions for alternative" -            >#< getName con -            >#< "of nonterminal" -            >#< getName nt -            >|< "," -            >-< "the value of field" -            >#< getName a  -            >#< "is copied by a copy-rule."                                    -            >-< "Copying the value of a field using a copy-rule is deprecated"-            >-< "Please add the following lines to your code:"-            >-< (    "SEM" -                >#< getName nt-                >-< indent 2 (      "|" -                             >#< getName con -                             >#< getName fld -                             >#< "." -                             >#< a -                             >#< "=" -                             >#< "@" -                             >|< a-                             )-                )  -    in  CustomError True (getPos a) mesg-	-	-missingRuleErrorExpr nt con fld a- = "error \"missing rule: " -   ++ show nt  ++ "." ++ show con ++ "." -   ++ show fld ++ "." ++ show a   ++ "\""-	-	-	-makeRule :: (Identifier,Identifier) -> Expression -> String -> Rule-makeRule (f1,a1) expr origin - = Rule (Alias f1 a1 (Underscore noPos) []) -        expr -        False -        origin---useRule :: Set Identifier -> [(Identifier,Attributes)] -> (Identifier,(String,String,String)) -> Rule-useRule locals ch_outs (n,(op,e,pos)) - =  let elems = [ fld -                | (fld,as) <- ch_outs-                , Map.member n as-                ]--        expr | Set.member n locals  =  attrName _LOC n-             | null elems           =  e-             | otherwise            =  foldr1 (\x y -> x ++ " " ++ op ++ " " ++ y) -                                              (map (flip attrName n) elems)--        tks | Set.member n locals  =  [AGLocal n noPos Nothing]-            | null elems           =  lexTokens noPos e-            | otherwise            =  lexTokens noPos str-                                      where-                                        str = foldr1 (\x y -> x ++ " " ++ op ++ " " ++ y) -                                                (map (flip attrName n) elems)--    in makeRule (_LHS,n) -                (Expression noPos tks)-                ("use rule " ++ pos)-----selfRule lhsNecLoc attr x   - = let expr | lhsNecLoc  = locName attr-            | otherwise  = x--       tks | lhsNecLoc   = [AGLocal attr noPos Nothing]-           | otherwise   = lexTokens noPos x--   in makeRule (if lhsNecLoc then _LHS else _LOC,attr)-               (Expression noPos tks)-               "self rule"-               ----concatRE rsess = let (rss,ess) = unzip rsess-                 in (concat rss, concatSeq ess)---copyRule :: Identifier -> Identifier -> Bool -> Set Identifier -> (Map Identifier Identifier, (Identifier,[Identifier])) -> ([Rule], Seq Error)-copyRule nt con modcopy locals (env,(fld,as)) - = concatRE (map copyRu as)- - where -       copyRu a-           = ( [ makeRule (fld,a) -                          (Expression noPos tks)-                          (cruletxt sel)-               ]-             , err-             )-                -        where -              sel -               |    not modcopy -                 && Set.member a locals  =  Just _LOC-               | otherwise               =  Map.lookup a env--              (expr,err) -               = case sel of-                  Nothing         -> ( missingRuleErrorExpr nt con fld a-                                     , Seq.single (MissingRule nt con fld a)-                                     )-                  Just f -                   | f == _ACHILD -> ( fieldName a-                                     , Seq.single (deprecatedCopyRuleError nt con fld a)-                                     )-                   | otherwise    -> ( attrName f a-                                     , Seq.empty-                                     )-              -              (tks,err')-               = case sel of-                  Nothing         -> ( [HsToken (missingRuleErrorExpr nt con fld a) noPos]-                                     , Seq.single (MissingRule nt con fld a)-                                     )-                  Just f -                   | f == _ACHILD -> ( [AGLocal a noPos Nothing]-                                     , Seq.single (deprecatedCopyRuleError nt con fld a)-                                     )-                   | otherwise    -> ( [AGField f a noPos Nothing]-                                     , Seq.empty-                                     )--              cruletxt sel-               | local                            = "copy rule (from local)"-               | deprChild                        = "deprecated child copy"-               | Set.member a locals && nonlocal  = "modified copy rule"-               | incoming && outgoing             = "copy rule (chain)"-               | incoming                         = "copy rule (down)"-               | outgoing                         = "copy rule (up)"-               | otherwise                        = "copy rule (chain)"-                where outgoing  =  fld == _LHS-                      incoming  =  maybe False (== _LHS)    sel-                      nonlocal  =  maybe False (/= _LOC)    sel-                      local     =  maybe False (== _LOC)    sel-                      deprChild =  maybe False (== _ACHILD) sel--{- -multiRule replaces-  loc.(a,b) = e-by  -  loc.tup1  = e-  loc.(a,_) = @loc.tup1-  loc.(_,b) = @loc.tup1-It needs to thread a unique number for inventing names for the tuples.--It also works for nested tuples:-  loc.(a,(b,c)) = e-becomes-  loc.tup1      = e-  loc.(a,_)     = @loc.tup1-  loc.(_,tup2)  = @loc.tup1-  loc.(b,_)     = @loc.tup2-  loc.(_,c)     = @loc.tup2--}--multiRule :: Rule -> Int -> ([Rule], Int)	-multiRule (Rule pat expr owrt origin) uniq-  =  let f :: (Pattern->Pattern) -> Expression -> Pattern -> Int -> (Pattern, ([Rule], Int))-         f w e (Product pos pats) n -           = let freshName = Ident ("_tup" ++ show n) pos -                 freshExpr = Expression pos freshTks-                 freshTks  = [AGField _LOC freshName pos Nothing]-                 freshPat  = Alias _LOC freshName (Underscore pos) pats-                 a = length pats - 1-                 us b p = Product pos (replicate (a-b) (Underscore pos) ++ [p] ++ replicate b (Underscore pos))-                 g :: Pattern -> ([Pattern],[Rule],Int) -> ([Pattern],[Rule],Int)-                 g p (xs1,rs1,n1)   = let (x2,(rs2,n2)) = f (us (length xs1)) freshExpr p n1-                                      in  (x2:xs1, rs2++rs1, n2)-                 (xs9,rs9,n9) = foldr g ([], [], n+1) pats-             in  ( freshPat-                 , ( Rule (w freshPat) e owrt origin : rs9-                   , n9-                   )-                 )-         f w e p n -           = ( p-             , ( [Rule (w p) e owrt origin]-               , n-               )-             )-     in snd (f id expr pat uniq)---- Child --------------------------------------------------------{--   visit 0:-      inherited attributes:-         con                  : ConstructorIdent-         cr                   : Bool-         nt                   : NontermIdent-      synthesized attributes:-         errors               : Seq Error-         field                :  (Identifier,Type,Bool) -         inherited            : Attributes-         name                 : Identifier-         output               : SELF-         synthesized          : Attributes-   alternatives:-      alternative Child:-         child name           : {Identifier}-         child tp             : {Type}-         child inh            : {Attributes}-         child syn            : {Attributes}-         child higherOrder    : {Bool}-         visit 0:-            local output      : _--}--- cata-sem_Child :: Child ->-             T_Child-sem_Child (Child _name _tp _inh _syn _higherOrder) =-    (sem_Child_Child _name _tp _inh _syn _higherOrder)--- semantic domain-newtype T_Child = T_Child (ConstructorIdent ->-                           Bool ->-                           NontermIdent ->-                           ( (Seq Error),( (Identifier,Type,Bool) ),Attributes,Identifier,Child,Attributes))-data Inh_Child = Inh_Child {con_Inh_Child :: ConstructorIdent,cr_Inh_Child :: Bool,nt_Inh_Child :: NontermIdent}-data Syn_Child = Syn_Child {errors_Syn_Child :: Seq Error,field_Syn_Child ::  (Identifier,Type,Bool) ,inherited_Syn_Child :: Attributes,name_Syn_Child :: Identifier,output_Syn_Child :: Child,synthesized_Syn_Child :: Attributes}-wrap_Child (T_Child sem) (Inh_Child _lhsIcon _lhsIcr _lhsInt) =-    (let ( _lhsOerrors,_lhsOfield,_lhsOinherited,_lhsOname,_lhsOoutput,_lhsOsynthesized) =-             (sem _lhsIcon _lhsIcr _lhsInt)-     in  (Syn_Child _lhsOerrors _lhsOfield _lhsOinherited _lhsOname _lhsOoutput _lhsOsynthesized))-sem_Child_Child :: Identifier ->-                   Type ->-                   Attributes ->-                   Attributes ->-                   Bool ->-                   T_Child-sem_Child_Child name_ tp_ inh_ syn_ higherOrder_ =-    (T_Child (\ _lhsIcon-                _lhsIcr-                _lhsInt ->-                  (let _lhsOname :: Identifier-                       _lhsOinherited :: Attributes-                       _lhsOsynthesized :: Attributes-                       _lhsOfield :: ( (Identifier,Type,Bool) )-                       _lhsOerrors :: (Seq Error)-                       _lhsOoutput :: Child-                       -- "DefaultRules.ag"(line 140, column 11)-                       _lhsOname =-                           name_-                       -- "DefaultRules.ag"(line 149, column 11)-                       _lhsOinherited =-                           inh_-                       -- "DefaultRules.ag"(line 150, column 11)-                       _lhsOsynthesized =-                           syn_-                       -- "DefaultRules.ag"(line 411, column 11)-                       _lhsOfield =-                           (name_,tp_,higherOrder_)-                       -- use rule "DefaultRules.ag"(line 109, column 19)-                       _lhsOerrors =-                           Seq.empty-                       -- self rule-                       _output =-                           Child name_ tp_ inh_ syn_ higherOrder_-                       -- self rule-                       _lhsOoutput =-                           _output-                   in  ( _lhsOerrors,_lhsOfield,_lhsOinherited,_lhsOname,_lhsOoutput,_lhsOsynthesized))))--- Children -----------------------------------------------------{--   visit 0:-      inherited attributes:-         con                  : ConstructorIdent-         cr                   : Bool-         nt                   : NontermIdent-      synthesized attributes:-         errors               : Seq Error-         fields               : [(Identifier,Type,Bool)]-         inputs               : [(Identifier, Attributes)]-         output               : SELF-         outputs              : [(Identifier, Attributes)]-   alternatives:-      alternative Cons:-         child hd             : Child-         child tl             : Children-         visit 0:-            local output      : _-      alternative Nil:-         visit 0:-            local output      : _--}--- cata-sem_Children :: Children ->-                T_Children-sem_Children list =-    (Prelude.foldr sem_Children_Cons sem_Children_Nil (Prelude.map sem_Child list))--- semantic domain-newtype T_Children = T_Children (ConstructorIdent ->-                                 Bool ->-                                 NontermIdent ->-                                 ( (Seq Error),([(Identifier,Type,Bool)]),([(Identifier, Attributes)]),Children,([(Identifier, Attributes)])))-data Inh_Children = Inh_Children {con_Inh_Children :: ConstructorIdent,cr_Inh_Children :: Bool,nt_Inh_Children :: NontermIdent}-data Syn_Children = Syn_Children {errors_Syn_Children :: Seq Error,fields_Syn_Children :: [(Identifier,Type,Bool)],inputs_Syn_Children :: [(Identifier, Attributes)],output_Syn_Children :: Children,outputs_Syn_Children :: [(Identifier, Attributes)]}-wrap_Children (T_Children sem) (Inh_Children _lhsIcon _lhsIcr _lhsInt) =-    (let ( _lhsOerrors,_lhsOfields,_lhsOinputs,_lhsOoutput,_lhsOoutputs) =-             (sem _lhsIcon _lhsIcr _lhsInt)-     in  (Syn_Children _lhsOerrors _lhsOfields _lhsOinputs _lhsOoutput _lhsOoutputs))-sem_Children_Cons :: T_Child ->-                     T_Children ->-                     T_Children-sem_Children_Cons (T_Child hd_) (T_Children tl_) =-    (T_Children (\ _lhsIcon-                   _lhsIcr-                   _lhsInt ->-                     (let _lhsOinputs :: ([(Identifier, Attributes)])-                          _lhsOoutputs :: ([(Identifier, Attributes)])-                          _lhsOfields :: ([(Identifier,Type,Bool)])-                          _lhsOerrors :: (Seq Error)-                          _lhsOoutput :: Children-                          _hdOcon :: ConstructorIdent-                          _hdOcr :: Bool-                          _hdOnt :: NontermIdent-                          _tlOcon :: ConstructorIdent-                          _tlOcr :: Bool-                          _tlOnt :: NontermIdent-                          _hdIerrors :: (Seq Error)-                          _hdIfield :: ( (Identifier,Type,Bool) )-                          _hdIinherited :: Attributes-                          _hdIname :: Identifier-                          _hdIoutput :: Child-                          _hdIsynthesized :: Attributes-                          _tlIerrors :: (Seq Error)-                          _tlIfields :: ([(Identifier,Type,Bool)])-                          _tlIinputs :: ([(Identifier, Attributes)])-                          _tlIoutput :: Children-                          _tlIoutputs :: ([(Identifier, Attributes)])-                          -- "DefaultRules.ag"(line 153, column 10)-                          _lhsOinputs =-                              (_hdIname, _hdIinherited) : _tlIinputs-                          -- "DefaultRules.ag"(line 153, column 10)-                          _lhsOoutputs =-                              (_hdIname, _hdIsynthesized) : _tlIoutputs-                          -- "DefaultRules.ag"(line 407, column 10)-                          _lhsOfields =-                              _hdIfield : _tlIfields-                          -- use rule "DefaultRules.ag"(line 109, column 19)-                          _lhsOerrors =-                              _hdIerrors Seq.<> _tlIerrors-                          -- self rule-                          _output =-                              (:) _hdIoutput _tlIoutput-                          -- self rule-                          _lhsOoutput =-                              _output-                          -- copy rule (down)-                          _hdOcon =-                              _lhsIcon-                          -- copy rule (down)-                          _hdOcr =-                              _lhsIcr-                          -- copy rule (down)-                          _hdOnt =-                              _lhsInt-                          -- copy rule (down)-                          _tlOcon =-                              _lhsIcon-                          -- copy rule (down)-                          _tlOcr =-                              _lhsIcr-                          -- copy rule (down)-                          _tlOnt =-                              _lhsInt-                          ( _hdIerrors,_hdIfield,_hdIinherited,_hdIname,_hdIoutput,_hdIsynthesized) =-                              (hd_ _hdOcon _hdOcr _hdOnt)-                          ( _tlIerrors,_tlIfields,_tlIinputs,_tlIoutput,_tlIoutputs) =-                              (tl_ _tlOcon _tlOcr _tlOnt)-                      in  ( _lhsOerrors,_lhsOfields,_lhsOinputs,_lhsOoutput,_lhsOoutputs))))-sem_Children_Nil :: T_Children-sem_Children_Nil  =-    (T_Children (\ _lhsIcon-                   _lhsIcr-                   _lhsInt ->-                     (let _lhsOinputs :: ([(Identifier, Attributes)])-                          _lhsOoutputs :: ([(Identifier, Attributes)])-                          _lhsOfields :: ([(Identifier,Type,Bool)])-                          _lhsOerrors :: (Seq Error)-                          _lhsOoutput :: Children-                          -- "DefaultRules.ag"(line 155, column 10)-                          _lhsOinputs =-                              []-                          -- "DefaultRules.ag"(line 155, column 10)-                          _lhsOoutputs =-                              []-                          -- "DefaultRules.ag"(line 408, column 10)-                          _lhsOfields =-                              []-                          -- use rule "DefaultRules.ag"(line 109, column 19)-                          _lhsOerrors =-                              Seq.empty-                          -- self rule-                          _output =-                              []-                          -- self rule-                          _lhsOoutput =-                              _output-                      in  ( _lhsOerrors,_lhsOfields,_lhsOinputs,_lhsOoutput,_lhsOoutputs))))--- Grammar ------------------------------------------------------{--   visit 0:-      inherited attribute:-         options              : Options-      synthesized attributes:-         errors               : Seq Error-         output               : SELF-   alternatives:-      alternative Grammar:-         child typeSyns       : {TypeSyns}-         child useMap         : {UseMap}-         child derivings      : {Derivings}-         child wrappers       : {Set NontermIdent}-         child nonts          : Nonterminals-         child pragmas        : {PragmaMap}-         child manualAttrOrderMap : {AttrOrderMap}-         child paramMap       : {ParamMap}-         child contextMap     : {ContextMap}-         visit 0:-            local output      : _--}--- cata-sem_Grammar :: Grammar ->-               T_Grammar-sem_Grammar (Grammar _typeSyns _useMap _derivings _wrappers _nonts _pragmas _manualAttrOrderMap _paramMap _contextMap) =-    (sem_Grammar_Grammar _typeSyns _useMap _derivings _wrappers (sem_Nonterminals _nonts) _pragmas _manualAttrOrderMap _paramMap _contextMap)--- semantic domain-newtype T_Grammar = T_Grammar (Options ->-                               ( (Seq Error),Grammar))-data Inh_Grammar = Inh_Grammar {options_Inh_Grammar :: Options}-data Syn_Grammar = Syn_Grammar {errors_Syn_Grammar :: Seq Error,output_Syn_Grammar :: Grammar}-wrap_Grammar (T_Grammar sem) (Inh_Grammar _lhsIoptions) =-    (let ( _lhsOerrors,_lhsOoutput) =-             (sem _lhsIoptions)-     in  (Syn_Grammar _lhsOerrors _lhsOoutput))-sem_Grammar_Grammar :: TypeSyns ->-                       UseMap ->-                       Derivings ->-                       (Set NontermIdent) ->-                       T_Nonterminals ->-                       PragmaMap ->-                       AttrOrderMap ->-                       ParamMap ->-                       ContextMap ->-                       T_Grammar-sem_Grammar_Grammar typeSyns_ useMap_ derivings_ wrappers_ (T_Nonterminals nonts_) pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ =-    (T_Grammar (\ _lhsIoptions ->-                    (let _nontsOo_rename :: Bool-                         _nontsOcr :: Bool-                         _nontsOnonterminals :: (Set NontermIdent)-                         _nontsOuseMap :: UseMap-                         _nontsOtypeSyns :: TypeSyns-                         _nontsOuniq :: Int-                         _nontsOmanualAttrOrderMap :: AttrOrderMap-                         _lhsOerrors :: (Seq Error)-                         _lhsOoutput :: Grammar-                         _nontsIcollect_nts :: (Set NontermIdent)-                         _nontsIerrors :: (Seq Error)-                         _nontsIoutput :: Nonterminals-                         _nontsIuniq :: Int-                         -- "DefaultRules.ag"(line 43, column 17)-                         _nontsOo_rename =-                             rename    _lhsIoptions-                         -- "DefaultRules.ag"(line 44, column 17)-                         _nontsOcr =-                             modcopy   _lhsIoptions-                         -- "DefaultRules.ag"(line 121, column 13)-                         _nontsOnonterminals =-                             _nontsIcollect_nts-                         -- "DefaultRules.ag"(line 142, column 13)-                         _nontsOuseMap =-                             useMap_-                         -- "DefaultRules.ag"(line 144, column 13)-                         _nontsOtypeSyns =-                             typeSyns_-                         -- "DefaultRules.ag"(line 428, column 13)-                         _nontsOuniq =-                             1-                         -- "DefaultRules.ag"(line 505, column 7)-                         _nontsOmanualAttrOrderMap =-                             manualAttrOrderMap_-                         -- use rule "DefaultRules.ag"(line 109, column 19)-                         _lhsOerrors =-                             _nontsIerrors-                         -- self rule-                         _output =-                             Grammar typeSyns_ useMap_ derivings_ wrappers_ _nontsIoutput pragmas_ manualAttrOrderMap_ paramMap_ contextMap_-                         -- self rule-                         _lhsOoutput =-                             _output-                         ( _nontsIcollect_nts,_nontsIerrors,_nontsIoutput,_nontsIuniq) =-                             (nonts_ _nontsOcr _nontsOmanualAttrOrderMap _nontsOnonterminals _nontsOo_rename _nontsOtypeSyns _nontsOuniq _nontsOuseMap)-                     in  ( _lhsOerrors,_lhsOoutput))))--- Nonterminal --------------------------------------------------{--   visit 0:-      inherited attributes:-         cr                   : Bool-         manualAttrOrderMap   : AttrOrderMap-         nonterminals         : Set NontermIdent-         o_rename             : Bool-         typeSyns             : TypeSyns-         useMap               : UseMap-      chained attribute:-         uniq                 : Int-      synthesized attributes:-         collect_nts          : Set NontermIdent-         errors               : Seq Error-         output               : SELF-   alternatives:-      alternative Nonterminal:-         child nt             : {NontermIdent}-         child params         : {[Identifier]}-         child inh            : {Attributes}-         child syn            : {Attributes}-         child prods          : Productions-         visit 0:-            local output      : _--}--- cata-sem_Nonterminal :: Nonterminal ->-                   T_Nonterminal-sem_Nonterminal (Nonterminal _nt _params _inh _syn _prods) =-    (sem_Nonterminal_Nonterminal _nt _params _inh _syn (sem_Productions _prods))--- semantic domain-newtype T_Nonterminal = T_Nonterminal (Bool ->-                                       AttrOrderMap ->-                                       (Set NontermIdent) ->-                                       Bool ->-                                       TypeSyns ->-                                       Int ->-                                       UseMap ->-                                       ( (Set NontermIdent),(Seq Error),Nonterminal,Int))-data Inh_Nonterminal = Inh_Nonterminal {cr_Inh_Nonterminal :: Bool,manualAttrOrderMap_Inh_Nonterminal :: AttrOrderMap,nonterminals_Inh_Nonterminal :: Set NontermIdent,o_rename_Inh_Nonterminal :: Bool,typeSyns_Inh_Nonterminal :: TypeSyns,uniq_Inh_Nonterminal :: Int,useMap_Inh_Nonterminal :: UseMap}-data Syn_Nonterminal = Syn_Nonterminal {collect_nts_Syn_Nonterminal :: Set NontermIdent,errors_Syn_Nonterminal :: Seq Error,output_Syn_Nonterminal :: Nonterminal,uniq_Syn_Nonterminal :: Int}-wrap_Nonterminal (T_Nonterminal sem) (Inh_Nonterminal _lhsIcr _lhsImanualAttrOrderMap _lhsInonterminals _lhsIo_rename _lhsItypeSyns _lhsIuniq _lhsIuseMap) =-    (let ( _lhsOcollect_nts,_lhsOerrors,_lhsOoutput,_lhsOuniq) =-             (sem _lhsIcr _lhsImanualAttrOrderMap _lhsInonterminals _lhsIo_rename _lhsItypeSyns _lhsIuniq _lhsIuseMap)-     in  (Syn_Nonterminal _lhsOcollect_nts _lhsOerrors _lhsOoutput _lhsOuniq))-sem_Nonterminal_Nonterminal :: NontermIdent ->-                               ([Identifier]) ->-                               Attributes ->-                               Attributes ->-                               T_Productions ->-                               T_Nonterminal-sem_Nonterminal_Nonterminal nt_ params_ inh_ syn_ (T_Productions prods_) =-    (T_Nonterminal (\ _lhsIcr-                      _lhsImanualAttrOrderMap-                      _lhsInonterminals-                      _lhsIo_rename-                      _lhsItypeSyns-                      _lhsIuniq-                      _lhsIuseMap ->-                        (let _lhsOcollect_nts :: (Set NontermIdent)-                             _prodsOinh :: Attributes-                             _prodsOsyn :: Attributes-                             _prodsOuseMap :: (Map Identifier (String,String,String))-                             _prodsOnt :: NontermIdent-                             _lhsOerrors :: (Seq Error)-                             _lhsOoutput :: Nonterminal-                             _lhsOuniq :: Int-                             _prodsOcr :: Bool-                             _prodsOmanualAttrOrderMap :: AttrOrderMap-                             _prodsOnonterminals :: (Set NontermIdent)-                             _prodsOo_rename :: Bool-                             _prodsOtypeSyns :: TypeSyns-                             _prodsOuniq :: Int-                             _prodsIerrors :: (Seq Error)-                             _prodsIoutput :: Productions-                             _prodsIuniq :: Int-                             -- "DefaultRules.ag"(line 117, column 17)-                             _lhsOcollect_nts =-                                 Set.singleton nt_-                             -- "DefaultRules.ag"(line 132, column 18)-                             _prodsOinh =-                                 inh_-                             -- "DefaultRules.ag"(line 133, column 18)-                             _prodsOsyn =-                                 syn_-                             -- "DefaultRules.ag"(line 134, column 18)-                             _prodsOuseMap =-                                 Map.findWithDefault Map.empty nt_ _lhsIuseMap-                             -- "DefaultRules.ag"(line 146, column 17)-                             _prodsOnt =-                                 nt_-                             -- use rule "DefaultRules.ag"(line 109, column 19)-                             _lhsOerrors =-                                 _prodsIerrors-                             -- self rule-                             _output =-                                 Nonterminal nt_ params_ inh_ syn_ _prodsIoutput-                             -- self rule-                             _lhsOoutput =-                                 _output-                             -- copy rule (up)-                             _lhsOuniq =-                                 _prodsIuniq-                             -- copy rule (down)-                             _prodsOcr =-                                 _lhsIcr-                             -- copy rule (down)-                             _prodsOmanualAttrOrderMap =-                                 _lhsImanualAttrOrderMap-                             -- copy rule (down)-                             _prodsOnonterminals =-                                 _lhsInonterminals-                             -- copy rule (down)-                             _prodsOo_rename =-                                 _lhsIo_rename-                             -- copy rule (down)-                             _prodsOtypeSyns =-                                 _lhsItypeSyns-                             -- copy rule (down)-                             _prodsOuniq =-                                 _lhsIuniq-                             ( _prodsIerrors,_prodsIoutput,_prodsIuniq) =-                                 (prods_ _prodsOcr _prodsOinh _prodsOmanualAttrOrderMap _prodsOnonterminals _prodsOnt _prodsOo_rename _prodsOsyn _prodsOtypeSyns _prodsOuniq _prodsOuseMap)-                         in  ( _lhsOcollect_nts,_lhsOerrors,_lhsOoutput,_lhsOuniq))))--- Nonterminals -------------------------------------------------{--   visit 0:-      inherited attributes:-         cr                   : Bool-         manualAttrOrderMap   : AttrOrderMap-         nonterminals         : Set NontermIdent-         o_rename             : Bool-         typeSyns             : TypeSyns-         useMap               : UseMap-      chained attribute:-         uniq                 : Int-      synthesized attributes:-         collect_nts          : Set NontermIdent-         errors               : Seq Error-         output               : SELF-   alternatives:-      alternative Cons:-         child hd             : Nonterminal-         child tl             : Nonterminals-         visit 0:-            local output      : _-      alternative Nil:-         visit 0:-            local output      : _--}--- cata-sem_Nonterminals :: Nonterminals ->-                    T_Nonterminals-sem_Nonterminals list =-    (Prelude.foldr sem_Nonterminals_Cons sem_Nonterminals_Nil (Prelude.map sem_Nonterminal list))--- semantic domain-newtype T_Nonterminals = T_Nonterminals (Bool ->-                                         AttrOrderMap ->-                                         (Set NontermIdent) ->-                                         Bool ->-                                         TypeSyns ->-                                         Int ->-                                         UseMap ->-                                         ( (Set NontermIdent),(Seq Error),Nonterminals,Int))-data Inh_Nonterminals = Inh_Nonterminals {cr_Inh_Nonterminals :: Bool,manualAttrOrderMap_Inh_Nonterminals :: AttrOrderMap,nonterminals_Inh_Nonterminals :: Set NontermIdent,o_rename_Inh_Nonterminals :: Bool,typeSyns_Inh_Nonterminals :: TypeSyns,uniq_Inh_Nonterminals :: Int,useMap_Inh_Nonterminals :: UseMap}-data Syn_Nonterminals = Syn_Nonterminals {collect_nts_Syn_Nonterminals :: Set NontermIdent,errors_Syn_Nonterminals :: Seq Error,output_Syn_Nonterminals :: Nonterminals,uniq_Syn_Nonterminals :: Int}-wrap_Nonterminals (T_Nonterminals sem) (Inh_Nonterminals _lhsIcr _lhsImanualAttrOrderMap _lhsInonterminals _lhsIo_rename _lhsItypeSyns _lhsIuniq _lhsIuseMap) =-    (let ( _lhsOcollect_nts,_lhsOerrors,_lhsOoutput,_lhsOuniq) =-             (sem _lhsIcr _lhsImanualAttrOrderMap _lhsInonterminals _lhsIo_rename _lhsItypeSyns _lhsIuniq _lhsIuseMap)-     in  (Syn_Nonterminals _lhsOcollect_nts _lhsOerrors _lhsOoutput _lhsOuniq))-sem_Nonterminals_Cons :: T_Nonterminal ->-                         T_Nonterminals ->-                         T_Nonterminals-sem_Nonterminals_Cons (T_Nonterminal hd_) (T_Nonterminals tl_) =-    (T_Nonterminals (\ _lhsIcr-                       _lhsImanualAttrOrderMap-                       _lhsInonterminals-                       _lhsIo_rename-                       _lhsItypeSyns-                       _lhsIuniq-                       _lhsIuseMap ->-                         (let _lhsOcollect_nts :: (Set NontermIdent)-                              _lhsOerrors :: (Seq Error)-                              _lhsOoutput :: Nonterminals-                              _lhsOuniq :: Int-                              _hdOcr :: Bool-                              _hdOmanualAttrOrderMap :: AttrOrderMap-                              _hdOnonterminals :: (Set NontermIdent)-                              _hdOo_rename :: Bool-                              _hdOtypeSyns :: TypeSyns-                              _hdOuniq :: Int-                              _hdOuseMap :: UseMap-                              _tlOcr :: Bool-                              _tlOmanualAttrOrderMap :: AttrOrderMap-                              _tlOnonterminals :: (Set NontermIdent)-                              _tlOo_rename :: Bool-                              _tlOtypeSyns :: TypeSyns-                              _tlOuniq :: Int-                              _tlOuseMap :: UseMap-                              _hdIcollect_nts :: (Set NontermIdent)-                              _hdIerrors :: (Seq Error)-                              _hdIoutput :: Nonterminal-                              _hdIuniq :: Int-                              _tlIcollect_nts :: (Set NontermIdent)-                              _tlIerrors :: (Seq Error)-                              _tlIoutput :: Nonterminals-                              _tlIuniq :: Int-                              -- use rule "DefaultRules.ag"(line 115, column 49)-                              _lhsOcollect_nts =-                                  _hdIcollect_nts `Set.union` _tlIcollect_nts-                              -- use rule "DefaultRules.ag"(line 109, column 19)-                              _lhsOerrors =-                                  _hdIerrors Seq.<> _tlIerrors-                              -- self rule-                              _output =-                                  (:) _hdIoutput _tlIoutput-                              -- self rule-                              _lhsOoutput =-                                  _output-                              -- copy rule (up)-                              _lhsOuniq =-                                  _tlIuniq-                              -- copy rule (down)-                              _hdOcr =-                                  _lhsIcr-                              -- copy rule (down)-                              _hdOmanualAttrOrderMap =-                                  _lhsImanualAttrOrderMap-                              -- copy rule (down)-                              _hdOnonterminals =-                                  _lhsInonterminals-                              -- copy rule (down)-                              _hdOo_rename =-                                  _lhsIo_rename-                              -- copy rule (down)-                              _hdOtypeSyns =-                                  _lhsItypeSyns-                              -- copy rule (down)-                              _hdOuniq =-                                  _lhsIuniq-                              -- copy rule (down)-                              _hdOuseMap =-                                  _lhsIuseMap-                              -- copy rule (down)-                              _tlOcr =-                                  _lhsIcr-                              -- copy rule (down)-                              _tlOmanualAttrOrderMap =-                                  _lhsImanualAttrOrderMap-                              -- copy rule (down)-                              _tlOnonterminals =-                                  _lhsInonterminals-                              -- copy rule (down)-                              _tlOo_rename =-                                  _lhsIo_rename-                              -- copy rule (down)-                              _tlOtypeSyns =-                                  _lhsItypeSyns-                              -- copy rule (chain)-                              _tlOuniq =-                                  _hdIuniq-                              -- copy rule (down)-                              _tlOuseMap =-                                  _lhsIuseMap-                              ( _hdIcollect_nts,_hdIerrors,_hdIoutput,_hdIuniq) =-                                  (hd_ _hdOcr _hdOmanualAttrOrderMap _hdOnonterminals _hdOo_rename _hdOtypeSyns _hdOuniq _hdOuseMap)-                              ( _tlIcollect_nts,_tlIerrors,_tlIoutput,_tlIuniq) =-                                  (tl_ _tlOcr _tlOmanualAttrOrderMap _tlOnonterminals _tlOo_rename _tlOtypeSyns _tlOuniq _tlOuseMap)-                          in  ( _lhsOcollect_nts,_lhsOerrors,_lhsOoutput,_lhsOuniq))))-sem_Nonterminals_Nil :: T_Nonterminals-sem_Nonterminals_Nil  =-    (T_Nonterminals (\ _lhsIcr-                       _lhsImanualAttrOrderMap-                       _lhsInonterminals-                       _lhsIo_rename-                       _lhsItypeSyns-                       _lhsIuniq-                       _lhsIuseMap ->-                         (let _lhsOcollect_nts :: (Set NontermIdent)-                              _lhsOerrors :: (Seq Error)-                              _lhsOoutput :: Nonterminals-                              _lhsOuniq :: Int-                              -- use rule "DefaultRules.ag"(line 115, column 49)-                              _lhsOcollect_nts =-                                  Set.empty-                              -- use rule "DefaultRules.ag"(line 109, column 19)-                              _lhsOerrors =-                                  Seq.empty-                              -- self rule-                              _output =-                                  []-                              -- self rule-                              _lhsOoutput =-                                  _output-                              -- copy rule (chain)-                              _lhsOuniq =-                                  _lhsIuniq-                          in  ( _lhsOcollect_nts,_lhsOerrors,_lhsOoutput,_lhsOuniq))))--- Pattern ------------------------------------------------------{--   visit 0:-      inherited attributes:-         con                  : ConstructorIdent-         nt                   : NontermIdent-      synthesized attributes:-         containsVars         : Bool-         copy                 : SELF-         definedAttrs         : Set (Identifier,Identifier)-         errors               : Seq Error-         locals               : Set Identifier-         output               : SELF-   alternatives:-      alternative Alias:-         child field          : {Identifier}-         child attr           : {Identifier}-         child pat            : Pattern-         child parts          : Patterns-         visit 0:-            local copy        : _-            local output      : _-      alternative Constr:-         child name           : {ConstructorIdent}-         child pats           : Patterns-         visit 0:-            local copy        : _-            local output      : _-      alternative Irrefutable:-         child pat            : Pattern-         visit 0:-            local copy        : _-            local output      : _-      alternative Product:-         child pos            : {Pos}-         child pats           : Patterns-         visit 0:-            local copy        : _-            local output      : _-      alternative Underscore:-         child pos            : {Pos}-         visit 0:-            local copy        : _-            local output      : _--}--- cata-sem_Pattern :: Pattern ->-               T_Pattern-sem_Pattern (Alias _field _attr _pat _parts) =-    (sem_Pattern_Alias _field _attr (sem_Pattern _pat) (sem_Patterns _parts))-sem_Pattern (Constr _name _pats) =-    (sem_Pattern_Constr _name (sem_Patterns _pats))-sem_Pattern (Irrefutable _pat) =-    (sem_Pattern_Irrefutable (sem_Pattern _pat))-sem_Pattern (Product _pos _pats) =-    (sem_Pattern_Product _pos (sem_Patterns _pats))-sem_Pattern (Underscore _pos) =-    (sem_Pattern_Underscore _pos)--- semantic domain-newtype T_Pattern = T_Pattern (ConstructorIdent ->-                               NontermIdent ->-                               ( Bool,Pattern,(Set (Identifier,Identifier)),(Seq Error),(Set Identifier),Pattern))-data Inh_Pattern = Inh_Pattern {con_Inh_Pattern :: ConstructorIdent,nt_Inh_Pattern :: NontermIdent}-data Syn_Pattern = Syn_Pattern {containsVars_Syn_Pattern :: Bool,copy_Syn_Pattern :: Pattern,definedAttrs_Syn_Pattern :: Set (Identifier,Identifier),errors_Syn_Pattern :: Seq Error,locals_Syn_Pattern :: Set Identifier,output_Syn_Pattern :: Pattern}-wrap_Pattern (T_Pattern sem) (Inh_Pattern _lhsIcon _lhsInt) =-    (let ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) =-             (sem _lhsIcon _lhsInt)-     in  (Syn_Pattern _lhsOcontainsVars _lhsOcopy _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput))-sem_Pattern_Alias :: Identifier ->-                     Identifier ->-                     T_Pattern ->-                     T_Patterns ->-                     T_Pattern-sem_Pattern_Alias field_ attr_ (T_Pattern pat_) (T_Patterns parts_) =-    (T_Pattern (\ _lhsIcon-                  _lhsInt ->-                    (let _lhsOdefinedAttrs :: (Set (Identifier,Identifier))-                         _lhsOlocals :: (Set Identifier)-                         _lhsOcontainsVars :: Bool-                         _lhsOerrors :: (Seq Error)-                         _lhsOcopy :: Pattern-                         _lhsOoutput :: Pattern-                         _patOcon :: ConstructorIdent-                         _patOnt :: NontermIdent-                         _partsOcon :: ConstructorIdent-                         _partsOnt :: NontermIdent-                         _patIcontainsVars :: Bool-                         _patIcopy :: Pattern-                         _patIdefinedAttrs :: (Set (Identifier,Identifier))-                         _patIerrors :: (Seq Error)-                         _patIlocals :: (Set Identifier)-                         _patIoutput :: Pattern-                         _partsIcontainsVars :: Bool-                         _partsIcopy :: Patterns-                         _partsIdefinedAttrs :: (Set (Identifier,Identifier))-                         _partsIerrors :: (Seq Error)-                         _partsIlocals :: (Set Identifier)-                         _partsIoutput :: Patterns-                         -- "DefaultRules.ag"(line 401, column 11)-                         _lhsOdefinedAttrs =-                             Set.insert (field_,attr_) _patIdefinedAttrs-                         -- "DefaultRules.ag"(line 401, column 11)-                         _lhsOlocals =-                             if field_ == _LOC-                                then Set.insert attr_ _patIlocals-                                else _patIlocals-                         -- "DefaultRules.ag"(line 419, column 16)-                         _lhsOcontainsVars =-                             True-                         -- use rule "DefaultRules.ag"(line 109, column 19)-                         _lhsOerrors =-                             _patIerrors Seq.<> _partsIerrors-                         -- self rule-                         _copy =-                             Alias field_ attr_ _patIcopy _partsIcopy-                         -- self rule-                         _output =-                             Alias field_ attr_ _patIoutput _partsIoutput-                         -- self rule-                         _lhsOcopy =-                             _copy-                         -- self rule-                         _lhsOoutput =-                             _output-                         -- copy rule (down)-                         _patOcon =-                             _lhsIcon-                         -- copy rule (down)-                         _patOnt =-                             _lhsInt-                         -- copy rule (down)-                         _partsOcon =-                             _lhsIcon-                         -- copy rule (down)-                         _partsOnt =-                             _lhsInt-                         ( _patIcontainsVars,_patIcopy,_patIdefinedAttrs,_patIerrors,_patIlocals,_patIoutput) =-                             (pat_ _patOcon _patOnt)-                         ( _partsIcontainsVars,_partsIcopy,_partsIdefinedAttrs,_partsIerrors,_partsIlocals,_partsIoutput) =-                             (parts_ _partsOcon _partsOnt)-                     in  ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput))))-sem_Pattern_Constr :: ConstructorIdent ->-                      T_Patterns ->-                      T_Pattern-sem_Pattern_Constr name_ (T_Patterns pats_) =-    (T_Pattern (\ _lhsIcon-                  _lhsInt ->-                    (let _lhsOcontainsVars :: Bool-                         _lhsOdefinedAttrs :: (Set (Identifier,Identifier))-                         _lhsOerrors :: (Seq Error)-                         _lhsOlocals :: (Set Identifier)-                         _lhsOcopy :: Pattern-                         _lhsOoutput :: Pattern-                         _patsOcon :: ConstructorIdent-                         _patsOnt :: NontermIdent-                         _patsIcontainsVars :: Bool-                         _patsIcopy :: Patterns-                         _patsIdefinedAttrs :: (Set (Identifier,Identifier))-                         _patsIerrors :: (Seq Error)-                         _patsIlocals :: (Set Identifier)-                         _patsIoutput :: Patterns-                         -- use rule "DefaultRules.ag"(line 416, column 46)-                         _lhsOcontainsVars =-                             _patsIcontainsVars-                         -- use rule "DefaultRules.ag"(line 396, column 23)-                         _lhsOdefinedAttrs =-                             _patsIdefinedAttrs-                         -- use rule "DefaultRules.ag"(line 109, column 19)-                         _lhsOerrors =-                             _patsIerrors-                         -- use rule "DefaultRules.ag"(line 395, column 23)-                         _lhsOlocals =-                             _patsIlocals-                         -- self rule-                         _copy =-                             Constr name_ _patsIcopy-                         -- self rule-                         _output =-                             Constr name_ _patsIoutput-                         -- self rule-                         _lhsOcopy =-                             _copy-                         -- self rule-                         _lhsOoutput =-                             _output-                         -- copy rule (down)-                         _patsOcon =-                             _lhsIcon-                         -- copy rule (down)-                         _patsOnt =-                             _lhsInt-                         ( _patsIcontainsVars,_patsIcopy,_patsIdefinedAttrs,_patsIerrors,_patsIlocals,_patsIoutput) =-                             (pats_ _patsOcon _patsOnt)-                     in  ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput))))-sem_Pattern_Irrefutable :: T_Pattern ->-                           T_Pattern-sem_Pattern_Irrefutable (T_Pattern pat_) =-    (T_Pattern (\ _lhsIcon-                  _lhsInt ->-                    (let _lhsOcontainsVars :: Bool-                         _lhsOdefinedAttrs :: (Set (Identifier,Identifier))-                         _lhsOerrors :: (Seq Error)-                         _lhsOlocals :: (Set Identifier)-                         _lhsOcopy :: Pattern-                         _lhsOoutput :: Pattern-                         _patOcon :: ConstructorIdent-                         _patOnt :: NontermIdent-                         _patIcontainsVars :: Bool-                         _patIcopy :: Pattern-                         _patIdefinedAttrs :: (Set (Identifier,Identifier))-                         _patIerrors :: (Seq Error)-                         _patIlocals :: (Set Identifier)-                         _patIoutput :: Pattern-                         -- use rule "DefaultRules.ag"(line 416, column 46)-                         _lhsOcontainsVars =-                             _patIcontainsVars-                         -- use rule "DefaultRules.ag"(line 396, column 23)-                         _lhsOdefinedAttrs =-                             _patIdefinedAttrs-                         -- use rule "DefaultRules.ag"(line 109, column 19)-                         _lhsOerrors =-                             _patIerrors-                         -- use rule "DefaultRules.ag"(line 395, column 23)-                         _lhsOlocals =-                             _patIlocals-                         -- self rule-                         _copy =-                             Irrefutable _patIcopy-                         -- self rule-                         _output =-                             Irrefutable _patIoutput-                         -- self rule-                         _lhsOcopy =-                             _copy-                         -- self rule-                         _lhsOoutput =-                             _output-                         -- copy rule (down)-                         _patOcon =-                             _lhsIcon-                         -- copy rule (down)-                         _patOnt =-                             _lhsInt-                         ( _patIcontainsVars,_patIcopy,_patIdefinedAttrs,_patIerrors,_patIlocals,_patIoutput) =-                             (pat_ _patOcon _patOnt)-                     in  ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput))))-sem_Pattern_Product :: Pos ->-                       T_Patterns ->-                       T_Pattern-sem_Pattern_Product pos_ (T_Patterns pats_) =-    (T_Pattern (\ _lhsIcon-                  _lhsInt ->-                    (let _lhsOcontainsVars :: Bool-                         _lhsOdefinedAttrs :: (Set (Identifier,Identifier))-                         _lhsOerrors :: (Seq Error)-                         _lhsOlocals :: (Set Identifier)-                         _lhsOcopy :: Pattern-                         _lhsOoutput :: Pattern-                         _patsOcon :: ConstructorIdent-                         _patsOnt :: NontermIdent-                         _patsIcontainsVars :: Bool-                         _patsIcopy :: Patterns-                         _patsIdefinedAttrs :: (Set (Identifier,Identifier))-                         _patsIerrors :: (Seq Error)-                         _patsIlocals :: (Set Identifier)-                         _patsIoutput :: Patterns-                         -- use rule "DefaultRules.ag"(line 416, column 46)-                         _lhsOcontainsVars =-                             _patsIcontainsVars-                         -- use rule "DefaultRules.ag"(line 396, column 23)-                         _lhsOdefinedAttrs =-                             _patsIdefinedAttrs-                         -- use rule "DefaultRules.ag"(line 109, column 19)-                         _lhsOerrors =-                             _patsIerrors-                         -- use rule "DefaultRules.ag"(line 395, column 23)-                         _lhsOlocals =-                             _patsIlocals-                         -- self rule-                         _copy =-                             Product pos_ _patsIcopy-                         -- self rule-                         _output =-                             Product pos_ _patsIoutput-                         -- self rule-                         _lhsOcopy =-                             _copy-                         -- self rule-                         _lhsOoutput =-                             _output-                         -- copy rule (down)-                         _patsOcon =-                             _lhsIcon-                         -- copy rule (down)-                         _patsOnt =-                             _lhsInt-                         ( _patsIcontainsVars,_patsIcopy,_patsIdefinedAttrs,_patsIerrors,_patsIlocals,_patsIoutput) =-                             (pats_ _patsOcon _patsOnt)-                     in  ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput))))-sem_Pattern_Underscore :: Pos ->-                          T_Pattern-sem_Pattern_Underscore pos_ =-    (T_Pattern (\ _lhsIcon-                  _lhsInt ->-                    (let _lhsOcontainsVars :: Bool-                         _lhsOdefinedAttrs :: (Set (Identifier,Identifier))-                         _lhsOerrors :: (Seq Error)-                         _lhsOlocals :: (Set Identifier)-                         _lhsOcopy :: Pattern-                         _lhsOoutput :: Pattern-                         -- use rule "DefaultRules.ag"(line 416, column 46)-                         _lhsOcontainsVars =-                             False-                         -- use rule "DefaultRules.ag"(line 396, column 23)-                         _lhsOdefinedAttrs =-                             Set.empty-                         -- use rule "DefaultRules.ag"(line 109, column 19)-                         _lhsOerrors =-                             Seq.empty-                         -- use rule "DefaultRules.ag"(line 395, column 23)-                         _lhsOlocals =-                             Set.empty-                         -- self rule-                         _copy =-                             Underscore pos_-                         -- self rule-                         _output =-                             Underscore pos_-                         -- self rule-                         _lhsOcopy =-                             _copy-                         -- self rule-                         _lhsOoutput =-                             _output-                     in  ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput))))--- Patterns -----------------------------------------------------{--   visit 0:-      inherited attributes:-         con                  : ConstructorIdent-         nt                   : NontermIdent-      synthesized attributes:-         containsVars         : Bool-         copy                 : SELF-         definedAttrs         : Set (Identifier,Identifier)-         errors               : Seq Error-         locals               : Set Identifier-         output               : SELF-   alternatives:-      alternative Cons:-         child hd             : Pattern-         child tl             : Patterns-         visit 0:-            local copy        : _-            local output      : _-      alternative Nil:-         visit 0:-            local copy        : _-            local output      : _--}--- cata-sem_Patterns :: Patterns ->-                T_Patterns-sem_Patterns list =-    (Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list))--- semantic domain-newtype T_Patterns = T_Patterns (ConstructorIdent ->-                                 NontermIdent ->-                                 ( Bool,Patterns,(Set (Identifier,Identifier)),(Seq Error),(Set Identifier),Patterns))-data Inh_Patterns = Inh_Patterns {con_Inh_Patterns :: ConstructorIdent,nt_Inh_Patterns :: NontermIdent}-data Syn_Patterns = Syn_Patterns {containsVars_Syn_Patterns :: Bool,copy_Syn_Patterns :: Patterns,definedAttrs_Syn_Patterns :: Set (Identifier,Identifier),errors_Syn_Patterns :: Seq Error,locals_Syn_Patterns :: Set Identifier,output_Syn_Patterns :: Patterns}-wrap_Patterns (T_Patterns sem) (Inh_Patterns _lhsIcon _lhsInt) =-    (let ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) =-             (sem _lhsIcon _lhsInt)-     in  (Syn_Patterns _lhsOcontainsVars _lhsOcopy _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput))-sem_Patterns_Cons :: T_Pattern ->-                     T_Patterns ->-                     T_Patterns-sem_Patterns_Cons (T_Pattern hd_) (T_Patterns tl_) =-    (T_Patterns (\ _lhsIcon-                   _lhsInt ->-                     (let _lhsOcontainsVars :: Bool-                          _lhsOdefinedAttrs :: (Set (Identifier,Identifier))-                          _lhsOerrors :: (Seq Error)-                          _lhsOlocals :: (Set Identifier)-                          _lhsOcopy :: Patterns-                          _lhsOoutput :: Patterns-                          _hdOcon :: ConstructorIdent-                          _hdOnt :: NontermIdent-                          _tlOcon :: ConstructorIdent-                          _tlOnt :: NontermIdent-                          _hdIcontainsVars :: Bool-                          _hdIcopy :: Pattern-                          _hdIdefinedAttrs :: (Set (Identifier,Identifier))-                          _hdIerrors :: (Seq Error)-                          _hdIlocals :: (Set Identifier)-                          _hdIoutput :: Pattern-                          _tlIcontainsVars :: Bool-                          _tlIcopy :: Patterns-                          _tlIdefinedAttrs :: (Set (Identifier,Identifier))-                          _tlIerrors :: (Seq Error)-                          _tlIlocals :: (Set Identifier)-                          _tlIoutput :: Patterns-                          -- use rule "DefaultRules.ag"(line 416, column 46)-                          _lhsOcontainsVars =-                              _hdIcontainsVars || _tlIcontainsVars-                          -- use rule "DefaultRules.ag"(line 396, column 23)-                          _lhsOdefinedAttrs =-                              _hdIdefinedAttrs `Set.union` _tlIdefinedAttrs-                          -- use rule "DefaultRules.ag"(line 109, column 19)-                          _lhsOerrors =-                              _hdIerrors Seq.<> _tlIerrors-                          -- use rule "DefaultRules.ag"(line 395, column 23)-                          _lhsOlocals =-                              _hdIlocals `Set.union` _tlIlocals-                          -- self rule-                          _copy =-                              (:) _hdIcopy _tlIcopy-                          -- self rule-                          _output =-                              (:) _hdIoutput _tlIoutput-                          -- self rule-                          _lhsOcopy =-                              _copy-                          -- self rule-                          _lhsOoutput =-                              _output-                          -- copy rule (down)-                          _hdOcon =-                              _lhsIcon-                          -- copy rule (down)-                          _hdOnt =-                              _lhsInt-                          -- copy rule (down)-                          _tlOcon =-                              _lhsIcon-                          -- copy rule (down)-                          _tlOnt =-                              _lhsInt-                          ( _hdIcontainsVars,_hdIcopy,_hdIdefinedAttrs,_hdIerrors,_hdIlocals,_hdIoutput) =-                              (hd_ _hdOcon _hdOnt)-                          ( _tlIcontainsVars,_tlIcopy,_tlIdefinedAttrs,_tlIerrors,_tlIlocals,_tlIoutput) =-                              (tl_ _tlOcon _tlOnt)-                      in  ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput))))-sem_Patterns_Nil :: T_Patterns-sem_Patterns_Nil  =-    (T_Patterns (\ _lhsIcon-                   _lhsInt ->-                     (let _lhsOcontainsVars :: Bool-                          _lhsOdefinedAttrs :: (Set (Identifier,Identifier))-                          _lhsOerrors :: (Seq Error)-                          _lhsOlocals :: (Set Identifier)-                          _lhsOcopy :: Patterns-                          _lhsOoutput :: Patterns-                          -- use rule "DefaultRules.ag"(line 416, column 46)-                          _lhsOcontainsVars =-                              False-                          -- use rule "DefaultRules.ag"(line 396, column 23)-                          _lhsOdefinedAttrs =-                              Set.empty-                          -- use rule "DefaultRules.ag"(line 109, column 19)-                          _lhsOerrors =-                              Seq.empty-                          -- use rule "DefaultRules.ag"(line 395, column 23)-                          _lhsOlocals =-                              Set.empty-                          -- self rule-                          _copy =-                              []-                          -- self rule-                          _output =-                              []-                          -- self rule-                          _lhsOcopy =-                              _copy-                          -- self rule-                          _lhsOoutput =-                              _output-                      in  ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput))))--- Production ---------------------------------------------------{--   visit 0:-      inherited attributes:-         cr                   : Bool-         inh                  : Attributes-         manualAttrOrderMap   : AttrOrderMap-         nonterminals         : Set NontermIdent-         nt                   : NontermIdent-         o_rename             : Bool-         syn                  : Attributes-         typeSyns             : TypeSyns-         useMap               : Map Identifier (String,String,String)-      chained attribute:-         uniq                 : Int-      synthesized attributes:-         errors               : Seq Error-         output               : SELF-   alternatives:-      alternative Production:-         child con            : {ConstructorIdent}-         child children       : Children-         child rules          : Rules-         child typeSigs       : TypeSigs-         visit 0:-            local _tup1       : _-            local newRls      : _-            local errs        : _-            local orderDeps   : _-            local orderErrs   : _-            local output      : _--}--- cata-sem_Production :: Production ->-                  T_Production-sem_Production (Production _con _children _rules _typeSigs) =-    (sem_Production_Production _con (sem_Children _children) (sem_Rules _rules) (sem_TypeSigs _typeSigs))--- semantic domain-newtype T_Production = T_Production (Bool ->-                                     Attributes ->-                                     AttrOrderMap ->-                                     (Set NontermIdent) ->-                                     NontermIdent ->-                                     Bool ->-                                     Attributes ->-                                     TypeSyns ->-                                     Int ->-                                     (Map Identifier (String,String,String)) ->-                                     ( (Seq Error),Production,Int))-data Inh_Production = Inh_Production {cr_Inh_Production :: Bool,inh_Inh_Production :: Attributes,manualAttrOrderMap_Inh_Production :: AttrOrderMap,nonterminals_Inh_Production :: Set NontermIdent,nt_Inh_Production :: NontermIdent,o_rename_Inh_Production :: Bool,syn_Inh_Production :: Attributes,typeSyns_Inh_Production :: TypeSyns,uniq_Inh_Production :: Int,useMap_Inh_Production :: Map Identifier (String,String,String)}-data Syn_Production = Syn_Production {errors_Syn_Production :: Seq Error,output_Syn_Production :: Production,uniq_Syn_Production :: Int}-wrap_Production (T_Production sem) (Inh_Production _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsInonterminals _lhsInt _lhsIo_rename _lhsIsyn _lhsItypeSyns _lhsIuniq _lhsIuseMap) =-    (let ( _lhsOerrors,_lhsOoutput,_lhsOuniq) =-             (sem _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsInonterminals _lhsInt _lhsIo_rename _lhsIsyn _lhsItypeSyns _lhsIuniq _lhsIuseMap)-     in  (Syn_Production _lhsOerrors _lhsOoutput _lhsOuniq))-sem_Production_Production :: ConstructorIdent ->-                             T_Children ->-                             T_Rules ->-                             T_TypeSigs ->-                             T_Production-sem_Production_Production con_ (T_Children children_) (T_Rules rules_) (T_TypeSigs typeSigs_) =-    (T_Production (\ _lhsIcr-                     _lhsIinh-                     _lhsImanualAttrOrderMap-                     _lhsInonterminals-                     _lhsInt-                     _lhsIo_rename-                     _lhsIsyn-                     _lhsItypeSyns-                     _lhsIuniq-                     _lhsIuseMap ->-                       (let _rulesOcon :: ConstructorIdent-                            _childrenOcon :: ConstructorIdent-                            _lhsOerrors :: (Seq Error)-                            _lhsOoutput :: Production-                            _lhsOuniq :: Int-                            _childrenOcr :: Bool-                            _childrenOnt :: NontermIdent-                            _rulesOnt :: NontermIdent-                            _rulesOuniq :: Int-                            _childrenIerrors :: (Seq Error)-                            _childrenIfields :: ([(Identifier,Type,Bool)])-                            _childrenIinputs :: ([(Identifier, Attributes)])-                            _childrenIoutput :: Children-                            _childrenIoutputs :: ([(Identifier, Attributes)])-                            _rulesIdefinedAttrs :: (Set (Identifier,Identifier))-                            _rulesIerrors :: (Seq Error)-                            _rulesIlocals :: (Set Identifier)-                            _rulesIoutput :: Rules-                            _rulesIuniq :: Int-                            _typeSigsIoutput :: TypeSigs-                            -- "DefaultRules.ag"(line 137, column 16)-                            _rulesOcon =-                                con_-                            -- "DefaultRules.ag"(line 138, column 17)-                            _childrenOcon =-                                con_-                            -- "DefaultRules.ag"(line 320, column 4)-                            _lhsOerrors =-                                _childrenIerrors <> _errs <> _rulesIerrors <> _orderErrs-                            -- "DefaultRules.ag"(line 322, column 8)-                            __tup1 =-                                let locals       = _rulesIlocals-                                    initenv      = Map.fromList (  [ (a,_ACHILD)-                                                                   | (a,_,_) <- _childrenIfields-                                                                   ]-                                                                ++ attrs(_LHS, _lhsIinh)-                                                                ++ [ (a,_LOC)-                                                                   |  a <- Set.toList locals-                                                                   ]-                                                                )-                                    attrs (n,as) = [ (a,n) | a <- Map.keys as ]-                                    envs       = scanl (flip Map.union)-                                                       initenv-                                                       (map (Map.fromList . attrs ) _childrenIoutputs)-                                    child_envs = init envs-                                    lhs_env    = last envs-                                    (selfAttrs, normalAttrs)-                                      = Map.partition isSELFNonterminal _lhsIsyn-                                    (_,undefAttrs)-                                      = removeDefined _rulesIdefinedAttrs (_LHS, normalAttrs)-                                    (useAttrs,others)-                                      = splitAttrs _lhsIuseMap undefAttrs-                                    (rules1, errors1)-                                      = concatRE $ map (copyRule _lhsInt con_ _lhsIcr locals)-                                                       (zip envs (map (removeDefined _rulesIdefinedAttrs) _childrenIinputs))-                                    uRules-                                      = map (useRule locals _childrenIoutputs) useAttrs-                                    selfLocRules-                                      =  [ selfRule False attr (constructor [childSelf attr nm tp | (nm,tp,ho) <- _childrenIfields, not ho])-                                         | attr <- Map.keys selfAttrs-                                         , not (Set.member attr locals)-                                         ]-                                         where-                                           childSelf self nm tp-                                             = case tp of NT nt _                         -> attrName nm self-                                                          _      | nm `Set.member` locals -> locname nm-                                                                 | otherwise              -> fieldName nm-                                           constructor fs-                                            | getName con_ == "Tuple" && _lhsInt `elem` map fst _lhsItypeSyns-                                              = "(" ++ concat (List.intersperse "," fs) ++ ")"-                                            | otherwise-                                              = getConName _lhsItypeSyns _lhsIo_rename _lhsInt con_ ++ " " ++ unwords fs-                                    selfRules-                                      = [ selfRule True attr undefined-                                        | attr <- Map.keys selfAttrs-                                        , not (Set.member (_LHS,attr) _rulesIdefinedAttrs)-                                        ]-                                    (rules5, errs5)-                                      = copyRule _lhsInt-                                                 con_-                                                 _lhsIcr-                                                 locals-                                                 (lhs_env, (_LHS, others))-                                in (uRules++selfLocRules++selfRules++rules5++rules1, errors1<>errs5)-                            -- "DefaultRules.ag"(line 322, column 8)-                            (_newRls,_) =-                                __tup1-                            -- "DefaultRules.ag"(line 322, column 8)-                            (_,_errs) =-                                __tup1-                            -- "DefaultRules.ag"(line 438, column 16)-                            _lhsOoutput =-                                Production con_ _childrenIoutput (_rulesIoutput ++ _newRls) _typeSigsIoutput-                            -- "DefaultRules.ag"(line 510, column 7)-                            _orderDeps =-                                Set.toList $ Map.findWithDefault Set.empty con_ $ Map.findWithDefault Map.empty _lhsInt _lhsImanualAttrOrderMap-                            -- "DefaultRules.ag"(line 512, column 7)-                            _orderErrs =-                                let chldOutMap = Map.fromList [ (k, Map.keysSet s) | (k,s) <- _childrenIoutputs ]-                                    chldInMap  = Map.fromList [ (k, Map.keysSet s) | (k,s) <- _childrenIinputs ]-                                    isInAttribute :: Identifier -> Identifier -> [Error]-                                    isInAttribute fld nm-                                       | fld == _LOC = if nm `Set.member` _rulesIlocals-                                                       then []-                                                       else [UndefAttr _lhsInt con_ fld nm False]-                                       | fld == _LHS = if nm `Map.member` _lhsIinh-                                                       then []-                                                       else [UndefAttr _lhsInt con_ fld nm False]-                                       | otherwise   = if nm `Set.member` (Map.findWithDefault Set.empty fld chldOutMap)-                                                       then []-                                                       else [UndefAttr _lhsInt con_ fld nm False]-                                    isOutAttribute :: Identifier -> Identifier -> [Error]-                                    isOutAttribute fld nm-                                       | fld == _LOC = if nm `Set.member` _rulesIlocals-                                                       then []-                                                       else [UndefAttr _lhsInt con_ fld nm True]-                                       | fld == _LHS = if nm `Map.member` _lhsIsyn-                                                       then []-                                                       else [UndefAttr _lhsInt con_ fld nm True]-                                       | otherwise   = if nm `Set.member` (Map.findWithDefault Set.empty fld chldInMap)-                                                       then []-                                                       else [UndefAttr _lhsInt con_ fld nm True]-                                in Seq.fromList . concat $-                                   [ isInAttribute fldA nmA ++ isOutAttribute fldB nmB-                                   | dep@(Dependency (fldA,nmA) (fldB,nmB)) <- _orderDeps-                                   ]-                            -- self rule-                            _output =-                                Production con_ _childrenIoutput _rulesIoutput _typeSigsIoutput-                            -- copy rule (up)-                            _lhsOuniq =-                                _rulesIuniq-                            -- copy rule (down)-                            _childrenOcr =-                                _lhsIcr-                            -- copy rule (down)-                            _childrenOnt =-                                _lhsInt-                            -- copy rule (down)-                            _rulesOnt =-                                _lhsInt-                            -- copy rule (down)-                            _rulesOuniq =-                                _lhsIuniq-                            ( _childrenIerrors,_childrenIfields,_childrenIinputs,_childrenIoutput,_childrenIoutputs) =-                                (children_ _childrenOcon _childrenOcr _childrenOnt)-                            ( _rulesIdefinedAttrs,_rulesIerrors,_rulesIlocals,_rulesIoutput,_rulesIuniq) =-                                (rules_ _rulesOcon _rulesOnt _rulesOuniq)-                            ( _typeSigsIoutput) =-                                (typeSigs_ )-                        in  ( _lhsOerrors,_lhsOoutput,_lhsOuniq))))--- Productions --------------------------------------------------{--   visit 0:-      inherited attributes:-         cr                   : Bool-         inh                  : Attributes-         manualAttrOrderMap   : AttrOrderMap-         nonterminals         : Set NontermIdent-         nt                   : NontermIdent-         o_rename             : Bool-         syn                  : Attributes-         typeSyns             : TypeSyns-         useMap               : Map Identifier (String,String,String)-      chained attribute:-         uniq                 : Int-      synthesized attributes:-         errors               : Seq Error-         output               : SELF-   alternatives:-      alternative Cons:-         child hd             : Production-         child tl             : Productions-         visit 0:-            local output      : _-      alternative Nil:-         visit 0:-            local output      : _--}--- cata-sem_Productions :: Productions ->-                   T_Productions-sem_Productions list =-    (Prelude.foldr sem_Productions_Cons sem_Productions_Nil (Prelude.map sem_Production list))--- semantic domain-newtype T_Productions = T_Productions (Bool ->-                                       Attributes ->-                                       AttrOrderMap ->-                                       (Set NontermIdent) ->-                                       NontermIdent ->-                                       Bool ->-                                       Attributes ->-                                       TypeSyns ->-                                       Int ->-                                       (Map Identifier (String,String,String)) ->-                                       ( (Seq Error),Productions,Int))-data Inh_Productions = Inh_Productions {cr_Inh_Productions :: Bool,inh_Inh_Productions :: Attributes,manualAttrOrderMap_Inh_Productions :: AttrOrderMap,nonterminals_Inh_Productions :: Set NontermIdent,nt_Inh_Productions :: NontermIdent,o_rename_Inh_Productions :: Bool,syn_Inh_Productions :: Attributes,typeSyns_Inh_Productions :: TypeSyns,uniq_Inh_Productions :: Int,useMap_Inh_Productions :: Map Identifier (String,String,String)}-data Syn_Productions = Syn_Productions {errors_Syn_Productions :: Seq Error,output_Syn_Productions :: Productions,uniq_Syn_Productions :: Int}-wrap_Productions (T_Productions sem) (Inh_Productions _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsInonterminals _lhsInt _lhsIo_rename _lhsIsyn _lhsItypeSyns _lhsIuniq _lhsIuseMap) =-    (let ( _lhsOerrors,_lhsOoutput,_lhsOuniq) =-             (sem _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsInonterminals _lhsInt _lhsIo_rename _lhsIsyn _lhsItypeSyns _lhsIuniq _lhsIuseMap)-     in  (Syn_Productions _lhsOerrors _lhsOoutput _lhsOuniq))-sem_Productions_Cons :: T_Production ->-                        T_Productions ->-                        T_Productions-sem_Productions_Cons (T_Production hd_) (T_Productions tl_) =-    (T_Productions (\ _lhsIcr-                      _lhsIinh-                      _lhsImanualAttrOrderMap-                      _lhsInonterminals-                      _lhsInt-                      _lhsIo_rename-                      _lhsIsyn-                      _lhsItypeSyns-                      _lhsIuniq-                      _lhsIuseMap ->-                        (let _lhsOerrors :: (Seq Error)-                             _lhsOoutput :: Productions-                             _lhsOuniq :: Int-                             _hdOcr :: Bool-                             _hdOinh :: Attributes-                             _hdOmanualAttrOrderMap :: AttrOrderMap-                             _hdOnonterminals :: (Set NontermIdent)-                             _hdOnt :: NontermIdent-                             _hdOo_rename :: Bool-                             _hdOsyn :: Attributes-                             _hdOtypeSyns :: TypeSyns-                             _hdOuniq :: Int-                             _hdOuseMap :: (Map Identifier (String,String,String))-                             _tlOcr :: Bool-                             _tlOinh :: Attributes-                             _tlOmanualAttrOrderMap :: AttrOrderMap-                             _tlOnonterminals :: (Set NontermIdent)-                             _tlOnt :: NontermIdent-                             _tlOo_rename :: Bool-                             _tlOsyn :: Attributes-                             _tlOtypeSyns :: TypeSyns-                             _tlOuniq :: Int-                             _tlOuseMap :: (Map Identifier (String,String,String))-                             _hdIerrors :: (Seq Error)-                             _hdIoutput :: Production-                             _hdIuniq :: Int-                             _tlIerrors :: (Seq Error)-                             _tlIoutput :: Productions-                             _tlIuniq :: Int-                             -- use rule "DefaultRules.ag"(line 109, column 19)-                             _lhsOerrors =-                                 _hdIerrors Seq.<> _tlIerrors-                             -- self rule-                             _output =-                                 (:) _hdIoutput _tlIoutput-                             -- self rule-                             _lhsOoutput =-                                 _output-                             -- copy rule (up)-                             _lhsOuniq =-                                 _tlIuniq-                             -- copy rule (down)-                             _hdOcr =-                                 _lhsIcr-                             -- copy rule (down)-                             _hdOinh =-                                 _lhsIinh-                             -- copy rule (down)-                             _hdOmanualAttrOrderMap =-                                 _lhsImanualAttrOrderMap-                             -- copy rule (down)-                             _hdOnonterminals =-                                 _lhsInonterminals-                             -- copy rule (down)-                             _hdOnt =-                                 _lhsInt-                             -- copy rule (down)-                             _hdOo_rename =-                                 _lhsIo_rename-                             -- copy rule (down)-                             _hdOsyn =-                                 _lhsIsyn-                             -- copy rule (down)-                             _hdOtypeSyns =-                                 _lhsItypeSyns-                             -- copy rule (down)-                             _hdOuniq =-                                 _lhsIuniq-                             -- copy rule (down)-                             _hdOuseMap =-                                 _lhsIuseMap-                             -- copy rule (down)-                             _tlOcr =-                                 _lhsIcr-                             -- copy rule (down)-                             _tlOinh =-                                 _lhsIinh-                             -- copy rule (down)-                             _tlOmanualAttrOrderMap =-                                 _lhsImanualAttrOrderMap-                             -- copy rule (down)-                             _tlOnonterminals =-                                 _lhsInonterminals-                             -- copy rule (down)-                             _tlOnt =-                                 _lhsInt-                             -- copy rule (down)-                             _tlOo_rename =-                                 _lhsIo_rename-                             -- copy rule (down)-                             _tlOsyn =-                                 _lhsIsyn-                             -- copy rule (down)-                             _tlOtypeSyns =-                                 _lhsItypeSyns-                             -- copy rule (chain)-                             _tlOuniq =-                                 _hdIuniq-                             -- copy rule (down)-                             _tlOuseMap =-                                 _lhsIuseMap-                             ( _hdIerrors,_hdIoutput,_hdIuniq) =-                                 (hd_ _hdOcr _hdOinh _hdOmanualAttrOrderMap _hdOnonterminals _hdOnt _hdOo_rename _hdOsyn _hdOtypeSyns _hdOuniq _hdOuseMap)-                             ( _tlIerrors,_tlIoutput,_tlIuniq) =-                                 (tl_ _tlOcr _tlOinh _tlOmanualAttrOrderMap _tlOnonterminals _tlOnt _tlOo_rename _tlOsyn _tlOtypeSyns _tlOuniq _tlOuseMap)-                         in  ( _lhsOerrors,_lhsOoutput,_lhsOuniq))))-sem_Productions_Nil :: T_Productions-sem_Productions_Nil  =-    (T_Productions (\ _lhsIcr-                      _lhsIinh-                      _lhsImanualAttrOrderMap-                      _lhsInonterminals-                      _lhsInt-                      _lhsIo_rename-                      _lhsIsyn-                      _lhsItypeSyns-                      _lhsIuniq-                      _lhsIuseMap ->-                        (let _lhsOerrors :: (Seq Error)-                             _lhsOoutput :: Productions-                             _lhsOuniq :: Int-                             -- use rule "DefaultRules.ag"(line 109, column 19)-                             _lhsOerrors =-                                 Seq.empty-                             -- self rule-                             _output =-                                 []-                             -- self rule-                             _lhsOoutput =-                                 _output-                             -- copy rule (chain)-                             _lhsOuniq =-                                 _lhsIuniq-                         in  ( _lhsOerrors,_lhsOoutput,_lhsOuniq))))--- Rule ---------------------------------------------------------{--   visit 0:-      inherited attributes:-         con                  : ConstructorIdent-         nt                   : NontermIdent-      chained attribute:-         uniq                 : Int-      synthesized attributes:-         containsVars         : Bool-         definedAttrs         : Set (Identifier,Identifier)-         errors               : Seq Error-         locals               : Set Identifier-         output               : SELF-         outputs              : Rules-   alternatives:-      alternative Rule:-         child pattern        : Pattern-         child rhs            : {Expression}-         child owrt           : {Bool}-         child origin         : {String}-         visit 0:-            local _tup2       : {(Rules,Int)}-            local output      : _--}--- cata-sem_Rule :: Rule ->-            T_Rule-sem_Rule (Rule _pattern _rhs _owrt _origin) =-    (sem_Rule_Rule (sem_Pattern _pattern) _rhs _owrt _origin)--- semantic domain-newtype T_Rule = T_Rule (ConstructorIdent ->-                         NontermIdent ->-                         Int ->-                         ( Bool,(Set (Identifier,Identifier)),(Seq Error),(Set Identifier),Rule,Rules,Int))-data Inh_Rule = Inh_Rule {con_Inh_Rule :: ConstructorIdent,nt_Inh_Rule :: NontermIdent,uniq_Inh_Rule :: Int}-data Syn_Rule = Syn_Rule {containsVars_Syn_Rule :: Bool,definedAttrs_Syn_Rule :: Set (Identifier,Identifier),errors_Syn_Rule :: Seq Error,locals_Syn_Rule :: Set Identifier,output_Syn_Rule :: Rule,outputs_Syn_Rule :: Rules,uniq_Syn_Rule :: Int}-wrap_Rule (T_Rule sem) (Inh_Rule _lhsIcon _lhsInt _lhsIuniq) =-    (let ( _lhsOcontainsVars,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOoutputs,_lhsOuniq) =-             (sem _lhsIcon _lhsInt _lhsIuniq)-     in  (Syn_Rule _lhsOcontainsVars _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput _lhsOoutputs _lhsOuniq))-sem_Rule_Rule :: T_Pattern ->-                 Expression ->-                 Bool ->-                 String ->-                 T_Rule-sem_Rule_Rule (T_Pattern pattern_) rhs_ owrt_ origin_ =-    (T_Rule (\ _lhsIcon-               _lhsInt-               _lhsIuniq ->-                 (let __tup2 :: ((Rules,Int))-                      _lhsOoutputs :: Rules-                      _lhsOuniq :: Int-                      _lhsOcontainsVars :: Bool-                      _lhsOdefinedAttrs :: (Set (Identifier,Identifier))-                      _lhsOerrors :: (Seq Error)-                      _lhsOlocals :: (Set Identifier)-                      _lhsOoutput :: Rule-                      _patternOcon :: ConstructorIdent-                      _patternOnt :: NontermIdent-                      _patternIcontainsVars :: Bool-                      _patternIcopy :: Pattern-                      _patternIdefinedAttrs :: (Set (Identifier,Identifier))-                      _patternIerrors :: (Seq Error)-                      _patternIlocals :: (Set Identifier)-                      _patternIoutput :: Pattern-                      -- "DefaultRules.ag"(line 445, column 11)-                      __tup2 =-                          multiRule _output     _lhsIuniq-                      -- "DefaultRules.ag"(line 445, column 11)-                      (_lhsOoutputs,_) =-                          __tup2-                      -- "DefaultRules.ag"(line 445, column 11)-                      (_,_lhsOuniq) =-                          __tup2-                      -- use rule "DefaultRules.ag"(line 416, column 46)-                      _lhsOcontainsVars =-                          _patternIcontainsVars-                      -- use rule "DefaultRules.ag"(line 396, column 23)-                      _lhsOdefinedAttrs =-                          _patternIdefinedAttrs-                      -- use rule "DefaultRules.ag"(line 109, column 19)-                      _lhsOerrors =-                          _patternIerrors-                      -- use rule "DefaultRules.ag"(line 395, column 23)-                      _lhsOlocals =-                          _patternIlocals-                      -- self rule-                      _output =-                          Rule _patternIoutput rhs_ owrt_ origin_-                      -- self rule-                      _lhsOoutput =-                          _output-                      -- copy rule (down)-                      _patternOcon =-                          _lhsIcon-                      -- copy rule (down)-                      _patternOnt =-                          _lhsInt-                      ( _patternIcontainsVars,_patternIcopy,_patternIdefinedAttrs,_patternIerrors,_patternIlocals,_patternIoutput) =-                          (pattern_ _patternOcon _patternOnt)-                  in  ( _lhsOcontainsVars,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOoutputs,_lhsOuniq))))--- Rules --------------------------------------------------------{--   visit 0:-      inherited attributes:-         con                  : ConstructorIdent-         nt                   : NontermIdent-      chained attribute:-         uniq                 : Int-      synthesized attributes:-         definedAttrs         : Set (Identifier,Identifier)-         errors               : Seq Error-         locals               : Set Identifier-         output               : SELF-   alternatives:-      alternative Cons:-         child hd             : Rule-         child tl             : Rules-         visit 0:-            local output      : _-      alternative Nil:-         visit 0:-            local output      : _--}--- cata-sem_Rules :: Rules ->-             T_Rules-sem_Rules list =-    (Prelude.foldr sem_Rules_Cons sem_Rules_Nil (Prelude.map sem_Rule list))--- semantic domain-newtype T_Rules = T_Rules (ConstructorIdent ->-                           NontermIdent ->-                           Int ->-                           ( (Set (Identifier,Identifier)),(Seq Error),(Set Identifier),Rules,Int))-data Inh_Rules = Inh_Rules {con_Inh_Rules :: ConstructorIdent,nt_Inh_Rules :: NontermIdent,uniq_Inh_Rules :: Int}-data Syn_Rules = Syn_Rules {definedAttrs_Syn_Rules :: Set (Identifier,Identifier),errors_Syn_Rules :: Seq Error,locals_Syn_Rules :: Set Identifier,output_Syn_Rules :: Rules,uniq_Syn_Rules :: Int}-wrap_Rules (T_Rules sem) (Inh_Rules _lhsIcon _lhsInt _lhsIuniq) =-    (let ( _lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOuniq) =-             (sem _lhsIcon _lhsInt _lhsIuniq)-     in  (Syn_Rules _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput _lhsOuniq))-sem_Rules_Cons :: T_Rule ->-                  T_Rules ->-                  T_Rules-sem_Rules_Cons (T_Rule hd_) (T_Rules tl_) =-    (T_Rules (\ _lhsIcon-                _lhsInt-                _lhsIuniq ->-                  (let _lhsOoutput :: Rules-                       _lhsOdefinedAttrs :: (Set (Identifier,Identifier))-                       _lhsOerrors :: (Seq Error)-                       _lhsOlocals :: (Set Identifier)-                       _lhsOuniq :: Int-                       _hdOcon :: ConstructorIdent-                       _hdOnt :: NontermIdent-                       _hdOuniq :: Int-                       _tlOcon :: ConstructorIdent-                       _tlOnt :: NontermIdent-                       _tlOuniq :: Int-                       _hdIcontainsVars :: Bool-                       _hdIdefinedAttrs :: (Set (Identifier,Identifier))-                       _hdIerrors :: (Seq Error)-                       _hdIlocals :: (Set Identifier)-                       _hdIoutput :: Rule-                       _hdIoutputs :: Rules-                       _hdIuniq :: Int-                       _tlIdefinedAttrs :: (Set (Identifier,Identifier))-                       _tlIerrors :: (Seq Error)-                       _tlIlocals :: (Set Identifier)-                       _tlIoutput :: Rules-                       _tlIuniq :: Int-                       -- "DefaultRules.ag"(line 441, column 10)-                       _lhsOoutput =-                           if _hdIcontainsVars then _hdIoutputs ++ _tlIoutput else _tlIoutput-                       -- use rule "DefaultRules.ag"(line 396, column 23)-                       _lhsOdefinedAttrs =-                           _hdIdefinedAttrs `Set.union` _tlIdefinedAttrs-                       -- use rule "DefaultRules.ag"(line 109, column 19)-                       _lhsOerrors =-                           _hdIerrors Seq.<> _tlIerrors-                       -- use rule "DefaultRules.ag"(line 395, column 23)-                       _lhsOlocals =-                           _hdIlocals `Set.union` _tlIlocals-                       -- self rule-                       _output =-                           (:) _hdIoutput _tlIoutput-                       -- copy rule (up)-                       _lhsOuniq =-                           _tlIuniq-                       -- copy rule (down)-                       _hdOcon =-                           _lhsIcon-                       -- copy rule (down)-                       _hdOnt =-                           _lhsInt-                       -- copy rule (down)-                       _hdOuniq =-                           _lhsIuniq-                       -- copy rule (down)-                       _tlOcon =-                           _lhsIcon-                       -- copy rule (down)-                       _tlOnt =-                           _lhsInt-                       -- copy rule (chain)-                       _tlOuniq =-                           _hdIuniq-                       ( _hdIcontainsVars,_hdIdefinedAttrs,_hdIerrors,_hdIlocals,_hdIoutput,_hdIoutputs,_hdIuniq) =-                           (hd_ _hdOcon _hdOnt _hdOuniq)-                       ( _tlIdefinedAttrs,_tlIerrors,_tlIlocals,_tlIoutput,_tlIuniq) =-                           (tl_ _tlOcon _tlOnt _tlOuniq)-                   in  ( _lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOuniq))))-sem_Rules_Nil :: T_Rules-sem_Rules_Nil  =-    (T_Rules (\ _lhsIcon-                _lhsInt-                _lhsIuniq ->-                  (let _lhsOdefinedAttrs :: (Set (Identifier,Identifier))-                       _lhsOerrors :: (Seq Error)-                       _lhsOlocals :: (Set Identifier)-                       _lhsOoutput :: Rules-                       _lhsOuniq :: Int-                       -- use rule "DefaultRules.ag"(line 396, column 23)-                       _lhsOdefinedAttrs =-                           Set.empty-                       -- use rule "DefaultRules.ag"(line 109, column 19)-                       _lhsOerrors =-                           Seq.empty-                       -- use rule "DefaultRules.ag"(line 395, column 23)-                       _lhsOlocals =-                           Set.empty-                       -- self rule-                       _output =-                           []-                       -- self rule-                       _lhsOoutput =-                           _output-                       -- copy rule (chain)-                       _lhsOuniq =-                           _lhsIuniq-                   in  ( _lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOuniq))))--- TypeSig ------------------------------------------------------{--   visit 0:-      synthesized attribute:-         output               : SELF-   alternatives:-      alternative TypeSig:-         child name           : {Identifier}-         child tp             : {Type}-         visit 0:-            local output      : _--}--- cata-sem_TypeSig :: TypeSig ->-               T_TypeSig-sem_TypeSig (TypeSig _name _tp) =-    (sem_TypeSig_TypeSig _name _tp)--- semantic domain-newtype T_TypeSig = T_TypeSig (( TypeSig))-data Inh_TypeSig = Inh_TypeSig {}-data Syn_TypeSig = Syn_TypeSig {output_Syn_TypeSig :: TypeSig}-wrap_TypeSig (T_TypeSig sem) (Inh_TypeSig ) =-    (let ( _lhsOoutput) =-             (sem )-     in  (Syn_TypeSig _lhsOoutput))-sem_TypeSig_TypeSig :: Identifier ->-                       Type ->-                       T_TypeSig-sem_TypeSig_TypeSig name_ tp_ =-    (T_TypeSig (let _lhsOoutput :: TypeSig-                    -- self rule-                    _output =-                        TypeSig name_ tp_-                    -- self rule-                    _lhsOoutput =-                        _output-                in  ( _lhsOoutput)))--- TypeSigs -----------------------------------------------------{--   visit 0:-      synthesized attribute:-         output               : SELF-   alternatives:-      alternative Cons:-         child hd             : TypeSig-         child tl             : TypeSigs-         visit 0:-            local output      : _-      alternative Nil:-         visit 0:-            local output      : _--}--- cata-sem_TypeSigs :: TypeSigs ->-                T_TypeSigs-sem_TypeSigs list =-    (Prelude.foldr sem_TypeSigs_Cons sem_TypeSigs_Nil (Prelude.map sem_TypeSig list))--- semantic domain-newtype T_TypeSigs = T_TypeSigs (( TypeSigs))-data Inh_TypeSigs = Inh_TypeSigs {}-data Syn_TypeSigs = Syn_TypeSigs {output_Syn_TypeSigs :: TypeSigs}-wrap_TypeSigs (T_TypeSigs sem) (Inh_TypeSigs ) =-    (let ( _lhsOoutput) =-             (sem )-     in  (Syn_TypeSigs _lhsOoutput))-sem_TypeSigs_Cons :: T_TypeSig ->-                     T_TypeSigs ->-                     T_TypeSigs-sem_TypeSigs_Cons (T_TypeSig hd_) (T_TypeSigs tl_) =-    (T_TypeSigs (let _lhsOoutput :: TypeSigs-                     _hdIoutput :: TypeSig-                     _tlIoutput :: TypeSigs-                     -- self rule-                     _output =-                         (:) _hdIoutput _tlIoutput-                     -- self rule-                     _lhsOoutput =-                         _output-                     ( _hdIoutput) =-                         (hd_ )-                     ( _tlIoutput) =-                         (tl_ )-                 in  ( _lhsOoutput)))-sem_TypeSigs_Nil :: T_TypeSigs-sem_TypeSigs_Nil  =-    (T_TypeSigs (let _lhsOoutput :: TypeSigs-                     -- self rule-                     _output =-                         []-                     -- self rule-                     _lhsOoutput =-                         _output-                 in  ( _lhsOoutput)))+{-# OPTIONS_GHC -fbang-patterns #-}+-- UUAGC 0.9.5 (DefaultRules.ag)+module DefaultRules where++import qualified List (delete,intersperse)++import qualified Data.Set as Set+import qualified Data.Map as Map+import Data.Map(Map)+import qualified UU.DData.Seq as Seq+import UU.DData.Seq(Seq,(<>))+import UU.Scanner.Position(noPos)+import Pretty+import Maybe+import HsToken+import HsTokenScanner++import AbstractSyntax+import ErrorMessages++import Options(Options,modcopy,rename)++-- AbstractSyntax.ag imports+import Data.Set(Set)+import Data.Map(Map)+import Patterns    (Pattern(..),Patterns)+import Expression  (Expression(..))+import CommonTypes++-- Patterns.ag imports+import UU.Scanner.Position(Pos)+import CommonTypes (ConstructorIdent,Identifier)++fieldName n       = '@' : getName n+	+locName n         = '@' : getName n++attrName fld attr+ | fld == _LOC    = '@' :                       getName attr + | otherwise      = '@' : getName fld ++ "." ++ getName attr++_ACHILD = Ident "(" noPos -- hack+	+	+getConName typeSyns rename nt con1 + | nt `elem` map fst typeSyns  =  synonym+ | otherwise                   =  normalName+ where con                            = getName con1+       normalName | rename            = getName nt++"_"++ con+                  | otherwise         =  con+       synonym    | con == "Cons"     = "(:)"+                  | con == "Nil"      = "[]"+                  | con == "Just"     = "Just"+                  | con == "Nothing"  = "Nothing"+                  | otherwise         = normalName++++concatSeq = foldr Seq.append Seq.empty++splitAttrs :: Map Identifier a -> [Identifier] -> ([(Identifier,a)],[Identifier])	  -- a used as (String,String)+splitAttrs _      []           +  =  ([],[])+splitAttrs useMap (n:rest) +  =  let (uses,normals) = splitAttrs useMap rest+     in case Map.lookup n useMap of+          Just x  -> ((n,x):uses ,   normals )       +          Nothing -> (      uses , n:normals )++removeDefined ::  Set (Identifier,Identifier) -> (Identifier,Attributes) -> (Identifier,[Identifier])+removeDefined defined (fld,as) +  = ( fld+    , [ a +      | a <- Map.keys as+      , not (Set.member (fld,a) defined) +      ]+    )+++	+	+	+deprecatedCopyRuleError nt con fld a+ = let mesg = +                "In the definitions for alternative" +            >#< getName con +            >#< "of nonterminal" +            >#< getName nt +            >|< "," +            >-< "the value of field" +            >#< getName a  +            >#< "is copied by a copy-rule."                                    +            >-< "Copying the value of a field using a copy-rule is deprecated"+            >-< "Please add the following lines to your code:"+            >-< (    "SEM" +                >#< getName nt+                >-< indent 2 (      "|" +                             >#< getName con +                             >#< getName fld +                             >#< "." +                             >#< a +                             >#< "=" +                             >#< "@" +                             >|< a+                             )+                )  +    in  CustomError True (getPos a) mesg+	+	+missingRuleErrorExpr nt con fld a+ = "error \"missing rule: " +   ++ show nt  ++ "." ++ show con ++ "." +   ++ show fld ++ "." ++ show a   ++ "\""+	+	+	+makeRule :: (Identifier,Identifier) -> Expression -> String -> Rule+makeRule (f1,a1) expr origin + = Rule (Alias f1 a1 (Underscore noPos) []) +        expr +        False +        origin+++useRule :: Set Identifier -> [(Identifier,Attributes)] -> (Identifier,(String,String,String)) -> Rule+useRule locals ch_outs (n,(op,e,pos)) + =  let elems = [ fld +                | (fld,as) <- ch_outs+                , Map.member n as+                ]++        expr | Set.member n locals  =  attrName _LOC n+             | null elems           =  e+             | otherwise            =  foldr1 (\x y -> x ++ " " ++ op ++ " " ++ y) +                                              (map (flip attrName n) elems)++        tks | Set.member n locals  =  [AGLocal n noPos Nothing]+            | null elems           =  lexTokens noPos e+            | otherwise            =  lexTokens noPos str+                                      where+                                        str = foldr1 (\x y -> x ++ " " ++ op ++ " " ++ y) +                                                (map (flip attrName n) elems)++    in makeRule (_LHS,n) +                (Expression noPos tks)+                ("use rule " ++ pos)+++++selfRule lhsNecLoc attr x   + = let expr | lhsNecLoc  = locName attr+            | otherwise  = x++       tks | lhsNecLoc   = [AGLocal attr noPos Nothing]+           | otherwise   = lexTokens noPos x++   in makeRule (if lhsNecLoc then _LHS else _LOC,attr)+               (Expression noPos tks)+               "self rule"+               ++++concatRE rsess = let (rss,ess) = unzip rsess+                 in (concat rss, concatSeq ess)+++copyRule :: Identifier -> Identifier -> Bool -> Set Identifier -> (Map Identifier Identifier, (Identifier,[Identifier])) -> ([Rule], Seq Error)+copyRule nt con modcopy locals (env,(fld,as)) + = concatRE (map copyRu as)+ + where +       copyRu a+           = ( [ makeRule (fld,a) +                          (Expression noPos tks)+                          (cruletxt sel)+               ]+             , err+             )+                +        where +              sel +               |    not modcopy +                 && Set.member a locals  =  Just _LOC+               | otherwise               =  Map.lookup a env++              (expr,err) +               = case sel of+                  Nothing         -> ( missingRuleErrorExpr nt con fld a+                                     , Seq.single (MissingRule nt con fld a)+                                     )+                  Just f +                   | f == _ACHILD -> ( fieldName a+                                     , Seq.single (deprecatedCopyRuleError nt con fld a)+                                     )+                   | otherwise    -> ( attrName f a+                                     , Seq.empty+                                     )+              +              (tks,err')+               = case sel of+                  Nothing         -> ( [HsToken (missingRuleErrorExpr nt con fld a) noPos]+                                     , Seq.single (MissingRule nt con fld a)+                                     )+                  Just f +                   | f == _ACHILD -> ( [AGLocal a noPos Nothing]+                                     , Seq.single (deprecatedCopyRuleError nt con fld a)+                                     )+                   | otherwise    -> ( [AGField f a noPos Nothing]+                                     , Seq.empty+                                     )++              cruletxt sel+               | local                            = "copy rule (from local)"+               | deprChild                        = "deprecated child copy"+               | Set.member a locals && nonlocal  = "modified copy rule"+               | incoming && outgoing             = "copy rule (chain)"+               | incoming                         = "copy rule (down)"+               | outgoing                         = "copy rule (up)"+               | otherwise                        = "copy rule (chain)"+                where outgoing  =  fld == _LHS+                      incoming  =  maybe False (== _LHS)    sel+                      nonlocal  =  maybe False (/= _LOC)    sel+                      local     =  maybe False (== _LOC)    sel+                      deprChild =  maybe False (== _ACHILD) sel++{- +multiRule replaces+  loc.(a,b) = e+by  +  loc.tup1  = e+  loc.(a,_) = @loc.tup1+  loc.(_,b) = @loc.tup1+It needs to thread a unique number for inventing names for the tuples.++It also works for nested tuples:+  loc.(a,(b,c)) = e+becomes+  loc.tup1      = e+  loc.(a,_)     = @loc.tup1+  loc.(_,tup2)  = @loc.tup1+  loc.(b,_)     = @loc.tup2+  loc.(_,c)     = @loc.tup2+-}++multiRule :: Rule -> Int -> ([Rule], Int)	+multiRule (Rule pat expr owrt origin) uniq+  =  let f :: (Pattern->Pattern) -> Expression -> Pattern -> Int -> (Pattern, ([Rule], Int))+         f w e (Product pos pats) n +           = let freshName = Ident ("_tup" ++ show n) pos +                 freshExpr = Expression pos freshTks+                 freshTks  = [AGField _LOC freshName pos Nothing]+                 freshPat  = Alias _LOC freshName (Underscore pos) pats+                 a = length pats - 1+                 us b p = Product pos (replicate (a-b) (Underscore pos) ++ [p] ++ replicate b (Underscore pos))+                 g :: Pattern -> ([Pattern],[Rule],Int) -> ([Pattern],[Rule],Int)+                 g p (xs1,rs1,n1)   = let (x2,(rs2,n2)) = f (us (length xs1)) freshExpr p n1+                                      in  (x2:xs1, rs2++rs1, n2)+                 (xs9,rs9,n9) = foldr g ([], [], n+1) pats+             in  ( freshPat+                 , ( Rule (w freshPat) e owrt origin : rs9+                   , n9+                   )+                 )+         f w e p n +           = ( p+             , ( [Rule (w p) e owrt origin]+               , n+               )+             )+     in snd (f id expr pat uniq)++-- Child -------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         con                  : ConstructorIdent+         cr                   : Bool+         nt                   : NontermIdent+      synthesized attributes:+         errors               : Seq Error+         field                :  (Identifier,Type,Bool) +         inherited            : Attributes+         name                 : Identifier+         output               : SELF+         synthesized          : Attributes+   alternatives:+      alternative Child:+         child name           : {Identifier}+         child tp             : {Type}+         child inh            : {Attributes}+         child syn            : {Attributes}+         child higherOrder    : {Bool}+         visit 0:+            local output      : _+-}+-- cata+sem_Child :: Child ->+             T_Child+sem_Child !(Child _name _tp _inh _syn _higherOrder) =+    (sem_Child_Child _name _tp _inh _syn _higherOrder)+-- semantic domain+newtype T_Child = T_Child (ConstructorIdent ->+                           Bool ->+                           NontermIdent ->+                           ( (Seq Error),( (Identifier,Type,Bool) ),Attributes,Identifier,Child,Attributes))+data Inh_Child = Inh_Child {con_Inh_Child :: !(ConstructorIdent),cr_Inh_Child :: !(Bool),nt_Inh_Child :: !(NontermIdent)}+data Syn_Child = Syn_Child {errors_Syn_Child :: !(Seq Error),field_Syn_Child :: !( (Identifier,Type,Bool) ),inherited_Syn_Child :: !(Attributes),name_Syn_Child :: !(Identifier),output_Syn_Child :: !(Child),synthesized_Syn_Child :: !(Attributes)}+wrap_Child !(T_Child sem) !(Inh_Child _lhsIcon _lhsIcr _lhsInt) =+    (let ( !_lhsOerrors,!_lhsOfield,!_lhsOinherited,!_lhsOname,!_lhsOoutput,!_lhsOsynthesized) =+             (sem _lhsIcon _lhsIcr _lhsInt)+     in  (Syn_Child _lhsOerrors _lhsOfield _lhsOinherited _lhsOname _lhsOoutput _lhsOsynthesized))+sem_Child_Child :: Identifier ->+                   Type ->+                   Attributes ->+                   Attributes ->+                   Bool ->+                   T_Child+sem_Child_Child !name_ !tp_ !inh_ !syn_ !higherOrder_ =+    (T_Child (\ (!_lhsIcon)+                (!_lhsIcr)+                (!_lhsInt) ->+                  (case (Seq.empty) of+                   { !_lhsOerrors ->+                   (case ((name_,tp_,higherOrder_)) of+                    { !_lhsOfield ->+                    (case (inh_) of+                     { !_lhsOinherited ->+                     (case (name_) of+                      { !_lhsOname ->+                      (case (Child name_ tp_ inh_ syn_ higherOrder_) of+                       { !_output ->+                       (case (_output) of+                        { !_lhsOoutput ->+                        (case (syn_) of+                         { !_lhsOsynthesized ->+                         ( _lhsOerrors,_lhsOfield,_lhsOinherited,_lhsOname,_lhsOoutput,_lhsOsynthesized) }) }) }) }) }) }) })))+-- Children ----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         con                  : ConstructorIdent+         cr                   : Bool+         nt                   : NontermIdent+      synthesized attributes:+         errors               : Seq Error+         fields               : [(Identifier,Type,Bool)]+         inputs               : [(Identifier, Attributes)]+         output               : SELF+         outputs              : [(Identifier, Attributes)]+   alternatives:+      alternative Cons:+         child hd             : Child+         child tl             : Children+         visit 0:+            local output      : _+      alternative Nil:+         visit 0:+            local output      : _+-}+-- cata+sem_Children :: Children ->+                T_Children+sem_Children !list =+    (Prelude.foldr sem_Children_Cons sem_Children_Nil (Prelude.map sem_Child list))+-- semantic domain+newtype T_Children = T_Children (ConstructorIdent ->+                                 Bool ->+                                 NontermIdent ->+                                 ( (Seq Error),([(Identifier,Type,Bool)]),([(Identifier, Attributes)]),Children,([(Identifier, Attributes)])))+data Inh_Children = Inh_Children {con_Inh_Children :: !(ConstructorIdent),cr_Inh_Children :: !(Bool),nt_Inh_Children :: !(NontermIdent)}+data Syn_Children = Syn_Children {errors_Syn_Children :: !(Seq Error),fields_Syn_Children :: !([(Identifier,Type,Bool)]),inputs_Syn_Children :: !([(Identifier, Attributes)]),output_Syn_Children :: !(Children),outputs_Syn_Children :: !([(Identifier, Attributes)])}+wrap_Children !(T_Children sem) !(Inh_Children _lhsIcon _lhsIcr _lhsInt) =+    (let ( !_lhsOerrors,!_lhsOfields,!_lhsOinputs,!_lhsOoutput,!_lhsOoutputs) =+             (sem _lhsIcon _lhsIcr _lhsInt)+     in  (Syn_Children _lhsOerrors _lhsOfields _lhsOinputs _lhsOoutput _lhsOoutputs))+sem_Children_Cons :: T_Child ->+                     T_Children ->+                     T_Children+sem_Children_Cons !(T_Child hd_) !(T_Children tl_) =+    (T_Children (\ (!_lhsIcon)+                   (!_lhsIcr)+                   (!_lhsInt) ->+                     (case (_lhsInt) of+                      { !_tlOnt ->+                      (case (_lhsIcr) of+                       { !_tlOcr ->+                       (case (_lhsIcon) of+                        { !_tlOcon ->+                        (case ((tl_ _tlOcon _tlOcr _tlOnt)) of+                         { ( !_tlIerrors,!_tlIfields,!_tlIinputs,!_tlIoutput,!_tlIoutputs) ->+                         (case (_lhsInt) of+                          { !_hdOnt ->+                          (case (_lhsIcr) of+                           { !_hdOcr ->+                           (case (_lhsIcon) of+                            { !_hdOcon ->+                            (case ((hd_ _hdOcon _hdOcr _hdOnt)) of+                             { ( !_hdIerrors,!_hdIfield,!_hdIinherited,!_hdIname,!_hdIoutput,!_hdIsynthesized) ->+                             (case (_hdIerrors Seq.<> _tlIerrors) of+                              { !_lhsOerrors ->+                              (case (_hdIfield : _tlIfields) of+                               { !_lhsOfields ->+                               (case ((_hdIname, _hdIinherited) : _tlIinputs) of+                                { !_lhsOinputs ->+                                (case ((:) _hdIoutput _tlIoutput) of+                                 { !_output ->+                                 (case (_output) of+                                  { !_lhsOoutput ->+                                  (case ((_hdIname, _hdIsynthesized) : _tlIoutputs) of+                                   { !_lhsOoutputs ->+                                   ( _lhsOerrors,_lhsOfields,_lhsOinputs,_lhsOoutput,_lhsOoutputs) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Children_Nil :: T_Children+sem_Children_Nil  =+    (T_Children (\ (!_lhsIcon)+                   (!_lhsIcr)+                   (!_lhsInt) ->+                     (case (Seq.empty) of+                      { !_lhsOerrors ->+                      (case ([]) of+                       { !_lhsOfields ->+                       (case ([]) of+                        { !_lhsOinputs ->+                        (case ([]) of+                         { !_output ->+                         (case (_output) of+                          { !_lhsOoutput ->+                          (case ([]) of+                           { !_lhsOoutputs ->+                           ( _lhsOerrors,_lhsOfields,_lhsOinputs,_lhsOoutput,_lhsOoutputs) }) }) }) }) }) })))+-- Grammar -----------------------------------------------------+{-+   visit 0:+      inherited attribute:+         options              : Options+      synthesized attributes:+         errors               : Seq Error+         output               : SELF+   alternatives:+      alternative Grammar:+         child typeSyns       : {TypeSyns}+         child useMap         : {UseMap}+         child derivings      : {Derivings}+         child wrappers       : {Set NontermIdent}+         child nonts          : Nonterminals+         child pragmas        : {PragmaMap}+         child manualAttrOrderMap : {AttrOrderMap}+         child paramMap       : {ParamMap}+         child contextMap     : {ContextMap}+         child uniqueMap      : {UniqueMap}+         visit 0:+            local output      : _+-}+-- cata+sem_Grammar :: Grammar ->+               T_Grammar+sem_Grammar !(Grammar _typeSyns _useMap _derivings _wrappers _nonts _pragmas _manualAttrOrderMap _paramMap _contextMap _uniqueMap) =+    (sem_Grammar_Grammar _typeSyns _useMap _derivings _wrappers (sem_Nonterminals _nonts) _pragmas _manualAttrOrderMap _paramMap _contextMap _uniqueMap)+-- semantic domain+newtype T_Grammar = T_Grammar (Options ->+                               ( (Seq Error),Grammar))+data Inh_Grammar = Inh_Grammar {options_Inh_Grammar :: !(Options)}+data Syn_Grammar = Syn_Grammar {errors_Syn_Grammar :: !(Seq Error),output_Syn_Grammar :: !(Grammar)}+wrap_Grammar !(T_Grammar sem) !(Inh_Grammar _lhsIoptions) =+    (let ( !_lhsOerrors,!_lhsOoutput) =+             (sem _lhsIoptions)+     in  (Syn_Grammar _lhsOerrors _lhsOoutput))+sem_Grammar_Grammar :: TypeSyns ->+                       UseMap ->+                       Derivings ->+                       (Set NontermIdent) ->+                       T_Nonterminals ->+                       PragmaMap ->+                       AttrOrderMap ->+                       ParamMap ->+                       ContextMap ->+                       UniqueMap ->+                       T_Grammar+sem_Grammar_Grammar !typeSyns_ !useMap_ !derivings_ !wrappers_ !(T_Nonterminals nonts_) !pragmas_ !manualAttrOrderMap_ !paramMap_ !contextMap_ !uniqueMap_ =+    (T_Grammar (\ (!_lhsIoptions) ->+                    (case (manualAttrOrderMap_) of+                     { !_nontsOmanualAttrOrderMap ->+                     (case (typeSyns_) of+                      { !_nontsOtypeSyns ->+                      (case (useMap_) of+                       { !_nontsOuseMap ->+                       (case (modcopy   _lhsIoptions) of+                        { !_nontsOcr ->+                        (case (rename    _lhsIoptions) of+                         { !_nontsOo_rename ->+                         (case ((nonts_ )) of+                          { ( !_nontsIcollect_nts,!T_Nonterminals_1 nonts_1) ->+                          (case (1) of+                           { !_nontsOuniq ->+                           (case (_nontsIcollect_nts) of+                            { !_nontsOnonterminals ->+                            (case ((nonts_1 _nontsOcr _nontsOmanualAttrOrderMap _nontsOnonterminals _nontsOo_rename _nontsOtypeSyns _nontsOuniq _nontsOuseMap)) of+                             { ( !_nontsIerrors,!_nontsIoutput,!_nontsIuniq) ->+                             (case (_nontsIerrors) of+                              { !_lhsOerrors ->+                              (case (Grammar typeSyns_ useMap_ derivings_ wrappers_ _nontsIoutput pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ uniqueMap_) of+                               { !_output ->+                               (case (_output) of+                                { !_lhsOoutput ->+                                ( _lhsOerrors,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) })))+-- Nonterminal -------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         collect_nts          : Set NontermIdent+   visit 1:+      inherited attributes:+         cr                   : Bool+         manualAttrOrderMap   : AttrOrderMap+         nonterminals         : Set NontermIdent+         o_rename             : Bool+         typeSyns             : TypeSyns+         useMap               : UseMap+      chained attribute:+         uniq                 : Int+      synthesized attributes:+         errors               : Seq Error+         output               : SELF+   alternatives:+      alternative Nonterminal:+         child nt             : {NontermIdent}+         child params         : {[Identifier]}+         child inh            : {Attributes}+         child syn            : {Attributes}+         child prods          : Productions+         visit 1:+            local output      : _+-}+-- cata+sem_Nonterminal :: Nonterminal ->+                   T_Nonterminal+sem_Nonterminal !(Nonterminal _nt _params _inh _syn _prods) =+    (sem_Nonterminal_Nonterminal _nt _params _inh _syn (sem_Productions _prods))+-- semantic domain+newtype T_Nonterminal = T_Nonterminal (( (Set NontermIdent),T_Nonterminal_1))+newtype T_Nonterminal_1 = T_Nonterminal_1 (Bool ->+                                           AttrOrderMap ->+                                           (Set NontermIdent) ->+                                           Bool ->+                                           TypeSyns ->+                                           Int ->+                                           UseMap ->+                                           ( (Seq Error),Nonterminal,Int))+data Inh_Nonterminal = Inh_Nonterminal {cr_Inh_Nonterminal :: !(Bool),manualAttrOrderMap_Inh_Nonterminal :: !(AttrOrderMap),nonterminals_Inh_Nonterminal :: !(Set NontermIdent),o_rename_Inh_Nonterminal :: !(Bool),typeSyns_Inh_Nonterminal :: !(TypeSyns),uniq_Inh_Nonterminal :: !(Int),useMap_Inh_Nonterminal :: !(UseMap)}+data Syn_Nonterminal = Syn_Nonterminal {collect_nts_Syn_Nonterminal :: !(Set NontermIdent),errors_Syn_Nonterminal :: !(Seq Error),output_Syn_Nonterminal :: !(Nonterminal),uniq_Syn_Nonterminal :: !(Int)}+wrap_Nonterminal !(T_Nonterminal sem) !(Inh_Nonterminal _lhsIcr _lhsImanualAttrOrderMap _lhsInonterminals _lhsIo_rename _lhsItypeSyns _lhsIuniq _lhsIuseMap) =+    (let ( !_lhsOcollect_nts,!T_Nonterminal_1 sem_1) =+             (sem )+         ( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) =+             (sem_1 _lhsIcr _lhsImanualAttrOrderMap _lhsInonterminals _lhsIo_rename _lhsItypeSyns _lhsIuniq _lhsIuseMap)+     in  (Syn_Nonterminal _lhsOcollect_nts _lhsOerrors _lhsOoutput _lhsOuniq))+sem_Nonterminal_Nonterminal :: NontermIdent ->+                               ([Identifier]) ->+                               Attributes ->+                               Attributes ->+                               T_Productions ->+                               T_Nonterminal+sem_Nonterminal_Nonterminal !nt_ !params_ !inh_ !syn_ !(T_Productions prods_) =+    (T_Nonterminal (case (Set.singleton nt_) of+                    { !_lhsOcollect_nts ->+                    (case ((sem_Nonterminal_Nonterminal_1 nt_ syn_ inh_ (T_Productions prods_) params_)) of+                     { ( !sem_Nonterminal_1) ->+                     ( _lhsOcollect_nts,sem_Nonterminal_1) }) }))+sem_Nonterminal_Nonterminal_1 :: NontermIdent ->+                                 Attributes ->+                                 Attributes ->+                                 T_Productions ->+                                 ([Identifier]) ->+                                 T_Nonterminal_1+sem_Nonterminal_Nonterminal_1 !nt_ !syn_ !inh_ !(T_Productions prods_) !params_ =+    (T_Nonterminal_1 (\ (!_lhsIcr)+                        (!_lhsImanualAttrOrderMap)+                        (!_lhsInonterminals)+                        (!_lhsIo_rename)+                        (!_lhsItypeSyns)+                        (!_lhsIuniq)+                        (!_lhsIuseMap) ->+                          (case (_lhsItypeSyns) of+                           { !_prodsOtypeSyns ->+                           (case (_lhsIo_rename) of+                            { !_prodsOo_rename ->+                            (case (_lhsImanualAttrOrderMap) of+                             { !_prodsOmanualAttrOrderMap ->+                             (case (_lhsIcr) of+                              { !_prodsOcr ->+                              (case (nt_) of+                               { !_prodsOnt ->+                               (case (Map.findWithDefault Map.empty nt_ _lhsIuseMap) of+                                { !_prodsOuseMap ->+                                (case (syn_) of+                                 { !_prodsOsyn ->+                                 (case (inh_) of+                                  { !_prodsOinh ->+                                  (case (_lhsIuniq) of+                                   { !_prodsOuniq ->+                                   (case (_lhsInonterminals) of+                                    { !_prodsOnonterminals ->+                                    (case ((prods_ _prodsOcr _prodsOinh _prodsOmanualAttrOrderMap _prodsOnonterminals _prodsOnt _prodsOo_rename _prodsOsyn _prodsOtypeSyns _prodsOuniq _prodsOuseMap)) of+                                     { ( !_prodsIerrors,!_prodsIoutput,!_prodsIuniq) ->+                                     (case (_prodsIerrors) of+                                      { !_lhsOerrors ->+                                      (case (Nonterminal nt_ params_ inh_ syn_ _prodsIoutput) of+                                       { !_output ->+                                       (case (_output) of+                                        { !_lhsOoutput ->+                                        (case (_prodsIuniq) of+                                         { !_lhsOuniq ->+                                         ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+-- Nonterminals ------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         collect_nts          : Set NontermIdent+   visit 1:+      inherited attributes:+         cr                   : Bool+         manualAttrOrderMap   : AttrOrderMap+         nonterminals         : Set NontermIdent+         o_rename             : Bool+         typeSyns             : TypeSyns+         useMap               : UseMap+      chained attribute:+         uniq                 : Int+      synthesized attributes:+         errors               : Seq Error+         output               : SELF+   alternatives:+      alternative Cons:+         child hd             : Nonterminal+         child tl             : Nonterminals+         visit 1:+            local output      : _+      alternative Nil:+         visit 1:+            local output      : _+-}+-- cata+sem_Nonterminals :: Nonterminals ->+                    T_Nonterminals+sem_Nonterminals !list =+    (Prelude.foldr sem_Nonterminals_Cons sem_Nonterminals_Nil (Prelude.map sem_Nonterminal list))+-- semantic domain+newtype T_Nonterminals = T_Nonterminals (( (Set NontermIdent),T_Nonterminals_1))+newtype T_Nonterminals_1 = T_Nonterminals_1 (Bool ->+                                             AttrOrderMap ->+                                             (Set NontermIdent) ->+                                             Bool ->+                                             TypeSyns ->+                                             Int ->+                                             UseMap ->+                                             ( (Seq Error),Nonterminals,Int))+data Inh_Nonterminals = Inh_Nonterminals {cr_Inh_Nonterminals :: !(Bool),manualAttrOrderMap_Inh_Nonterminals :: !(AttrOrderMap),nonterminals_Inh_Nonterminals :: !(Set NontermIdent),o_rename_Inh_Nonterminals :: !(Bool),typeSyns_Inh_Nonterminals :: !(TypeSyns),uniq_Inh_Nonterminals :: !(Int),useMap_Inh_Nonterminals :: !(UseMap)}+data Syn_Nonterminals = Syn_Nonterminals {collect_nts_Syn_Nonterminals :: !(Set NontermIdent),errors_Syn_Nonterminals :: !(Seq Error),output_Syn_Nonterminals :: !(Nonterminals),uniq_Syn_Nonterminals :: !(Int)}+wrap_Nonterminals !(T_Nonterminals sem) !(Inh_Nonterminals _lhsIcr _lhsImanualAttrOrderMap _lhsInonterminals _lhsIo_rename _lhsItypeSyns _lhsIuniq _lhsIuseMap) =+    (let ( !_lhsOcollect_nts,!T_Nonterminals_1 sem_1) =+             (sem )+         ( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) =+             (sem_1 _lhsIcr _lhsImanualAttrOrderMap _lhsInonterminals _lhsIo_rename _lhsItypeSyns _lhsIuniq _lhsIuseMap)+     in  (Syn_Nonterminals _lhsOcollect_nts _lhsOerrors _lhsOoutput _lhsOuniq))+sem_Nonterminals_Cons :: T_Nonterminal ->+                         T_Nonterminals ->+                         T_Nonterminals+sem_Nonterminals_Cons !(T_Nonterminal hd_) !(T_Nonterminals tl_) =+    (T_Nonterminals (case ((tl_ )) of+                     { ( !_tlIcollect_nts,!T_Nonterminals_1 tl_1) ->+                     (case ((hd_ )) of+                      { ( !_hdIcollect_nts,!T_Nonterminal_1 hd_1) ->+                      (case (_hdIcollect_nts `Set.union` _tlIcollect_nts) of+                       { !_lhsOcollect_nts ->+                       (case ((sem_Nonterminals_Cons_1 (T_Nonterminal_1 hd_1) (T_Nonterminals_1 tl_1))) of+                        { ( !sem_Nonterminals_1) ->+                        ( _lhsOcollect_nts,sem_Nonterminals_1) }) }) }) }))+sem_Nonterminals_Cons_1 :: T_Nonterminal_1 ->+                           T_Nonterminals_1 ->+                           T_Nonterminals_1+sem_Nonterminals_Cons_1 !(T_Nonterminal_1 hd_1) !(T_Nonterminals_1 tl_1) =+    (T_Nonterminals_1 (\ (!_lhsIcr)+                         (!_lhsImanualAttrOrderMap)+                         (!_lhsInonterminals)+                         (!_lhsIo_rename)+                         (!_lhsItypeSyns)+                         (!_lhsIuniq)+                         (!_lhsIuseMap) ->+                           (case (_lhsIuseMap) of+                            { !_tlOuseMap ->+                            (case (_lhsItypeSyns) of+                             { !_tlOtypeSyns ->+                             (case (_lhsIo_rename) of+                              { !_tlOo_rename ->+                              (case (_lhsImanualAttrOrderMap) of+                               { !_tlOmanualAttrOrderMap ->+                               (case (_lhsIcr) of+                                { !_tlOcr ->+                                (case (_lhsIuseMap) of+                                 { !_hdOuseMap ->+                                 (case (_lhsItypeSyns) of+                                  { !_hdOtypeSyns ->+                                  (case (_lhsIo_rename) of+                                   { !_hdOo_rename ->+                                   (case (_lhsImanualAttrOrderMap) of+                                    { !_hdOmanualAttrOrderMap ->+                                    (case (_lhsIcr) of+                                     { !_hdOcr ->+                                     (case (_lhsIuniq) of+                                      { !_hdOuniq ->+                                      (case (_lhsInonterminals) of+                                       { !_hdOnonterminals ->+                                       (case ((hd_1 _hdOcr _hdOmanualAttrOrderMap _hdOnonterminals _hdOo_rename _hdOtypeSyns _hdOuniq _hdOuseMap)) of+                                        { ( !_hdIerrors,!_hdIoutput,!_hdIuniq) ->+                                        (case (_hdIuniq) of+                                         { !_tlOuniq ->+                                         (case (_lhsInonterminals) of+                                          { !_tlOnonterminals ->+                                          (case ((tl_1 _tlOcr _tlOmanualAttrOrderMap _tlOnonterminals _tlOo_rename _tlOtypeSyns _tlOuniq _tlOuseMap)) of+                                           { ( !_tlIerrors,!_tlIoutput,!_tlIuniq) ->+                                           (case (_hdIerrors Seq.<> _tlIerrors) of+                                            { !_lhsOerrors ->+                                            (case ((:) _hdIoutput _tlIoutput) of+                                             { !_output ->+                                             (case (_output) of+                                              { !_lhsOoutput ->+                                              (case (_tlIuniq) of+                                               { !_lhsOuniq ->+                                               ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Nonterminals_Nil :: T_Nonterminals+sem_Nonterminals_Nil  =+    (T_Nonterminals (case (Set.empty) of+                     { !_lhsOcollect_nts ->+                     (case ((sem_Nonterminals_Nil_1 )) of+                      { ( !sem_Nonterminals_1) ->+                      ( _lhsOcollect_nts,sem_Nonterminals_1) }) }))+sem_Nonterminals_Nil_1 :: T_Nonterminals_1+sem_Nonterminals_Nil_1  =+    (T_Nonterminals_1 (\ (!_lhsIcr)+                         (!_lhsImanualAttrOrderMap)+                         (!_lhsInonterminals)+                         (!_lhsIo_rename)+                         (!_lhsItypeSyns)+                         (!_lhsIuniq)+                         (!_lhsIuseMap) ->+                           (case (Seq.empty) of+                            { !_lhsOerrors ->+                            (case ([]) of+                             { !_output ->+                             (case (_output) of+                              { !_lhsOoutput ->+                              (case (_lhsIuniq) of+                               { !_lhsOuniq ->+                               ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) })))+-- Pattern -----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         con                  : ConstructorIdent+         nt                   : NontermIdent+      synthesized attributes:+         containsVars         : Bool+         copy                 : SELF+         definedAttrs         : Set (Identifier,Identifier)+         errors               : Seq Error+         locals               : Set Identifier+         output               : SELF+   alternatives:+      alternative Alias:+         child field          : {Identifier}+         child attr           : {Identifier}+         child pat            : Pattern+         child parts          : Patterns+         visit 0:+            local copy        : _+            local output      : _+      alternative Constr:+         child name           : {ConstructorIdent}+         child pats           : Patterns+         visit 0:+            local copy        : _+            local output      : _+      alternative Irrefutable:+         child pat            : Pattern+         visit 0:+            local copy        : _+            local output      : _+      alternative Product:+         child pos            : {Pos}+         child pats           : Patterns+         visit 0:+            local copy        : _+            local output      : _+      alternative Underscore:+         child pos            : {Pos}+         visit 0:+            local copy        : _+            local output      : _+-}+-- cata+sem_Pattern :: Pattern ->+               T_Pattern+sem_Pattern !(Alias _field _attr _pat _parts) =+    (sem_Pattern_Alias _field _attr (sem_Pattern _pat) (sem_Patterns _parts))+sem_Pattern !(Constr _name _pats) =+    (sem_Pattern_Constr _name (sem_Patterns _pats))+sem_Pattern !(Irrefutable _pat) =+    (sem_Pattern_Irrefutable (sem_Pattern _pat))+sem_Pattern !(Product _pos _pats) =+    (sem_Pattern_Product _pos (sem_Patterns _pats))+sem_Pattern !(Underscore _pos) =+    (sem_Pattern_Underscore _pos)+-- semantic domain+newtype T_Pattern = T_Pattern (ConstructorIdent ->+                               NontermIdent ->+                               ( Bool,Pattern,(Set (Identifier,Identifier)),(Seq Error),(Set Identifier),Pattern))+data Inh_Pattern = Inh_Pattern {con_Inh_Pattern :: !(ConstructorIdent),nt_Inh_Pattern :: !(NontermIdent)}+data Syn_Pattern = Syn_Pattern {containsVars_Syn_Pattern :: !(Bool),copy_Syn_Pattern :: !(Pattern),definedAttrs_Syn_Pattern :: !(Set (Identifier,Identifier)),errors_Syn_Pattern :: !(Seq Error),locals_Syn_Pattern :: !(Set Identifier),output_Syn_Pattern :: !(Pattern)}+wrap_Pattern !(T_Pattern sem) !(Inh_Pattern _lhsIcon _lhsInt) =+    (let ( !_lhsOcontainsVars,!_lhsOcopy,!_lhsOdefinedAttrs,!_lhsOerrors,!_lhsOlocals,!_lhsOoutput) =+             (sem _lhsIcon _lhsInt)+     in  (Syn_Pattern _lhsOcontainsVars _lhsOcopy _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput))+sem_Pattern_Alias :: Identifier ->+                     Identifier ->+                     T_Pattern ->+                     T_Patterns ->+                     T_Pattern+sem_Pattern_Alias !field_ !attr_ !(T_Pattern pat_) !(T_Patterns parts_) =+    (T_Pattern (\ (!_lhsIcon)+                  (!_lhsInt) ->+                    (case (True) of+                     { !_lhsOcontainsVars ->+                     (case (_lhsInt) of+                      { !_partsOnt ->+                      (case (_lhsIcon) of+                       { !_partsOcon ->+                       (case ((parts_ _partsOcon _partsOnt)) of+                        { ( !_partsIcontainsVars,!_partsIcopy,!_partsIdefinedAttrs,!_partsIerrors,!_partsIlocals,!_partsIoutput) ->+                        (case (_lhsInt) of+                         { !_patOnt ->+                         (case (_lhsIcon) of+                          { !_patOcon ->+                          (case ((pat_ _patOcon _patOnt)) of+                           { ( !_patIcontainsVars,!_patIcopy,!_patIdefinedAttrs,!_patIerrors,!_patIlocals,!_patIoutput) ->+                           (case (Alias field_ attr_ _patIcopy _partsIcopy) of+                            { !_copy ->+                            (case (_copy) of+                             { !_lhsOcopy ->+                             (case (Set.insert (field_,attr_) _patIdefinedAttrs) of+                              { !_lhsOdefinedAttrs ->+                              (case (_patIerrors Seq.<> _partsIerrors) of+                               { !_lhsOerrors ->+                               (case (if field_ == _LOC+                                         then Set.insert attr_ _patIlocals+                                         else _patIlocals) of+                                { !_lhsOlocals ->+                                (case (Alias field_ attr_ _patIoutput _partsIoutput) of+                                 { !_output ->+                                 (case (_output) of+                                  { !_lhsOoutput ->+                                  ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Pattern_Constr :: ConstructorIdent ->+                      T_Patterns ->+                      T_Pattern+sem_Pattern_Constr !name_ !(T_Patterns pats_) =+    (T_Pattern (\ (!_lhsIcon)+                  (!_lhsInt) ->+                    (case (_lhsInt) of+                     { !_patsOnt ->+                     (case (_lhsIcon) of+                      { !_patsOcon ->+                      (case ((pats_ _patsOcon _patsOnt)) of+                       { ( !_patsIcontainsVars,!_patsIcopy,!_patsIdefinedAttrs,!_patsIerrors,!_patsIlocals,!_patsIoutput) ->+                       (case (_patsIcontainsVars) of+                        { !_lhsOcontainsVars ->+                        (case (Constr name_ _patsIcopy) of+                         { !_copy ->+                         (case (_copy) of+                          { !_lhsOcopy ->+                          (case (_patsIdefinedAttrs) of+                           { !_lhsOdefinedAttrs ->+                           (case (_patsIerrors) of+                            { !_lhsOerrors ->+                            (case (_patsIlocals) of+                             { !_lhsOlocals ->+                             (case (Constr name_ _patsIoutput) of+                              { !_output ->+                              (case (_output) of+                               { !_lhsOoutput ->+                               ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) })))+sem_Pattern_Irrefutable :: T_Pattern ->+                           T_Pattern+sem_Pattern_Irrefutable !(T_Pattern pat_) =+    (T_Pattern (\ (!_lhsIcon)+                  (!_lhsInt) ->+                    (case (_lhsInt) of+                     { !_patOnt ->+                     (case (_lhsIcon) of+                      { !_patOcon ->+                      (case ((pat_ _patOcon _patOnt)) of+                       { ( !_patIcontainsVars,!_patIcopy,!_patIdefinedAttrs,!_patIerrors,!_patIlocals,!_patIoutput) ->+                       (case (_patIcontainsVars) of+                        { !_lhsOcontainsVars ->+                        (case (Irrefutable _patIcopy) of+                         { !_copy ->+                         (case (_copy) of+                          { !_lhsOcopy ->+                          (case (_patIdefinedAttrs) of+                           { !_lhsOdefinedAttrs ->+                           (case (_patIerrors) of+                            { !_lhsOerrors ->+                            (case (_patIlocals) of+                             { !_lhsOlocals ->+                             (case (Irrefutable _patIoutput) of+                              { !_output ->+                              (case (_output) of+                               { !_lhsOoutput ->+                               ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) })))+sem_Pattern_Product :: Pos ->+                       T_Patterns ->+                       T_Pattern+sem_Pattern_Product !pos_ !(T_Patterns pats_) =+    (T_Pattern (\ (!_lhsIcon)+                  (!_lhsInt) ->+                    (case (_lhsInt) of+                     { !_patsOnt ->+                     (case (_lhsIcon) of+                      { !_patsOcon ->+                      (case ((pats_ _patsOcon _patsOnt)) of+                       { ( !_patsIcontainsVars,!_patsIcopy,!_patsIdefinedAttrs,!_patsIerrors,!_patsIlocals,!_patsIoutput) ->+                       (case (_patsIcontainsVars) of+                        { !_lhsOcontainsVars ->+                        (case (Product pos_ _patsIcopy) of+                         { !_copy ->+                         (case (_copy) of+                          { !_lhsOcopy ->+                          (case (_patsIdefinedAttrs) of+                           { !_lhsOdefinedAttrs ->+                           (case (_patsIerrors) of+                            { !_lhsOerrors ->+                            (case (_patsIlocals) of+                             { !_lhsOlocals ->+                             (case (Product pos_ _patsIoutput) of+                              { !_output ->+                              (case (_output) of+                               { !_lhsOoutput ->+                               ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) })))+sem_Pattern_Underscore :: Pos ->+                          T_Pattern+sem_Pattern_Underscore !pos_ =+    (T_Pattern (\ (!_lhsIcon)+                  (!_lhsInt) ->+                    (case (False) of+                     { !_lhsOcontainsVars ->+                     (case (Underscore pos_) of+                      { !_copy ->+                      (case (_copy) of+                       { !_lhsOcopy ->+                       (case (Set.empty) of+                        { !_lhsOdefinedAttrs ->+                        (case (Seq.empty) of+                         { !_lhsOerrors ->+                         (case (Set.empty) of+                          { !_lhsOlocals ->+                          (case (Underscore pos_) of+                           { !_output ->+                           (case (_output) of+                            { !_lhsOoutput ->+                            ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) })))+-- Patterns ----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         con                  : ConstructorIdent+         nt                   : NontermIdent+      synthesized attributes:+         containsVars         : Bool+         copy                 : SELF+         definedAttrs         : Set (Identifier,Identifier)+         errors               : Seq Error+         locals               : Set Identifier+         output               : SELF+   alternatives:+      alternative Cons:+         child hd             : Pattern+         child tl             : Patterns+         visit 0:+            local copy        : _+            local output      : _+      alternative Nil:+         visit 0:+            local copy        : _+            local output      : _+-}+-- cata+sem_Patterns :: Patterns ->+                T_Patterns+sem_Patterns !list =+    (Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list))+-- semantic domain+newtype T_Patterns = T_Patterns (ConstructorIdent ->+                                 NontermIdent ->+                                 ( Bool,Patterns,(Set (Identifier,Identifier)),(Seq Error),(Set Identifier),Patterns))+data Inh_Patterns = Inh_Patterns {con_Inh_Patterns :: !(ConstructorIdent),nt_Inh_Patterns :: !(NontermIdent)}+data Syn_Patterns = Syn_Patterns {containsVars_Syn_Patterns :: !(Bool),copy_Syn_Patterns :: !(Patterns),definedAttrs_Syn_Patterns :: !(Set (Identifier,Identifier)),errors_Syn_Patterns :: !(Seq Error),locals_Syn_Patterns :: !(Set Identifier),output_Syn_Patterns :: !(Patterns)}+wrap_Patterns !(T_Patterns sem) !(Inh_Patterns _lhsIcon _lhsInt) =+    (let ( !_lhsOcontainsVars,!_lhsOcopy,!_lhsOdefinedAttrs,!_lhsOerrors,!_lhsOlocals,!_lhsOoutput) =+             (sem _lhsIcon _lhsInt)+     in  (Syn_Patterns _lhsOcontainsVars _lhsOcopy _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput))+sem_Patterns_Cons :: T_Pattern ->+                     T_Patterns ->+                     T_Patterns+sem_Patterns_Cons !(T_Pattern hd_) !(T_Patterns tl_) =+    (T_Patterns (\ (!_lhsIcon)+                   (!_lhsInt) ->+                     (case (_lhsInt) of+                      { !_tlOnt ->+                      (case (_lhsIcon) of+                       { !_tlOcon ->+                       (case ((tl_ _tlOcon _tlOnt)) of+                        { ( !_tlIcontainsVars,!_tlIcopy,!_tlIdefinedAttrs,!_tlIerrors,!_tlIlocals,!_tlIoutput) ->+                        (case (_lhsInt) of+                         { !_hdOnt ->+                         (case (_lhsIcon) of+                          { !_hdOcon ->+                          (case ((hd_ _hdOcon _hdOnt)) of+                           { ( !_hdIcontainsVars,!_hdIcopy,!_hdIdefinedAttrs,!_hdIerrors,!_hdIlocals,!_hdIoutput) ->+                           (case (_hdIcontainsVars || _tlIcontainsVars) of+                            { !_lhsOcontainsVars ->+                            (case ((:) _hdIcopy _tlIcopy) of+                             { !_copy ->+                             (case (_copy) of+                              { !_lhsOcopy ->+                              (case (_hdIdefinedAttrs `Set.union` _tlIdefinedAttrs) of+                               { !_lhsOdefinedAttrs ->+                               (case (_hdIerrors Seq.<> _tlIerrors) of+                                { !_lhsOerrors ->+                                (case (_hdIlocals `Set.union` _tlIlocals) of+                                 { !_lhsOlocals ->+                                 (case ((:) _hdIoutput _tlIoutput) of+                                  { !_output ->+                                  (case (_output) of+                                   { !_lhsOoutput ->+                                   ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Patterns_Nil :: T_Patterns+sem_Patterns_Nil  =+    (T_Patterns (\ (!_lhsIcon)+                   (!_lhsInt) ->+                     (case (False) of+                      { !_lhsOcontainsVars ->+                      (case ([]) of+                       { !_copy ->+                       (case (_copy) of+                        { !_lhsOcopy ->+                        (case (Set.empty) of+                         { !_lhsOdefinedAttrs ->+                         (case (Seq.empty) of+                          { !_lhsOerrors ->+                          (case (Set.empty) of+                           { !_lhsOlocals ->+                           (case ([]) of+                            { !_output ->+                            (case (_output) of+                             { !_lhsOoutput ->+                             ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) })))+-- Production --------------------------------------------------+{-+   visit 0:+      inherited attributes:+         cr                   : Bool+         inh                  : Attributes+         manualAttrOrderMap   : AttrOrderMap+         nonterminals         : Set NontermIdent+         nt                   : NontermIdent+         o_rename             : Bool+         syn                  : Attributes+         typeSyns             : TypeSyns+         useMap               : Map Identifier (String,String,String)+      chained attribute:+         uniq                 : Int+      synthesized attributes:+         errors               : Seq Error+         output               : SELF+   alternatives:+      alternative Production:+         child con            : {ConstructorIdent}+         child children       : Children+         child rules          : Rules+         child typeSigs       : TypeSigs+         visit 0:+            local orderDeps   : _+            local orderErrs   : _+            local _tup1       : _+            local errs        : _+            local newRls      : _+-}+-- cata+sem_Production :: Production ->+                  T_Production+sem_Production !(Production _con _children _rules _typeSigs) =+    (sem_Production_Production _con (sem_Children _children) (sem_Rules _rules) (sem_TypeSigs _typeSigs))+-- semantic domain+newtype T_Production = T_Production (Bool ->+                                     Attributes ->+                                     AttrOrderMap ->+                                     (Set NontermIdent) ->+                                     NontermIdent ->+                                     Bool ->+                                     Attributes ->+                                     TypeSyns ->+                                     Int ->+                                     (Map Identifier (String,String,String)) ->+                                     ( (Seq Error),Production,Int))+data Inh_Production = Inh_Production {cr_Inh_Production :: !(Bool),inh_Inh_Production :: !(Attributes),manualAttrOrderMap_Inh_Production :: !(AttrOrderMap),nonterminals_Inh_Production :: !(Set NontermIdent),nt_Inh_Production :: !(NontermIdent),o_rename_Inh_Production :: !(Bool),syn_Inh_Production :: !(Attributes),typeSyns_Inh_Production :: !(TypeSyns),uniq_Inh_Production :: !(Int),useMap_Inh_Production :: !(Map Identifier (String,String,String))}+data Syn_Production = Syn_Production {errors_Syn_Production :: !(Seq Error),output_Syn_Production :: !(Production),uniq_Syn_Production :: !(Int)}+wrap_Production !(T_Production sem) !(Inh_Production _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsInonterminals _lhsInt _lhsIo_rename _lhsIsyn _lhsItypeSyns _lhsIuniq _lhsIuseMap) =+    (let ( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) =+             (sem _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsInonterminals _lhsInt _lhsIo_rename _lhsIsyn _lhsItypeSyns _lhsIuniq _lhsIuseMap)+     in  (Syn_Production _lhsOerrors _lhsOoutput _lhsOuniq))+sem_Production_Production :: ConstructorIdent ->+                             T_Children ->+                             T_Rules ->+                             T_TypeSigs ->+                             T_Production+sem_Production_Production !con_ !(T_Children children_) !(T_Rules rules_) !(T_TypeSigs typeSigs_) =+    (T_Production (\ (!_lhsIcr)+                     (!_lhsIinh)+                     (!_lhsImanualAttrOrderMap)+                     (!_lhsInonterminals)+                     (!_lhsInt)+                     (!_lhsIo_rename)+                     (!_lhsIsyn)+                     (!_lhsItypeSyns)+                     (!_lhsIuniq)+                     (!_lhsIuseMap) ->+                       (case (Set.toList $ Map.findWithDefault Set.empty con_ $ Map.findWithDefault Map.empty _lhsInt _lhsImanualAttrOrderMap) of+                        { !_orderDeps ->+                        (case (_lhsIuniq) of+                         { !_rulesOuniq ->+                         (case (_lhsInt) of+                          { !_rulesOnt ->+                          (case (con_) of+                           { !_rulesOcon ->+                           (case ((rules_ _rulesOcon _rulesOnt _rulesOuniq)) of+                            { ( !_rulesIdefinedAttrs,!_rulesIerrors,!_rulesIlocals,!_rulesIoutput,!_rulesIuniq) ->+                            (case (_lhsInt) of+                             { !_childrenOnt ->+                             (case (_lhsIcr) of+                              { !_childrenOcr ->+                              (case (con_) of+                               { !_childrenOcon ->+                               (case ((children_ _childrenOcon _childrenOcr _childrenOnt)) of+                                { ( !_childrenIerrors,!_childrenIfields,!_childrenIinputs,!_childrenIoutput,!_childrenIoutputs) ->+                                (case (let chldOutMap = Map.fromList [ (k, Map.keysSet s) | (k,s) <- _childrenIoutputs ]+                                           chldInMap  = Map.fromList [ (k, Map.keysSet s) | (k,s) <- _childrenIinputs ]+                                           isInAttribute :: Identifier -> Identifier -> [Error]+                                           isInAttribute fld nm+                                              | fld == _LOC = if nm `Set.member` _rulesIlocals+                                                              then []+                                                              else [UndefAttr _lhsInt con_ fld nm False]+                                              | fld == _LHS = if nm `Map.member` _lhsIinh+                                                              then []+                                                              else [UndefAttr _lhsInt con_ fld nm False]+                                              | otherwise   = if nm `Set.member` (Map.findWithDefault Set.empty fld chldOutMap)+                                                              then []+                                                              else [UndefAttr _lhsInt con_ fld nm False]+                                           isOutAttribute :: Identifier -> Identifier -> [Error]+                                           isOutAttribute fld nm+                                              | fld == _LOC = if nm `Set.member` _rulesIlocals+                                                              then []+                                                              else [UndefAttr _lhsInt con_ fld nm True]+                                              | fld == _LHS = if nm `Map.member` _lhsIsyn+                                                              then []+                                                              else [UndefAttr _lhsInt con_ fld nm True]+                                              | otherwise   = if nm `Set.member` (Map.findWithDefault Set.empty fld chldInMap)+                                                              then []+                                                              else [UndefAttr _lhsInt con_ fld nm True]+                                       in Seq.fromList . concat $+                                          [ isInAttribute fldA nmA ++ isOutAttribute fldB nmB+                                          | dep@(Dependency (fldA,nmA) (fldB,nmB)) <- _orderDeps+                                          ]) of+                                 { !_orderErrs ->+                                 (case (let locals       = _rulesIlocals+                                            initenv      = Map.fromList (  [ (a,_ACHILD)+                                                                           | (a,_,_) <- _childrenIfields+                                                                           ]+                                                                        ++ attrs(_LHS, _lhsIinh)+                                                                        ++ [ (a,_LOC)+                                                                           |  a <- Set.toList locals+                                                                           ]+                                                                        )+                                            attrs (n,as) = [ (a,n) | a <- Map.keys as ]+                                            envs       = scanl (flip Map.union)+                                                               initenv+                                                               (map (Map.fromList . attrs ) _childrenIoutputs)+                                            child_envs = init envs+                                            lhs_env    = last envs+                                            (selfAttrs, normalAttrs)+                                              = Map.partition isSELFNonterminal _lhsIsyn+                                            (_,undefAttrs)+                                              = removeDefined _rulesIdefinedAttrs (_LHS, normalAttrs)+                                            (useAttrs,others)+                                              = splitAttrs _lhsIuseMap undefAttrs+                                            (rules1, errors1)+                                              = concatRE $ map (copyRule _lhsInt con_ _lhsIcr locals)+                                                               (zip envs (map (removeDefined _rulesIdefinedAttrs) _childrenIinputs))+                                            uRules+                                              = map (useRule locals _childrenIoutputs) useAttrs+                                            selfLocRules+                                              =  [ selfRule False attr (constructor [childSelf attr nm tp | (nm,tp,ho) <- _childrenIfields, not ho])+                                                 | attr <- Map.keys selfAttrs+                                                 , not (Set.member attr locals)+                                                 ]+                                                 where+                                                   childSelf self nm tp+                                                     = case tp of NT nt _                         -> attrName nm self+                                                                  _      | nm `Set.member` locals -> locname nm+                                                                         | otherwise              -> fieldName nm+                                                   constructor fs+                                                    | getName con_ == "Tuple" && _lhsInt `elem` map fst _lhsItypeSyns+                                                      = "(" ++ concat (List.intersperse "," fs) ++ ")"+                                                    | otherwise+                                                      = getConName _lhsItypeSyns _lhsIo_rename _lhsInt con_ ++ " " ++ unwords fs+                                            selfRules+                                              = [ selfRule True attr undefined+                                                | attr <- Map.keys selfAttrs+                                                , not (Set.member (_LHS,attr) _rulesIdefinedAttrs)+                                                ]+                                            (rules5, errs5)+                                              = copyRule _lhsInt+                                                         con_+                                                         _lhsIcr+                                                         locals+                                                         (lhs_env, (_LHS, others))+                                        in (uRules++selfLocRules++selfRules++rules5++rules1, errors1<>errs5)) of+                                  { !__tup1 ->+                                  (case (__tup1) of+                                   { !(_,!_errs) ->+                                   (case (_childrenIerrors <> _errs <> _rulesIerrors <> _orderErrs) of+                                    { !_lhsOerrors ->+                                    (case (__tup1) of+                                     { !(!_newRls,_) ->+                                     (case ((typeSigs_ )) of+                                      { ( !_typeSigsIoutput) ->+                                      (case (Production con_ _childrenIoutput (_rulesIoutput ++ _newRls) _typeSigsIoutput) of+                                       { !_lhsOoutput ->+                                       (case (_rulesIuniq) of+                                        { !_lhsOuniq ->+                                        ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+-- Productions -------------------------------------------------+{-+   visit 0:+      inherited attributes:+         cr                   : Bool+         inh                  : Attributes+         manualAttrOrderMap   : AttrOrderMap+         nonterminals         : Set NontermIdent+         nt                   : NontermIdent+         o_rename             : Bool+         syn                  : Attributes+         typeSyns             : TypeSyns+         useMap               : Map Identifier (String,String,String)+      chained attribute:+         uniq                 : Int+      synthesized attributes:+         errors               : Seq Error+         output               : SELF+   alternatives:+      alternative Cons:+         child hd             : Production+         child tl             : Productions+         visit 0:+            local output      : _+      alternative Nil:+         visit 0:+            local output      : _+-}+-- cata+sem_Productions :: Productions ->+                   T_Productions+sem_Productions !list =+    (Prelude.foldr sem_Productions_Cons sem_Productions_Nil (Prelude.map sem_Production list))+-- semantic domain+newtype T_Productions = T_Productions (Bool ->+                                       Attributes ->+                                       AttrOrderMap ->+                                       (Set NontermIdent) ->+                                       NontermIdent ->+                                       Bool ->+                                       Attributes ->+                                       TypeSyns ->+                                       Int ->+                                       (Map Identifier (String,String,String)) ->+                                       ( (Seq Error),Productions,Int))+data Inh_Productions = Inh_Productions {cr_Inh_Productions :: !(Bool),inh_Inh_Productions :: !(Attributes),manualAttrOrderMap_Inh_Productions :: !(AttrOrderMap),nonterminals_Inh_Productions :: !(Set NontermIdent),nt_Inh_Productions :: !(NontermIdent),o_rename_Inh_Productions :: !(Bool),syn_Inh_Productions :: !(Attributes),typeSyns_Inh_Productions :: !(TypeSyns),uniq_Inh_Productions :: !(Int),useMap_Inh_Productions :: !(Map Identifier (String,String,String))}+data Syn_Productions = Syn_Productions {errors_Syn_Productions :: !(Seq Error),output_Syn_Productions :: !(Productions),uniq_Syn_Productions :: !(Int)}+wrap_Productions !(T_Productions sem) !(Inh_Productions _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsInonterminals _lhsInt _lhsIo_rename _lhsIsyn _lhsItypeSyns _lhsIuniq _lhsIuseMap) =+    (let ( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) =+             (sem _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsInonterminals _lhsInt _lhsIo_rename _lhsIsyn _lhsItypeSyns _lhsIuniq _lhsIuseMap)+     in  (Syn_Productions _lhsOerrors _lhsOoutput _lhsOuniq))+sem_Productions_Cons :: T_Production ->+                        T_Productions ->+                        T_Productions+sem_Productions_Cons !(T_Production hd_) !(T_Productions tl_) =+    (T_Productions (\ (!_lhsIcr)+                      (!_lhsIinh)+                      (!_lhsImanualAttrOrderMap)+                      (!_lhsInonterminals)+                      (!_lhsInt)+                      (!_lhsIo_rename)+                      (!_lhsIsyn)+                      (!_lhsItypeSyns)+                      (!_lhsIuniq)+                      (!_lhsIuseMap) ->+                        (case (_lhsIuseMap) of+                         { !_tlOuseMap ->+                         (case (_lhsItypeSyns) of+                          { !_tlOtypeSyns ->+                          (case (_lhsIsyn) of+                           { !_tlOsyn ->+                           (case (_lhsIo_rename) of+                            { !_tlOo_rename ->+                            (case (_lhsInt) of+                             { !_tlOnt ->+                             (case (_lhsImanualAttrOrderMap) of+                              { !_tlOmanualAttrOrderMap ->+                              (case (_lhsIinh) of+                               { !_tlOinh ->+                               (case (_lhsIcr) of+                                { !_tlOcr ->+                                (case (_lhsIuseMap) of+                                 { !_hdOuseMap ->+                                 (case (_lhsItypeSyns) of+                                  { !_hdOtypeSyns ->+                                  (case (_lhsIsyn) of+                                   { !_hdOsyn ->+                                   (case (_lhsIo_rename) of+                                    { !_hdOo_rename ->+                                    (case (_lhsInt) of+                                     { !_hdOnt ->+                                     (case (_lhsImanualAttrOrderMap) of+                                      { !_hdOmanualAttrOrderMap ->+                                      (case (_lhsIinh) of+                                       { !_hdOinh ->+                                       (case (_lhsIcr) of+                                        { !_hdOcr ->+                                        (case (_lhsIuniq) of+                                         { !_hdOuniq ->+                                         (case (_lhsInonterminals) of+                                          { !_hdOnonterminals ->+                                          (case ((hd_ _hdOcr _hdOinh _hdOmanualAttrOrderMap _hdOnonterminals _hdOnt _hdOo_rename _hdOsyn _hdOtypeSyns _hdOuniq _hdOuseMap)) of+                                           { ( !_hdIerrors,!_hdIoutput,!_hdIuniq) ->+                                           (case (_hdIuniq) of+                                            { !_tlOuniq ->+                                            (case (_lhsInonterminals) of+                                             { !_tlOnonterminals ->+                                             (case ((tl_ _tlOcr _tlOinh _tlOmanualAttrOrderMap _tlOnonterminals _tlOnt _tlOo_rename _tlOsyn _tlOtypeSyns _tlOuniq _tlOuseMap)) of+                                              { ( !_tlIerrors,!_tlIoutput,!_tlIuniq) ->+                                              (case (_hdIerrors Seq.<> _tlIerrors) of+                                               { !_lhsOerrors ->+                                               (case ((:) _hdIoutput _tlIoutput) of+                                                { !_output ->+                                                (case (_output) of+                                                 { !_lhsOoutput ->+                                                 (case (_tlIuniq) of+                                                  { !_lhsOuniq ->+                                                  ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Productions_Nil :: T_Productions+sem_Productions_Nil  =+    (T_Productions (\ (!_lhsIcr)+                      (!_lhsIinh)+                      (!_lhsImanualAttrOrderMap)+                      (!_lhsInonterminals)+                      (!_lhsInt)+                      (!_lhsIo_rename)+                      (!_lhsIsyn)+                      (!_lhsItypeSyns)+                      (!_lhsIuniq)+                      (!_lhsIuseMap) ->+                        (case (Seq.empty) of+                         { !_lhsOerrors ->+                         (case ([]) of+                          { !_output ->+                          (case (_output) of+                           { !_lhsOoutput ->+                           (case (_lhsIuniq) of+                            { !_lhsOuniq ->+                            ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) })))+-- Rule --------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         con                  : ConstructorIdent+         nt                   : NontermIdent+      chained attribute:+         uniq                 : Int+      synthesized attributes:+         containsVars         : Bool+         definedAttrs         : Set (Identifier,Identifier)+         errors               : Seq Error+         locals               : Set Identifier+         output               : SELF+         outputs              : Rules+   alternatives:+      alternative Rule:+         child pattern        : Pattern+         child rhs            : {Expression}+         child owrt           : {Bool}+         child origin         : {String}+         visit 0:+            local output      : _+            local _tup2       : {(Rules,Int)}+-}+-- cata+sem_Rule :: Rule ->+            T_Rule+sem_Rule !(Rule _pattern _rhs _owrt _origin) =+    (sem_Rule_Rule (sem_Pattern _pattern) _rhs _owrt _origin)+-- semantic domain+newtype T_Rule = T_Rule (ConstructorIdent ->+                         NontermIdent ->+                         Int ->+                         ( Bool,(Set (Identifier,Identifier)),(Seq Error),(Set Identifier),Rule,Rules,Int))+data Inh_Rule = Inh_Rule {con_Inh_Rule :: !(ConstructorIdent),nt_Inh_Rule :: !(NontermIdent),uniq_Inh_Rule :: !(Int)}+data Syn_Rule = Syn_Rule {containsVars_Syn_Rule :: !(Bool),definedAttrs_Syn_Rule :: !(Set (Identifier,Identifier)),errors_Syn_Rule :: !(Seq Error),locals_Syn_Rule :: !(Set Identifier),output_Syn_Rule :: !(Rule),outputs_Syn_Rule :: !(Rules),uniq_Syn_Rule :: !(Int)}+wrap_Rule !(T_Rule sem) !(Inh_Rule _lhsIcon _lhsInt _lhsIuniq) =+    (let ( !_lhsOcontainsVars,!_lhsOdefinedAttrs,!_lhsOerrors,!_lhsOlocals,!_lhsOoutput,!_lhsOoutputs,!_lhsOuniq) =+             (sem _lhsIcon _lhsInt _lhsIuniq)+     in  (Syn_Rule _lhsOcontainsVars _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput _lhsOoutputs _lhsOuniq))+sem_Rule_Rule :: T_Pattern ->+                 Expression ->+                 Bool ->+                 String ->+                 T_Rule+sem_Rule_Rule !(T_Pattern pattern_) !rhs_ !owrt_ !origin_ =+    (T_Rule (\ (!_lhsIcon)+               (!_lhsInt)+               (!_lhsIuniq) ->+                 (case (_lhsInt) of+                  { !_patternOnt ->+                  (case (_lhsIcon) of+                   { !_patternOcon ->+                   (case ((pattern_ _patternOcon _patternOnt)) of+                    { ( !_patternIcontainsVars,!_patternIcopy,!_patternIdefinedAttrs,!_patternIerrors,!_patternIlocals,!_patternIoutput) ->+                    (case (_patternIcontainsVars) of+                     { !_lhsOcontainsVars ->+                     (case (_patternIdefinedAttrs) of+                      { !_lhsOdefinedAttrs ->+                      (case (_patternIerrors) of+                       { !_lhsOerrors ->+                       (case (_patternIlocals) of+                        { !_lhsOlocals ->+                        (case (Rule _patternIoutput rhs_ owrt_ origin_) of+                         { !_output ->+                         (case (_output) of+                          { !_lhsOoutput ->+                          (case (multiRule _output     _lhsIuniq) of+                           { !__tup2 ->+                           (case (__tup2) of+                            { !(!_lhsOoutputs,_) ->+                            (case (__tup2) of+                             { !(_,!_lhsOuniq) ->+                             ( _lhsOcontainsVars,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOoutputs,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) })))+-- Rules -------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         con                  : ConstructorIdent+         nt                   : NontermIdent+      chained attribute:+         uniq                 : Int+      synthesized attributes:+         definedAttrs         : Set (Identifier,Identifier)+         errors               : Seq Error+         locals               : Set Identifier+         output               : SELF+   alternatives:+      alternative Cons:+         child hd             : Rule+         child tl             : Rules+      alternative Nil:+         visit 0:+            local output      : _+-}+-- cata+sem_Rules :: Rules ->+             T_Rules+sem_Rules !list =+    (Prelude.foldr sem_Rules_Cons sem_Rules_Nil (Prelude.map sem_Rule list))+-- semantic domain+newtype T_Rules = T_Rules (ConstructorIdent ->+                           NontermIdent ->+                           Int ->+                           ( (Set (Identifier,Identifier)),(Seq Error),(Set Identifier),Rules,Int))+data Inh_Rules = Inh_Rules {con_Inh_Rules :: !(ConstructorIdent),nt_Inh_Rules :: !(NontermIdent),uniq_Inh_Rules :: !(Int)}+data Syn_Rules = Syn_Rules {definedAttrs_Syn_Rules :: !(Set (Identifier,Identifier)),errors_Syn_Rules :: !(Seq Error),locals_Syn_Rules :: !(Set Identifier),output_Syn_Rules :: !(Rules),uniq_Syn_Rules :: !(Int)}+wrap_Rules !(T_Rules sem) !(Inh_Rules _lhsIcon _lhsInt _lhsIuniq) =+    (let ( !_lhsOdefinedAttrs,!_lhsOerrors,!_lhsOlocals,!_lhsOoutput,!_lhsOuniq) =+             (sem _lhsIcon _lhsInt _lhsIuniq)+     in  (Syn_Rules _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput _lhsOuniq))+sem_Rules_Cons :: T_Rule ->+                  T_Rules ->+                  T_Rules+sem_Rules_Cons !(T_Rule hd_) !(T_Rules tl_) =+    (T_Rules (\ (!_lhsIcon)+                (!_lhsInt)+                (!_lhsIuniq) ->+                  (case (_lhsIuniq) of+                   { !_hdOuniq ->+                   (case (_lhsInt) of+                    { !_hdOnt ->+                    (case (_lhsIcon) of+                     { !_hdOcon ->+                     (case ((hd_ _hdOcon _hdOnt _hdOuniq)) of+                      { ( !_hdIcontainsVars,!_hdIdefinedAttrs,!_hdIerrors,!_hdIlocals,!_hdIoutput,!_hdIoutputs,!_hdIuniq) ->+                      (case (_hdIuniq) of+                       { !_tlOuniq ->+                       (case (_lhsInt) of+                        { !_tlOnt ->+                        (case (_lhsIcon) of+                         { !_tlOcon ->+                         (case ((tl_ _tlOcon _tlOnt _tlOuniq)) of+                          { ( !_tlIdefinedAttrs,!_tlIerrors,!_tlIlocals,!_tlIoutput,!_tlIuniq) ->+                          (case (_hdIdefinedAttrs `Set.union` _tlIdefinedAttrs) of+                           { !_lhsOdefinedAttrs ->+                           (case (_hdIerrors Seq.<> _tlIerrors) of+                            { !_lhsOerrors ->+                            (case (_hdIlocals `Set.union` _tlIlocals) of+                             { !_lhsOlocals ->+                             (case (if _hdIcontainsVars then _hdIoutputs ++ _tlIoutput else _tlIoutput) of+                              { !_lhsOoutput ->+                              (case (_tlIuniq) of+                               { !_lhsOuniq ->+                               ( _lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Rules_Nil :: T_Rules+sem_Rules_Nil  =+    (T_Rules (\ (!_lhsIcon)+                (!_lhsInt)+                (!_lhsIuniq) ->+                  (case (Set.empty) of+                   { !_lhsOdefinedAttrs ->+                   (case (Seq.empty) of+                    { !_lhsOerrors ->+                    (case (Set.empty) of+                     { !_lhsOlocals ->+                     (case ([]) of+                      { !_output ->+                      (case (_output) of+                       { !_lhsOoutput ->+                       (case (_lhsIuniq) of+                        { !_lhsOuniq ->+                        ( _lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOuniq) }) }) }) }) }) })))+-- TypeSig -----------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         output               : SELF+   alternatives:+      alternative TypeSig:+         child name           : {Identifier}+         child tp             : {Type}+         visit 0:+            local output      : _+-}+-- cata+sem_TypeSig :: TypeSig ->+               T_TypeSig+sem_TypeSig !(TypeSig _name _tp) =+    (sem_TypeSig_TypeSig _name _tp)+-- semantic domain+newtype T_TypeSig = T_TypeSig (( TypeSig))+data Inh_TypeSig = Inh_TypeSig {}+data Syn_TypeSig = Syn_TypeSig {output_Syn_TypeSig :: !(TypeSig)}+wrap_TypeSig !(T_TypeSig sem) !(Inh_TypeSig ) =+    (let ( !_lhsOoutput) =+             (sem )+     in  (Syn_TypeSig _lhsOoutput))+sem_TypeSig_TypeSig :: Identifier ->+                       Type ->+                       T_TypeSig+sem_TypeSig_TypeSig !name_ !tp_ =+    (T_TypeSig (case (TypeSig name_ tp_) of+                { !_output ->+                (case (_output) of+                 { !_lhsOoutput ->+                 ( _lhsOoutput) }) }))+-- TypeSigs ----------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         output               : SELF+   alternatives:+      alternative Cons:+         child hd             : TypeSig+         child tl             : TypeSigs+         visit 0:+            local output      : _+      alternative Nil:+         visit 0:+            local output      : _+-}+-- cata+sem_TypeSigs :: TypeSigs ->+                T_TypeSigs+sem_TypeSigs !list =+    (Prelude.foldr sem_TypeSigs_Cons sem_TypeSigs_Nil (Prelude.map sem_TypeSig list))+-- semantic domain+newtype T_TypeSigs = T_TypeSigs (( TypeSigs))+data Inh_TypeSigs = Inh_TypeSigs {}+data Syn_TypeSigs = Syn_TypeSigs {output_Syn_TypeSigs :: !(TypeSigs)}+wrap_TypeSigs !(T_TypeSigs sem) !(Inh_TypeSigs ) =+    (let ( !_lhsOoutput) =+             (sem )+     in  (Syn_TypeSigs _lhsOoutput))+sem_TypeSigs_Cons :: T_TypeSig ->+                     T_TypeSigs ->+                     T_TypeSigs+sem_TypeSigs_Cons !(T_TypeSig hd_) !(T_TypeSigs tl_) =+    (T_TypeSigs (case ((tl_ )) of+                 { ( !_tlIoutput) ->+                 (case ((hd_ )) of+                  { ( !_hdIoutput) ->+                  (case ((:) _hdIoutput _tlIoutput) of+                   { !_output ->+                   (case (_output) of+                    { !_lhsOoutput ->+                    ( _lhsOoutput) }) }) }) }))+sem_TypeSigs_Nil :: T_TypeSigs+sem_TypeSigs_Nil  =+    (T_TypeSigs (case ([]) of+                 { !_output ->+                 (case (_output) of+                  { !_lhsOoutput ->+                  ( _lhsOoutput) }) }))
src-derived/Desugar.hs view
@@ -1,2279 +1,1811 @@--- UUAGC 0.9.5 (Desugar.ag)-module Desugar where--import qualified Data.Set as Set-import qualified Data.Map as Map-import Data.Map(Map)-import qualified UU.DData.Seq as Seq-import UU.DData.Seq(Seq,(<>))-import UU.Scanner.Position(Pos(..))-import Maybe-import Data.List(intersperse)--import AbstractSyntax-import ErrorMessages-import Options-import HsToken-import HsTokenScanner-import TokenDef---- AbstractSyntax.ag imports-import Data.Set(Set)-import Data.Map(Map)-import Patterns    (Pattern(..),Patterns)-import Expression  (Expression(..))-import CommonTypes---- Patterns.ag imports-import UU.Scanner.Position(Pos)-import CommonTypes (ConstructorIdent,Identifier)--import UU.Scanner.Position(Pos)-import HsToken--import CommonTypes-import UU.Scanner.Position(Pos)--addl :: Int -> Pos -> Pos-addl n (Pos l c f) = Pos (l+n) c f--maybeError :: a -> Error -> Maybe a -> (a, Seq Error)-maybeError def err mb-  = maybe (def, Seq.single err) (\r -> (r, Seq.empty)) mb--findField :: Identifier -> Identifier -> [(Identifier,Identifier)] -> Maybe Identifier-findField fld attr list-  | fld == _FIRST = f list-  | fld == _LAST  = f (reverse list)-  | otherwise     = Just fld-  where-    f = lookup attr--mergeAttributes :: AttrMap -> AttrMap -> AttrMap-mergeAttributes = Map.unionWith $ Map.unionWith $ Set.union--- Child --------------------------------------------------------{--   visit 0:-      synthesized attributes:-         childInhs            : [(Identifier, Identifier)]-         childSyns            : [(Identifier, Identifier)]-         output               : SELF-   alternatives:-      alternative Child:-         child name           : {Identifier}-         child tp             : {Type}-         child inh            : {Attributes}-         child syn            : {Attributes}-         child higherOrder    : {Bool}-         visit 0:-            local output      : _--}--- cata-sem_Child :: Child ->-             T_Child-sem_Child (Child _name _tp _inh _syn _higherOrder) =-    (sem_Child_Child _name _tp _inh _syn _higherOrder)--- semantic domain-newtype T_Child = T_Child (( ([(Identifier, Identifier)]),([(Identifier, Identifier)]),Child))-data Inh_Child = Inh_Child {}-data Syn_Child = Syn_Child {childInhs_Syn_Child :: [(Identifier, Identifier)],childSyns_Syn_Child :: [(Identifier, Identifier)],output_Syn_Child :: Child}-wrap_Child (T_Child sem) (Inh_Child ) =-    (let ( _lhsOchildInhs,_lhsOchildSyns,_lhsOoutput) =-             (sem )-     in  (Syn_Child _lhsOchildInhs _lhsOchildSyns _lhsOoutput))-sem_Child_Child :: Identifier ->-                   Type ->-                   Attributes ->-                   Attributes ->-                   Bool ->-                   T_Child-sem_Child_Child name_ tp_ inh_ syn_ higherOrder_ =-    (T_Child (let _lhsOchildInhs :: ([(Identifier, Identifier)])-                  _lhsOchildSyns :: ([(Identifier, Identifier)])-                  _lhsOoutput :: Child-                  -- "Desugar.ag"(line 123, column 7)-                  _lhsOchildInhs =-                      [(i, name_) | i <- Map.keys inh_ ]-                  -- "Desugar.ag"(line 124, column 7)-                  _lhsOchildSyns =-                      [(s, name_) | s <- Map.keys syn_ ]-                  -- self rule-                  _output =-                      Child name_ tp_ inh_ syn_ higherOrder_-                  -- self rule-                  _lhsOoutput =-                      _output-              in  ( _lhsOchildInhs,_lhsOchildSyns,_lhsOoutput)))--- Children -----------------------------------------------------{--   visit 0:-      synthesized attributes:-         childInhs            : [(Identifier, Identifier)]-         childSyns            : [(Identifier, Identifier)]-         output               : SELF-   alternatives:-      alternative Cons:-         child hd             : Child-         child tl             : Children-         visit 0:-            local output      : _-      alternative Nil:-         visit 0:-            local output      : _--}--- cata-sem_Children :: Children ->-                T_Children-sem_Children list =-    (Prelude.foldr sem_Children_Cons sem_Children_Nil (Prelude.map sem_Child list))--- semantic domain-newtype T_Children = T_Children (( ([(Identifier, Identifier)]),([(Identifier, Identifier)]),Children))-data Inh_Children = Inh_Children {}-data Syn_Children = Syn_Children {childInhs_Syn_Children :: [(Identifier, Identifier)],childSyns_Syn_Children :: [(Identifier, Identifier)],output_Syn_Children :: Children}-wrap_Children (T_Children sem) (Inh_Children ) =-    (let ( _lhsOchildInhs,_lhsOchildSyns,_lhsOoutput) =-             (sem )-     in  (Syn_Children _lhsOchildInhs _lhsOchildSyns _lhsOoutput))-sem_Children_Cons :: T_Child ->-                     T_Children ->-                     T_Children-sem_Children_Cons (T_Child hd_) (T_Children tl_) =-    (T_Children (let _lhsOchildInhs :: ([(Identifier, Identifier)])-                     _lhsOchildSyns :: ([(Identifier, Identifier)])-                     _lhsOoutput :: Children-                     _hdIchildInhs :: ([(Identifier, Identifier)])-                     _hdIchildSyns :: ([(Identifier, Identifier)])-                     _hdIoutput :: Child-                     _tlIchildInhs :: ([(Identifier, Identifier)])-                     _tlIchildSyns :: ([(Identifier, Identifier)])-                     _tlIoutput :: Children-                     -- use rule "Desugar.ag"(line 118, column 48)-                     _lhsOchildInhs =-                         _hdIchildInhs ++ _tlIchildInhs-                     -- use rule "Desugar.ag"(line 118, column 48)-                     _lhsOchildSyns =-                         _hdIchildSyns ++ _tlIchildSyns-                     -- self rule-                     _output =-                         (:) _hdIoutput _tlIoutput-                     -- self rule-                     _lhsOoutput =-                         _output-                     ( _hdIchildInhs,_hdIchildSyns,_hdIoutput) =-                         (hd_ )-                     ( _tlIchildInhs,_tlIchildSyns,_tlIoutput) =-                         (tl_ )-                 in  ( _lhsOchildInhs,_lhsOchildSyns,_lhsOoutput)))-sem_Children_Nil :: T_Children-sem_Children_Nil  =-    (T_Children (let _lhsOchildInhs :: ([(Identifier, Identifier)])-                     _lhsOchildSyns :: ([(Identifier, Identifier)])-                     _lhsOoutput :: Children-                     -- use rule "Desugar.ag"(line 118, column 48)-                     _lhsOchildInhs =-                         []-                     -- use rule "Desugar.ag"(line 118, column 48)-                     _lhsOchildSyns =-                         []-                     -- self rule-                     _output =-                         []-                     -- self rule-                     _lhsOoutput =-                         _output-                 in  ( _lhsOchildInhs,_lhsOchildSyns,_lhsOoutput)))--- Expression ---------------------------------------------------{--   visit 0:-      inherited attributes:-         childInhs            : [(Identifier, Identifier)]-         childSyns            : [(Identifier, Identifier)]-         con                  : ConstructorIdent-         nt                   : NontermIdent-         options              : Options-         ruleDescr            : String-      synthesized attributes:-         errors               : Seq Error-         output               : SELF-   alternatives:-      alternative Expression:-         child pos            : {Pos}-         child tks            : {[HsToken]}-         visit 0:-            local _tup1       : _-            local tks'        : _-            local output      : _--}--- cata-sem_Expression :: Expression ->-                  T_Expression-sem_Expression (Expression _pos _tks) =-    (sem_Expression_Expression _pos _tks)--- semantic domain-newtype T_Expression = T_Expression (([(Identifier, Identifier)]) ->-                                     ([(Identifier, Identifier)]) ->-                                     ConstructorIdent ->-                                     NontermIdent ->-                                     Options ->-                                     String ->-                                     ( (Seq Error),Expression))-data Inh_Expression = Inh_Expression {childInhs_Inh_Expression :: [(Identifier, Identifier)],childSyns_Inh_Expression :: [(Identifier, Identifier)],con_Inh_Expression :: ConstructorIdent,nt_Inh_Expression :: NontermIdent,options_Inh_Expression :: Options,ruleDescr_Inh_Expression :: String}-data Syn_Expression = Syn_Expression {errors_Syn_Expression :: Seq Error,output_Syn_Expression :: Expression}-wrap_Expression (T_Expression sem) (Inh_Expression _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIoptions _lhsIruleDescr) =-    (let ( _lhsOerrors,_lhsOoutput) =-             (sem _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIoptions _lhsIruleDescr)-     in  (Syn_Expression _lhsOerrors _lhsOoutput))-sem_Expression_Expression :: Pos ->-                             ([HsToken]) ->-                             T_Expression-sem_Expression_Expression pos_ tks_ =-    (T_Expression (\ _lhsIchildInhs-                     _lhsIchildSyns-                     _lhsIcon-                     _lhsInt-                     _lhsIoptions-                     _lhsIruleDescr ->-                       (let _lhsOerrors :: (Seq Error)-                            _lhsOoutput :: Expression-                            -- "Desugar.ag"(line 42, column 7)-                            __tup1 =-                                let inh = Inh_HsTokensRoot { childInhs_Inh_HsTokensRoot     = _lhsIchildInhs-                                                           , childSyns_Inh_HsTokensRoot     = _lhsIchildSyns-                                                           , nt_Inh_HsTokensRoot            = _lhsInt-                                                           , con_Inh_HsTokensRoot           = _lhsIcon-                                                           , ruleDescr_Inh_HsTokensRoot     = _lhsIruleDescr-                                                           , useFieldIdent_Inh_HsTokensRoot = genUseTraces _lhsIoptions-                                                           }-                                    sem = sem_HsTokensRoot (HsTokensRoot tks_)-                                    syn = wrap_HsTokensRoot sem inh-                                in (tks_Syn_HsTokensRoot syn, errors_Syn_HsTokensRoot syn)-                            -- "Desugar.ag"(line 42, column 7)-                            (_tks',_) =-                                __tup1-                            -- "Desugar.ag"(line 42, column 7)-                            (_,_lhsOerrors) =-                                __tup1-                            -- "Desugar.ag"(line 52, column 7)-                            _lhsOoutput =-                                Expression pos_ _tks'-                            -- self rule-                            _output =-                                Expression pos_ tks_-                        in  ( _lhsOerrors,_lhsOoutput))))--- Grammar ------------------------------------------------------{--   visit 0:-      inherited attributes:-         forcedIrrefutables   : AttrMap-         options              : Options-      synthesized attributes:-         allAttributes        : AttrMap-         errors               : Seq Error-         output               : SELF-   alternatives:-      alternative Grammar:-         child typeSyns       : {TypeSyns}-         child useMap         : {UseMap}-         child derivings      : {Derivings}-         child wrappers       : {Set NontermIdent}-         child nonts          : Nonterminals-         child pragmas        : {PragmaMap}-         child manualAttrOrderMap : {AttrOrderMap}-         child paramMap       : {ParamMap}-         child contextMap     : {ContextMap}-         visit 0:-            local output      : _--}--- cata-sem_Grammar :: Grammar ->-               T_Grammar-sem_Grammar (Grammar _typeSyns _useMap _derivings _wrappers _nonts _pragmas _manualAttrOrderMap _paramMap _contextMap) =-    (sem_Grammar_Grammar _typeSyns _useMap _derivings _wrappers (sem_Nonterminals _nonts) _pragmas _manualAttrOrderMap _paramMap _contextMap)--- semantic domain-newtype T_Grammar = T_Grammar (AttrMap ->-                               Options ->-                               ( AttrMap,(Seq Error),Grammar))-data Inh_Grammar = Inh_Grammar {forcedIrrefutables_Inh_Grammar :: AttrMap,options_Inh_Grammar :: Options}-data Syn_Grammar = Syn_Grammar {allAttributes_Syn_Grammar :: AttrMap,errors_Syn_Grammar :: Seq Error,output_Syn_Grammar :: Grammar}-wrap_Grammar (T_Grammar sem) (Inh_Grammar _lhsIforcedIrrefutables _lhsIoptions) =-    (let ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput) =-             (sem _lhsIforcedIrrefutables _lhsIoptions)-     in  (Syn_Grammar _lhsOallAttributes _lhsOerrors _lhsOoutput))-sem_Grammar_Grammar :: TypeSyns ->-                       UseMap ->-                       Derivings ->-                       (Set NontermIdent) ->-                       T_Nonterminals ->-                       PragmaMap ->-                       AttrOrderMap ->-                       ParamMap ->-                       ContextMap ->-                       T_Grammar-sem_Grammar_Grammar typeSyns_ useMap_ derivings_ wrappers_ (T_Nonterminals nonts_) pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ =-    (T_Grammar (\ _lhsIforcedIrrefutables-                  _lhsIoptions ->-                    (let _lhsOallAttributes :: AttrMap-                         _lhsOerrors :: (Seq Error)-                         _lhsOoutput :: Grammar-                         _nontsOforcedIrrefutables :: AttrMap-                         _nontsOoptions :: Options-                         _nontsIallAttributes :: AttrMap-                         _nontsIerrors :: (Seq Error)-                         _nontsIoutput :: Nonterminals-                         -- use rule "Desugar.ag"(line 189, column 23)-                         _lhsOallAttributes =-                             _nontsIallAttributes-                         -- use rule "Desugar.ag"(line 31, column 144)-                         _lhsOerrors =-                             _nontsIerrors-                         -- self rule-                         _output =-                             Grammar typeSyns_ useMap_ derivings_ wrappers_ _nontsIoutput pragmas_ manualAttrOrderMap_ paramMap_ contextMap_-                         -- self rule-                         _lhsOoutput =-                             _output-                         -- copy rule (down)-                         _nontsOforcedIrrefutables =-                             _lhsIforcedIrrefutables-                         -- copy rule (down)-                         _nontsOoptions =-                             _lhsIoptions-                         ( _nontsIallAttributes,_nontsIerrors,_nontsIoutput) =-                             (nonts_ _nontsOforcedIrrefutables _nontsOoptions)-                     in  ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput))))--- HsToken ------------------------------------------------------{--   visit 0:-      inherited attributes:-         childInhs            : [(Identifier, Identifier)]-         childSyns            : [(Identifier, Identifier)]-         con                  : ConstructorIdent-         nt                   : NontermIdent-         ruleDescr            : String-         useFieldIdent        : Bool-      chained attribute:-         addLines             : Int-      synthesized attributes:-         errors               : Seq Error-         tks                  : SELF-   alternatives:-      alternative AGField:-         child field          : {Identifier}-         child attr           : {Identifier}-         child pos            : {Pos}-         child rdesc          : {Maybe String}-         visit 0:-            local mField      : _-            local field'      : _-            local tks         : _-      alternative AGLocal:-         child var            : {Identifier}-         child pos            : {Pos}-         child rdesc          : {Maybe String}-         visit 0:-            local tks         : _-      alternative CharToken:-         child value          : {String}-         child pos            : {Pos}-         visit 0:-            local tks         : _-      alternative Err:-         child mesg           : {String}-         child pos            : {Pos}-         visit 0:-            local tks         : _-      alternative HsToken:-         child value          : {String}-         child pos            : {Pos}-         visit 0:-            local tks         : _-      alternative StrToken:-         child value          : {String}-         child pos            : {Pos}-         visit 0:-            local tks         : _--}--- cata-sem_HsToken :: HsToken ->-               T_HsToken-sem_HsToken (AGField _field _attr _pos _rdesc) =-    (sem_HsToken_AGField _field _attr _pos _rdesc)-sem_HsToken (AGLocal _var _pos _rdesc) =-    (sem_HsToken_AGLocal _var _pos _rdesc)-sem_HsToken (CharToken _value _pos) =-    (sem_HsToken_CharToken _value _pos)-sem_HsToken (Err _mesg _pos) =-    (sem_HsToken_Err _mesg _pos)-sem_HsToken (HsToken _value _pos) =-    (sem_HsToken_HsToken _value _pos)-sem_HsToken (StrToken _value _pos) =-    (sem_HsToken_StrToken _value _pos)--- semantic domain-newtype T_HsToken = T_HsToken (Int ->-                               ([(Identifier, Identifier)]) ->-                               ([(Identifier, Identifier)]) ->-                               ConstructorIdent ->-                               NontermIdent ->-                               String ->-                               Bool ->-                               ( Int,(Seq Error),HsToken))-data Inh_HsToken = Inh_HsToken {addLines_Inh_HsToken :: Int,childInhs_Inh_HsToken :: [(Identifier, Identifier)],childSyns_Inh_HsToken :: [(Identifier, Identifier)],con_Inh_HsToken :: ConstructorIdent,nt_Inh_HsToken :: NontermIdent,ruleDescr_Inh_HsToken :: String,useFieldIdent_Inh_HsToken :: Bool}-data Syn_HsToken = Syn_HsToken {addLines_Syn_HsToken :: Int,errors_Syn_HsToken :: Seq Error,tks_Syn_HsToken :: HsToken}-wrap_HsToken (T_HsToken sem) (Inh_HsToken _lhsIaddLines _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent) =-    (let ( _lhsOaddLines,_lhsOerrors,_lhsOtks) =-             (sem _lhsIaddLines _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent)-     in  (Syn_HsToken _lhsOaddLines _lhsOerrors _lhsOtks))-sem_HsToken_AGField :: Identifier ->-                       Identifier ->-                       Pos ->-                       (Maybe String) ->-                       T_HsToken-sem_HsToken_AGField field_ attr_ pos_ rdesc_ =-    (T_HsToken (\ _lhsIaddLines-                  _lhsIchildInhs-                  _lhsIchildSyns-                  _lhsIcon-                  _lhsInt-                  _lhsIruleDescr-                  _lhsIuseFieldIdent ->-                    (let _lhsOerrors :: (Seq Error)-                         _lhsOaddLines :: Int-                         _lhsOtks :: HsToken-                         -- "Desugar.ag"(line 72, column 7)-                         _mField =-                             findField field_ attr_ _lhsIchildSyns-                         -- "Desugar.ag"(line 74, column 7)-                         _field' =-                             maybe field_ id _mField-                         -- "Desugar.ag"(line 75, column 7)-                         _lhsOerrors =-                             maybe (Seq.single (UndefAttr _lhsInt _lhsIcon field_ (Ident "<ANY>" (getPos field_)) False)) (const Seq.empty) _mField-                         -- "Desugar.ag"(line 77, column 7)-                         _lhsOaddLines =-                             if _lhsIuseFieldIdent || length (getName field_) < length (getName _field'    )-                             then _lhsIaddLines + 1-                             else _lhsIaddLines-                         -- "Desugar.ag"(line 81, column 7)-                         _tks =-                             AGField field_ attr_ (addl _lhsIaddLines pos_) (if _lhsIuseFieldIdent then Just _lhsIruleDescr else Nothing)-                         -- self rule-                         _lhsOtks =-                             _tks-                     in  ( _lhsOaddLines,_lhsOerrors,_lhsOtks))))-sem_HsToken_AGLocal :: Identifier ->-                       Pos ->-                       (Maybe String) ->-                       T_HsToken-sem_HsToken_AGLocal var_ pos_ rdesc_ =-    (T_HsToken (\ _lhsIaddLines-                  _lhsIchildInhs-                  _lhsIchildSyns-                  _lhsIcon-                  _lhsInt-                  _lhsIruleDescr-                  _lhsIuseFieldIdent ->-                    (let _lhsOaddLines :: Int-                         _lhsOerrors :: (Seq Error)-                         _lhsOtks :: HsToken-                         -- "Desugar.ag"(line 67, column 7)-                         _lhsOaddLines =-                             if _lhsIuseFieldIdent-                             then _lhsIaddLines + 1-                             else _lhsIaddLines-                         -- "Desugar.ag"(line 70, column 7)-                         _tks =-                             AGLocal var_ (addl _lhsIaddLines pos_) (if _lhsIuseFieldIdent then Just _lhsIruleDescr else Nothing)-                         -- use rule "Desugar.ag"(line 31, column 144)-                         _lhsOerrors =-                             Seq.empty-                         -- self rule-                         _lhsOtks =-                             _tks-                     in  ( _lhsOaddLines,_lhsOerrors,_lhsOtks))))-sem_HsToken_CharToken :: String ->-                         Pos ->-                         T_HsToken-sem_HsToken_CharToken value_ pos_ =-    (T_HsToken (\ _lhsIaddLines-                  _lhsIchildInhs-                  _lhsIchildSyns-                  _lhsIcon-                  _lhsInt-                  _lhsIruleDescr-                  _lhsIuseFieldIdent ->-                    (let _lhsOerrors :: (Seq Error)-                         _lhsOtks :: HsToken-                         _lhsOaddLines :: Int-                         -- "Desugar.ag"(line 85, column 7)-                         _tks =-                             CharToken value_ (addl _lhsIaddLines pos_)-                         -- use rule "Desugar.ag"(line 31, column 144)-                         _lhsOerrors =-                             Seq.empty-                         -- self rule-                         _lhsOtks =-                             _tks-                         -- copy rule (chain)-                         _lhsOaddLines =-                             _lhsIaddLines-                     in  ( _lhsOaddLines,_lhsOerrors,_lhsOtks))))-sem_HsToken_Err :: String ->-                   Pos ->-                   T_HsToken-sem_HsToken_Err mesg_ pos_ =-    (T_HsToken (\ _lhsIaddLines-                  _lhsIchildInhs-                  _lhsIchildSyns-                  _lhsIcon-                  _lhsInt-                  _lhsIruleDescr-                  _lhsIuseFieldIdent ->-                    (let _lhsOerrors :: (Seq Error)-                         _lhsOtks :: HsToken-                         _lhsOaddLines :: Int-                         -- "Desugar.ag"(line 89, column 7)-                         _tks =-                             Err mesg_ (addl _lhsIaddLines pos_)-                         -- use rule "Desugar.ag"(line 31, column 144)-                         _lhsOerrors =-                             Seq.empty-                         -- self rule-                         _lhsOtks =-                             _tks-                         -- copy rule (chain)-                         _lhsOaddLines =-                             _lhsIaddLines-                     in  ( _lhsOaddLines,_lhsOerrors,_lhsOtks))))-sem_HsToken_HsToken :: String ->-                       Pos ->-                       T_HsToken-sem_HsToken_HsToken value_ pos_ =-    (T_HsToken (\ _lhsIaddLines-                  _lhsIchildInhs-                  _lhsIchildSyns-                  _lhsIcon-                  _lhsInt-                  _lhsIruleDescr-                  _lhsIuseFieldIdent ->-                    (let _lhsOerrors :: (Seq Error)-                         _lhsOtks :: HsToken-                         _lhsOaddLines :: Int-                         -- "Desugar.ag"(line 83, column 7)-                         _tks =-                             HsToken value_ (addl _lhsIaddLines pos_)-                         -- use rule "Desugar.ag"(line 31, column 144)-                         _lhsOerrors =-                             Seq.empty-                         -- self rule-                         _lhsOtks =-                             _tks-                         -- copy rule (chain)-                         _lhsOaddLines =-                             _lhsIaddLines-                     in  ( _lhsOaddLines,_lhsOerrors,_lhsOtks))))-sem_HsToken_StrToken :: String ->-                        Pos ->-                        T_HsToken-sem_HsToken_StrToken value_ pos_ =-    (T_HsToken (\ _lhsIaddLines-                  _lhsIchildInhs-                  _lhsIchildSyns-                  _lhsIcon-                  _lhsInt-                  _lhsIruleDescr-                  _lhsIuseFieldIdent ->-                    (let _lhsOerrors :: (Seq Error)-                         _lhsOtks :: HsToken-                         _lhsOaddLines :: Int-                         -- "Desugar.ag"(line 87, column 7)-                         _tks =-                             StrToken value_ (addl _lhsIaddLines pos_)-                         -- use rule "Desugar.ag"(line 31, column 144)-                         _lhsOerrors =-                             Seq.empty-                         -- self rule-                         _lhsOtks =-                             _tks-                         -- copy rule (chain)-                         _lhsOaddLines =-                             _lhsIaddLines-                     in  ( _lhsOaddLines,_lhsOerrors,_lhsOtks))))--- HsTokens -----------------------------------------------------{--   visit 0:-      inherited attributes:-         childInhs            : [(Identifier, Identifier)]-         childSyns            : [(Identifier, Identifier)]-         con                  : ConstructorIdent-         nt                   : NontermIdent-         ruleDescr            : String-         useFieldIdent        : Bool-      chained attribute:-         addLines             : Int-      synthesized attributes:-         errors               : Seq Error-         tks                  : SELF-   alternatives:-      alternative Cons:-         child hd             : HsToken-         child tl             : HsTokens-         visit 0:-            local tks         : _-      alternative Nil:-         visit 0:-            local tks         : _--}--- cata-sem_HsTokens :: HsTokens ->-                T_HsTokens-sem_HsTokens list =-    (Prelude.foldr sem_HsTokens_Cons sem_HsTokens_Nil (Prelude.map sem_HsToken list))--- semantic domain-newtype T_HsTokens = T_HsTokens (Int ->-                                 ([(Identifier, Identifier)]) ->-                                 ([(Identifier, Identifier)]) ->-                                 ConstructorIdent ->-                                 NontermIdent ->-                                 String ->-                                 Bool ->-                                 ( Int,(Seq Error),HsTokens))-data Inh_HsTokens = Inh_HsTokens {addLines_Inh_HsTokens :: Int,childInhs_Inh_HsTokens :: [(Identifier, Identifier)],childSyns_Inh_HsTokens :: [(Identifier, Identifier)],con_Inh_HsTokens :: ConstructorIdent,nt_Inh_HsTokens :: NontermIdent,ruleDescr_Inh_HsTokens :: String,useFieldIdent_Inh_HsTokens :: Bool}-data Syn_HsTokens = Syn_HsTokens {addLines_Syn_HsTokens :: Int,errors_Syn_HsTokens :: Seq Error,tks_Syn_HsTokens :: HsTokens}-wrap_HsTokens (T_HsTokens sem) (Inh_HsTokens _lhsIaddLines _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent) =-    (let ( _lhsOaddLines,_lhsOerrors,_lhsOtks) =-             (sem _lhsIaddLines _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent)-     in  (Syn_HsTokens _lhsOaddLines _lhsOerrors _lhsOtks))-sem_HsTokens_Cons :: T_HsToken ->-                     T_HsTokens ->-                     T_HsTokens-sem_HsTokens_Cons (T_HsToken hd_) (T_HsTokens tl_) =-    (T_HsTokens (\ _lhsIaddLines-                   _lhsIchildInhs-                   _lhsIchildSyns-                   _lhsIcon-                   _lhsInt-                   _lhsIruleDescr-                   _lhsIuseFieldIdent ->-                     (let _lhsOerrors :: (Seq Error)-                          _lhsOtks :: HsTokens-                          _lhsOaddLines :: Int-                          _hdOaddLines :: Int-                          _hdOchildInhs :: ([(Identifier, Identifier)])-                          _hdOchildSyns :: ([(Identifier, Identifier)])-                          _hdOcon :: ConstructorIdent-                          _hdOnt :: NontermIdent-                          _hdOruleDescr :: String-                          _hdOuseFieldIdent :: Bool-                          _tlOaddLines :: Int-                          _tlOchildInhs :: ([(Identifier, Identifier)])-                          _tlOchildSyns :: ([(Identifier, Identifier)])-                          _tlOcon :: ConstructorIdent-                          _tlOnt :: NontermIdent-                          _tlOruleDescr :: String-                          _tlOuseFieldIdent :: Bool-                          _hdIaddLines :: Int-                          _hdIerrors :: (Seq Error)-                          _hdItks :: HsToken-                          _tlIaddLines :: Int-                          _tlIerrors :: (Seq Error)-                          _tlItks :: HsTokens-                          -- use rule "Desugar.ag"(line 31, column 144)-                          _lhsOerrors =-                              _hdIerrors Seq.<> _tlIerrors-                          -- self rule-                          _tks =-                              (:) _hdItks _tlItks-                          -- self rule-                          _lhsOtks =-                              _tks-                          -- copy rule (up)-                          _lhsOaddLines =-                              _tlIaddLines-                          -- copy rule (down)-                          _hdOaddLines =-                              _lhsIaddLines-                          -- copy rule (down)-                          _hdOchildInhs =-                              _lhsIchildInhs-                          -- copy rule (down)-                          _hdOchildSyns =-                              _lhsIchildSyns-                          -- copy rule (down)-                          _hdOcon =-                              _lhsIcon-                          -- copy rule (down)-                          _hdOnt =-                              _lhsInt-                          -- copy rule (down)-                          _hdOruleDescr =-                              _lhsIruleDescr-                          -- copy rule (down)-                          _hdOuseFieldIdent =-                              _lhsIuseFieldIdent-                          -- copy rule (chain)-                          _tlOaddLines =-                              _hdIaddLines-                          -- copy rule (down)-                          _tlOchildInhs =-                              _lhsIchildInhs-                          -- copy rule (down)-                          _tlOchildSyns =-                              _lhsIchildSyns-                          -- copy rule (down)-                          _tlOcon =-                              _lhsIcon-                          -- copy rule (down)-                          _tlOnt =-                              _lhsInt-                          -- copy rule (down)-                          _tlOruleDescr =-                              _lhsIruleDescr-                          -- copy rule (down)-                          _tlOuseFieldIdent =-                              _lhsIuseFieldIdent-                          ( _hdIaddLines,_hdIerrors,_hdItks) =-                              (hd_ _hdOaddLines _hdOchildInhs _hdOchildSyns _hdOcon _hdOnt _hdOruleDescr _hdOuseFieldIdent)-                          ( _tlIaddLines,_tlIerrors,_tlItks) =-                              (tl_ _tlOaddLines _tlOchildInhs _tlOchildSyns _tlOcon _tlOnt _tlOruleDescr _tlOuseFieldIdent)-                      in  ( _lhsOaddLines,_lhsOerrors,_lhsOtks))))-sem_HsTokens_Nil :: T_HsTokens-sem_HsTokens_Nil  =-    (T_HsTokens (\ _lhsIaddLines-                   _lhsIchildInhs-                   _lhsIchildSyns-                   _lhsIcon-                   _lhsInt-                   _lhsIruleDescr-                   _lhsIuseFieldIdent ->-                     (let _lhsOerrors :: (Seq Error)-                          _lhsOtks :: HsTokens-                          _lhsOaddLines :: Int-                          -- use rule "Desugar.ag"(line 31, column 144)-                          _lhsOerrors =-                              Seq.empty-                          -- self rule-                          _tks =-                              []-                          -- self rule-                          _lhsOtks =-                              _tks-                          -- copy rule (chain)-                          _lhsOaddLines =-                              _lhsIaddLines-                      in  ( _lhsOaddLines,_lhsOerrors,_lhsOtks))))--- HsTokensRoot -------------------------------------------------{--   visit 0:-      inherited attributes:-         childInhs            : [(Identifier, Identifier)]-         childSyns            : [(Identifier, Identifier)]-         con                  : ConstructorIdent-         nt                   : NontermIdent-         ruleDescr            : String-         useFieldIdent        : Bool-      synthesized attributes:-         errors               : Seq Error-         tks                  : [HsToken]-   alternatives:-      alternative HsTokensRoot:-         child tokens         : HsTokens--}--- cata-sem_HsTokensRoot :: HsTokensRoot ->-                    T_HsTokensRoot-sem_HsTokensRoot (HsTokensRoot _tokens) =-    (sem_HsTokensRoot_HsTokensRoot (sem_HsTokens _tokens))--- semantic domain-newtype T_HsTokensRoot = T_HsTokensRoot (([(Identifier, Identifier)]) ->-                                         ([(Identifier, Identifier)]) ->-                                         ConstructorIdent ->-                                         NontermIdent ->-                                         String ->-                                         Bool ->-                                         ( (Seq Error),([HsToken])))-data Inh_HsTokensRoot = Inh_HsTokensRoot {childInhs_Inh_HsTokensRoot :: [(Identifier, Identifier)],childSyns_Inh_HsTokensRoot :: [(Identifier, Identifier)],con_Inh_HsTokensRoot :: ConstructorIdent,nt_Inh_HsTokensRoot :: NontermIdent,ruleDescr_Inh_HsTokensRoot :: String,useFieldIdent_Inh_HsTokensRoot :: Bool}-data Syn_HsTokensRoot = Syn_HsTokensRoot {errors_Syn_HsTokensRoot :: Seq Error,tks_Syn_HsTokensRoot :: [HsToken]}-wrap_HsTokensRoot (T_HsTokensRoot sem) (Inh_HsTokensRoot _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent) =-    (let ( _lhsOerrors,_lhsOtks) =-             (sem _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent)-     in  (Syn_HsTokensRoot _lhsOerrors _lhsOtks))-sem_HsTokensRoot_HsTokensRoot :: T_HsTokens ->-                                 T_HsTokensRoot-sem_HsTokensRoot_HsTokensRoot (T_HsTokens tokens_) =-    (T_HsTokensRoot (\ _lhsIchildInhs-                       _lhsIchildSyns-                       _lhsIcon-                       _lhsInt-                       _lhsIruleDescr-                       _lhsIuseFieldIdent ->-                         (let _tokensOaddLines :: Int-                              _lhsOerrors :: (Seq Error)-                              _lhsOtks :: ([HsToken])-                              _tokensOchildInhs :: ([(Identifier, Identifier)])-                              _tokensOchildSyns :: ([(Identifier, Identifier)])-                              _tokensOcon :: ConstructorIdent-                              _tokensOnt :: NontermIdent-                              _tokensOruleDescr :: String-                              _tokensOuseFieldIdent :: Bool-                              _tokensIaddLines :: Int-                              _tokensIerrors :: (Seq Error)-                              _tokensItks :: HsTokens-                              -- "Desugar.ag"(line 60, column 7)-                              _tokensOaddLines =-                                  0-                              -- use rule "Desugar.ag"(line 31, column 144)-                              _lhsOerrors =-                                  _tokensIerrors-                              -- copy rule (up)-                              _lhsOtks =-                                  _tokensItks-                              -- copy rule (down)-                              _tokensOchildInhs =-                                  _lhsIchildInhs-                              -- copy rule (down)-                              _tokensOchildSyns =-                                  _lhsIchildSyns-                              -- copy rule (down)-                              _tokensOcon =-                                  _lhsIcon-                              -- copy rule (down)-                              _tokensOnt =-                                  _lhsInt-                              -- copy rule (down)-                              _tokensOruleDescr =-                                  _lhsIruleDescr-                              -- copy rule (down)-                              _tokensOuseFieldIdent =-                                  _lhsIuseFieldIdent-                              ( _tokensIaddLines,_tokensIerrors,_tokensItks) =-                                  (tokens_ _tokensOaddLines _tokensOchildInhs _tokensOchildSyns _tokensOcon _tokensOnt _tokensOruleDescr _tokensOuseFieldIdent)-                          in  ( _lhsOerrors,_lhsOtks))))--- Nonterminal --------------------------------------------------{--   visit 0:-      inherited attributes:-         forcedIrrefutables   : AttrMap-         options              : Options-      synthesized attributes:-         allAttributes        : AttrMap-         errors               : Seq Error-         output               : SELF-   alternatives:-      alternative Nonterminal:-         child nt             : {NontermIdent}-         child params         : {[Identifier]}-         child inh            : {Attributes}-         child syn            : {Attributes}-         child prods          : Productions-         visit 0:-            local output      : _--}--- cata-sem_Nonterminal :: Nonterminal ->-                   T_Nonterminal-sem_Nonterminal (Nonterminal _nt _params _inh _syn _prods) =-    (sem_Nonterminal_Nonterminal _nt _params _inh _syn (sem_Productions _prods))--- semantic domain-newtype T_Nonterminal = T_Nonterminal (AttrMap ->-                                       Options ->-                                       ( AttrMap,(Seq Error),Nonterminal))-data Inh_Nonterminal = Inh_Nonterminal {forcedIrrefutables_Inh_Nonterminal :: AttrMap,options_Inh_Nonterminal :: Options}-data Syn_Nonterminal = Syn_Nonterminal {allAttributes_Syn_Nonterminal :: AttrMap,errors_Syn_Nonterminal :: Seq Error,output_Syn_Nonterminal :: Nonterminal}-wrap_Nonterminal (T_Nonterminal sem) (Inh_Nonterminal _lhsIforcedIrrefutables _lhsIoptions) =-    (let ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput) =-             (sem _lhsIforcedIrrefutables _lhsIoptions)-     in  (Syn_Nonterminal _lhsOallAttributes _lhsOerrors _lhsOoutput))-sem_Nonterminal_Nonterminal :: NontermIdent ->-                               ([Identifier]) ->-                               Attributes ->-                               Attributes ->-                               T_Productions ->-                               T_Nonterminal-sem_Nonterminal_Nonterminal nt_ params_ inh_ syn_ (T_Productions prods_) =-    (T_Nonterminal (\ _lhsIforcedIrrefutables-                      _lhsIoptions ->-                        (let _prodsOnt :: NontermIdent-                             _lhsOallAttributes :: AttrMap-                             _lhsOerrors :: (Seq Error)-                             _lhsOoutput :: Nonterminal-                             _prodsOforcedIrrefutables :: AttrMap-                             _prodsOoptions :: Options-                             _prodsIallAttributes :: AttrMap-                             _prodsIerrors :: (Seq Error)-                             _prodsIoutput :: Productions-                             -- "Desugar.ag"(line 150, column 7)-                             _prodsOnt =-                                 nt_-                             -- use rule "Desugar.ag"(line 189, column 23)-                             _lhsOallAttributes =-                                 _prodsIallAttributes-                             -- use rule "Desugar.ag"(line 31, column 144)-                             _lhsOerrors =-                                 _prodsIerrors-                             -- self rule-                             _output =-                                 Nonterminal nt_ params_ inh_ syn_ _prodsIoutput-                             -- self rule-                             _lhsOoutput =-                                 _output-                             -- copy rule (down)-                             _prodsOforcedIrrefutables =-                                 _lhsIforcedIrrefutables-                             -- copy rule (down)-                             _prodsOoptions =-                                 _lhsIoptions-                             ( _prodsIallAttributes,_prodsIerrors,_prodsIoutput) =-                                 (prods_ _prodsOforcedIrrefutables _prodsOnt _prodsOoptions)-                         in  ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput))))--- Nonterminals -------------------------------------------------{--   visit 0:-      inherited attributes:-         forcedIrrefutables   : AttrMap-         options              : Options-      synthesized attributes:-         allAttributes        : AttrMap-         errors               : Seq Error-         output               : SELF-   alternatives:-      alternative Cons:-         child hd             : Nonterminal-         child tl             : Nonterminals-         visit 0:-            local output      : _-      alternative Nil:-         visit 0:-            local output      : _--}--- cata-sem_Nonterminals :: Nonterminals ->-                    T_Nonterminals-sem_Nonterminals list =-    (Prelude.foldr sem_Nonterminals_Cons sem_Nonterminals_Nil (Prelude.map sem_Nonterminal list))--- semantic domain-newtype T_Nonterminals = T_Nonterminals (AttrMap ->-                                         Options ->-                                         ( AttrMap,(Seq Error),Nonterminals))-data Inh_Nonterminals = Inh_Nonterminals {forcedIrrefutables_Inh_Nonterminals :: AttrMap,options_Inh_Nonterminals :: Options}-data Syn_Nonterminals = Syn_Nonterminals {allAttributes_Syn_Nonterminals :: AttrMap,errors_Syn_Nonterminals :: Seq Error,output_Syn_Nonterminals :: Nonterminals}-wrap_Nonterminals (T_Nonterminals sem) (Inh_Nonterminals _lhsIforcedIrrefutables _lhsIoptions) =-    (let ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput) =-             (sem _lhsIforcedIrrefutables _lhsIoptions)-     in  (Syn_Nonterminals _lhsOallAttributes _lhsOerrors _lhsOoutput))-sem_Nonterminals_Cons :: T_Nonterminal ->-                         T_Nonterminals ->-                         T_Nonterminals-sem_Nonterminals_Cons (T_Nonterminal hd_) (T_Nonterminals tl_) =-    (T_Nonterminals (\ _lhsIforcedIrrefutables-                       _lhsIoptions ->-                         (let _lhsOallAttributes :: AttrMap-                              _lhsOerrors :: (Seq Error)-                              _lhsOoutput :: Nonterminals-                              _hdOforcedIrrefutables :: AttrMap-                              _hdOoptions :: Options-                              _tlOforcedIrrefutables :: AttrMap-                              _tlOoptions :: Options-                              _hdIallAttributes :: AttrMap-                              _hdIerrors :: (Seq Error)-                              _hdIoutput :: Nonterminal-                              _tlIallAttributes :: AttrMap-                              _tlIerrors :: (Seq Error)-                              _tlIoutput :: Nonterminals-                              -- use rule "Desugar.ag"(line 189, column 23)-                              _lhsOallAttributes =-                                  _hdIallAttributes `mergeAttributes` _tlIallAttributes-                              -- use rule "Desugar.ag"(line 31, column 144)-                              _lhsOerrors =-                                  _hdIerrors Seq.<> _tlIerrors-                              -- self rule-                              _output =-                                  (:) _hdIoutput _tlIoutput-                              -- self rule-                              _lhsOoutput =-                                  _output-                              -- copy rule (down)-                              _hdOforcedIrrefutables =-                                  _lhsIforcedIrrefutables-                              -- copy rule (down)-                              _hdOoptions =-                                  _lhsIoptions-                              -- copy rule (down)-                              _tlOforcedIrrefutables =-                                  _lhsIforcedIrrefutables-                              -- copy rule (down)-                              _tlOoptions =-                                  _lhsIoptions-                              ( _hdIallAttributes,_hdIerrors,_hdIoutput) =-                                  (hd_ _hdOforcedIrrefutables _hdOoptions)-                              ( _tlIallAttributes,_tlIerrors,_tlIoutput) =-                                  (tl_ _tlOforcedIrrefutables _tlOoptions)-                          in  ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput))))-sem_Nonterminals_Nil :: T_Nonterminals-sem_Nonterminals_Nil  =-    (T_Nonterminals (\ _lhsIforcedIrrefutables-                       _lhsIoptions ->-                         (let _lhsOallAttributes :: AttrMap-                              _lhsOerrors :: (Seq Error)-                              _lhsOoutput :: Nonterminals-                              -- use rule "Desugar.ag"(line 189, column 23)-                              _lhsOallAttributes =-                                  Map.empty-                              -- use rule "Desugar.ag"(line 31, column 144)-                              _lhsOerrors =-                                  Seq.empty-                              -- self rule-                              _output =-                                  []-                              -- self rule-                              _lhsOoutput =-                                  _output-                          in  ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput))))--- Pattern ------------------------------------------------------{--   visit 0:-      inherited attributes:-         childInhs            : [(Identifier, Identifier)]-         childSyns            : [(Identifier, Identifier)]-         con                  : ConstructorIdent-         defs                 : Set (Identifier, Identifier)-         forcedIrrefutables   : AttrMap-         nt                   : NontermIdent-      synthesized attributes:-         allAttributes        : AttrMap-         copy                 : SELF-         defsCollect          : Set (Identifier, Identifier)-         errors               : Seq Error-         output               : SELF-   alternatives:-      alternative Alias:-         child field          : {Identifier}-         child attr           : {Identifier}-         child pat            : Pattern-         child parts          : Patterns-         visit 0:-            local _tup2       : _-            local field'      : _-            local err1        : _-            local err2        : _-            local output      : _-            local def         : _-            local copy        : _-      alternative Constr:-         child name           : {ConstructorIdent}-         child pats           : Patterns-         visit 0:-            local copy        : _-            local output      : _-      alternative Irrefutable:-         child pat            : Pattern-         visit 0:-            local copy        : _-            local output      : _-      alternative Product:-         child pos            : {Pos}-         child pats           : Patterns-         visit 0:-            local copy        : _-            local output      : _-      alternative Underscore:-         child pos            : {Pos}-         visit 0:-            local copy        : _-            local output      : _--}--- cata-sem_Pattern :: Pattern ->-               T_Pattern-sem_Pattern (Alias _field _attr _pat _parts) =-    (sem_Pattern_Alias _field _attr (sem_Pattern _pat) (sem_Patterns _parts))-sem_Pattern (Constr _name _pats) =-    (sem_Pattern_Constr _name (sem_Patterns _pats))-sem_Pattern (Irrefutable _pat) =-    (sem_Pattern_Irrefutable (sem_Pattern _pat))-sem_Pattern (Product _pos _pats) =-    (sem_Pattern_Product _pos (sem_Patterns _pats))-sem_Pattern (Underscore _pos) =-    (sem_Pattern_Underscore _pos)--- semantic domain-newtype T_Pattern = T_Pattern (([(Identifier, Identifier)]) ->-                               ([(Identifier, Identifier)]) ->-                               ConstructorIdent ->-                               (Set (Identifier, Identifier)) ->-                               AttrMap ->-                               NontermIdent ->-                               ( AttrMap,Pattern,(Set (Identifier, Identifier)),(Seq Error),Pattern))-data Inh_Pattern = Inh_Pattern {childInhs_Inh_Pattern :: [(Identifier, Identifier)],childSyns_Inh_Pattern :: [(Identifier, Identifier)],con_Inh_Pattern :: ConstructorIdent,defs_Inh_Pattern :: Set (Identifier, Identifier),forcedIrrefutables_Inh_Pattern :: AttrMap,nt_Inh_Pattern :: NontermIdent}-data Syn_Pattern = Syn_Pattern {allAttributes_Syn_Pattern :: AttrMap,copy_Syn_Pattern :: Pattern,defsCollect_Syn_Pattern :: Set (Identifier, Identifier),errors_Syn_Pattern :: Seq Error,output_Syn_Pattern :: Pattern}-wrap_Pattern (T_Pattern sem) (Inh_Pattern _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt) =-    (let ( _lhsOallAttributes,_lhsOcopy,_lhsOdefsCollect,_lhsOerrors,_lhsOoutput) =-             (sem _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt)-     in  (Syn_Pattern _lhsOallAttributes _lhsOcopy _lhsOdefsCollect _lhsOerrors _lhsOoutput))-sem_Pattern_Alias :: Identifier ->-                     Identifier ->-                     T_Pattern ->-                     T_Patterns ->-                     T_Pattern-sem_Pattern_Alias field_ attr_ (T_Pattern pat_) (T_Patterns parts_) =-    (T_Pattern (\ _lhsIchildInhs-                  _lhsIchildSyns-                  _lhsIcon-                  _lhsIdefs-                  _lhsIforcedIrrefutables-                  _lhsInt ->-                    (let _lhsOerrors :: (Seq Error)-                         _lhsOdefsCollect :: (Set (Identifier, Identifier))-                         _lhsOallAttributes :: AttrMap-                         _lhsOoutput :: Pattern-                         _lhsOcopy :: Pattern-                         _patOchildInhs :: ([(Identifier, Identifier)])-                         _patOchildSyns :: ([(Identifier, Identifier)])-                         _patOcon :: ConstructorIdent-                         _patOdefs :: (Set (Identifier, Identifier))-                         _patOforcedIrrefutables :: AttrMap-                         _patOnt :: NontermIdent-                         _partsOchildInhs :: ([(Identifier, Identifier)])-                         _partsOchildSyns :: ([(Identifier, Identifier)])-                         _partsOcon :: ConstructorIdent-                         _partsOdefs :: (Set (Identifier, Identifier))-                         _partsOforcedIrrefutables :: AttrMap-                         _partsOnt :: NontermIdent-                         _patIallAttributes :: AttrMap-                         _patIcopy :: Pattern-                         _patIdefsCollect :: (Set (Identifier, Identifier))-                         _patIerrors :: (Seq Error)-                         _patIoutput :: Pattern-                         _partsIallAttributes :: AttrMap-                         _partsIcopy :: Patterns-                         _partsIdefsCollect :: (Set (Identifier, Identifier))-                         _partsIerrors :: (Seq Error)-                         _partsIoutput :: Patterns-                         -- "Desugar.ag"(line 103, column 7)-                         __tup2 =-                             maybeError field_ (UndefAttr _lhsInt _lhsIcon (Ident "<ANY>" (getPos field_)) attr_ True) $-                               findField field_ attr_ _lhsIchildInhs-                         -- "Desugar.ag"(line 103, column 7)-                         (_field',_) =-                             __tup2-                         -- "Desugar.ag"(line 103, column 7)-                         (_,_err1) =-                             __tup2-                         -- "Desugar.ag"(line 105, column 7)-                         _err2 =-                             if _field'     == field_-                             then Seq.empty-                             else if (_field'    , attr_) `Set.member` _lhsIdefs-                                  then Seq.single $ DupRule _lhsInt _lhsIcon field_ attr_ _field'-                                  else Seq.empty-                         -- "Desugar.ag"(line 110, column 7)-                         _lhsOerrors =-                             _err1     Seq.<> _err2     Seq.<> _patIerrors <> _partsIerrors-                         -- "Desugar.ag"(line 111, column 7)-                         _output =-                             Alias _field'     attr_ _patIoutput _partsIoutput-                         -- "Desugar.ag"(line 175, column 7)-                         _def =-                             Set.singleton (field_, attr_)-                         -- "Desugar.ag"(line 176, column 7)-                         _lhsOdefsCollect =-                             _def     `Set.union` _patIdefsCollect `Set.union` _partsIdefsCollect-                         -- "Desugar.ag"(line 193, column 7)-                         _lhsOallAttributes =-                             (Map.singleton _lhsInt $ Map.singleton _lhsIcon $ Set.singleton (field_, attr_)) `mergeAttributes` _patIallAttributes-                         -- "Desugar.ag"(line 212, column 7)-                         _lhsOoutput =-                             if Set.member (field_, attr_) $ Map.findWithDefault Set.empty _lhsIcon $ Map.findWithDefault Map.empty _lhsInt $ _lhsIforcedIrrefutables-                             then Irrefutable _output-                             else _output-                         -- self rule-                         _copy =-                             Alias field_ attr_ _patIcopy _partsIcopy-                         -- self rule-                         _lhsOcopy =-                             _copy-                         -- copy rule (down)-                         _patOchildInhs =-                             _lhsIchildInhs-                         -- copy rule (down)-                         _patOchildSyns =-                             _lhsIchildSyns-                         -- copy rule (down)-                         _patOcon =-                             _lhsIcon-                         -- copy rule (down)-                         _patOdefs =-                             _lhsIdefs-                         -- copy rule (down)-                         _patOforcedIrrefutables =-                             _lhsIforcedIrrefutables-                         -- copy rule (down)-                         _patOnt =-                             _lhsInt-                         -- copy rule (down)-                         _partsOchildInhs =-                             _lhsIchildInhs-                         -- copy rule (down)-                         _partsOchildSyns =-                             _lhsIchildSyns-                         -- copy rule (down)-                         _partsOcon =-                             _lhsIcon-                         -- copy rule (down)-                         _partsOdefs =-                             _lhsIdefs-                         -- copy rule (down)-                         _partsOforcedIrrefutables =-                             _lhsIforcedIrrefutables-                         -- copy rule (down)-                         _partsOnt =-                             _lhsInt-                         ( _patIallAttributes,_patIcopy,_patIdefsCollect,_patIerrors,_patIoutput) =-                             (pat_ _patOchildInhs _patOchildSyns _patOcon _patOdefs _patOforcedIrrefutables _patOnt)-                         ( _partsIallAttributes,_partsIcopy,_partsIdefsCollect,_partsIerrors,_partsIoutput) =-                             (parts_ _partsOchildInhs _partsOchildSyns _partsOcon _partsOdefs _partsOforcedIrrefutables _partsOnt)-                     in  ( _lhsOallAttributes,_lhsOcopy,_lhsOdefsCollect,_lhsOerrors,_lhsOoutput))))-sem_Pattern_Constr :: ConstructorIdent ->-                      T_Patterns ->-                      T_Pattern-sem_Pattern_Constr name_ (T_Patterns pats_) =-    (T_Pattern (\ _lhsIchildInhs-                  _lhsIchildSyns-                  _lhsIcon-                  _lhsIdefs-                  _lhsIforcedIrrefutables-                  _lhsInt ->-                    (let _lhsOallAttributes :: AttrMap-                         _lhsOdefsCollect :: (Set (Identifier, Identifier))-                         _lhsOerrors :: (Seq Error)-                         _lhsOcopy :: Pattern-                         _lhsOoutput :: Pattern-                         _patsOchildInhs :: ([(Identifier, Identifier)])-                         _patsOchildSyns :: ([(Identifier, Identifier)])-                         _patsOcon :: ConstructorIdent-                         _patsOdefs :: (Set (Identifier, Identifier))-                         _patsOforcedIrrefutables :: AttrMap-                         _patsOnt :: NontermIdent-                         _patsIallAttributes :: AttrMap-                         _patsIcopy :: Patterns-                         _patsIdefsCollect :: (Set (Identifier, Identifier))-                         _patsIerrors :: (Seq Error)-                         _patsIoutput :: Patterns-                         -- use rule "Desugar.ag"(line 189, column 23)-                         _lhsOallAttributes =-                             _patsIallAttributes-                         -- use rule "Desugar.ag"(line 172, column 52)-                         _lhsOdefsCollect =-                             _patsIdefsCollect-                         -- use rule "Desugar.ag"(line 31, column 144)-                         _lhsOerrors =-                             _patsIerrors-                         -- self rule-                         _copy =-                             Constr name_ _patsIcopy-                         -- self rule-                         _output =-                             Constr name_ _patsIoutput-                         -- self rule-                         _lhsOcopy =-                             _copy-                         -- self rule-                         _lhsOoutput =-                             _output-                         -- copy rule (down)-                         _patsOchildInhs =-                             _lhsIchildInhs-                         -- copy rule (down)-                         _patsOchildSyns =-                             _lhsIchildSyns-                         -- copy rule (down)-                         _patsOcon =-                             _lhsIcon-                         -- copy rule (down)-                         _patsOdefs =-                             _lhsIdefs-                         -- copy rule (down)-                         _patsOforcedIrrefutables =-                             _lhsIforcedIrrefutables-                         -- copy rule (down)-                         _patsOnt =-                             _lhsInt-                         ( _patsIallAttributes,_patsIcopy,_patsIdefsCollect,_patsIerrors,_patsIoutput) =-                             (pats_ _patsOchildInhs _patsOchildSyns _patsOcon _patsOdefs _patsOforcedIrrefutables _patsOnt)-                     in  ( _lhsOallAttributes,_lhsOcopy,_lhsOdefsCollect,_lhsOerrors,_lhsOoutput))))-sem_Pattern_Irrefutable :: T_Pattern ->-                           T_Pattern-sem_Pattern_Irrefutable (T_Pattern pat_) =-    (T_Pattern (\ _lhsIchildInhs-                  _lhsIchildSyns-                  _lhsIcon-                  _lhsIdefs-                  _lhsIforcedIrrefutables-                  _lhsInt ->-                    (let _lhsOallAttributes :: AttrMap-                         _lhsOdefsCollect :: (Set (Identifier, Identifier))-                         _lhsOerrors :: (Seq Error)-                         _lhsOcopy :: Pattern-                         _lhsOoutput :: Pattern-                         _patOchildInhs :: ([(Identifier, Identifier)])-                         _patOchildSyns :: ([(Identifier, Identifier)])-                         _patOcon :: ConstructorIdent-                         _patOdefs :: (Set (Identifier, Identifier))-                         _patOforcedIrrefutables :: AttrMap-                         _patOnt :: NontermIdent-                         _patIallAttributes :: AttrMap-                         _patIcopy :: Pattern-                         _patIdefsCollect :: (Set (Identifier, Identifier))-                         _patIerrors :: (Seq Error)-                         _patIoutput :: Pattern-                         -- "Desugar.ag"(line 195, column 7)-                         _lhsOallAttributes =-                             Map.empty-                         -- use rule "Desugar.ag"(line 172, column 52)-                         _lhsOdefsCollect =-                             _patIdefsCollect-                         -- use rule "Desugar.ag"(line 31, column 144)-                         _lhsOerrors =-                             _patIerrors-                         -- self rule-                         _copy =-                             Irrefutable _patIcopy-                         -- self rule-                         _output =-                             Irrefutable _patIoutput-                         -- self rule-                         _lhsOcopy =-                             _copy-                         -- self rule-                         _lhsOoutput =-                             _output-                         -- copy rule (down)-                         _patOchildInhs =-                             _lhsIchildInhs-                         -- copy rule (down)-                         _patOchildSyns =-                             _lhsIchildSyns-                         -- copy rule (down)-                         _patOcon =-                             _lhsIcon-                         -- copy rule (down)-                         _patOdefs =-                             _lhsIdefs-                         -- copy rule (down)-                         _patOforcedIrrefutables =-                             _lhsIforcedIrrefutables-                         -- copy rule (down)-                         _patOnt =-                             _lhsInt-                         ( _patIallAttributes,_patIcopy,_patIdefsCollect,_patIerrors,_patIoutput) =-                             (pat_ _patOchildInhs _patOchildSyns _patOcon _patOdefs _patOforcedIrrefutables _patOnt)-                     in  ( _lhsOallAttributes,_lhsOcopy,_lhsOdefsCollect,_lhsOerrors,_lhsOoutput))))-sem_Pattern_Product :: Pos ->-                       T_Patterns ->-                       T_Pattern-sem_Pattern_Product pos_ (T_Patterns pats_) =-    (T_Pattern (\ _lhsIchildInhs-                  _lhsIchildSyns-                  _lhsIcon-                  _lhsIdefs-                  _lhsIforcedIrrefutables-                  _lhsInt ->-                    (let _lhsOallAttributes :: AttrMap-                         _lhsOdefsCollect :: (Set (Identifier, Identifier))-                         _lhsOerrors :: (Seq Error)-                         _lhsOcopy :: Pattern-                         _lhsOoutput :: Pattern-                         _patsOchildInhs :: ([(Identifier, Identifier)])-                         _patsOchildSyns :: ([(Identifier, Identifier)])-                         _patsOcon :: ConstructorIdent-                         _patsOdefs :: (Set (Identifier, Identifier))-                         _patsOforcedIrrefutables :: AttrMap-                         _patsOnt :: NontermIdent-                         _patsIallAttributes :: AttrMap-                         _patsIcopy :: Patterns-                         _patsIdefsCollect :: (Set (Identifier, Identifier))-                         _patsIerrors :: (Seq Error)-                         _patsIoutput :: Patterns-                         -- use rule "Desugar.ag"(line 189, column 23)-                         _lhsOallAttributes =-                             _patsIallAttributes-                         -- use rule "Desugar.ag"(line 172, column 52)-                         _lhsOdefsCollect =-                             _patsIdefsCollect-                         -- use rule "Desugar.ag"(line 31, column 144)-                         _lhsOerrors =-                             _patsIerrors-                         -- self rule-                         _copy =-                             Product pos_ _patsIcopy-                         -- self rule-                         _output =-                             Product pos_ _patsIoutput-                         -- self rule-                         _lhsOcopy =-                             _copy-                         -- self rule-                         _lhsOoutput =-                             _output-                         -- copy rule (down)-                         _patsOchildInhs =-                             _lhsIchildInhs-                         -- copy rule (down)-                         _patsOchildSyns =-                             _lhsIchildSyns-                         -- copy rule (down)-                         _patsOcon =-                             _lhsIcon-                         -- copy rule (down)-                         _patsOdefs =-                             _lhsIdefs-                         -- copy rule (down)-                         _patsOforcedIrrefutables =-                             _lhsIforcedIrrefutables-                         -- copy rule (down)-                         _patsOnt =-                             _lhsInt-                         ( _patsIallAttributes,_patsIcopy,_patsIdefsCollect,_patsIerrors,_patsIoutput) =-                             (pats_ _patsOchildInhs _patsOchildSyns _patsOcon _patsOdefs _patsOforcedIrrefutables _patsOnt)-                     in  ( _lhsOallAttributes,_lhsOcopy,_lhsOdefsCollect,_lhsOerrors,_lhsOoutput))))-sem_Pattern_Underscore :: Pos ->-                          T_Pattern-sem_Pattern_Underscore pos_ =-    (T_Pattern (\ _lhsIchildInhs-                  _lhsIchildSyns-                  _lhsIcon-                  _lhsIdefs-                  _lhsIforcedIrrefutables-                  _lhsInt ->-                    (let _lhsOallAttributes :: AttrMap-                         _lhsOdefsCollect :: (Set (Identifier, Identifier))-                         _lhsOerrors :: (Seq Error)-                         _lhsOcopy :: Pattern-                         _lhsOoutput :: Pattern-                         -- use rule "Desugar.ag"(line 189, column 23)-                         _lhsOallAttributes =-                             Map.empty-                         -- use rule "Desugar.ag"(line 172, column 52)-                         _lhsOdefsCollect =-                             Set.empty-                         -- use rule "Desugar.ag"(line 31, column 144)-                         _lhsOerrors =-                             Seq.empty-                         -- self rule-                         _copy =-                             Underscore pos_-                         -- self rule-                         _output =-                             Underscore pos_-                         -- self rule-                         _lhsOcopy =-                             _copy-                         -- self rule-                         _lhsOoutput =-                             _output-                     in  ( _lhsOallAttributes,_lhsOcopy,_lhsOdefsCollect,_lhsOerrors,_lhsOoutput))))--- Patterns -----------------------------------------------------{--   visit 0:-      inherited attributes:-         childInhs            : [(Identifier, Identifier)]-         childSyns            : [(Identifier, Identifier)]-         con                  : ConstructorIdent-         defs                 : Set (Identifier, Identifier)-         forcedIrrefutables   : AttrMap-         nt                   : NontermIdent-      synthesized attributes:-         allAttributes        : AttrMap-         copy                 : SELF-         defsCollect          : Set (Identifier, Identifier)-         errors               : Seq Error-         output               : SELF-   alternatives:-      alternative Cons:-         child hd             : Pattern-         child tl             : Patterns-         visit 0:-            local copy        : _-            local output      : _-      alternative Nil:-         visit 0:-            local copy        : _-            local output      : _--}--- cata-sem_Patterns :: Patterns ->-                T_Patterns-sem_Patterns list =-    (Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list))--- semantic domain-newtype T_Patterns = T_Patterns (([(Identifier, Identifier)]) ->-                                 ([(Identifier, Identifier)]) ->-                                 ConstructorIdent ->-                                 (Set (Identifier, Identifier)) ->-                                 AttrMap ->-                                 NontermIdent ->-                                 ( AttrMap,Patterns,(Set (Identifier, Identifier)),(Seq Error),Patterns))-data Inh_Patterns = Inh_Patterns {childInhs_Inh_Patterns :: [(Identifier, Identifier)],childSyns_Inh_Patterns :: [(Identifier, Identifier)],con_Inh_Patterns :: ConstructorIdent,defs_Inh_Patterns :: Set (Identifier, Identifier),forcedIrrefutables_Inh_Patterns :: AttrMap,nt_Inh_Patterns :: NontermIdent}-data Syn_Patterns = Syn_Patterns {allAttributes_Syn_Patterns :: AttrMap,copy_Syn_Patterns :: Patterns,defsCollect_Syn_Patterns :: Set (Identifier, Identifier),errors_Syn_Patterns :: Seq Error,output_Syn_Patterns :: Patterns}-wrap_Patterns (T_Patterns sem) (Inh_Patterns _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt) =-    (let ( _lhsOallAttributes,_lhsOcopy,_lhsOdefsCollect,_lhsOerrors,_lhsOoutput) =-             (sem _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt)-     in  (Syn_Patterns _lhsOallAttributes _lhsOcopy _lhsOdefsCollect _lhsOerrors _lhsOoutput))-sem_Patterns_Cons :: T_Pattern ->-                     T_Patterns ->-                     T_Patterns-sem_Patterns_Cons (T_Pattern hd_) (T_Patterns tl_) =-    (T_Patterns (\ _lhsIchildInhs-                   _lhsIchildSyns-                   _lhsIcon-                   _lhsIdefs-                   _lhsIforcedIrrefutables-                   _lhsInt ->-                     (let _lhsOallAttributes :: AttrMap-                          _lhsOdefsCollect :: (Set (Identifier, Identifier))-                          _lhsOerrors :: (Seq Error)-                          _lhsOcopy :: Patterns-                          _lhsOoutput :: Patterns-                          _hdOchildInhs :: ([(Identifier, Identifier)])-                          _hdOchildSyns :: ([(Identifier, Identifier)])-                          _hdOcon :: ConstructorIdent-                          _hdOdefs :: (Set (Identifier, Identifier))-                          _hdOforcedIrrefutables :: AttrMap-                          _hdOnt :: NontermIdent-                          _tlOchildInhs :: ([(Identifier, Identifier)])-                          _tlOchildSyns :: ([(Identifier, Identifier)])-                          _tlOcon :: ConstructorIdent-                          _tlOdefs :: (Set (Identifier, Identifier))-                          _tlOforcedIrrefutables :: AttrMap-                          _tlOnt :: NontermIdent-                          _hdIallAttributes :: AttrMap-                          _hdIcopy :: Pattern-                          _hdIdefsCollect :: (Set (Identifier, Identifier))-                          _hdIerrors :: (Seq Error)-                          _hdIoutput :: Pattern-                          _tlIallAttributes :: AttrMap-                          _tlIcopy :: Patterns-                          _tlIdefsCollect :: (Set (Identifier, Identifier))-                          _tlIerrors :: (Seq Error)-                          _tlIoutput :: Patterns-                          -- use rule "Desugar.ag"(line 189, column 23)-                          _lhsOallAttributes =-                              _hdIallAttributes `mergeAttributes` _tlIallAttributes-                          -- use rule "Desugar.ag"(line 172, column 52)-                          _lhsOdefsCollect =-                              _hdIdefsCollect `Set.union` _tlIdefsCollect-                          -- use rule "Desugar.ag"(line 31, column 144)-                          _lhsOerrors =-                              _hdIerrors Seq.<> _tlIerrors-                          -- self rule-                          _copy =-                              (:) _hdIcopy _tlIcopy-                          -- self rule-                          _output =-                              (:) _hdIoutput _tlIoutput-                          -- self rule-                          _lhsOcopy =-                              _copy-                          -- self rule-                          _lhsOoutput =-                              _output-                          -- copy rule (down)-                          _hdOchildInhs =-                              _lhsIchildInhs-                          -- copy rule (down)-                          _hdOchildSyns =-                              _lhsIchildSyns-                          -- copy rule (down)-                          _hdOcon =-                              _lhsIcon-                          -- copy rule (down)-                          _hdOdefs =-                              _lhsIdefs-                          -- copy rule (down)-                          _hdOforcedIrrefutables =-                              _lhsIforcedIrrefutables-                          -- copy rule (down)-                          _hdOnt =-                              _lhsInt-                          -- copy rule (down)-                          _tlOchildInhs =-                              _lhsIchildInhs-                          -- copy rule (down)-                          _tlOchildSyns =-                              _lhsIchildSyns-                          -- copy rule (down)-                          _tlOcon =-                              _lhsIcon-                          -- copy rule (down)-                          _tlOdefs =-                              _lhsIdefs-                          -- copy rule (down)-                          _tlOforcedIrrefutables =-                              _lhsIforcedIrrefutables-                          -- copy rule (down)-                          _tlOnt =-                              _lhsInt-                          ( _hdIallAttributes,_hdIcopy,_hdIdefsCollect,_hdIerrors,_hdIoutput) =-                              (hd_ _hdOchildInhs _hdOchildSyns _hdOcon _hdOdefs _hdOforcedIrrefutables _hdOnt)-                          ( _tlIallAttributes,_tlIcopy,_tlIdefsCollect,_tlIerrors,_tlIoutput) =-                              (tl_ _tlOchildInhs _tlOchildSyns _tlOcon _tlOdefs _tlOforcedIrrefutables _tlOnt)-                      in  ( _lhsOallAttributes,_lhsOcopy,_lhsOdefsCollect,_lhsOerrors,_lhsOoutput))))-sem_Patterns_Nil :: T_Patterns-sem_Patterns_Nil  =-    (T_Patterns (\ _lhsIchildInhs-                   _lhsIchildSyns-                   _lhsIcon-                   _lhsIdefs-                   _lhsIforcedIrrefutables-                   _lhsInt ->-                     (let _lhsOallAttributes :: AttrMap-                          _lhsOdefsCollect :: (Set (Identifier, Identifier))-                          _lhsOerrors :: (Seq Error)-                          _lhsOcopy :: Patterns-                          _lhsOoutput :: Patterns-                          -- use rule "Desugar.ag"(line 189, column 23)-                          _lhsOallAttributes =-                              Map.empty-                          -- use rule "Desugar.ag"(line 172, column 52)-                          _lhsOdefsCollect =-                              Set.empty-                          -- use rule "Desugar.ag"(line 31, column 144)-                          _lhsOerrors =-                              Seq.empty-                          -- self rule-                          _copy =-                              []-                          -- self rule-                          _output =-                              []-                          -- self rule-                          _lhsOcopy =-                              _copy-                          -- self rule-                          _lhsOoutput =-                              _output-                      in  ( _lhsOallAttributes,_lhsOcopy,_lhsOdefsCollect,_lhsOerrors,_lhsOoutput))))--- Production ---------------------------------------------------{--   visit 0:-      inherited attributes:-         forcedIrrefutables   : AttrMap-         nt                   : NontermIdent-         options              : Options-      synthesized attributes:-         allAttributes        : AttrMap-         errors               : Seq Error-         output               : SELF-   alternatives:-      alternative Production:-         child con            : {ConstructorIdent}-         child children       : Children-         child rules          : Rules-         child typeSigs       : TypeSigs-         visit 0:-            local output      : _--}--- cata-sem_Production :: Production ->-                  T_Production-sem_Production (Production _con _children _rules _typeSigs) =-    (sem_Production_Production _con (sem_Children _children) (sem_Rules _rules) (sem_TypeSigs _typeSigs))--- semantic domain-newtype T_Production = T_Production (AttrMap ->-                                     NontermIdent ->-                                     Options ->-                                     ( AttrMap,(Seq Error),Production))-data Inh_Production = Inh_Production {forcedIrrefutables_Inh_Production :: AttrMap,nt_Inh_Production :: NontermIdent,options_Inh_Production :: Options}-data Syn_Production = Syn_Production {allAttributes_Syn_Production :: AttrMap,errors_Syn_Production :: Seq Error,output_Syn_Production :: Production}-wrap_Production (T_Production sem) (Inh_Production _lhsIforcedIrrefutables _lhsInt _lhsIoptions) =-    (let ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput) =-             (sem _lhsIforcedIrrefutables _lhsInt _lhsIoptions)-     in  (Syn_Production _lhsOallAttributes _lhsOerrors _lhsOoutput))-sem_Production_Production :: ConstructorIdent ->-                             T_Children ->-                             T_Rules ->-                             T_TypeSigs ->-                             T_Production-sem_Production_Production con_ (T_Children children_) (T_Rules rules_) (T_TypeSigs typeSigs_) =-    (T_Production (\ _lhsIforcedIrrefutables-                     _lhsInt-                     _lhsIoptions ->-                       (let _rulesOcon :: ConstructorIdent-                            _rulesOdefs :: (Set (Identifier, Identifier))-                            _lhsOallAttributes :: AttrMap-                            _lhsOerrors :: (Seq Error)-                            _lhsOoutput :: Production-                            _rulesOchildInhs :: ([(Identifier, Identifier)])-                            _rulesOchildSyns :: ([(Identifier, Identifier)])-                            _rulesOforcedIrrefutables :: AttrMap-                            _rulesOnt :: NontermIdent-                            _rulesOoptions :: Options-                            _childrenIchildInhs :: ([(Identifier, Identifier)])-                            _childrenIchildSyns :: ([(Identifier, Identifier)])-                            _childrenIoutput :: Children-                            _rulesIallAttributes :: AttrMap-                            _rulesIdefsCollect :: (Set (Identifier, Identifier))-                            _rulesIerrors :: (Seq Error)-                            _rulesIoutput :: Rules-                            _typeSigsIoutput :: TypeSigs-                            -- "Desugar.ag"(line 154, column 7)-                            _rulesOcon =-                                con_-                            -- "Desugar.ag"(line 181, column 7)-                            _rulesOdefs =-                                _rulesIdefsCollect-                            -- use rule "Desugar.ag"(line 189, column 23)-                            _lhsOallAttributes =-                                _rulesIallAttributes-                            -- use rule "Desugar.ag"(line 31, column 144)-                            _lhsOerrors =-                                _rulesIerrors-                            -- self rule-                            _output =-                                Production con_ _childrenIoutput _rulesIoutput _typeSigsIoutput-                            -- self rule-                            _lhsOoutput =-                                _output-                            -- copy rule (chain)-                            _rulesOchildInhs =-                                _childrenIchildInhs-                            -- copy rule (chain)-                            _rulesOchildSyns =-                                _childrenIchildSyns-                            -- copy rule (down)-                            _rulesOforcedIrrefutables =-                                _lhsIforcedIrrefutables-                            -- copy rule (down)-                            _rulesOnt =-                                _lhsInt-                            -- copy rule (down)-                            _rulesOoptions =-                                _lhsIoptions-                            ( _childrenIchildInhs,_childrenIchildSyns,_childrenIoutput) =-                                (children_ )-                            ( _rulesIallAttributes,_rulesIdefsCollect,_rulesIerrors,_rulesIoutput) =-                                (rules_ _rulesOchildInhs _rulesOchildSyns _rulesOcon _rulesOdefs _rulesOforcedIrrefutables _rulesOnt _rulesOoptions)-                            ( _typeSigsIoutput) =-                                (typeSigs_ )-                        in  ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput))))--- Productions --------------------------------------------------{--   visit 0:-      inherited attributes:-         forcedIrrefutables   : AttrMap-         nt                   : NontermIdent-         options              : Options-      synthesized attributes:-         allAttributes        : AttrMap-         errors               : Seq Error-         output               : SELF-   alternatives:-      alternative Cons:-         child hd             : Production-         child tl             : Productions-         visit 0:-            local output      : _-      alternative Nil:-         visit 0:-            local output      : _--}--- cata-sem_Productions :: Productions ->-                   T_Productions-sem_Productions list =-    (Prelude.foldr sem_Productions_Cons sem_Productions_Nil (Prelude.map sem_Production list))--- semantic domain-newtype T_Productions = T_Productions (AttrMap ->-                                       NontermIdent ->-                                       Options ->-                                       ( AttrMap,(Seq Error),Productions))-data Inh_Productions = Inh_Productions {forcedIrrefutables_Inh_Productions :: AttrMap,nt_Inh_Productions :: NontermIdent,options_Inh_Productions :: Options}-data Syn_Productions = Syn_Productions {allAttributes_Syn_Productions :: AttrMap,errors_Syn_Productions :: Seq Error,output_Syn_Productions :: Productions}-wrap_Productions (T_Productions sem) (Inh_Productions _lhsIforcedIrrefutables _lhsInt _lhsIoptions) =-    (let ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput) =-             (sem _lhsIforcedIrrefutables _lhsInt _lhsIoptions)-     in  (Syn_Productions _lhsOallAttributes _lhsOerrors _lhsOoutput))-sem_Productions_Cons :: T_Production ->-                        T_Productions ->-                        T_Productions-sem_Productions_Cons (T_Production hd_) (T_Productions tl_) =-    (T_Productions (\ _lhsIforcedIrrefutables-                      _lhsInt-                      _lhsIoptions ->-                        (let _lhsOallAttributes :: AttrMap-                             _lhsOerrors :: (Seq Error)-                             _lhsOoutput :: Productions-                             _hdOforcedIrrefutables :: AttrMap-                             _hdOnt :: NontermIdent-                             _hdOoptions :: Options-                             _tlOforcedIrrefutables :: AttrMap-                             _tlOnt :: NontermIdent-                             _tlOoptions :: Options-                             _hdIallAttributes :: AttrMap-                             _hdIerrors :: (Seq Error)-                             _hdIoutput :: Production-                             _tlIallAttributes :: AttrMap-                             _tlIerrors :: (Seq Error)-                             _tlIoutput :: Productions-                             -- use rule "Desugar.ag"(line 189, column 23)-                             _lhsOallAttributes =-                                 _hdIallAttributes `mergeAttributes` _tlIallAttributes-                             -- use rule "Desugar.ag"(line 31, column 144)-                             _lhsOerrors =-                                 _hdIerrors Seq.<> _tlIerrors-                             -- self rule-                             _output =-                                 (:) _hdIoutput _tlIoutput-                             -- self rule-                             _lhsOoutput =-                                 _output-                             -- copy rule (down)-                             _hdOforcedIrrefutables =-                                 _lhsIforcedIrrefutables-                             -- copy rule (down)-                             _hdOnt =-                                 _lhsInt-                             -- copy rule (down)-                             _hdOoptions =-                                 _lhsIoptions-                             -- copy rule (down)-                             _tlOforcedIrrefutables =-                                 _lhsIforcedIrrefutables-                             -- copy rule (down)-                             _tlOnt =-                                 _lhsInt-                             -- copy rule (down)-                             _tlOoptions =-                                 _lhsIoptions-                             ( _hdIallAttributes,_hdIerrors,_hdIoutput) =-                                 (hd_ _hdOforcedIrrefutables _hdOnt _hdOoptions)-                             ( _tlIallAttributes,_tlIerrors,_tlIoutput) =-                                 (tl_ _tlOforcedIrrefutables _tlOnt _tlOoptions)-                         in  ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput))))-sem_Productions_Nil :: T_Productions-sem_Productions_Nil  =-    (T_Productions (\ _lhsIforcedIrrefutables-                      _lhsInt-                      _lhsIoptions ->-                        (let _lhsOallAttributes :: AttrMap-                             _lhsOerrors :: (Seq Error)-                             _lhsOoutput :: Productions-                             -- use rule "Desugar.ag"(line 189, column 23)-                             _lhsOallAttributes =-                                 Map.empty-                             -- use rule "Desugar.ag"(line 31, column 144)-                             _lhsOerrors =-                                 Seq.empty-                             -- self rule-                             _output =-                                 []-                             -- self rule-                             _lhsOoutput =-                                 _output-                         in  ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput))))--- Rule ---------------------------------------------------------{--   visit 0:-      inherited attributes:-         childInhs            : [(Identifier, Identifier)]-         childSyns            : [(Identifier, Identifier)]-         con                  : ConstructorIdent-         defs                 : Set (Identifier, Identifier)-         forcedIrrefutables   : AttrMap-         nt                   : NontermIdent-         options              : Options-      synthesized attributes:-         allAttributes        : AttrMap-         defsCollect          : Set (Identifier, Identifier)-         errors               : Seq Error-         output               : SELF-   alternatives:-      alternative Rule:-         child pattern        : Pattern-         child rhs            : Expression-         child owrt           : {Bool}-         child origin         : {String}-         visit 0:-            local ruleDescr   : _-            local output      : _--}--- cata-sem_Rule :: Rule ->-            T_Rule-sem_Rule (Rule _pattern _rhs _owrt _origin) =-    (sem_Rule_Rule (sem_Pattern _pattern) (sem_Expression _rhs) _owrt _origin)--- semantic domain-newtype T_Rule = T_Rule (([(Identifier, Identifier)]) ->-                         ([(Identifier, Identifier)]) ->-                         ConstructorIdent ->-                         (Set (Identifier, Identifier)) ->-                         AttrMap ->-                         NontermIdent ->-                         Options ->-                         ( AttrMap,(Set (Identifier, Identifier)),(Seq Error),Rule))-data Inh_Rule = Inh_Rule {childInhs_Inh_Rule :: [(Identifier, Identifier)],childSyns_Inh_Rule :: [(Identifier, Identifier)],con_Inh_Rule :: ConstructorIdent,defs_Inh_Rule :: Set (Identifier, Identifier),forcedIrrefutables_Inh_Rule :: AttrMap,nt_Inh_Rule :: NontermIdent,options_Inh_Rule :: Options}-data Syn_Rule = Syn_Rule {allAttributes_Syn_Rule :: AttrMap,defsCollect_Syn_Rule :: Set (Identifier, Identifier),errors_Syn_Rule :: Seq Error,output_Syn_Rule :: Rule}-wrap_Rule (T_Rule sem) (Inh_Rule _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt _lhsIoptions) =-    (let ( _lhsOallAttributes,_lhsOdefsCollect,_lhsOerrors,_lhsOoutput) =-             (sem _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt _lhsIoptions)-     in  (Syn_Rule _lhsOallAttributes _lhsOdefsCollect _lhsOerrors _lhsOoutput))-sem_Rule_Rule :: T_Pattern ->-                 T_Expression ->-                 Bool ->-                 String ->-                 T_Rule-sem_Rule_Rule (T_Pattern pattern_) (T_Expression rhs_) owrt_ origin_ =-    (T_Rule (\ _lhsIchildInhs-               _lhsIchildSyns-               _lhsIcon-               _lhsIdefs-               _lhsIforcedIrrefutables-               _lhsInt-               _lhsIoptions ->-                 (let _lhsOallAttributes :: AttrMap-                      _lhsOdefsCollect :: (Set (Identifier, Identifier))-                      _lhsOerrors :: (Seq Error)-                      _lhsOoutput :: Rule-                      _patternOchildInhs :: ([(Identifier, Identifier)])-                      _patternOchildSyns :: ([(Identifier, Identifier)])-                      _patternOcon :: ConstructorIdent-                      _patternOdefs :: (Set (Identifier, Identifier))-                      _patternOforcedIrrefutables :: AttrMap-                      _patternOnt :: NontermIdent-                      _rhsOchildInhs :: ([(Identifier, Identifier)])-                      _rhsOchildSyns :: ([(Identifier, Identifier)])-                      _rhsOcon :: ConstructorIdent-                      _rhsOnt :: NontermIdent-                      _rhsOoptions :: Options-                      _rhsOruleDescr :: String-                      _patternIallAttributes :: AttrMap-                      _patternIcopy :: Pattern-                      _patternIdefsCollect :: (Set (Identifier, Identifier))-                      _patternIerrors :: (Seq Error)-                      _patternIoutput :: Pattern-                      _rhsIerrors :: (Seq Error)-                      _rhsIoutput :: Expression-                      -- "Desugar.ag"(line 165, column 7)-                      _ruleDescr =-                          show _lhsInt ++ " :: " ++ show _lhsIcon ++ " :: " ++ (concat $ intersperse "," $ map (\(f,a) -> show f ++ "." ++ show a) $ Set.toList _patternIdefsCollect)-                      -- use rule "Desugar.ag"(line 189, column 23)-                      _lhsOallAttributes =-                          _patternIallAttributes-                      -- use rule "Desugar.ag"(line 172, column 52)-                      _lhsOdefsCollect =-                          _patternIdefsCollect-                      -- use rule "Desugar.ag"(line 31, column 144)-                      _lhsOerrors =-                          _patternIerrors Seq.<> _rhsIerrors-                      -- self rule-                      _output =-                          Rule _patternIoutput _rhsIoutput owrt_ origin_-                      -- self rule-                      _lhsOoutput =-                          _output-                      -- copy rule (down)-                      _patternOchildInhs =-                          _lhsIchildInhs-                      -- copy rule (down)-                      _patternOchildSyns =-                          _lhsIchildSyns-                      -- copy rule (down)-                      _patternOcon =-                          _lhsIcon-                      -- copy rule (down)-                      _patternOdefs =-                          _lhsIdefs-                      -- copy rule (down)-                      _patternOforcedIrrefutables =-                          _lhsIforcedIrrefutables-                      -- copy rule (down)-                      _patternOnt =-                          _lhsInt-                      -- copy rule (down)-                      _rhsOchildInhs =-                          _lhsIchildInhs-                      -- copy rule (down)-                      _rhsOchildSyns =-                          _lhsIchildSyns-                      -- copy rule (down)-                      _rhsOcon =-                          _lhsIcon-                      -- copy rule (down)-                      _rhsOnt =-                          _lhsInt-                      -- copy rule (down)-                      _rhsOoptions =-                          _lhsIoptions-                      -- copy rule (from local)-                      _rhsOruleDescr =-                          _ruleDescr-                      ( _patternIallAttributes,_patternIcopy,_patternIdefsCollect,_patternIerrors,_patternIoutput) =-                          (pattern_ _patternOchildInhs _patternOchildSyns _patternOcon _patternOdefs _patternOforcedIrrefutables _patternOnt)-                      ( _rhsIerrors,_rhsIoutput) =-                          (rhs_ _rhsOchildInhs _rhsOchildSyns _rhsOcon _rhsOnt _rhsOoptions _rhsOruleDescr)-                  in  ( _lhsOallAttributes,_lhsOdefsCollect,_lhsOerrors,_lhsOoutput))))--- Rules --------------------------------------------------------{--   visit 0:-      inherited attributes:-         childInhs            : [(Identifier, Identifier)]-         childSyns            : [(Identifier, Identifier)]-         con                  : ConstructorIdent-         defs                 : Set (Identifier, Identifier)-         forcedIrrefutables   : AttrMap-         nt                   : NontermIdent-         options              : Options-      synthesized attributes:-         allAttributes        : AttrMap-         defsCollect          : Set (Identifier, Identifier)-         errors               : Seq Error-         output               : SELF-   alternatives:-      alternative Cons:-         child hd             : Rule-         child tl             : Rules-         visit 0:-            local output      : _-      alternative Nil:-         visit 0:-            local output      : _--}--- cata-sem_Rules :: Rules ->-             T_Rules-sem_Rules list =-    (Prelude.foldr sem_Rules_Cons sem_Rules_Nil (Prelude.map sem_Rule list))--- semantic domain-newtype T_Rules = T_Rules (([(Identifier, Identifier)]) ->-                           ([(Identifier, Identifier)]) ->-                           ConstructorIdent ->-                           (Set (Identifier, Identifier)) ->-                           AttrMap ->-                           NontermIdent ->-                           Options ->-                           ( AttrMap,(Set (Identifier, Identifier)),(Seq Error),Rules))-data Inh_Rules = Inh_Rules {childInhs_Inh_Rules :: [(Identifier, Identifier)],childSyns_Inh_Rules :: [(Identifier, Identifier)],con_Inh_Rules :: ConstructorIdent,defs_Inh_Rules :: Set (Identifier, Identifier),forcedIrrefutables_Inh_Rules :: AttrMap,nt_Inh_Rules :: NontermIdent,options_Inh_Rules :: Options}-data Syn_Rules = Syn_Rules {allAttributes_Syn_Rules :: AttrMap,defsCollect_Syn_Rules :: Set (Identifier, Identifier),errors_Syn_Rules :: Seq Error,output_Syn_Rules :: Rules}-wrap_Rules (T_Rules sem) (Inh_Rules _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt _lhsIoptions) =-    (let ( _lhsOallAttributes,_lhsOdefsCollect,_lhsOerrors,_lhsOoutput) =-             (sem _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt _lhsIoptions)-     in  (Syn_Rules _lhsOallAttributes _lhsOdefsCollect _lhsOerrors _lhsOoutput))-sem_Rules_Cons :: T_Rule ->-                  T_Rules ->-                  T_Rules-sem_Rules_Cons (T_Rule hd_) (T_Rules tl_) =-    (T_Rules (\ _lhsIchildInhs-                _lhsIchildSyns-                _lhsIcon-                _lhsIdefs-                _lhsIforcedIrrefutables-                _lhsInt-                _lhsIoptions ->-                  (let _lhsOallAttributes :: AttrMap-                       _lhsOdefsCollect :: (Set (Identifier, Identifier))-                       _lhsOerrors :: (Seq Error)-                       _lhsOoutput :: Rules-                       _hdOchildInhs :: ([(Identifier, Identifier)])-                       _hdOchildSyns :: ([(Identifier, Identifier)])-                       _hdOcon :: ConstructorIdent-                       _hdOdefs :: (Set (Identifier, Identifier))-                       _hdOforcedIrrefutables :: AttrMap-                       _hdOnt :: NontermIdent-                       _hdOoptions :: Options-                       _tlOchildInhs :: ([(Identifier, Identifier)])-                       _tlOchildSyns :: ([(Identifier, Identifier)])-                       _tlOcon :: ConstructorIdent-                       _tlOdefs :: (Set (Identifier, Identifier))-                       _tlOforcedIrrefutables :: AttrMap-                       _tlOnt :: NontermIdent-                       _tlOoptions :: Options-                       _hdIallAttributes :: AttrMap-                       _hdIdefsCollect :: (Set (Identifier, Identifier))-                       _hdIerrors :: (Seq Error)-                       _hdIoutput :: Rule-                       _tlIallAttributes :: AttrMap-                       _tlIdefsCollect :: (Set (Identifier, Identifier))-                       _tlIerrors :: (Seq Error)-                       _tlIoutput :: Rules-                       -- use rule "Desugar.ag"(line 189, column 23)-                       _lhsOallAttributes =-                           _hdIallAttributes `mergeAttributes` _tlIallAttributes-                       -- use rule "Desugar.ag"(line 172, column 52)-                       _lhsOdefsCollect =-                           _hdIdefsCollect `Set.union` _tlIdefsCollect-                       -- use rule "Desugar.ag"(line 31, column 144)-                       _lhsOerrors =-                           _hdIerrors Seq.<> _tlIerrors-                       -- self rule-                       _output =-                           (:) _hdIoutput _tlIoutput-                       -- self rule-                       _lhsOoutput =-                           _output-                       -- copy rule (down)-                       _hdOchildInhs =-                           _lhsIchildInhs-                       -- copy rule (down)-                       _hdOchildSyns =-                           _lhsIchildSyns-                       -- copy rule (down)-                       _hdOcon =-                           _lhsIcon-                       -- copy rule (down)-                       _hdOdefs =-                           _lhsIdefs-                       -- copy rule (down)-                       _hdOforcedIrrefutables =-                           _lhsIforcedIrrefutables-                       -- copy rule (down)-                       _hdOnt =-                           _lhsInt-                       -- copy rule (down)-                       _hdOoptions =-                           _lhsIoptions-                       -- copy rule (down)-                       _tlOchildInhs =-                           _lhsIchildInhs-                       -- copy rule (down)-                       _tlOchildSyns =-                           _lhsIchildSyns-                       -- copy rule (down)-                       _tlOcon =-                           _lhsIcon-                       -- copy rule (down)-                       _tlOdefs =-                           _lhsIdefs-                       -- copy rule (down)-                       _tlOforcedIrrefutables =-                           _lhsIforcedIrrefutables-                       -- copy rule (down)-                       _tlOnt =-                           _lhsInt-                       -- copy rule (down)-                       _tlOoptions =-                           _lhsIoptions-                       ( _hdIallAttributes,_hdIdefsCollect,_hdIerrors,_hdIoutput) =-                           (hd_ _hdOchildInhs _hdOchildSyns _hdOcon _hdOdefs _hdOforcedIrrefutables _hdOnt _hdOoptions)-                       ( _tlIallAttributes,_tlIdefsCollect,_tlIerrors,_tlIoutput) =-                           (tl_ _tlOchildInhs _tlOchildSyns _tlOcon _tlOdefs _tlOforcedIrrefutables _tlOnt _tlOoptions)-                   in  ( _lhsOallAttributes,_lhsOdefsCollect,_lhsOerrors,_lhsOoutput))))-sem_Rules_Nil :: T_Rules-sem_Rules_Nil  =-    (T_Rules (\ _lhsIchildInhs-                _lhsIchildSyns-                _lhsIcon-                _lhsIdefs-                _lhsIforcedIrrefutables-                _lhsInt-                _lhsIoptions ->-                  (let _lhsOallAttributes :: AttrMap-                       _lhsOdefsCollect :: (Set (Identifier, Identifier))-                       _lhsOerrors :: (Seq Error)-                       _lhsOoutput :: Rules-                       -- use rule "Desugar.ag"(line 189, column 23)-                       _lhsOallAttributes =-                           Map.empty-                       -- use rule "Desugar.ag"(line 172, column 52)-                       _lhsOdefsCollect =-                           Set.empty-                       -- use rule "Desugar.ag"(line 31, column 144)-                       _lhsOerrors =-                           Seq.empty-                       -- self rule-                       _output =-                           []-                       -- self rule-                       _lhsOoutput =-                           _output-                   in  ( _lhsOallAttributes,_lhsOdefsCollect,_lhsOerrors,_lhsOoutput))))--- TypeSig ------------------------------------------------------{--   visit 0:-      synthesized attribute:-         output               : SELF-   alternatives:-      alternative TypeSig:-         child name           : {Identifier}-         child tp             : {Type}-         visit 0:-            local output      : _--}--- cata-sem_TypeSig :: TypeSig ->-               T_TypeSig-sem_TypeSig (TypeSig _name _tp) =-    (sem_TypeSig_TypeSig _name _tp)--- semantic domain-newtype T_TypeSig = T_TypeSig (( TypeSig))-data Inh_TypeSig = Inh_TypeSig {}-data Syn_TypeSig = Syn_TypeSig {output_Syn_TypeSig :: TypeSig}-wrap_TypeSig (T_TypeSig sem) (Inh_TypeSig ) =-    (let ( _lhsOoutput) =-             (sem )-     in  (Syn_TypeSig _lhsOoutput))-sem_TypeSig_TypeSig :: Identifier ->-                       Type ->-                       T_TypeSig-sem_TypeSig_TypeSig name_ tp_ =-    (T_TypeSig (let _lhsOoutput :: TypeSig-                    -- self rule-                    _output =-                        TypeSig name_ tp_-                    -- self rule-                    _lhsOoutput =-                        _output-                in  ( _lhsOoutput)))--- TypeSigs -----------------------------------------------------{--   visit 0:-      synthesized attribute:-         output               : SELF-   alternatives:-      alternative Cons:-         child hd             : TypeSig-         child tl             : TypeSigs-         visit 0:-            local output      : _-      alternative Nil:-         visit 0:-            local output      : _--}--- cata-sem_TypeSigs :: TypeSigs ->-                T_TypeSigs-sem_TypeSigs list =-    (Prelude.foldr sem_TypeSigs_Cons sem_TypeSigs_Nil (Prelude.map sem_TypeSig list))--- semantic domain-newtype T_TypeSigs = T_TypeSigs (( TypeSigs))-data Inh_TypeSigs = Inh_TypeSigs {}-data Syn_TypeSigs = Syn_TypeSigs {output_Syn_TypeSigs :: TypeSigs}-wrap_TypeSigs (T_TypeSigs sem) (Inh_TypeSigs ) =-    (let ( _lhsOoutput) =-             (sem )-     in  (Syn_TypeSigs _lhsOoutput))-sem_TypeSigs_Cons :: T_TypeSig ->-                     T_TypeSigs ->-                     T_TypeSigs-sem_TypeSigs_Cons (T_TypeSig hd_) (T_TypeSigs tl_) =-    (T_TypeSigs (let _lhsOoutput :: TypeSigs-                     _hdIoutput :: TypeSig-                     _tlIoutput :: TypeSigs-                     -- self rule-                     _output =-                         (:) _hdIoutput _tlIoutput-                     -- self rule-                     _lhsOoutput =-                         _output-                     ( _hdIoutput) =-                         (hd_ )-                     ( _tlIoutput) =-                         (tl_ )-                 in  ( _lhsOoutput)))-sem_TypeSigs_Nil :: T_TypeSigs-sem_TypeSigs_Nil  =-    (T_TypeSigs (let _lhsOoutput :: TypeSigs-                     -- self rule-                     _output =-                         []-                     -- self rule-                     _lhsOoutput =-                         _output-                 in  ( _lhsOoutput)))+{-# OPTIONS_GHC -fbang-patterns #-}+-- UUAGC 0.9.5 (Desugar.ag)+module Desugar where++import qualified Data.Set as Set+import qualified Data.Map as Map+import Data.Map(Map)+import qualified UU.DData.Seq as Seq+import UU.DData.Seq(Seq,(<>))+import UU.Scanner.Position(Pos(..))+import Maybe+import Data.List(intersperse)++import AbstractSyntax+import ErrorMessages+import Options+import HsToken+import HsTokenScanner+import TokenDef++-- AbstractSyntax.ag imports+import Data.Set(Set)+import Data.Map(Map)+import Patterns    (Pattern(..),Patterns)+import Expression  (Expression(..))+import CommonTypes++-- Patterns.ag imports+import UU.Scanner.Position(Pos)+import CommonTypes (ConstructorIdent,Identifier)++import UU.Scanner.Position(Pos)+import HsToken++import CommonTypes+import UU.Scanner.Position(Pos)++addl :: Int -> Pos -> Pos+addl n (Pos l c f) = Pos (l+n) c f++maybeError :: a -> Error -> Maybe a -> (a, Seq Error)+maybeError def err mb+  = maybe (def, Seq.single err) (\r -> (r, Seq.empty)) mb++findField :: Identifier -> Identifier -> [(Identifier,Identifier)] -> Maybe Identifier+findField fld attr list+  | fld == _FIRST = f list+  | fld == _LAST  = f (reverse list)+  | otherwise     = Just fld+  where+    f = lookup attr++mergeAttributes :: AttrMap -> AttrMap -> AttrMap+mergeAttributes = Map.unionWith $ Map.unionWith $ Set.union+-- Child -------------------------------------------------------+{-+   visit 0:+      synthesized attributes:+         childInhs            : [(Identifier, Identifier)]+         childSyns            : [(Identifier, Identifier)]+         output               : SELF+   alternatives:+      alternative Child:+         child name           : {Identifier}+         child tp             : {Type}+         child inh            : {Attributes}+         child syn            : {Attributes}+         child higherOrder    : {Bool}+         visit 0:+            local output      : _+-}+-- cata+sem_Child :: Child ->+             T_Child+sem_Child !(Child _name _tp _inh _syn _higherOrder) =+    (sem_Child_Child _name _tp _inh _syn _higherOrder)+-- semantic domain+newtype T_Child = T_Child (( ([(Identifier, Identifier)]),([(Identifier, Identifier)]),Child))+data Inh_Child = Inh_Child {}+data Syn_Child = Syn_Child {childInhs_Syn_Child :: !([(Identifier, Identifier)]),childSyns_Syn_Child :: !([(Identifier, Identifier)]),output_Syn_Child :: !(Child)}+wrap_Child !(T_Child sem) !(Inh_Child ) =+    (let ( !_lhsOchildInhs,!_lhsOchildSyns,!_lhsOoutput) =+             (sem )+     in  (Syn_Child _lhsOchildInhs _lhsOchildSyns _lhsOoutput))+sem_Child_Child :: Identifier ->+                   Type ->+                   Attributes ->+                   Attributes ->+                   Bool ->+                   T_Child+sem_Child_Child !name_ !tp_ !inh_ !syn_ !higherOrder_ =+    (T_Child (case ([(i, name_) | i <- Map.keys inh_ ]) of+              { !_lhsOchildInhs ->+              (case ([(s, name_) | s <- Map.keys syn_ ]) of+               { !_lhsOchildSyns ->+               (case (Child name_ tp_ inh_ syn_ higherOrder_) of+                { !_output ->+                (case (_output) of+                 { !_lhsOoutput ->+                 ( _lhsOchildInhs,_lhsOchildSyns,_lhsOoutput) }) }) }) }))+-- Children ----------------------------------------------------+{-+   visit 0:+      synthesized attributes:+         childInhs            : [(Identifier, Identifier)]+         childSyns            : [(Identifier, Identifier)]+         output               : SELF+   alternatives:+      alternative Cons:+         child hd             : Child+         child tl             : Children+         visit 0:+            local output      : _+      alternative Nil:+         visit 0:+            local output      : _+-}+-- cata+sem_Children :: Children ->+                T_Children+sem_Children !list =+    (Prelude.foldr sem_Children_Cons sem_Children_Nil (Prelude.map sem_Child list))+-- semantic domain+newtype T_Children = T_Children (( ([(Identifier, Identifier)]),([(Identifier, Identifier)]),Children))+data Inh_Children = Inh_Children {}+data Syn_Children = Syn_Children {childInhs_Syn_Children :: !([(Identifier, Identifier)]),childSyns_Syn_Children :: !([(Identifier, Identifier)]),output_Syn_Children :: !(Children)}+wrap_Children !(T_Children sem) !(Inh_Children ) =+    (let ( !_lhsOchildInhs,!_lhsOchildSyns,!_lhsOoutput) =+             (sem )+     in  (Syn_Children _lhsOchildInhs _lhsOchildSyns _lhsOoutput))+sem_Children_Cons :: T_Child ->+                     T_Children ->+                     T_Children+sem_Children_Cons !(T_Child hd_) !(T_Children tl_) =+    (T_Children (case ((tl_ )) of+                 { ( !_tlIchildInhs,!_tlIchildSyns,!_tlIoutput) ->+                 (case ((hd_ )) of+                  { ( !_hdIchildInhs,!_hdIchildSyns,!_hdIoutput) ->+                  (case (_hdIchildInhs ++ _tlIchildInhs) of+                   { !_lhsOchildInhs ->+                   (case (_hdIchildSyns ++ _tlIchildSyns) of+                    { !_lhsOchildSyns ->+                    (case ((:) _hdIoutput _tlIoutput) of+                     { !_output ->+                     (case (_output) of+                      { !_lhsOoutput ->+                      ( _lhsOchildInhs,_lhsOchildSyns,_lhsOoutput) }) }) }) }) }) }))+sem_Children_Nil :: T_Children+sem_Children_Nil  =+    (T_Children (case ([]) of+                 { !_lhsOchildInhs ->+                 (case ([]) of+                  { !_lhsOchildSyns ->+                  (case ([]) of+                   { !_output ->+                   (case (_output) of+                    { !_lhsOoutput ->+                    ( _lhsOchildInhs,_lhsOchildSyns,_lhsOoutput) }) }) }) }))+-- Expression --------------------------------------------------+{-+   visit 0:+      inherited attributes:+         childInhs            : [(Identifier, Identifier)]+         childSyns            : [(Identifier, Identifier)]+         con                  : ConstructorIdent+         nt                   : NontermIdent+         options              : Options+         ruleDescr            : String+      synthesized attributes:+         errors               : Seq Error+         output               : SELF+   alternatives:+      alternative Expression:+         child pos            : {Pos}+         child tks            : {[HsToken]}+         visit 0:+            local _tup1       : _+            local tks'        : _+-}+-- cata+sem_Expression :: Expression ->+                  T_Expression+sem_Expression !(Expression _pos _tks) =+    (sem_Expression_Expression _pos _tks)+-- semantic domain+newtype T_Expression = T_Expression (([(Identifier, Identifier)]) ->+                                     ([(Identifier, Identifier)]) ->+                                     ConstructorIdent ->+                                     NontermIdent ->+                                     Options ->+                                     String ->+                                     ( (Seq Error),Expression))+data Inh_Expression = Inh_Expression {childInhs_Inh_Expression :: !([(Identifier, Identifier)]),childSyns_Inh_Expression :: !([(Identifier, Identifier)]),con_Inh_Expression :: !(ConstructorIdent),nt_Inh_Expression :: !(NontermIdent),options_Inh_Expression :: !(Options),ruleDescr_Inh_Expression :: !(String)}+data Syn_Expression = Syn_Expression {errors_Syn_Expression :: !(Seq Error),output_Syn_Expression :: !(Expression)}+wrap_Expression !(T_Expression sem) !(Inh_Expression _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIoptions _lhsIruleDescr) =+    (let ( !_lhsOerrors,!_lhsOoutput) =+             (sem _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIoptions _lhsIruleDescr)+     in  (Syn_Expression _lhsOerrors _lhsOoutput))+sem_Expression_Expression :: Pos ->+                             ([HsToken]) ->+                             T_Expression+sem_Expression_Expression !pos_ !tks_ =+    (T_Expression (\ (!_lhsIchildInhs)+                     (!_lhsIchildSyns)+                     (!_lhsIcon)+                     (!_lhsInt)+                     (!_lhsIoptions)+                     (!_lhsIruleDescr) ->+                       (case (let inh = Inh_HsTokensRoot { childInhs_Inh_HsTokensRoot     = _lhsIchildInhs+                                                         , childSyns_Inh_HsTokensRoot     = _lhsIchildSyns+                                                         , nt_Inh_HsTokensRoot            = _lhsInt+                                                         , con_Inh_HsTokensRoot           = _lhsIcon+                                                         , ruleDescr_Inh_HsTokensRoot     = _lhsIruleDescr+                                                         , useFieldIdent_Inh_HsTokensRoot = genUseTraces _lhsIoptions+                                                         }+                                  sem = sem_HsTokensRoot (HsTokensRoot tks_)+                                  syn = wrap_HsTokensRoot sem inh+                              in (tks_Syn_HsTokensRoot syn, errors_Syn_HsTokensRoot syn)) of+                        { !__tup1 ->+                        (case (__tup1) of+                         { !(_,!_lhsOerrors) ->+                         (case (__tup1) of+                          { !(!_tks',_) ->+                          (case (Expression pos_ _tks') of+                           { !_lhsOoutput ->+                           ( _lhsOerrors,_lhsOoutput) }) }) }) })))+-- Grammar -----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         forcedIrrefutables   : AttrMap+         options              : Options+      synthesized attributes:+         allAttributes        : AttrMap+         errors               : Seq Error+         output               : SELF+   alternatives:+      alternative Grammar:+         child typeSyns       : {TypeSyns}+         child useMap         : {UseMap}+         child derivings      : {Derivings}+         child wrappers       : {Set NontermIdent}+         child nonts          : Nonterminals+         child pragmas        : {PragmaMap}+         child manualAttrOrderMap : {AttrOrderMap}+         child paramMap       : {ParamMap}+         child contextMap     : {ContextMap}+         child uniqueMap      : {UniqueMap}+         visit 0:+            local output      : _+-}+-- cata+sem_Grammar :: Grammar ->+               T_Grammar+sem_Grammar !(Grammar _typeSyns _useMap _derivings _wrappers _nonts _pragmas _manualAttrOrderMap _paramMap _contextMap _uniqueMap) =+    (sem_Grammar_Grammar _typeSyns _useMap _derivings _wrappers (sem_Nonterminals _nonts) _pragmas _manualAttrOrderMap _paramMap _contextMap _uniqueMap)+-- semantic domain+newtype T_Grammar = T_Grammar (AttrMap ->+                               Options ->+                               ( AttrMap,(Seq Error),Grammar))+data Inh_Grammar = Inh_Grammar {forcedIrrefutables_Inh_Grammar :: !(AttrMap),options_Inh_Grammar :: !(Options)}+data Syn_Grammar = Syn_Grammar {allAttributes_Syn_Grammar :: !(AttrMap),errors_Syn_Grammar :: !(Seq Error),output_Syn_Grammar :: !(Grammar)}+wrap_Grammar !(T_Grammar sem) !(Inh_Grammar _lhsIforcedIrrefutables _lhsIoptions) =+    (let ( !_lhsOallAttributes,!_lhsOerrors,!_lhsOoutput) =+             (sem _lhsIforcedIrrefutables _lhsIoptions)+     in  (Syn_Grammar _lhsOallAttributes _lhsOerrors _lhsOoutput))+sem_Grammar_Grammar :: TypeSyns ->+                       UseMap ->+                       Derivings ->+                       (Set NontermIdent) ->+                       T_Nonterminals ->+                       PragmaMap ->+                       AttrOrderMap ->+                       ParamMap ->+                       ContextMap ->+                       UniqueMap ->+                       T_Grammar+sem_Grammar_Grammar !typeSyns_ !useMap_ !derivings_ !wrappers_ !(T_Nonterminals nonts_) !pragmas_ !manualAttrOrderMap_ !paramMap_ !contextMap_ !uniqueMap_ =+    (T_Grammar (\ (!_lhsIforcedIrrefutables)+                  (!_lhsIoptions) ->+                    (case (_lhsIoptions) of+                     { !_nontsOoptions ->+                     (case (_lhsIforcedIrrefutables) of+                      { !_nontsOforcedIrrefutables ->+                      (case ((nonts_ _nontsOforcedIrrefutables _nontsOoptions)) of+                       { ( !_nontsIallAttributes,!_nontsIerrors,!_nontsIoutput) ->+                       (case (_nontsIallAttributes) of+                        { !_lhsOallAttributes ->+                        (case (_nontsIerrors) of+                         { !_lhsOerrors ->+                         (case (Grammar typeSyns_ useMap_ derivings_ wrappers_ _nontsIoutput pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ uniqueMap_) of+                          { !_output ->+                          (case (_output) of+                           { !_lhsOoutput ->+                           ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput) }) }) }) }) }) }) })))+-- HsToken -----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         childInhs            : [(Identifier, Identifier)]+         childSyns            : [(Identifier, Identifier)]+         con                  : ConstructorIdent+         nt                   : NontermIdent+         ruleDescr            : String+         useFieldIdent        : Bool+      chained attribute:+         addLines             : Int+      synthesized attributes:+         errors               : Seq Error+         tks                  : SELF+   alternatives:+      alternative AGField:+         child field          : {Identifier}+         child attr           : {Identifier}+         child pos            : {Pos}+         child rdesc          : {Maybe String}+         visit 0:+            local mField      : _+            local field'      : _+            local tks         : _+      alternative AGLocal:+         child var            : {Identifier}+         child pos            : {Pos}+         child rdesc          : {Maybe String}+         visit 0:+            local tks         : _+      alternative CharToken:+         child value          : {String}+         child pos            : {Pos}+         visit 0:+            local tks         : _+      alternative Err:+         child mesg           : {String}+         child pos            : {Pos}+         visit 0:+            local tks         : _+      alternative HsToken:+         child value          : {String}+         child pos            : {Pos}+         visit 0:+            local tks         : _+      alternative StrToken:+         child value          : {String}+         child pos            : {Pos}+         visit 0:+            local tks         : _+-}+-- cata+sem_HsToken :: HsToken ->+               T_HsToken+sem_HsToken !(AGField _field _attr _pos _rdesc) =+    (sem_HsToken_AGField _field _attr _pos _rdesc)+sem_HsToken !(AGLocal _var _pos _rdesc) =+    (sem_HsToken_AGLocal _var _pos _rdesc)+sem_HsToken !(CharToken _value _pos) =+    (sem_HsToken_CharToken _value _pos)+sem_HsToken !(Err _mesg _pos) =+    (sem_HsToken_Err _mesg _pos)+sem_HsToken !(HsToken _value _pos) =+    (sem_HsToken_HsToken _value _pos)+sem_HsToken !(StrToken _value _pos) =+    (sem_HsToken_StrToken _value _pos)+-- semantic domain+newtype T_HsToken = T_HsToken (Int ->+                               ([(Identifier, Identifier)]) ->+                               ([(Identifier, Identifier)]) ->+                               ConstructorIdent ->+                               NontermIdent ->+                               String ->+                               Bool ->+                               ( Int,(Seq Error),HsToken))+data Inh_HsToken = Inh_HsToken {addLines_Inh_HsToken :: !(Int),childInhs_Inh_HsToken :: !([(Identifier, Identifier)]),childSyns_Inh_HsToken :: !([(Identifier, Identifier)]),con_Inh_HsToken :: !(ConstructorIdent),nt_Inh_HsToken :: !(NontermIdent),ruleDescr_Inh_HsToken :: !(String),useFieldIdent_Inh_HsToken :: !(Bool)}+data Syn_HsToken = Syn_HsToken {addLines_Syn_HsToken :: !(Int),errors_Syn_HsToken :: !(Seq Error),tks_Syn_HsToken :: !(HsToken)}+wrap_HsToken !(T_HsToken sem) !(Inh_HsToken _lhsIaddLines _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent) =+    (let ( !_lhsOaddLines,!_lhsOerrors,!_lhsOtks) =+             (sem _lhsIaddLines _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent)+     in  (Syn_HsToken _lhsOaddLines _lhsOerrors _lhsOtks))+sem_HsToken_AGField :: Identifier ->+                       Identifier ->+                       Pos ->+                       (Maybe String) ->+                       T_HsToken+sem_HsToken_AGField !field_ !attr_ !pos_ !rdesc_ =+    (T_HsToken (\ (!_lhsIaddLines)+                  (!_lhsIchildInhs)+                  (!_lhsIchildSyns)+                  (!_lhsIcon)+                  (!_lhsInt)+                  (!_lhsIruleDescr)+                  (!_lhsIuseFieldIdent) ->+                    (case (findField field_ attr_ _lhsIchildSyns) of+                     { !_mField ->+                     (case (maybe field_ id _mField) of+                      { !_field' ->+                      (case (if _lhsIuseFieldIdent || length (getName field_) < length (getName _field'    )+                             then _lhsIaddLines + 1+                             else _lhsIaddLines) of+                       { !_lhsOaddLines ->+                       (case (maybe (Seq.single (UndefAttr _lhsInt _lhsIcon field_ (Ident "<ANY>" (getPos field_)) False)) (const Seq.empty) _mField) of+                        { !_lhsOerrors ->+                        (case (AGField _field'     attr_ (addl _lhsIaddLines pos_) (if _lhsIuseFieldIdent then Just _lhsIruleDescr else Nothing)) of+                         { !_tks ->+                         (case (_tks) of+                          { !_lhsOtks ->+                          ( _lhsOaddLines,_lhsOerrors,_lhsOtks) }) }) }) }) }) })))+sem_HsToken_AGLocal :: Identifier ->+                       Pos ->+                       (Maybe String) ->+                       T_HsToken+sem_HsToken_AGLocal !var_ !pos_ !rdesc_ =+    (T_HsToken (\ (!_lhsIaddLines)+                  (!_lhsIchildInhs)+                  (!_lhsIchildSyns)+                  (!_lhsIcon)+                  (!_lhsInt)+                  (!_lhsIruleDescr)+                  (!_lhsIuseFieldIdent) ->+                    (case (if _lhsIuseFieldIdent+                           then _lhsIaddLines + 1+                           else _lhsIaddLines) of+                     { !_lhsOaddLines ->+                     (case (Seq.empty) of+                      { !_lhsOerrors ->+                      (case (AGLocal var_ (addl _lhsIaddLines pos_) (if _lhsIuseFieldIdent then Just _lhsIruleDescr else Nothing)) of+                       { !_tks ->+                       (case (_tks) of+                        { !_lhsOtks ->+                        ( _lhsOaddLines,_lhsOerrors,_lhsOtks) }) }) }) })))+sem_HsToken_CharToken :: String ->+                         Pos ->+                         T_HsToken+sem_HsToken_CharToken !value_ !pos_ =+    (T_HsToken (\ (!_lhsIaddLines)+                  (!_lhsIchildInhs)+                  (!_lhsIchildSyns)+                  (!_lhsIcon)+                  (!_lhsInt)+                  (!_lhsIruleDescr)+                  (!_lhsIuseFieldIdent) ->+                    (case (_lhsIaddLines) of+                     { !_lhsOaddLines ->+                     (case (Seq.empty) of+                      { !_lhsOerrors ->+                      (case (CharToken value_ (addl _lhsIaddLines pos_)) of+                       { !_tks ->+                       (case (_tks) of+                        { !_lhsOtks ->+                        ( _lhsOaddLines,_lhsOerrors,_lhsOtks) }) }) }) })))+sem_HsToken_Err :: String ->+                   Pos ->+                   T_HsToken+sem_HsToken_Err !mesg_ !pos_ =+    (T_HsToken (\ (!_lhsIaddLines)+                  (!_lhsIchildInhs)+                  (!_lhsIchildSyns)+                  (!_lhsIcon)+                  (!_lhsInt)+                  (!_lhsIruleDescr)+                  (!_lhsIuseFieldIdent) ->+                    (case (_lhsIaddLines) of+                     { !_lhsOaddLines ->+                     (case (Seq.empty) of+                      { !_lhsOerrors ->+                      (case (Err mesg_ (addl _lhsIaddLines pos_)) of+                       { !_tks ->+                       (case (_tks) of+                        { !_lhsOtks ->+                        ( _lhsOaddLines,_lhsOerrors,_lhsOtks) }) }) }) })))+sem_HsToken_HsToken :: String ->+                       Pos ->+                       T_HsToken+sem_HsToken_HsToken !value_ !pos_ =+    (T_HsToken (\ (!_lhsIaddLines)+                  (!_lhsIchildInhs)+                  (!_lhsIchildSyns)+                  (!_lhsIcon)+                  (!_lhsInt)+                  (!_lhsIruleDescr)+                  (!_lhsIuseFieldIdent) ->+                    (case (_lhsIaddLines) of+                     { !_lhsOaddLines ->+                     (case (Seq.empty) of+                      { !_lhsOerrors ->+                      (case (HsToken value_ (addl _lhsIaddLines pos_)) of+                       { !_tks ->+                       (case (_tks) of+                        { !_lhsOtks ->+                        ( _lhsOaddLines,_lhsOerrors,_lhsOtks) }) }) }) })))+sem_HsToken_StrToken :: String ->+                        Pos ->+                        T_HsToken+sem_HsToken_StrToken !value_ !pos_ =+    (T_HsToken (\ (!_lhsIaddLines)+                  (!_lhsIchildInhs)+                  (!_lhsIchildSyns)+                  (!_lhsIcon)+                  (!_lhsInt)+                  (!_lhsIruleDescr)+                  (!_lhsIuseFieldIdent) ->+                    (case (_lhsIaddLines) of+                     { !_lhsOaddLines ->+                     (case (Seq.empty) of+                      { !_lhsOerrors ->+                      (case (StrToken value_ (addl _lhsIaddLines pos_)) of+                       { !_tks ->+                       (case (_tks) of+                        { !_lhsOtks ->+                        ( _lhsOaddLines,_lhsOerrors,_lhsOtks) }) }) }) })))+-- HsTokens ----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         childInhs            : [(Identifier, Identifier)]+         childSyns            : [(Identifier, Identifier)]+         con                  : ConstructorIdent+         nt                   : NontermIdent+         ruleDescr            : String+         useFieldIdent        : Bool+      chained attribute:+         addLines             : Int+      synthesized attributes:+         errors               : Seq Error+         tks                  : SELF+   alternatives:+      alternative Cons:+         child hd             : HsToken+         child tl             : HsTokens+         visit 0:+            local tks         : _+      alternative Nil:+         visit 0:+            local tks         : _+-}+-- cata+sem_HsTokens :: HsTokens ->+                T_HsTokens+sem_HsTokens !list =+    (Prelude.foldr sem_HsTokens_Cons sem_HsTokens_Nil (Prelude.map sem_HsToken list))+-- semantic domain+newtype T_HsTokens = T_HsTokens (Int ->+                                 ([(Identifier, Identifier)]) ->+                                 ([(Identifier, Identifier)]) ->+                                 ConstructorIdent ->+                                 NontermIdent ->+                                 String ->+                                 Bool ->+                                 ( Int,(Seq Error),HsTokens))+data Inh_HsTokens = Inh_HsTokens {addLines_Inh_HsTokens :: !(Int),childInhs_Inh_HsTokens :: !([(Identifier, Identifier)]),childSyns_Inh_HsTokens :: !([(Identifier, Identifier)]),con_Inh_HsTokens :: !(ConstructorIdent),nt_Inh_HsTokens :: !(NontermIdent),ruleDescr_Inh_HsTokens :: !(String),useFieldIdent_Inh_HsTokens :: !(Bool)}+data Syn_HsTokens = Syn_HsTokens {addLines_Syn_HsTokens :: !(Int),errors_Syn_HsTokens :: !(Seq Error),tks_Syn_HsTokens :: !(HsTokens)}+wrap_HsTokens !(T_HsTokens sem) !(Inh_HsTokens _lhsIaddLines _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent) =+    (let ( !_lhsOaddLines,!_lhsOerrors,!_lhsOtks) =+             (sem _lhsIaddLines _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent)+     in  (Syn_HsTokens _lhsOaddLines _lhsOerrors _lhsOtks))+sem_HsTokens_Cons :: T_HsToken ->+                     T_HsTokens ->+                     T_HsTokens+sem_HsTokens_Cons !(T_HsToken hd_) !(T_HsTokens tl_) =+    (T_HsTokens (\ (!_lhsIaddLines)+                   (!_lhsIchildInhs)+                   (!_lhsIchildSyns)+                   (!_lhsIcon)+                   (!_lhsInt)+                   (!_lhsIruleDescr)+                   (!_lhsIuseFieldIdent) ->+                     (case (_lhsIuseFieldIdent) of+                      { !_tlOuseFieldIdent ->+                      (case (_lhsIchildSyns) of+                       { !_tlOchildSyns ->+                       (case (_lhsIuseFieldIdent) of+                        { !_hdOuseFieldIdent ->+                        (case (_lhsIchildSyns) of+                         { !_hdOchildSyns ->+                         (case (_lhsIaddLines) of+                          { !_hdOaddLines ->+                          (case (_lhsIruleDescr) of+                           { !_hdOruleDescr ->+                           (case (_lhsInt) of+                            { !_hdOnt ->+                            (case (_lhsIcon) of+                             { !_hdOcon ->+                             (case (_lhsIchildInhs) of+                              { !_hdOchildInhs ->+                              (case ((hd_ _hdOaddLines _hdOchildInhs _hdOchildSyns _hdOcon _hdOnt _hdOruleDescr _hdOuseFieldIdent)) of+                               { ( !_hdIaddLines,!_hdIerrors,!_hdItks) ->+                               (case (_hdIaddLines) of+                                { !_tlOaddLines ->+                                (case (_lhsIruleDescr) of+                                 { !_tlOruleDescr ->+                                 (case (_lhsInt) of+                                  { !_tlOnt ->+                                  (case (_lhsIcon) of+                                   { !_tlOcon ->+                                   (case (_lhsIchildInhs) of+                                    { !_tlOchildInhs ->+                                    (case ((tl_ _tlOaddLines _tlOchildInhs _tlOchildSyns _tlOcon _tlOnt _tlOruleDescr _tlOuseFieldIdent)) of+                                     { ( !_tlIaddLines,!_tlIerrors,!_tlItks) ->+                                     (case (_tlIaddLines) of+                                      { !_lhsOaddLines ->+                                      (case (_hdIerrors Seq.<> _tlIerrors) of+                                       { !_lhsOerrors ->+                                       (case ((:) _hdItks _tlItks) of+                                        { !_tks ->+                                        (case (_tks) of+                                         { !_lhsOtks ->+                                         ( _lhsOaddLines,_lhsOerrors,_lhsOtks) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_HsTokens_Nil :: T_HsTokens+sem_HsTokens_Nil  =+    (T_HsTokens (\ (!_lhsIaddLines)+                   (!_lhsIchildInhs)+                   (!_lhsIchildSyns)+                   (!_lhsIcon)+                   (!_lhsInt)+                   (!_lhsIruleDescr)+                   (!_lhsIuseFieldIdent) ->+                     (case (_lhsIaddLines) of+                      { !_lhsOaddLines ->+                      (case (Seq.empty) of+                       { !_lhsOerrors ->+                       (case ([]) of+                        { !_tks ->+                        (case (_tks) of+                         { !_lhsOtks ->+                         ( _lhsOaddLines,_lhsOerrors,_lhsOtks) }) }) }) })))+-- HsTokensRoot ------------------------------------------------+{-+   visit 0:+      inherited attributes:+         childInhs            : [(Identifier, Identifier)]+         childSyns            : [(Identifier, Identifier)]+         con                  : ConstructorIdent+         nt                   : NontermIdent+         ruleDescr            : String+         useFieldIdent        : Bool+      synthesized attributes:+         errors               : Seq Error+         tks                  : [HsToken]+   alternatives:+      alternative HsTokensRoot:+         child tokens         : HsTokens+-}+-- cata+sem_HsTokensRoot :: HsTokensRoot ->+                    T_HsTokensRoot+sem_HsTokensRoot !(HsTokensRoot _tokens) =+    (sem_HsTokensRoot_HsTokensRoot (sem_HsTokens _tokens))+-- semantic domain+newtype T_HsTokensRoot = T_HsTokensRoot (([(Identifier, Identifier)]) ->+                                         ([(Identifier, Identifier)]) ->+                                         ConstructorIdent ->+                                         NontermIdent ->+                                         String ->+                                         Bool ->+                                         ( (Seq Error),([HsToken])))+data Inh_HsTokensRoot = Inh_HsTokensRoot {childInhs_Inh_HsTokensRoot :: !([(Identifier, Identifier)]),childSyns_Inh_HsTokensRoot :: !([(Identifier, Identifier)]),con_Inh_HsTokensRoot :: !(ConstructorIdent),nt_Inh_HsTokensRoot :: !(NontermIdent),ruleDescr_Inh_HsTokensRoot :: !(String),useFieldIdent_Inh_HsTokensRoot :: !(Bool)}+data Syn_HsTokensRoot = Syn_HsTokensRoot {errors_Syn_HsTokensRoot :: !(Seq Error),tks_Syn_HsTokensRoot :: !([HsToken])}+wrap_HsTokensRoot !(T_HsTokensRoot sem) !(Inh_HsTokensRoot _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent) =+    (let ( !_lhsOerrors,!_lhsOtks) =+             (sem _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsInt _lhsIruleDescr _lhsIuseFieldIdent)+     in  (Syn_HsTokensRoot _lhsOerrors _lhsOtks))+sem_HsTokensRoot_HsTokensRoot :: T_HsTokens ->+                                 T_HsTokensRoot+sem_HsTokensRoot_HsTokensRoot !(T_HsTokens tokens_) =+    (T_HsTokensRoot (\ (!_lhsIchildInhs)+                       (!_lhsIchildSyns)+                       (!_lhsIcon)+                       (!_lhsInt)+                       (!_lhsIruleDescr)+                       (!_lhsIuseFieldIdent) ->+                         (case (_lhsInt) of+                          { !_tokensOnt ->+                          (case (_lhsIcon) of+                           { !_tokensOcon ->+                           (case (_lhsIchildSyns) of+                            { !_tokensOchildSyns ->+                            (case (_lhsIuseFieldIdent) of+                             { !_tokensOuseFieldIdent ->+                             (case (_lhsIruleDescr) of+                              { !_tokensOruleDescr ->+                              (case (_lhsIchildInhs) of+                               { !_tokensOchildInhs ->+                               (case (0) of+                                { !_tokensOaddLines ->+                                (case ((tokens_ _tokensOaddLines _tokensOchildInhs _tokensOchildSyns _tokensOcon _tokensOnt _tokensOruleDescr _tokensOuseFieldIdent)) of+                                 { ( !_tokensIaddLines,!_tokensIerrors,!_tokensItks) ->+                                 (case (_tokensIerrors) of+                                  { !_lhsOerrors ->+                                  (case (_tokensItks) of+                                   { !_lhsOtks ->+                                   ( _lhsOerrors,_lhsOtks) }) }) }) }) }) }) }) }) }) })))+-- Nonterminal -------------------------------------------------+{-+   visit 0:+      inherited attributes:+         forcedIrrefutables   : AttrMap+         options              : Options+      synthesized attributes:+         allAttributes        : AttrMap+         errors               : Seq Error+         output               : SELF+   alternatives:+      alternative Nonterminal:+         child nt             : {NontermIdent}+         child params         : {[Identifier]}+         child inh            : {Attributes}+         child syn            : {Attributes}+         child prods          : Productions+         visit 0:+            local output      : _+-}+-- cata+sem_Nonterminal :: Nonterminal ->+                   T_Nonterminal+sem_Nonterminal !(Nonterminal _nt _params _inh _syn _prods) =+    (sem_Nonterminal_Nonterminal _nt _params _inh _syn (sem_Productions _prods))+-- semantic domain+newtype T_Nonterminal = T_Nonterminal (AttrMap ->+                                       Options ->+                                       ( AttrMap,(Seq Error),Nonterminal))+data Inh_Nonterminal = Inh_Nonterminal {forcedIrrefutables_Inh_Nonterminal :: !(AttrMap),options_Inh_Nonterminal :: !(Options)}+data Syn_Nonterminal = Syn_Nonterminal {allAttributes_Syn_Nonterminal :: !(AttrMap),errors_Syn_Nonterminal :: !(Seq Error),output_Syn_Nonterminal :: !(Nonterminal)}+wrap_Nonterminal !(T_Nonterminal sem) !(Inh_Nonterminal _lhsIforcedIrrefutables _lhsIoptions) =+    (let ( !_lhsOallAttributes,!_lhsOerrors,!_lhsOoutput) =+             (sem _lhsIforcedIrrefutables _lhsIoptions)+     in  (Syn_Nonterminal _lhsOallAttributes _lhsOerrors _lhsOoutput))+sem_Nonterminal_Nonterminal :: NontermIdent ->+                               ([Identifier]) ->+                               Attributes ->+                               Attributes ->+                               T_Productions ->+                               T_Nonterminal+sem_Nonterminal_Nonterminal !nt_ !params_ !inh_ !syn_ !(T_Productions prods_) =+    (T_Nonterminal (\ (!_lhsIforcedIrrefutables)+                      (!_lhsIoptions) ->+                        (case (nt_) of+                         { !_prodsOnt ->+                         (case (_lhsIoptions) of+                          { !_prodsOoptions ->+                          (case (_lhsIforcedIrrefutables) of+                           { !_prodsOforcedIrrefutables ->+                           (case ((prods_ _prodsOforcedIrrefutables _prodsOnt _prodsOoptions)) of+                            { ( !_prodsIallAttributes,!_prodsIerrors,!_prodsIoutput) ->+                            (case (_prodsIallAttributes) of+                             { !_lhsOallAttributes ->+                             (case (_prodsIerrors) of+                              { !_lhsOerrors ->+                              (case (Nonterminal nt_ params_ inh_ syn_ _prodsIoutput) of+                               { !_output ->+                               (case (_output) of+                                { !_lhsOoutput ->+                                ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput) }) }) }) }) }) }) }) })))+-- Nonterminals ------------------------------------------------+{-+   visit 0:+      inherited attributes:+         forcedIrrefutables   : AttrMap+         options              : Options+      synthesized attributes:+         allAttributes        : AttrMap+         errors               : Seq Error+         output               : SELF+   alternatives:+      alternative Cons:+         child hd             : Nonterminal+         child tl             : Nonterminals+         visit 0:+            local output      : _+      alternative Nil:+         visit 0:+            local output      : _+-}+-- cata+sem_Nonterminals :: Nonterminals ->+                    T_Nonterminals+sem_Nonterminals !list =+    (Prelude.foldr sem_Nonterminals_Cons sem_Nonterminals_Nil (Prelude.map sem_Nonterminal list))+-- semantic domain+newtype T_Nonterminals = T_Nonterminals (AttrMap ->+                                         Options ->+                                         ( AttrMap,(Seq Error),Nonterminals))+data Inh_Nonterminals = Inh_Nonterminals {forcedIrrefutables_Inh_Nonterminals :: !(AttrMap),options_Inh_Nonterminals :: !(Options)}+data Syn_Nonterminals = Syn_Nonterminals {allAttributes_Syn_Nonterminals :: !(AttrMap),errors_Syn_Nonterminals :: !(Seq Error),output_Syn_Nonterminals :: !(Nonterminals)}+wrap_Nonterminals !(T_Nonterminals sem) !(Inh_Nonterminals _lhsIforcedIrrefutables _lhsIoptions) =+    (let ( !_lhsOallAttributes,!_lhsOerrors,!_lhsOoutput) =+             (sem _lhsIforcedIrrefutables _lhsIoptions)+     in  (Syn_Nonterminals _lhsOallAttributes _lhsOerrors _lhsOoutput))+sem_Nonterminals_Cons :: T_Nonterminal ->+                         T_Nonterminals ->+                         T_Nonterminals+sem_Nonterminals_Cons !(T_Nonterminal hd_) !(T_Nonterminals tl_) =+    (T_Nonterminals (\ (!_lhsIforcedIrrefutables)+                       (!_lhsIoptions) ->+                         (case (_lhsIoptions) of+                          { !_tlOoptions ->+                          (case (_lhsIforcedIrrefutables) of+                           { !_tlOforcedIrrefutables ->+                           (case ((tl_ _tlOforcedIrrefutables _tlOoptions)) of+                            { ( !_tlIallAttributes,!_tlIerrors,!_tlIoutput) ->+                            (case (_lhsIoptions) of+                             { !_hdOoptions ->+                             (case (_lhsIforcedIrrefutables) of+                              { !_hdOforcedIrrefutables ->+                              (case ((hd_ _hdOforcedIrrefutables _hdOoptions)) of+                               { ( !_hdIallAttributes,!_hdIerrors,!_hdIoutput) ->+                               (case (_hdIallAttributes `mergeAttributes` _tlIallAttributes) of+                                { !_lhsOallAttributes ->+                                (case (_hdIerrors Seq.<> _tlIerrors) of+                                 { !_lhsOerrors ->+                                 (case ((:) _hdIoutput _tlIoutput) of+                                  { !_output ->+                                  (case (_output) of+                                   { !_lhsOoutput ->+                                   ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput) }) }) }) }) }) }) }) }) }) })))+sem_Nonterminals_Nil :: T_Nonterminals+sem_Nonterminals_Nil  =+    (T_Nonterminals (\ (!_lhsIforcedIrrefutables)+                       (!_lhsIoptions) ->+                         (case (Map.empty) of+                          { !_lhsOallAttributes ->+                          (case (Seq.empty) of+                           { !_lhsOerrors ->+                           (case ([]) of+                            { !_output ->+                            (case (_output) of+                             { !_lhsOoutput ->+                             ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput) }) }) }) })))+-- Pattern -----------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         defsCollect          : Set (Identifier, Identifier)+   visit 1:+      inherited attributes:+         childInhs            : [(Identifier, Identifier)]+         childSyns            : [(Identifier, Identifier)]+         con                  : ConstructorIdent+         defs                 : Set (Identifier, Identifier)+         forcedIrrefutables   : AttrMap+         nt                   : NontermIdent+      synthesized attributes:+         allAttributes        : AttrMap+         copy                 : SELF+         errors               : Seq Error+         output               : SELF+   alternatives:+      alternative Alias:+         child field          : {Identifier}+         child attr           : {Identifier}+         child pat            : Pattern+         child parts          : Patterns+         visit 0:+            local def         : _+         visit 1:+            local copy        : _+            local _tup2       : _+            local field'      : _+            local err2        : _+            local err1        : _+            local output      : _+      alternative Constr:+         child name           : {ConstructorIdent}+         child pats           : Patterns+         visit 1:+            local copy        : _+            local output      : _+      alternative Irrefutable:+         child pat            : Pattern+         visit 1:+            local copy        : _+            local output      : _+      alternative Product:+         child pos            : {Pos}+         child pats           : Patterns+         visit 1:+            local copy        : _+            local output      : _+      alternative Underscore:+         child pos            : {Pos}+         visit 1:+            local copy        : _+            local output      : _+-}+-- cata+sem_Pattern :: Pattern ->+               T_Pattern+sem_Pattern !(Alias _field _attr _pat _parts) =+    (sem_Pattern_Alias _field _attr (sem_Pattern _pat) (sem_Patterns _parts))+sem_Pattern !(Constr _name _pats) =+    (sem_Pattern_Constr _name (sem_Patterns _pats))+sem_Pattern !(Irrefutable _pat) =+    (sem_Pattern_Irrefutable (sem_Pattern _pat))+sem_Pattern !(Product _pos _pats) =+    (sem_Pattern_Product _pos (sem_Patterns _pats))+sem_Pattern !(Underscore _pos) =+    (sem_Pattern_Underscore _pos)+-- semantic domain+newtype T_Pattern = T_Pattern (( (Set (Identifier, Identifier)),T_Pattern_1))+newtype T_Pattern_1 = T_Pattern_1 (([(Identifier, Identifier)]) ->+                                   ([(Identifier, Identifier)]) ->+                                   ConstructorIdent ->+                                   (Set (Identifier, Identifier)) ->+                                   AttrMap ->+                                   NontermIdent ->+                                   ( AttrMap,Pattern,(Seq Error),Pattern))+data Inh_Pattern = Inh_Pattern {childInhs_Inh_Pattern :: !([(Identifier, Identifier)]),childSyns_Inh_Pattern :: !([(Identifier, Identifier)]),con_Inh_Pattern :: !(ConstructorIdent),defs_Inh_Pattern :: !(Set (Identifier, Identifier)),forcedIrrefutables_Inh_Pattern :: !(AttrMap),nt_Inh_Pattern :: !(NontermIdent)}+data Syn_Pattern = Syn_Pattern {allAttributes_Syn_Pattern :: !(AttrMap),copy_Syn_Pattern :: !(Pattern),defsCollect_Syn_Pattern :: !(Set (Identifier, Identifier)),errors_Syn_Pattern :: !(Seq Error),output_Syn_Pattern :: !(Pattern)}+wrap_Pattern !(T_Pattern sem) !(Inh_Pattern _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt) =+    (let ( !_lhsOdefsCollect,!T_Pattern_1 sem_1) =+             (sem )+         ( !_lhsOallAttributes,!_lhsOcopy,!_lhsOerrors,!_lhsOoutput) =+             (sem_1 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt)+     in  (Syn_Pattern _lhsOallAttributes _lhsOcopy _lhsOdefsCollect _lhsOerrors _lhsOoutput))+sem_Pattern_Alias :: Identifier ->+                     Identifier ->+                     T_Pattern ->+                     T_Patterns ->+                     T_Pattern+sem_Pattern_Alias !field_ !attr_ !(T_Pattern pat_) !(T_Patterns parts_) =+    (T_Pattern (case (Set.singleton (field_, attr_)) of+                { !_def ->+                (case ((parts_ )) of+                 { ( !_partsIdefsCollect,!T_Patterns_1 parts_1) ->+                 (case ((pat_ )) of+                  { ( !_patIdefsCollect,!T_Pattern_1 pat_1) ->+                  (case (_def     `Set.union` _patIdefsCollect `Set.union` _partsIdefsCollect) of+                   { !_lhsOdefsCollect ->+                   (case ((sem_Pattern_Alias_1 (T_Pattern_1 pat_1) attr_ field_ (T_Patterns_1 parts_1))) of+                    { ( !sem_Pattern_1) ->+                    ( _lhsOdefsCollect,sem_Pattern_1) }) }) }) }) }))+sem_Pattern_Alias_1 :: T_Pattern_1 ->+                       Identifier ->+                       Identifier ->+                       T_Patterns_1 ->+                       T_Pattern_1+sem_Pattern_Alias_1 !(T_Pattern_1 pat_1) !attr_ !field_ !(T_Patterns_1 parts_1) =+    (T_Pattern_1 (\ (!_lhsIchildInhs)+                    (!_lhsIchildSyns)+                    (!_lhsIcon)+                    (!_lhsIdefs)+                    (!_lhsIforcedIrrefutables)+                    (!_lhsInt) ->+                      (case (_lhsInt) of+                       { !_patOnt ->+                       (case (_lhsIcon) of+                        { !_patOcon ->+                        (case (_lhsIforcedIrrefutables) of+                         { !_patOforcedIrrefutables ->+                         (case (_lhsIdefs) of+                          { !_patOdefs ->+                          (case (_lhsIchildSyns) of+                           { !_patOchildSyns ->+                           (case (_lhsIchildInhs) of+                            { !_patOchildInhs ->+                            (case ((pat_1 _patOchildInhs _patOchildSyns _patOcon _patOdefs _patOforcedIrrefutables _patOnt)) of+                             { ( !_patIallAttributes,!_patIcopy,!_patIerrors,!_patIoutput) ->+                             (case ((Map.singleton _lhsInt $ Map.singleton _lhsIcon $ Set.singleton (field_, attr_)) `mergeAttributes` _patIallAttributes) of+                              { !_lhsOallAttributes ->+                              (case (_lhsInt) of+                               { !_partsOnt ->+                               (case (_lhsIforcedIrrefutables) of+                                { !_partsOforcedIrrefutables ->+                                (case (_lhsIdefs) of+                                 { !_partsOdefs ->+                                 (case (_lhsIcon) of+                                  { !_partsOcon ->+                                  (case (_lhsIchildSyns) of+                                   { !_partsOchildSyns ->+                                   (case (_lhsIchildInhs) of+                                    { !_partsOchildInhs ->+                                    (case ((parts_1 _partsOchildInhs _partsOchildSyns _partsOcon _partsOdefs _partsOforcedIrrefutables _partsOnt)) of+                                     { ( !_partsIallAttributes,!_partsIcopy,!_partsIerrors,!_partsIoutput) ->+                                     (case (Alias field_ attr_ _patIcopy _partsIcopy) of+                                      { !_copy ->+                                      (case (_copy) of+                                       { !_lhsOcopy ->+                                       (case (maybeError field_ (UndefAttr _lhsInt _lhsIcon (Ident "<ANY>" (getPos field_)) attr_ True) $+                                                findField field_ attr_ _lhsIchildInhs) of+                                        { !__tup2 ->+                                        (case (__tup2) of+                                         { !(!_field',_) ->+                                         (case (if _field'     == field_+                                                then Seq.empty+                                                else if (_field'    , attr_) `Set.member` _lhsIdefs+                                                     then Seq.single $ DupRule _lhsInt _lhsIcon field_ attr_ _field'+                                                     else Seq.empty) of+                                          { !_err2 ->+                                          (case (__tup2) of+                                           { !(_,!_err1) ->+                                           (case (_err1     Seq.<> _err2     Seq.<> _patIerrors <> _partsIerrors) of+                                            { !_lhsOerrors ->+                                            (case (Alias _field'     attr_ _patIoutput _partsIoutput) of+                                             { !_output ->+                                             (case (if Set.member (field_, attr_) $ Map.findWithDefault Set.empty _lhsIcon $ Map.findWithDefault Map.empty _lhsInt $ _lhsIforcedIrrefutables+                                                    then Irrefutable _output+                                                    else _output) of+                                              { !_lhsOoutput ->+                                              ( _lhsOallAttributes,_lhsOcopy,_lhsOerrors,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Pattern_Constr :: ConstructorIdent ->+                      T_Patterns ->+                      T_Pattern+sem_Pattern_Constr !name_ !(T_Patterns pats_) =+    (T_Pattern (case ((pats_ )) of+                { ( !_patsIdefsCollect,!T_Patterns_1 pats_1) ->+                (case (_patsIdefsCollect) of+                 { !_lhsOdefsCollect ->+                 (case ((sem_Pattern_Constr_1 (T_Patterns_1 pats_1) name_)) of+                  { ( !sem_Pattern_1) ->+                  ( _lhsOdefsCollect,sem_Pattern_1) }) }) }))+sem_Pattern_Constr_1 :: T_Patterns_1 ->+                        ConstructorIdent ->+                        T_Pattern_1+sem_Pattern_Constr_1 !(T_Patterns_1 pats_1) !name_ =+    (T_Pattern_1 (\ (!_lhsIchildInhs)+                    (!_lhsIchildSyns)+                    (!_lhsIcon)+                    (!_lhsIdefs)+                    (!_lhsIforcedIrrefutables)+                    (!_lhsInt) ->+                      (case (_lhsInt) of+                       { !_patsOnt ->+                       (case (_lhsIcon) of+                        { !_patsOcon ->+                        (case (_lhsIforcedIrrefutables) of+                         { !_patsOforcedIrrefutables ->+                         (case (_lhsIdefs) of+                          { !_patsOdefs ->+                          (case (_lhsIchildSyns) of+                           { !_patsOchildSyns ->+                           (case (_lhsIchildInhs) of+                            { !_patsOchildInhs ->+                            (case ((pats_1 _patsOchildInhs _patsOchildSyns _patsOcon _patsOdefs _patsOforcedIrrefutables _patsOnt)) of+                             { ( !_patsIallAttributes,!_patsIcopy,!_patsIerrors,!_patsIoutput) ->+                             (case (_patsIallAttributes) of+                              { !_lhsOallAttributes ->+                              (case (Constr name_ _patsIcopy) of+                               { !_copy ->+                               (case (_copy) of+                                { !_lhsOcopy ->+                                (case (_patsIerrors) of+                                 { !_lhsOerrors ->+                                 (case (Constr name_ _patsIoutput) of+                                  { !_output ->+                                  (case (_output) of+                                   { !_lhsOoutput ->+                                   ( _lhsOallAttributes,_lhsOcopy,_lhsOerrors,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Pattern_Irrefutable :: T_Pattern ->+                           T_Pattern+sem_Pattern_Irrefutable !(T_Pattern pat_) =+    (T_Pattern (case ((pat_ )) of+                { ( !_patIdefsCollect,!T_Pattern_1 pat_1) ->+                (case (_patIdefsCollect) of+                 { !_lhsOdefsCollect ->+                 (case ((sem_Pattern_Irrefutable_1 (T_Pattern_1 pat_1))) of+                  { ( !sem_Pattern_1) ->+                  ( _lhsOdefsCollect,sem_Pattern_1) }) }) }))+sem_Pattern_Irrefutable_1 :: T_Pattern_1 ->+                             T_Pattern_1+sem_Pattern_Irrefutable_1 !(T_Pattern_1 pat_1) =+    (T_Pattern_1 (\ (!_lhsIchildInhs)+                    (!_lhsIchildSyns)+                    (!_lhsIcon)+                    (!_lhsIdefs)+                    (!_lhsIforcedIrrefutables)+                    (!_lhsInt) ->+                      (case (Map.empty) of+                       { !_lhsOallAttributes ->+                       (case (_lhsInt) of+                        { !_patOnt ->+                        (case (_lhsIforcedIrrefutables) of+                         { !_patOforcedIrrefutables ->+                         (case (_lhsIdefs) of+                          { !_patOdefs ->+                          (case (_lhsIcon) of+                           { !_patOcon ->+                           (case (_lhsIchildSyns) of+                            { !_patOchildSyns ->+                            (case (_lhsIchildInhs) of+                             { !_patOchildInhs ->+                             (case ((pat_1 _patOchildInhs _patOchildSyns _patOcon _patOdefs _patOforcedIrrefutables _patOnt)) of+                              { ( !_patIallAttributes,!_patIcopy,!_patIerrors,!_patIoutput) ->+                              (case (Irrefutable _patIcopy) of+                               { !_copy ->+                               (case (_copy) of+                                { !_lhsOcopy ->+                                (case (_patIerrors) of+                                 { !_lhsOerrors ->+                                 (case (Irrefutable _patIoutput) of+                                  { !_output ->+                                  (case (_output) of+                                   { !_lhsOoutput ->+                                   ( _lhsOallAttributes,_lhsOcopy,_lhsOerrors,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Pattern_Product :: Pos ->+                       T_Patterns ->+                       T_Pattern+sem_Pattern_Product !pos_ !(T_Patterns pats_) =+    (T_Pattern (case ((pats_ )) of+                { ( !_patsIdefsCollect,!T_Patterns_1 pats_1) ->+                (case (_patsIdefsCollect) of+                 { !_lhsOdefsCollect ->+                 (case ((sem_Pattern_Product_1 (T_Patterns_1 pats_1) pos_)) of+                  { ( !sem_Pattern_1) ->+                  ( _lhsOdefsCollect,sem_Pattern_1) }) }) }))+sem_Pattern_Product_1 :: T_Patterns_1 ->+                         Pos ->+                         T_Pattern_1+sem_Pattern_Product_1 !(T_Patterns_1 pats_1) !pos_ =+    (T_Pattern_1 (\ (!_lhsIchildInhs)+                    (!_lhsIchildSyns)+                    (!_lhsIcon)+                    (!_lhsIdefs)+                    (!_lhsIforcedIrrefutables)+                    (!_lhsInt) ->+                      (case (_lhsInt) of+                       { !_patsOnt ->+                       (case (_lhsIcon) of+                        { !_patsOcon ->+                        (case (_lhsIforcedIrrefutables) of+                         { !_patsOforcedIrrefutables ->+                         (case (_lhsIdefs) of+                          { !_patsOdefs ->+                          (case (_lhsIchildSyns) of+                           { !_patsOchildSyns ->+                           (case (_lhsIchildInhs) of+                            { !_patsOchildInhs ->+                            (case ((pats_1 _patsOchildInhs _patsOchildSyns _patsOcon _patsOdefs _patsOforcedIrrefutables _patsOnt)) of+                             { ( !_patsIallAttributes,!_patsIcopy,!_patsIerrors,!_patsIoutput) ->+                             (case (_patsIallAttributes) of+                              { !_lhsOallAttributes ->+                              (case (Product pos_ _patsIcopy) of+                               { !_copy ->+                               (case (_copy) of+                                { !_lhsOcopy ->+                                (case (_patsIerrors) of+                                 { !_lhsOerrors ->+                                 (case (Product pos_ _patsIoutput) of+                                  { !_output ->+                                  (case (_output) of+                                   { !_lhsOoutput ->+                                   ( _lhsOallAttributes,_lhsOcopy,_lhsOerrors,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Pattern_Underscore :: Pos ->+                          T_Pattern+sem_Pattern_Underscore !pos_ =+    (T_Pattern (case (Set.empty) of+                { !_lhsOdefsCollect ->+                (case ((sem_Pattern_Underscore_1 pos_)) of+                 { ( !sem_Pattern_1) ->+                 ( _lhsOdefsCollect,sem_Pattern_1) }) }))+sem_Pattern_Underscore_1 :: Pos ->+                            T_Pattern_1+sem_Pattern_Underscore_1 !pos_ =+    (T_Pattern_1 (\ (!_lhsIchildInhs)+                    (!_lhsIchildSyns)+                    (!_lhsIcon)+                    (!_lhsIdefs)+                    (!_lhsIforcedIrrefutables)+                    (!_lhsInt) ->+                      (case (Map.empty) of+                       { !_lhsOallAttributes ->+                       (case (Underscore pos_) of+                        { !_copy ->+                        (case (_copy) of+                         { !_lhsOcopy ->+                         (case (Seq.empty) of+                          { !_lhsOerrors ->+                          (case (Underscore pos_) of+                           { !_output ->+                           (case (_output) of+                            { !_lhsOoutput ->+                            ( _lhsOallAttributes,_lhsOcopy,_lhsOerrors,_lhsOoutput) }) }) }) }) }) })))+-- Patterns ----------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         defsCollect          : Set (Identifier, Identifier)+   visit 1:+      inherited attributes:+         childInhs            : [(Identifier, Identifier)]+         childSyns            : [(Identifier, Identifier)]+         con                  : ConstructorIdent+         defs                 : Set (Identifier, Identifier)+         forcedIrrefutables   : AttrMap+         nt                   : NontermIdent+      synthesized attributes:+         allAttributes        : AttrMap+         copy                 : SELF+         errors               : Seq Error+         output               : SELF+   alternatives:+      alternative Cons:+         child hd             : Pattern+         child tl             : Patterns+         visit 1:+            local copy        : _+            local output      : _+      alternative Nil:+         visit 1:+            local copy        : _+            local output      : _+-}+-- cata+sem_Patterns :: Patterns ->+                T_Patterns+sem_Patterns !list =+    (Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list))+-- semantic domain+newtype T_Patterns = T_Patterns (( (Set (Identifier, Identifier)),T_Patterns_1))+newtype T_Patterns_1 = T_Patterns_1 (([(Identifier, Identifier)]) ->+                                     ([(Identifier, Identifier)]) ->+                                     ConstructorIdent ->+                                     (Set (Identifier, Identifier)) ->+                                     AttrMap ->+                                     NontermIdent ->+                                     ( AttrMap,Patterns,(Seq Error),Patterns))+data Inh_Patterns = Inh_Patterns {childInhs_Inh_Patterns :: !([(Identifier, Identifier)]),childSyns_Inh_Patterns :: !([(Identifier, Identifier)]),con_Inh_Patterns :: !(ConstructorIdent),defs_Inh_Patterns :: !(Set (Identifier, Identifier)),forcedIrrefutables_Inh_Patterns :: !(AttrMap),nt_Inh_Patterns :: !(NontermIdent)}+data Syn_Patterns = Syn_Patterns {allAttributes_Syn_Patterns :: !(AttrMap),copy_Syn_Patterns :: !(Patterns),defsCollect_Syn_Patterns :: !(Set (Identifier, Identifier)),errors_Syn_Patterns :: !(Seq Error),output_Syn_Patterns :: !(Patterns)}+wrap_Patterns !(T_Patterns sem) !(Inh_Patterns _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt) =+    (let ( !_lhsOdefsCollect,!T_Patterns_1 sem_1) =+             (sem )+         ( !_lhsOallAttributes,!_lhsOcopy,!_lhsOerrors,!_lhsOoutput) =+             (sem_1 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt)+     in  (Syn_Patterns _lhsOallAttributes _lhsOcopy _lhsOdefsCollect _lhsOerrors _lhsOoutput))+sem_Patterns_Cons :: T_Pattern ->+                     T_Patterns ->+                     T_Patterns+sem_Patterns_Cons !(T_Pattern hd_) !(T_Patterns tl_) =+    (T_Patterns (case ((tl_ )) of+                 { ( !_tlIdefsCollect,!T_Patterns_1 tl_1) ->+                 (case ((hd_ )) of+                  { ( !_hdIdefsCollect,!T_Pattern_1 hd_1) ->+                  (case (_hdIdefsCollect `Set.union` _tlIdefsCollect) of+                   { !_lhsOdefsCollect ->+                   (case ((sem_Patterns_Cons_1 (T_Patterns_1 tl_1) (T_Pattern_1 hd_1))) of+                    { ( !sem_Patterns_1) ->+                    ( _lhsOdefsCollect,sem_Patterns_1) }) }) }) }))+sem_Patterns_Cons_1 :: T_Patterns_1 ->+                       T_Pattern_1 ->+                       T_Patterns_1+sem_Patterns_Cons_1 !(T_Patterns_1 tl_1) !(T_Pattern_1 hd_1) =+    (T_Patterns_1 (\ (!_lhsIchildInhs)+                     (!_lhsIchildSyns)+                     (!_lhsIcon)+                     (!_lhsIdefs)+                     (!_lhsIforcedIrrefutables)+                     (!_lhsInt) ->+                       (case (_lhsInt) of+                        { !_tlOnt ->+                        (case (_lhsIcon) of+                         { !_tlOcon ->+                         (case (_lhsInt) of+                          { !_hdOnt ->+                          (case (_lhsIcon) of+                           { !_hdOcon ->+                           (case (_lhsIforcedIrrefutables) of+                            { !_tlOforcedIrrefutables ->+                            (case (_lhsIdefs) of+                             { !_tlOdefs ->+                             (case (_lhsIchildSyns) of+                              { !_tlOchildSyns ->+                              (case (_lhsIchildInhs) of+                               { !_tlOchildInhs ->+                               (case ((tl_1 _tlOchildInhs _tlOchildSyns _tlOcon _tlOdefs _tlOforcedIrrefutables _tlOnt)) of+                                { ( !_tlIallAttributes,!_tlIcopy,!_tlIerrors,!_tlIoutput) ->+                                (case (_lhsIforcedIrrefutables) of+                                 { !_hdOforcedIrrefutables ->+                                 (case (_lhsIdefs) of+                                  { !_hdOdefs ->+                                  (case (_lhsIchildSyns) of+                                   { !_hdOchildSyns ->+                                   (case (_lhsIchildInhs) of+                                    { !_hdOchildInhs ->+                                    (case ((hd_1 _hdOchildInhs _hdOchildSyns _hdOcon _hdOdefs _hdOforcedIrrefutables _hdOnt)) of+                                     { ( !_hdIallAttributes,!_hdIcopy,!_hdIerrors,!_hdIoutput) ->+                                     (case (_hdIallAttributes `mergeAttributes` _tlIallAttributes) of+                                      { !_lhsOallAttributes ->+                                      (case ((:) _hdIcopy _tlIcopy) of+                                       { !_copy ->+                                       (case (_copy) of+                                        { !_lhsOcopy ->+                                        (case (_hdIerrors Seq.<> _tlIerrors) of+                                         { !_lhsOerrors ->+                                         (case ((:) _hdIoutput _tlIoutput) of+                                          { !_output ->+                                          (case (_output) of+                                           { !_lhsOoutput ->+                                           ( _lhsOallAttributes,_lhsOcopy,_lhsOerrors,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Patterns_Nil :: T_Patterns+sem_Patterns_Nil  =+    (T_Patterns (case (Set.empty) of+                 { !_lhsOdefsCollect ->+                 (case ((sem_Patterns_Nil_1 )) of+                  { ( !sem_Patterns_1) ->+                  ( _lhsOdefsCollect,sem_Patterns_1) }) }))+sem_Patterns_Nil_1 :: T_Patterns_1+sem_Patterns_Nil_1  =+    (T_Patterns_1 (\ (!_lhsIchildInhs)+                     (!_lhsIchildSyns)+                     (!_lhsIcon)+                     (!_lhsIdefs)+                     (!_lhsIforcedIrrefutables)+                     (!_lhsInt) ->+                       (case (Map.empty) of+                        { !_lhsOallAttributes ->+                        (case ([]) of+                         { !_copy ->+                         (case (_copy) of+                          { !_lhsOcopy ->+                          (case (Seq.empty) of+                           { !_lhsOerrors ->+                           (case ([]) of+                            { !_output ->+                            (case (_output) of+                             { !_lhsOoutput ->+                             ( _lhsOallAttributes,_lhsOcopy,_lhsOerrors,_lhsOoutput) }) }) }) }) }) })))+-- Production --------------------------------------------------+{-+   visit 0:+      inherited attributes:+         forcedIrrefutables   : AttrMap+         nt                   : NontermIdent+         options              : Options+      synthesized attributes:+         allAttributes        : AttrMap+         errors               : Seq Error+         output               : SELF+   alternatives:+      alternative Production:+         child con            : {ConstructorIdent}+         child children       : Children+         child rules          : Rules+         child typeSigs       : TypeSigs+         visit 0:+            local output      : _+-}+-- cata+sem_Production :: Production ->+                  T_Production+sem_Production !(Production _con _children _rules _typeSigs) =+    (sem_Production_Production _con (sem_Children _children) (sem_Rules _rules) (sem_TypeSigs _typeSigs))+-- semantic domain+newtype T_Production = T_Production (AttrMap ->+                                     NontermIdent ->+                                     Options ->+                                     ( AttrMap,(Seq Error),Production))+data Inh_Production = Inh_Production {forcedIrrefutables_Inh_Production :: !(AttrMap),nt_Inh_Production :: !(NontermIdent),options_Inh_Production :: !(Options)}+data Syn_Production = Syn_Production {allAttributes_Syn_Production :: !(AttrMap),errors_Syn_Production :: !(Seq Error),output_Syn_Production :: !(Production)}+wrap_Production !(T_Production sem) !(Inh_Production _lhsIforcedIrrefutables _lhsInt _lhsIoptions) =+    (let ( !_lhsOallAttributes,!_lhsOerrors,!_lhsOoutput) =+             (sem _lhsIforcedIrrefutables _lhsInt _lhsIoptions)+     in  (Syn_Production _lhsOallAttributes _lhsOerrors _lhsOoutput))+sem_Production_Production :: ConstructorIdent ->+                             T_Children ->+                             T_Rules ->+                             T_TypeSigs ->+                             T_Production+sem_Production_Production !con_ !(T_Children children_) !(T_Rules rules_) !(T_TypeSigs typeSigs_) =+    (T_Production (\ (!_lhsIforcedIrrefutables)+                     (!_lhsInt)+                     (!_lhsIoptions) ->+                       (case (_lhsInt) of+                        { !_rulesOnt ->+                        (case (con_) of+                         { !_rulesOcon ->+                         (case ((rules_ )) of+                          { ( !_rulesIdefsCollect,!T_Rules_1 rules_1) ->+                          (case (_lhsIoptions) of+                           { !_rulesOoptions ->+                           (case (_lhsIforcedIrrefutables) of+                            { !_rulesOforcedIrrefutables ->+                            (case ((children_ )) of+                             { ( !_childrenIchildInhs,!_childrenIchildSyns,!_childrenIoutput) ->+                             (case (_childrenIchildSyns) of+                              { !_rulesOchildSyns ->+                              (case (_childrenIchildInhs) of+                               { !_rulesOchildInhs ->+                               (case (_rulesIdefsCollect) of+                                { !_rulesOdefs ->+                                (case ((rules_1 _rulesOchildInhs _rulesOchildSyns _rulesOcon _rulesOdefs _rulesOforcedIrrefutables _rulesOnt _rulesOoptions)) of+                                 { ( !_rulesIallAttributes,!_rulesIerrors,!_rulesIoutput) ->+                                 (case (_rulesIallAttributes) of+                                  { !_lhsOallAttributes ->+                                  (case (_rulesIerrors) of+                                   { !_lhsOerrors ->+                                   (case ((typeSigs_ )) of+                                    { ( !_typeSigsIoutput) ->+                                    (case (Production con_ _childrenIoutput _rulesIoutput _typeSigsIoutput) of+                                     { !_output ->+                                     (case (_output) of+                                      { !_lhsOoutput ->+                                      ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+-- Productions -------------------------------------------------+{-+   visit 0:+      inherited attributes:+         forcedIrrefutables   : AttrMap+         nt                   : NontermIdent+         options              : Options+      synthesized attributes:+         allAttributes        : AttrMap+         errors               : Seq Error+         output               : SELF+   alternatives:+      alternative Cons:+         child hd             : Production+         child tl             : Productions+         visit 0:+            local output      : _+      alternative Nil:+         visit 0:+            local output      : _+-}+-- cata+sem_Productions :: Productions ->+                   T_Productions+sem_Productions !list =+    (Prelude.foldr sem_Productions_Cons sem_Productions_Nil (Prelude.map sem_Production list))+-- semantic domain+newtype T_Productions = T_Productions (AttrMap ->+                                       NontermIdent ->+                                       Options ->+                                       ( AttrMap,(Seq Error),Productions))+data Inh_Productions = Inh_Productions {forcedIrrefutables_Inh_Productions :: !(AttrMap),nt_Inh_Productions :: !(NontermIdent),options_Inh_Productions :: !(Options)}+data Syn_Productions = Syn_Productions {allAttributes_Syn_Productions :: !(AttrMap),errors_Syn_Productions :: !(Seq Error),output_Syn_Productions :: !(Productions)}+wrap_Productions !(T_Productions sem) !(Inh_Productions _lhsIforcedIrrefutables _lhsInt _lhsIoptions) =+    (let ( !_lhsOallAttributes,!_lhsOerrors,!_lhsOoutput) =+             (sem _lhsIforcedIrrefutables _lhsInt _lhsIoptions)+     in  (Syn_Productions _lhsOallAttributes _lhsOerrors _lhsOoutput))+sem_Productions_Cons :: T_Production ->+                        T_Productions ->+                        T_Productions+sem_Productions_Cons !(T_Production hd_) !(T_Productions tl_) =+    (T_Productions (\ (!_lhsIforcedIrrefutables)+                      (!_lhsInt)+                      (!_lhsIoptions) ->+                        (case (_lhsInt) of+                         { !_tlOnt ->+                         (case (_lhsInt) of+                          { !_hdOnt ->+                          (case (_lhsIoptions) of+                           { !_tlOoptions ->+                           (case (_lhsIforcedIrrefutables) of+                            { !_tlOforcedIrrefutables ->+                            (case ((tl_ _tlOforcedIrrefutables _tlOnt _tlOoptions)) of+                             { ( !_tlIallAttributes,!_tlIerrors,!_tlIoutput) ->+                             (case (_lhsIoptions) of+                              { !_hdOoptions ->+                              (case (_lhsIforcedIrrefutables) of+                               { !_hdOforcedIrrefutables ->+                               (case ((hd_ _hdOforcedIrrefutables _hdOnt _hdOoptions)) of+                                { ( !_hdIallAttributes,!_hdIerrors,!_hdIoutput) ->+                                (case (_hdIallAttributes `mergeAttributes` _tlIallAttributes) of+                                 { !_lhsOallAttributes ->+                                 (case (_hdIerrors Seq.<> _tlIerrors) of+                                  { !_lhsOerrors ->+                                  (case ((:) _hdIoutput _tlIoutput) of+                                   { !_output ->+                                   (case (_output) of+                                    { !_lhsOoutput ->+                                    ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Productions_Nil :: T_Productions+sem_Productions_Nil  =+    (T_Productions (\ (!_lhsIforcedIrrefutables)+                      (!_lhsInt)+                      (!_lhsIoptions) ->+                        (case (Map.empty) of+                         { !_lhsOallAttributes ->+                         (case (Seq.empty) of+                          { !_lhsOerrors ->+                          (case ([]) of+                           { !_output ->+                           (case (_output) of+                            { !_lhsOoutput ->+                            ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput) }) }) }) })))+-- Rule --------------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         defsCollect          : Set (Identifier, Identifier)+   visit 1:+      inherited attributes:+         childInhs            : [(Identifier, Identifier)]+         childSyns            : [(Identifier, Identifier)]+         con                  : ConstructorIdent+         defs                 : Set (Identifier, Identifier)+         forcedIrrefutables   : AttrMap+         nt                   : NontermIdent+         options              : Options+      synthesized attributes:+         allAttributes        : AttrMap+         errors               : Seq Error+         output               : SELF+   alternatives:+      alternative Rule:+         child pattern        : Pattern+         child rhs            : Expression+         child owrt           : {Bool}+         child origin         : {String}+         visit 1:+            local ruleDescr   : _+            local output      : _+-}+-- cata+sem_Rule :: Rule ->+            T_Rule+sem_Rule !(Rule _pattern _rhs _owrt _origin) =+    (sem_Rule_Rule (sem_Pattern _pattern) (sem_Expression _rhs) _owrt _origin)+-- semantic domain+newtype T_Rule = T_Rule (( (Set (Identifier, Identifier)),T_Rule_1))+newtype T_Rule_1 = T_Rule_1 (([(Identifier, Identifier)]) ->+                             ([(Identifier, Identifier)]) ->+                             ConstructorIdent ->+                             (Set (Identifier, Identifier)) ->+                             AttrMap ->+                             NontermIdent ->+                             Options ->+                             ( AttrMap,(Seq Error),Rule))+data Inh_Rule = Inh_Rule {childInhs_Inh_Rule :: !([(Identifier, Identifier)]),childSyns_Inh_Rule :: !([(Identifier, Identifier)]),con_Inh_Rule :: !(ConstructorIdent),defs_Inh_Rule :: !(Set (Identifier, Identifier)),forcedIrrefutables_Inh_Rule :: !(AttrMap),nt_Inh_Rule :: !(NontermIdent),options_Inh_Rule :: !(Options)}+data Syn_Rule = Syn_Rule {allAttributes_Syn_Rule :: !(AttrMap),defsCollect_Syn_Rule :: !(Set (Identifier, Identifier)),errors_Syn_Rule :: !(Seq Error),output_Syn_Rule :: !(Rule)}+wrap_Rule !(T_Rule sem) !(Inh_Rule _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt _lhsIoptions) =+    (let ( !_lhsOdefsCollect,!T_Rule_1 sem_1) =+             (sem )+         ( !_lhsOallAttributes,!_lhsOerrors,!_lhsOoutput) =+             (sem_1 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt _lhsIoptions)+     in  (Syn_Rule _lhsOallAttributes _lhsOdefsCollect _lhsOerrors _lhsOoutput))+sem_Rule_Rule :: T_Pattern ->+                 T_Expression ->+                 Bool ->+                 String ->+                 T_Rule+sem_Rule_Rule !(T_Pattern pattern_) !(T_Expression rhs_) !owrt_ !origin_ =+    (T_Rule (case ((pattern_ )) of+             { ( !_patternIdefsCollect,!T_Pattern_1 pattern_1) ->+             (case (_patternIdefsCollect) of+              { !_lhsOdefsCollect ->+              (case ((sem_Rule_Rule_1 (T_Pattern_1 pattern_1) _patternIdefsCollect (T_Expression rhs_) origin_ owrt_)) of+               { ( !sem_Rule_1) ->+               ( _lhsOdefsCollect,sem_Rule_1) }) }) }))+sem_Rule_Rule_1 :: T_Pattern_1 ->+                   (Set (Identifier, Identifier)) ->+                   T_Expression ->+                   String ->+                   Bool ->+                   T_Rule_1+sem_Rule_Rule_1 !(T_Pattern_1 pattern_1) !_patternIdefsCollect !(T_Expression rhs_) !origin_ !owrt_ =+    (T_Rule_1 (\ (!_lhsIchildInhs)+                 (!_lhsIchildSyns)+                 (!_lhsIcon)+                 (!_lhsIdefs)+                 (!_lhsIforcedIrrefutables)+                 (!_lhsInt)+                 (!_lhsIoptions) ->+                   (case (_lhsInt) of+                    { !_patternOnt ->+                    (case (_lhsIcon) of+                     { !_patternOcon ->+                     (case (_lhsIforcedIrrefutables) of+                      { !_patternOforcedIrrefutables ->+                      (case (_lhsIdefs) of+                       { !_patternOdefs ->+                       (case (_lhsIchildSyns) of+                        { !_patternOchildSyns ->+                        (case (_lhsIchildInhs) of+                         { !_patternOchildInhs ->+                         (case ((pattern_1 _patternOchildInhs _patternOchildSyns _patternOcon _patternOdefs _patternOforcedIrrefutables _patternOnt)) of+                          { ( !_patternIallAttributes,!_patternIcopy,!_patternIerrors,!_patternIoutput) ->+                          (case (_patternIallAttributes) of+                           { !_lhsOallAttributes ->+                           (case (show _lhsInt ++ " :: " ++ show _lhsIcon ++ " :: " ++ (concat $ intersperse "," $ map (\(f,a) -> show f ++ "." ++ show a) $ Set.toList _patternIdefsCollect)) of+                            { !_ruleDescr ->+                            (case (_ruleDescr) of+                             { !_rhsOruleDescr ->+                             (case (_lhsIoptions) of+                              { !_rhsOoptions ->+                              (case (_lhsInt) of+                               { !_rhsOnt ->+                               (case (_lhsIcon) of+                                { !_rhsOcon ->+                                (case (_lhsIchildSyns) of+                                 { !_rhsOchildSyns ->+                                 (case (_lhsIchildInhs) of+                                  { !_rhsOchildInhs ->+                                  (case ((rhs_ _rhsOchildInhs _rhsOchildSyns _rhsOcon _rhsOnt _rhsOoptions _rhsOruleDescr)) of+                                   { ( !_rhsIerrors,!_rhsIoutput) ->+                                   (case (_patternIerrors Seq.<> _rhsIerrors) of+                                    { !_lhsOerrors ->+                                    (case (Rule _patternIoutput _rhsIoutput owrt_ origin_) of+                                     { !_output ->+                                     (case (_output) of+                                      { !_lhsOoutput ->+                                      ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+-- Rules -------------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         defsCollect          : Set (Identifier, Identifier)+   visit 1:+      inherited attributes:+         childInhs            : [(Identifier, Identifier)]+         childSyns            : [(Identifier, Identifier)]+         con                  : ConstructorIdent+         defs                 : Set (Identifier, Identifier)+         forcedIrrefutables   : AttrMap+         nt                   : NontermIdent+         options              : Options+      synthesized attributes:+         allAttributes        : AttrMap+         errors               : Seq Error+         output               : SELF+   alternatives:+      alternative Cons:+         child hd             : Rule+         child tl             : Rules+         visit 1:+            local output      : _+      alternative Nil:+         visit 1:+            local output      : _+-}+-- cata+sem_Rules :: Rules ->+             T_Rules+sem_Rules !list =+    (Prelude.foldr sem_Rules_Cons sem_Rules_Nil (Prelude.map sem_Rule list))+-- semantic domain+newtype T_Rules = T_Rules (( (Set (Identifier, Identifier)),T_Rules_1))+newtype T_Rules_1 = T_Rules_1 (([(Identifier, Identifier)]) ->+                               ([(Identifier, Identifier)]) ->+                               ConstructorIdent ->+                               (Set (Identifier, Identifier)) ->+                               AttrMap ->+                               NontermIdent ->+                               Options ->+                               ( AttrMap,(Seq Error),Rules))+data Inh_Rules = Inh_Rules {childInhs_Inh_Rules :: !([(Identifier, Identifier)]),childSyns_Inh_Rules :: !([(Identifier, Identifier)]),con_Inh_Rules :: !(ConstructorIdent),defs_Inh_Rules :: !(Set (Identifier, Identifier)),forcedIrrefutables_Inh_Rules :: !(AttrMap),nt_Inh_Rules :: !(NontermIdent),options_Inh_Rules :: !(Options)}+data Syn_Rules = Syn_Rules {allAttributes_Syn_Rules :: !(AttrMap),defsCollect_Syn_Rules :: !(Set (Identifier, Identifier)),errors_Syn_Rules :: !(Seq Error),output_Syn_Rules :: !(Rules)}+wrap_Rules !(T_Rules sem) !(Inh_Rules _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt _lhsIoptions) =+    (let ( !_lhsOdefsCollect,!T_Rules_1 sem_1) =+             (sem )+         ( !_lhsOallAttributes,!_lhsOerrors,!_lhsOoutput) =+             (sem_1 _lhsIchildInhs _lhsIchildSyns _lhsIcon _lhsIdefs _lhsIforcedIrrefutables _lhsInt _lhsIoptions)+     in  (Syn_Rules _lhsOallAttributes _lhsOdefsCollect _lhsOerrors _lhsOoutput))+sem_Rules_Cons :: T_Rule ->+                  T_Rules ->+                  T_Rules+sem_Rules_Cons !(T_Rule hd_) !(T_Rules tl_) =+    (T_Rules (case ((tl_ )) of+              { ( !_tlIdefsCollect,!T_Rules_1 tl_1) ->+              (case ((hd_ )) of+               { ( !_hdIdefsCollect,!T_Rule_1 hd_1) ->+               (case (_hdIdefsCollect `Set.union` _tlIdefsCollect) of+                { !_lhsOdefsCollect ->+                (case ((sem_Rules_Cons_1 (T_Rules_1 tl_1) (T_Rule_1 hd_1))) of+                 { ( !sem_Rules_1) ->+                 ( _lhsOdefsCollect,sem_Rules_1) }) }) }) }))+sem_Rules_Cons_1 :: T_Rules_1 ->+                    T_Rule_1 ->+                    T_Rules_1+sem_Rules_Cons_1 !(T_Rules_1 tl_1) !(T_Rule_1 hd_1) =+    (T_Rules_1 (\ (!_lhsIchildInhs)+                  (!_lhsIchildSyns)+                  (!_lhsIcon)+                  (!_lhsIdefs)+                  (!_lhsIforcedIrrefutables)+                  (!_lhsInt)+                  (!_lhsIoptions) ->+                    (case (_lhsInt) of+                     { !_tlOnt ->+                     (case (_lhsIcon) of+                      { !_tlOcon ->+                      (case (_lhsInt) of+                       { !_hdOnt ->+                       (case (_lhsIcon) of+                        { !_hdOcon ->+                        (case (_lhsIoptions) of+                         { !_tlOoptions ->+                         (case (_lhsIforcedIrrefutables) of+                          { !_tlOforcedIrrefutables ->+                          (case (_lhsIdefs) of+                           { !_tlOdefs ->+                           (case (_lhsIchildSyns) of+                            { !_tlOchildSyns ->+                            (case (_lhsIchildInhs) of+                             { !_tlOchildInhs ->+                             (case ((tl_1 _tlOchildInhs _tlOchildSyns _tlOcon _tlOdefs _tlOforcedIrrefutables _tlOnt _tlOoptions)) of+                              { ( !_tlIallAttributes,!_tlIerrors,!_tlIoutput) ->+                              (case (_lhsIoptions) of+                               { !_hdOoptions ->+                               (case (_lhsIforcedIrrefutables) of+                                { !_hdOforcedIrrefutables ->+                                (case (_lhsIdefs) of+                                 { !_hdOdefs ->+                                 (case (_lhsIchildSyns) of+                                  { !_hdOchildSyns ->+                                  (case (_lhsIchildInhs) of+                                   { !_hdOchildInhs ->+                                   (case ((hd_1 _hdOchildInhs _hdOchildSyns _hdOcon _hdOdefs _hdOforcedIrrefutables _hdOnt _hdOoptions)) of+                                    { ( !_hdIallAttributes,!_hdIerrors,!_hdIoutput) ->+                                    (case (_hdIallAttributes `mergeAttributes` _tlIallAttributes) of+                                     { !_lhsOallAttributes ->+                                     (case (_hdIerrors Seq.<> _tlIerrors) of+                                      { !_lhsOerrors ->+                                      (case ((:) _hdIoutput _tlIoutput) of+                                       { !_output ->+                                       (case (_output) of+                                        { !_lhsOoutput ->+                                        ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Rules_Nil :: T_Rules+sem_Rules_Nil  =+    (T_Rules (case (Set.empty) of+              { !_lhsOdefsCollect ->+              (case ((sem_Rules_Nil_1 )) of+               { ( !sem_Rules_1) ->+               ( _lhsOdefsCollect,sem_Rules_1) }) }))+sem_Rules_Nil_1 :: T_Rules_1+sem_Rules_Nil_1  =+    (T_Rules_1 (\ (!_lhsIchildInhs)+                  (!_lhsIchildSyns)+                  (!_lhsIcon)+                  (!_lhsIdefs)+                  (!_lhsIforcedIrrefutables)+                  (!_lhsInt)+                  (!_lhsIoptions) ->+                    (case (Map.empty) of+                     { !_lhsOallAttributes ->+                     (case (Seq.empty) of+                      { !_lhsOerrors ->+                      (case ([]) of+                       { !_output ->+                       (case (_output) of+                        { !_lhsOoutput ->+                        ( _lhsOallAttributes,_lhsOerrors,_lhsOoutput) }) }) }) })))+-- TypeSig -----------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         output               : SELF+   alternatives:+      alternative TypeSig:+         child name           : {Identifier}+         child tp             : {Type}+         visit 0:+            local output      : _+-}+-- cata+sem_TypeSig :: TypeSig ->+               T_TypeSig+sem_TypeSig !(TypeSig _name _tp) =+    (sem_TypeSig_TypeSig _name _tp)+-- semantic domain+newtype T_TypeSig = T_TypeSig (( TypeSig))+data Inh_TypeSig = Inh_TypeSig {}+data Syn_TypeSig = Syn_TypeSig {output_Syn_TypeSig :: !(TypeSig)}+wrap_TypeSig !(T_TypeSig sem) !(Inh_TypeSig ) =+    (let ( !_lhsOoutput) =+             (sem )+     in  (Syn_TypeSig _lhsOoutput))+sem_TypeSig_TypeSig :: Identifier ->+                       Type ->+                       T_TypeSig+sem_TypeSig_TypeSig !name_ !tp_ =+    (T_TypeSig (case (TypeSig name_ tp_) of+                { !_output ->+                (case (_output) of+                 { !_lhsOoutput ->+                 ( _lhsOoutput) }) }))+-- TypeSigs ----------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         output               : SELF+   alternatives:+      alternative Cons:+         child hd             : TypeSig+         child tl             : TypeSigs+         visit 0:+            local output      : _+      alternative Nil:+         visit 0:+            local output      : _+-}+-- cata+sem_TypeSigs :: TypeSigs ->+                T_TypeSigs+sem_TypeSigs !list =+    (Prelude.foldr sem_TypeSigs_Cons sem_TypeSigs_Nil (Prelude.map sem_TypeSig list))+-- semantic domain+newtype T_TypeSigs = T_TypeSigs (( TypeSigs))+data Inh_TypeSigs = Inh_TypeSigs {}+data Syn_TypeSigs = Syn_TypeSigs {output_Syn_TypeSigs :: !(TypeSigs)}+wrap_TypeSigs !(T_TypeSigs sem) !(Inh_TypeSigs ) =+    (let ( !_lhsOoutput) =+             (sem )+     in  (Syn_TypeSigs _lhsOoutput))+sem_TypeSigs_Cons :: T_TypeSig ->+                     T_TypeSigs ->+                     T_TypeSigs+sem_TypeSigs_Cons !(T_TypeSig hd_) !(T_TypeSigs tl_) =+    (T_TypeSigs (case ((tl_ )) of+                 { ( !_tlIoutput) ->+                 (case ((hd_ )) of+                  { ( !_hdIoutput) ->+                  (case ((:) _hdIoutput _tlIoutput) of+                   { !_output ->+                   (case (_output) of+                    { !_lhsOoutput ->+                    ( _lhsOoutput) }) }) }) }))+sem_TypeSigs_Nil :: T_TypeSigs+sem_TypeSigs_Nil  =+    (T_TypeSigs (case ([]) of+                 { !_output ->+                 (case (_output) of+                  { !_lhsOoutput ->+                  ( _lhsOoutput) }) }))
src-derived/ErrorMessages.hs view
@@ -56,6 +56,10 @@       alternative DupSynonym:          child nt             : {NontermIdent}          child occ1           : {NontermIdent}+      alternative DupUnique:+         child nt             : {NontermIdent}+         child con            : {ConstructorIdent}+         child attr           : {Identifier}       alternative InducedCirc:          child nt             : {NontermIdent}          child cinter         : {CInterface}@@ -85,6 +89,9 @@          child nt             : {NontermIdent}          child con            : {ConstructorIdent}          child attr           : {Identifier}+      alternative MissingUnique:+         child nt             : {NontermIdent}+         child attr           : {Identifier}       alternative ParserError:          child pos            : {Pos}          child problem        : {String}@@ -126,12 +133,14 @@            | DupSig (NontermIdent) (ConstructorIdent) (Identifier)            | DupSynAttr (NontermIdent) (Identifier) (Identifier)            | DupSynonym (NontermIdent) (NontermIdent)+           | DupUnique (NontermIdent) (ConstructorIdent) (Identifier)            | InducedCirc (NontermIdent) (CInterface) ([((Identifier,Identifier),[String],[String])])            | InstCirc (NontermIdent) (ConstructorIdent) (Identifier) (Bool) ([String])            | LocalCirc (NontermIdent) (ConstructorIdent) (Identifier) (Bool) ([String])            | MissingInstSig (NontermIdent) (ConstructorIdent) (Identifier)            | MissingRule (NontermIdent) (ConstructorIdent) (Identifier) (Identifier)            | MissingTypeSig (NontermIdent) (ConstructorIdent) (Identifier)+           | MissingUnique (NontermIdent) (Identifier)            | ParserError (Pos) (String) (String)            | SuperfluousRule (NontermIdent) (ConstructorIdent) (Identifier) (Identifier)            | UndefAlt (NontermIdent) (ConstructorIdent)
src-derived/Expression.hs view
@@ -1,4 +1,3 @@- -- UUAGC 0.9.5 (Expression.ag) module Expression where @@ -11,4 +10,4 @@          child pos            : {Pos}          child tks            : {[HsToken]} -}-data Expression = Expression (Pos) ([HsToken]) +data Expression = Expression (Pos) ([HsToken])
src-derived/GenerateCode.hs view
@@ -1,6 +1,7 @@ -- UUAGC 0.9.5 (GenerateCode.ag) module GenerateCode where +import CommonTypes import SequentialTypes import Code hiding (Type) import qualified Code@@ -171,6 +172,10 @@ typeName nt 0 = "T_" ++ show nt typeName nt n = "T_" ++ show nt ++ "_" ++ show n +ntOfVisit :: NontermIdent -> Int -> NontermIdent+ntOfVisit nt 0 = nt+ntOfVisit nt n = Ident (show nt ++ "_" ++ show n) (getPos nt)+ -- Gives the name of a visit function visitname  ::  String -> NontermIdent -> Int -> String visitname pre nt n =  pre ++ getName nt ++ "_" ++ show n@@ -202,8 +207,8 @@ -- semantic domain newtype T_CGrammar = T_CGrammar (Options ->                                  ( (Seq Error),Program))-data Inh_CGrammar = Inh_CGrammar {options_Inh_CGrammar :: Options}-data Syn_CGrammar = Syn_CGrammar {errors_Syn_CGrammar :: Seq Error,output_Syn_CGrammar :: Program}+data Inh_CGrammar = Inh_CGrammar {options_Inh_CGrammar :: !(Options)}+data Syn_CGrammar = Syn_CGrammar {errors_Syn_CGrammar :: !(Seq Error),output_Syn_CGrammar :: !(Program)} wrap_CGrammar (T_CGrammar sem) (Inh_CGrammar _lhsIoptions) =     (let ( _lhsOerrors,_lhsOoutput) =              (sem _lhsIoptions)@@ -236,6 +241,7 @@                           _nontsOallPragmas :: PragmaMap                           _nontsOparamMap :: ParamMap                           _nontsOcontextMap :: ContextMap+                          _nontsOallNts :: (Set NontermIdent)                           _nontsOwith_sig :: Bool                           _nontsOerrors :: (Seq Error)                           _lhsOoutput :: Program@@ -247,84 +253,88 @@                           _nontsIallTpsFound :: Bool                           _nontsIchunks :: Chunks                           _nontsIerrors :: (Seq Error)+                          _nontsIgathNts :: (Set NontermIdent)                           _nontsIsemDomUnfoldGath :: (Map (NontermIdent, Int) ([String], Code.Type))-                          -- "GenerateCode.ag"(line 46, column 17)+                          -- "GenerateCode.ag"(line 50, column 17)                           _nontsOo_sig =                               typeSigs      _lhsIoptions-                          -- "GenerateCode.ag"(line 46, column 17)+                          -- "GenerateCode.ag"(line 50, column 17)                           _nontsOo_cata =                               folds         _lhsIoptions-                          -- "GenerateCode.ag"(line 46, column 17)+                          -- "GenerateCode.ag"(line 50, column 17)                           _nontsOo_sem =                               semfuns       _lhsIoptions-                          -- "GenerateCode.ag"(line 46, column 17)+                          -- "GenerateCode.ag"(line 50, column 17)                           _nontsOo_newtypes =                               newtypes      _lhsIoptions-                          -- "GenerateCode.ag"(line 46, column 17)+                          -- "GenerateCode.ag"(line 50, column 17)                           _nontsOo_unbox =                               unbox         _lhsIoptions-                          -- "GenerateCode.ag"(line 46, column 17)+                          -- "GenerateCode.ag"(line 50, column 17)                           _nontsOo_case =                               cases         _lhsIoptions-                          -- "GenerateCode.ag"(line 46, column 17)+                          -- "GenerateCode.ag"(line 50, column 17)                           _nontsOo_pretty =                               attrInfo      _lhsIoptions-                          -- "GenerateCode.ag"(line 46, column 17)+                          -- "GenerateCode.ag"(line 50, column 17)                           _nontsOo_rename =                               rename        _lhsIoptions-                          -- "GenerateCode.ag"(line 46, column 17)+                          -- "GenerateCode.ag"(line 50, column 17)                           _nontsOo_strictwrap =                               strictWrap    _lhsIoptions-                          -- "GenerateCode.ag"(line 46, column 17)+                          -- "GenerateCode.ag"(line 50, column 17)                           _nontsOo_splitsems =                               splitSems     _lhsIoptions-                          -- "GenerateCode.ag"(line 46, column 17)+                          -- "GenerateCode.ag"(line 50, column 17)                           _nontsOo_data =                               if dataTypes _lhsIoptions then Just (strictData _lhsIoptions) else Nothing-                          -- "GenerateCode.ag"(line 46, column 17)+                          -- "GenerateCode.ag"(line 50, column 17)                           _nontsOprefix =                               prefix        _lhsIoptions-                          -- "GenerateCode.ag"(line 46, column 17)+                          -- "GenerateCode.ag"(line 50, column 17)                           _nontsOo_traces =                               genTraces     _lhsIoptions-                          -- "GenerateCode.ag"(line 46, column 17)+                          -- "GenerateCode.ag"(line 50, column 17)                           _nontsOo_costcentre =                               genCostCentres _lhsIoptions-                          -- "GenerateCode.ag"(line 46, column 17)+                          -- "GenerateCode.ag"(line 50, column 17)                           _nontsOo_linePragmas =                               genLinePragmas _lhsIoptions-                          -- "GenerateCode.ag"(line 65, column 15)+                          -- "GenerateCode.ag"(line 69, column 15)                           _nontsOallPragmas =                               pragmas_-                          -- "GenerateCode.ag"(line 87, column 14)+                          -- "GenerateCode.ag"(line 91, column 14)                           _nontsOparamMap =                               paramMap_-                          -- "GenerateCode.ag"(line 108, column 7)+                          -- "GenerateCode.ag"(line 112, column 7)                           _nontsOcontextMap =                               contextMap_-                          -- "GenerateCode.ag"(line 597, column 7)+                          -- "GenerateCode.ag"(line 124, column 7)+                          _nontsOallNts =+                              _nontsIgathNts+                          -- "GenerateCode.ag"(line 621, column 7)                           _unfoldSemDom =                               \nt nr repl ->-                               let (params, tp) = Map.findWithDefault (error "No such semantic domain") (nt, nr) _nontsIsemDomUnfoldGath+                               let (params, tp) = Map.findWithDefault (error ("No such semantic domain: " ++ show nt)) (nt, nr) _nontsIsemDomUnfoldGath                                    replMap = Map.fromList (zip params repl)-                                   replace k = Map.findWithDefault k k replMap+                                   replace k = Map.findWithDefault ('@':k) k replMap                                in evalType replace tp-                          -- "GenerateCode.ag"(line 690, column 14)+                          -- "GenerateCode.ag"(line 714, column 14)                           _nontsOwith_sig =                               typeSigs _lhsIoptions && _nontsIallTpsFound-                          -- "GenerateCode.ag"(line 697, column 15)+                          -- "GenerateCode.ag"(line 721, column 15)                           _nontsOerrors =                               Seq.empty-                          -- "GenerateCode.ag"(line 761, column 17)+                          -- "GenerateCode.ag"(line 785, column 17)                           _lhsOoutput =                               Program _nontsIchunks-                          -- "GenerateCode.ag"(line 810, column 14)+                          -- "GenerateCode.ag"(line 838, column 14)                           _nontsOtypeSyns =                               typeSyns_-                          -- "GenerateCode.ag"(line 810, column 14)+                          -- "GenerateCode.ag"(line 838, column 14)                           _nontsOderivings =                               derivings_-                          -- "GenerateCode.ag"(line 810, column 14)+                          -- "GenerateCode.ag"(line 838, column 14)                           _nontsOwrappers =                               wrappers_                           -- copy rule (up)@@ -333,8 +343,8 @@                           -- copy rule (from local)                           _nontsOunfoldSemDom =                               _unfoldSemDom-                          ( _nontsIallTpsFound,_nontsIchunks,_nontsIerrors,_nontsIsemDomUnfoldGath) =-                              (nonts_ _nontsOallPragmas _nontsOcontextMap _nontsOderivings _nontsOerrors _nontsOo_case _nontsOo_cata _nontsOo_costcentre _nontsOo_data _nontsOo_linePragmas _nontsOo_newtypes _nontsOo_pretty _nontsOo_rename _nontsOo_sem _nontsOo_sig _nontsOo_splitsems _nontsOo_strictwrap _nontsOo_traces _nontsOo_unbox _nontsOparamMap _nontsOprefix _nontsOtypeSyns _nontsOunfoldSemDom _nontsOwith_sig _nontsOwrappers)+                          ( _nontsIallTpsFound,_nontsIchunks,_nontsIerrors,_nontsIgathNts,_nontsIsemDomUnfoldGath) =+                              (nonts_ _nontsOallNts _nontsOallPragmas _nontsOcontextMap _nontsOderivings _nontsOerrors _nontsOo_case _nontsOo_cata _nontsOo_costcentre _nontsOo_data _nontsOo_linePragmas _nontsOo_newtypes _nontsOo_pretty _nontsOo_rename _nontsOo_sem _nontsOo_sig _nontsOo_splitsems _nontsOo_strictwrap _nontsOo_traces _nontsOo_unbox _nontsOparamMap _nontsOprefix _nontsOtypeSyns _nontsOunfoldSemDom _nontsOwith_sig _nontsOwrappers)                       in  ( _lhsOerrors,_lhsOoutput)))) -- CInterface -------------------------------------------------- {-@@ -394,8 +404,8 @@                                      String ->                                      Attributes ->                                      ( ([String]),([Decl]),(Map (NontermIdent, Int) ([String], Code.Type)),Decls))-data Inh_CInterface = Inh_CInterface {inh_Inh_CInterface :: Attributes,nt_Inh_CInterface :: NontermIdent,o_case_Inh_CInterface :: Bool,o_cata_Inh_CInterface :: Bool,o_costcentre_Inh_CInterface :: Bool,o_data_Inh_CInterface :: Maybe Bool,o_linePragmas_Inh_CInterface :: Bool,o_newtypes_Inh_CInterface :: Bool,o_pretty_Inh_CInterface :: Bool,o_rename_Inh_CInterface :: Bool,o_sem_Inh_CInterface :: Bool,o_sig_Inh_CInterface :: Bool,o_splitsems_Inh_CInterface :: Bool,o_strictwrap_Inh_CInterface :: Bool,o_traces_Inh_CInterface :: Bool,o_unbox_Inh_CInterface :: Bool,paramMap_Inh_CInterface :: ParamMap,prefix_Inh_CInterface :: String,syn_Inh_CInterface :: Attributes}-data Syn_CInterface = Syn_CInterface {comments_Syn_CInterface :: [String],semDom_Syn_CInterface :: [Decl],semDomUnfoldGath_Syn_CInterface :: Map (NontermIdent, Int) ([String], Code.Type),wrapDecls_Syn_CInterface :: Decls}+data Inh_CInterface = Inh_CInterface {inh_Inh_CInterface :: !(Attributes),nt_Inh_CInterface :: !(NontermIdent),o_case_Inh_CInterface :: !(Bool),o_cata_Inh_CInterface :: !(Bool),o_costcentre_Inh_CInterface :: !(Bool),o_data_Inh_CInterface :: !(Maybe Bool),o_linePragmas_Inh_CInterface :: !(Bool),o_newtypes_Inh_CInterface :: !(Bool),o_pretty_Inh_CInterface :: !(Bool),o_rename_Inh_CInterface :: !(Bool),o_sem_Inh_CInterface :: !(Bool),o_sig_Inh_CInterface :: !(Bool),o_splitsems_Inh_CInterface :: !(Bool),o_strictwrap_Inh_CInterface :: !(Bool),o_traces_Inh_CInterface :: !(Bool),o_unbox_Inh_CInterface :: !(Bool),paramMap_Inh_CInterface :: !(ParamMap),prefix_Inh_CInterface :: !(String),syn_Inh_CInterface :: !(Attributes)}+data Syn_CInterface = Syn_CInterface {comments_Syn_CInterface :: !([String]),semDom_Syn_CInterface :: !([Decl]),semDomUnfoldGath_Syn_CInterface :: !(Map (NontermIdent, Int) ([String], Code.Type)),wrapDecls_Syn_CInterface :: !(Decls)} wrap_CInterface (T_CInterface sem) (Inh_CInterface _lhsIinh _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsIsyn) =     (let ( _lhsOcomments,_lhsOsemDom,_lhsOsemDomUnfoldGath,_lhsOwrapDecls) =              (sem _lhsIinh _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsIsyn)@@ -451,19 +461,19 @@                             _segIsemDom :: ([Decl])                             _segIsemDomUnfoldGath :: (Map (NontermIdent, Int) ([String], Code.Type))                             _segIwrapDecls :: Decls-                            -- "GenerateCode.ag"(line 198, column 17)+                            -- "GenerateCode.ag"(line 218, column 17)                             _segOnr =                                 0-                            -- "GenerateCode.ag"(line 570, column 18)+                            -- "GenerateCode.ag"(line 594, column 18)                             _lhsOsemDom =                                 Comment "semantic domain" : _segIsemDom-                            -- use rule "GenerateCode.ag"(line 714, column 52)+                            -- use rule "GenerateCode.ag"(line 738, column 52)                             _lhsOcomments =                                 _segIcomments-                            -- use rule "GenerateCode.ag"(line 587, column 86)+                            -- use rule "GenerateCode.ag"(line 611, column 86)                             _lhsOsemDomUnfoldGath =                                 _segIsemDomUnfoldGath-                            -- use rule "GenerateCode.ag"(line 663, column 52)+                            -- use rule "GenerateCode.ag"(line 687, column 52)                             _lhsOwrapDecls =                                 _segIwrapDecls                             -- copy rule (down)@@ -530,6 +540,7 @@ {-    visit 0:       inherited attributes:+         allNts               : Set NontermIdent          allPragmas           : PragmaMap          contextMap           : ContextMap          derivings            : Derivings@@ -558,6 +569,7 @@       synthesized attributes:          allTpsFound          : Bool          chunks               : Chunks+         gathNts              : Set NontermIdent          semDomUnfoldGath     : Map (NontermIdent, Int) ([String], Code.Type)    alternatives:       alternative CNonterminal:@@ -581,7 +593,8 @@ sem_CNonterminal (CNonterminal _nt _params _inh _syn _prods _inter) =     (sem_CNonterminal_CNonterminal _nt _params _inh _syn (sem_CProductions _prods) (sem_CInterface _inter)) -- semantic domain-newtype T_CNonterminal = T_CNonterminal (PragmaMap ->+newtype T_CNonterminal = T_CNonterminal ((Set NontermIdent) ->+                                         PragmaMap ->                                          ContextMap ->                                          Derivings ->                                          (Seq Error) ->@@ -605,13 +618,13 @@                                          (NontermIdent -> Int -> [String] -> Code.Type) ->                                          Bool ->                                          (Set NontermIdent) ->-                                         ( Bool,Chunks,(Seq Error),(Map (NontermIdent, Int) ([String], Code.Type))))-data Inh_CNonterminal = Inh_CNonterminal {allPragmas_Inh_CNonterminal :: PragmaMap,contextMap_Inh_CNonterminal :: ContextMap,derivings_Inh_CNonterminal :: Derivings,errors_Inh_CNonterminal :: Seq Error,o_case_Inh_CNonterminal :: Bool,o_cata_Inh_CNonterminal :: Bool,o_costcentre_Inh_CNonterminal :: Bool,o_data_Inh_CNonterminal :: Maybe Bool,o_linePragmas_Inh_CNonterminal :: Bool,o_newtypes_Inh_CNonterminal :: Bool,o_pretty_Inh_CNonterminal :: Bool,o_rename_Inh_CNonterminal :: Bool,o_sem_Inh_CNonterminal :: Bool,o_sig_Inh_CNonterminal :: Bool,o_splitsems_Inh_CNonterminal :: Bool,o_strictwrap_Inh_CNonterminal :: Bool,o_traces_Inh_CNonterminal :: Bool,o_unbox_Inh_CNonterminal :: Bool,paramMap_Inh_CNonterminal :: ParamMap,prefix_Inh_CNonterminal :: String,typeSyns_Inh_CNonterminal :: TypeSyns,unfoldSemDom_Inh_CNonterminal :: NontermIdent -> Int -> [String] -> Code.Type,with_sig_Inh_CNonterminal :: Bool,wrappers_Inh_CNonterminal :: Set NontermIdent}-data Syn_CNonterminal = Syn_CNonterminal {allTpsFound_Syn_CNonterminal :: Bool,chunks_Syn_CNonterminal :: Chunks,errors_Syn_CNonterminal :: Seq Error,semDomUnfoldGath_Syn_CNonterminal :: Map (NontermIdent, Int) ([String], Code.Type)}-wrap_CNonterminal (T_CNonterminal sem) (Inh_CNonterminal _lhsIallPragmas _lhsIcontextMap _lhsIderivings _lhsIerrors _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsItypeSyns _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers) =-    (let ( _lhsOallTpsFound,_lhsOchunks,_lhsOerrors,_lhsOsemDomUnfoldGath) =-             (sem _lhsIallPragmas _lhsIcontextMap _lhsIderivings _lhsIerrors _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsItypeSyns _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers)-     in  (Syn_CNonterminal _lhsOallTpsFound _lhsOchunks _lhsOerrors _lhsOsemDomUnfoldGath))+                                         ( Bool,Chunks,(Seq Error),(Set NontermIdent),(Map (NontermIdent, Int) ([String], Code.Type))))+data Inh_CNonterminal = Inh_CNonterminal {allNts_Inh_CNonterminal :: !(Set NontermIdent),allPragmas_Inh_CNonterminal :: !(PragmaMap),contextMap_Inh_CNonterminal :: !(ContextMap),derivings_Inh_CNonterminal :: !(Derivings),errors_Inh_CNonterminal :: !(Seq Error),o_case_Inh_CNonterminal :: !(Bool),o_cata_Inh_CNonterminal :: !(Bool),o_costcentre_Inh_CNonterminal :: !(Bool),o_data_Inh_CNonterminal :: !(Maybe Bool),o_linePragmas_Inh_CNonterminal :: !(Bool),o_newtypes_Inh_CNonterminal :: !(Bool),o_pretty_Inh_CNonterminal :: !(Bool),o_rename_Inh_CNonterminal :: !(Bool),o_sem_Inh_CNonterminal :: !(Bool),o_sig_Inh_CNonterminal :: !(Bool),o_splitsems_Inh_CNonterminal :: !(Bool),o_strictwrap_Inh_CNonterminal :: !(Bool),o_traces_Inh_CNonterminal :: !(Bool),o_unbox_Inh_CNonterminal :: !(Bool),paramMap_Inh_CNonterminal :: !(ParamMap),prefix_Inh_CNonterminal :: !(String),typeSyns_Inh_CNonterminal :: !(TypeSyns),unfoldSemDom_Inh_CNonterminal :: !(NontermIdent -> Int -> [String] -> Code.Type),with_sig_Inh_CNonterminal :: !(Bool),wrappers_Inh_CNonterminal :: !(Set NontermIdent)}+data Syn_CNonterminal = Syn_CNonterminal {allTpsFound_Syn_CNonterminal :: !(Bool),chunks_Syn_CNonterminal :: !(Chunks),errors_Syn_CNonterminal :: !(Seq Error),gathNts_Syn_CNonterminal :: !(Set NontermIdent),semDomUnfoldGath_Syn_CNonterminal :: !(Map (NontermIdent, Int) ([String], Code.Type))}+wrap_CNonterminal (T_CNonterminal sem) (Inh_CNonterminal _lhsIallNts _lhsIallPragmas _lhsIcontextMap _lhsIderivings _lhsIerrors _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsItypeSyns _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers) =+    (let ( _lhsOallTpsFound,_lhsOchunks,_lhsOerrors,_lhsOgathNts,_lhsOsemDomUnfoldGath) =+             (sem _lhsIallNts _lhsIallPragmas _lhsIcontextMap _lhsIderivings _lhsIerrors _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsItypeSyns _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers)+     in  (Syn_CNonterminal _lhsOallTpsFound _lhsOchunks _lhsOerrors _lhsOgathNts _lhsOsemDomUnfoldGath)) sem_CNonterminal_CNonterminal :: NontermIdent ->                                  ([Identifier]) ->                                  Attributes ->@@ -620,7 +633,8 @@                                  T_CInterface ->                                  T_CNonterminal sem_CNonterminal_CNonterminal nt_ params_ inh_ syn_ (T_CProductions prods_) (T_CInterface inter_) =-    (T_CNonterminal (\ _lhsIallPragmas+    (T_CNonterminal (\ _lhsIallNts+                       _lhsIallPragmas                        _lhsIcontextMap                        _lhsIderivings                        _lhsIerrors@@ -652,10 +666,12 @@                               _prodsOinh :: Attributes                               _prodsOsyn :: Attributes                               _prodsOnt :: NontermIdent+                              _lhsOgathNts :: (Set NontermIdent)                               _lhsOchunks :: Chunks                               _lhsOallTpsFound :: Bool                               _lhsOerrors :: (Seq Error)                               _lhsOsemDomUnfoldGath :: (Map (NontermIdent, Int) ([String], Code.Type))+                              _prodsOallNts :: (Set NontermIdent)                               _prodsOallPragmas :: PragmaMap                               _prodsOcontextMap :: ContextMap                               _prodsOerrors :: (Seq Error)@@ -704,31 +720,34 @@                               _interIsemDom :: ([Decl])                               _interIsemDomUnfoldGath :: (Map (NontermIdent, Int) ([String], Code.Type))                               _interIwrapDecls :: Decls-                              -- "GenerateCode.ag"(line 75, column 26)+                              -- "GenerateCode.ag"(line 79, column 26)                               __tup1 =                                   (inh_,syn_,nt_)-                              -- "GenerateCode.ag"(line 75, column 26)+                              -- "GenerateCode.ag"(line 79, column 26)                               (_interOinh,_,_) =                                   __tup1-                              -- "GenerateCode.ag"(line 75, column 26)+                              -- "GenerateCode.ag"(line 79, column 26)                               (_,_interOsyn,_) =                                   __tup1-                              -- "GenerateCode.ag"(line 75, column 26)+                              -- "GenerateCode.ag"(line 79, column 26)                               (_,_,_interOnt) =                                   __tup1-                              -- "GenerateCode.ag"(line 76, column 25)+                              -- "GenerateCode.ag"(line 80, column 25)                               __tup2 =                                   (inh_,syn_,nt_)-                              -- "GenerateCode.ag"(line 76, column 25)+                              -- "GenerateCode.ag"(line 80, column 25)                               (_prodsOinh,_,_) =                                   __tup2-                              -- "GenerateCode.ag"(line 76, column 25)+                              -- "GenerateCode.ag"(line 80, column 25)                               (_,_prodsOsyn,_) =                                   __tup2-                              -- "GenerateCode.ag"(line 76, column 25)+                              -- "GenerateCode.ag"(line 80, column 25)                               (_,_,_prodsOnt) =                                   __tup2-                              -- "GenerateCode.ag"(line 635, column 18)+                              -- "GenerateCode.ag"(line 130, column 7)+                              _lhsOgathNts =+                                  Set.singleton nt_+                              -- "GenerateCode.ag"(line 659, column 18)                               _semWrapper =                                   let params' = map getName params_                                       inhAttrs = Map.toList inh_@@ -756,10 +775,10 @@                                                     (Let _interIwrapDecls (App synNT synVars))                                                     Set.empty Set.empty                                               ]-                              -- "GenerateCode.ag"(line 710, column 18)+                              -- "GenerateCode.ag"(line 734, column 18)                               _comment =                                   Comment . unlines . map ind $ ( _interIcomments ++ ("alternatives:" : map ind _prodsIcomments) )-                              -- "GenerateCode.ag"(line 764, column 19)+                              -- "GenerateCode.ag"(line 788, column 19)                               _lhsOchunks =                                   [ Chunk (getName nt_)                                          (Comment (getName nt_ ++ " " ++ replicate (60 - length (getName nt_)) '-'))@@ -771,21 +790,26 @@                                          (if _lhsIo_sem                     then  _prodsIdecls     else [])                                          (if _lhsIo_sem                     then  _prodsIsemNames  else [])                                   ]-                              -- "GenerateCode.ag"(line 815, column 18)+                              -- "GenerateCode.ag"(line 843, column 18)                               _dataDef =                                   let params' = map getName params_                                       typeSyn tp = let theType =                                                          case tp of-                                                           CommonTypes.Maybe t  -> SimpleType ("Maybe (" ++ typeToHaskellString (Just nt_) params' t ++")")-                                                           CommonTypes.List t   -> Code.List $ SimpleType (typeToHaskellString (Just nt_) params' t)-                                                           CommonTypes.Tuple ts -> Code.TupleType [SimpleType (typeToHaskellString (Just nt_) params' t)+                                                           CommonTypes.Maybe t      -> SimpleType ("Maybe (" ++ typeToHaskellString (Just nt_) params' t ++")")+                                                           CommonTypes.Either t1 t2 -> SimpleType ("Either (" ++ typeToHaskellString (Just nt_) params' t1 ++") ("+                                                                                                              ++ typeToHaskellString (Just nt_) params' t2 ++")")+                                                           CommonTypes.Map t1 t2    -> SimpleType ("Map (" ++ typeToHaskellString (Just nt_) params' t1 ++") ("+                                                                                                           ++ typeToHaskellString (Just nt_) params' t2 ++")")+                                                           CommonTypes.IntMap t     -> SimpleType ("IntMap (" ++ typeToHaskellString (Just nt_) params' t ++")")+                                                           CommonTypes.List t       -> Code.List $ SimpleType (typeToHaskellString (Just nt_) params' t)+                                                           CommonTypes.Tuple ts     -> Code.TupleType [SimpleType (typeToHaskellString (Just nt_) params' t)                                                                                                   | (_,t) <- ts                                                                                                   ]-                                                    in Code.Type (getName nt_) params' theType+                                                    in Code.Type (getName nt_) params' (idEvalType theType)                                       derivings  = maybe [] (map getName . Set.toList) (Map.lookup nt_ _lhsIderivings)                                       dataDef    = Data (getName nt_) (map getName params_) _prodsIdataAlts (maybe False id _lhsIo_data) derivings                                   in maybe dataDef typeSyn $ lookup nt_ _lhsItypeSyns-                              -- "GenerateCode.ag"(line 844, column 18)+                              -- "GenerateCode.ag"(line 877, column 18)                               _cataFun =                                   let appParams nm = TypeApp (SimpleType nm) (map SimpleType (map getName params_))                                       evalTp | null params_ = id@@ -814,6 +838,40 @@                                                         in  [Decl (lhs (App "Prelude.Just" [arg]))     (App just [rarg])    Set.empty Set.empty                                                             ,Decl (lhs (SimpleExpr "Prelude.Nothing")) (SimpleExpr nothing) Set.empty Set.empty                                                             ]+                                                    CommonTypes.Either tp1 tp2 ->+                                                        let left  = semname _lhsIprefix nt_ (identifier "Left")+                                                            right = semname _lhsIprefix nt_ (identifier "Right" )+                                                            arg   = SimpleExpr "x"+                                                            rarg0 = case tp1 of+                                                                     NT t _ -> App (cataname _lhsIprefix t) [arg]+                                                                     _      -> arg+                                                            rarg1 = case tp2 of+                                                                     NT t _ -> App (cataname _lhsIprefix t) [arg]+                                                                     _      -> arg+                                                            lhs a = Fun (cataname _lhsIprefix nt_) [a]+                                                        in  [Decl (lhs (App "Prelude.Left"  [arg]))     (App left  [rarg0])    Set.empty Set.empty+                                                            ,Decl (lhs (App "Prelude.Right" [arg]))     (App right [rarg1])    Set.empty Set.empty+                                                            ]+                                                    CommonTypes.Map _ tp ->+                                                      let entry = SimpleExpr (semname _lhsIprefix nt_ (identifier "Entry"))+                                                          nil   = SimpleExpr (semname _lhsIprefix nt_ (identifier "Nil"))+                                                          arg   = SimpleExpr "m"+                                                          rarg  = case tp of+                                                                    NT t _ -> App "Map.map" [SimpleExpr $ cataname _lhsIprefix t, arg]+                                                                    _      -> arg+                                                          lhs   = Fun (cataname _lhsIprefix nt_) [arg]+                                                          rhs   = App "Map.foldWithKey" [entry,nil,rarg]+                                                      in [Decl lhs rhs Set.empty Set.empty]+                                                    CommonTypes.IntMap tp ->+                                                      let entry = SimpleExpr (semname _lhsIprefix nt_ (identifier "Entry"))+                                                          nil   = SimpleExpr (semname _lhsIprefix nt_ (identifier "Nil"))+                                                          arg   = SimpleExpr "m"+                                                          rarg  = case tp of+                                                                    NT t _ -> App "IntMap.map" [SimpleExpr $ cataname _lhsIprefix t, arg]+                                                                    _      -> arg+                                                          lhs   = Fun (cataname _lhsIprefix nt_) [arg]+                                                          rhs   = App "IntMap.foldWithKey" [entry,nil,rarg]+                                                      in [Decl lhs rhs Set.empty Set.empty]                                                     CommonTypes.Tuple tps ->                                                         let con  = semname _lhsIprefix nt_ (identifier "Tuple")                                                             tps' = [ (SimpleExpr (getName x),y) | (x,y) <- tps]@@ -827,16 +885,19 @@                                   in  Comment "cata" :                                       (if _lhsIo_sig then [tSig] else []) ++                                       maybe _prodsIcataAlts special (lookup nt_ _lhsItypeSyns)-                              -- use rule "GenerateCode.ag"(line 682, column 39)+                              -- use rule "GenerateCode.ag"(line 706, column 39)                               _lhsOallTpsFound =                                   _prodsIallTpsFound-                              -- use rule "GenerateCode.ag"(line 695, column 32)+                              -- use rule "GenerateCode.ag"(line 719, column 32)                               _lhsOerrors =                                   _prodsIerrors-                              -- use rule "GenerateCode.ag"(line 587, column 86)+                              -- use rule "GenerateCode.ag"(line 611, column 86)                               _lhsOsemDomUnfoldGath =                                   _interIsemDomUnfoldGath                               -- copy rule (down)+                              _prodsOallNts =+                                  _lhsIallNts+                              -- copy rule (down)                               _prodsOallPragmas =                                   _lhsIallPragmas                               -- copy rule (down)@@ -948,14 +1009,15 @@                               _interOprefix =                                   _lhsIprefix                               ( _prodsIallTpsFound,_prodsIcataAlts,_prodsIcomments,_prodsIdataAlts,_prodsIdecls,_prodsIerrors,_prodsIsemNames) =-                                  (prods_ _prodsOallPragmas _prodsOcontextMap _prodsOerrors _prodsOinh _prodsOnt _prodsOo_case _prodsOo_cata _prodsOo_costcentre _prodsOo_data _prodsOo_linePragmas _prodsOo_newtypes _prodsOo_pretty _prodsOo_rename _prodsOo_sem _prodsOo_sig _prodsOo_splitsems _prodsOo_strictwrap _prodsOo_traces _prodsOo_unbox _prodsOparamMap _prodsOprefix _prodsOsyn _prodsOunfoldSemDom _prodsOwith_sig)+                                  (prods_ _prodsOallNts _prodsOallPragmas _prodsOcontextMap _prodsOerrors _prodsOinh _prodsOnt _prodsOo_case _prodsOo_cata _prodsOo_costcentre _prodsOo_data _prodsOo_linePragmas _prodsOo_newtypes _prodsOo_pretty _prodsOo_rename _prodsOo_sem _prodsOo_sig _prodsOo_splitsems _prodsOo_strictwrap _prodsOo_traces _prodsOo_unbox _prodsOparamMap _prodsOprefix _prodsOsyn _prodsOunfoldSemDom _prodsOwith_sig)                               ( _interIcomments,_interIsemDom,_interIsemDomUnfoldGath,_interIwrapDecls) =                                   (inter_ _interOinh _interOnt _interOo_case _interOo_cata _interOo_costcentre _interOo_data _interOo_linePragmas _interOo_newtypes _interOo_pretty _interOo_rename _interOo_sem _interOo_sig _interOo_splitsems _interOo_strictwrap _interOo_traces _interOo_unbox _interOparamMap _interOprefix _interOsyn)-                          in  ( _lhsOallTpsFound,_lhsOchunks,_lhsOerrors,_lhsOsemDomUnfoldGath))))+                          in  ( _lhsOallTpsFound,_lhsOchunks,_lhsOerrors,_lhsOgathNts,_lhsOsemDomUnfoldGath)))) -- CNonterminals ----------------------------------------------- {-    visit 0:       inherited attributes:+         allNts               : Set NontermIdent          allPragmas           : PragmaMap          contextMap           : ContextMap          derivings            : Derivings@@ -984,6 +1046,7 @@       synthesized attributes:          allTpsFound          : Bool          chunks               : Chunks+         gathNts              : Set NontermIdent          semDomUnfoldGath     : Map (NontermIdent, Int) ([String], Code.Type)    alternatives:       alternative Cons:@@ -997,7 +1060,8 @@ sem_CNonterminals list =     (Prelude.foldr sem_CNonterminals_Cons sem_CNonterminals_Nil (Prelude.map sem_CNonterminal list)) -- semantic domain-newtype T_CNonterminals = T_CNonterminals (PragmaMap ->+newtype T_CNonterminals = T_CNonterminals ((Set NontermIdent) ->+                                           PragmaMap ->                                            ContextMap ->                                            Derivings ->                                            (Seq Error) ->@@ -1021,18 +1085,19 @@                                            (NontermIdent -> Int -> [String] -> Code.Type) ->                                            Bool ->                                            (Set NontermIdent) ->-                                           ( Bool,Chunks,(Seq Error),(Map (NontermIdent, Int) ([String], Code.Type))))-data Inh_CNonterminals = Inh_CNonterminals {allPragmas_Inh_CNonterminals :: PragmaMap,contextMap_Inh_CNonterminals :: ContextMap,derivings_Inh_CNonterminals :: Derivings,errors_Inh_CNonterminals :: Seq Error,o_case_Inh_CNonterminals :: Bool,o_cata_Inh_CNonterminals :: Bool,o_costcentre_Inh_CNonterminals :: Bool,o_data_Inh_CNonterminals :: Maybe Bool,o_linePragmas_Inh_CNonterminals :: Bool,o_newtypes_Inh_CNonterminals :: Bool,o_pretty_Inh_CNonterminals :: Bool,o_rename_Inh_CNonterminals :: Bool,o_sem_Inh_CNonterminals :: Bool,o_sig_Inh_CNonterminals :: Bool,o_splitsems_Inh_CNonterminals :: Bool,o_strictwrap_Inh_CNonterminals :: Bool,o_traces_Inh_CNonterminals :: Bool,o_unbox_Inh_CNonterminals :: Bool,paramMap_Inh_CNonterminals :: ParamMap,prefix_Inh_CNonterminals :: String,typeSyns_Inh_CNonterminals :: TypeSyns,unfoldSemDom_Inh_CNonterminals :: NontermIdent -> Int -> [String] -> Code.Type,with_sig_Inh_CNonterminals :: Bool,wrappers_Inh_CNonterminals :: Set NontermIdent}-data Syn_CNonterminals = Syn_CNonterminals {allTpsFound_Syn_CNonterminals :: Bool,chunks_Syn_CNonterminals :: Chunks,errors_Syn_CNonterminals :: Seq Error,semDomUnfoldGath_Syn_CNonterminals :: Map (NontermIdent, Int) ([String], Code.Type)}-wrap_CNonterminals (T_CNonterminals sem) (Inh_CNonterminals _lhsIallPragmas _lhsIcontextMap _lhsIderivings _lhsIerrors _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsItypeSyns _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers) =-    (let ( _lhsOallTpsFound,_lhsOchunks,_lhsOerrors,_lhsOsemDomUnfoldGath) =-             (sem _lhsIallPragmas _lhsIcontextMap _lhsIderivings _lhsIerrors _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsItypeSyns _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers)-     in  (Syn_CNonterminals _lhsOallTpsFound _lhsOchunks _lhsOerrors _lhsOsemDomUnfoldGath))+                                           ( Bool,Chunks,(Seq Error),(Set NontermIdent),(Map (NontermIdent, Int) ([String], Code.Type))))+data Inh_CNonterminals = Inh_CNonterminals {allNts_Inh_CNonterminals :: !(Set NontermIdent),allPragmas_Inh_CNonterminals :: !(PragmaMap),contextMap_Inh_CNonterminals :: !(ContextMap),derivings_Inh_CNonterminals :: !(Derivings),errors_Inh_CNonterminals :: !(Seq Error),o_case_Inh_CNonterminals :: !(Bool),o_cata_Inh_CNonterminals :: !(Bool),o_costcentre_Inh_CNonterminals :: !(Bool),o_data_Inh_CNonterminals :: !(Maybe Bool),o_linePragmas_Inh_CNonterminals :: !(Bool),o_newtypes_Inh_CNonterminals :: !(Bool),o_pretty_Inh_CNonterminals :: !(Bool),o_rename_Inh_CNonterminals :: !(Bool),o_sem_Inh_CNonterminals :: !(Bool),o_sig_Inh_CNonterminals :: !(Bool),o_splitsems_Inh_CNonterminals :: !(Bool),o_strictwrap_Inh_CNonterminals :: !(Bool),o_traces_Inh_CNonterminals :: !(Bool),o_unbox_Inh_CNonterminals :: !(Bool),paramMap_Inh_CNonterminals :: !(ParamMap),prefix_Inh_CNonterminals :: !(String),typeSyns_Inh_CNonterminals :: !(TypeSyns),unfoldSemDom_Inh_CNonterminals :: !(NontermIdent -> Int -> [String] -> Code.Type),with_sig_Inh_CNonterminals :: !(Bool),wrappers_Inh_CNonterminals :: !(Set NontermIdent)}+data Syn_CNonterminals = Syn_CNonterminals {allTpsFound_Syn_CNonterminals :: !(Bool),chunks_Syn_CNonterminals :: !(Chunks),errors_Syn_CNonterminals :: !(Seq Error),gathNts_Syn_CNonterminals :: !(Set NontermIdent),semDomUnfoldGath_Syn_CNonterminals :: !(Map (NontermIdent, Int) ([String], Code.Type))}+wrap_CNonterminals (T_CNonterminals sem) (Inh_CNonterminals _lhsIallNts _lhsIallPragmas _lhsIcontextMap _lhsIderivings _lhsIerrors _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsItypeSyns _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers) =+    (let ( _lhsOallTpsFound,_lhsOchunks,_lhsOerrors,_lhsOgathNts,_lhsOsemDomUnfoldGath) =+             (sem _lhsIallNts _lhsIallPragmas _lhsIcontextMap _lhsIderivings _lhsIerrors _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsItypeSyns _lhsIunfoldSemDom _lhsIwith_sig _lhsIwrappers)+     in  (Syn_CNonterminals _lhsOallTpsFound _lhsOchunks _lhsOerrors _lhsOgathNts _lhsOsemDomUnfoldGath)) sem_CNonterminals_Cons :: T_CNonterminal ->                           T_CNonterminals ->                           T_CNonterminals sem_CNonterminals_Cons (T_CNonterminal hd_) (T_CNonterminals tl_) =-    (T_CNonterminals (\ _lhsIallPragmas+    (T_CNonterminals (\ _lhsIallNts+                        _lhsIallPragmas                         _lhsIcontextMap                         _lhsIderivings                         _lhsIerrors@@ -1059,7 +1124,9 @@                           (let _lhsOallTpsFound :: Bool                                _lhsOchunks :: Chunks                                _lhsOerrors :: (Seq Error)+                               _lhsOgathNts :: (Set NontermIdent)                                _lhsOsemDomUnfoldGath :: (Map (NontermIdent, Int) ([String], Code.Type))+                               _hdOallNts :: (Set NontermIdent)                                _hdOallPragmas :: PragmaMap                                _hdOcontextMap :: ContextMap                                _hdOderivings :: Derivings@@ -1084,6 +1151,7 @@                                _hdOunfoldSemDom :: (NontermIdent -> Int -> [String] -> Code.Type)                                _hdOwith_sig :: Bool                                _hdOwrappers :: (Set NontermIdent)+                               _tlOallNts :: (Set NontermIdent)                                _tlOallPragmas :: PragmaMap                                _tlOcontextMap :: ContextMap                                _tlOderivings :: Derivings@@ -1111,24 +1179,32 @@                                _hdIallTpsFound :: Bool                                _hdIchunks :: Chunks                                _hdIerrors :: (Seq Error)+                               _hdIgathNts :: (Set NontermIdent)                                _hdIsemDomUnfoldGath :: (Map (NontermIdent, Int) ([String], Code.Type))                                _tlIallTpsFound :: Bool                                _tlIchunks :: Chunks                                _tlIerrors :: (Seq Error)+                               _tlIgathNts :: (Set NontermIdent)                                _tlIsemDomUnfoldGath :: (Map (NontermIdent, Int) ([String], Code.Type))-                               -- use rule "GenerateCode.ag"(line 682, column 39)+                               -- use rule "GenerateCode.ag"(line 706, column 39)                                _lhsOallTpsFound =                                    _hdIallTpsFound && _tlIallTpsFound-                               -- use rule "GenerateCode.ag"(line 756, column 49)+                               -- use rule "GenerateCode.ag"(line 780, column 49)                                _lhsOchunks =                                    _hdIchunks ++ _tlIchunks-                               -- use rule "GenerateCode.ag"(line 695, column 32)+                               -- use rule "GenerateCode.ag"(line 719, column 32)                                _lhsOerrors =                                    _hdIerrors Seq.<> _tlIerrors-                               -- use rule "GenerateCode.ag"(line 587, column 86)+                               -- use rule "GenerateCode.ag"(line 126, column 47)+                               _lhsOgathNts =+                                   _hdIgathNts `Set.union` _tlIgathNts+                               -- use rule "GenerateCode.ag"(line 611, column 86)                                _lhsOsemDomUnfoldGath =                                    _hdIsemDomUnfoldGath `Map.union` _tlIsemDomUnfoldGath                                -- copy rule (down)+                               _hdOallNts =+                                   _lhsIallNts+                               -- copy rule (down)                                _hdOallPragmas =                                    _lhsIallPragmas                                -- copy rule (down)@@ -1201,6 +1277,9 @@                                _hdOwrappers =                                    _lhsIwrappers                                -- copy rule (down)+                               _tlOallNts =+                                   _lhsIallNts+                               -- copy rule (down)                                _tlOallPragmas =                                    _lhsIallPragmas                                -- copy rule (down)@@ -1272,14 +1351,15 @@                                -- copy rule (down)                                _tlOwrappers =                                    _lhsIwrappers-                               ( _hdIallTpsFound,_hdIchunks,_hdIerrors,_hdIsemDomUnfoldGath) =-                                   (hd_ _hdOallPragmas _hdOcontextMap _hdOderivings _hdOerrors _hdOo_case _hdOo_cata _hdOo_costcentre _hdOo_data _hdOo_linePragmas _hdOo_newtypes _hdOo_pretty _hdOo_rename _hdOo_sem _hdOo_sig _hdOo_splitsems _hdOo_strictwrap _hdOo_traces _hdOo_unbox _hdOparamMap _hdOprefix _hdOtypeSyns _hdOunfoldSemDom _hdOwith_sig _hdOwrappers)-                               ( _tlIallTpsFound,_tlIchunks,_tlIerrors,_tlIsemDomUnfoldGath) =-                                   (tl_ _tlOallPragmas _tlOcontextMap _tlOderivings _tlOerrors _tlOo_case _tlOo_cata _tlOo_costcentre _tlOo_data _tlOo_linePragmas _tlOo_newtypes _tlOo_pretty _tlOo_rename _tlOo_sem _tlOo_sig _tlOo_splitsems _tlOo_strictwrap _tlOo_traces _tlOo_unbox _tlOparamMap _tlOprefix _tlOtypeSyns _tlOunfoldSemDom _tlOwith_sig _tlOwrappers)-                           in  ( _lhsOallTpsFound,_lhsOchunks,_lhsOerrors,_lhsOsemDomUnfoldGath))))+                               ( _hdIallTpsFound,_hdIchunks,_hdIerrors,_hdIgathNts,_hdIsemDomUnfoldGath) =+                                   (hd_ _hdOallNts _hdOallPragmas _hdOcontextMap _hdOderivings _hdOerrors _hdOo_case _hdOo_cata _hdOo_costcentre _hdOo_data _hdOo_linePragmas _hdOo_newtypes _hdOo_pretty _hdOo_rename _hdOo_sem _hdOo_sig _hdOo_splitsems _hdOo_strictwrap _hdOo_traces _hdOo_unbox _hdOparamMap _hdOprefix _hdOtypeSyns _hdOunfoldSemDom _hdOwith_sig _hdOwrappers)+                               ( _tlIallTpsFound,_tlIchunks,_tlIerrors,_tlIgathNts,_tlIsemDomUnfoldGath) =+                                   (tl_ _tlOallNts _tlOallPragmas _tlOcontextMap _tlOderivings _tlOerrors _tlOo_case _tlOo_cata _tlOo_costcentre _tlOo_data _tlOo_linePragmas _tlOo_newtypes _tlOo_pretty _tlOo_rename _tlOo_sem _tlOo_sig _tlOo_splitsems _tlOo_strictwrap _tlOo_traces _tlOo_unbox _tlOparamMap _tlOprefix _tlOtypeSyns _tlOunfoldSemDom _tlOwith_sig _tlOwrappers)+                           in  ( _lhsOallTpsFound,_lhsOchunks,_lhsOerrors,_lhsOgathNts,_lhsOsemDomUnfoldGath)))) sem_CNonterminals_Nil :: T_CNonterminals sem_CNonterminals_Nil  =-    (T_CNonterminals (\ _lhsIallPragmas+    (T_CNonterminals (\ _lhsIallNts+                        _lhsIallPragmas                         _lhsIcontextMap                         _lhsIderivings                         _lhsIerrors@@ -1306,24 +1386,29 @@                           (let _lhsOallTpsFound :: Bool                                _lhsOchunks :: Chunks                                _lhsOerrors :: (Seq Error)+                               _lhsOgathNts :: (Set NontermIdent)                                _lhsOsemDomUnfoldGath :: (Map (NontermIdent, Int) ([String], Code.Type))-                               -- use rule "GenerateCode.ag"(line 682, column 39)+                               -- use rule "GenerateCode.ag"(line 706, column 39)                                _lhsOallTpsFound =                                    True-                               -- use rule "GenerateCode.ag"(line 756, column 49)+                               -- use rule "GenerateCode.ag"(line 780, column 49)                                _lhsOchunks =                                    []-                               -- use rule "GenerateCode.ag"(line 695, column 32)+                               -- use rule "GenerateCode.ag"(line 719, column 32)                                _lhsOerrors =                                    Seq.empty-                               -- use rule "GenerateCode.ag"(line 587, column 86)+                               -- use rule "GenerateCode.ag"(line 126, column 47)+                               _lhsOgathNts =+                                   Set.empty+                               -- use rule "GenerateCode.ag"(line 611, column 86)                                _lhsOsemDomUnfoldGath =                                    Map.empty-                           in  ( _lhsOallTpsFound,_lhsOchunks,_lhsOerrors,_lhsOsemDomUnfoldGath))))+                           in  ( _lhsOallTpsFound,_lhsOchunks,_lhsOerrors,_lhsOgathNts,_lhsOsemDomUnfoldGath)))) -- CProduction ------------------------------------------------- {-    visit 0:       inherited attributes:+         allNts               : Set NontermIdent          allPragmas           : PragmaMap          contextMap           : ContextMap          inh                  : Attributes@@ -1373,7 +1458,8 @@ sem_CProduction (CProduction _con _visits _children _terminals) =     (sem_CProduction_CProduction _con (sem_CVisits _visits) _children _terminals) -- semantic domain-newtype T_CProduction = T_CProduction (PragmaMap ->+newtype T_CProduction = T_CProduction ((Set NontermIdent) ->+                                       PragmaMap ->                                        ContextMap ->                                        (Seq Error) ->                                        Attributes ->@@ -1398,11 +1484,11 @@                                        (NontermIdent -> Int -> [String] -> Code.Type) ->                                        Bool ->                                        ( Bool,Decl,([String]),DataAlt,Decls,(Seq Error),([String])))-data Inh_CProduction = Inh_CProduction {allPragmas_Inh_CProduction :: PragmaMap,contextMap_Inh_CProduction :: ContextMap,errors_Inh_CProduction :: Seq Error,inh_Inh_CProduction :: Attributes,nt_Inh_CProduction :: NontermIdent,o_case_Inh_CProduction :: Bool,o_cata_Inh_CProduction :: Bool,o_costcentre_Inh_CProduction :: Bool,o_data_Inh_CProduction :: Maybe Bool,o_linePragmas_Inh_CProduction :: Bool,o_newtypes_Inh_CProduction :: Bool,o_pretty_Inh_CProduction :: Bool,o_rename_Inh_CProduction :: Bool,o_sem_Inh_CProduction :: Bool,o_sig_Inh_CProduction :: Bool,o_splitsems_Inh_CProduction :: Bool,o_strictwrap_Inh_CProduction :: Bool,o_traces_Inh_CProduction :: Bool,o_unbox_Inh_CProduction :: Bool,paramMap_Inh_CProduction :: ParamMap,prefix_Inh_CProduction :: String,syn_Inh_CProduction :: Attributes,unfoldSemDom_Inh_CProduction :: NontermIdent -> Int -> [String] -> Code.Type,with_sig_Inh_CProduction :: Bool}-data Syn_CProduction = Syn_CProduction {allTpsFound_Syn_CProduction :: Bool,cataAlt_Syn_CProduction :: Decl,comments_Syn_CProduction :: [String],dataAlt_Syn_CProduction :: DataAlt,decls_Syn_CProduction :: Decls,errors_Syn_CProduction :: Seq Error,semNames_Syn_CProduction :: [String]}-wrap_CProduction (T_CProduction sem) (Inh_CProduction _lhsIallPragmas _lhsIcontextMap _lhsIerrors _lhsIinh _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIunfoldSemDom _lhsIwith_sig) =+data Inh_CProduction = Inh_CProduction {allNts_Inh_CProduction :: !(Set NontermIdent),allPragmas_Inh_CProduction :: !(PragmaMap),contextMap_Inh_CProduction :: !(ContextMap),errors_Inh_CProduction :: !(Seq Error),inh_Inh_CProduction :: !(Attributes),nt_Inh_CProduction :: !(NontermIdent),o_case_Inh_CProduction :: !(Bool),o_cata_Inh_CProduction :: !(Bool),o_costcentre_Inh_CProduction :: !(Bool),o_data_Inh_CProduction :: !(Maybe Bool),o_linePragmas_Inh_CProduction :: !(Bool),o_newtypes_Inh_CProduction :: !(Bool),o_pretty_Inh_CProduction :: !(Bool),o_rename_Inh_CProduction :: !(Bool),o_sem_Inh_CProduction :: !(Bool),o_sig_Inh_CProduction :: !(Bool),o_splitsems_Inh_CProduction :: !(Bool),o_strictwrap_Inh_CProduction :: !(Bool),o_traces_Inh_CProduction :: !(Bool),o_unbox_Inh_CProduction :: !(Bool),paramMap_Inh_CProduction :: !(ParamMap),prefix_Inh_CProduction :: !(String),syn_Inh_CProduction :: !(Attributes),unfoldSemDom_Inh_CProduction :: !(NontermIdent -> Int -> [String] -> Code.Type),with_sig_Inh_CProduction :: !(Bool)}+data Syn_CProduction = Syn_CProduction {allTpsFound_Syn_CProduction :: !(Bool),cataAlt_Syn_CProduction :: !(Decl),comments_Syn_CProduction :: !([String]),dataAlt_Syn_CProduction :: !(DataAlt),decls_Syn_CProduction :: !(Decls),errors_Syn_CProduction :: !(Seq Error),semNames_Syn_CProduction :: !([String])}+wrap_CProduction (T_CProduction sem) (Inh_CProduction _lhsIallNts _lhsIallPragmas _lhsIcontextMap _lhsIerrors _lhsIinh _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIunfoldSemDom _lhsIwith_sig) =     (let ( _lhsOallTpsFound,_lhsOcataAlt,_lhsOcomments,_lhsOdataAlt,_lhsOdecls,_lhsOerrors,_lhsOsemNames) =-             (sem _lhsIallPragmas _lhsIcontextMap _lhsIerrors _lhsIinh _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIunfoldSemDom _lhsIwith_sig)+             (sem _lhsIallNts _lhsIallPragmas _lhsIcontextMap _lhsIerrors _lhsIinh _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIunfoldSemDom _lhsIwith_sig)      in  (Syn_CProduction _lhsOallTpsFound _lhsOcataAlt _lhsOcomments _lhsOdataAlt _lhsOdecls _lhsOerrors _lhsOsemNames)) sem_CProduction_CProduction :: ConstructorIdent ->                                T_CVisits ->@@ -1410,7 +1496,8 @@                                ([Identifier]) ->                                T_CProduction sem_CProduction_CProduction con_ (T_CVisits visits_) children_ terminals_ =-    (T_CProduction (\ _lhsIallPragmas+    (T_CProduction (\ _lhsIallNts+                      _lhsIallPragmas                       _lhsIcontextMap                       _lhsIerrors                       _lhsIinh@@ -1446,6 +1533,7 @@                              _lhsOdecls :: Decls                              _lhsOerrors :: (Seq Error)                              _lhsOsemNames :: ([String])+                             _visitsOallNts :: (Set NontermIdent)                              _visitsOallPragmas :: PragmaMap                              _visitsOcontextMap :: ContextMap                              _visitsOerrors :: (Seq Error)@@ -1480,40 +1568,40 @@                              _visitsIintraVars :: (Set String)                              _visitsIisNil :: Bool                              _visitsIsemNames :: ([String])-                             -- "GenerateCode.ag"(line 81, column 19)+                             -- "GenerateCode.ag"(line 85, column 19)                              _visitsOcon =                                  con_-                             -- "GenerateCode.ag"(line 82, column 20)+                             -- "GenerateCode.ag"(line 86, column 20)                              _visitsOterminals =                                  terminals_-                             -- "GenerateCode.ag"(line 94, column 7)+                             -- "GenerateCode.ag"(line 98, column 7)                              _paramInstMap =                                  Map.fromList [(nm, (extractNonterminal tp, tps)) | (nm,tp,_) <- children_, let tps = map cleanupArg $ nontermArgs tp, not (null tps) ]-                             -- "GenerateCode.ag"(line 194, column 18)+                             -- "GenerateCode.ag"(line 214, column 18)                              _visitsOnr =                                  0-                             -- "GenerateCode.ag"(line 316, column 18)+                             -- "GenerateCode.ag"(line 340, column 18)                              _visitsOchildren =                                  children_-                             -- "GenerateCode.ag"(line 426, column 7)+                             -- "GenerateCode.ag"(line 450, column 7)                              _visitsOinstVisitNrs =                                  _visitsIgatherInstVisitNrs-                             -- "GenerateCode.ag"(line 725, column 17)+                             -- "GenerateCode.ag"(line 749, column 17)                              _firstOrderChildren =                                  filter (\(_,_,ho) -> not ho) children_-                             -- "GenerateCode.ag"(line 726, column 18)+                             -- "GenerateCode.ag"(line 750, column 18)                              _lhsOcomments =                                  ("alternative " ++ getName con_ ++ ":")                                  : map ind (  map (\(x,y,_) -> makeLocalComment 14 "child" x (Just y)) _firstOrderChildren                                            ++ _visitsIcomments                                            )-                             -- "GenerateCode.ag"(line 836, column 17)+                             -- "GenerateCode.ag"(line 869, column 17)                              _params =                                  map getName $ Map.findWithDefault [] _lhsInt _lhsIparamMap-                             -- "GenerateCode.ag"(line 837, column 17)+                             -- "GenerateCode.ag"(line 870, column 17)                              _lhsOdataAlt =                                  DataAlt (conname _lhsIo_rename _lhsInt con_) (map (\(_,t,_) -> typeToHaskellString (Just _lhsInt) _params     t) _firstOrderChildren    )-                             -- "GenerateCode.ag"(line 895, column 17)+                             -- "GenerateCode.ag"(line 962, column 17)                              _lhsOcataAlt =                                  let lhs = Fun (cataname _lhsIprefix _lhsInt) [lhs_pat]                                      lhs_pat = App (conname _lhsIo_rename _lhsInt con_)@@ -1524,19 +1612,22 @@                                                                   [SimpleExpr (locname nm)]                                      argument (nm, _,_)    = SimpleExpr (locname nm)                                   in Decl lhs rhs Set.empty Set.empty-                             -- use rule "GenerateCode.ag"(line 682, column 39)+                             -- use rule "GenerateCode.ag"(line 706, column 39)                              _lhsOallTpsFound =                                  _visitsIallTpsFound-                             -- use rule "GenerateCode.ag"(line 757, column 44)+                             -- use rule "GenerateCode.ag"(line 781, column 44)                              _lhsOdecls =                                  _visitsIdecls-                             -- use rule "GenerateCode.ag"(line 695, column 32)+                             -- use rule "GenerateCode.ag"(line 719, column 32)                              _lhsOerrors =                                  _visitsIerrors-                             -- use rule "GenerateCode.ag"(line 910, column 61)+                             -- use rule "GenerateCode.ag"(line 977, column 61)                              _lhsOsemNames =                                  _visitsIsemNames                              -- copy rule (down)+                             _visitsOallNts =+                                 _lhsIallNts+                             -- copy rule (down)                              _visitsOallPragmas =                                  _lhsIallPragmas                              -- copy rule (down)@@ -1612,12 +1703,13 @@                              _visitsOwith_sig =                                  _lhsIwith_sig                              ( _visitsIallTpsFound,_visitsIcomments,_visitsIdecls,_visitsIerrors,_visitsIgatherInstVisitNrs,_visitsIintra,_visitsIintraVars,_visitsIisNil,_visitsIsemNames) =-                                 (visits_ _visitsOallPragmas _visitsOchildren _visitsOcon _visitsOcontextMap _visitsOerrors _visitsOinh _visitsOinstVisitNrs _visitsOnr _visitsOnt _visitsOo_case _visitsOo_cata _visitsOo_costcentre _visitsOo_data _visitsOo_linePragmas _visitsOo_newtypes _visitsOo_pretty _visitsOo_rename _visitsOo_sem _visitsOo_sig _visitsOo_splitsems _visitsOo_strictwrap _visitsOo_traces _visitsOo_unbox _visitsOparamInstMap _visitsOparamMap _visitsOprefix _visitsOsyn _visitsOterminals _visitsOunfoldSemDom _visitsOwith_sig)+                                 (visits_ _visitsOallNts _visitsOallPragmas _visitsOchildren _visitsOcon _visitsOcontextMap _visitsOerrors _visitsOinh _visitsOinstVisitNrs _visitsOnr _visitsOnt _visitsOo_case _visitsOo_cata _visitsOo_costcentre _visitsOo_data _visitsOo_linePragmas _visitsOo_newtypes _visitsOo_pretty _visitsOo_rename _visitsOo_sem _visitsOo_sig _visitsOo_splitsems _visitsOo_strictwrap _visitsOo_traces _visitsOo_unbox _visitsOparamInstMap _visitsOparamMap _visitsOprefix _visitsOsyn _visitsOterminals _visitsOunfoldSemDom _visitsOwith_sig)                          in  ( _lhsOallTpsFound,_lhsOcataAlt,_lhsOcomments,_lhsOdataAlt,_lhsOdecls,_lhsOerrors,_lhsOsemNames)))) -- CProductions ------------------------------------------------ {-    visit 0:       inherited attributes:+         allNts               : Set NontermIdent          allPragmas           : PragmaMap          contextMap           : ContextMap          inh                  : Attributes@@ -1662,7 +1754,8 @@ sem_CProductions list =     (Prelude.foldr sem_CProductions_Cons sem_CProductions_Nil (Prelude.map sem_CProduction list)) -- semantic domain-newtype T_CProductions = T_CProductions (PragmaMap ->+newtype T_CProductions = T_CProductions ((Set NontermIdent) ->+                                         PragmaMap ->                                          ContextMap ->                                          (Seq Error) ->                                          Attributes ->@@ -1687,17 +1780,18 @@                                          (NontermIdent -> Int -> [String] -> Code.Type) ->                                          Bool ->                                          ( Bool,Decls,([String]),DataAlts,Decls,(Seq Error),([String])))-data Inh_CProductions = Inh_CProductions {allPragmas_Inh_CProductions :: PragmaMap,contextMap_Inh_CProductions :: ContextMap,errors_Inh_CProductions :: Seq Error,inh_Inh_CProductions :: Attributes,nt_Inh_CProductions :: NontermIdent,o_case_Inh_CProductions :: Bool,o_cata_Inh_CProductions :: Bool,o_costcentre_Inh_CProductions :: Bool,o_data_Inh_CProductions :: Maybe Bool,o_linePragmas_Inh_CProductions :: Bool,o_newtypes_Inh_CProductions :: Bool,o_pretty_Inh_CProductions :: Bool,o_rename_Inh_CProductions :: Bool,o_sem_Inh_CProductions :: Bool,o_sig_Inh_CProductions :: Bool,o_splitsems_Inh_CProductions :: Bool,o_strictwrap_Inh_CProductions :: Bool,o_traces_Inh_CProductions :: Bool,o_unbox_Inh_CProductions :: Bool,paramMap_Inh_CProductions :: ParamMap,prefix_Inh_CProductions :: String,syn_Inh_CProductions :: Attributes,unfoldSemDom_Inh_CProductions :: NontermIdent -> Int -> [String] -> Code.Type,with_sig_Inh_CProductions :: Bool}-data Syn_CProductions = Syn_CProductions {allTpsFound_Syn_CProductions :: Bool,cataAlts_Syn_CProductions :: Decls,comments_Syn_CProductions :: [String],dataAlts_Syn_CProductions :: DataAlts,decls_Syn_CProductions :: Decls,errors_Syn_CProductions :: Seq Error,semNames_Syn_CProductions :: [String]}-wrap_CProductions (T_CProductions sem) (Inh_CProductions _lhsIallPragmas _lhsIcontextMap _lhsIerrors _lhsIinh _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIunfoldSemDom _lhsIwith_sig) =+data Inh_CProductions = Inh_CProductions {allNts_Inh_CProductions :: !(Set NontermIdent),allPragmas_Inh_CProductions :: !(PragmaMap),contextMap_Inh_CProductions :: !(ContextMap),errors_Inh_CProductions :: !(Seq Error),inh_Inh_CProductions :: !(Attributes),nt_Inh_CProductions :: !(NontermIdent),o_case_Inh_CProductions :: !(Bool),o_cata_Inh_CProductions :: !(Bool),o_costcentre_Inh_CProductions :: !(Bool),o_data_Inh_CProductions :: !(Maybe Bool),o_linePragmas_Inh_CProductions :: !(Bool),o_newtypes_Inh_CProductions :: !(Bool),o_pretty_Inh_CProductions :: !(Bool),o_rename_Inh_CProductions :: !(Bool),o_sem_Inh_CProductions :: !(Bool),o_sig_Inh_CProductions :: !(Bool),o_splitsems_Inh_CProductions :: !(Bool),o_strictwrap_Inh_CProductions :: !(Bool),o_traces_Inh_CProductions :: !(Bool),o_unbox_Inh_CProductions :: !(Bool),paramMap_Inh_CProductions :: !(ParamMap),prefix_Inh_CProductions :: !(String),syn_Inh_CProductions :: !(Attributes),unfoldSemDom_Inh_CProductions :: !(NontermIdent -> Int -> [String] -> Code.Type),with_sig_Inh_CProductions :: !(Bool)}+data Syn_CProductions = Syn_CProductions {allTpsFound_Syn_CProductions :: !(Bool),cataAlts_Syn_CProductions :: !(Decls),comments_Syn_CProductions :: !([String]),dataAlts_Syn_CProductions :: !(DataAlts),decls_Syn_CProductions :: !(Decls),errors_Syn_CProductions :: !(Seq Error),semNames_Syn_CProductions :: !([String])}+wrap_CProductions (T_CProductions sem) (Inh_CProductions _lhsIallNts _lhsIallPragmas _lhsIcontextMap _lhsIerrors _lhsIinh _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIunfoldSemDom _lhsIwith_sig) =     (let ( _lhsOallTpsFound,_lhsOcataAlts,_lhsOcomments,_lhsOdataAlts,_lhsOdecls,_lhsOerrors,_lhsOsemNames) =-             (sem _lhsIallPragmas _lhsIcontextMap _lhsIerrors _lhsIinh _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIunfoldSemDom _lhsIwith_sig)+             (sem _lhsIallNts _lhsIallPragmas _lhsIcontextMap _lhsIerrors _lhsIinh _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIunfoldSemDom _lhsIwith_sig)      in  (Syn_CProductions _lhsOallTpsFound _lhsOcataAlts _lhsOcomments _lhsOdataAlts _lhsOdecls _lhsOerrors _lhsOsemNames)) sem_CProductions_Cons :: T_CProduction ->                          T_CProductions ->                          T_CProductions sem_CProductions_Cons (T_CProduction hd_) (T_CProductions tl_) =-    (T_CProductions (\ _lhsIallPragmas+    (T_CProductions (\ _lhsIallNts+                       _lhsIallPragmas                        _lhsIcontextMap                        _lhsIerrors                        _lhsIinh@@ -1728,6 +1822,7 @@                               _lhsOdecls :: Decls                               _lhsOerrors :: (Seq Error)                               _lhsOsemNames :: ([String])+                              _hdOallNts :: (Set NontermIdent)                               _hdOallPragmas :: PragmaMap                               _hdOcontextMap :: ContextMap                               _hdOerrors :: (Seq Error)@@ -1752,6 +1847,7 @@                               _hdOsyn :: Attributes                               _hdOunfoldSemDom :: (NontermIdent -> Int -> [String] -> Code.Type)                               _hdOwith_sig :: Bool+                              _tlOallNts :: (Set NontermIdent)                               _tlOallPragmas :: PragmaMap                               _tlOcontextMap :: ContextMap                               _tlOerrors :: (Seq Error)@@ -1790,28 +1886,31 @@                               _tlIdecls :: Decls                               _tlIerrors :: (Seq Error)                               _tlIsemNames :: ([String])-                              -- "GenerateCode.ag"(line 832, column 17)+                              -- "GenerateCode.ag"(line 865, column 17)                               _lhsOdataAlts =                                   _hdIdataAlt : _tlIdataAlts-                              -- "GenerateCode.ag"(line 891, column 10)+                              -- "GenerateCode.ag"(line 958, column 10)                               _lhsOcataAlts =                                   _hdIcataAlt : _tlIcataAlts-                              -- use rule "GenerateCode.ag"(line 682, column 39)+                              -- use rule "GenerateCode.ag"(line 706, column 39)                               _lhsOallTpsFound =                                   _hdIallTpsFound && _tlIallTpsFound-                              -- use rule "GenerateCode.ag"(line 714, column 52)+                              -- use rule "GenerateCode.ag"(line 738, column 52)                               _lhsOcomments =                                   _hdIcomments ++ _tlIcomments-                              -- use rule "GenerateCode.ag"(line 757, column 44)+                              -- use rule "GenerateCode.ag"(line 781, column 44)                               _lhsOdecls =                                   _hdIdecls ++ _tlIdecls-                              -- use rule "GenerateCode.ag"(line 695, column 32)+                              -- use rule "GenerateCode.ag"(line 719, column 32)                               _lhsOerrors =                                   _hdIerrors Seq.<> _tlIerrors-                              -- use rule "GenerateCode.ag"(line 910, column 61)+                              -- use rule "GenerateCode.ag"(line 977, column 61)                               _lhsOsemNames =                                   _hdIsemNames ++ _tlIsemNames                               -- copy rule (down)+                              _hdOallNts =+                                  _lhsIallNts+                              -- copy rule (down)                               _hdOallPragmas =                                   _lhsIallPragmas                               -- copy rule (down)@@ -1884,6 +1983,9 @@                               _hdOwith_sig =                                   _lhsIwith_sig                               -- copy rule (down)+                              _tlOallNts =+                                  _lhsIallNts+                              -- copy rule (down)                               _tlOallPragmas =                                   _lhsIallPragmas                               -- copy rule (down)@@ -1956,13 +2058,14 @@                               _tlOwith_sig =                                   _lhsIwith_sig                               ( _hdIallTpsFound,_hdIcataAlt,_hdIcomments,_hdIdataAlt,_hdIdecls,_hdIerrors,_hdIsemNames) =-                                  (hd_ _hdOallPragmas _hdOcontextMap _hdOerrors _hdOinh _hdOnt _hdOo_case _hdOo_cata _hdOo_costcentre _hdOo_data _hdOo_linePragmas _hdOo_newtypes _hdOo_pretty _hdOo_rename _hdOo_sem _hdOo_sig _hdOo_splitsems _hdOo_strictwrap _hdOo_traces _hdOo_unbox _hdOparamMap _hdOprefix _hdOsyn _hdOunfoldSemDom _hdOwith_sig)+                                  (hd_ _hdOallNts _hdOallPragmas _hdOcontextMap _hdOerrors _hdOinh _hdOnt _hdOo_case _hdOo_cata _hdOo_costcentre _hdOo_data _hdOo_linePragmas _hdOo_newtypes _hdOo_pretty _hdOo_rename _hdOo_sem _hdOo_sig _hdOo_splitsems _hdOo_strictwrap _hdOo_traces _hdOo_unbox _hdOparamMap _hdOprefix _hdOsyn _hdOunfoldSemDom _hdOwith_sig)                               ( _tlIallTpsFound,_tlIcataAlts,_tlIcomments,_tlIdataAlts,_tlIdecls,_tlIerrors,_tlIsemNames) =-                                  (tl_ _tlOallPragmas _tlOcontextMap _tlOerrors _tlOinh _tlOnt _tlOo_case _tlOo_cata _tlOo_costcentre _tlOo_data _tlOo_linePragmas _tlOo_newtypes _tlOo_pretty _tlOo_rename _tlOo_sem _tlOo_sig _tlOo_splitsems _tlOo_strictwrap _tlOo_traces _tlOo_unbox _tlOparamMap _tlOprefix _tlOsyn _tlOunfoldSemDom _tlOwith_sig)+                                  (tl_ _tlOallNts _tlOallPragmas _tlOcontextMap _tlOerrors _tlOinh _tlOnt _tlOo_case _tlOo_cata _tlOo_costcentre _tlOo_data _tlOo_linePragmas _tlOo_newtypes _tlOo_pretty _tlOo_rename _tlOo_sem _tlOo_sig _tlOo_splitsems _tlOo_strictwrap _tlOo_traces _tlOo_unbox _tlOparamMap _tlOprefix _tlOsyn _tlOunfoldSemDom _tlOwith_sig)                           in  ( _lhsOallTpsFound,_lhsOcataAlts,_lhsOcomments,_lhsOdataAlts,_lhsOdecls,_lhsOerrors,_lhsOsemNames)))) sem_CProductions_Nil :: T_CProductions sem_CProductions_Nil  =-    (T_CProductions (\ _lhsIallPragmas+    (T_CProductions (\ _lhsIallNts+                       _lhsIallPragmas                        _lhsIcontextMap                        _lhsIerrors                        _lhsIinh@@ -1993,25 +2096,25 @@                               _lhsOdecls :: Decls                               _lhsOerrors :: (Seq Error)                               _lhsOsemNames :: ([String])-                              -- "GenerateCode.ag"(line 833, column 17)+                              -- "GenerateCode.ag"(line 866, column 17)                               _lhsOdataAlts =                                   []-                              -- "GenerateCode.ag"(line 892, column 10)+                              -- "GenerateCode.ag"(line 959, column 10)                               _lhsOcataAlts =                                   []-                              -- use rule "GenerateCode.ag"(line 682, column 39)+                              -- use rule "GenerateCode.ag"(line 706, column 39)                               _lhsOallTpsFound =                                   True-                              -- use rule "GenerateCode.ag"(line 714, column 52)+                              -- use rule "GenerateCode.ag"(line 738, column 52)                               _lhsOcomments =                                   []-                              -- use rule "GenerateCode.ag"(line 757, column 44)+                              -- use rule "GenerateCode.ag"(line 781, column 44)                               _lhsOdecls =                                   []-                              -- use rule "GenerateCode.ag"(line 695, column 32)+                              -- use rule "GenerateCode.ag"(line 719, column 32)                               _lhsOerrors =                                   Seq.empty-                              -- use rule "GenerateCode.ag"(line 910, column 61)+                              -- use rule "GenerateCode.ag"(line 977, column 61)                               _lhsOsemNames =                                   []                           in  ( _lhsOallTpsFound,_lhsOcataAlts,_lhsOcomments,_lhsOdataAlts,_lhsOdecls,_lhsOerrors,_lhsOsemNames))))@@ -2019,6 +2122,7 @@ {-    visit 0:       inherited attributes:+         allNts               : Set NontermIdent          children             : [(Identifier,Type,Bool)]          con                  : ConstructorIdent          higherOrderChildren  : [(Identifier,Type,Bool)]@@ -2045,6 +2149,7 @@          prefix               : String          syn                  : Attributes          terminals            : [Identifier]+         unfoldSemDom         : NontermIdent -> Int -> [String] -> Code.Type          what                 : String       chained attributes:          declsAbove           : [Decl]@@ -2108,7 +2213,7 @@             local addLinePragma : _             local decls       : _             local definedInsts : _-            local name        : _+            local rulename    : _             local mkTp        : _             local orgParams   : _             local evalTp      : _@@ -2122,7 +2227,8 @@ sem_CRule (CRule _name _isIn _hasCode _nt _con _field _childnt _tp _pattern _rhs _defines _owrt _origin _uses) =     (sem_CRule_CRule _name _isIn _hasCode _nt _con _field _childnt _tp (sem_Pattern _pattern) _rhs _defines _owrt _origin _uses) -- semantic domain-newtype T_CRule = T_CRule (([(Identifier,Type,Bool)]) ->+newtype T_CRule = T_CRule ((Set NontermIdent) ->+                           ([(Identifier,Type,Bool)]) ->                            ConstructorIdent ->                            ([Decl]) ->                            (Seq Error) ->@@ -2150,13 +2256,14 @@                            String ->                            Attributes ->                            ([Identifier]) ->+                           (NontermIdent -> Int -> [String] -> Code.Type) ->                            String ->                            ( Bool,(DeclBlocks -> DeclBlocks),([String]),Decls,([Decl]),([Identifier]),(Seq Error),Exprs,([Decl]),([Type]),(Set String)))-data Inh_CRule = Inh_CRule {children_Inh_CRule :: [(Identifier,Type,Bool)],con_Inh_CRule :: ConstructorIdent,declsAbove_Inh_CRule :: [Decl],errors_Inh_CRule :: Seq Error,higherOrderChildren_Inh_CRule :: [(Identifier,Type,Bool)],inh_Inh_CRule :: Attributes,instVisitNrs_Inh_CRule :: Map Identifier Int,nr_Inh_CRule :: Int,nt_Inh_CRule :: NontermIdent,o_case_Inh_CRule :: Bool,o_cata_Inh_CRule :: Bool,o_costcentre_Inh_CRule :: Bool,o_data_Inh_CRule :: Maybe Bool,o_linePragmas_Inh_CRule :: Bool,o_newtypes_Inh_CRule :: Bool,o_pretty_Inh_CRule :: Bool,o_rename_Inh_CRule :: Bool,o_sem_Inh_CRule :: Bool,o_sig_Inh_CRule :: Bool,o_splitsems_Inh_CRule :: Bool,o_strictwrap_Inh_CRule :: Bool,o_traces_Inh_CRule :: Bool,o_unbox_Inh_CRule :: Bool,paramInstMap_Inh_CRule :: Map Identifier (NontermIdent, [String]),paramMap_Inh_CRule :: ParamMap,prefix_Inh_CRule :: String,syn_Inh_CRule :: Attributes,terminals_Inh_CRule :: [Identifier],what_Inh_CRule :: String}-data Syn_CRule = Syn_CRule {allTpsFound_Syn_CRule :: Bool,bldBlocksFun_Syn_CRule :: DeclBlocks -> DeclBlocks,comments_Syn_CRule :: [String],decls_Syn_CRule :: Decls,declsAbove_Syn_CRule :: [Decl],definedInsts_Syn_CRule :: [Identifier],errors_Syn_CRule :: Seq Error,exprs_Syn_CRule :: Exprs,tSigs_Syn_CRule :: [Decl],tps_Syn_CRule :: [Type],usedVars_Syn_CRule :: Set String}-wrap_CRule (T_CRule sem) (Inh_CRule _lhsIchildren _lhsIcon _lhsIdeclsAbove _lhsIerrors _lhsIhigherOrderChildren _lhsIinh _lhsIinstVisitNrs _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIwhat) =+data Inh_CRule = Inh_CRule {allNts_Inh_CRule :: !(Set NontermIdent),children_Inh_CRule :: !([(Identifier,Type,Bool)]),con_Inh_CRule :: !(ConstructorIdent),declsAbove_Inh_CRule :: !([Decl]),errors_Inh_CRule :: !(Seq Error),higherOrderChildren_Inh_CRule :: !([(Identifier,Type,Bool)]),inh_Inh_CRule :: !(Attributes),instVisitNrs_Inh_CRule :: !(Map Identifier Int),nr_Inh_CRule :: !(Int),nt_Inh_CRule :: !(NontermIdent),o_case_Inh_CRule :: !(Bool),o_cata_Inh_CRule :: !(Bool),o_costcentre_Inh_CRule :: !(Bool),o_data_Inh_CRule :: !(Maybe Bool),o_linePragmas_Inh_CRule :: !(Bool),o_newtypes_Inh_CRule :: !(Bool),o_pretty_Inh_CRule :: !(Bool),o_rename_Inh_CRule :: !(Bool),o_sem_Inh_CRule :: !(Bool),o_sig_Inh_CRule :: !(Bool),o_splitsems_Inh_CRule :: !(Bool),o_strictwrap_Inh_CRule :: !(Bool),o_traces_Inh_CRule :: !(Bool),o_unbox_Inh_CRule :: !(Bool),paramInstMap_Inh_CRule :: !(Map Identifier (NontermIdent, [String])),paramMap_Inh_CRule :: !(ParamMap),prefix_Inh_CRule :: !(String),syn_Inh_CRule :: !(Attributes),terminals_Inh_CRule :: !([Identifier]),unfoldSemDom_Inh_CRule :: !(NontermIdent -> Int -> [String] -> Code.Type),what_Inh_CRule :: !(String)}+data Syn_CRule = Syn_CRule {allTpsFound_Syn_CRule :: !(Bool),bldBlocksFun_Syn_CRule :: !(DeclBlocks -> DeclBlocks),comments_Syn_CRule :: !([String]),decls_Syn_CRule :: !(Decls),declsAbove_Syn_CRule :: !([Decl]),definedInsts_Syn_CRule :: !([Identifier]),errors_Syn_CRule :: !(Seq Error),exprs_Syn_CRule :: !(Exprs),tSigs_Syn_CRule :: !([Decl]),tps_Syn_CRule :: !([Type]),usedVars_Syn_CRule :: !(Set String)}+wrap_CRule (T_CRule sem) (Inh_CRule _lhsIallNts _lhsIchildren _lhsIcon _lhsIdeclsAbove _lhsIerrors _lhsIhigherOrderChildren _lhsIinh _lhsIinstVisitNrs _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIwhat) =     (let ( _lhsOallTpsFound,_lhsObldBlocksFun,_lhsOcomments,_lhsOdecls,_lhsOdeclsAbove,_lhsOdefinedInsts,_lhsOerrors,_lhsOexprs,_lhsOtSigs,_lhsOtps,_lhsOusedVars) =-             (sem _lhsIchildren _lhsIcon _lhsIdeclsAbove _lhsIerrors _lhsIhigherOrderChildren _lhsIinh _lhsIinstVisitNrs _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIwhat)+             (sem _lhsIallNts _lhsIchildren _lhsIcon _lhsIdeclsAbove _lhsIerrors _lhsIhigherOrderChildren _lhsIinh _lhsIinstVisitNrs _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIwhat)      in  (Syn_CRule _lhsOallTpsFound _lhsObldBlocksFun _lhsOcomments _lhsOdecls _lhsOdeclsAbove _lhsOdefinedInsts _lhsOerrors _lhsOexprs _lhsOtSigs _lhsOtps _lhsOusedVars)) sem_CRule_CChildVisit :: Identifier ->                          NontermIdent ->@@ -2166,7 +2273,8 @@                          Bool ->                          T_CRule sem_CRule_CChildVisit name_ nt_ nr_ inh_ syn_ isLast_ =-    (T_CRule (\ _lhsIchildren+    (T_CRule (\ _lhsIallNts+                _lhsIchildren                 _lhsIcon                 _lhsIdeclsAbove                 _lhsIerrors@@ -2194,6 +2302,7 @@                 _lhsIprefix                 _lhsIsyn                 _lhsIterminals+                _lhsIunfoldSemDom                 _lhsIwhat ->                   (let _lhsOexprs :: Exprs                        _lhsOusedVars :: (Set String)@@ -2206,15 +2315,15 @@                        _lhsOdecls :: Decls                        _lhsOdefinedInsts :: ([Identifier])                        _lhsOerrors :: (Seq Error)-                       -- "GenerateCode.ag"(line 161, column 18)+                       -- "GenerateCode.ag"(line 181, column 18)                        _costCentreDescr =                            show _lhsInt ++ ":" ++ show _lhsIcon ++ ":" ++ show name_ ++ ":" ++ show nt_ ++ ":" ++ show nr_-                       -- "GenerateCode.ag"(line 162, column 18)+                       -- "GenerateCode.ag"(line 182, column 18)                        _addCostCentre =                            \v -> if _lhsIo_costcentre                                  then PragmaExpr True False ("SCC \"" ++ _costCentreDescr     ++ "\"") v                                  else v-                       -- "GenerateCode.ag"(line 165, column 18)+                       -- "GenerateCode.ag"(line 185, column 18)                        _decls =                            let  lhsVars =  map (attrname True name_) (Map.keys syn_)                                            ++ if isLast_ then [] else [unwrap ++ funname name_ (nr_+1)]@@ -2223,72 +2332,74 @@                                 tuple = mkTupleLhs _lhsIo_unbox (null $ Map.keys inh_) lhsVars                                 rhs = _addCostCentre     $ App (funname name_ nr_) (map SimpleExpr rhsVars)                            in [Decl tuple rhs (Set.fromList lhsVars) (Set.fromList (funname name_ nr_ : rhsVars))]-                       -- "GenerateCode.ag"(line 241, column 7)+                       -- "GenerateCode.ag"(line 261, column 7)                        _isSuperfluousHigherOrderIntra =                            _lhsInr <= Map.findWithDefault (-1) name_ _lhsIinstVisitNrs-                       -- "GenerateCode.ag"(line 255, column 8)+                       -- "GenerateCode.ag"(line 275, column 8)                        _names =                            if _isSuperfluousHigherOrderIntra                            then []                            else [funname name_ (nr_+1)]-                       -- "GenerateCode.ag"(line 259, column 8)+                       -- "GenerateCode.ag"(line 279, column 8)                        _lhsOexprs =                            let wrap = if _lhsIo_newtypes then \x -> App (typeName nt_ (nr_ + 1)) [x] else id-                           in map (wrap . SimpleExpr) _names-                       -- "GenerateCode.ag"(line 267, column 7)+                               addType expr | null _instParams     = expr+                                            | otherwise            = TypedExpr expr (_lhsIunfoldSemDom nt_ (nr_+1) _instParams    )+                           in map (wrap . addType . SimpleExpr) _names+                       -- "GenerateCode.ag"(line 291, column 7)                        _lhsOusedVars =                            Set.fromList _names-                       -- "GenerateCode.ag"(line 291, column 19)+                       -- "GenerateCode.ag"(line 315, column 19)                        _mkTp =                            _evalTp     . SimpleType . typeToHaskellString (Just nt_) _orgParams-                       -- "GenerateCode.ag"(line 292, column 19)+                       -- "GenerateCode.ag"(line 316, column 19)                        _definedTps =                            [ TSig (attrname True name_ a) (_mkTp tp) |  (a,tp) <- Map.toList syn_ ]-                       -- "GenerateCode.ag"(line 293, column 19)+                       -- "GenerateCode.ag"(line 317, column 19)                        _nextTp =                            typeName nt_ (nr_+1)-                       -- "GenerateCode.ag"(line 294, column 19)+                       -- "GenerateCode.ag"(line 318, column 19)                        _lhsOtSigs =                            (if isLast_ then id else (TSig (funname name_ (nr_+1)) (TypeApp (SimpleType _nextTp) (map SimpleType _instParams    )) :)) _definedTps-                       -- "GenerateCode.ag"(line 296, column 19)+                       -- "GenerateCode.ag"(line 320, column 19)                        _orgParams =                            map getName $ Map.findWithDefault [] nt_ _lhsIparamMap-                       -- "GenerateCode.ag"(line 297, column 19)+                       -- "GenerateCode.ag"(line 321, column 19)                        _instParams =                            snd $ Map.findWithDefault (nt_,[]) name_ _lhsIparamInstMap-                       -- "GenerateCode.ag"(line 298, column 19)+                       -- "GenerateCode.ag"(line 322, column 19)                        _replParamMap =                            Map.fromList (zip _orgParams     _instParams    )-                       -- "GenerateCode.ag"(line 299, column 19)+                       -- "GenerateCode.ag"(line 323, column 19)                        _replace =                            \k -> Map.findWithDefault k k _replParamMap-                       -- "GenerateCode.ag"(line 300, column 19)+                       -- "GenerateCode.ag"(line 324, column 19)                        _evalTp =                            if null _orgParams     then id else evalType _replace-                       -- "GenerateCode.ag"(line 323, column 19)+                       -- "GenerateCode.ag"(line 347, column 19)                        _lhsOtps =                            if _isSuperfluousHigherOrderIntra                            then []-                           else [Haskell _nextTp]-                       -- "GenerateCode.ag"(line 448, column 7)+                           else [NT (ntOfVisit nt_ (nr_+1)) _instParams    ]+                       -- "GenerateCode.ag"(line 472, column 7)                        _lhsOdeclsAbove =                            []-                       -- "GenerateCode.ag"(line 461, column 7)+                       -- "GenerateCode.ag"(line 485, column 7)                        _lhsObldBlocksFun =                            DeclBlock _lhsIdeclsAbove (head _decls    )-                       -- use rule "GenerateCode.ag"(line 320, column 39)+                       -- use rule "GenerateCode.ag"(line 344, column 39)                        _lhsOallTpsFound =                            True-                       -- use rule "GenerateCode.ag"(line 714, column 52)+                       -- use rule "GenerateCode.ag"(line 738, column 52)                        _lhsOcomments =                            []-                       -- use rule "GenerateCode.ag"(line 122, column 34)+                       -- use rule "GenerateCode.ag"(line 138, column 34)                        _lhsOdecls =                            _decls-                       -- use rule "GenerateCode.ag"(line 175, column 55)+                       -- use rule "GenerateCode.ag"(line 195, column 55)                        _lhsOdefinedInsts =                            []-                       -- use rule "GenerateCode.ag"(line 695, column 32)+                       -- use rule "GenerateCode.ag"(line 719, column 32)                        _lhsOerrors =                            Seq.empty                    in  ( _lhsOallTpsFound,_lhsObldBlocksFun,_lhsOcomments,_lhsOdecls,_lhsOdeclsAbove,_lhsOdefinedInsts,_lhsOerrors,_lhsOexprs,_lhsOtSigs,_lhsOtps,_lhsOusedVars))))@@ -2308,7 +2419,8 @@                    (Set (Identifier, Identifier)) ->                    T_CRule sem_CRule_CRule name_ isIn_ hasCode_ nt_ con_ field_ childnt_ tp_ (T_Pattern pattern_) rhs_ defines_ owrt_ origin_ uses_ =-    (T_CRule (\ _lhsIchildren+    (T_CRule (\ _lhsIallNts+                _lhsIchildren                 _lhsIcon                 _lhsIdeclsAbove                 _lhsIerrors@@ -2336,6 +2448,7 @@                 _lhsIprefix                 _lhsIsyn                 _lhsIterminals+                _lhsIunfoldSemDom                 _lhsIwhat ->                   (let _lhsOexprs :: Exprs                        _lhsOusedVars :: (Set String)@@ -2352,46 +2465,50 @@                        _patternIcopy :: Pattern                        _patternIdefinedInsts :: ([Identifier])                        _patternIpatternAttributes :: ([(Identifier, Identifier)])-                       -- "GenerateCode.ag"(line 124, column 12)+                       -- "GenerateCode.ag"(line 140, column 12)                        _instTypes =                            map (\(n,NT t _,_) -> (n,t)) _lhsIhigherOrderChildren-                       -- "GenerateCode.ag"(line 125, column 12)+                       -- "GenerateCode.ag"(line 141, column 12)                        _originComment =                            if  _lhsIo_pretty                                then (Comment origin_:)                                else id-                       -- "GenerateCode.ag"(line 128, column 12)+                       -- "GenerateCode.ag"(line 144, column 12)                        _instDecls =                            [ Decl (Pattern3 (Alias _INST' inst (Underscore (getPos inst)) []))-                                  (App (cataname _lhsIprefix (fromJust $ inst `lookup` _instTypes    ))-                                       [SimpleExpr instLocFieldName])+                                  ( let nm = fromJust $ inst `lookup` _instTypes+                                    in case nm `Set.member` _lhsIallNts of+                                         True  -> App (cataname _lhsIprefix nm)+                                                      [SimpleExpr instLocFieldName]+                                         False -> SimpleExpr instLocFieldName+                                  )                                   (Set.singleton instSemFieldName)                                   (Set.singleton instLocFieldName)                            | inst <- _definedInsts                            , let instLocFieldName = attrname True _INST inst                            , let instSemFieldName = attrname False _INST' inst ]-                       -- "GenerateCode.ag"(line 136, column 12)+                       -- "GenerateCode.ag"(line 156, column 12)                        _patDescr =                            if isIn_                            then "_"                            else concat $ intersperse "," (map (\(f,a) -> show f ++ "." ++ show a) _patternIpatternAttributes)-                       -- "GenerateCode.ag"(line 139, column 12)+                       -- "GenerateCode.ag"(line 159, column 12)                        _traceDescr =                            show nt_ ++ " :: " ++ show con_ ++ " :: " ++ _patDescr-                       -- "GenerateCode.ag"(line 141, column 12)+                       -- "GenerateCode.ag"(line 161, column 12)                        _addTrace =                            \v -> if _lhsIo_traces                                  then Trace _traceDescr     v                                  else v-                       -- "GenerateCode.ag"(line 144, column 12)+                       -- "GenerateCode.ag"(line 164, column 12)                        _costCentreDescr =                            show nt_ ++ ":" ++ show con_ ++ ":" ++ _patDescr-                       -- "GenerateCode.ag"(line 145, column 12)+                       -- "GenerateCode.ag"(line 165, column 12)                        _addCostCentre =                            \v -> if _lhsIo_costcentre                                  then PragmaExpr True False ("SCC \"" ++ _costCentreDescr     ++ "\"") v                                  else v-                       -- "GenerateCode.ag"(line 148, column 12)+                       -- "GenerateCode.ag"(line 168, column 12)                        _addLinePragma =                            \v -> let p = getPos name_                                      hasPos = line p > 0 && column p >= 0 && not (null (file p))@@ -2400,7 +2517,7 @@                                          $ LineExpr                                          $ v                                     else v-                       -- "GenerateCode.ag"(line 155, column 12)+                       -- "GenerateCode.ag"(line 175, column 12)                        _decls =                            if hasCode_                            then _originComment ( Decl (Pattern3 _patternIcopy) (_addTrace     $ _addCostCentre     $ _addLinePragma     $ (TextExpr rhs_))@@ -2408,69 +2525,69 @@                                                       (Set.fromList [attrname True fld nm | (fld,nm) <- Set.toList uses_])                                                : _instDecls    )                            else _instDecls-                       -- "GenerateCode.ag"(line 180, column 12)+                       -- "GenerateCode.ag"(line 200, column 12)                        _definedInsts =                            if isIn_ then [] else _patternIdefinedInsts-                       -- "GenerateCode.ag"(line 250, column 12)-                       _name =+                       -- "GenerateCode.ag"(line 270, column 12)+                       _rulename =                            if  field_ == _LOC && name_ `elem` _lhsIterminals                            then funname name_ 0                            else attrname isIn_ field_ name_-                       -- "GenerateCode.ag"(line 253, column 12)+                       -- "GenerateCode.ag"(line 273, column 12)                        _lhsOexprs =-                           [SimpleExpr _name    ]-                       -- "GenerateCode.ag"(line 265, column 7)+                           [SimpleExpr _rulename    ]+                       -- "GenerateCode.ag"(line 289, column 7)                        _lhsOusedVars =-                           Set.singleton _name-                       -- "GenerateCode.ag"(line 275, column 19)+                           Set.singleton _rulename+                       -- "GenerateCode.ag"(line 299, column 19)                        _mkTp =                            SimpleType . typeToHaskellString (Just _lhsInt) _orgParams-                       -- "GenerateCode.ag"(line 276, column 19)+                       -- "GenerateCode.ag"(line 300, column 19)                        _lhsOtSigs =                            [ TSig (attrname False field attr) (_evalTp     field $ _mkTp (fromJust tp))                            |  (field,attr,tp) <- Map.elems defines_, isJust tp ]-                       -- "GenerateCode.ag"(line 279, column 19)+                       -- "GenerateCode.ag"(line 303, column 19)                        _orgParams =                            map getName $ Map.findWithDefault [] _lhsInt _lhsIparamMap-                       -- "GenerateCode.ag"(line 280, column 19)+                       -- "GenerateCode.ag"(line 304, column 19)                        _evalTp =                            \field tp -> let orgFldParams = map getName $ Map.findWithDefault [] childNt _lhsIparamMap                                             (childNt,instParams) = Map.findWithDefault (_lhsInt,[]) field _lhsIparamInstMap                                             replMap = Map.fromList (zip orgFldParams instParams)-                                            replace k = Map.findWithDefault k k replMap+                                            replace k = Map.findWithDefault ('@':k) k replMap                                         in if null instParams                                            then if null _orgParams                                                 then tp                                                 else idEvalType tp                                            else evalType replace tp-                       -- "GenerateCode.ag"(line 322, column 23)+                       -- "GenerateCode.ag"(line 346, column 23)                        __tup3 =                            maybe ([],False) (\tp -> ([substSelf (fromJust childnt_) tp],True)) tp_-                       -- "GenerateCode.ag"(line 322, column 23)+                       -- "GenerateCode.ag"(line 346, column 23)                        (_lhsOtps,_) =                            __tup3-                       -- "GenerateCode.ag"(line 322, column 23)+                       -- "GenerateCode.ag"(line 346, column 23)                        (_,_lhsOallTpsFound) =                            __tup3-                       -- "GenerateCode.ag"(line 446, column 7)+                       -- "GenerateCode.ag"(line 470, column 7)                        _lhsOdeclsAbove =                            _lhsIdeclsAbove ++ _decls-                       -- "GenerateCode.ag"(line 459, column 7)+                       -- "GenerateCode.ag"(line 483, column 7)                        _lhsObldBlocksFun =                            id-                       -- "GenerateCode.ag"(line 701, column 12)+                       -- "GenerateCode.ag"(line 725, column 12)                        _lhsOerrors =                            let nameOf (Alias _ _ _ pats@(_:_)) = Ident (show (map (\(Alias _ a _ _)->a) pats)) (getPos name_)                                nameOf _ = name_                            in  maybe (Seq.single (MissingTypeSig _lhsInt _lhsIcon (nameOf _patternIcopy))) (const Seq.empty) tp_-                       -- "GenerateCode.ag"(line 741, column 18)+                       -- "GenerateCode.ag"(line 765, column 18)                        _lhsOcomments =                            [ makeLocalComment 11 _lhsIwhat name tp | (field,name,tp) <- Map.elems defines_, field == _LOC ]                            ++ [ makeLocalComment 11 "inst " name tp | (field,name,tp) <- Map.elems defines_, field == _INST ]-                       -- use rule "GenerateCode.ag"(line 122, column 34)+                       -- use rule "GenerateCode.ag"(line 138, column 34)                        _lhsOdecls =                            _decls-                       -- use rule "GenerateCode.ag"(line 175, column 55)+                       -- use rule "GenerateCode.ag"(line 195, column 55)                        _lhsOdefinedInsts =                            _definedInsts                        ( _patternIcopy,_patternIdefinedInsts,_patternIpatternAttributes) =@@ -2545,8 +2662,8 @@                                  String ->                                  Attributes ->                                  ( ([String]),([Decl]),(Map (NontermIdent, Int) ([String], Code.Type)),Decls))-data Inh_CSegment = Inh_CSegment {inh_Inh_CSegment :: Attributes,isLast_Inh_CSegment :: Bool,nr_Inh_CSegment :: Int,nt_Inh_CSegment :: NontermIdent,o_case_Inh_CSegment :: Bool,o_cata_Inh_CSegment :: Bool,o_costcentre_Inh_CSegment :: Bool,o_data_Inh_CSegment :: Maybe Bool,o_linePragmas_Inh_CSegment :: Bool,o_newtypes_Inh_CSegment :: Bool,o_pretty_Inh_CSegment :: Bool,o_rename_Inh_CSegment :: Bool,o_sem_Inh_CSegment :: Bool,o_sig_Inh_CSegment :: Bool,o_splitsems_Inh_CSegment :: Bool,o_strictwrap_Inh_CSegment :: Bool,o_traces_Inh_CSegment :: Bool,o_unbox_Inh_CSegment :: Bool,paramMap_Inh_CSegment :: ParamMap,prefix_Inh_CSegment :: String,syn_Inh_CSegment :: Attributes}-data Syn_CSegment = Syn_CSegment {comments_Syn_CSegment :: [String],semDom_Syn_CSegment :: [Decl],semDomUnfoldGath_Syn_CSegment :: Map (NontermIdent, Int) ([String], Code.Type),wrapDecls_Syn_CSegment :: Decls}+data Inh_CSegment = Inh_CSegment {inh_Inh_CSegment :: !(Attributes),isLast_Inh_CSegment :: !(Bool),nr_Inh_CSegment :: !(Int),nt_Inh_CSegment :: !(NontermIdent),o_case_Inh_CSegment :: !(Bool),o_cata_Inh_CSegment :: !(Bool),o_costcentre_Inh_CSegment :: !(Bool),o_data_Inh_CSegment :: !(Maybe Bool),o_linePragmas_Inh_CSegment :: !(Bool),o_newtypes_Inh_CSegment :: !(Bool),o_pretty_Inh_CSegment :: !(Bool),o_rename_Inh_CSegment :: !(Bool),o_sem_Inh_CSegment :: !(Bool),o_sig_Inh_CSegment :: !(Bool),o_splitsems_Inh_CSegment :: !(Bool),o_strictwrap_Inh_CSegment :: !(Bool),o_traces_Inh_CSegment :: !(Bool),o_unbox_Inh_CSegment :: !(Bool),paramMap_Inh_CSegment :: !(ParamMap),prefix_Inh_CSegment :: !(String),syn_Inh_CSegment :: !(Attributes)}+data Syn_CSegment = Syn_CSegment {comments_Syn_CSegment :: !([String]),semDom_Syn_CSegment :: !([Decl]),semDomUnfoldGath_Syn_CSegment :: !(Map (NontermIdent, Int) ([String], Code.Type)),wrapDecls_Syn_CSegment :: !(Decls)} wrap_CSegment (T_CSegment sem) (Inh_CSegment _lhsIinh _lhsIisLast _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsIsyn) =     (let ( _lhsOcomments,_lhsOsemDom,_lhsOsemDomUnfoldGath,_lhsOwrapDecls) =              (sem _lhsIinh _lhsIisLast _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsIsyn)@@ -2580,24 +2697,24 @@                           _lhsOsemDomUnfoldGath :: (Map (NontermIdent, Int) ([String], Code.Type))                           _lhsOwrapDecls :: Decls                           _lhsOcomments :: ([String])-                          -- "GenerateCode.ag"(line 573, column 15)+                          -- "GenerateCode.ag"(line 597, column 15)                           _tp =                               foldr Arr _synTps     _inhTps-                          -- "GenerateCode.ag"(line 574, column 15)+                          -- "GenerateCode.ag"(line 598, column 15)                           _inhTps =                               [SimpleType (typeToHaskellString (Just _lhsInt) _params     tp) |  tp <- Map.elems inh_]-                          -- "GenerateCode.ag"(line 575, column 15)+                          -- "GenerateCode.ag"(line 599, column 15)                           _synTps =                               mkTupleType _lhsIo_unbox (null _inhTps    ) ([SimpleType (typeToHaskellString (Just _lhsInt) _params     tp) |  tp <- Map.elems syn_] ++ _continuation    )-                          -- "GenerateCode.ag"(line 576, column 15)+                          -- "GenerateCode.ag"(line 600, column 15)                           _continuation =                               if  _lhsIisLast                               then []-                              else [TypeApp (SimpleType (typeName _lhsInt (_lhsInr + 1))) (map SimpleType _params    )]-                          -- "GenerateCode.ag"(line 579, column 15)+                              else [TypeApp (SimpleType (typeName _lhsInt (_lhsInr + 1))) (map (SimpleType . ('@':)) _params    )]+                          -- "GenerateCode.ag"(line 603, column 15)                           _params =                               map getName $ Map.findWithDefault [] _lhsInt _lhsIparamMap-                          -- "GenerateCode.ag"(line 580, column 15)+                          -- "GenerateCode.ag"(line 604, column 15)                           _lhsOsemDom =                               let name = typeName _lhsInt _lhsInr                                   evalTp | null _params     = id@@ -2605,10 +2722,10 @@                               in if _lhsIo_newtypes                                  then [ Code.NewType name _params     name (evalTp _tp    ) ]                                  else [ Code.Type name _params     (evalTp _tp    ) ]-                          -- "GenerateCode.ag"(line 591, column 7)+                          -- "GenerateCode.ag"(line 615, column 7)                           _lhsOsemDomUnfoldGath =                               Map.singleton (_lhsInt, _lhsInr) (_params    , _tp    )-                          -- "GenerateCode.ag"(line 665, column 15)+                          -- "GenerateCode.ag"(line 689, column 15)                           _lhsOwrapDecls =                               let lhsVars = map (lhsname False) (Map.keys syn_)                                             ++ if _lhsIisLast then [] else [unwrap ++ sem (_lhsInr+1)]@@ -2619,7 +2736,7 @@                                   sem 0 = var                                   sem n = var ++ "_" ++ show n                               in [ Decl (mkTupleLhs _lhsIo_unbox (null $ Map.keys inh_) lhsVars) (App (sem _lhsInr) rhs) (Set.fromList lhsVars) (Set.fromList rhsVars) ]-                          -- "GenerateCode.ag"(line 719, column 18)+                          -- "GenerateCode.ag"(line 743, column 18)                           _lhsOcomments =                               let body = map ind (showsSegment (CSegment inh_ syn_))                               in if null body@@ -2689,8 +2806,8 @@                                    String ->                                    Attributes ->                                    ( ([String]),Bool,([Decl]),(Map (NontermIdent, Int) ([String], Code.Type)),Decls))-data Inh_CSegments = Inh_CSegments {inh_Inh_CSegments :: Attributes,nr_Inh_CSegments :: Int,nt_Inh_CSegments :: NontermIdent,o_case_Inh_CSegments :: Bool,o_cata_Inh_CSegments :: Bool,o_costcentre_Inh_CSegments :: Bool,o_data_Inh_CSegments :: Maybe Bool,o_linePragmas_Inh_CSegments :: Bool,o_newtypes_Inh_CSegments :: Bool,o_pretty_Inh_CSegments :: Bool,o_rename_Inh_CSegments :: Bool,o_sem_Inh_CSegments :: Bool,o_sig_Inh_CSegments :: Bool,o_splitsems_Inh_CSegments :: Bool,o_strictwrap_Inh_CSegments :: Bool,o_traces_Inh_CSegments :: Bool,o_unbox_Inh_CSegments :: Bool,paramMap_Inh_CSegments :: ParamMap,prefix_Inh_CSegments :: String,syn_Inh_CSegments :: Attributes}-data Syn_CSegments = Syn_CSegments {comments_Syn_CSegments :: [String],isNil_Syn_CSegments :: Bool,semDom_Syn_CSegments :: [Decl],semDomUnfoldGath_Syn_CSegments :: Map (NontermIdent, Int) ([String], Code.Type),wrapDecls_Syn_CSegments :: Decls}+data Inh_CSegments = Inh_CSegments {inh_Inh_CSegments :: !(Attributes),nr_Inh_CSegments :: !(Int),nt_Inh_CSegments :: !(NontermIdent),o_case_Inh_CSegments :: !(Bool),o_cata_Inh_CSegments :: !(Bool),o_costcentre_Inh_CSegments :: !(Bool),o_data_Inh_CSegments :: !(Maybe Bool),o_linePragmas_Inh_CSegments :: !(Bool),o_newtypes_Inh_CSegments :: !(Bool),o_pretty_Inh_CSegments :: !(Bool),o_rename_Inh_CSegments :: !(Bool),o_sem_Inh_CSegments :: !(Bool),o_sig_Inh_CSegments :: !(Bool),o_splitsems_Inh_CSegments :: !(Bool),o_strictwrap_Inh_CSegments :: !(Bool),o_traces_Inh_CSegments :: !(Bool),o_unbox_Inh_CSegments :: !(Bool),paramMap_Inh_CSegments :: !(ParamMap),prefix_Inh_CSegments :: !(String),syn_Inh_CSegments :: !(Attributes)}+data Syn_CSegments = Syn_CSegments {comments_Syn_CSegments :: !([String]),isNil_Syn_CSegments :: !(Bool),semDom_Syn_CSegments :: !([Decl]),semDomUnfoldGath_Syn_CSegments :: !(Map (NontermIdent, Int) ([String], Code.Type)),wrapDecls_Syn_CSegments :: !(Decls)} wrap_CSegments (T_CSegments sem) (Inh_CSegments _lhsIinh _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsIsyn) =     (let ( _lhsOcomments,_lhsOisNil,_lhsOsemDom,_lhsOsemDomUnfoldGath,_lhsOwrapDecls) =              (sem _lhsIinh _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamMap _lhsIprefix _lhsIsyn)@@ -2774,25 +2891,25 @@                            _tlIsemDom :: ([Decl])                            _tlIsemDomUnfoldGath :: (Map (NontermIdent, Int) ([String], Code.Type))                            _tlIwrapDecls :: Decls-                           -- "GenerateCode.ag"(line 200, column 11)+                           -- "GenerateCode.ag"(line 220, column 11)                            _tlOnr =                                _lhsInr + 1-                           -- "GenerateCode.ag"(line 213, column 12)+                           -- "GenerateCode.ag"(line 233, column 12)                            _lhsOisNil =                                False-                           -- "GenerateCode.ag"(line 214, column 12)+                           -- "GenerateCode.ag"(line 234, column 12)                            _hdOisLast =                                _tlIisNil-                           -- use rule "GenerateCode.ag"(line 714, column 52)+                           -- use rule "GenerateCode.ag"(line 738, column 52)                            _lhsOcomments =                                _hdIcomments ++ _tlIcomments-                           -- use rule "GenerateCode.ag"(line 568, column 50)+                           -- use rule "GenerateCode.ag"(line 592, column 50)                            _lhsOsemDom =                                _hdIsemDom ++ _tlIsemDom-                           -- use rule "GenerateCode.ag"(line 587, column 86)+                           -- use rule "GenerateCode.ag"(line 611, column 86)                            _lhsOsemDomUnfoldGath =                                _hdIsemDomUnfoldGath `Map.union` _tlIsemDomUnfoldGath-                           -- use rule "GenerateCode.ag"(line 663, column 52)+                           -- use rule "GenerateCode.ag"(line 687, column 52)                            _lhsOwrapDecls =                                _hdIwrapDecls ++ _tlIwrapDecls                            -- copy rule (down)@@ -2944,19 +3061,19 @@                            _lhsOsemDom :: ([Decl])                            _lhsOsemDomUnfoldGath :: (Map (NontermIdent, Int) ([String], Code.Type))                            _lhsOwrapDecls :: Decls-                           -- "GenerateCode.ag"(line 215, column 10)+                           -- "GenerateCode.ag"(line 235, column 10)                            _lhsOisNil =                                True-                           -- use rule "GenerateCode.ag"(line 714, column 52)+                           -- use rule "GenerateCode.ag"(line 738, column 52)                            _lhsOcomments =                                []-                           -- use rule "GenerateCode.ag"(line 568, column 50)+                           -- use rule "GenerateCode.ag"(line 592, column 50)                            _lhsOsemDom =                                []-                           -- use rule "GenerateCode.ag"(line 587, column 86)+                           -- use rule "GenerateCode.ag"(line 611, column 86)                            _lhsOsemDomUnfoldGath =                                Map.empty-                           -- use rule "GenerateCode.ag"(line 663, column 52)+                           -- use rule "GenerateCode.ag"(line 687, column 52)                            _lhsOwrapDecls =                                []                        in  ( _lhsOcomments,_lhsOisNil,_lhsOsemDom,_lhsOsemDomUnfoldGath,_lhsOwrapDecls))))@@ -2964,6 +3081,7 @@ {-    visit 0:       inherited attributes:+         allNts               : Set NontermIdent          allPragmas           : PragmaMap          children             : [(Identifier,Type,Bool)]          con                  : ConstructorIdent@@ -3041,7 +3159,8 @@ sem_CVisit (CVisit _inh _syn _vss _intra _ordered) =     (sem_CVisit_CVisit _inh _syn (sem_Sequence _vss) (sem_Sequence _intra) _ordered) -- semantic domain-newtype T_CVisit = T_CVisit (PragmaMap ->+newtype T_CVisit = T_CVisit ((Set NontermIdent) ->+                             PragmaMap ->                              ([(Identifier,Type,Bool)]) ->                              ConstructorIdent ->                              ContextMap ->@@ -3075,11 +3194,11 @@                              (NontermIdent -> Int -> [String] -> Code.Type) ->                              Bool ->                              ( Bool,([String]),Decls,(Seq Error),(Map Identifier Int),Exprs,(Set String),([String])))-data Inh_CVisit = Inh_CVisit {allPragmas_Inh_CVisit :: PragmaMap,children_Inh_CVisit :: [(Identifier,Type,Bool)],con_Inh_CVisit :: ConstructorIdent,contextMap_Inh_CVisit :: ContextMap,errors_Inh_CVisit :: Seq Error,inh_Inh_CVisit :: Attributes,instVisitNrs_Inh_CVisit :: Map Identifier Int,isLast_Inh_CVisit :: Bool,nextIntra_Inh_CVisit :: Exprs,nextIntraVars_Inh_CVisit :: Set String,nr_Inh_CVisit :: Int,nt_Inh_CVisit :: NontermIdent,o_case_Inh_CVisit :: Bool,o_cata_Inh_CVisit :: Bool,o_costcentre_Inh_CVisit :: Bool,o_data_Inh_CVisit :: Maybe Bool,o_linePragmas_Inh_CVisit :: Bool,o_newtypes_Inh_CVisit :: Bool,o_pretty_Inh_CVisit :: Bool,o_rename_Inh_CVisit :: Bool,o_sem_Inh_CVisit :: Bool,o_sig_Inh_CVisit :: Bool,o_splitsems_Inh_CVisit :: Bool,o_strictwrap_Inh_CVisit :: Bool,o_traces_Inh_CVisit :: Bool,o_unbox_Inh_CVisit :: Bool,paramInstMap_Inh_CVisit :: Map Identifier (NontermIdent, [String]),paramMap_Inh_CVisit :: ParamMap,prefix_Inh_CVisit :: String,syn_Inh_CVisit :: Attributes,terminals_Inh_CVisit :: [Identifier],unfoldSemDom_Inh_CVisit :: NontermIdent -> Int -> [String] -> Code.Type,with_sig_Inh_CVisit :: Bool}-data Syn_CVisit = Syn_CVisit {allTpsFound_Syn_CVisit :: Bool,comments_Syn_CVisit :: [String],decls_Syn_CVisit :: Decls,errors_Syn_CVisit :: Seq Error,gatherInstVisitNrs_Syn_CVisit :: Map Identifier Int,intra_Syn_CVisit :: Exprs,intraVars_Syn_CVisit :: Set String,semNames_Syn_CVisit :: [String]}-wrap_CVisit (T_CVisit sem) (Inh_CVisit _lhsIallPragmas _lhsIchildren _lhsIcon _lhsIcontextMap _lhsIerrors _lhsIinh _lhsIinstVisitNrs _lhsIisLast _lhsInextIntra _lhsInextIntraVars _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIwith_sig) =+data Inh_CVisit = Inh_CVisit {allNts_Inh_CVisit :: !(Set NontermIdent),allPragmas_Inh_CVisit :: !(PragmaMap),children_Inh_CVisit :: !([(Identifier,Type,Bool)]),con_Inh_CVisit :: !(ConstructorIdent),contextMap_Inh_CVisit :: !(ContextMap),errors_Inh_CVisit :: !(Seq Error),inh_Inh_CVisit :: !(Attributes),instVisitNrs_Inh_CVisit :: !(Map Identifier Int),isLast_Inh_CVisit :: !(Bool),nextIntra_Inh_CVisit :: !(Exprs),nextIntraVars_Inh_CVisit :: !(Set String),nr_Inh_CVisit :: !(Int),nt_Inh_CVisit :: !(NontermIdent),o_case_Inh_CVisit :: !(Bool),o_cata_Inh_CVisit :: !(Bool),o_costcentre_Inh_CVisit :: !(Bool),o_data_Inh_CVisit :: !(Maybe Bool),o_linePragmas_Inh_CVisit :: !(Bool),o_newtypes_Inh_CVisit :: !(Bool),o_pretty_Inh_CVisit :: !(Bool),o_rename_Inh_CVisit :: !(Bool),o_sem_Inh_CVisit :: !(Bool),o_sig_Inh_CVisit :: !(Bool),o_splitsems_Inh_CVisit :: !(Bool),o_strictwrap_Inh_CVisit :: !(Bool),o_traces_Inh_CVisit :: !(Bool),o_unbox_Inh_CVisit :: !(Bool),paramInstMap_Inh_CVisit :: !(Map Identifier (NontermIdent, [String])),paramMap_Inh_CVisit :: !(ParamMap),prefix_Inh_CVisit :: !(String),syn_Inh_CVisit :: !(Attributes),terminals_Inh_CVisit :: !([Identifier]),unfoldSemDom_Inh_CVisit :: !(NontermIdent -> Int -> [String] -> Code.Type),with_sig_Inh_CVisit :: !(Bool)}+data Syn_CVisit = Syn_CVisit {allTpsFound_Syn_CVisit :: !(Bool),comments_Syn_CVisit :: !([String]),decls_Syn_CVisit :: !(Decls),errors_Syn_CVisit :: !(Seq Error),gatherInstVisitNrs_Syn_CVisit :: !(Map Identifier Int),intra_Syn_CVisit :: !(Exprs),intraVars_Syn_CVisit :: !(Set String),semNames_Syn_CVisit :: !([String])}+wrap_CVisit (T_CVisit sem) (Inh_CVisit _lhsIallNts _lhsIallPragmas _lhsIchildren _lhsIcon _lhsIcontextMap _lhsIerrors _lhsIinh _lhsIinstVisitNrs _lhsIisLast _lhsInextIntra _lhsInextIntraVars _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIwith_sig) =     (let ( _lhsOallTpsFound,_lhsOcomments,_lhsOdecls,_lhsOerrors,_lhsOgatherInstVisitNrs,_lhsOintra,_lhsOintraVars,_lhsOsemNames) =-             (sem _lhsIallPragmas _lhsIchildren _lhsIcon _lhsIcontextMap _lhsIerrors _lhsIinh _lhsIinstVisitNrs _lhsIisLast _lhsInextIntra _lhsInextIntraVars _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIwith_sig)+             (sem _lhsIallNts _lhsIallPragmas _lhsIchildren _lhsIcon _lhsIcontextMap _lhsIerrors _lhsIinh _lhsIinstVisitNrs _lhsIisLast _lhsInextIntra _lhsInextIntraVars _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIwith_sig)      in  (Syn_CVisit _lhsOallTpsFound _lhsOcomments _lhsOdecls _lhsOerrors _lhsOgatherInstVisitNrs _lhsOintra _lhsOintraVars _lhsOsemNames)) sem_CVisit_CVisit :: Attributes ->                      Attributes ->@@ -3088,7 +3207,8 @@                      Bool ->                      T_CVisit sem_CVisit_CVisit inh_ syn_ (T_Sequence vss_) (T_Sequence intra_) ordered_ =-    (T_CVisit (\ _lhsIallPragmas+    (T_CVisit (\ _lhsIallNts+                 _lhsIallPragmas                  _lhsIchildren                  _lhsIcon                  _lhsIcontextMap@@ -3135,6 +3255,7 @@                         _vssOwhat :: String                         _intraOwhat :: String                         _lhsOsemNames :: ([String])+                        _vssOallNts :: (Set NontermIdent)                         _vssOchildren :: ([(Identifier,Type,Bool)])                         _vssOcon :: ConstructorIdent                         _vssOerrors :: (Seq Error)@@ -3162,6 +3283,8 @@                         _vssOprefix :: String                         _vssOsyn :: Attributes                         _vssOterminals :: ([Identifier])+                        _vssOunfoldSemDom :: (NontermIdent -> Int -> [String] -> Code.Type)+                        _intraOallNts :: (Set NontermIdent)                         _intraOchildren :: ([(Identifier,Type,Bool)])                         _intraOcon :: ConstructorIdent                         _intraOerrors :: (Seq Error)@@ -3189,6 +3312,7 @@                         _intraOprefix :: String                         _intraOsyn :: Attributes                         _intraOterminals :: ([Identifier])+                        _intraOunfoldSemDom :: (NontermIdent -> Int -> [String] -> Code.Type)                         _vssIallTpsFound :: Bool                         _vssIblockDecls :: DeclBlocks                         _vssIcomments :: ([String])@@ -3211,28 +3335,28 @@                         _intraItSigs :: ([Decl])                         _intraItps :: ([Type])                         _intraIusedVars :: (Set String)-                        -- "GenerateCode.ag"(line 224, column 13)+                        -- "GenerateCode.ag"(line 244, column 13)                         _lhsOintra =                             _intraIexprs-                        -- "GenerateCode.ag"(line 225, column 13)+                        -- "GenerateCode.ag"(line 245, column 13)                         _lhsOintraVars =                             _intraIusedVars-                        -- "GenerateCode.ag"(line 333, column 13)+                        -- "GenerateCode.ag"(line 357, column 13)                         __tup4 =                             partition (\(_,_,ho) -> ho) _lhsIchildren-                        -- "GenerateCode.ag"(line 333, column 13)+                        -- "GenerateCode.ag"(line 357, column 13)                         (_higherOrderChildren,_) =                             __tup4-                        -- "GenerateCode.ag"(line 333, column 13)+                        -- "GenerateCode.ag"(line 357, column 13)                         (_,_firstOrderChildren) =                             __tup4-                        -- "GenerateCode.ag"(line 334, column 13)+                        -- "GenerateCode.ag"(line 358, column 13)                         _funcname =                             seqSemname _lhsIprefix _lhsInt _lhsIcon _lhsInr-                        -- "GenerateCode.ag"(line 335, column 13)+                        -- "GenerateCode.ag"(line 359, column 13)                         _nextVisitName =                             if _lhsIisLast then [] else [visitname _lhsIprefix _lhsInt (_lhsInr+1)]-                        -- "GenerateCode.ag"(line 336, column 13)+                        -- "GenerateCode.ag"(line 360, column 13)                         _nextVisitDecl =                             let  lhs = TupleLhs _nextVisitName                                  rhs = App fun _lhsInextIntra@@ -3240,39 +3364,39 @@                             in if _lhsIisLast                                then []                                else [Decl lhs rhs (Set.fromList _nextVisitName) _lhsInextIntraVars]-                        -- "GenerateCode.ag"(line 342, column 13)+                        -- "GenerateCode.ag"(line 366, column 13)                         _decls =                             _typeSigs ++ _vssIdecls ++ _nextVisitDecl-                        -- "GenerateCode.ag"(line 343, column 13)+                        -- "GenerateCode.ag"(line 367, column 13)                         _vssOlastExpr =                             mkTupleExpr _lhsIo_unbox (null $ Map.keys inh_) $ map (SimpleExpr . lhsname False) (Map.keys syn_) ++ map SimpleExpr _nextVisitName-                        -- "GenerateCode.ag"(line 344, column 13)+                        -- "GenerateCode.ag"(line 368, column 13)                         _intraOlastExpr =                             error "lastExpr: not used here"-                        -- "GenerateCode.ag"(line 345, column 13)+                        -- "GenerateCode.ag"(line 369, column 13)                         _lastExprVars =                             map (lhsname False) (Map.keys syn_) ++ _nextVisitName-                        -- "GenerateCode.ag"(line 346, column 13)+                        -- "GenerateCode.ag"(line 370, column 13)                         __tup5 =                             mkPartitionedFunction _funcname     _o_case     _nextVisitDecl     _lastExprVars     _vssIblockDecls-                        -- "GenerateCode.ag"(line 346, column 13)+                        -- "GenerateCode.ag"(line 370, column 13)                         (_blockFunDecls,_) =                             __tup5-                        -- "GenerateCode.ag"(line 346, column 13)+                        -- "GenerateCode.ag"(line 370, column 13)                         (_,_blockFirstFunCall) =                             __tup5-                        -- "GenerateCode.ag"(line 348, column 13)+                        -- "GenerateCode.ag"(line 372, column 13)                         _costCentreDescr =                             "b" ++ ":" ++ show _lhsInt ++ ":" ++ show _lhsIcon ++ ":" ++ show _lhsInr-                        -- "GenerateCode.ag"(line 349, column 13)+                        -- "GenerateCode.ag"(line 373, column 13)                         _addCostCentre =                             \v -> if _lhsIo_costcentre                                   then PragmaExpr True False ("SCC \"" ++ _costCentreDescr     ++ "\"") v                                   else v-                        -- "GenerateCode.ag"(line 353, column 13)+                        -- "GenerateCode.ag"(line 377, column 13)                         _params =                             map getName $ Map.findWithDefault [] _lhsInt _lhsIparamMap-                        -- "GenerateCode.ag"(line 354, column 13)+                        -- "GenerateCode.ag"(line 378, column 13)                         _semFun =                             let  lhs = Fun _funcname lhs_args                                  lhs_args = if _lhsInr == 0 then map field _firstOrderChildren     else _intraIexprs@@ -3284,7 +3408,7 @@                                  field (name,tp,_)        = let expr = SimpleExpr (funname name 0)                                                             in if null _params                                                                then expr-                                                               else TypedExpr expr (SimpleType (typeToHaskellString (Just _lhsInt) _params     tp))+                                                               else TypedExpr expr (idEvalType $ SimpleType (typeToHaskellString (Just _lhsInt) _params     tp))                                  mbEvalTp | null _params     = const Nothing                                           | otherwise        = Just . idEvalType                                  rhs = wrap@@ -3299,10 +3423,10 @@                                             then \x -> App (typeName _lhsInt _lhsInr) [x]                                             else id                             in Decl lhs rhs Set.empty Set.empty-                        -- "GenerateCode.ag"(line 384, column 13)+                        -- "GenerateCode.ag"(line 408, column 13)                         _tsig =                             TSig _funcname _semType-                        -- "GenerateCode.ag"(line 385, column 13)+                        -- "GenerateCode.ag"(line 409, column 13)                         _semType =                             let argType (NT tp tps)  rec | tp /= _SELF = typeAppStrs (sdtype tp) tps `Arr` rec                                                          | tp == _SELF = error "GenerateCode: found an intra-type with type SELF, which should have been prevented by CRule.tps"@@ -3313,7 +3437,7 @@                                if  _lhsInr == 0                                    then foldr argType (typeAppStrs (sdtype   _lhsInt        ) _params    ) (map (\(_,t,_) -> t) _firstOrderChildren    )                                    else foldr argType (typeAppStrs (typeName _lhsInt _lhsInr) _params    ) _intraItps-                        -- "GenerateCode.ag"(line 396, column 13)+                        -- "GenerateCode.ag"(line 420, column 13)                         _lhsOdecls =                             ( if  _lhsIwith_sig                               then [_tsig, _semFun]@@ -3323,48 +3447,51 @@                               then _blockFunDecls                               else []                             )-                        -- "GenerateCode.ag"(line 404, column 13)+                        -- "GenerateCode.ag"(line 428, column 13)                         _typeSigs =                             if  _lhsIo_sig && not _o_case                                 then  _vssItSigs                                 else  []-                        -- "GenerateCode.ag"(line 407, column 13)+                        -- "GenerateCode.ag"(line 431, column 13)                         _o_case =                             _lhsIo_case && ordered_ && not (hasPragma _lhsIallPragmas _lhsInt _lhsIcon _NOCASE)-                        -- "GenerateCode.ag"(line 408, column 13)+                        -- "GenerateCode.ag"(line 432, column 13)                         _o_splitsems =                             ordered_ && _lhsIo_splitsems-                        -- "GenerateCode.ag"(line 430, column 7)+                        -- "GenerateCode.ag"(line 454, column 7)                         _lhsOgatherInstVisitNrs =                             Map.fromList [(i,_lhsInr) | i <- _vssIdefinedInsts]-                        -- "GenerateCode.ag"(line 441, column 7)+                        -- "GenerateCode.ag"(line 465, column 7)                         _vssOdeclsAbove =                             []-                        -- "GenerateCode.ag"(line 442, column 7)+                        -- "GenerateCode.ag"(line 466, column 7)                         _intraOdeclsAbove =                             error "declsAbove: not used here"-                        -- "GenerateCode.ag"(line 688, column 13)+                        -- "GenerateCode.ag"(line 712, column 13)                         _lhsOallTpsFound =                             _intraIallTpsFound-                        -- "GenerateCode.ag"(line 699, column 13)+                        -- "GenerateCode.ag"(line 723, column 13)                         _lhsOerrors =                             _intraIerrors-                        -- "GenerateCode.ag"(line 732, column 18)+                        -- "GenerateCode.ag"(line 756, column 18)                         _lhsOcomments =                             let body = map ind (_vssIcomments ++ _intraIcomments)                             in if null body                                then []                                else ("visit " ++ show _lhsInr ++ ":") : body-                        -- "GenerateCode.ag"(line 736, column 18)+                        -- "GenerateCode.ag"(line 760, column 18)                         _vssOwhat =                             "local"-                        -- "GenerateCode.ag"(line 737, column 18)+                        -- "GenerateCode.ag"(line 761, column 18)                         _intraOwhat =                             "intra"-                        -- "GenerateCode.ag"(line 920, column 7)+                        -- "GenerateCode.ag"(line 987, column 7)                         _lhsOsemNames =                             [_funcname    ]                         -- copy rule (down)+                        _vssOallNts =+                            _lhsIallNts+                        -- copy rule (down)                         _vssOchildren =                             _lhsIchildren                         -- copy rule (down)@@ -3446,6 +3573,12 @@                         _vssOterminals =                             _lhsIterminals                         -- copy rule (down)+                        _vssOunfoldSemDom =+                            _lhsIunfoldSemDom+                        -- copy rule (down)+                        _intraOallNts =+                            _lhsIallNts+                        -- copy rule (down)                         _intraOchildren =                             _lhsIchildren                         -- copy rule (down)@@ -3526,15 +3659,19 @@                         -- copy rule (down)                         _intraOterminals =                             _lhsIterminals+                        -- copy rule (down)+                        _intraOunfoldSemDom =+                            _lhsIunfoldSemDom                         ( _vssIallTpsFound,_vssIblockDecls,_vssIcomments,_vssIdecls,_vssIdeclsAbove,_vssIdefinedInsts,_vssIerrors,_vssIexprs,_vssItSigs,_vssItps,_vssIusedVars) =-                            (vss_ _vssOchildren _vssOcon _vssOdeclsAbove _vssOerrors _vssOhigherOrderChildren _vssOinh _vssOinstVisitNrs _vssOlastExpr _vssOnr _vssOnt _vssOo_case _vssOo_cata _vssOo_costcentre _vssOo_data _vssOo_linePragmas _vssOo_newtypes _vssOo_pretty _vssOo_rename _vssOo_sem _vssOo_sig _vssOo_splitsems _vssOo_strictwrap _vssOo_traces _vssOo_unbox _vssOparamInstMap _vssOparamMap _vssOprefix _vssOsyn _vssOterminals _vssOwhat)+                            (vss_ _vssOallNts _vssOchildren _vssOcon _vssOdeclsAbove _vssOerrors _vssOhigherOrderChildren _vssOinh _vssOinstVisitNrs _vssOlastExpr _vssOnr _vssOnt _vssOo_case _vssOo_cata _vssOo_costcentre _vssOo_data _vssOo_linePragmas _vssOo_newtypes _vssOo_pretty _vssOo_rename _vssOo_sem _vssOo_sig _vssOo_splitsems _vssOo_strictwrap _vssOo_traces _vssOo_unbox _vssOparamInstMap _vssOparamMap _vssOprefix _vssOsyn _vssOterminals _vssOunfoldSemDom _vssOwhat)                         ( _intraIallTpsFound,_intraIblockDecls,_intraIcomments,_intraIdecls,_intraIdeclsAbove,_intraIdefinedInsts,_intraIerrors,_intraIexprs,_intraItSigs,_intraItps,_intraIusedVars) =-                            (intra_ _intraOchildren _intraOcon _intraOdeclsAbove _intraOerrors _intraOhigherOrderChildren _intraOinh _intraOinstVisitNrs _intraOlastExpr _intraOnr _intraOnt _intraOo_case _intraOo_cata _intraOo_costcentre _intraOo_data _intraOo_linePragmas _intraOo_newtypes _intraOo_pretty _intraOo_rename _intraOo_sem _intraOo_sig _intraOo_splitsems _intraOo_strictwrap _intraOo_traces _intraOo_unbox _intraOparamInstMap _intraOparamMap _intraOprefix _intraOsyn _intraOterminals _intraOwhat)+                            (intra_ _intraOallNts _intraOchildren _intraOcon _intraOdeclsAbove _intraOerrors _intraOhigherOrderChildren _intraOinh _intraOinstVisitNrs _intraOlastExpr _intraOnr _intraOnt _intraOo_case _intraOo_cata _intraOo_costcentre _intraOo_data _intraOo_linePragmas _intraOo_newtypes _intraOo_pretty _intraOo_rename _intraOo_sem _intraOo_sig _intraOo_splitsems _intraOo_strictwrap _intraOo_traces _intraOo_unbox _intraOparamInstMap _intraOparamMap _intraOprefix _intraOsyn _intraOterminals _intraOunfoldSemDom _intraOwhat)                     in  ( _lhsOallTpsFound,_lhsOcomments,_lhsOdecls,_lhsOerrors,_lhsOgatherInstVisitNrs,_lhsOintra,_lhsOintraVars,_lhsOsemNames)))) -- CVisits ----------------------------------------------------- {-    visit 0:       inherited attributes:+         allNts               : Set NontermIdent          allPragmas           : PragmaMap          children             : [(Identifier,Type,Bool)]          con                  : ConstructorIdent@@ -3587,7 +3724,8 @@ sem_CVisits list =     (Prelude.foldr sem_CVisits_Cons sem_CVisits_Nil (Prelude.map sem_CVisit list)) -- semantic domain-newtype T_CVisits = T_CVisits (PragmaMap ->+newtype T_CVisits = T_CVisits ((Set NontermIdent) ->+                               PragmaMap ->                                ([(Identifier,Type,Bool)]) ->                                ConstructorIdent ->                                ContextMap ->@@ -3618,17 +3756,18 @@                                (NontermIdent -> Int -> [String] -> Code.Type) ->                                Bool ->                                ( Bool,([String]),Decls,(Seq Error),(Map Identifier Int),Exprs,(Set String),Bool,([String])))-data Inh_CVisits = Inh_CVisits {allPragmas_Inh_CVisits :: PragmaMap,children_Inh_CVisits :: [(Identifier,Type,Bool)],con_Inh_CVisits :: ConstructorIdent,contextMap_Inh_CVisits :: ContextMap,errors_Inh_CVisits :: Seq Error,inh_Inh_CVisits :: Attributes,instVisitNrs_Inh_CVisits :: Map Identifier Int,nr_Inh_CVisits :: Int,nt_Inh_CVisits :: NontermIdent,o_case_Inh_CVisits :: Bool,o_cata_Inh_CVisits :: Bool,o_costcentre_Inh_CVisits :: Bool,o_data_Inh_CVisits :: Maybe Bool,o_linePragmas_Inh_CVisits :: Bool,o_newtypes_Inh_CVisits :: Bool,o_pretty_Inh_CVisits :: Bool,o_rename_Inh_CVisits :: Bool,o_sem_Inh_CVisits :: Bool,o_sig_Inh_CVisits :: Bool,o_splitsems_Inh_CVisits :: Bool,o_strictwrap_Inh_CVisits :: Bool,o_traces_Inh_CVisits :: Bool,o_unbox_Inh_CVisits :: Bool,paramInstMap_Inh_CVisits :: Map Identifier (NontermIdent, [String]),paramMap_Inh_CVisits :: ParamMap,prefix_Inh_CVisits :: String,syn_Inh_CVisits :: Attributes,terminals_Inh_CVisits :: [Identifier],unfoldSemDom_Inh_CVisits :: NontermIdent -> Int -> [String] -> Code.Type,with_sig_Inh_CVisits :: Bool}-data Syn_CVisits = Syn_CVisits {allTpsFound_Syn_CVisits :: Bool,comments_Syn_CVisits :: [String],decls_Syn_CVisits :: Decls,errors_Syn_CVisits :: Seq Error,gatherInstVisitNrs_Syn_CVisits :: Map Identifier Int,intra_Syn_CVisits :: Exprs,intraVars_Syn_CVisits :: Set String,isNil_Syn_CVisits :: Bool,semNames_Syn_CVisits :: [String]}-wrap_CVisits (T_CVisits sem) (Inh_CVisits _lhsIallPragmas _lhsIchildren _lhsIcon _lhsIcontextMap _lhsIerrors _lhsIinh _lhsIinstVisitNrs _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIwith_sig) =+data Inh_CVisits = Inh_CVisits {allNts_Inh_CVisits :: !(Set NontermIdent),allPragmas_Inh_CVisits :: !(PragmaMap),children_Inh_CVisits :: !([(Identifier,Type,Bool)]),con_Inh_CVisits :: !(ConstructorIdent),contextMap_Inh_CVisits :: !(ContextMap),errors_Inh_CVisits :: !(Seq Error),inh_Inh_CVisits :: !(Attributes),instVisitNrs_Inh_CVisits :: !(Map Identifier Int),nr_Inh_CVisits :: !(Int),nt_Inh_CVisits :: !(NontermIdent),o_case_Inh_CVisits :: !(Bool),o_cata_Inh_CVisits :: !(Bool),o_costcentre_Inh_CVisits :: !(Bool),o_data_Inh_CVisits :: !(Maybe Bool),o_linePragmas_Inh_CVisits :: !(Bool),o_newtypes_Inh_CVisits :: !(Bool),o_pretty_Inh_CVisits :: !(Bool),o_rename_Inh_CVisits :: !(Bool),o_sem_Inh_CVisits :: !(Bool),o_sig_Inh_CVisits :: !(Bool),o_splitsems_Inh_CVisits :: !(Bool),o_strictwrap_Inh_CVisits :: !(Bool),o_traces_Inh_CVisits :: !(Bool),o_unbox_Inh_CVisits :: !(Bool),paramInstMap_Inh_CVisits :: !(Map Identifier (NontermIdent, [String])),paramMap_Inh_CVisits :: !(ParamMap),prefix_Inh_CVisits :: !(String),syn_Inh_CVisits :: !(Attributes),terminals_Inh_CVisits :: !([Identifier]),unfoldSemDom_Inh_CVisits :: !(NontermIdent -> Int -> [String] -> Code.Type),with_sig_Inh_CVisits :: !(Bool)}+data Syn_CVisits = Syn_CVisits {allTpsFound_Syn_CVisits :: !(Bool),comments_Syn_CVisits :: !([String]),decls_Syn_CVisits :: !(Decls),errors_Syn_CVisits :: !(Seq Error),gatherInstVisitNrs_Syn_CVisits :: !(Map Identifier Int),intra_Syn_CVisits :: !(Exprs),intraVars_Syn_CVisits :: !(Set String),isNil_Syn_CVisits :: !(Bool),semNames_Syn_CVisits :: !([String])}+wrap_CVisits (T_CVisits sem) (Inh_CVisits _lhsIallNts _lhsIallPragmas _lhsIchildren _lhsIcon _lhsIcontextMap _lhsIerrors _lhsIinh _lhsIinstVisitNrs _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIwith_sig) =     (let ( _lhsOallTpsFound,_lhsOcomments,_lhsOdecls,_lhsOerrors,_lhsOgatherInstVisitNrs,_lhsOintra,_lhsOintraVars,_lhsOisNil,_lhsOsemNames) =-             (sem _lhsIallPragmas _lhsIchildren _lhsIcon _lhsIcontextMap _lhsIerrors _lhsIinh _lhsIinstVisitNrs _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIwith_sig)+             (sem _lhsIallNts _lhsIallPragmas _lhsIchildren _lhsIcon _lhsIcontextMap _lhsIerrors _lhsIinh _lhsIinstVisitNrs _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIwith_sig)      in  (Syn_CVisits _lhsOallTpsFound _lhsOcomments _lhsOdecls _lhsOerrors _lhsOgatherInstVisitNrs _lhsOintra _lhsOintraVars _lhsOisNil _lhsOsemNames)) sem_CVisits_Cons :: T_CVisit ->                     T_CVisits ->                     T_CVisits sem_CVisits_Cons (T_CVisit hd_) (T_CVisits tl_) =-    (T_CVisits (\ _lhsIallPragmas+    (T_CVisits (\ _lhsIallNts+                  _lhsIallPragmas                   _lhsIchildren                   _lhsIcon                   _lhsIcontextMap@@ -3671,6 +3810,7 @@                          _lhsOerrors :: (Seq Error)                          _lhsOgatherInstVisitNrs :: (Map Identifier Int)                          _lhsOsemNames :: ([String])+                         _hdOallNts :: (Set NontermIdent)                          _hdOallPragmas :: PragmaMap                          _hdOchildren :: ([(Identifier,Type,Bool)])                          _hdOcon :: ConstructorIdent@@ -3701,6 +3841,7 @@                          _hdOterminals :: ([Identifier])                          _hdOunfoldSemDom :: (NontermIdent -> Int -> [String] -> Code.Type)                          _hdOwith_sig :: Bool+                         _tlOallNts :: (Set NontermIdent)                          _tlOallPragmas :: PragmaMap                          _tlOchildren :: ([(Identifier,Type,Bool)])                          _tlOcon :: ConstructorIdent@@ -3747,46 +3888,49 @@                          _tlIintraVars :: (Set String)                          _tlIisNil :: Bool                          _tlIsemNames :: ([String])-                         -- "GenerateCode.ag"(line 196, column 11)+                         -- "GenerateCode.ag"(line 216, column 11)                          _tlOnr =                              _lhsInr + 1-                         -- "GenerateCode.ag"(line 209, column 12)+                         -- "GenerateCode.ag"(line 229, column 12)                          _lhsOisNil =                              False-                         -- "GenerateCode.ag"(line 210, column 12)+                         -- "GenerateCode.ag"(line 230, column 12)                          _hdOisLast =                              _tlIisNil-                         -- "GenerateCode.ag"(line 227, column 12)+                         -- "GenerateCode.ag"(line 247, column 12)                          _hdOnextIntra =                              _tlIintra-                         -- "GenerateCode.ag"(line 228, column 12)+                         -- "GenerateCode.ag"(line 248, column 12)                          _hdOnextIntraVars =                              _tlIintraVars-                         -- "GenerateCode.ag"(line 229, column 12)+                         -- "GenerateCode.ag"(line 249, column 12)                          _lhsOintra =                              _hdIintra-                         -- "GenerateCode.ag"(line 230, column 12)+                         -- "GenerateCode.ag"(line 250, column 12)                          _lhsOintraVars =                              _hdIintraVars-                         -- use rule "GenerateCode.ag"(line 682, column 39)+                         -- use rule "GenerateCode.ag"(line 706, column 39)                          _lhsOallTpsFound =                              _hdIallTpsFound && _tlIallTpsFound-                         -- use rule "GenerateCode.ag"(line 714, column 52)+                         -- use rule "GenerateCode.ag"(line 738, column 52)                          _lhsOcomments =                              _hdIcomments ++ _tlIcomments-                         -- use rule "GenerateCode.ag"(line 331, column 33)+                         -- use rule "GenerateCode.ag"(line 355, column 33)                          _lhsOdecls =                              _hdIdecls ++ _tlIdecls-                         -- use rule "GenerateCode.ag"(line 695, column 32)+                         -- use rule "GenerateCode.ag"(line 719, column 32)                          _lhsOerrors =                              _hdIerrors Seq.<> _tlIerrors-                         -- use rule "GenerateCode.ag"(line 423, column 44)+                         -- use rule "GenerateCode.ag"(line 447, column 44)                          _lhsOgatherInstVisitNrs =                              _hdIgatherInstVisitNrs `Map.union` _tlIgatherInstVisitNrs-                         -- use rule "GenerateCode.ag"(line 910, column 61)+                         -- use rule "GenerateCode.ag"(line 977, column 61)                          _lhsOsemNames =                              _hdIsemNames ++ _tlIsemNames                          -- copy rule (down)+                         _hdOallNts =+                             _lhsIallNts+                         -- copy rule (down)                          _hdOallPragmas =                              _lhsIallPragmas                          -- copy rule (down)@@ -3877,6 +4021,9 @@                          _hdOwith_sig =                              _lhsIwith_sig                          -- copy rule (down)+                         _tlOallNts =+                             _lhsIallNts+                         -- copy rule (down)                          _tlOallPragmas =                              _lhsIallPragmas                          -- copy rule (down)@@ -3964,13 +4111,14 @@                          _tlOwith_sig =                              _lhsIwith_sig                          ( _hdIallTpsFound,_hdIcomments,_hdIdecls,_hdIerrors,_hdIgatherInstVisitNrs,_hdIintra,_hdIintraVars,_hdIsemNames) =-                             (hd_ _hdOallPragmas _hdOchildren _hdOcon _hdOcontextMap _hdOerrors _hdOinh _hdOinstVisitNrs _hdOisLast _hdOnextIntra _hdOnextIntraVars _hdOnr _hdOnt _hdOo_case _hdOo_cata _hdOo_costcentre _hdOo_data _hdOo_linePragmas _hdOo_newtypes _hdOo_pretty _hdOo_rename _hdOo_sem _hdOo_sig _hdOo_splitsems _hdOo_strictwrap _hdOo_traces _hdOo_unbox _hdOparamInstMap _hdOparamMap _hdOprefix _hdOsyn _hdOterminals _hdOunfoldSemDom _hdOwith_sig)+                             (hd_ _hdOallNts _hdOallPragmas _hdOchildren _hdOcon _hdOcontextMap _hdOerrors _hdOinh _hdOinstVisitNrs _hdOisLast _hdOnextIntra _hdOnextIntraVars _hdOnr _hdOnt _hdOo_case _hdOo_cata _hdOo_costcentre _hdOo_data _hdOo_linePragmas _hdOo_newtypes _hdOo_pretty _hdOo_rename _hdOo_sem _hdOo_sig _hdOo_splitsems _hdOo_strictwrap _hdOo_traces _hdOo_unbox _hdOparamInstMap _hdOparamMap _hdOprefix _hdOsyn _hdOterminals _hdOunfoldSemDom _hdOwith_sig)                          ( _tlIallTpsFound,_tlIcomments,_tlIdecls,_tlIerrors,_tlIgatherInstVisitNrs,_tlIintra,_tlIintraVars,_tlIisNil,_tlIsemNames) =-                             (tl_ _tlOallPragmas _tlOchildren _tlOcon _tlOcontextMap _tlOerrors _tlOinh _tlOinstVisitNrs _tlOnr _tlOnt _tlOo_case _tlOo_cata _tlOo_costcentre _tlOo_data _tlOo_linePragmas _tlOo_newtypes _tlOo_pretty _tlOo_rename _tlOo_sem _tlOo_sig _tlOo_splitsems _tlOo_strictwrap _tlOo_traces _tlOo_unbox _tlOparamInstMap _tlOparamMap _tlOprefix _tlOsyn _tlOterminals _tlOunfoldSemDom _tlOwith_sig)+                             (tl_ _tlOallNts _tlOallPragmas _tlOchildren _tlOcon _tlOcontextMap _tlOerrors _tlOinh _tlOinstVisitNrs _tlOnr _tlOnt _tlOo_case _tlOo_cata _tlOo_costcentre _tlOo_data _tlOo_linePragmas _tlOo_newtypes _tlOo_pretty _tlOo_rename _tlOo_sem _tlOo_sig _tlOo_splitsems _tlOo_strictwrap _tlOo_traces _tlOo_unbox _tlOparamInstMap _tlOparamMap _tlOprefix _tlOsyn _tlOterminals _tlOunfoldSemDom _tlOwith_sig)                      in  ( _lhsOallTpsFound,_lhsOcomments,_lhsOdecls,_lhsOerrors,_lhsOgatherInstVisitNrs,_lhsOintra,_lhsOintraVars,_lhsOisNil,_lhsOsemNames)))) sem_CVisits_Nil :: T_CVisits sem_CVisits_Nil  =-    (T_CVisits (\ _lhsIallPragmas+    (T_CVisits (\ _lhsIallNts+                  _lhsIallPragmas                   _lhsIchildren                   _lhsIcon                   _lhsIcontextMap@@ -4009,31 +4157,31 @@                          _lhsOerrors :: (Seq Error)                          _lhsOgatherInstVisitNrs :: (Map Identifier Int)                          _lhsOsemNames :: ([String])-                         -- "GenerateCode.ag"(line 211, column 10)+                         -- "GenerateCode.ag"(line 231, column 10)                          _lhsOisNil =                              True-                         -- "GenerateCode.ag"(line 231, column 10)+                         -- "GenerateCode.ag"(line 251, column 10)                          _lhsOintra =                              []-                         -- "GenerateCode.ag"(line 232, column 10)+                         -- "GenerateCode.ag"(line 252, column 10)                          _lhsOintraVars =                              Set.empty-                         -- use rule "GenerateCode.ag"(line 682, column 39)+                         -- use rule "GenerateCode.ag"(line 706, column 39)                          _lhsOallTpsFound =                              True-                         -- use rule "GenerateCode.ag"(line 714, column 52)+                         -- use rule "GenerateCode.ag"(line 738, column 52)                          _lhsOcomments =                              []-                         -- use rule "GenerateCode.ag"(line 331, column 33)+                         -- use rule "GenerateCode.ag"(line 355, column 33)                          _lhsOdecls =                              []-                         -- use rule "GenerateCode.ag"(line 695, column 32)+                         -- use rule "GenerateCode.ag"(line 719, column 32)                          _lhsOerrors =                              Seq.empty-                         -- use rule "GenerateCode.ag"(line 423, column 44)+                         -- use rule "GenerateCode.ag"(line 447, column 44)                          _lhsOgatherInstVisitNrs =                              Map.empty-                         -- use rule "GenerateCode.ag"(line 910, column 61)+                         -- use rule "GenerateCode.ag"(line 977, column 61)                          _lhsOsemNames =                              []                      in  ( _lhsOallTpsFound,_lhsOcomments,_lhsOdecls,_lhsOerrors,_lhsOgatherInstVisitNrs,_lhsOintra,_lhsOintraVars,_lhsOisNil,_lhsOsemNames))))@@ -4082,8 +4230,8 @@                                      Bool ->                                      String ->                                      ( Expr,([Decl]),([String])))-data Inh_DeclBlocks = Inh_DeclBlocks {blockNr_Inh_DeclBlocks :: Int,lastExprVars_Inh_DeclBlocks :: [String],nextVisitDecls_Inh_DeclBlocks :: [Decl],optCase_Inh_DeclBlocks :: Bool,prefix_Inh_DeclBlocks :: String}-data Syn_DeclBlocks = Syn_DeclBlocks {callExpr_Syn_DeclBlocks :: Expr,decls_Syn_DeclBlocks :: [Decl],freeVars_Syn_DeclBlocks :: [String]}+data Inh_DeclBlocks = Inh_DeclBlocks {blockNr_Inh_DeclBlocks :: !(Int),lastExprVars_Inh_DeclBlocks :: !([String]),nextVisitDecls_Inh_DeclBlocks :: !([Decl]),optCase_Inh_DeclBlocks :: !(Bool),prefix_Inh_DeclBlocks :: !(String)}+data Syn_DeclBlocks = Syn_DeclBlocks {callExpr_Syn_DeclBlocks :: !(Expr),decls_Syn_DeclBlocks :: !([Decl]),freeVars_Syn_DeclBlocks :: !([String])} wrap_DeclBlocks (T_DeclBlocks sem) (Inh_DeclBlocks _lhsIblockNr _lhsIlastExprVars _lhsInextVisitDecls _lhsIoptCase _lhsIprefix) =     (let ( _lhsOcallExpr,_lhsOdecls,_lhsOfreeVars) =              (sem _lhsIblockNr _lhsIlastExprVars _lhsInextVisitDecls _lhsIoptCase _lhsIprefix)@@ -4109,25 +4257,25 @@                             _nextIcallExpr :: Expr                             _nextIdecls :: ([Decl])                             _nextIfreeVars :: ([String])-                            -- "GenerateCode.ag"(line 520, column 7)+                            -- "GenerateCode.ag"(line 544, column 7)                             _nextOblockNr =                                 _lhsIblockNr + 1-                            -- "GenerateCode.ag"(line 525, column 7)+                            -- "GenerateCode.ag"(line 549, column 7)                             _lambdaName =                                 _lhsIprefix ++ "_block" ++ show _lhsIblockNr-                            -- "GenerateCode.ag"(line 526, column 7)+                            -- "GenerateCode.ag"(line 550, column 7)                             _pragmaDecl =                                 PragmaDecl ("NOINLINE " ++ _lambdaName    )-                            -- "GenerateCode.ag"(line 527, column 7)+                            -- "GenerateCode.ag"(line 551, column 7)                             _lhsOcallExpr =                                 App _lambdaName     (map SimpleExpr _freeVars    )-                            -- "GenerateCode.ag"(line 531, column 7)+                            -- "GenerateCode.ag"(line 555, column 7)                             _freeVars =                                 freevars _nextIfreeVars (visit_ : defs_)-                            -- "GenerateCode.ag"(line 538, column 7)+                            -- "GenerateCode.ag"(line 562, column 7)                             _decl =                                 mkBlockLambda _lhsIoptCase _lambdaName     _freeVars     (defs_ ++ [visit_]) _nextIcallExpr-                            -- "GenerateCode.ag"(line 539, column 7)+                            -- "GenerateCode.ag"(line 563, column 7)                             _lhsOdecls =                                 (if _lhsIblockNr > 1 then [_pragmaDecl    ] else []) ++ [_decl    ] ++ _nextIdecls                             -- copy rule (from local)@@ -4160,19 +4308,19 @@                        (let _lhsOcallExpr :: Expr                             _lhsOdecls :: ([Decl])                             _lhsOfreeVars :: ([String])-                            -- "GenerateCode.ag"(line 525, column 7)+                            -- "GenerateCode.ag"(line 549, column 7)                             _lambdaName =                                 _lhsIprefix ++ "_block" ++ show _lhsIblockNr-                            -- "GenerateCode.ag"(line 526, column 7)+                            -- "GenerateCode.ag"(line 550, column 7)                             _pragmaDecl =                                 PragmaDecl ("NOINLINE " ++ _lambdaName    )-                            -- "GenerateCode.ag"(line 527, column 7)+                            -- "GenerateCode.ag"(line 551, column 7)                             _lhsOcallExpr =                                 App _lambdaName     (map SimpleExpr _freeVars    )-                            -- "GenerateCode.ag"(line 529, column 7)+                            -- "GenerateCode.ag"(line 553, column 7)                             _freeVars =                                 freevars _lhsIlastExprVars (defs_ ++ _lhsInextVisitDecls)-                            -- "GenerateCode.ag"(line 536, column 7)+                            -- "GenerateCode.ag"(line 560, column 7)                             _lhsOdecls =                                 [ mkBlockLambda _lhsIoptCase _lambdaName     _freeVars     (defs_ ++ _lhsInextVisitDecls) result_ ]                             -- copy rule (from local)@@ -4205,8 +4353,8 @@                                              Bool ->                                              String ->                                              ( Expr,([Decl])))-data Inh_DeclBlocksRoot = Inh_DeclBlocksRoot {lastExprVars_Inh_DeclBlocksRoot :: [String],nextVisitDecls_Inh_DeclBlocksRoot :: [Decl],optCase_Inh_DeclBlocksRoot :: Bool,prefix_Inh_DeclBlocksRoot :: String}-data Syn_DeclBlocksRoot = Syn_DeclBlocksRoot {firstCall_Syn_DeclBlocksRoot :: Expr,lambdas_Syn_DeclBlocksRoot :: [Decl]}+data Inh_DeclBlocksRoot = Inh_DeclBlocksRoot {lastExprVars_Inh_DeclBlocksRoot :: !([String]),nextVisitDecls_Inh_DeclBlocksRoot :: !([Decl]),optCase_Inh_DeclBlocksRoot :: !(Bool),prefix_Inh_DeclBlocksRoot :: !(String)}+data Syn_DeclBlocksRoot = Syn_DeclBlocksRoot {firstCall_Syn_DeclBlocksRoot :: !(Expr),lambdas_Syn_DeclBlocksRoot :: !([Decl])} wrap_DeclBlocksRoot (T_DeclBlocksRoot sem) (Inh_DeclBlocksRoot _lhsIlastExprVars _lhsInextVisitDecls _lhsIoptCase _lhsIprefix) =     (let ( _lhsOfirstCall,_lhsOlambdas) =              (sem _lhsIlastExprVars _lhsInextVisitDecls _lhsIoptCase _lhsIprefix)@@ -4228,13 +4376,13 @@                                 _blocksIcallExpr :: Expr                                 _blocksIdecls :: ([Decl])                                 _blocksIfreeVars :: ([String])-                                -- "GenerateCode.ag"(line 511, column 7)+                                -- "GenerateCode.ag"(line 535, column 7)                                 _lhsOlambdas =                                     _blocksIdecls-                                -- "GenerateCode.ag"(line 512, column 7)+                                -- "GenerateCode.ag"(line 536, column 7)                                 _lhsOfirstCall =                                     _blocksIcallExpr-                                -- "GenerateCode.ag"(line 517, column 7)+                                -- "GenerateCode.ag"(line 541, column 7)                                 _blocksOblockNr =                                     1                                 -- copy rule (down)@@ -4302,7 +4450,7 @@ -- semantic domain newtype T_Pattern = T_Pattern (( Pattern,([Identifier]),([(Identifier, Identifier)]))) data Inh_Pattern = Inh_Pattern {}-data Syn_Pattern = Syn_Pattern {copy_Syn_Pattern :: Pattern,definedInsts_Syn_Pattern :: [Identifier],patternAttributes_Syn_Pattern :: [(Identifier, Identifier)]}+data Syn_Pattern = Syn_Pattern {copy_Syn_Pattern :: !(Pattern),definedInsts_Syn_Pattern :: !([Identifier]),patternAttributes_Syn_Pattern :: !([(Identifier, Identifier)])} wrap_Pattern (T_Pattern sem) (Inh_Pattern ) =     (let ( _lhsOcopy,_lhsOdefinedInsts,_lhsOpatternAttributes) =              (sem )@@ -4322,10 +4470,10 @@                     _partsIcopy :: Patterns                     _partsIdefinedInsts :: ([Identifier])                     _partsIpatternAttributes :: ([(Identifier, Identifier)])-                    -- "GenerateCode.ag"(line 177, column 11)+                    -- "GenerateCode.ag"(line 197, column 11)                     _lhsOdefinedInsts =                         (if field_ == _INST then [attr_] else []) ++ _patIdefinedInsts-                    -- "GenerateCode.ag"(line 185, column 7)+                    -- "GenerateCode.ag"(line 205, column 7)                     _lhsOpatternAttributes =                         (field_,attr_) : (_patIpatternAttributes ++ _partsIpatternAttributes)                     -- self rule@@ -4349,10 +4497,10 @@                     _patsIcopy :: Patterns                     _patsIdefinedInsts :: ([Identifier])                     _patsIpatternAttributes :: ([(Identifier, Identifier)])-                    -- use rule "GenerateCode.ag"(line 175, column 55)+                    -- use rule "GenerateCode.ag"(line 195, column 55)                     _lhsOdefinedInsts =                         _patsIdefinedInsts-                    -- use rule "GenerateCode.ag"(line 182, column 47)+                    -- use rule "GenerateCode.ag"(line 202, column 47)                     _lhsOpatternAttributes =                         _patsIpatternAttributes                     -- self rule@@ -4373,10 +4521,10 @@                     _patIcopy :: Pattern                     _patIdefinedInsts :: ([Identifier])                     _patIpatternAttributes :: ([(Identifier, Identifier)])-                    -- use rule "GenerateCode.ag"(line 175, column 55)+                    -- use rule "GenerateCode.ag"(line 195, column 55)                     _lhsOdefinedInsts =                         _patIdefinedInsts-                    -- use rule "GenerateCode.ag"(line 182, column 47)+                    -- use rule "GenerateCode.ag"(line 202, column 47)                     _lhsOpatternAttributes =                         _patIpatternAttributes                     -- self rule@@ -4398,10 +4546,10 @@                     _patsIcopy :: Patterns                     _patsIdefinedInsts :: ([Identifier])                     _patsIpatternAttributes :: ([(Identifier, Identifier)])-                    -- use rule "GenerateCode.ag"(line 175, column 55)+                    -- use rule "GenerateCode.ag"(line 195, column 55)                     _lhsOdefinedInsts =                         _patsIdefinedInsts-                    -- use rule "GenerateCode.ag"(line 182, column 47)+                    -- use rule "GenerateCode.ag"(line 202, column 47)                     _lhsOpatternAttributes =                         _patsIpatternAttributes                     -- self rule@@ -4419,10 +4567,10 @@     (T_Pattern (let _lhsOdefinedInsts :: ([Identifier])                     _lhsOpatternAttributes :: ([(Identifier, Identifier)])                     _lhsOcopy :: Pattern-                    -- use rule "GenerateCode.ag"(line 175, column 55)+                    -- use rule "GenerateCode.ag"(line 195, column 55)                     _lhsOdefinedInsts =                         []-                    -- use rule "GenerateCode.ag"(line 182, column 47)+                    -- use rule "GenerateCode.ag"(line 202, column 47)                     _lhsOpatternAttributes =                         []                     -- self rule@@ -4457,7 +4605,7 @@ -- semantic domain newtype T_Patterns = T_Patterns (( Patterns,([Identifier]),([(Identifier, Identifier)]))) data Inh_Patterns = Inh_Patterns {}-data Syn_Patterns = Syn_Patterns {copy_Syn_Patterns :: Patterns,definedInsts_Syn_Patterns :: [Identifier],patternAttributes_Syn_Patterns :: [(Identifier, Identifier)]}+data Syn_Patterns = Syn_Patterns {copy_Syn_Patterns :: !(Patterns),definedInsts_Syn_Patterns :: !([Identifier]),patternAttributes_Syn_Patterns :: !([(Identifier, Identifier)])} wrap_Patterns (T_Patterns sem) (Inh_Patterns ) =     (let ( _lhsOcopy,_lhsOdefinedInsts,_lhsOpatternAttributes) =              (sem )@@ -4475,10 +4623,10 @@                      _tlIcopy :: Patterns                      _tlIdefinedInsts :: ([Identifier])                      _tlIpatternAttributes :: ([(Identifier, Identifier)])-                     -- use rule "GenerateCode.ag"(line 175, column 55)+                     -- use rule "GenerateCode.ag"(line 195, column 55)                      _lhsOdefinedInsts =                          _hdIdefinedInsts ++ _tlIdefinedInsts-                     -- use rule "GenerateCode.ag"(line 182, column 47)+                     -- use rule "GenerateCode.ag"(line 202, column 47)                      _lhsOpatternAttributes =                          _hdIpatternAttributes ++ _tlIpatternAttributes                      -- self rule@@ -4497,10 +4645,10 @@     (T_Patterns (let _lhsOdefinedInsts :: ([Identifier])                      _lhsOpatternAttributes :: ([(Identifier, Identifier)])                      _lhsOcopy :: Patterns-                     -- use rule "GenerateCode.ag"(line 175, column 55)+                     -- use rule "GenerateCode.ag"(line 195, column 55)                      _lhsOdefinedInsts =                          []-                     -- use rule "GenerateCode.ag"(line 182, column 47)+                     -- use rule "GenerateCode.ag"(line 202, column 47)                      _lhsOpatternAttributes =                          []                      -- self rule@@ -4514,6 +4662,7 @@ {-    visit 0:       inherited attributes:+         allNts               : Set NontermIdent          children             : [(Identifier,Type,Bool)]          con                  : ConstructorIdent          higherOrderChildren  : [(Identifier,Type,Bool)]@@ -4541,6 +4690,7 @@          prefix               : String          syn                  : Attributes          terminals            : [Identifier]+         unfoldSemDom         : NontermIdent -> Int -> [String] -> Code.Type          what                 : String       chained attributes:          declsAbove           : [Decl]@@ -4567,7 +4717,8 @@ sem_Sequence list =     (Prelude.foldr sem_Sequence_Cons sem_Sequence_Nil (Prelude.map sem_CRule list)) -- semantic domain-newtype T_Sequence = T_Sequence (([(Identifier,Type,Bool)]) ->+newtype T_Sequence = T_Sequence ((Set NontermIdent) ->+                                 ([(Identifier,Type,Bool)]) ->                                  ConstructorIdent ->                                  ([Decl]) ->                                  (Seq Error) ->@@ -4596,19 +4747,21 @@                                  String ->                                  Attributes ->                                  ([Identifier]) ->+                                 (NontermIdent -> Int -> [String] -> Code.Type) ->                                  String ->                                  ( Bool,DeclBlocks,([String]),Decls,([Decl]),([Identifier]),(Seq Error),Exprs,([Decl]),([Type]),(Set String)))-data Inh_Sequence = Inh_Sequence {children_Inh_Sequence :: [(Identifier,Type,Bool)],con_Inh_Sequence :: ConstructorIdent,declsAbove_Inh_Sequence :: [Decl],errors_Inh_Sequence :: Seq Error,higherOrderChildren_Inh_Sequence :: [(Identifier,Type,Bool)],inh_Inh_Sequence :: Attributes,instVisitNrs_Inh_Sequence :: Map Identifier Int,lastExpr_Inh_Sequence :: Expr,nr_Inh_Sequence :: Int,nt_Inh_Sequence :: NontermIdent,o_case_Inh_Sequence :: Bool,o_cata_Inh_Sequence :: Bool,o_costcentre_Inh_Sequence :: Bool,o_data_Inh_Sequence :: Maybe Bool,o_linePragmas_Inh_Sequence :: Bool,o_newtypes_Inh_Sequence :: Bool,o_pretty_Inh_Sequence :: Bool,o_rename_Inh_Sequence :: Bool,o_sem_Inh_Sequence :: Bool,o_sig_Inh_Sequence :: Bool,o_splitsems_Inh_Sequence :: Bool,o_strictwrap_Inh_Sequence :: Bool,o_traces_Inh_Sequence :: Bool,o_unbox_Inh_Sequence :: Bool,paramInstMap_Inh_Sequence :: Map Identifier (NontermIdent, [String]),paramMap_Inh_Sequence :: ParamMap,prefix_Inh_Sequence :: String,syn_Inh_Sequence :: Attributes,terminals_Inh_Sequence :: [Identifier],what_Inh_Sequence :: String}-data Syn_Sequence = Syn_Sequence {allTpsFound_Syn_Sequence :: Bool,blockDecls_Syn_Sequence :: DeclBlocks,comments_Syn_Sequence :: [String],decls_Syn_Sequence :: Decls,declsAbove_Syn_Sequence :: [Decl],definedInsts_Syn_Sequence :: [Identifier],errors_Syn_Sequence :: Seq Error,exprs_Syn_Sequence :: Exprs,tSigs_Syn_Sequence :: [Decl],tps_Syn_Sequence :: [Type],usedVars_Syn_Sequence :: Set String}-wrap_Sequence (T_Sequence sem) (Inh_Sequence _lhsIchildren _lhsIcon _lhsIdeclsAbove _lhsIerrors _lhsIhigherOrderChildren _lhsIinh _lhsIinstVisitNrs _lhsIlastExpr _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIwhat) =+data Inh_Sequence = Inh_Sequence {allNts_Inh_Sequence :: !(Set NontermIdent),children_Inh_Sequence :: !([(Identifier,Type,Bool)]),con_Inh_Sequence :: !(ConstructorIdent),declsAbove_Inh_Sequence :: !([Decl]),errors_Inh_Sequence :: !(Seq Error),higherOrderChildren_Inh_Sequence :: !([(Identifier,Type,Bool)]),inh_Inh_Sequence :: !(Attributes),instVisitNrs_Inh_Sequence :: !(Map Identifier Int),lastExpr_Inh_Sequence :: !(Expr),nr_Inh_Sequence :: !(Int),nt_Inh_Sequence :: !(NontermIdent),o_case_Inh_Sequence :: !(Bool),o_cata_Inh_Sequence :: !(Bool),o_costcentre_Inh_Sequence :: !(Bool),o_data_Inh_Sequence :: !(Maybe Bool),o_linePragmas_Inh_Sequence :: !(Bool),o_newtypes_Inh_Sequence :: !(Bool),o_pretty_Inh_Sequence :: !(Bool),o_rename_Inh_Sequence :: !(Bool),o_sem_Inh_Sequence :: !(Bool),o_sig_Inh_Sequence :: !(Bool),o_splitsems_Inh_Sequence :: !(Bool),o_strictwrap_Inh_Sequence :: !(Bool),o_traces_Inh_Sequence :: !(Bool),o_unbox_Inh_Sequence :: !(Bool),paramInstMap_Inh_Sequence :: !(Map Identifier (NontermIdent, [String])),paramMap_Inh_Sequence :: !(ParamMap),prefix_Inh_Sequence :: !(String),syn_Inh_Sequence :: !(Attributes),terminals_Inh_Sequence :: !([Identifier]),unfoldSemDom_Inh_Sequence :: !(NontermIdent -> Int -> [String] -> Code.Type),what_Inh_Sequence :: !(String)}+data Syn_Sequence = Syn_Sequence {allTpsFound_Syn_Sequence :: !(Bool),blockDecls_Syn_Sequence :: !(DeclBlocks),comments_Syn_Sequence :: !([String]),decls_Syn_Sequence :: !(Decls),declsAbove_Syn_Sequence :: !([Decl]),definedInsts_Syn_Sequence :: !([Identifier]),errors_Syn_Sequence :: !(Seq Error),exprs_Syn_Sequence :: !(Exprs),tSigs_Syn_Sequence :: !([Decl]),tps_Syn_Sequence :: !([Type]),usedVars_Syn_Sequence :: !(Set String)}+wrap_Sequence (T_Sequence sem) (Inh_Sequence _lhsIallNts _lhsIchildren _lhsIcon _lhsIdeclsAbove _lhsIerrors _lhsIhigherOrderChildren _lhsIinh _lhsIinstVisitNrs _lhsIlastExpr _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIwhat) =     (let ( _lhsOallTpsFound,_lhsOblockDecls,_lhsOcomments,_lhsOdecls,_lhsOdeclsAbove,_lhsOdefinedInsts,_lhsOerrors,_lhsOexprs,_lhsOtSigs,_lhsOtps,_lhsOusedVars) =-             (sem _lhsIchildren _lhsIcon _lhsIdeclsAbove _lhsIerrors _lhsIhigherOrderChildren _lhsIinh _lhsIinstVisitNrs _lhsIlastExpr _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIwhat)+             (sem _lhsIallNts _lhsIchildren _lhsIcon _lhsIdeclsAbove _lhsIerrors _lhsIhigherOrderChildren _lhsIinh _lhsIinstVisitNrs _lhsIlastExpr _lhsInr _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_costcentre _lhsIo_data _lhsIo_linePragmas _lhsIo_newtypes _lhsIo_pretty _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_splitsems _lhsIo_strictwrap _lhsIo_traces _lhsIo_unbox _lhsIparamInstMap _lhsIparamMap _lhsIprefix _lhsIsyn _lhsIterminals _lhsIunfoldSemDom _lhsIwhat)      in  (Syn_Sequence _lhsOallTpsFound _lhsOblockDecls _lhsOcomments _lhsOdecls _lhsOdeclsAbove _lhsOdefinedInsts _lhsOerrors _lhsOexprs _lhsOtSigs _lhsOtps _lhsOusedVars)) sem_Sequence_Cons :: T_CRule ->                      T_Sequence ->                      T_Sequence sem_Sequence_Cons (T_CRule hd_) (T_Sequence tl_) =-    (T_Sequence (\ _lhsIchildren+    (T_Sequence (\ _lhsIallNts+                   _lhsIchildren                    _lhsIcon                    _lhsIdeclsAbove                    _lhsIerrors@@ -4637,6 +4790,7 @@                    _lhsIprefix                    _lhsIsyn                    _lhsIterminals+                   _lhsIunfoldSemDom                    _lhsIwhat ->                      (let _lhsOblockDecls :: DeclBlocks                           _lhsOallTpsFound :: Bool@@ -4649,6 +4803,7 @@                           _lhsOtps :: ([Type])                           _lhsOusedVars :: (Set String)                           _lhsOdeclsAbove :: ([Decl])+                          _hdOallNts :: (Set NontermIdent)                           _hdOchildren :: ([(Identifier,Type,Bool)])                           _hdOcon :: ConstructorIdent                           _hdOdeclsAbove :: ([Decl])@@ -4677,7 +4832,9 @@                           _hdOprefix :: String                           _hdOsyn :: Attributes                           _hdOterminals :: ([Identifier])+                          _hdOunfoldSemDom :: (NontermIdent -> Int -> [String] -> Code.Type)                           _hdOwhat :: String+                          _tlOallNts :: (Set NontermIdent)                           _tlOchildren :: ([(Identifier,Type,Bool)])                           _tlOcon :: ConstructorIdent                           _tlOdeclsAbove :: ([Decl])@@ -4707,6 +4864,7 @@                           _tlOprefix :: String                           _tlOsyn :: Attributes                           _tlOterminals :: ([Identifier])+                          _tlOunfoldSemDom :: (NontermIdent -> Int -> [String] -> Code.Type)                           _tlOwhat :: String                           _hdIallTpsFound :: Bool                           _hdIbldBlocksFun :: (DeclBlocks -> DeclBlocks)@@ -4730,40 +4888,43 @@                           _tlItSigs :: ([Decl])                           _tlItps :: ([Type])                           _tlIusedVars :: (Set String)-                          -- "GenerateCode.ag"(line 452, column 7)+                          -- "GenerateCode.ag"(line 476, column 7)                           _lhsOblockDecls =                               _hdIbldBlocksFun _tlIblockDecls-                          -- use rule "GenerateCode.ag"(line 320, column 39)+                          -- use rule "GenerateCode.ag"(line 344, column 39)                           _lhsOallTpsFound =                               _hdIallTpsFound && _tlIallTpsFound-                          -- use rule "GenerateCode.ag"(line 714, column 52)+                          -- use rule "GenerateCode.ag"(line 738, column 52)                           _lhsOcomments =                               _hdIcomments ++ _tlIcomments-                          -- use rule "GenerateCode.ag"(line 122, column 34)+                          -- use rule "GenerateCode.ag"(line 138, column 34)                           _lhsOdecls =                               _hdIdecls ++ _tlIdecls-                          -- use rule "GenerateCode.ag"(line 175, column 55)+                          -- use rule "GenerateCode.ag"(line 195, column 55)                           _lhsOdefinedInsts =                               _hdIdefinedInsts ++ _tlIdefinedInsts-                          -- use rule "GenerateCode.ag"(line 695, column 32)+                          -- use rule "GenerateCode.ag"(line 719, column 32)                           _lhsOerrors =                               _hdIerrors Seq.<> _tlIerrors-                          -- use rule "GenerateCode.ag"(line 248, column 34)+                          -- use rule "GenerateCode.ag"(line 268, column 34)                           _lhsOexprs =                               _hdIexprs ++ _tlIexprs-                          -- use rule "GenerateCode.ag"(line 273, column 33)+                          -- use rule "GenerateCode.ag"(line 297, column 33)                           _lhsOtSigs =                               _hdItSigs ++ _tlItSigs-                          -- use rule "GenerateCode.ag"(line 319, column 31)+                          -- use rule "GenerateCode.ag"(line 343, column 31)                           _lhsOtps =                               _hdItps ++ _tlItps-                          -- use rule "GenerateCode.ag"(line 262, column 37)+                          -- use rule "GenerateCode.ag"(line 286, column 37)                           _lhsOusedVars =                               _hdIusedVars `Set.union` _tlIusedVars                           -- copy rule (up)                           _lhsOdeclsAbove =                               _tlIdeclsAbove                           -- copy rule (down)+                          _hdOallNts =+                              _lhsIallNts+                          -- copy rule (down)                           _hdOchildren =                               _lhsIchildren                           -- copy rule (down)@@ -4848,9 +5009,15 @@                           _hdOterminals =                               _lhsIterminals                           -- copy rule (down)+                          _hdOunfoldSemDom =+                              _lhsIunfoldSemDom+                          -- copy rule (down)                           _hdOwhat =                               _lhsIwhat                           -- copy rule (down)+                          _tlOallNts =+                              _lhsIallNts+                          -- copy rule (down)                           _tlOchildren =                               _lhsIchildren                           -- copy rule (down)@@ -4938,16 +5105,20 @@                           _tlOterminals =                               _lhsIterminals                           -- copy rule (down)+                          _tlOunfoldSemDom =+                              _lhsIunfoldSemDom+                          -- copy rule (down)                           _tlOwhat =                               _lhsIwhat                           ( _hdIallTpsFound,_hdIbldBlocksFun,_hdIcomments,_hdIdecls,_hdIdeclsAbove,_hdIdefinedInsts,_hdIerrors,_hdIexprs,_hdItSigs,_hdItps,_hdIusedVars) =-                              (hd_ _hdOchildren _hdOcon _hdOdeclsAbove _hdOerrors _hdOhigherOrderChildren _hdOinh _hdOinstVisitNrs _hdOnr _hdOnt _hdOo_case _hdOo_cata _hdOo_costcentre _hdOo_data _hdOo_linePragmas _hdOo_newtypes _hdOo_pretty _hdOo_rename _hdOo_sem _hdOo_sig _hdOo_splitsems _hdOo_strictwrap _hdOo_traces _hdOo_unbox _hdOparamInstMap _hdOparamMap _hdOprefix _hdOsyn _hdOterminals _hdOwhat)+                              (hd_ _hdOallNts _hdOchildren _hdOcon _hdOdeclsAbove _hdOerrors _hdOhigherOrderChildren _hdOinh _hdOinstVisitNrs _hdOnr _hdOnt _hdOo_case _hdOo_cata _hdOo_costcentre _hdOo_data _hdOo_linePragmas _hdOo_newtypes _hdOo_pretty _hdOo_rename _hdOo_sem _hdOo_sig _hdOo_splitsems _hdOo_strictwrap _hdOo_traces _hdOo_unbox _hdOparamInstMap _hdOparamMap _hdOprefix _hdOsyn _hdOterminals _hdOunfoldSemDom _hdOwhat)                           ( _tlIallTpsFound,_tlIblockDecls,_tlIcomments,_tlIdecls,_tlIdeclsAbove,_tlIdefinedInsts,_tlIerrors,_tlIexprs,_tlItSigs,_tlItps,_tlIusedVars) =-                              (tl_ _tlOchildren _tlOcon _tlOdeclsAbove _tlOerrors _tlOhigherOrderChildren _tlOinh _tlOinstVisitNrs _tlOlastExpr _tlOnr _tlOnt _tlOo_case _tlOo_cata _tlOo_costcentre _tlOo_data _tlOo_linePragmas _tlOo_newtypes _tlOo_pretty _tlOo_rename _tlOo_sem _tlOo_sig _tlOo_splitsems _tlOo_strictwrap _tlOo_traces _tlOo_unbox _tlOparamInstMap _tlOparamMap _tlOprefix _tlOsyn _tlOterminals _tlOwhat)+                              (tl_ _tlOallNts _tlOchildren _tlOcon _tlOdeclsAbove _tlOerrors _tlOhigherOrderChildren _tlOinh _tlOinstVisitNrs _tlOlastExpr _tlOnr _tlOnt _tlOo_case _tlOo_cata _tlOo_costcentre _tlOo_data _tlOo_linePragmas _tlOo_newtypes _tlOo_pretty _tlOo_rename _tlOo_sem _tlOo_sig _tlOo_splitsems _tlOo_strictwrap _tlOo_traces _tlOo_unbox _tlOparamInstMap _tlOparamMap _tlOprefix _tlOsyn _tlOterminals _tlOunfoldSemDom _tlOwhat)                       in  ( _lhsOallTpsFound,_lhsOblockDecls,_lhsOcomments,_lhsOdecls,_lhsOdeclsAbove,_lhsOdefinedInsts,_lhsOerrors,_lhsOexprs,_lhsOtSigs,_lhsOtps,_lhsOusedVars)))) sem_Sequence_Nil :: T_Sequence sem_Sequence_Nil  =-    (T_Sequence (\ _lhsIchildren+    (T_Sequence (\ _lhsIallNts+                   _lhsIchildren                    _lhsIcon                    _lhsIdeclsAbove                    _lhsIerrors@@ -4976,6 +5147,7 @@                    _lhsIprefix                    _lhsIsyn                    _lhsIterminals+                   _lhsIunfoldSemDom                    _lhsIwhat ->                      (let _lhsOblockDecls :: DeclBlocks                           _lhsOallTpsFound :: Bool@@ -4988,34 +5160,34 @@                           _lhsOtps :: ([Type])                           _lhsOusedVars :: (Set String)                           _lhsOdeclsAbove :: ([Decl])-                          -- "GenerateCode.ag"(line 454, column 7)+                          -- "GenerateCode.ag"(line 478, column 7)                           _lhsOblockDecls =                               DeclTerminator _lhsIdeclsAbove _lhsIlastExpr-                          -- use rule "GenerateCode.ag"(line 320, column 39)+                          -- use rule "GenerateCode.ag"(line 344, column 39)                           _lhsOallTpsFound =                               True-                          -- use rule "GenerateCode.ag"(line 714, column 52)+                          -- use rule "GenerateCode.ag"(line 738, column 52)                           _lhsOcomments =                               []-                          -- use rule "GenerateCode.ag"(line 122, column 34)+                          -- use rule "GenerateCode.ag"(line 138, column 34)                           _lhsOdecls =                               []-                          -- use rule "GenerateCode.ag"(line 175, column 55)+                          -- use rule "GenerateCode.ag"(line 195, column 55)                           _lhsOdefinedInsts =                               []-                          -- use rule "GenerateCode.ag"(line 695, column 32)+                          -- use rule "GenerateCode.ag"(line 719, column 32)                           _lhsOerrors =                               Seq.empty-                          -- use rule "GenerateCode.ag"(line 248, column 34)+                          -- use rule "GenerateCode.ag"(line 268, column 34)                           _lhsOexprs =                               []-                          -- use rule "GenerateCode.ag"(line 273, column 33)+                          -- use rule "GenerateCode.ag"(line 297, column 33)                           _lhsOtSigs =                               []-                          -- use rule "GenerateCode.ag"(line 319, column 31)+                          -- use rule "GenerateCode.ag"(line 343, column 31)                           _lhsOtps =                               []-                          -- use rule "GenerateCode.ag"(line 262, column 37)+                          -- use rule "GenerateCode.ag"(line 286, column 37)                           _lhsOusedVars =                               Set.empty                           -- copy rule (chain)
src-derived/Interfaces.hs view
@@ -1,4 +1,3 @@- -- UUAGC 0.9.5 (Interfaces.ag) module Interfaces where @@ -8,24 +7,24 @@ {-    alternatives:       alternative IRoot:-         child inters         : Interfaces +         child inters         : Interfaces -}-data IRoot = IRoot (Interfaces) +data IRoot = IRoot (Interfaces) -- Interface --------------------------------------------------- {-    alternatives:       alternative Interface:          child nt             : {NontermIdent}          child cons           : {[ConstructorIdent]}-         child seg            : Segments +         child seg            : Segments -}-data Interface = Interface (NontermIdent) ([ConstructorIdent]) (Segments) +data Interface = Interface (NontermIdent) ([ConstructorIdent]) (Segments) -- Interfaces -------------------------------------------------- {-    alternatives:       alternative Cons:-         child hd             : Interface -         child tl             : Interfaces +         child hd             : Interface+         child tl             : Interfaces       alternative Nil: -} type Interfaces = [Interface]@@ -36,13 +35,13 @@          child inh            : {[Vertex]}          child syn            : {[Vertex]} -}-data Segment = Segment ([Vertex]) ([Vertex]) +data Segment = Segment ([Vertex]) ([Vertex]) -- Segments ---------------------------------------------------- {-    alternatives:       alternative Cons:-         child hd             : Segment -         child tl             : Segments +         child hd             : Segment+         child tl             : Segments       alternative Nil: -} type Segments = [Segment]
src-derived/InterfacesRules.hs view
@@ -1,1080 +1,951 @@---- UUAGC 0.9.5 (InterfacesRules.lag)-module InterfacesRules where--import Interfaces-import SequentialTypes-import CodeSyntax-import GrammarInfo--import UU.DData.Seq as Seq-import qualified Data.Map as Map-import Data.Map(Map)-import qualified Data.Set as Set-import Data.Set(Set)-import Data.Tree(Tree(Node))-import Data.Graph(Graph, dfs, edges, buildG, transposeG)-import Data.Maybe (fromJust)-import Data.List (partition,transpose,(\\),nub,intersect, findIndex)-import Data.Array ((!),inRange,bounds,assocs)--import Debug.Trace(trace)---import CommonTypes-import SequentialTypes--type VisitSS = [Vertex]---gather :: Info -> [Vertex] -> [[Vertex]]-gather info =  eqClasses comp-               where comp a b = isEqualField (ruleTable info ! a) (ruleTable info ! b)----- Only non-empty syn will ever be forced, because visits with empty syn are never performed--- Right hand side synthesized attributes always have a field-cv :: (Vertex -> CRule) -> Int -> Vertex -> ([Vertex],[Vertex]) -> (Vertex,ChildVisit)-cv look n v (inh,syn) =  let  fld = getField (look (head syn))-                              rnt = fromJust (getRhsNt (look (head syn)))-                              d = ChildVisit fld rnt n inh syn-                         in (v,d)---ed v (inh,syn) = map (\i -> (i,v)) inh ++ map (\s -> (v,s)) syn---postorder (Node a ts) = postorderF ts ++ [a]-postorderF = concatMap postorder-postOrd g = postorderF . dfs g-topSort' g = postOrd g---type IntraVisit = [Vertex]---swap (a,b) = (b,a)---ccv :: Identifier -> NontermIdent -> Int -> CInterfaceMap -> CRule-ccv name nt n table-  =  CChildVisit name nt n inh syn last-     where  CInterface segs = Map.findWithDefault (error ("InterfacesRules::ccv::interfaces not in table for nt: " ++ show nt)) nt table-            (seg:remain) = drop n segs-            CSegment inh syn = seg           -            last = null remain--- IRoot --------------------------------------------------------{--   visit 0:-      inherited attributes:-         dpr                  : [Edge]-         info                 : Info-         tdp                  : Graph-      synthesized attributes:-         edp                  : [Edge]-         inters               : CInterfaceMap-         visits               : CVisitsMap-   alternatives:-      alternative IRoot:-         child inters         : Interfaces -         visit 0:-            local newedges    : _-            local visitssGraph : _-            local descr       : _--}--- cata-sem_IRoot :: IRoot ->-             T_IRoot-sem_IRoot (IRoot _inters )  =-    (sem_IRoot_IRoot (sem_Interfaces _inters ) )--- semantic domain-newtype T_IRoot = T_IRoot (([Edge]) ->-                           Info ->-                           Graph ->-                           ( ([Edge]),CInterfaceMap,CVisitsMap))-data Inh_IRoot = Inh_IRoot {dpr_Inh_IRoot :: [Edge],info_Inh_IRoot :: Info,tdp_Inh_IRoot :: Graph}-data Syn_IRoot = Syn_IRoot {edp_Syn_IRoot :: [Edge],inters_Syn_IRoot :: CInterfaceMap,visits_Syn_IRoot :: CVisitsMap}-wrap_IRoot (T_IRoot sem ) (Inh_IRoot _lhsIdpr _lhsIinfo _lhsItdp )  =-    (let ( _lhsOedp,_lhsOinters,_lhsOvisits) =-             (sem _lhsIdpr _lhsIinfo _lhsItdp )-     in  (Syn_IRoot _lhsOedp _lhsOinters _lhsOvisits ))-sem_IRoot_IRoot :: T_Interfaces ->-                   T_IRoot-sem_IRoot_IRoot (T_Interfaces inters_ )  =-    (T_IRoot (\ _lhsIdpr-                _lhsIinfo-                _lhsItdp ->-                  (let _intersOv :: Vertex-                       _intersOvisitDescr :: (Map Vertex ChildVisit)-                       _intersOvssGraph :: Graph-                       _intersOprev :: ([Vertex])-                       _intersOddp :: Graph-                       _intersOallInters :: CInterfaceMap-                       _lhsOedp :: ([Edge])-                       _lhsOinters :: CInterfaceMap-                       _lhsOvisits :: CVisitsMap-                       _intersOinfo :: Info-                       _intersIdescr :: (Seq (Vertex,ChildVisit))-                       _intersIedp :: (Seq Edge)-                       _intersIfirstvisitvertices :: ([Vertex])-                       _intersIinters :: CInterfaceMap-                       _intersInewedges :: (Seq Edge )-                       _intersIv :: Vertex-                       _intersIvisits :: CVisitsMap-                       -- "InterfacesRules.lag"(line 64, column 12)-                       _newedges =-                           Seq.toList _intersInewedges-                       -- "InterfacesRules.lag"(line 65, column 12)-                       _visitssGraph =-                           let graph = buildG (0,_intersIv-1) es-                               es = _newedges ++ edges _lhsItdp-                           in transposeG graph-                       -- "InterfacesRules.lag"(line 78, column 12)-                       _intersOv =-                           snd (bounds _lhsItdp) + 1-                       -- "InterfacesRules.lag"(line 115, column 13)-                       _intersOvisitDescr =-                           Map.fromList _descr-                       -- "InterfacesRules.lag"(line 135, column 12)-                       _descr =-                           Seq.toList _intersIdescr-                       -- "InterfacesRules.lag"(line 204, column 12)-                       _intersOvssGraph =-                           _visitssGraph-                       -- "InterfacesRules.lag"(line 246, column 12)-                       _intersOprev =-                           let terminals = [ v | (v,cr) <- assocs (ruleTable _lhsIinfo), not (getHasCode cr), isLocal cr ]-                           in _intersIfirstvisitvertices ++ terminals-                       -- "InterfacesRules.lag"(line 328, column 12)-                       _intersOddp =-                           buildG (0,_intersIv-1) (map swap (_lhsIdpr ++ _newedges))-                       -- "InterfacesRules.lag"(line 365, column 13)-                       _intersOallInters =-                           _intersIinters-                       -- "InterfacesRules.lag"(line 425, column 13)-                       _lhsOedp =-                           Seq.toList _intersIedp-                       -- copy rule (up)-                       _lhsOinters =-                           _intersIinters-                       -- copy rule (up)-                       _lhsOvisits =-                           _intersIvisits-                       -- copy rule (down)-                       _intersOinfo =-                           _lhsIinfo-                       ( _intersIdescr,_intersIedp,_intersIfirstvisitvertices,_intersIinters,_intersInewedges,_intersIv,_intersIvisits) =-                           (inters_ _intersOallInters _intersOddp _intersOinfo _intersOprev _intersOv _intersOvisitDescr _intersOvssGraph )-                   in  ( _lhsOedp,_lhsOinters,_lhsOvisits))) )--- Interface ----------------------------------------------------{--   visit 0:-      inherited attributes:-         allInters            : CInterfaceMap-         ddp                  : Graph-         info                 : Info-         prev                 : [Vertex]-         visitDescr           : Map Vertex ChildVisit-         vssGraph             : Graph-      chained attribute:-         v                    : Vertex-      synthesized attributes:-         descr                : Seq (Vertex,ChildVisit)-         edp                  : Seq Edge-         firstvisitvertices   : [Vertex]-         inter                : CInterface-         newedges             : Seq Edge -         nt                   : NontermIdent-         visits               : Map ConstructorIdent CVisits-   alternatives:-      alternative Interface:-         child nt             : {NontermIdent}-         child cons           : {[ConstructorIdent]}-         child seg            : Segments -         visit 0:-            local v           : _-            local firstvisitvertices : _-            local newedges    : _-            local look        : _-            local descr       : _--}--- cata-sem_Interface :: Interface ->-                 T_Interface-sem_Interface (Interface _nt _cons _seg )  =-    (sem_Interface_Interface _nt _cons (sem_Segments _seg ) )--- semantic domain-newtype T_Interface = T_Interface (CInterfaceMap ->-                                   Graph ->-                                   Info ->-                                   ([Vertex]) ->-                                   Vertex ->-                                   (Map Vertex ChildVisit) ->-                                   Graph ->-                                   ( (Seq (Vertex,ChildVisit)),(Seq Edge),([Vertex]),CInterface,(Seq Edge ),NontermIdent,Vertex,(Map ConstructorIdent CVisits)))-data Inh_Interface = Inh_Interface {allInters_Inh_Interface :: CInterfaceMap,ddp_Inh_Interface :: Graph,info_Inh_Interface :: Info,prev_Inh_Interface :: [Vertex],v_Inh_Interface :: Vertex,visitDescr_Inh_Interface :: Map Vertex ChildVisit,vssGraph_Inh_Interface :: Graph}-data Syn_Interface = Syn_Interface {descr_Syn_Interface :: Seq (Vertex,ChildVisit),edp_Syn_Interface :: Seq Edge,firstvisitvertices_Syn_Interface :: [Vertex],inter_Syn_Interface :: CInterface,newedges_Syn_Interface :: Seq Edge ,nt_Syn_Interface :: NontermIdent,v_Syn_Interface :: Vertex,visits_Syn_Interface :: Map ConstructorIdent CVisits}-wrap_Interface (T_Interface sem ) (Inh_Interface _lhsIallInters _lhsIddp _lhsIinfo _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph )  =-    (let ( _lhsOdescr,_lhsOedp,_lhsOfirstvisitvertices,_lhsOinter,_lhsOnewedges,_lhsOnt,_lhsOv,_lhsOvisits) =-             (sem _lhsIallInters _lhsIddp _lhsIinfo _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph )-     in  (Syn_Interface _lhsOdescr _lhsOedp _lhsOfirstvisitvertices _lhsOinter _lhsOnewedges _lhsOnt _lhsOv _lhsOvisits ))-sem_Interface_Interface :: NontermIdent ->-                           ([ConstructorIdent]) ->-                           T_Segments ->-                           T_Interface-sem_Interface_Interface nt_ cons_ (T_Segments seg_ )  =-    (T_Interface (\ _lhsIallInters-                    _lhsIddp-                    _lhsIinfo-                    _lhsIprev-                    _lhsIv-                    _lhsIvisitDescr-                    _lhsIvssGraph ->-                      (let _segOv :: Vertex-                           _lhsOv :: Vertex-                           _lhsOnewedges :: (Seq Edge )-                           _lhsOdescr :: (Seq (Vertex,ChildVisit))-                           _segOn :: Int-                           _segOcons :: ([ConstructorIdent])-                           _segOisFirst :: Bool-                           _segOfromLhs :: ([Vertex])-                           _lhsOnt :: NontermIdent-                           _lhsOinter :: CInterface-                           _lhsOvisits :: (Map ConstructorIdent CVisits)-                           _lhsOedp :: (Seq Edge)-                           _lhsOfirstvisitvertices :: ([Vertex])-                           _segOallInters :: CInterfaceMap-                           _segOddp :: Graph-                           _segOinfo :: Info-                           _segOprev :: ([Vertex])-                           _segOvisitDescr :: (Map Vertex ChildVisit)-                           _segOvssGraph :: Graph-                           _segIcvisits :: ([[CVisit]])-                           _segIdescr :: (Seq (Vertex,ChildVisit))-                           _segIedp :: (Seq Edge)-                           _segIfirstInh :: ([Vertex])-                           _segIgroups :: ([([Vertex],[Vertex])])-                           _segIhdIntravisits :: ([IntraVisit])-                           _segInewedges :: (Seq Edge )-                           _segInewvertices :: ([Vertex])-                           _segIprev :: ([Vertex])-                           _segIsegs :: CSegments-                           _segIv :: Vertex-                           -- "InterfacesRules.lag"(line 175, column 17)-                           _segOv =-                               _lhsIv-                           -- "InterfacesRules.lag"(line 176, column 17)-                           _v =-                               _segIv + length _segInewvertices-                           -- "InterfacesRules.lag"(line 177, column 17)-                           _lhsOv =-                               _v-                           -- "InterfacesRules.lag"(line 178, column 17)-                           _firstvisitvertices =-                               [_segIv .. _v-1]-                           -- "InterfacesRules.lag"(line 179, column 17)-                           _newedges =-                               zip _firstvisitvertices _segInewvertices-                           -- "InterfacesRules.lag"(line 180, column 17)-                           _lhsOnewedges =-                               _segInewedges Seq.<> Seq.fromList _newedges-                           -- "InterfacesRules.lag"(line 181, column 17)-                           _look =-                               \a -> ruleTable _lhsIinfo ! a-                           -- "InterfacesRules.lag"(line 182, column 17)-                           _descr =-                               zipWith (cv _look (-1)) _firstvisitvertices _segIgroups-                           -- "InterfacesRules.lag"(line 183, column 17)-                           _lhsOdescr =-                               _segIdescr Seq.<> Seq.fromList _descr-                           -- "InterfacesRules.lag"(line 191, column 16)-                           _segOn =-                               0-                           -- "InterfacesRules.lag"(line 223, column 16)-                           _segOcons =-                               cons_-                           -- "InterfacesRules.lag"(line 299, column 16)-                           _segOisFirst =-                               True-                           -- "InterfacesRules.lag"(line 336, column 16)-                           _segOfromLhs =-                               _lhsIprev-                           -- "InterfacesRules.lag"(line 376, column 16)-                           _lhsOnt =-                               nt_-                           -- "InterfacesRules.lag"(line 380, column 17)-                           _lhsOinter =-                               CInterface _segIsegs-                           -- "InterfacesRules.lag"(line 381, column 17)-                           _lhsOvisits =-                               Map.fromList (zip cons_ (transpose _segIcvisits))-                           -- use rule "InterfacesRules.lag"(line 420, column 54)-                           _lhsOedp =-                               _segIedp-                           -- use rule "InterfacesRules.lag"(line 244, column 70)-                           _lhsOfirstvisitvertices =-                               _firstvisitvertices-                           -- copy rule (down)-                           _segOallInters =-                               _lhsIallInters-                           -- copy rule (down)-                           _segOddp =-                               _lhsIddp-                           -- copy rule (down)-                           _segOinfo =-                               _lhsIinfo-                           -- copy rule (down)-                           _segOprev =-                               _lhsIprev-                           -- copy rule (down)-                           _segOvisitDescr =-                               _lhsIvisitDescr-                           -- copy rule (down)-                           _segOvssGraph =-                               _lhsIvssGraph-                           ( _segIcvisits,_segIdescr,_segIedp,_segIfirstInh,_segIgroups,_segIhdIntravisits,_segInewedges,_segInewvertices,_segIprev,_segIsegs,_segIv) =-                               (seg_ _segOallInters _segOcons _segOddp _segOfromLhs _segOinfo _segOisFirst _segOn _segOprev _segOv _segOvisitDescr _segOvssGraph )-                       in  ( _lhsOdescr,_lhsOedp,_lhsOfirstvisitvertices,_lhsOinter,_lhsOnewedges,_lhsOnt,_lhsOv,_lhsOvisits))) )--- Interfaces ---------------------------------------------------{--   visit 0:-      inherited attributes:-         allInters            : CInterfaceMap-         ddp                  : Graph-         info                 : Info-         prev                 : [Vertex]-         visitDescr           : Map Vertex ChildVisit-         vssGraph             : Graph-      chained attribute:-         v                    : Vertex-      synthesized attributes:-         descr                : Seq (Vertex,ChildVisit)-         edp                  : Seq Edge-         firstvisitvertices   : [Vertex]-         inters               : CInterfaceMap-         newedges             : Seq Edge -         visits               : CVisitsMap-   alternatives:-      alternative Cons:-         child hd             : Interface -         child tl             : Interfaces -      alternative Nil:--}--- cata-sem_Interfaces :: Interfaces ->-                  T_Interfaces-sem_Interfaces list  =-    (Prelude.foldr sem_Interfaces_Cons sem_Interfaces_Nil (Prelude.map sem_Interface list) )--- semantic domain-newtype T_Interfaces = T_Interfaces (CInterfaceMap ->-                                     Graph ->-                                     Info ->-                                     ([Vertex]) ->-                                     Vertex ->-                                     (Map Vertex ChildVisit) ->-                                     Graph ->-                                     ( (Seq (Vertex,ChildVisit)),(Seq Edge),([Vertex]),CInterfaceMap,(Seq Edge ),Vertex,CVisitsMap))-data Inh_Interfaces = Inh_Interfaces {allInters_Inh_Interfaces :: CInterfaceMap,ddp_Inh_Interfaces :: Graph,info_Inh_Interfaces :: Info,prev_Inh_Interfaces :: [Vertex],v_Inh_Interfaces :: Vertex,visitDescr_Inh_Interfaces :: Map Vertex ChildVisit,vssGraph_Inh_Interfaces :: Graph}-data Syn_Interfaces = Syn_Interfaces {descr_Syn_Interfaces :: Seq (Vertex,ChildVisit),edp_Syn_Interfaces :: Seq Edge,firstvisitvertices_Syn_Interfaces :: [Vertex],inters_Syn_Interfaces :: CInterfaceMap,newedges_Syn_Interfaces :: Seq Edge ,v_Syn_Interfaces :: Vertex,visits_Syn_Interfaces :: CVisitsMap}-wrap_Interfaces (T_Interfaces sem ) (Inh_Interfaces _lhsIallInters _lhsIddp _lhsIinfo _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph )  =-    (let ( _lhsOdescr,_lhsOedp,_lhsOfirstvisitvertices,_lhsOinters,_lhsOnewedges,_lhsOv,_lhsOvisits) =-             (sem _lhsIallInters _lhsIddp _lhsIinfo _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph )-     in  (Syn_Interfaces _lhsOdescr _lhsOedp _lhsOfirstvisitvertices _lhsOinters _lhsOnewedges _lhsOv _lhsOvisits ))-sem_Interfaces_Cons :: T_Interface ->-                       T_Interfaces ->-                       T_Interfaces-sem_Interfaces_Cons (T_Interface hd_ ) (T_Interfaces tl_ )  =-    (T_Interfaces (\ _lhsIallInters-                     _lhsIddp-                     _lhsIinfo-                     _lhsIprev-                     _lhsIv-                     _lhsIvisitDescr-                     _lhsIvssGraph ->-                       (let _lhsOinters :: CInterfaceMap-                            _lhsOvisits :: CVisitsMap-                            _lhsOdescr :: (Seq (Vertex,ChildVisit))-                            _lhsOedp :: (Seq Edge)-                            _lhsOfirstvisitvertices :: ([Vertex])-                            _lhsOnewedges :: (Seq Edge )-                            _lhsOv :: Vertex-                            _hdOallInters :: CInterfaceMap-                            _hdOddp :: Graph-                            _hdOinfo :: Info-                            _hdOprev :: ([Vertex])-                            _hdOv :: Vertex-                            _hdOvisitDescr :: (Map Vertex ChildVisit)-                            _hdOvssGraph :: Graph-                            _tlOallInters :: CInterfaceMap-                            _tlOddp :: Graph-                            _tlOinfo :: Info-                            _tlOprev :: ([Vertex])-                            _tlOv :: Vertex-                            _tlOvisitDescr :: (Map Vertex ChildVisit)-                            _tlOvssGraph :: Graph-                            _hdIdescr :: (Seq (Vertex,ChildVisit))-                            _hdIedp :: (Seq Edge)-                            _hdIfirstvisitvertices :: ([Vertex])-                            _hdIinter :: CInterface-                            _hdInewedges :: (Seq Edge )-                            _hdInt :: NontermIdent-                            _hdIv :: Vertex-                            _hdIvisits :: (Map ConstructorIdent CVisits)-                            _tlIdescr :: (Seq (Vertex,ChildVisit))-                            _tlIedp :: (Seq Edge)-                            _tlIfirstvisitvertices :: ([Vertex])-                            _tlIinters :: CInterfaceMap-                            _tlInewedges :: (Seq Edge )-                            _tlIv :: Vertex-                            _tlIvisits :: CVisitsMap-                            -- "InterfacesRules.lag"(line 370, column 12)-                            _lhsOinters =-                                Map.insert _hdInt _hdIinter _tlIinters-                            -- "InterfacesRules.lag"(line 371, column 12)-                            _lhsOvisits =-                                Map.insert _hdInt _hdIvisits _tlIvisits-                            -- use rule "InterfacesRules.lag"(line 118, column 20)-                            _lhsOdescr =-                                _hdIdescr Seq.<> _tlIdescr-                            -- use rule "InterfacesRules.lag"(line 420, column 54)-                            _lhsOedp =-                                _hdIedp Seq.<> _tlIedp-                            -- use rule "InterfacesRules.lag"(line 244, column 70)-                            _lhsOfirstvisitvertices =-                                _hdIfirstvisitvertices ++ _tlIfirstvisitvertices-                            -- use rule "InterfacesRules.lag"(line 117, column 23)-                            _lhsOnewedges =-                                _hdInewedges Seq.<> _tlInewedges-                            -- copy rule (up)-                            _lhsOv =-                                _tlIv-                            -- copy rule (down)-                            _hdOallInters =-                                _lhsIallInters-                            -- copy rule (down)-                            _hdOddp =-                                _lhsIddp-                            -- copy rule (down)-                            _hdOinfo =-                                _lhsIinfo-                            -- copy rule (down)-                            _hdOprev =-                                _lhsIprev-                            -- copy rule (down)-                            _hdOv =-                                _lhsIv-                            -- copy rule (down)-                            _hdOvisitDescr =-                                _lhsIvisitDescr-                            -- copy rule (down)-                            _hdOvssGraph =-                                _lhsIvssGraph-                            -- copy rule (down)-                            _tlOallInters =-                                _lhsIallInters-                            -- copy rule (down)-                            _tlOddp =-                                _lhsIddp-                            -- copy rule (down)-                            _tlOinfo =-                                _lhsIinfo-                            -- copy rule (down)-                            _tlOprev =-                                _lhsIprev-                            -- copy rule (chain)-                            _tlOv =-                                _hdIv-                            -- copy rule (down)-                            _tlOvisitDescr =-                                _lhsIvisitDescr-                            -- copy rule (down)-                            _tlOvssGraph =-                                _lhsIvssGraph-                            ( _hdIdescr,_hdIedp,_hdIfirstvisitvertices,_hdIinter,_hdInewedges,_hdInt,_hdIv,_hdIvisits) =-                                (hd_ _hdOallInters _hdOddp _hdOinfo _hdOprev _hdOv _hdOvisitDescr _hdOvssGraph )-                            ( _tlIdescr,_tlIedp,_tlIfirstvisitvertices,_tlIinters,_tlInewedges,_tlIv,_tlIvisits) =-                                (tl_ _tlOallInters _tlOddp _tlOinfo _tlOprev _tlOv _tlOvisitDescr _tlOvssGraph )-                        in  ( _lhsOdescr,_lhsOedp,_lhsOfirstvisitvertices,_lhsOinters,_lhsOnewedges,_lhsOv,_lhsOvisits))) )-sem_Interfaces_Nil :: T_Interfaces-sem_Interfaces_Nil  =-    (T_Interfaces (\ _lhsIallInters-                     _lhsIddp-                     _lhsIinfo-                     _lhsIprev-                     _lhsIv-                     _lhsIvisitDescr-                     _lhsIvssGraph ->-                       (let _lhsOinters :: CInterfaceMap-                            _lhsOvisits :: CVisitsMap-                            _lhsOdescr :: (Seq (Vertex,ChildVisit))-                            _lhsOedp :: (Seq Edge)-                            _lhsOfirstvisitvertices :: ([Vertex])-                            _lhsOnewedges :: (Seq Edge )-                            _lhsOv :: Vertex-                            -- "InterfacesRules.lag"(line 372, column 12)-                            _lhsOinters =-                                Map.empty-                            -- "InterfacesRules.lag"(line 373, column 12)-                            _lhsOvisits =-                                Map.empty-                            -- use rule "InterfacesRules.lag"(line 118, column 20)-                            _lhsOdescr =-                                Seq.empty-                            -- use rule "InterfacesRules.lag"(line 420, column 54)-                            _lhsOedp =-                                Seq.empty-                            -- use rule "InterfacesRules.lag"(line 244, column 70)-                            _lhsOfirstvisitvertices =-                                []-                            -- use rule "InterfacesRules.lag"(line 117, column 23)-                            _lhsOnewedges =-                                Seq.empty-                            -- copy rule (chain)-                            _lhsOv =-                                _lhsIv-                        in  ( _lhsOdescr,_lhsOedp,_lhsOfirstvisitvertices,_lhsOinters,_lhsOnewedges,_lhsOv,_lhsOvisits))) )--- Segment ------------------------------------------------------{--   visit 0:-      inherited attributes:-         allInters            : CInterfaceMap-         cons                 : [ConstructorIdent]-         ddp                  : Graph-         fromLhs              : [Vertex]-         info                 : Info-         isFirst              : Bool-         n                    : Int-         nextInh              : [Vertex]-         nextIntravisits      : [IntraVisit]-         nextNewvertices      : [Vertex]-         visitDescr           : Map Vertex ChildVisit-         vssGraph             : Graph-      chained attributes:-         prev                 : [Vertex]-         v                    : Vertex-      synthesized attributes:-         cvisits              : [CVisit]-         descr                : Seq (Vertex,ChildVisit)-         edp                  : Seq Edge-         groups               : [([Vertex],[Vertex])]-         inh                  : [Vertex]-         intravisits          : [IntraVisit]-         newedges             : Seq Edge -         newvertices          : [Vertex]-         seg                  : CSegment-         visitss              : [VisitSS]-   alternatives:-      alternative Segment:-         child inh            : {[Vertex]}-         child syn            : {[Vertex]}-         visit 0:-            local look        : _-            local occurAs     : _-            local groups      : _-            local v           : _-            local newvertices : _-            local attredges   : _-            local visitedges  : _-            local synOccur    : _-            local vss         : _-            local visitss'    : _-            local defined     : _-            local visitss     : _-            local fromLhs     : _-            local computed    : _-            local intravisits : _-            local iv          : _-            local _tup1       : _-            local inhmap      : _-            local synmap      : _--}--- cata-sem_Segment :: Segment ->-               T_Segment-sem_Segment (Segment _inh _syn )  =-    (sem_Segment_Segment _inh _syn )--- semantic domain-newtype T_Segment = T_Segment (CInterfaceMap ->-                               ([ConstructorIdent]) ->-                               Graph ->-                               ([Vertex]) ->-                               Info ->-                               Bool ->-                               Int ->-                               ([Vertex]) ->-                               ([IntraVisit]) ->-                               ([Vertex]) ->-                               ([Vertex]) ->-                               Vertex ->-                               (Map Vertex ChildVisit) ->-                               Graph ->-                               ( ([CVisit]),(Seq (Vertex,ChildVisit)),(Seq Edge),([([Vertex],[Vertex])]),([Vertex]),([IntraVisit]),(Seq Edge ),([Vertex]),([Vertex]),CSegment,Vertex,([VisitSS])))-data Inh_Segment = Inh_Segment {allInters_Inh_Segment :: CInterfaceMap,cons_Inh_Segment :: [ConstructorIdent],ddp_Inh_Segment :: Graph,fromLhs_Inh_Segment :: [Vertex],info_Inh_Segment :: Info,isFirst_Inh_Segment :: Bool,n_Inh_Segment :: Int,nextInh_Inh_Segment :: [Vertex],nextIntravisits_Inh_Segment :: [IntraVisit],nextNewvertices_Inh_Segment :: [Vertex],prev_Inh_Segment :: [Vertex],v_Inh_Segment :: Vertex,visitDescr_Inh_Segment :: Map Vertex ChildVisit,vssGraph_Inh_Segment :: Graph}-data Syn_Segment = Syn_Segment {cvisits_Syn_Segment :: [CVisit],descr_Syn_Segment :: Seq (Vertex,ChildVisit),edp_Syn_Segment :: Seq Edge,groups_Syn_Segment :: [([Vertex],[Vertex])],inh_Syn_Segment :: [Vertex],intravisits_Syn_Segment :: [IntraVisit],newedges_Syn_Segment :: Seq Edge ,newvertices_Syn_Segment :: [Vertex],prev_Syn_Segment :: [Vertex],seg_Syn_Segment :: CSegment,v_Syn_Segment :: Vertex,visitss_Syn_Segment :: [VisitSS]}-wrap_Segment (T_Segment sem ) (Inh_Segment _lhsIallInters _lhsIcons _lhsIddp _lhsIfromLhs _lhsIinfo _lhsIisFirst _lhsIn _lhsInextInh _lhsInextIntravisits _lhsInextNewvertices _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph )  =-    (let ( _lhsOcvisits,_lhsOdescr,_lhsOedp,_lhsOgroups,_lhsOinh,_lhsOintravisits,_lhsOnewedges,_lhsOnewvertices,_lhsOprev,_lhsOseg,_lhsOv,_lhsOvisitss) =-             (sem _lhsIallInters _lhsIcons _lhsIddp _lhsIfromLhs _lhsIinfo _lhsIisFirst _lhsIn _lhsInextInh _lhsInextIntravisits _lhsInextNewvertices _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph )-     in  (Syn_Segment _lhsOcvisits _lhsOdescr _lhsOedp _lhsOgroups _lhsOinh _lhsOintravisits _lhsOnewedges _lhsOnewvertices _lhsOprev _lhsOseg _lhsOv _lhsOvisitss ))-sem_Segment_Segment :: ([Vertex]) ->-                       ([Vertex]) ->-                       T_Segment-sem_Segment_Segment inh_ syn_  =-    (T_Segment (\ _lhsIallInters-                  _lhsIcons-                  _lhsIddp-                  _lhsIfromLhs-                  _lhsIinfo-                  _lhsIisFirst-                  _lhsIn-                  _lhsInextInh-                  _lhsInextIntravisits-                  _lhsInextNewvertices-                  _lhsIprev-                  _lhsIv-                  _lhsIvisitDescr-                  _lhsIvssGraph ->-                    (let _lhsOdescr :: (Seq (Vertex,ChildVisit))-                         _lhsOnewedges :: (Seq Edge )-                         _lhsOprev :: ([Vertex])-                         _lhsOseg :: CSegment-                         _lhsOcvisits :: ([CVisit])-                         _lhsOedp :: (Seq Edge)-                         _lhsOinh :: ([Vertex])-                         _lhsOgroups :: ([([Vertex],[Vertex])])-                         _lhsOintravisits :: ([IntraVisit])-                         _lhsOnewvertices :: ([Vertex])-                         _lhsOv :: Vertex-                         _lhsOvisitss :: ([VisitSS])-                         -- "InterfacesRules.lag"(line 98, column 15)-                         _look =-                             \a -> ruleTable _lhsIinfo ! a-                         -- "InterfacesRules.lag"(line 99, column 15)-                         _occurAs =-                             \p us -> [ a  |  u <- us-                                           ,  a <- tdsToTdp _lhsIinfo ! u-                                           ,  p (_look a)]-                         -- "InterfacesRules.lag"(line 102, column 15)-                         _groups =-                             let group as = gather _lhsIinfo (_occurAs isRhs as)-                             in map (partition (isInh . _look)) (group (inh_ ++ syn_))-                         -- "InterfacesRules.lag"(line 104, column 15)-                         _v =-                             _lhsIv + length _groups-                         -- "InterfacesRules.lag"(line 105, column 15)-                         _newvertices =-                             [_lhsIv .. _v    -1]-                         -- "InterfacesRules.lag"(line 120, column 14)-                         _lhsOdescr =-                             Seq.fromList $ zipWith (cv _look _lhsIn) _newvertices _groups-                         -- "InterfacesRules.lag"(line 143, column 14)-                         _attredges =-                             concat (zipWith ed _newvertices _groups)-                         -- "InterfacesRules.lag"(line 162, column 15)-                         _visitedges =-                             zip _newvertices _lhsInextNewvertices-                         -- "InterfacesRules.lag"(line 163, column 15)-                         _lhsOnewedges =-                             Seq.fromList _attredges Seq.<> Seq.fromList _visitedges-                         -- "InterfacesRules.lag"(line 215, column 15)-                         _synOccur =-                             gather _lhsIinfo (_occurAs isLhs syn_)-                         -- "InterfacesRules.lag"(line 216, column 15)-                         _vss =-                             let hasCode v | inRange (bounds (ruleTable _lhsIinfo)) v =  getHasCode (ruleTable _lhsIinfo ! v)-                                           | otherwise = True-                             in if  null syn_-                                    then replicate (length _lhsIcons) []-                                    else map (filter hasCode . topSort' _lhsIvssGraph) _synOccur-                         -- "InterfacesRules.lag"(line 256, column 15)-                         _visitss' =-                             map (\\ _lhsIprev) _vss-                         -- "InterfacesRules.lag"(line 257, column 15)-                         _defined =-                             let defines v = case Map.lookup v _lhsIvisitDescr of-                                               Nothing -> [v]-                                               Just (ChildVisit _ _ _ inh _) -> v:inh-                             in concatMap (concatMap defines) _visitss-                         -- "InterfacesRules.lag"(line 261, column 15)-                         _lhsOprev =-                             _lhsIprev ++ _defined-                         -- "InterfacesRules.lag"(line 269, column 15)-                         _visitss =-                             let  rem :: [(Identifier,Identifier,Maybe Type)] -> [Vertex] -> [Vertex]-                                  rem prev [] = []-                                  rem prev (v:vs)-                                    | inRange (bounds table) v-                                        = let  cr = table ! v-                                               addV = case findIndex cmp prev of-                                                        Just _ -> id-                                                        _      -> (v:)-                                               cmp (fld,attr,tp) = getField cr == fld && getAttr cr == attr && sameNT (getType cr) tp-                                               sameNT (Just (NT ntA _)) (Just (NT ntB _)) = ntA == ntB-                                               sameNT _          _                        = False-                                               def = Map.elems (getDefines cr)-                                          in addV (rem (def ++ prev) vs)-                                    | otherwise = v:rem prev vs-                                  table = ruleTable _lhsIinfo-                             in map (rem []) _visitss'-                         -- "InterfacesRules.lag"(line 341, column 15)-                         _fromLhs =-                             _occurAs isLhs inh_ ++ _lhsIfromLhs-                         -- "InterfacesRules.lag"(line 342, column 15)-                         _computed =-                             let computes v = case Map.lookup v _lhsIvisitDescr of-                                                Nothing -> Map.keys (getDefines (ruleTable _lhsIinfo ! v))-                                                Just (ChildVisit _ _ _ _ syn) -> v:syn-                             in concatMap (concatMap computes) _visitss-                         -- "InterfacesRules.lag"(line 346, column 15)-                         _intravisits =-                             zipWith _iv _visitss _lhsInextIntravisits-                         -- "InterfacesRules.lag"(line 347, column 15)-                         _iv =-                             \vs next ->-                               let needed = concatMap (_lhsIddp !) vs-                               in nub (needed ++ next) \\ (_fromLhs ++ _computed)-                         -- "InterfacesRules.lag"(line 390, column 15)-                         _lhsOseg =-                             if False then undefined _lhsIvssGraph _lhsIvisitDescr _lhsIprev else CSegment _inhmap _synmap-                         -- "InterfacesRules.lag"(line 392, column 19)-                         __tup1 =-                             let makemap = Map.fromList . map findType-                                 findType v = getNtaNameType (attrTable _lhsIinfo ! v)-                             in (makemap inh_,makemap syn_)-                         -- "InterfacesRules.lag"(line 392, column 19)-                         (_inhmap,_) =-                             __tup1-                         -- "InterfacesRules.lag"(line 392, column 19)-                         (_,_synmap) =-                             __tup1-                         -- "InterfacesRules.lag"(line 395, column 15)-                         _lhsOcvisits =-                             let  mkVisit vss intra = CVisit _inhmap _synmap (mkSequence vss) (mkSequence intra) True-                                  mkSequence = map mkRule-                                  mkRule v = case Map.lookup v _lhsIvisitDescr of-                                               Nothing -> ruleTable _lhsIinfo ! v-                                               Just (ChildVisit name nt n _ _) -> ccv name nt n _lhsIallInters-                             in zipWith mkVisit _visitss _intravisits-                         -- "InterfacesRules.lag"(line 422, column 14)-                         _lhsOedp =-                             Seq.fromList [(i,s) | i <- inh_, s <- syn_]-                             Seq.<> Seq.fromList [(s,i) | s <- syn_, i <- _lhsInextInh ]-                         -- "InterfacesRules.lag"(line 427, column 14)-                         _lhsOinh =-                             inh_-                         -- copy rule (from local)-                         _lhsOgroups =-                             _groups-                         -- copy rule (from local)-                         _lhsOintravisits =-                             _intravisits-                         -- copy rule (from local)-                         _lhsOnewvertices =-                             _newvertices-                         -- copy rule (from local)-                         _lhsOv =-                             _v-                         -- copy rule (from local)-                         _lhsOvisitss =-                             _visitss-                     in  ( _lhsOcvisits,_lhsOdescr,_lhsOedp,_lhsOgroups,_lhsOinh,_lhsOintravisits,_lhsOnewedges,_lhsOnewvertices,_lhsOprev,_lhsOseg,_lhsOv,_lhsOvisitss))) )--- Segments -----------------------------------------------------{--   visit 0:-      inherited attributes:-         allInters            : CInterfaceMap-         cons                 : [ConstructorIdent]-         ddp                  : Graph-         fromLhs              : [Vertex]-         info                 : Info-         isFirst              : Bool-         n                    : Int-         visitDescr           : Map Vertex ChildVisit-         vssGraph             : Graph-      chained attributes:-         prev                 : [Vertex]-         v                    : Vertex-      synthesized attributes:-         cvisits              : [[CVisit]]-         descr                : Seq (Vertex,ChildVisit)-         edp                  : Seq Edge-         firstInh             : [Vertex]-         groups               : [([Vertex],[Vertex])]-         hdIntravisits        : [IntraVisit]-         newedges             : Seq Edge -         newvertices          : [Vertex]-         segs                 : CSegments-   alternatives:-      alternative Cons:-         child hd             : Segment -         child tl             : Segments -      alternative Nil:--}--- cata-sem_Segments :: Segments ->-                T_Segments-sem_Segments list  =-    (Prelude.foldr sem_Segments_Cons sem_Segments_Nil (Prelude.map sem_Segment list) )--- semantic domain-newtype T_Segments = T_Segments (CInterfaceMap ->-                                 ([ConstructorIdent]) ->-                                 Graph ->-                                 ([Vertex]) ->-                                 Info ->-                                 Bool ->-                                 Int ->-                                 ([Vertex]) ->-                                 Vertex ->-                                 (Map Vertex ChildVisit) ->-                                 Graph ->-                                 ( ([[CVisit]]),(Seq (Vertex,ChildVisit)),(Seq Edge),([Vertex]),([([Vertex],[Vertex])]),([IntraVisit]),(Seq Edge ),([Vertex]),([Vertex]),CSegments,Vertex))-data Inh_Segments = Inh_Segments {allInters_Inh_Segments :: CInterfaceMap,cons_Inh_Segments :: [ConstructorIdent],ddp_Inh_Segments :: Graph,fromLhs_Inh_Segments :: [Vertex],info_Inh_Segments :: Info,isFirst_Inh_Segments :: Bool,n_Inh_Segments :: Int,prev_Inh_Segments :: [Vertex],v_Inh_Segments :: Vertex,visitDescr_Inh_Segments :: Map Vertex ChildVisit,vssGraph_Inh_Segments :: Graph}-data Syn_Segments = Syn_Segments {cvisits_Syn_Segments :: [[CVisit]],descr_Syn_Segments :: Seq (Vertex,ChildVisit),edp_Syn_Segments :: Seq Edge,firstInh_Syn_Segments :: [Vertex],groups_Syn_Segments :: [([Vertex],[Vertex])],hdIntravisits_Syn_Segments :: [IntraVisit],newedges_Syn_Segments :: Seq Edge ,newvertices_Syn_Segments :: [Vertex],prev_Syn_Segments :: [Vertex],segs_Syn_Segments :: CSegments,v_Syn_Segments :: Vertex}-wrap_Segments (T_Segments sem ) (Inh_Segments _lhsIallInters _lhsIcons _lhsIddp _lhsIfromLhs _lhsIinfo _lhsIisFirst _lhsIn _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph )  =-    (let ( _lhsOcvisits,_lhsOdescr,_lhsOedp,_lhsOfirstInh,_lhsOgroups,_lhsOhdIntravisits,_lhsOnewedges,_lhsOnewvertices,_lhsOprev,_lhsOsegs,_lhsOv) =-             (sem _lhsIallInters _lhsIcons _lhsIddp _lhsIfromLhs _lhsIinfo _lhsIisFirst _lhsIn _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph )-     in  (Syn_Segments _lhsOcvisits _lhsOdescr _lhsOedp _lhsOfirstInh _lhsOgroups _lhsOhdIntravisits _lhsOnewedges _lhsOnewvertices _lhsOprev _lhsOsegs _lhsOv ))-sem_Segments_Cons :: T_Segment ->-                     T_Segments ->-                     T_Segments-sem_Segments_Cons (T_Segment hd_ ) (T_Segments tl_ )  =-    (T_Segments (\ _lhsIallInters-                   _lhsIcons-                   _lhsIddp-                   _lhsIfromLhs-                   _lhsIinfo-                   _lhsIisFirst-                   _lhsIn-                   _lhsIprev-                   _lhsIv-                   _lhsIvisitDescr-                   _lhsIvssGraph ->-                     (let _hdOnextNewvertices :: ([Vertex])-                          _lhsOnewvertices :: ([Vertex])-                          _lhsOgroups :: ([([Vertex],[Vertex])])-                          _tlOn :: Int-                          _tlOisFirst :: Bool-                          _hdOnextIntravisits :: ([IntraVisit])-                          _lhsOhdIntravisits :: ([IntraVisit])-                          _hdOfromLhs :: ([Vertex])-                          _tlOfromLhs :: ([Vertex])-                          _lhsOsegs :: CSegments-                          _hdOnextInh :: ([Vertex])-                          _lhsOfirstInh :: ([Vertex])-                          _lhsOcvisits :: ([[CVisit]])-                          _lhsOdescr :: (Seq (Vertex,ChildVisit))-                          _lhsOedp :: (Seq Edge)-                          _lhsOnewedges :: (Seq Edge )-                          _lhsOprev :: ([Vertex])-                          _lhsOv :: Vertex-                          _hdOallInters :: CInterfaceMap-                          _hdOcons :: ([ConstructorIdent])-                          _hdOddp :: Graph-                          _hdOinfo :: Info-                          _hdOisFirst :: Bool-                          _hdOn :: Int-                          _hdOprev :: ([Vertex])-                          _hdOv :: Vertex-                          _hdOvisitDescr :: (Map Vertex ChildVisit)-                          _hdOvssGraph :: Graph-                          _tlOallInters :: CInterfaceMap-                          _tlOcons :: ([ConstructorIdent])-                          _tlOddp :: Graph-                          _tlOinfo :: Info-                          _tlOprev :: ([Vertex])-                          _tlOv :: Vertex-                          _tlOvisitDescr :: (Map Vertex ChildVisit)-                          _tlOvssGraph :: Graph-                          _hdIcvisits :: ([CVisit])-                          _hdIdescr :: (Seq (Vertex,ChildVisit))-                          _hdIedp :: (Seq Edge)-                          _hdIgroups :: ([([Vertex],[Vertex])])-                          _hdIinh :: ([Vertex])-                          _hdIintravisits :: ([IntraVisit])-                          _hdInewedges :: (Seq Edge )-                          _hdInewvertices :: ([Vertex])-                          _hdIprev :: ([Vertex])-                          _hdIseg :: CSegment-                          _hdIv :: Vertex-                          _hdIvisitss :: ([VisitSS])-                          _tlIcvisits :: ([[CVisit]])-                          _tlIdescr :: (Seq (Vertex,ChildVisit))-                          _tlIedp :: (Seq Edge)-                          _tlIfirstInh :: ([Vertex])-                          _tlIgroups :: ([([Vertex],[Vertex])])-                          _tlIhdIntravisits :: ([IntraVisit])-                          _tlInewedges :: (Seq Edge )-                          _tlInewvertices :: ([Vertex])-                          _tlIprev :: ([Vertex])-                          _tlIsegs :: CSegments-                          _tlIv :: Vertex-                          -- "InterfacesRules.lag"(line 157, column 12)-                          _hdOnextNewvertices =-                              _tlInewvertices-                          -- "InterfacesRules.lag"(line 158, column 12)-                          _lhsOnewvertices =-                              _hdInewvertices-                          -- "InterfacesRules.lag"(line 172, column 11)-                          _lhsOgroups =-                              _hdIgroups-                          -- "InterfacesRules.lag"(line 193, column 11)-                          _tlOn =-                              _lhsIn + 1-                          -- "InterfacesRules.lag"(line 301, column 11)-                          _tlOisFirst =-                              False-                          -- "InterfacesRules.lag"(line 314, column 12)-                          _hdOnextIntravisits =-                              _tlIhdIntravisits-                          -- "InterfacesRules.lag"(line 315, column 12)-                          _lhsOhdIntravisits =-                              _hdIintravisits-                          -- "InterfacesRules.lag"(line 338, column 12)-                          _hdOfromLhs =-                              _lhsIfromLhs-                          -- "InterfacesRules.lag"(line 339, column 12)-                          _tlOfromLhs =-                              []-                          -- "InterfacesRules.lag"(line 385, column 12)-                          _lhsOsegs =-                              _hdIseg : _tlIsegs-                          -- "InterfacesRules.lag"(line 429, column 12)-                          _hdOnextInh =-                              _tlIfirstInh-                          -- "InterfacesRules.lag"(line 430, column 12)-                          _lhsOfirstInh =-                              _hdIinh-                          -- use rule "InterfacesRules.lag"(line 384, column 29)-                          _lhsOcvisits =-                              _hdIcvisits : _tlIcvisits-                          -- use rule "InterfacesRules.lag"(line 118, column 20)-                          _lhsOdescr =-                              _hdIdescr Seq.<> _tlIdescr-                          -- use rule "InterfacesRules.lag"(line 420, column 54)-                          _lhsOedp =-                              _hdIedp Seq.<> _tlIedp-                          -- use rule "InterfacesRules.lag"(line 117, column 23)-                          _lhsOnewedges =-                              _hdInewedges Seq.<> _tlInewedges-                          -- copy rule (up)-                          _lhsOprev =-                              _tlIprev-                          -- copy rule (up)-                          _lhsOv =-                              _tlIv-                          -- copy rule (down)-                          _hdOallInters =-                              _lhsIallInters-                          -- copy rule (down)-                          _hdOcons =-                              _lhsIcons-                          -- copy rule (down)-                          _hdOddp =-                              _lhsIddp-                          -- copy rule (down)-                          _hdOinfo =-                              _lhsIinfo-                          -- copy rule (down)-                          _hdOisFirst =-                              _lhsIisFirst-                          -- copy rule (down)-                          _hdOn =-                              _lhsIn-                          -- copy rule (down)-                          _hdOprev =-                              _lhsIprev-                          -- copy rule (down)-                          _hdOv =-                              _lhsIv-                          -- copy rule (down)-                          _hdOvisitDescr =-                              _lhsIvisitDescr-                          -- copy rule (down)-                          _hdOvssGraph =-                              _lhsIvssGraph-                          -- copy rule (down)-                          _tlOallInters =-                              _lhsIallInters-                          -- copy rule (down)-                          _tlOcons =-                              _lhsIcons-                          -- copy rule (down)-                          _tlOddp =-                              _lhsIddp-                          -- copy rule (down)-                          _tlOinfo =-                              _lhsIinfo-                          -- copy rule (chain)-                          _tlOprev =-                              _hdIprev-                          -- copy rule (chain)-                          _tlOv =-                              _hdIv-                          -- copy rule (down)-                          _tlOvisitDescr =-                              _lhsIvisitDescr-                          -- copy rule (down)-                          _tlOvssGraph =-                              _lhsIvssGraph-                          ( _hdIcvisits,_hdIdescr,_hdIedp,_hdIgroups,_hdIinh,_hdIintravisits,_hdInewedges,_hdInewvertices,_hdIprev,_hdIseg,_hdIv,_hdIvisitss) =-                              (hd_ _hdOallInters _hdOcons _hdOddp _hdOfromLhs _hdOinfo _hdOisFirst _hdOn _hdOnextInh _hdOnextIntravisits _hdOnextNewvertices _hdOprev _hdOv _hdOvisitDescr _hdOvssGraph )-                          ( _tlIcvisits,_tlIdescr,_tlIedp,_tlIfirstInh,_tlIgroups,_tlIhdIntravisits,_tlInewedges,_tlInewvertices,_tlIprev,_tlIsegs,_tlIv) =-                              (tl_ _tlOallInters _tlOcons _tlOddp _tlOfromLhs _tlOinfo _tlOisFirst _tlOn _tlOprev _tlOv _tlOvisitDescr _tlOvssGraph )-                      in  ( _lhsOcvisits,_lhsOdescr,_lhsOedp,_lhsOfirstInh,_lhsOgroups,_lhsOhdIntravisits,_lhsOnewedges,_lhsOnewvertices,_lhsOprev,_lhsOsegs,_lhsOv))) )-sem_Segments_Nil :: T_Segments-sem_Segments_Nil  =-    (T_Segments (\ _lhsIallInters-                   _lhsIcons-                   _lhsIddp-                   _lhsIfromLhs-                   _lhsIinfo-                   _lhsIisFirst-                   _lhsIn-                   _lhsIprev-                   _lhsIv-                   _lhsIvisitDescr-                   _lhsIvssGraph ->-                     (let _lhsOnewvertices :: ([Vertex])-                          _lhsOgroups :: ([([Vertex],[Vertex])])-                          _lhsOhdIntravisits :: ([IntraVisit])-                          _lhsOsegs :: CSegments-                          _lhsOfirstInh :: ([Vertex])-                          _lhsOcvisits :: ([[CVisit]])-                          _lhsOdescr :: (Seq (Vertex,ChildVisit))-                          _lhsOedp :: (Seq Edge)-                          _lhsOnewedges :: (Seq Edge )-                          _lhsOprev :: ([Vertex])-                          _lhsOv :: Vertex-                          -- "InterfacesRules.lag"(line 159, column 12)-                          _lhsOnewvertices =-                              []-                          -- "InterfacesRules.lag"(line 173, column 11)-                          _lhsOgroups =-                              []-                          -- "InterfacesRules.lag"(line 316, column 10)-                          _lhsOhdIntravisits =-                              repeat []-                          -- "InterfacesRules.lag"(line 386, column 12)-                          _lhsOsegs =-                              []-                          -- "InterfacesRules.lag"(line 431, column 11)-                          _lhsOfirstInh =-                              []-                          -- use rule "InterfacesRules.lag"(line 384, column 29)-                          _lhsOcvisits =-                              []-                          -- use rule "InterfacesRules.lag"(line 118, column 20)-                          _lhsOdescr =-                              Seq.empty-                          -- use rule "InterfacesRules.lag"(line 420, column 54)-                          _lhsOedp =-                              Seq.empty-                          -- use rule "InterfacesRules.lag"(line 117, column 23)-                          _lhsOnewedges =-                              Seq.empty-                          -- copy rule (chain)-                          _lhsOprev =-                              _lhsIprev-                          -- copy rule (chain)-                          _lhsOv =-                              _lhsIv-                      in  ( _lhsOcvisits,_lhsOdescr,_lhsOedp,_lhsOfirstInh,_lhsOgroups,_lhsOhdIntravisits,_lhsOnewedges,_lhsOnewvertices,_lhsOprev,_lhsOsegs,_lhsOv))) )+{-# OPTIONS_GHC -fbang-patterns #-}+-- UUAGC 0.9.5 (InterfacesRules.lag)+module InterfacesRules where++import Interfaces+import SequentialTypes+import CodeSyntax+import GrammarInfo++import UU.DData.Seq as Seq+import qualified Data.Map as Map+import Data.Map(Map)+import qualified Data.Set as Set+import Data.Set(Set)+import Data.Tree(Tree(Node))+import Data.Graph(Graph, dfs, edges, buildG, transposeG)+import Data.Maybe (fromJust)+import Data.List (partition,transpose,(\\),nub,intersect, findIndex)+import Data.Array ((!),inRange,bounds,assocs)++import Debug.Trace(trace)++import CommonTypes+import SequentialTypes++type VisitSS = [Vertex]++gather :: Info -> [Vertex] -> [[Vertex]]+gather info =  eqClasses comp+               where comp a b = isEqualField (ruleTable info ! a) (ruleTable info ! b)++-- Only non-empty syn will ever be forced, because visits with empty syn are never performed+-- Right hand side synthesized attributes always have a field+cv :: (Vertex -> CRule) -> Int -> Vertex -> ([Vertex],[Vertex]) -> (Vertex,ChildVisit)+cv look n v (inh,syn) =  let  fld = getField (look (head syn))+                              rnt = fromJust (getRhsNt (look (head syn)))+                              d = ChildVisit fld rnt n inh syn+                         in (v,d)++ed v (inh,syn) = map (\i -> (i,v)) inh ++ map (\s -> (v,s)) syn++postorder (Node a ts) = postorderF ts ++ [a]+postorderF = concatMap postorder+postOrd g = postorderF . dfs g+topSort' g = postOrd g++type IntraVisit = [Vertex]++swap (a,b) = (b,a)++ccv :: Identifier -> NontermIdent -> Int -> CInterfaceMap -> CRule+ccv name nt n table+  =  CChildVisit name nt n inh syn last+     where  CInterface segs = Map.findWithDefault (error ("InterfacesRules::ccv::interfaces not in table for nt: " ++ show nt)) nt table+            (seg:remain) = drop n segs+            CSegment inh syn = seg           +            last = null remain+-- IRoot -------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         dpr                  : [Edge]+         info                 : Info+         tdp                  : Graph+      synthesized attributes:+         edp                  : [Edge]+         inters               : CInterfaceMap+         visits               : CVisitsMap+   alternatives:+      alternative IRoot:+         child inters         : Interfaces+         visit 0:+            local newedges    : _+            local visitssGraph : _+            local descr       : _+-}+-- cata+sem_IRoot :: IRoot ->+             T_IRoot+sem_IRoot !(IRoot _inters) =+    (sem_IRoot_IRoot (sem_Interfaces _inters))+-- semantic domain+newtype T_IRoot = T_IRoot (([Edge]) ->+                           Info ->+                           Graph ->+                           ( ([Edge]),CInterfaceMap,CVisitsMap))+data Inh_IRoot = Inh_IRoot {dpr_Inh_IRoot :: !([Edge]),info_Inh_IRoot :: !(Info),tdp_Inh_IRoot :: !(Graph)}+data Syn_IRoot = Syn_IRoot {edp_Syn_IRoot :: !([Edge]),inters_Syn_IRoot :: !(CInterfaceMap),visits_Syn_IRoot :: !(CVisitsMap)}+wrap_IRoot !(T_IRoot sem) !(Inh_IRoot _lhsIdpr _lhsIinfo _lhsItdp) =+    (let ( !_lhsOedp,!_lhsOinters,!_lhsOvisits) =+             (sem _lhsIdpr _lhsIinfo _lhsItdp)+     in  (Syn_IRoot _lhsOedp _lhsOinters _lhsOvisits))+sem_IRoot_IRoot :: T_Interfaces ->+                   T_IRoot+sem_IRoot_IRoot !(T_Interfaces inters_) =+    (T_IRoot (\ (!_lhsIdpr)+                (!_lhsIinfo)+                (!_lhsItdp) ->+                  (case (_lhsIinfo) of+                   { !_intersOinfo ->+                   (case (snd (bounds _lhsItdp) + 1) of+                    { !_intersOv ->+                    (case ((inters_ _intersOinfo _intersOv)) of+                     { ( !_intersIdescr,!_intersIfirstvisitvertices,!_intersInewedges,!_intersIv,!T_Interfaces_1 inters_1) ->+                     (case (let terminals = [ v | (v,cr) <- assocs (ruleTable _lhsIinfo), not (getHasCode cr), isLocal cr ]+                            in _intersIfirstvisitvertices ++ terminals) of+                      { !_intersOprev ->+                      (case (Seq.toList _intersInewedges) of+                       { !_newedges ->+                       (case (let graph = buildG (0,_intersIv-1) es+                                  es = _newedges ++ edges _lhsItdp+                              in transposeG graph) of+                        { !_visitssGraph ->+                        (case (_visitssGraph) of+                         { !_intersOvssGraph ->+                         (case (Seq.toList _intersIdescr) of+                          { !_descr ->+                          (case (Map.fromList _descr) of+                           { !_intersOvisitDescr ->+                           (case ((inters_1 _intersOprev _intersOvisitDescr _intersOvssGraph)) of+                            { ( !_intersIinters,!T_Interfaces_2 inters_2) ->+                            (case (_intersIinters) of+                             { !_intersOallInters ->+                             (case (buildG (0,_intersIv-1) (map swap (_lhsIdpr ++ _newedges))) of+                              { !_intersOddp ->+                              (case ((inters_2 _intersOallInters _intersOddp)) of+                               { ( !_intersIedp,!_intersIvisits) ->+                               (case (Seq.toList _intersIedp) of+                                { !_lhsOedp ->+                                (case (_intersIinters) of+                                 { !_lhsOinters ->+                                 (case (_intersIvisits) of+                                  { !_lhsOvisits ->+                                  ( _lhsOedp,_lhsOinters,_lhsOvisits) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+-- Interface ---------------------------------------------------+{-+   visit 0:+      inherited attribute:+         info                 : Info+      chained attribute:+         v                    : Vertex+      synthesized attributes:+         descr                : Seq (Vertex,ChildVisit)+         firstvisitvertices   : [Vertex]+         newedges             : Seq Edge +   visit 1:+      inherited attributes:+         prev                 : [Vertex]+         visitDescr           : Map Vertex ChildVisit+         vssGraph             : Graph+      synthesized attributes:+         inter                : CInterface+         nt                   : NontermIdent+   visit 2:+      inherited attributes:+         allInters            : CInterfaceMap+         ddp                  : Graph+      synthesized attributes:+         edp                  : Seq Edge+         visits               : Map ConstructorIdent CVisits+   alternatives:+      alternative Interface:+         child nt             : {NontermIdent}+         child cons           : {[ConstructorIdent]}+         child seg            : Segments+         visit 0:+            local look        : {Vertex -> CRule}+            local v           : _+            local firstvisitvertices : _+            local descr       : _+            local newedges    : _+-}+-- cata+sem_Interface :: Interface ->+                 T_Interface+sem_Interface !(Interface _nt _cons _seg) =+    (sem_Interface_Interface _nt _cons (sem_Segments _seg))+-- semantic domain+newtype T_Interface = T_Interface (Info ->+                                   Vertex ->+                                   ( (Seq (Vertex,ChildVisit)),([Vertex]),(Seq Edge ),Vertex,T_Interface_1))+newtype T_Interface_1 = T_Interface_1 (([Vertex]) ->+                                       (Map Vertex ChildVisit) ->+                                       Graph ->+                                       ( CInterface,NontermIdent,T_Interface_2))+newtype T_Interface_2 = T_Interface_2 (CInterfaceMap ->+                                       Graph ->+                                       ( (Seq Edge),(Map ConstructorIdent CVisits)))+data Inh_Interface = Inh_Interface {allInters_Inh_Interface :: !(CInterfaceMap),ddp_Inh_Interface :: !(Graph),info_Inh_Interface :: !(Info),prev_Inh_Interface :: !([Vertex]),v_Inh_Interface :: !(Vertex),visitDescr_Inh_Interface :: !(Map Vertex ChildVisit),vssGraph_Inh_Interface :: !(Graph)}+data Syn_Interface = Syn_Interface {descr_Syn_Interface :: !(Seq (Vertex,ChildVisit)),edp_Syn_Interface :: !(Seq Edge),firstvisitvertices_Syn_Interface :: !([Vertex]),inter_Syn_Interface :: !(CInterface),newedges_Syn_Interface :: !(Seq Edge ),nt_Syn_Interface :: !(NontermIdent),v_Syn_Interface :: !(Vertex),visits_Syn_Interface :: !(Map ConstructorIdent CVisits)}+wrap_Interface !(T_Interface sem) !(Inh_Interface _lhsIallInters _lhsIddp _lhsIinfo _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph) =+    (let ( !_lhsOdescr,!_lhsOfirstvisitvertices,!_lhsOnewedges,!_lhsOv,!T_Interface_1 sem_1) =+             (sem _lhsIinfo _lhsIv)+         ( !_lhsOinter,!_lhsOnt,!T_Interface_2 sem_2) =+             (sem_1 _lhsIprev _lhsIvisitDescr _lhsIvssGraph)+         ( !_lhsOedp,!_lhsOvisits) =+             (sem_2 _lhsIallInters _lhsIddp)+     in  (Syn_Interface _lhsOdescr _lhsOedp _lhsOfirstvisitvertices _lhsOinter _lhsOnewedges _lhsOnt _lhsOv _lhsOvisits))+sem_Interface_Interface :: NontermIdent ->+                           ([ConstructorIdent]) ->+                           T_Segments ->+                           T_Interface+sem_Interface_Interface !nt_ !cons_ !(T_Segments seg_) =+    (T_Interface (\ (!_lhsIinfo)+                    (!_lhsIv) ->+                      (case (_lhsIinfo) of+                       { !_segOinfo ->+                       (case (0) of+                        { !_segOn ->+                        (case (\a -> ruleTable _lhsIinfo ! a) of+                         { !_look ->+                         (case (_lhsIv) of+                          { !_segOv ->+                          (case ((seg_ _segOinfo _segOn _segOv)) of+                           { ( !_segIdescr,!_segIgroups,!_segInewedges,!_segInewvertices,!_segIv,!T_Segments_1 seg_1) ->+                           (case (_segIv + length _segInewvertices) of+                            { !_v ->+                            (case ([_segIv .. _v-1]) of+                             { !_firstvisitvertices ->+                             (case (zipWith (cv _look (-1)) _firstvisitvertices _segIgroups) of+                              { !_descr ->+                              (case (_segIdescr Seq.<> Seq.fromList _descr) of+                               { !_lhsOdescr ->+                               (case (_firstvisitvertices) of+                                { !_lhsOfirstvisitvertices ->+                                (case (zip _firstvisitvertices _segInewvertices) of+                                 { !_newedges ->+                                 (case (_segInewedges Seq.<> Seq.fromList _newedges) of+                                  { !_lhsOnewedges ->+                                  (case (_v) of+                                   { !_lhsOv ->+                                   (case ((sem_Interface_Interface_1 cons_ (T_Segments_1 seg_1) nt_)) of+                                    { ( !sem_Interface_1) ->+                                    ( _lhsOdescr,_lhsOfirstvisitvertices,_lhsOnewedges,_lhsOv,sem_Interface_1) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Interface_Interface_1 :: ([ConstructorIdent]) ->+                             T_Segments_1 ->+                             NontermIdent ->+                             T_Interface_1+sem_Interface_Interface_1 !cons_ !(T_Segments_1 seg_1) !nt_ =+    (T_Interface_1 (\ (!_lhsIprev)+                      (!_lhsIvisitDescr)+                      (!_lhsIvssGraph) ->+                        (case (_lhsIvssGraph) of+                         { !_segOvssGraph ->+                         (case (_lhsIvisitDescr) of+                          { !_segOvisitDescr ->+                          (case (_lhsIprev) of+                           { !_segOprev ->+                           (case (cons_) of+                            { !_segOcons ->+                            (case ((seg_1 _segOcons _segOprev _segOvisitDescr _segOvssGraph)) of+                             { ( !_segIsegs,!T_Segments_2 seg_2) ->+                             (case (CInterface _segIsegs) of+                              { !_lhsOinter ->+                              (case (nt_) of+                               { !_lhsOnt ->+                               (case ((sem_Interface_Interface_2 _lhsIprev (T_Segments_2 seg_2) cons_)) of+                                { ( !sem_Interface_2) ->+                                ( _lhsOinter,_lhsOnt,sem_Interface_2) }) }) }) }) }) }) }) })))+sem_Interface_Interface_2 :: ([Vertex]) ->+                             T_Segments_2 ->+                             ([ConstructorIdent]) ->+                             T_Interface_2+sem_Interface_Interface_2 !_lhsIprev !(T_Segments_2 seg_2) !cons_ =+    (T_Interface_2 (\ (!_lhsIallInters)+                      (!_lhsIddp) ->+                        (case (_lhsIddp) of+                         { !_segOddp ->+                         (case (_lhsIallInters) of+                          { !_segOallInters ->+                          (case (_lhsIprev) of+                           { !_segOfromLhs ->+                           (case (True) of+                            { !_segOisFirst ->+                            (case ((seg_2 _segOallInters _segOddp _segOfromLhs _segOisFirst)) of+                             { ( !_segIcvisits,!_segIedp,!_segIfirstInh,!_segIhdIntravisits,!_segIprev) ->+                             (case (_segIedp) of+                              { !_lhsOedp ->+                              (case (Map.fromList (zip cons_ (transpose _segIcvisits))) of+                               { !_lhsOvisits ->+                               ( _lhsOedp,_lhsOvisits) }) }) }) }) }) }) })))+-- Interfaces --------------------------------------------------+{-+   visit 0:+      inherited attribute:+         info                 : Info+      chained attribute:+         v                    : Vertex+      synthesized attributes:+         descr                : Seq (Vertex,ChildVisit)+         firstvisitvertices   : [Vertex]+         newedges             : Seq Edge +   visit 1:+      inherited attributes:+         prev                 : [Vertex]+         visitDescr           : Map Vertex ChildVisit+         vssGraph             : Graph+      synthesized attribute:+         inters               : CInterfaceMap+   visit 2:+      inherited attributes:+         allInters            : CInterfaceMap+         ddp                  : Graph+      synthesized attributes:+         edp                  : Seq Edge+         visits               : CVisitsMap+   alternatives:+      alternative Cons:+         child hd             : Interface+         child tl             : Interfaces+      alternative Nil:+-}+-- cata+sem_Interfaces :: Interfaces ->+                  T_Interfaces+sem_Interfaces !list =+    (Prelude.foldr sem_Interfaces_Cons sem_Interfaces_Nil (Prelude.map sem_Interface list))+-- semantic domain+newtype T_Interfaces = T_Interfaces (Info ->+                                     Vertex ->+                                     ( (Seq (Vertex,ChildVisit)),([Vertex]),(Seq Edge ),Vertex,T_Interfaces_1))+newtype T_Interfaces_1 = T_Interfaces_1 (([Vertex]) ->+                                         (Map Vertex ChildVisit) ->+                                         Graph ->+                                         ( CInterfaceMap,T_Interfaces_2))+newtype T_Interfaces_2 = T_Interfaces_2 (CInterfaceMap ->+                                         Graph ->+                                         ( (Seq Edge),CVisitsMap))+data Inh_Interfaces = Inh_Interfaces {allInters_Inh_Interfaces :: !(CInterfaceMap),ddp_Inh_Interfaces :: !(Graph),info_Inh_Interfaces :: !(Info),prev_Inh_Interfaces :: !([Vertex]),v_Inh_Interfaces :: !(Vertex),visitDescr_Inh_Interfaces :: !(Map Vertex ChildVisit),vssGraph_Inh_Interfaces :: !(Graph)}+data Syn_Interfaces = Syn_Interfaces {descr_Syn_Interfaces :: !(Seq (Vertex,ChildVisit)),edp_Syn_Interfaces :: !(Seq Edge),firstvisitvertices_Syn_Interfaces :: !([Vertex]),inters_Syn_Interfaces :: !(CInterfaceMap),newedges_Syn_Interfaces :: !(Seq Edge ),v_Syn_Interfaces :: !(Vertex),visits_Syn_Interfaces :: !(CVisitsMap)}+wrap_Interfaces !(T_Interfaces sem) !(Inh_Interfaces _lhsIallInters _lhsIddp _lhsIinfo _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph) =+    (let ( !_lhsOdescr,!_lhsOfirstvisitvertices,!_lhsOnewedges,!_lhsOv,!T_Interfaces_1 sem_1) =+             (sem _lhsIinfo _lhsIv)+         ( !_lhsOinters,!T_Interfaces_2 sem_2) =+             (sem_1 _lhsIprev _lhsIvisitDescr _lhsIvssGraph)+         ( !_lhsOedp,!_lhsOvisits) =+             (sem_2 _lhsIallInters _lhsIddp)+     in  (Syn_Interfaces _lhsOdescr _lhsOedp _lhsOfirstvisitvertices _lhsOinters _lhsOnewedges _lhsOv _lhsOvisits))+sem_Interfaces_Cons :: T_Interface ->+                       T_Interfaces ->+                       T_Interfaces+sem_Interfaces_Cons !(T_Interface hd_) !(T_Interfaces tl_) =+    (T_Interfaces (\ (!_lhsIinfo)+                     (!_lhsIv) ->+                       (case (_lhsIv) of+                        { !_hdOv ->+                        (case (_lhsIinfo) of+                         { !_hdOinfo ->+                         (case ((hd_ _hdOinfo _hdOv)) of+                          { ( !_hdIdescr,!_hdIfirstvisitvertices,!_hdInewedges,!_hdIv,!T_Interface_1 hd_1) ->+                          (case (_hdIv) of+                           { !_tlOv ->+                           (case (_lhsIinfo) of+                            { !_tlOinfo ->+                            (case ((tl_ _tlOinfo _tlOv)) of+                             { ( !_tlIdescr,!_tlIfirstvisitvertices,!_tlInewedges,!_tlIv,!T_Interfaces_1 tl_1) ->+                             (case (_hdIdescr Seq.<> _tlIdescr) of+                              { !_lhsOdescr ->+                              (case (_hdIfirstvisitvertices ++ _tlIfirstvisitvertices) of+                               { !_lhsOfirstvisitvertices ->+                               (case (_hdInewedges Seq.<> _tlInewedges) of+                                { !_lhsOnewedges ->+                                (case (_tlIv) of+                                 { !_lhsOv ->+                                 (case ((sem_Interfaces_Cons_1 (T_Interfaces_1 tl_1) (T_Interface_1 hd_1))) of+                                  { ( !sem_Interfaces_1) ->+                                  ( _lhsOdescr,_lhsOfirstvisitvertices,_lhsOnewedges,_lhsOv,sem_Interfaces_1) }) }) }) }) }) }) }) }) }) }) })))+sem_Interfaces_Cons_1 :: T_Interfaces_1 ->+                         T_Interface_1 ->+                         T_Interfaces_1+sem_Interfaces_Cons_1 !(T_Interfaces_1 tl_1) !(T_Interface_1 hd_1) =+    (T_Interfaces_1 (\ (!_lhsIprev)+                       (!_lhsIvisitDescr)+                       (!_lhsIvssGraph) ->+                         (case (_lhsIvssGraph) of+                          { !_tlOvssGraph ->+                          (case (_lhsIvisitDescr) of+                           { !_tlOvisitDescr ->+                           (case (_lhsIprev) of+                            { !_tlOprev ->+                            (case (_lhsIvssGraph) of+                             { !_hdOvssGraph ->+                             (case (_lhsIvisitDescr) of+                              { !_hdOvisitDescr ->+                              (case (_lhsIprev) of+                               { !_hdOprev ->+                               (case ((tl_1 _tlOprev _tlOvisitDescr _tlOvssGraph)) of+                                { ( !_tlIinters,!T_Interfaces_2 tl_2) ->+                                (case ((hd_1 _hdOprev _hdOvisitDescr _hdOvssGraph)) of+                                 { ( !_hdIinter,!_hdInt,!T_Interface_2 hd_2) ->+                                 (case (Map.insert _hdInt _hdIinter _tlIinters) of+                                  { !_lhsOinters ->+                                  (case ((sem_Interfaces_Cons_2 (T_Interfaces_2 tl_2) (T_Interface_2 hd_2) _hdInt)) of+                                   { ( !sem_Interfaces_2) ->+                                   ( _lhsOinters,sem_Interfaces_2) }) }) }) }) }) }) }) }) }) })))+sem_Interfaces_Cons_2 :: T_Interfaces_2 ->+                         T_Interface_2 ->+                         NontermIdent ->+                         T_Interfaces_2+sem_Interfaces_Cons_2 !(T_Interfaces_2 tl_2) !(T_Interface_2 hd_2) !_hdInt =+    (T_Interfaces_2 (\ (!_lhsIallInters)+                       (!_lhsIddp) ->+                         (case (_lhsIddp) of+                          { !_tlOddp ->+                          (case (_lhsIallInters) of+                           { !_tlOallInters ->+                           (case ((tl_2 _tlOallInters _tlOddp)) of+                            { ( !_tlIedp,!_tlIvisits) ->+                            (case (_lhsIddp) of+                             { !_hdOddp ->+                             (case (_lhsIallInters) of+                              { !_hdOallInters ->+                              (case ((hd_2 _hdOallInters _hdOddp)) of+                               { ( !_hdIedp,!_hdIvisits) ->+                               (case (_hdIedp Seq.<> _tlIedp) of+                                { !_lhsOedp ->+                                (case (Map.insert _hdInt _hdIvisits _tlIvisits) of+                                 { !_lhsOvisits ->+                                 ( _lhsOedp,_lhsOvisits) }) }) }) }) }) }) }) })))+sem_Interfaces_Nil :: T_Interfaces+sem_Interfaces_Nil  =+    (T_Interfaces (\ (!_lhsIinfo)+                     (!_lhsIv) ->+                       (case (Seq.empty) of+                        { !_lhsOdescr ->+                        (case ([]) of+                         { !_lhsOfirstvisitvertices ->+                         (case (Seq.empty) of+                          { !_lhsOnewedges ->+                          (case (_lhsIv) of+                           { !_lhsOv ->+                           (case ((sem_Interfaces_Nil_1 )) of+                            { ( !sem_Interfaces_1) ->+                            ( _lhsOdescr,_lhsOfirstvisitvertices,_lhsOnewedges,_lhsOv,sem_Interfaces_1) }) }) }) }) })))+sem_Interfaces_Nil_1 :: T_Interfaces_1+sem_Interfaces_Nil_1  =+    (T_Interfaces_1 (\ (!_lhsIprev)+                       (!_lhsIvisitDescr)+                       (!_lhsIvssGraph) ->+                         (case (Map.empty) of+                          { !_lhsOinters ->+                          (case ((sem_Interfaces_Nil_2 )) of+                           { ( !sem_Interfaces_2) ->+                           ( _lhsOinters,sem_Interfaces_2) }) })))+sem_Interfaces_Nil_2 :: T_Interfaces_2+sem_Interfaces_Nil_2  =+    (T_Interfaces_2 (\ (!_lhsIallInters)+                       (!_lhsIddp) ->+                         (case (Seq.empty) of+                          { !_lhsOedp ->+                          (case (Map.empty) of+                           { !_lhsOvisits ->+                           ( _lhsOedp,_lhsOvisits) }) })))+-- Segment -----------------------------------------------------+{-+   visit 0:+      inherited attribute:+         info                 : Info+      chained attribute:+         v                    : Vertex+   visit 1:+      inherited attributes:+         n                    : Int+         nextNewvertices      : [Vertex]+      synthesized attributes:+         descr                : Seq (Vertex,ChildVisit)+         groups               : [([Vertex],[Vertex])]+         newedges             : Seq Edge +         newvertices          : [Vertex]+   visit 2:+      inherited attributes:+         cons                 : [ConstructorIdent]+         visitDescr           : Map Vertex ChildVisit+         vssGraph             : Graph+      chained attribute:+         prev                 : [Vertex]+      synthesized attribute:+         seg                  : CSegment+   visit 3:+      inherited attributes:+         allInters            : CInterfaceMap+         ddp                  : Graph+         fromLhs              : [Vertex]+         isFirst              : Bool+         nextInh              : [Vertex]+         nextIntravisits      : [IntraVisit]+      synthesized attributes:+         cvisits              : [CVisit]+         edp                  : Seq Edge+         inh                  : [Vertex]+         intravisits          : [IntraVisit]+         visitss              : [VisitSS]+   alternatives:+      alternative Segment:+         child inh            : {[Vertex]}+         child syn            : {[Vertex]}+         visit 0:+            local look        : {Vertex -> CRule}+            local occurAs     : {(CRule -> Bool) -> [Vertex] -> [Vertex]}+            local groups      : {[([Vertex],[Vertex])]}+            local v           : {Int}+         visit 1:+            local newvertices : _+            local visitedges  : _+            local attredges   : _+            intra v           : {Int}+            intra groups      : {[([Vertex],[Vertex])]}+            intra look        : {Vertex -> CRule}+            intra occurAs     : {(CRule -> Bool) -> [Vertex] -> [Vertex]}+         visit 2:+            local synOccur    : _+            local vss         : _+            local visitss'    : _+            local visitss     : {[[Vertex]]}+            local defined     : _+            local _tup1       : {(Map Identifier Type,Map Identifier Type)}+            local synmap      : {Map Identifier Type}+            local inhmap      : {Map Identifier Type}+            intra occurAs     : {(CRule -> Bool) -> [Vertex] -> [Vertex]}+         visit 3:+            local computed    : _+            local fromLhs     : _+            local iv          : _+            local intravisits : _+            intra visitss     : {[[Vertex]]}+            intra occurAs     : {(CRule -> Bool) -> [Vertex] -> [Vertex]}+            intra synmap      : {Map Identifier Type}+            intra inhmap      : {Map Identifier Type}+-}+-- cata+sem_Segment :: Segment ->+               T_Segment+sem_Segment !(Segment _inh _syn) =+    (sem_Segment_Segment _inh _syn)+-- semantic domain+newtype T_Segment = T_Segment (Info ->+                               Vertex ->+                               ( Vertex,T_Segment_1))+newtype T_Segment_1 = T_Segment_1 (Int ->+                                   ([Vertex]) ->+                                   ( (Seq (Vertex,ChildVisit)),([([Vertex],[Vertex])]),(Seq Edge ),([Vertex]),T_Segment_2))+newtype T_Segment_2 = T_Segment_2 (([ConstructorIdent]) ->+                                   ([Vertex]) ->+                                   (Map Vertex ChildVisit) ->+                                   Graph ->+                                   ( ([Vertex]),CSegment,T_Segment_3))+newtype T_Segment_3 = T_Segment_3 (CInterfaceMap ->+                                   Graph ->+                                   ([Vertex]) ->+                                   Bool ->+                                   ([Vertex]) ->+                                   ([IntraVisit]) ->+                                   ( ([CVisit]),(Seq Edge),([Vertex]),([IntraVisit]),([VisitSS])))+data Inh_Segment = Inh_Segment {allInters_Inh_Segment :: !(CInterfaceMap),cons_Inh_Segment :: !([ConstructorIdent]),ddp_Inh_Segment :: !(Graph),fromLhs_Inh_Segment :: !([Vertex]),info_Inh_Segment :: !(Info),isFirst_Inh_Segment :: !(Bool),n_Inh_Segment :: !(Int),nextInh_Inh_Segment :: !([Vertex]),nextIntravisits_Inh_Segment :: !([IntraVisit]),nextNewvertices_Inh_Segment :: !([Vertex]),prev_Inh_Segment :: !([Vertex]),v_Inh_Segment :: !(Vertex),visitDescr_Inh_Segment :: !(Map Vertex ChildVisit),vssGraph_Inh_Segment :: !(Graph)}+data Syn_Segment = Syn_Segment {cvisits_Syn_Segment :: !([CVisit]),descr_Syn_Segment :: !(Seq (Vertex,ChildVisit)),edp_Syn_Segment :: !(Seq Edge),groups_Syn_Segment :: !([([Vertex],[Vertex])]),inh_Syn_Segment :: !([Vertex]),intravisits_Syn_Segment :: !([IntraVisit]),newedges_Syn_Segment :: !(Seq Edge ),newvertices_Syn_Segment :: !([Vertex]),prev_Syn_Segment :: !([Vertex]),seg_Syn_Segment :: !(CSegment),v_Syn_Segment :: !(Vertex),visitss_Syn_Segment :: !([VisitSS])}+wrap_Segment !(T_Segment sem) !(Inh_Segment _lhsIallInters _lhsIcons _lhsIddp _lhsIfromLhs _lhsIinfo _lhsIisFirst _lhsIn _lhsInextInh _lhsInextIntravisits _lhsInextNewvertices _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph) =+    (let ( !_lhsOv,!T_Segment_1 sem_1) =+             (sem _lhsIinfo _lhsIv)+         ( !_lhsOdescr,!_lhsOgroups,!_lhsOnewedges,!_lhsOnewvertices,!T_Segment_2 sem_2) =+             (sem_1 _lhsIn _lhsInextNewvertices)+         ( !_lhsOprev,!_lhsOseg,!T_Segment_3 sem_3) =+             (sem_2 _lhsIcons _lhsIprev _lhsIvisitDescr _lhsIvssGraph)+         ( !_lhsOcvisits,!_lhsOedp,!_lhsOinh,!_lhsOintravisits,!_lhsOvisitss) =+             (sem_3 _lhsIallInters _lhsIddp _lhsIfromLhs _lhsIisFirst _lhsInextInh _lhsInextIntravisits)+     in  (Syn_Segment _lhsOcvisits _lhsOdescr _lhsOedp _lhsOgroups _lhsOinh _lhsOintravisits _lhsOnewedges _lhsOnewvertices _lhsOprev _lhsOseg _lhsOv _lhsOvisitss))+sem_Segment_Segment :: ([Vertex]) ->+                       ([Vertex]) ->+                       T_Segment+sem_Segment_Segment !inh_ !syn_ =+    (T_Segment (\ (!_lhsIinfo)+                  (!_lhsIv) ->+                    (case (\a -> ruleTable _lhsIinfo ! a) of+                     { !_look ->+                     (case (\p us -> [ a  |  u <- us+                                          ,  a <- tdsToTdp _lhsIinfo ! u+                                          ,  p (_look a)]) of+                      { !_occurAs ->+                      (case (let group as = gather _lhsIinfo (_occurAs isRhs as)+                             in map (partition (isInh . _look)) (group (inh_ ++ syn_))) of+                       { !_groups ->+                       (case (_lhsIv + length _groups) of+                        { !_v ->+                        (case (_v) of+                         { !_lhsOv ->+                         (case ((sem_Segment_Segment_1 _v _lhsIv _groups _look syn_ _occurAs _lhsIinfo inh_)) of+                          { ( !sem_Segment_1) ->+                          ( _lhsOv,sem_Segment_1) }) }) }) }) }) })))+sem_Segment_Segment_1 :: Int ->+                         Vertex ->+                         ([([Vertex],[Vertex])]) ->+                         (Vertex -> CRule) ->+                         ([Vertex]) ->+                         ((CRule -> Bool) -> [Vertex] -> [Vertex]) ->+                         Info ->+                         ([Vertex]) ->+                         T_Segment_1+sem_Segment_Segment_1 !_v !_lhsIv !_groups !_look !syn_ !_occurAs !_lhsIinfo !inh_ =+    (T_Segment_1 (\ (!_lhsIn)+                    (!_lhsInextNewvertices) ->+                      (case ([_lhsIv .. _v    -1]) of+                       { !_newvertices ->+                       (case (Seq.fromList $ zipWith (cv _look _lhsIn) _newvertices _groups) of+                        { !_lhsOdescr ->+                        (case (_groups) of+                         { !_lhsOgroups ->+                         (case (zip _newvertices _lhsInextNewvertices) of+                          { !_visitedges ->+                          (case (concat (zipWith ed _newvertices _groups)) of+                           { !_attredges ->+                           (case (Seq.fromList _attredges Seq.<> Seq.fromList _visitedges) of+                            { !_lhsOnewedges ->+                            (case (_newvertices) of+                             { !_lhsOnewvertices ->+                             (case ((sem_Segment_Segment_2 syn_ _occurAs _lhsIinfo inh_)) of+                              { ( !sem_Segment_2) ->+                              ( _lhsOdescr,_lhsOgroups,_lhsOnewedges,_lhsOnewvertices,sem_Segment_2) }) }) }) }) }) }) }) })))+sem_Segment_Segment_2 :: ([Vertex]) ->+                         ((CRule -> Bool) -> [Vertex] -> [Vertex]) ->+                         Info ->+                         ([Vertex]) ->+                         T_Segment_2+sem_Segment_Segment_2 !syn_ !_occurAs !_lhsIinfo !inh_ =+    (T_Segment_2 (\ (!_lhsIcons)+                    (!_lhsIprev)+                    (!_lhsIvisitDescr)+                    (!_lhsIvssGraph) ->+                      (case (gather _lhsIinfo (_occurAs isLhs syn_)) of+                       { !_synOccur ->+                       (case (let hasCode v | inRange (bounds (ruleTable _lhsIinfo)) v =  getHasCode (ruleTable _lhsIinfo ! v)+                                            | otherwise = True+                              in if  null syn_+                                     then replicate (length _lhsIcons) []+                                     else map (filter hasCode . topSort' _lhsIvssGraph) _synOccur) of+                        { !_vss ->+                        (case (map (\\ _lhsIprev) _vss) of+                         { !_visitss' ->+                         (case (let  rem :: [(Identifier,Identifier,Maybe Type)] -> [Vertex] -> [Vertex]+                                     rem prev [] = []+                                     rem prev (v:vs)+                                       | inRange (bounds table) v+                                           = let  cr = table ! v+                                                  addV = case findIndex cmp prev of+                                                           Just _ -> id+                                                           _      -> (v:)+                                                  cmp (fld,attr,tp) = getField cr == fld && getAttr cr == attr && sameNT (getType cr) tp+                                                  sameNT (Just (NT ntA _)) (Just (NT ntB _)) = ntA == ntB+                                                  sameNT _          _                        = False+                                                  def = Map.elems (getDefines cr)+                                             in addV (rem (def ++ prev) vs)+                                       | otherwise = v:rem prev vs+                                     table = ruleTable _lhsIinfo+                                in map (rem []) _visitss') of+                          { !_visitss ->+                          (case (let defines v = case Map.lookup v _lhsIvisitDescr of+                                                   Nothing -> [v]+                                                   Just (ChildVisit _ _ _ inh _) -> v:inh+                                 in concatMap (concatMap defines) _visitss) of+                           { !_defined ->+                           (case (_lhsIprev ++ _defined) of+                            { !_lhsOprev ->+                            (case (let makemap = Map.fromList . map findType+                                       findType v = getNtaNameType (attrTable _lhsIinfo ! v)+                                   in (makemap inh_,makemap syn_)) of+                             { !__tup1 ->+                             (case (__tup1) of+                              { !(_,!_synmap) ->+                              (case (__tup1) of+                               { !(!_inhmap,_) ->+                               (case (if False then undefined _lhsIvssGraph _lhsIvisitDescr _lhsIprev else CSegment _inhmap _synmap) of+                                { !_lhsOseg ->+                                (case ((sem_Segment_Segment_3 _visitss _lhsIinfo _lhsIvisitDescr inh_ _occurAs _synmap _inhmap syn_)) of+                                 { ( !sem_Segment_3) ->+                                 ( _lhsOprev,_lhsOseg,sem_Segment_3) }) }) }) }) }) }) }) }) }) }) })))+sem_Segment_Segment_3 :: ([[Vertex]]) ->+                         Info ->+                         (Map Vertex ChildVisit) ->+                         ([Vertex]) ->+                         ((CRule -> Bool) -> [Vertex] -> [Vertex]) ->+                         (Map Identifier Type) ->+                         (Map Identifier Type) ->+                         ([Vertex]) ->+                         T_Segment_3+sem_Segment_Segment_3 !_visitss !_lhsIinfo !_lhsIvisitDescr !inh_ !_occurAs !_synmap !_inhmap !syn_ =+    (T_Segment_3 (\ (!_lhsIallInters)+                    (!_lhsIddp)+                    (!_lhsIfromLhs)+                    (!_lhsIisFirst)+                    (!_lhsInextInh)+                    (!_lhsInextIntravisits) ->+                      (case (let computes v = case Map.lookup v _lhsIvisitDescr of+                                                Nothing -> Map.keys (getDefines (ruleTable _lhsIinfo ! v))+                                                Just (ChildVisit _ _ _ _ syn) -> v:syn+                             in concatMap (concatMap computes) _visitss) of+                       { !_computed ->+                       (case (_occurAs isLhs inh_ ++ _lhsIfromLhs) of+                        { !_fromLhs ->+                        (case (\vs next ->+                                 let needed = concatMap (_lhsIddp !) vs+                                 in nub (needed ++ next) \\ (_fromLhs ++ _computed)) of+                         { !_iv ->+                         (case (zipWith _iv _visitss _lhsInextIntravisits) of+                          { !_intravisits ->+                          (case (let  mkVisit vss intra = CVisit _inhmap _synmap (mkSequence vss) (mkSequence intra) True+                                      mkSequence = map mkRule+                                      mkRule v = case Map.lookup v _lhsIvisitDescr of+                                                   Nothing -> ruleTable _lhsIinfo ! v+                                                   Just (ChildVisit name nt n _ _) -> ccv name nt n _lhsIallInters+                                 in zipWith mkVisit _visitss _intravisits) of+                           { !_lhsOcvisits ->+                           (case (Seq.fromList [(i,s) | i <- inh_, s <- syn_]+                                  Seq.<> Seq.fromList [(s,i) | s <- syn_, i <- _lhsInextInh ]) of+                            { !_lhsOedp ->+                            (case (inh_) of+                             { !_lhsOinh ->+                             (case (_intravisits) of+                              { !_lhsOintravisits ->+                              (case (_visitss) of+                               { !_lhsOvisitss ->+                               ( _lhsOcvisits,_lhsOedp,_lhsOinh,_lhsOintravisits,_lhsOvisitss) }) }) }) }) }) }) }) }) })))+-- Segments ----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         info                 : Info+         n                    : Int+      chained attribute:+         v                    : Vertex+      synthesized attributes:+         descr                : Seq (Vertex,ChildVisit)+         groups               : [([Vertex],[Vertex])]+         newedges             : Seq Edge +         newvertices          : [Vertex]+   visit 1:+      inherited attributes:+         cons                 : [ConstructorIdent]+         prev                 : [Vertex]+         visitDescr           : Map Vertex ChildVisit+         vssGraph             : Graph+      synthesized attribute:+         segs                 : CSegments+   visit 2:+      inherited attributes:+         allInters            : CInterfaceMap+         ddp                  : Graph+         fromLhs              : [Vertex]+         isFirst              : Bool+      synthesized attributes:+         cvisits              : [[CVisit]]+         edp                  : Seq Edge+         firstInh             : [Vertex]+         hdIntravisits        : [IntraVisit]+         prev                 : [Vertex]+   alternatives:+      alternative Cons:+         child hd             : Segment+         child tl             : Segments+      alternative Nil:+-}+-- cata+sem_Segments :: Segments ->+                T_Segments+sem_Segments !list =+    (Prelude.foldr sem_Segments_Cons sem_Segments_Nil (Prelude.map sem_Segment list))+-- semantic domain+newtype T_Segments = T_Segments (Info ->+                                 Int ->+                                 Vertex ->+                                 ( (Seq (Vertex,ChildVisit)),([([Vertex],[Vertex])]),(Seq Edge ),([Vertex]),Vertex,T_Segments_1))+newtype T_Segments_1 = T_Segments_1 (([ConstructorIdent]) ->+                                     ([Vertex]) ->+                                     (Map Vertex ChildVisit) ->+                                     Graph ->+                                     ( CSegments,T_Segments_2))+newtype T_Segments_2 = T_Segments_2 (CInterfaceMap ->+                                     Graph ->+                                     ([Vertex]) ->+                                     Bool ->+                                     ( ([[CVisit]]),(Seq Edge),([Vertex]),([IntraVisit]),([Vertex])))+data Inh_Segments = Inh_Segments {allInters_Inh_Segments :: !(CInterfaceMap),cons_Inh_Segments :: !([ConstructorIdent]),ddp_Inh_Segments :: !(Graph),fromLhs_Inh_Segments :: !([Vertex]),info_Inh_Segments :: !(Info),isFirst_Inh_Segments :: !(Bool),n_Inh_Segments :: !(Int),prev_Inh_Segments :: !([Vertex]),v_Inh_Segments :: !(Vertex),visitDescr_Inh_Segments :: !(Map Vertex ChildVisit),vssGraph_Inh_Segments :: !(Graph)}+data Syn_Segments = Syn_Segments {cvisits_Syn_Segments :: !([[CVisit]]),descr_Syn_Segments :: !(Seq (Vertex,ChildVisit)),edp_Syn_Segments :: !(Seq Edge),firstInh_Syn_Segments :: !([Vertex]),groups_Syn_Segments :: !([([Vertex],[Vertex])]),hdIntravisits_Syn_Segments :: !([IntraVisit]),newedges_Syn_Segments :: !(Seq Edge ),newvertices_Syn_Segments :: !([Vertex]),prev_Syn_Segments :: !([Vertex]),segs_Syn_Segments :: !(CSegments),v_Syn_Segments :: !(Vertex)}+wrap_Segments !(T_Segments sem) !(Inh_Segments _lhsIallInters _lhsIcons _lhsIddp _lhsIfromLhs _lhsIinfo _lhsIisFirst _lhsIn _lhsIprev _lhsIv _lhsIvisitDescr _lhsIvssGraph) =+    (let ( !_lhsOdescr,!_lhsOgroups,!_lhsOnewedges,!_lhsOnewvertices,!_lhsOv,!T_Segments_1 sem_1) =+             (sem _lhsIinfo _lhsIn _lhsIv)+         ( !_lhsOsegs,!T_Segments_2 sem_2) =+             (sem_1 _lhsIcons _lhsIprev _lhsIvisitDescr _lhsIvssGraph)+         ( !_lhsOcvisits,!_lhsOedp,!_lhsOfirstInh,!_lhsOhdIntravisits,!_lhsOprev) =+             (sem_2 _lhsIallInters _lhsIddp _lhsIfromLhs _lhsIisFirst)+     in  (Syn_Segments _lhsOcvisits _lhsOdescr _lhsOedp _lhsOfirstInh _lhsOgroups _lhsOhdIntravisits _lhsOnewedges _lhsOnewvertices _lhsOprev _lhsOsegs _lhsOv))+sem_Segments_Cons :: T_Segment ->+                     T_Segments ->+                     T_Segments+sem_Segments_Cons !(T_Segment hd_) !(T_Segments tl_) =+    (T_Segments (\ (!_lhsIinfo)+                   (!_lhsIn)+                   (!_lhsIv) ->+                     (case (_lhsIv) of+                      { !_hdOv ->+                      (case (_lhsIinfo) of+                       { !_hdOinfo ->+                       (case ((hd_ _hdOinfo _hdOv)) of+                        { ( !_hdIv,!T_Segment_1 hd_1) ->+                        (case (_hdIv) of+                         { !_tlOv ->+                         (case (_lhsIinfo) of+                          { !_tlOinfo ->+                          (case (_lhsIn) of+                           { !_hdOn ->+                           (case (_lhsIn + 1) of+                            { !_tlOn ->+                            (case ((tl_ _tlOinfo _tlOn _tlOv)) of+                             { ( !_tlIdescr,!_tlIgroups,!_tlInewedges,!_tlInewvertices,!_tlIv,!T_Segments_1 tl_1) ->+                             (case (_tlInewvertices) of+                              { !_hdOnextNewvertices ->+                              (case ((hd_1 _hdOn _hdOnextNewvertices)) of+                               { ( !_hdIdescr,!_hdIgroups,!_hdInewedges,!_hdInewvertices,!T_Segment_2 hd_2) ->+                               (case (_hdIdescr Seq.<> _tlIdescr) of+                                { !_lhsOdescr ->+                                (case (_hdIgroups) of+                                 { !_lhsOgroups ->+                                 (case (_hdInewedges Seq.<> _tlInewedges) of+                                  { !_lhsOnewedges ->+                                  (case (_hdInewvertices) of+                                   { !_lhsOnewvertices ->+                                   (case (_tlIv) of+                                    { !_lhsOv ->+                                    (case ((sem_Segments_Cons_1 (T_Segment_2 hd_2) (T_Segments_1 tl_1))) of+                                     { ( !sem_Segments_1) ->+                                     ( _lhsOdescr,_lhsOgroups,_lhsOnewedges,_lhsOnewvertices,_lhsOv,sem_Segments_1) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Segments_Cons_1 :: T_Segment_2 ->+                       T_Segments_1 ->+                       T_Segments_1+sem_Segments_Cons_1 !(T_Segment_2 hd_2) !(T_Segments_1 tl_1) =+    (T_Segments_1 (\ (!_lhsIcons)+                     (!_lhsIprev)+                     (!_lhsIvisitDescr)+                     (!_lhsIvssGraph) ->+                       (case (_lhsIvssGraph) of+                        { !_tlOvssGraph ->+                        (case (_lhsIvisitDescr) of+                         { !_tlOvisitDescr ->+                         (case (_lhsIvssGraph) of+                          { !_hdOvssGraph ->+                          (case (_lhsIvisitDescr) of+                           { !_hdOvisitDescr ->+                           (case (_lhsIprev) of+                            { !_hdOprev ->+                            (case (_lhsIcons) of+                             { !_hdOcons ->+                             (case ((hd_2 _hdOcons _hdOprev _hdOvisitDescr _hdOvssGraph)) of+                              { ( !_hdIprev,!_hdIseg,!T_Segment_3 hd_3) ->+                              (case (_hdIprev) of+                               { !_tlOprev ->+                               (case (_lhsIcons) of+                                { !_tlOcons ->+                                (case ((tl_1 _tlOcons _tlOprev _tlOvisitDescr _tlOvssGraph)) of+                                 { ( !_tlIsegs,!T_Segments_2 tl_2) ->+                                 (case (_hdIseg : _tlIsegs) of+                                  { !_lhsOsegs ->+                                  (case ((sem_Segments_Cons_2 (T_Segments_2 tl_2) (T_Segment_3 hd_3))) of+                                   { ( !sem_Segments_2) ->+                                   ( _lhsOsegs,sem_Segments_2) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Segments_Cons_2 :: T_Segments_2 ->+                       T_Segment_3 ->+                       T_Segments_2+sem_Segments_Cons_2 !(T_Segments_2 tl_2) !(T_Segment_3 hd_3) =+    (T_Segments_2 (\ (!_lhsIallInters)+                     (!_lhsIddp)+                     (!_lhsIfromLhs)+                     (!_lhsIisFirst) ->+                       (case (_lhsIddp) of+                        { !_tlOddp ->+                        (case (_lhsIallInters) of+                         { !_tlOallInters ->+                         (case (_lhsIddp) of+                          { !_hdOddp ->+                          (case (_lhsIallInters) of+                           { !_hdOallInters ->+                           (case ([]) of+                            { !_tlOfromLhs ->+                            (case (_lhsIfromLhs) of+                             { !_hdOfromLhs ->+                             (case (False) of+                              { !_tlOisFirst ->+                              (case ((tl_2 _tlOallInters _tlOddp _tlOfromLhs _tlOisFirst)) of+                               { ( !_tlIcvisits,!_tlIedp,!_tlIfirstInh,!_tlIhdIntravisits,!_tlIprev) ->+                               (case (_tlIhdIntravisits) of+                                { !_hdOnextIntravisits ->+                                (case (_lhsIisFirst) of+                                 { !_hdOisFirst ->+                                 (case (_tlIfirstInh) of+                                  { !_hdOnextInh ->+                                  (case ((hd_3 _hdOallInters _hdOddp _hdOfromLhs _hdOisFirst _hdOnextInh _hdOnextIntravisits)) of+                                   { ( !_hdIcvisits,!_hdIedp,!_hdIinh,!_hdIintravisits,!_hdIvisitss) ->+                                   (case (_hdIcvisits : _tlIcvisits) of+                                    { !_lhsOcvisits ->+                                    (case (_hdIedp Seq.<> _tlIedp) of+                                     { !_lhsOedp ->+                                     (case (_hdIinh) of+                                      { !_lhsOfirstInh ->+                                      (case (_hdIintravisits) of+                                       { !_lhsOhdIntravisits ->+                                       (case (_tlIprev) of+                                        { !_lhsOprev ->+                                        ( _lhsOcvisits,_lhsOedp,_lhsOfirstInh,_lhsOhdIntravisits,_lhsOprev) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Segments_Nil :: T_Segments+sem_Segments_Nil  =+    (T_Segments (\ (!_lhsIinfo)+                   (!_lhsIn)+                   (!_lhsIv) ->+                     (case (Seq.empty) of+                      { !_lhsOdescr ->+                      (case ([]) of+                       { !_lhsOgroups ->+                       (case (Seq.empty) of+                        { !_lhsOnewedges ->+                        (case ([]) of+                         { !_lhsOnewvertices ->+                         (case (_lhsIv) of+                          { !_lhsOv ->+                          (case ((sem_Segments_Nil_1 )) of+                           { ( !sem_Segments_1) ->+                           ( _lhsOdescr,_lhsOgroups,_lhsOnewedges,_lhsOnewvertices,_lhsOv,sem_Segments_1) }) }) }) }) }) })))+sem_Segments_Nil_1 :: T_Segments_1+sem_Segments_Nil_1  =+    (T_Segments_1 (\ (!_lhsIcons)+                     (!_lhsIprev)+                     (!_lhsIvisitDescr)+                     (!_lhsIvssGraph) ->+                       (case ([]) of+                        { !_lhsOsegs ->+                        (case ((sem_Segments_Nil_2 _lhsIprev)) of+                         { ( !sem_Segments_2) ->+                         ( _lhsOsegs,sem_Segments_2) }) })))+sem_Segments_Nil_2 :: ([Vertex]) ->+                      T_Segments_2+sem_Segments_Nil_2 !_lhsIprev =+    (T_Segments_2 (\ (!_lhsIallInters)+                     (!_lhsIddp)+                     (!_lhsIfromLhs)+                     (!_lhsIisFirst) ->+                       (case ([]) of+                        { !_lhsOcvisits ->+                        (case (Seq.empty) of+                         { !_lhsOedp ->+                         (case ([]) of+                          { !_lhsOfirstInh ->+                          (case (repeat []) of+                           { !_lhsOhdIntravisits ->+                           (case (_lhsIprev) of+                            { !_lhsOprev ->+                            ( _lhsOcvisits,_lhsOedp,_lhsOfirstInh,_lhsOhdIntravisits,_lhsOprev) }) }) }) }) })))
src-derived/Order.hs view
@@ -246,8 +246,8 @@                            Bool ->                            Attributes ->                            ( ([(Identifier,Attributes,Attributes)]),(Map Identifier Attributes ),(Seq Error),((Identifier,Type,Bool)),([AltAttr]),(Seq CRule),(Seq (Identifier,Attributes)),(Seq (Identifier,NontermIdent)),([CRule]),([Identifier])))-data Inh_Child = Inh_Child {allfields_Inh_Child :: [(Identifier,Type,Bool)],allnts_Inh_Child :: [Identifier],attrs_Inh_Child :: [(Identifier,Identifier)],con_Inh_Child :: Identifier,inh_Inh_Child :: Attributes,nt_Inh_Child :: Identifier,o_unbox_Inh_Child :: Bool,syn_Inh_Child :: Attributes}-data Syn_Child = Syn_Child {attributes_Syn_Child :: [(Identifier,Attributes,Attributes)],collectChildrenSyns_Syn_Child :: Map Identifier Attributes ,errors_Syn_Child :: Seq Error,field_Syn_Child :: (Identifier,Type,Bool),gathAltAttrs_Syn_Child :: [AltAttr],gathRules_Syn_Child :: Seq CRule,inhs_Syn_Child :: Seq (Identifier,Attributes),nts_Syn_Child :: Seq (Identifier,NontermIdent),singlevisits_Syn_Child :: [CRule],terminals_Syn_Child :: [Identifier]}+data Inh_Child = Inh_Child {allfields_Inh_Child :: !([(Identifier,Type,Bool)]),allnts_Inh_Child :: !([Identifier]),attrs_Inh_Child :: !([(Identifier,Identifier)]),con_Inh_Child :: !(Identifier),inh_Inh_Child :: !(Attributes),nt_Inh_Child :: !(Identifier),o_unbox_Inh_Child :: !(Bool),syn_Inh_Child :: !(Attributes)}+data Syn_Child = Syn_Child {attributes_Syn_Child :: !([(Identifier,Attributes,Attributes)]),collectChildrenSyns_Syn_Child :: !(Map Identifier Attributes ),errors_Syn_Child :: !(Seq Error),field_Syn_Child :: !((Identifier,Type,Bool)),gathAltAttrs_Syn_Child :: !([AltAttr]),gathRules_Syn_Child :: !(Seq CRule),inhs_Syn_Child :: !(Seq (Identifier,Attributes)),nts_Syn_Child :: !(Seq (Identifier,NontermIdent)),singlevisits_Syn_Child :: !([CRule]),terminals_Syn_Child :: !([Identifier])} wrap_Child (T_Child sem) (Inh_Child _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsInt _lhsIo_unbox _lhsIsyn) =     (let ( _lhsOattributes,_lhsOcollectChildrenSyns,_lhsOerrors,_lhsOfield,_lhsOgathAltAttrs,_lhsOgathRules,_lhsOinhs,_lhsOnts,_lhsOsinglevisits,_lhsOterminals) =              (sem _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsInt _lhsIo_unbox _lhsIsyn)@@ -277,50 +277,50 @@                        _lhsOfield :: ((Identifier,Type,Bool))                        _lhsOerrors :: (Seq Error)                        _lhsOgathRules :: (Seq CRule)-                       -- "Order.ag"(line 153, column 13)+                       -- "Order.ag"(line 156, column 13)                        _maptolocal =                            case tp_ of                              NT nt _ -> Map.null syn_                              _       -> True-                       -- "Order.ag"(line 156, column 13)+                       -- "Order.ag"(line 159, column 13)                        _lhsOgathAltAttrs =                            if  _maptolocal                                then [ AltAttr _LOC name_ True ]                                else [ AltAttr name_ syn True | syn <- Map.keys syn_ ]-                       -- "Order.ag"(line 171, column 13)+                       -- "Order.ag"(line 174, column 13)                        _lhsOnts =                            Seq.single (name_,getNtName tp_)-                       -- "Order.ag"(line 172, column 13)+                       -- "Order.ag"(line 175, column 13)                        _lhsOinhs =                            Seq.single (name_,inh_)-                       -- "Order.ag"(line 188, column 13)+                       -- "Order.ag"(line 191, column 13)                        _gathRules =                            if  _maptolocal                                then Seq.single (cRuleTerminal name_ _lhsInt _lhsIcon tp_)                                else Seq.fromList [ cRuleRhsSyn syn _lhsInt _lhsIcon tp name_ (getNtName tp_) | (syn,tp) <- Map.assocs syn_]-                       -- "Order.ag"(line 313, column 12)+                       -- "Order.ag"(line 316, column 12)                        _lhsOcollectChildrenSyns =                            Map.singleton name_ syn_-                       -- "Order.ag"(line 473, column 11)+                       -- "Order.ag"(line 476, column 11)                        _lhsOsinglevisits =                            if  _maptolocal                                then []                                else [CChildVisit name_ (getNtName tp_) 0 inh_ syn_ True]-                       -- "Order.ag"(line 494, column 11)+                       -- "Order.ag"(line 497, column 11)                        _lhsOterminals =                            if _maptolocal                            then [name_]                            else []-                       -- "Order.ag"(line 523, column 11)+                       -- "Order.ag"(line 526, column 11)                        _lhsOattributes =                            [(name_, inh_, syn_)]-                       -- "Order.ag"(line 527, column 11)+                       -- "Order.ag"(line 530, column 11)                        _lhsOfield =                            (name_, tp_, higherOrder_)-                       -- use rule "Order.ag"(line 60, column 70)+                       -- use rule "Order.ag"(line 63, column 70)                        _lhsOerrors =                            Seq.empty-                       -- use rule "Order.ag"(line 182, column 23)+                       -- use rule "Order.ag"(line 185, column 23)                        _lhsOgathRules =                            _gathRules                    in  ( _lhsOattributes,_lhsOcollectChildrenSyns,_lhsOerrors,_lhsOfield,_lhsOgathAltAttrs,_lhsOgathRules,_lhsOinhs,_lhsOnts,_lhsOsinglevisits,_lhsOterminals))))@@ -368,8 +368,8 @@                                  Bool ->                                  Attributes ->                                  ( ([(Identifier,Attributes,Attributes)]),(Map Identifier Attributes ),(Seq Error),([(Identifier,Type,Bool)]),([AltAttr]),(Seq CRule),(Seq (Identifier,Attributes)),(Seq (Identifier,NontermIdent)),([CRule]),([Identifier])))-data Inh_Children = Inh_Children {allfields_Inh_Children :: [(Identifier,Type,Bool)],allnts_Inh_Children :: [Identifier],attrs_Inh_Children :: [(Identifier,Identifier)],con_Inh_Children :: Identifier,inh_Inh_Children :: Attributes,nt_Inh_Children :: Identifier,o_unbox_Inh_Children :: Bool,syn_Inh_Children :: Attributes}-data Syn_Children = Syn_Children {attributes_Syn_Children :: [(Identifier,Attributes,Attributes)],collectChildrenSyns_Syn_Children :: Map Identifier Attributes ,errors_Syn_Children :: Seq Error,fields_Syn_Children :: [(Identifier,Type,Bool)],gathAltAttrs_Syn_Children :: [AltAttr],gathRules_Syn_Children :: Seq CRule,inhs_Syn_Children :: Seq (Identifier,Attributes),nts_Syn_Children :: Seq (Identifier,NontermIdent),singlevisits_Syn_Children :: [CRule],terminals_Syn_Children :: [Identifier]}+data Inh_Children = Inh_Children {allfields_Inh_Children :: !([(Identifier,Type,Bool)]),allnts_Inh_Children :: !([Identifier]),attrs_Inh_Children :: !([(Identifier,Identifier)]),con_Inh_Children :: !(Identifier),inh_Inh_Children :: !(Attributes),nt_Inh_Children :: !(Identifier),o_unbox_Inh_Children :: !(Bool),syn_Inh_Children :: !(Attributes)}+data Syn_Children = Syn_Children {attributes_Syn_Children :: !([(Identifier,Attributes,Attributes)]),collectChildrenSyns_Syn_Children :: !(Map Identifier Attributes ),errors_Syn_Children :: !(Seq Error),fields_Syn_Children :: !([(Identifier,Type,Bool)]),gathAltAttrs_Syn_Children :: !([AltAttr]),gathRules_Syn_Children :: !(Seq CRule),inhs_Syn_Children :: !(Seq (Identifier,Attributes)),nts_Syn_Children :: !(Seq (Identifier,NontermIdent)),singlevisits_Syn_Children :: !([CRule]),terminals_Syn_Children :: !([Identifier])} wrap_Children (T_Children sem) (Inh_Children _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsInt _lhsIo_unbox _lhsIsyn) =     (let ( _lhsOattributes,_lhsOcollectChildrenSyns,_lhsOerrors,_lhsOfields,_lhsOgathAltAttrs,_lhsOgathRules,_lhsOinhs,_lhsOnts,_lhsOsinglevisits,_lhsOterminals) =              (sem _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsIinh _lhsInt _lhsIo_unbox _lhsIsyn)@@ -432,34 +432,34 @@                           _tlInts :: (Seq (Identifier,NontermIdent))                           _tlIsinglevisits :: ([CRule])                           _tlIterminals :: ([Identifier])-                          -- "Order.ag"(line 530, column 11)+                          -- "Order.ag"(line 533, column 11)                           _lhsOfields =                               _hdIfield : _tlIfields-                          -- use rule "Order.ag"(line 521, column 32)+                          -- use rule "Order.ag"(line 524, column 32)                           _lhsOattributes =                               _hdIattributes ++ _tlIattributes-                          -- use rule "Order.ag"(line 311, column 47)+                          -- use rule "Order.ag"(line 314, column 47)                           _lhsOcollectChildrenSyns =                               _hdIcollectChildrenSyns `Map.union` _tlIcollectChildrenSyns-                          -- use rule "Order.ag"(line 60, column 70)+                          -- use rule "Order.ag"(line 63, column 70)                           _lhsOerrors =                               _hdIerrors Seq.<> _tlIerrors-                          -- use rule "Order.ag"(line 146, column 68)+                          -- use rule "Order.ag"(line 149, column 68)                           _lhsOgathAltAttrs =                               _hdIgathAltAttrs ++ _tlIgathAltAttrs-                          -- use rule "Order.ag"(line 182, column 23)+                          -- use rule "Order.ag"(line 185, column 23)                           _lhsOgathRules =                               _hdIgathRules Seq.<> _tlIgathRules-                          -- use rule "Order.ag"(line 169, column 20)+                          -- use rule "Order.ag"(line 172, column 20)                           _lhsOinhs =                               _hdIinhs Seq.<> _tlIinhs-                          -- use rule "Order.ag"(line 168, column 19)+                          -- use rule "Order.ag"(line 171, column 19)                           _lhsOnts =                               _hdInts Seq.<> _tlInts-                          -- use rule "Order.ag"(line 471, column 40)+                          -- use rule "Order.ag"(line 474, column 40)                           _lhsOsinglevisits =                               _hdIsinglevisits ++ _tlIsinglevisits-                          -- use rule "Order.ag"(line 492, column 38)+                          -- use rule "Order.ag"(line 495, column 38)                           _lhsOterminals =                               _hdIterminals ++ _tlIterminals                           -- copy rule (down)@@ -535,34 +535,34 @@                           _lhsOnts :: (Seq (Identifier,NontermIdent))                           _lhsOsinglevisits :: ([CRule])                           _lhsOterminals :: ([Identifier])-                          -- "Order.ag"(line 531, column 11)+                          -- "Order.ag"(line 534, column 11)                           _lhsOfields =                               []-                          -- use rule "Order.ag"(line 521, column 32)+                          -- use rule "Order.ag"(line 524, column 32)                           _lhsOattributes =                               []-                          -- use rule "Order.ag"(line 311, column 47)+                          -- use rule "Order.ag"(line 314, column 47)                           _lhsOcollectChildrenSyns =                               Map.empty-                          -- use rule "Order.ag"(line 60, column 70)+                          -- use rule "Order.ag"(line 63, column 70)                           _lhsOerrors =                               Seq.empty-                          -- use rule "Order.ag"(line 146, column 68)+                          -- use rule "Order.ag"(line 149, column 68)                           _lhsOgathAltAttrs =                               []-                          -- use rule "Order.ag"(line 182, column 23)+                          -- use rule "Order.ag"(line 185, column 23)                           _lhsOgathRules =                               Seq.empty-                          -- use rule "Order.ag"(line 169, column 20)+                          -- use rule "Order.ag"(line 172, column 20)                           _lhsOinhs =                               Seq.empty-                          -- use rule "Order.ag"(line 168, column 19)+                          -- use rule "Order.ag"(line 171, column 19)                           _lhsOnts =                               Seq.empty-                          -- use rule "Order.ag"(line 471, column 40)+                          -- use rule "Order.ag"(line 474, column 40)                           _lhsOsinglevisits =                               []-                          -- use rule "Order.ag"(line 492, column 38)+                          -- use rule "Order.ag"(line 495, column 38)                           _lhsOterminals =                               []                       in  ( _lhsOattributes,_lhsOcollectChildrenSyns,_lhsOerrors,_lhsOfields,_lhsOgathAltAttrs,_lhsOgathRules,_lhsOinhs,_lhsOnts,_lhsOsinglevisits,_lhsOterminals))))@@ -608,8 +608,8 @@                                      Identifier ->                                      Identifier ->                                      ( (Set (Identifier,Identifier)),Expression,(Seq Error),([String]),([(Identifier,Identifier)]),([Identifier]),([Identifier])))-data Inh_Expression = Inh_Expression {allfields_Inh_Expression :: [(Identifier,Type,Bool)],allnts_Inh_Expression :: [Identifier],attrs_Inh_Expression :: [(Identifier,Identifier)],con_Inh_Expression :: Identifier,nt_Inh_Expression :: Identifier}-data Syn_Expression = Syn_Expression {allRhsVars_Syn_Expression :: Set (Identifier,Identifier),copy_Syn_Expression :: Expression,errors_Syn_Expression :: Seq Error,textLines_Syn_Expression :: [String],usedAttrs_Syn_Expression :: [(Identifier,Identifier)],usedFields_Syn_Expression :: [Identifier],usedLocals_Syn_Expression :: [Identifier]}+data Inh_Expression = Inh_Expression {allfields_Inh_Expression :: !([(Identifier,Type,Bool)]),allnts_Inh_Expression :: !([Identifier]),attrs_Inh_Expression :: !([(Identifier,Identifier)]),con_Inh_Expression :: !(Identifier),nt_Inh_Expression :: !(Identifier)}+data Syn_Expression = Syn_Expression {allRhsVars_Syn_Expression :: !(Set (Identifier,Identifier)),copy_Syn_Expression :: !(Expression),errors_Syn_Expression :: !(Seq Error),textLines_Syn_Expression :: !([String]),usedAttrs_Syn_Expression :: !([(Identifier,Identifier)]),usedFields_Syn_Expression :: !([Identifier]),usedLocals_Syn_Expression :: !([Identifier])} wrap_Expression (T_Expression sem) (Inh_Expression _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsInt) =     (let ( _lhsOallRhsVars,_lhsOcopy,_lhsOerrors,_lhsOtextLines,_lhsOusedAttrs,_lhsOusedFields,_lhsOusedLocals) =              (sem _lhsIallfields _lhsIallnts _lhsIattrs _lhsIcon _lhsInt)@@ -630,7 +630,7 @@                             _lhsOusedAttrs :: ([(Identifier,Identifier)])                             _lhsOusedFields :: ([Identifier])                             _lhsOusedLocals :: ([Identifier])-                            -- "Order.ag"(line 333, column 21)+                            -- "Order.ag"(line 336, column 21)                             __tup1 =                                 let inherited = Inh_HsTokensRoot                                                 { attrs_Inh_HsTokensRoot      = _lhsIattrs@@ -648,22 +648,22 @@                                       , usedLocals_Syn_HsTokensRoot = usedLocals                                       , usedFields_Syn_HsTokensRoot = usedFields                                       }  -> (errors,textLines,usedAttrs,usedLocals,usedFields)-                            -- "Order.ag"(line 333, column 21)+                            -- "Order.ag"(line 336, column 21)                             (_errors,_,_,_,_) =                                 __tup1-                            -- "Order.ag"(line 333, column 21)+                            -- "Order.ag"(line 336, column 21)                             (_,_textLines,_,_,_) =                                 __tup1-                            -- "Order.ag"(line 333, column 21)+                            -- "Order.ag"(line 336, column 21)                             (_,_,_usedAttrs,_,_) =                                 __tup1-                            -- "Order.ag"(line 333, column 21)+                            -- "Order.ag"(line 336, column 21)                             (_,_,_,_usedLocals,_) =                                 __tup1-                            -- "Order.ag"(line 333, column 21)+                            -- "Order.ag"(line 336, column 21)                             (_,_,_,_,_usedFields) =                                 __tup1-                            -- "Order.ag"(line 351, column 17)+                            -- "Order.ag"(line 354, column 17)                             _lhsOallRhsVars =                                 Set.fromList _usedAttrs                                 `Set.union`@@ -711,6 +711,7 @@          child manualAttrOrderMap : {AttrOrderMap}          child paramMap       : {ParamMap}          child contextMap     : {ContextMap}+         child uniqueMap      : {UniqueMap}          visit 0:             local ruleTable   : _             local attrTable   : _@@ -728,13 +729,13 @@ -- cata sem_Grammar :: Grammar ->                T_Grammar-sem_Grammar (Grammar _typeSyns _useMap _derivings _wrappers _nonts _pragmas _manualAttrOrderMap _paramMap _contextMap) =-    (sem_Grammar_Grammar _typeSyns _useMap _derivings _wrappers (sem_Nonterminals _nonts) _pragmas _manualAttrOrderMap _paramMap _contextMap)+sem_Grammar (Grammar _typeSyns _useMap _derivings _wrappers _nonts _pragmas _manualAttrOrderMap _paramMap _contextMap _uniqueMap) =+    (sem_Grammar_Grammar _typeSyns _useMap _derivings _wrappers (sem_Nonterminals _nonts) _pragmas _manualAttrOrderMap _paramMap _contextMap _uniqueMap) -- semantic domain newtype T_Grammar = T_Grammar (Options ->                                ( (Seq Error),CGrammar))-data Inh_Grammar = Inh_Grammar {options_Inh_Grammar :: Options}-data Syn_Grammar = Syn_Grammar {errors_Syn_Grammar :: Seq Error,output_Syn_Grammar :: CGrammar}+data Inh_Grammar = Inh_Grammar {options_Inh_Grammar :: !(Options)}+data Syn_Grammar = Syn_Grammar {errors_Syn_Grammar :: !(Seq Error),output_Syn_Grammar :: !(CGrammar)} wrap_Grammar (T_Grammar sem) (Inh_Grammar _lhsIoptions) =     (let ( _lhsOerrors,_lhsOoutput) =              (sem _lhsIoptions)@@ -748,8 +749,9 @@                        AttrOrderMap ->                        ParamMap ->                        ContextMap ->+                       UniqueMap ->                        T_Grammar-sem_Grammar_Grammar typeSyns_ useMap_ derivings_ wrappers_ (T_Nonterminals nonts_) pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ =+sem_Grammar_Grammar typeSyns_ useMap_ derivings_ wrappers_ (T_Nonterminals nonts_) pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ uniqueMap_ =     (T_Grammar (\ _lhsIoptions ->                     (let _nontsOo_cata :: Bool                          _nontsOo_data :: Bool@@ -781,74 +783,74 @@                          _nontsIntattrs :: (Seq (Vertex,NTAttr))                          _nontsIrules :: (Seq (Vertex,CRule))                          _nontsIvcount :: Int-                         -- "Order.ag"(line 99, column 17)+                         -- "Order.ag"(line 102, column 17)                          _nontsOo_cata =                              folds     _lhsIoptions-                         -- "Order.ag"(line 99, column 17)+                         -- "Order.ag"(line 102, column 17)                          _nontsOo_data =                              dataTypes _lhsIoptions-                         -- "Order.ag"(line 99, column 17)+                         -- "Order.ag"(line 102, column 17)                          _nontsOo_sig =                              typeSigs  _lhsIoptions-                         -- "Order.ag"(line 99, column 17)+                         -- "Order.ag"(line 102, column 17)                          _nontsOo_sem =                              semfuns   _lhsIoptions-                         -- "Order.ag"(line 99, column 17)+                         -- "Order.ag"(line 102, column 17)                          _nontsOo_rename =                              rename    _lhsIoptions-                         -- "Order.ag"(line 99, column 17)+                         -- "Order.ag"(line 102, column 17)                          _nontsOo_newtypes =                              newtypes  _lhsIoptions-                         -- "Order.ag"(line 99, column 17)+                         -- "Order.ag"(line 102, column 17)                          _nontsOo_wantvisit =                              visit   _lhsIoptions-                         -- "Order.ag"(line 99, column 17)+                         -- "Order.ag"(line 102, column 17)                          _nontsOo_dovisit =                              visit     _lhsIoptions && null _cyclesErrors-                         -- "Order.ag"(line 99, column 17)+                         -- "Order.ag"(line 102, column 17)                          _nontsOo_unbox =                              unbox     _lhsIoptions-                         -- "Order.ag"(line 99, column 17)+                         -- "Order.ag"(line 102, column 17)                          _nontsOo_case =                              cases     _lhsIoptions-                         -- "Order.ag"(line 99, column 17)+                         -- "Order.ag"(line 102, column 17)                          _nontsOprefix =                              prefix    _lhsIoptions-                         -- "Order.ag"(line 237, column 15)+                         -- "Order.ag"(line 240, column 15)                          _nontsOvcount =                              0-                         -- "Order.ag"(line 262, column 7)+                         -- "Order.ag"(line 265, column 7)                          _nontsOmanualAttrDepMap =                              manualAttrOrderMap_-                         -- "Order.ag"(line 365, column 13)+                         -- "Order.ag"(line 368, column 13)                          _nontsOacount =                              0-                         -- "Order.ag"(line 403, column 13)+                         -- "Order.ag"(line 406, column 13)                          _ruleTable =                              Array.array (0,_nontsIvcount-1) (Seq.toList _nontsIrules)-                         -- "Order.ag"(line 404, column 13)+                         -- "Order.ag"(line 407, column 13)                          _attrTable =                              Array.array (0,_nontsIacount-1) (Seq.toList _nontsIntattrs)-                         -- "Order.ag"(line 405, column 13)+                         -- "Order.ag"(line 408, column 13)                          _attrVertex =                              Map.fromList (map swap (Seq.toList _nontsIntattrs))-                         -- "Order.ag"(line 406, column 13)+                         -- "Order.ag"(line 409, column 13)                          _tdpToTds =                              [ (s, maybe (-1) (\v -> findWithErr1 "Grammar.tdpToTds" v _attrVertex) (ntattr cr))                              | (s,cr) <- Seq.toList _nontsIrules]-                         -- "Order.ag"(line 408, column 13)+                         -- "Order.ag"(line 411, column 13)                          _tdsToTdp =                              let  eq (_,v) (_,v') = v == v'                                   conv ((s,v):svs)  | v == -1 = Nothing                                                     | otherwise = Just (v,s:map fst svs)                              in mapMaybe conv (eqClasses eq _tdpToTds)-                         -- "Order.ag"(line 412, column 13)+                         -- "Order.ag"(line 415, column 13)                          _directDep =                              Seq.toList (_nontsIdirectDep Seq.<> _nontsIadditionalDep)-                         -- "Order.ag"(line 413, column 13)+                         -- "Order.ag"(line 416, column 13)                          _instDep =                              Seq.toList _nontsIinstDep-                         -- "Order.ag"(line 414, column 13)+                         -- "Order.ag"(line 417, column 13)                          _info =                              let def [] = -1                                  def (v:vs) = v@@ -860,7 +862,7 @@                                       , nonts      = _nontsInonts                                       , wraps      = wrappers_                                       }-                         -- "Order.ag"(line 425, column 17)+                         -- "Order.ag"(line 428, column 17)                          __tup2 =                              case computeSequential _info _directDep _instDep of                                           CycleFree    cim cvm   -> ( cim@@ -883,23 +885,23 @@                                                                     , error "No visit sub-sequences for AG with induced cycles"                                                                     , inducedCycleErrs _attrTable _ruleTable cim errs                                                                     )-                         -- "Order.ag"(line 425, column 17)+                         -- "Order.ag"(line 428, column 17)                          (_cInterfaceMap,_,_) =                              __tup2-                         -- "Order.ag"(line 425, column 17)+                         -- "Order.ag"(line 428, column 17)                          (_,_cVisitsMap,_) =                              __tup2-                         -- "Order.ag"(line 425, column 17)+                         -- "Order.ag"(line 428, column 17)                          (_,_,_cyclesErrors) =                              __tup2-                         -- "Order.ag"(line 447, column 13)+                         -- "Order.ag"(line 450, column 13)                          _lhsOerrors =                              (if withCycle _lhsIoptions then Seq.fromList _cyclesErrors else Seq.empty)                              Seq.<> _nontsIerrors-                         -- "Order.ag"(line 479, column 15)+                         -- "Order.ag"(line 482, column 15)                          _lhsOoutput =                              CGrammar typeSyns_ derivings_ wrappers_ _nontsIcNonterminals pragmas_ paramMap_ contextMap_-                         -- "Order.ag"(line 506, column 13)+                         -- "Order.ag"(line 509, column 13)                          _nontsOallnts =                              map fst (_nontsInonts)                          -- copy rule (from local)@@ -978,8 +980,8 @@                                        String ->                                        Int ->                                        ( Int,(Seq Edge),(Seq (Int,Int,Int)),CNonterminal,(Seq Edge),(Seq Error),(Seq Edge),([(NontermIdent,[ConstructorIdent])]),(Seq (Vertex,NTAttr)),(Seq (Vertex,CRule)),Int))-data Inh_Nonterminal = Inh_Nonterminal {acount_Inh_Nonterminal :: Int,allnts_Inh_Nonterminal :: [Identifier],cInterfaceMap_Inh_Nonterminal :: CInterfaceMap,cVisitsMap_Inh_Nonterminal :: CVisitsMap,manualAttrDepMap_Inh_Nonterminal :: AttrOrderMap,o_case_Inh_Nonterminal :: Bool,o_cata_Inh_Nonterminal :: Bool,o_data_Inh_Nonterminal :: Bool,o_dovisit_Inh_Nonterminal :: Bool,o_newtypes_Inh_Nonterminal :: Bool,o_rename_Inh_Nonterminal :: Bool,o_sem_Inh_Nonterminal :: Bool,o_sig_Inh_Nonterminal :: Bool,o_unbox_Inh_Nonterminal :: Bool,o_wantvisit_Inh_Nonterminal :: Bool,prefix_Inh_Nonterminal :: String,vcount_Inh_Nonterminal :: Int}-data Syn_Nonterminal = Syn_Nonterminal {acount_Syn_Nonterminal :: Int,additionalDep_Syn_Nonterminal :: Seq Edge,aranges_Syn_Nonterminal :: Seq (Int,Int,Int),cNonterminal_Syn_Nonterminal :: CNonterminal,directDep_Syn_Nonterminal :: Seq Edge,errors_Syn_Nonterminal :: Seq Error,instDep_Syn_Nonterminal :: Seq Edge,nonts_Syn_Nonterminal :: [(NontermIdent,[ConstructorIdent])],ntattrs_Syn_Nonterminal :: Seq (Vertex,NTAttr),rules_Syn_Nonterminal :: Seq (Vertex,CRule),vcount_Syn_Nonterminal :: Int}+data Inh_Nonterminal = Inh_Nonterminal {acount_Inh_Nonterminal :: !(Int),allnts_Inh_Nonterminal :: !([Identifier]),cInterfaceMap_Inh_Nonterminal :: !(CInterfaceMap),cVisitsMap_Inh_Nonterminal :: !(CVisitsMap),manualAttrDepMap_Inh_Nonterminal :: !(AttrOrderMap),o_case_Inh_Nonterminal :: !(Bool),o_cata_Inh_Nonterminal :: !(Bool),o_data_Inh_Nonterminal :: !(Bool),o_dovisit_Inh_Nonterminal :: !(Bool),o_newtypes_Inh_Nonterminal :: !(Bool),o_rename_Inh_Nonterminal :: !(Bool),o_sem_Inh_Nonterminal :: !(Bool),o_sig_Inh_Nonterminal :: !(Bool),o_unbox_Inh_Nonterminal :: !(Bool),o_wantvisit_Inh_Nonterminal :: !(Bool),prefix_Inh_Nonterminal :: !(String),vcount_Inh_Nonterminal :: !(Int)}+data Syn_Nonterminal = Syn_Nonterminal {acount_Syn_Nonterminal :: !(Int),additionalDep_Syn_Nonterminal :: !(Seq Edge),aranges_Syn_Nonterminal :: !(Seq (Int,Int,Int)),cNonterminal_Syn_Nonterminal :: !(CNonterminal),directDep_Syn_Nonterminal :: !(Seq Edge),errors_Syn_Nonterminal :: !(Seq Error),instDep_Syn_Nonterminal :: !(Seq Edge),nonts_Syn_Nonterminal :: !([(NontermIdent,[ConstructorIdent])]),ntattrs_Syn_Nonterminal :: !(Seq (Vertex,NTAttr)),rules_Syn_Nonterminal :: !(Seq (Vertex,CRule)),vcount_Syn_Nonterminal :: !(Int)} wrap_Nonterminal (T_Nonterminal sem) (Inh_Nonterminal _lhsIacount _lhsIallnts _lhsIcInterfaceMap _lhsIcVisitsMap _lhsImanualAttrDepMap _lhsIo_case _lhsIo_cata _lhsIo_data _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIprefix _lhsIvcount) =     (let ( _lhsOacount,_lhsOadditionalDep,_lhsOaranges,_lhsOcNonterminal,_lhsOdirectDep,_lhsOerrors,_lhsOinstDep,_lhsOnonts,_lhsOntattrs,_lhsOrules,_lhsOvcount) =              (sem _lhsIacount _lhsIallnts _lhsIcInterfaceMap _lhsIcVisitsMap _lhsImanualAttrDepMap _lhsIo_case _lhsIo_cata _lhsIo_data _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIprefix _lhsIvcount)@@ -1044,55 +1046,55 @@                              _prodsIinstDep :: (Seq Edge)                              _prodsIrules :: (Seq (Vertex,CRule))                              _prodsIvcount :: Int-                             -- "Order.ag"(line 73, column 17)+                             -- "Order.ag"(line 76, column 17)                              _prodsOnt =                                  nt_-                             -- "Order.ag"(line 76, column 17)+                             -- "Order.ag"(line 79, column 17)                              _prodsOinh =                                  inh_-                             -- "Order.ag"(line 77, column 17)+                             -- "Order.ag"(line 80, column 17)                              _prodsOsyn =                                  syn_-                             -- "Order.ag"(line 368, column 17)+                             -- "Order.ag"(line 371, column 17)                              _ntattrs =                                  [ NTAInh nt_ inh tp | (inh,tp) <- Map.assocs inh_ ]                                  ++ [NTASyn nt_ syn tp | (syn,tp) <- Map.assocs syn_ ]-                             -- "Order.ag"(line 370, column 17)+                             -- "Order.ag"(line 373, column 17)                              _lhsOntattrs =                                  Seq.fromList (zip [_lhsIacount ..] _ntattrs)-                             -- "Order.ag"(line 371, column 17)+                             -- "Order.ag"(line 374, column 17)                              _lhsOacount =                                  _lhsIacount + Map.size inh_ + Map.size syn_-                             -- "Order.ag"(line 372, column 17)+                             -- "Order.ag"(line 375, column 17)                              _lhsOaranges =                                  Seq.single                                   (_lhsIacount                                   ,_lhsIacount + Map.size inh_                                   ,_lhsIacount + Map.size syn_ + Map.size inh_ - 1)-                             -- "Order.ag"(line 381, column 19)+                             -- "Order.ag"(line 384, column 19)                              _lhsOnonts =                                  [(nt_,_prodsIcons)]-                             -- "Order.ag"(line 456, column 19)+                             -- "Order.ag"(line 459, column 19)                              _cInter =                                  if  _lhsIo_dovisit                                         then findWithErr1 "Nonterminal.cInter" nt_ _lhsIcInterfaceMap                                         else CInterface [CSegment inh_ syn_]-                             -- "Order.ag"(line 484, column 19)+                             -- "Order.ag"(line 487, column 19)                              _lhsOcNonterminal =                                  CNonterminal nt_ params_ inh_ syn_ _prodsIcProductions _cInter-                             -- use rule "Order.ag"(line 259, column 71)+                             -- use rule "Order.ag"(line 262, column 71)                              _lhsOadditionalDep =                                  _prodsIadditionalDep-                             -- use rule "Order.ag"(line 245, column 33)+                             -- use rule "Order.ag"(line 248, column 33)                              _lhsOdirectDep =                                  _prodsIdirectDep-                             -- use rule "Order.ag"(line 60, column 70)+                             -- use rule "Order.ag"(line 63, column 70)                              _lhsOerrors =                                  _prodsIerrors-                             -- use rule "Order.ag"(line 292, column 31)+                             -- use rule "Order.ag"(line 295, column 31)                              _lhsOinstDep =                                  _prodsIinstDep-                             -- use rule "Order.ag"(line 235, column 18)+                             -- use rule "Order.ag"(line 238, column 18)                              _lhsOrules =                                  _prodsIrules                              -- copy rule (up)@@ -1205,8 +1207,8 @@                                          String ->                                          Int ->                                          ( Int,(Seq Edge),(Seq (Int,Int,Int)),CNonterminals,(Seq Edge),(Seq Error),(Seq Edge),([(NontermIdent,[ConstructorIdent])]),(Seq (Vertex,NTAttr)),(Seq (Vertex,CRule)),Int))-data Inh_Nonterminals = Inh_Nonterminals {acount_Inh_Nonterminals :: Int,allnts_Inh_Nonterminals :: [Identifier],cInterfaceMap_Inh_Nonterminals :: CInterfaceMap,cVisitsMap_Inh_Nonterminals :: CVisitsMap,manualAttrDepMap_Inh_Nonterminals :: AttrOrderMap,o_case_Inh_Nonterminals :: Bool,o_cata_Inh_Nonterminals :: Bool,o_data_Inh_Nonterminals :: Bool,o_dovisit_Inh_Nonterminals :: Bool,o_newtypes_Inh_Nonterminals :: Bool,o_rename_Inh_Nonterminals :: Bool,o_sem_Inh_Nonterminals :: Bool,o_sig_Inh_Nonterminals :: Bool,o_unbox_Inh_Nonterminals :: Bool,o_wantvisit_Inh_Nonterminals :: Bool,prefix_Inh_Nonterminals :: String,vcount_Inh_Nonterminals :: Int}-data Syn_Nonterminals = Syn_Nonterminals {acount_Syn_Nonterminals :: Int,additionalDep_Syn_Nonterminals :: Seq Edge,aranges_Syn_Nonterminals :: Seq (Int,Int,Int),cNonterminals_Syn_Nonterminals :: CNonterminals,directDep_Syn_Nonterminals :: Seq Edge,errors_Syn_Nonterminals :: Seq Error,instDep_Syn_Nonterminals :: Seq Edge,nonts_Syn_Nonterminals :: [(NontermIdent,[ConstructorIdent])],ntattrs_Syn_Nonterminals :: Seq (Vertex,NTAttr),rules_Syn_Nonterminals :: Seq (Vertex,CRule),vcount_Syn_Nonterminals :: Int}+data Inh_Nonterminals = Inh_Nonterminals {acount_Inh_Nonterminals :: !(Int),allnts_Inh_Nonterminals :: !([Identifier]),cInterfaceMap_Inh_Nonterminals :: !(CInterfaceMap),cVisitsMap_Inh_Nonterminals :: !(CVisitsMap),manualAttrDepMap_Inh_Nonterminals :: !(AttrOrderMap),o_case_Inh_Nonterminals :: !(Bool),o_cata_Inh_Nonterminals :: !(Bool),o_data_Inh_Nonterminals :: !(Bool),o_dovisit_Inh_Nonterminals :: !(Bool),o_newtypes_Inh_Nonterminals :: !(Bool),o_rename_Inh_Nonterminals :: !(Bool),o_sem_Inh_Nonterminals :: !(Bool),o_sig_Inh_Nonterminals :: !(Bool),o_unbox_Inh_Nonterminals :: !(Bool),o_wantvisit_Inh_Nonterminals :: !(Bool),prefix_Inh_Nonterminals :: !(String),vcount_Inh_Nonterminals :: !(Int)}+data Syn_Nonterminals = Syn_Nonterminals {acount_Syn_Nonterminals :: !(Int),additionalDep_Syn_Nonterminals :: !(Seq Edge),aranges_Syn_Nonterminals :: !(Seq (Int,Int,Int)),cNonterminals_Syn_Nonterminals :: !(CNonterminals),directDep_Syn_Nonterminals :: !(Seq Edge),errors_Syn_Nonterminals :: !(Seq Error),instDep_Syn_Nonterminals :: !(Seq Edge),nonts_Syn_Nonterminals :: !([(NontermIdent,[ConstructorIdent])]),ntattrs_Syn_Nonterminals :: !(Seq (Vertex,NTAttr)),rules_Syn_Nonterminals :: !(Seq (Vertex,CRule)),vcount_Syn_Nonterminals :: !(Int)} wrap_Nonterminals (T_Nonterminals sem) (Inh_Nonterminals _lhsIacount _lhsIallnts _lhsIcInterfaceMap _lhsIcVisitsMap _lhsImanualAttrDepMap _lhsIo_case _lhsIo_cata _lhsIo_data _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIprefix _lhsIvcount) =     (let ( _lhsOacount,_lhsOadditionalDep,_lhsOaranges,_lhsOcNonterminals,_lhsOdirectDep,_lhsOerrors,_lhsOinstDep,_lhsOnonts,_lhsOntattrs,_lhsOrules,_lhsOvcount) =              (sem _lhsIacount _lhsIallnts _lhsIcInterfaceMap _lhsIcVisitsMap _lhsImanualAttrDepMap _lhsIo_case _lhsIo_cata _lhsIo_data _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIprefix _lhsIvcount)@@ -1299,31 +1301,31 @@                               _tlIntattrs :: (Seq (Vertex,NTAttr))                               _tlIrules :: (Seq (Vertex,CRule))                               _tlIvcount :: Int-                              -- "Order.ag"(line 481, column 12)+                              -- "Order.ag"(line 484, column 12)                               _lhsOcNonterminals =                                   _hdIcNonterminal : _tlIcNonterminals-                              -- use rule "Order.ag"(line 259, column 71)+                              -- use rule "Order.ag"(line 262, column 71)                               _lhsOadditionalDep =                                   _hdIadditionalDep Seq.<> _tlIadditionalDep-                              -- use rule "Order.ag"(line 362, column 36)+                              -- use rule "Order.ag"(line 365, column 36)                               _lhsOaranges =                                   _hdIaranges Seq.<> _tlIaranges-                              -- use rule "Order.ag"(line 245, column 33)+                              -- use rule "Order.ag"(line 248, column 33)                               _lhsOdirectDep =                                   _hdIdirectDep Seq.<> _tlIdirectDep-                              -- use rule "Order.ag"(line 60, column 70)+                              -- use rule "Order.ag"(line 63, column 70)                               _lhsOerrors =                                   _hdIerrors Seq.<> _tlIerrors-                              -- use rule "Order.ag"(line 292, column 31)+                              -- use rule "Order.ag"(line 295, column 31)                               _lhsOinstDep =                                   _hdIinstDep Seq.<> _tlIinstDep-                              -- use rule "Order.ag"(line 379, column 43)+                              -- use rule "Order.ag"(line 382, column 43)                               _lhsOnonts =                                   _hdInonts ++ _tlInonts-                              -- use rule "Order.ag"(line 361, column 35)+                              -- use rule "Order.ag"(line 364, column 35)                               _lhsOntattrs =                                   _hdIntattrs Seq.<> _tlIntattrs-                              -- use rule "Order.ag"(line 235, column 18)+                              -- use rule "Order.ag"(line 238, column 18)                               _lhsOrules =                                   _hdIrules Seq.<> _tlIrules                               -- copy rule (up)@@ -1469,31 +1471,31 @@                               _lhsOrules :: (Seq (Vertex,CRule))                               _lhsOacount :: Int                               _lhsOvcount :: Int-                              -- "Order.ag"(line 482, column 12)+                              -- "Order.ag"(line 485, column 12)                               _lhsOcNonterminals =                                   []-                              -- use rule "Order.ag"(line 259, column 71)+                              -- use rule "Order.ag"(line 262, column 71)                               _lhsOadditionalDep =                                   Seq.empty-                              -- use rule "Order.ag"(line 362, column 36)+                              -- use rule "Order.ag"(line 365, column 36)                               _lhsOaranges =                                   Seq.empty-                              -- use rule "Order.ag"(line 245, column 33)+                              -- use rule "Order.ag"(line 248, column 33)                               _lhsOdirectDep =                                   Seq.empty-                              -- use rule "Order.ag"(line 60, column 70)+                              -- use rule "Order.ag"(line 63, column 70)                               _lhsOerrors =                                   Seq.empty-                              -- use rule "Order.ag"(line 292, column 31)+                              -- use rule "Order.ag"(line 295, column 31)                               _lhsOinstDep =                                   Seq.empty-                              -- use rule "Order.ag"(line 379, column 43)+                              -- use rule "Order.ag"(line 382, column 43)                               _lhsOnonts =                                   []-                              -- use rule "Order.ag"(line 361, column 35)+                              -- use rule "Order.ag"(line 364, column 35)                               _lhsOntattrs =                                   Seq.empty-                              -- use rule "Order.ag"(line 235, column 18)+                              -- use rule "Order.ag"(line 238, column 18)                               _lhsOrules =                                   Seq.empty                               -- copy rule (chain)@@ -1568,8 +1570,8 @@                                Identifier ->                                Attributes ->                                ( Pattern,(Seq Error),([AltAttr]),([Identifier]),([Identifier]),([(Identifier,Identifier,Bool,Patterns)])))-data Inh_Pattern = Inh_Pattern {allTypeSigs_Inh_Pattern :: Map Identifier Type,altAttrs_Inh_Pattern :: Map AltAttr Vertex,con_Inh_Pattern :: Identifier,inh_Inh_Pattern :: Attributes,nt_Inh_Pattern :: Identifier,syn_Inh_Pattern :: Attributes}-data Syn_Pattern = Syn_Pattern {copy_Syn_Pattern :: Pattern,errors_Syn_Pattern :: Seq Error,gathAltAttrs_Syn_Pattern :: [AltAttr],instVars_Syn_Pattern :: [Identifier],locVars_Syn_Pattern :: [Identifier],patternAttrs_Syn_Pattern :: [(Identifier,Identifier,Bool,Patterns)]}+data Inh_Pattern = Inh_Pattern {allTypeSigs_Inh_Pattern :: !(Map Identifier Type),altAttrs_Inh_Pattern :: !(Map AltAttr Vertex),con_Inh_Pattern :: !(Identifier),inh_Inh_Pattern :: !(Attributes),nt_Inh_Pattern :: !(Identifier),syn_Inh_Pattern :: !(Attributes)}+data Syn_Pattern = Syn_Pattern {copy_Syn_Pattern :: !(Pattern),errors_Syn_Pattern :: !(Seq Error),gathAltAttrs_Syn_Pattern :: !([AltAttr]),instVars_Syn_Pattern :: !([Identifier]),locVars_Syn_Pattern :: !([Identifier]),patternAttrs_Syn_Pattern :: !([(Identifier,Identifier,Bool,Patterns)])} wrap_Pattern (T_Pattern sem) (Inh_Pattern _lhsIallTypeSigs _lhsIaltAttrs _lhsIcon _lhsIinh _lhsInt _lhsIsyn) =     (let ( _lhsOcopy,_lhsOerrors,_lhsOgathAltAttrs,_lhsOinstVars,_lhsOlocVars,_lhsOpatternAttrs) =              (sem _lhsIallTypeSigs _lhsIaltAttrs _lhsIcon _lhsIinh _lhsInt _lhsIsyn)@@ -1616,23 +1618,23 @@                          _partsIinstVars :: ([Identifier])                          _partsIlocVars :: ([Identifier])                          _partsIpatternAttrs :: ([(Identifier,Identifier,Bool,Patterns)])-                         -- "Order.ag"(line 160, column 12)+                         -- "Order.ag"(line 163, column 12)                          _lhsOgathAltAttrs =                              [AltAttr field_ attr_ (field_ == _LOC || field_ == _INST)]-                         -- "Order.ag"(line 228, column 12)+                         -- "Order.ag"(line 231, column 12)                          _lhsOpatternAttrs =                              [(field_,attr_,(field_ == _LOC || field_ == _INST),_partsIcopy)]-                         -- "Order.ag"(line 536, column 14)+                         -- "Order.ag"(line 539, column 14)                          _lhsOlocVars =                              if field_ == _LOC                                 then [attr_]                                 else []-                         -- "Order.ag"(line 539, column 14)+                         -- "Order.ag"(line 542, column 14)                          _lhsOinstVars =                              if field_ == _INST                                 then [attr_]                                 else []-                         -- use rule "Order.ag"(line 60, column 70)+                         -- use rule "Order.ag"(line 63, column 70)                          _lhsOerrors =                              _patIerrors Seq.<> _partsIerrors                          -- self rule@@ -1710,19 +1712,19 @@                          _patsIinstVars :: ([Identifier])                          _patsIlocVars :: ([Identifier])                          _patsIpatternAttrs :: ([(Identifier,Identifier,Bool,Patterns)])-                         -- use rule "Order.ag"(line 60, column 70)+                         -- use rule "Order.ag"(line 63, column 70)                          _lhsOerrors =                              _patsIerrors-                         -- use rule "Order.ag"(line 146, column 68)+                         -- use rule "Order.ag"(line 149, column 68)                          _lhsOgathAltAttrs =                              _patsIgathAltAttrs-                         -- use rule "Order.ag"(line 533, column 86)+                         -- use rule "Order.ag"(line 536, column 86)                          _lhsOinstVars =                              _patsIinstVars-                         -- use rule "Order.ag"(line 533, column 48)+                         -- use rule "Order.ag"(line 536, column 48)                          _lhsOlocVars =                              _patsIlocVars-                         -- use rule "Order.ag"(line 225, column 42)+                         -- use rule "Order.ag"(line 228, column 42)                          _lhsOpatternAttrs =                              _patsIpatternAttrs                          -- self rule@@ -1779,19 +1781,19 @@                          _patIinstVars :: ([Identifier])                          _patIlocVars :: ([Identifier])                          _patIpatternAttrs :: ([(Identifier,Identifier,Bool,Patterns)])-                         -- use rule "Order.ag"(line 60, column 70)+                         -- use rule "Order.ag"(line 63, column 70)                          _lhsOerrors =                              _patIerrors-                         -- use rule "Order.ag"(line 146, column 68)+                         -- use rule "Order.ag"(line 149, column 68)                          _lhsOgathAltAttrs =                              _patIgathAltAttrs-                         -- use rule "Order.ag"(line 533, column 86)+                         -- use rule "Order.ag"(line 536, column 86)                          _lhsOinstVars =                              _patIinstVars-                         -- use rule "Order.ag"(line 533, column 48)+                         -- use rule "Order.ag"(line 536, column 48)                          _lhsOlocVars =                              _patIlocVars-                         -- use rule "Order.ag"(line 225, column 42)+                         -- use rule "Order.ag"(line 228, column 42)                          _lhsOpatternAttrs =                              _patIpatternAttrs                          -- self rule@@ -1849,19 +1851,19 @@                          _patsIinstVars :: ([Identifier])                          _patsIlocVars :: ([Identifier])                          _patsIpatternAttrs :: ([(Identifier,Identifier,Bool,Patterns)])-                         -- use rule "Order.ag"(line 60, column 70)+                         -- use rule "Order.ag"(line 63, column 70)                          _lhsOerrors =                              _patsIerrors-                         -- use rule "Order.ag"(line 146, column 68)+                         -- use rule "Order.ag"(line 149, column 68)                          _lhsOgathAltAttrs =                              _patsIgathAltAttrs-                         -- use rule "Order.ag"(line 533, column 86)+                         -- use rule "Order.ag"(line 536, column 86)                          _lhsOinstVars =                              _patsIinstVars-                         -- use rule "Order.ag"(line 533, column 48)+                         -- use rule "Order.ag"(line 536, column 48)                          _lhsOlocVars =                              _patsIlocVars-                         -- use rule "Order.ag"(line 225, column 42)+                         -- use rule "Order.ag"(line 228, column 42)                          _lhsOpatternAttrs =                              _patsIpatternAttrs                          -- self rule@@ -1906,19 +1908,19 @@                          _lhsOlocVars :: ([Identifier])                          _lhsOpatternAttrs :: ([(Identifier,Identifier,Bool,Patterns)])                          _lhsOcopy :: Pattern-                         -- use rule "Order.ag"(line 60, column 70)+                         -- use rule "Order.ag"(line 63, column 70)                          _lhsOerrors =                              Seq.empty-                         -- use rule "Order.ag"(line 146, column 68)+                         -- use rule "Order.ag"(line 149, column 68)                          _lhsOgathAltAttrs =                              []-                         -- use rule "Order.ag"(line 533, column 86)+                         -- use rule "Order.ag"(line 536, column 86)                          _lhsOinstVars =                              []-                         -- use rule "Order.ag"(line 533, column 48)+                         -- use rule "Order.ag"(line 536, column 48)                          _lhsOlocVars =                              []-                         -- use rule "Order.ag"(line 225, column 42)+                         -- use rule "Order.ag"(line 228, column 42)                          _lhsOpatternAttrs =                              []                          -- self rule@@ -1968,8 +1970,8 @@                                  Identifier ->                                  Attributes ->                                  ( Patterns,(Seq Error),([AltAttr]),([Identifier]),([Identifier]),([(Identifier,Identifier,Bool,Patterns)])))-data Inh_Patterns = Inh_Patterns {allTypeSigs_Inh_Patterns :: Map Identifier Type,altAttrs_Inh_Patterns :: Map AltAttr Vertex,con_Inh_Patterns :: Identifier,inh_Inh_Patterns :: Attributes,nt_Inh_Patterns :: Identifier,syn_Inh_Patterns :: Attributes}-data Syn_Patterns = Syn_Patterns {copy_Syn_Patterns :: Patterns,errors_Syn_Patterns :: Seq Error,gathAltAttrs_Syn_Patterns :: [AltAttr],instVars_Syn_Patterns :: [Identifier],locVars_Syn_Patterns :: [Identifier],patternAttrs_Syn_Patterns :: [(Identifier,Identifier,Bool,Patterns)]}+data Inh_Patterns = Inh_Patterns {allTypeSigs_Inh_Patterns :: !(Map Identifier Type),altAttrs_Inh_Patterns :: !(Map AltAttr Vertex),con_Inh_Patterns :: !(Identifier),inh_Inh_Patterns :: !(Attributes),nt_Inh_Patterns :: !(Identifier),syn_Inh_Patterns :: !(Attributes)}+data Syn_Patterns = Syn_Patterns {copy_Syn_Patterns :: !(Patterns),errors_Syn_Patterns :: !(Seq Error),gathAltAttrs_Syn_Patterns :: !([AltAttr]),instVars_Syn_Patterns :: !([Identifier]),locVars_Syn_Patterns :: !([Identifier]),patternAttrs_Syn_Patterns :: !([(Identifier,Identifier,Bool,Patterns)])} wrap_Patterns (T_Patterns sem) (Inh_Patterns _lhsIallTypeSigs _lhsIaltAttrs _lhsIcon _lhsIinh _lhsInt _lhsIsyn) =     (let ( _lhsOcopy,_lhsOerrors,_lhsOgathAltAttrs,_lhsOinstVars,_lhsOlocVars,_lhsOpatternAttrs) =              (sem _lhsIallTypeSigs _lhsIaltAttrs _lhsIcon _lhsIinh _lhsInt _lhsIsyn)@@ -2014,19 +2016,19 @@                           _tlIinstVars :: ([Identifier])                           _tlIlocVars :: ([Identifier])                           _tlIpatternAttrs :: ([(Identifier,Identifier,Bool,Patterns)])-                          -- use rule "Order.ag"(line 60, column 70)+                          -- use rule "Order.ag"(line 63, column 70)                           _lhsOerrors =                               _hdIerrors Seq.<> _tlIerrors-                          -- use rule "Order.ag"(line 146, column 68)+                          -- use rule "Order.ag"(line 149, column 68)                           _lhsOgathAltAttrs =                               _hdIgathAltAttrs ++ _tlIgathAltAttrs-                          -- use rule "Order.ag"(line 533, column 86)+                          -- use rule "Order.ag"(line 536, column 86)                           _lhsOinstVars =                               _hdIinstVars ++ _tlIinstVars-                          -- use rule "Order.ag"(line 533, column 48)+                          -- use rule "Order.ag"(line 536, column 48)                           _lhsOlocVars =                               _hdIlocVars ++ _tlIlocVars-                          -- use rule "Order.ag"(line 225, column 42)+                          -- use rule "Order.ag"(line 228, column 42)                           _lhsOpatternAttrs =                               _hdIpatternAttrs ++ _tlIpatternAttrs                           -- self rule@@ -2090,19 +2092,19 @@                           _lhsOlocVars :: ([Identifier])                           _lhsOpatternAttrs :: ([(Identifier,Identifier,Bool,Patterns)])                           _lhsOcopy :: Patterns-                          -- use rule "Order.ag"(line 60, column 70)+                          -- use rule "Order.ag"(line 63, column 70)                           _lhsOerrors =                               Seq.empty-                          -- use rule "Order.ag"(line 146, column 68)+                          -- use rule "Order.ag"(line 149, column 68)                           _lhsOgathAltAttrs =                               []-                          -- use rule "Order.ag"(line 533, column 86)+                          -- use rule "Order.ag"(line 536, column 86)                           _lhsOinstVars =                               []-                          -- use rule "Order.ag"(line 533, column 48)+                          -- use rule "Order.ag"(line 536, column 48)                           _lhsOlocVars =                               []-                          -- use rule "Order.ag"(line 225, column 42)+                          -- use rule "Order.ag"(line 228, column 42)                           _lhsOpatternAttrs =                               []                           -- self rule@@ -2182,8 +2184,8 @@                                      Attributes ->                                      Int ->                                      ( (Seq Edge),CProduction,([ConstructorIdent]),(Seq Edge),(Seq Error),(Seq Edge),(Seq (Vertex,CRule)),Int))-data Inh_Production = Inh_Production {allnts_Inh_Production :: [Identifier],cVisitsMap_Inh_Production :: CVisitsMap,inh_Inh_Production :: Attributes,manualAttrDepMap_Inh_Production :: AttrOrderMap,nt_Inh_Production :: Identifier,o_case_Inh_Production :: Bool,o_cata_Inh_Production :: Bool,o_dovisit_Inh_Production :: Bool,o_newtypes_Inh_Production :: Bool,o_rename_Inh_Production :: Bool,o_sem_Inh_Production :: Bool,o_sig_Inh_Production :: Bool,o_unbox_Inh_Production :: Bool,o_wantvisit_Inh_Production :: Bool,prefix_Inh_Production :: String,syn_Inh_Production :: Attributes,vcount_Inh_Production :: Int}-data Syn_Production = Syn_Production {additionalDep_Syn_Production :: Seq Edge,cProduction_Syn_Production :: CProduction,cons_Syn_Production :: [ConstructorIdent],directDep_Syn_Production :: Seq Edge,errors_Syn_Production :: Seq Error,instDep_Syn_Production :: Seq Edge,rules_Syn_Production :: Seq (Vertex,CRule),vcount_Syn_Production :: Int}+data Inh_Production = Inh_Production {allnts_Inh_Production :: !([Identifier]),cVisitsMap_Inh_Production :: !(CVisitsMap),inh_Inh_Production :: !(Attributes),manualAttrDepMap_Inh_Production :: !(AttrOrderMap),nt_Inh_Production :: !(Identifier),o_case_Inh_Production :: !(Bool),o_cata_Inh_Production :: !(Bool),o_dovisit_Inh_Production :: !(Bool),o_newtypes_Inh_Production :: !(Bool),o_rename_Inh_Production :: !(Bool),o_sem_Inh_Production :: !(Bool),o_sig_Inh_Production :: !(Bool),o_unbox_Inh_Production :: !(Bool),o_wantvisit_Inh_Production :: !(Bool),prefix_Inh_Production :: !(String),syn_Inh_Production :: !(Attributes),vcount_Inh_Production :: !(Int)}+data Syn_Production = Syn_Production {additionalDep_Syn_Production :: !(Seq Edge),cProduction_Syn_Production :: !(CProduction),cons_Syn_Production :: !([ConstructorIdent]),directDep_Syn_Production :: !(Seq Edge),errors_Syn_Production :: !(Seq Error),instDep_Syn_Production :: !(Seq Edge),rules_Syn_Production :: !(Seq (Vertex,CRule)),vcount_Syn_Production :: !(Int)} wrap_Production (T_Production sem) (Inh_Production _lhsIallnts _lhsIcVisitsMap _lhsIinh _lhsImanualAttrDepMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIprefix _lhsIsyn _lhsIvcount) =     (let ( _lhsOadditionalDep,_lhsOcProduction,_lhsOcons,_lhsOdirectDep,_lhsOerrors,_lhsOinstDep,_lhsOrules,_lhsOvcount) =              (sem _lhsIallnts _lhsIcVisitsMap _lhsIinh _lhsImanualAttrDepMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIprefix _lhsIsyn _lhsIvcount)@@ -2269,51 +2271,51 @@                             _rulesIinstVars :: ([Identifier])                             _rulesIlocVars :: ([Identifier])                             _typeSigsItypeSigs :: (Map Identifier Type)-                            -- "Order.ag"(line 69, column 16)+                            -- "Order.ag"(line 72, column 16)                             _childrenOcon =                                 con_-                            -- "Order.ag"(line 71, column 16)+                            -- "Order.ag"(line 74, column 16)                             _rulesOcon =                                 con_-                            -- "Order.ag"(line 148, column 18)+                            -- "Order.ag"(line 151, column 18)                             _gathAltAttrs =                                 [ AltAttr _LHS inh True | inh <- Map.keys _lhsIinh ]                                  ++ _childrenIgathAltAttrs                                  ++ _rulesIgathAltAttrs-                            -- "Order.ag"(line 164, column 17)+                            -- "Order.ag"(line 167, column 17)                             _rulesOaltAttrs =                                 Map.fromList (zip _gathAltAttrs [_lhsIvcount..])-                            -- "Order.ag"(line 177, column 18)+                            -- "Order.ag"(line 180, column 18)                             _rulesOchildNts =                                 Map.fromList (Seq.toList _childrenInts)-                            -- "Order.ag"(line 178, column 19)+                            -- "Order.ag"(line 181, column 19)                             _rulesOchildInhs =                                 Map.fromList (Seq.toList _childrenIinhs)-                            -- "Order.ag"(line 184, column 18)+                            -- "Order.ag"(line 187, column 18)                             _inhRules =                                 [ cRuleLhsInh inh _lhsInt con_ tp | (inh,tp) <- Map.assocs _lhsIinh ]-                            -- "Order.ag"(line 185, column 19)+                            -- "Order.ag"(line 188, column 19)                             _gathRules =                                 _inhRules ++ Seq.toList (_childrenIgathRules Seq.<> _rulesIgathRules)-                            -- "Order.ag"(line 239, column 18)+                            -- "Order.ag"(line 242, column 18)                             _lhsOrules =                                 Seq.fromList (zip [_lhsIvcount..] _gathRules)-                            -- "Order.ag"(line 240, column 19)+                            -- "Order.ag"(line 243, column 19)                             _lhsOvcount =                                 _lhsIvcount + length _gathRules-                            -- "Order.ag"(line 309, column 17)+                            -- "Order.ag"(line 312, column 17)                             _rulesOsynsOfChildren =                                 _childrenIcollectChildrenSyns-                            -- "Order.ag"(line 384, column 18)+                            -- "Order.ag"(line 387, column 18)                             _lhsOcons =                                 [con_]-                            -- "Order.ag"(line 391, column 16)+                            -- "Order.ag"(line 394, column 16)                             _typeSigsOtypeSigs =                                 Map.empty-                            -- "Order.ag"(line 397, column 17)+                            -- "Order.ag"(line 400, column 17)                             _rulesOallTypeSigs =                                 _typeSigsItypeSigs-                            -- "Order.ag"(line 463, column 17)+                            -- "Order.ag"(line 466, column 17)                             _cVisits =                                 if  _lhsIo_dovisit                                      then let prodsVisitsMap = findWithErr1 "Production.cVisits.nt" _lhsInt _lhsIcVisitsMap@@ -2321,34 +2323,34 @@                                            in visits                                      else  let  vss = nubBy eqCRuleDefines _gathRules ++ _childrenIsinglevisits                                            in  [CVisit _lhsIinh _lhsIsyn vss [] False]-                            -- "Order.ag"(line 489, column 18)+                            -- "Order.ag"(line 492, column 18)                             _lhsOcProduction =                                 CProduction con_ _cVisits _childrenIfields _childrenIterminals-                            -- "Order.ag"(line 513, column 16)+                            -- "Order.ag"(line 516, column 16)                             _allfields =                                 _childrenIfields-                            -- "Order.ag"(line 513, column 16)+                            -- "Order.ag"(line 516, column 16)                             _attrs =                                 map ((,) _LOC)  _rulesIlocVars ++                                 map ((,) _INST) _rulesIinstVars ++                                 map ((,) _LHS)  _inhnames ++                                 concat [map ((,) nm) (Map.keys as) | (nm,_,as) <- _childrenIattributes]-                            -- "Order.ag"(line 513, column 16)+                            -- "Order.ag"(line 516, column 16)                             _inhnames =                                 Map.keys _lhsIinh-                            -- "Order.ag"(line 513, column 16)+                            -- "Order.ag"(line 516, column 16)                             _synnames =                                 Map.keys _lhsIsyn-                            -- use rule "Order.ag"(line 259, column 71)+                            -- use rule "Order.ag"(line 262, column 71)                             _lhsOadditionalDep =                                 _rulesIadditionalDep-                            -- use rule "Order.ag"(line 245, column 33)+                            -- use rule "Order.ag"(line 248, column 33)                             _lhsOdirectDep =                                 _rulesIdirectDep-                            -- use rule "Order.ag"(line 60, column 70)+                            -- use rule "Order.ag"(line 63, column 70)                             _lhsOerrors =                                 _childrenIerrors Seq.<> _rulesIerrors-                            -- use rule "Order.ag"(line 292, column 31)+                            -- use rule "Order.ag"(line 295, column 31)                             _lhsOinstDep =                                 _rulesIinstDep                             -- copy rule (from local)@@ -2487,8 +2489,8 @@                                        Attributes ->                                        Int ->                                        ( (Seq Edge),CProductions,([ConstructorIdent]),(Seq Edge),(Seq Error),(Seq Edge),(Seq (Vertex,CRule)),Int))-data Inh_Productions = Inh_Productions {allnts_Inh_Productions :: [Identifier],cVisitsMap_Inh_Productions :: CVisitsMap,inh_Inh_Productions :: Attributes,manualAttrDepMap_Inh_Productions :: AttrOrderMap,nt_Inh_Productions :: Identifier,o_case_Inh_Productions :: Bool,o_cata_Inh_Productions :: Bool,o_dovisit_Inh_Productions :: Bool,o_newtypes_Inh_Productions :: Bool,o_rename_Inh_Productions :: Bool,o_sem_Inh_Productions :: Bool,o_sig_Inh_Productions :: Bool,o_unbox_Inh_Productions :: Bool,o_wantvisit_Inh_Productions :: Bool,prefix_Inh_Productions :: String,syn_Inh_Productions :: Attributes,vcount_Inh_Productions :: Int}-data Syn_Productions = Syn_Productions {additionalDep_Syn_Productions :: Seq Edge,cProductions_Syn_Productions :: CProductions,cons_Syn_Productions :: [ConstructorIdent],directDep_Syn_Productions :: Seq Edge,errors_Syn_Productions :: Seq Error,instDep_Syn_Productions :: Seq Edge,rules_Syn_Productions :: Seq (Vertex,CRule),vcount_Syn_Productions :: Int}+data Inh_Productions = Inh_Productions {allnts_Inh_Productions :: !([Identifier]),cVisitsMap_Inh_Productions :: !(CVisitsMap),inh_Inh_Productions :: !(Attributes),manualAttrDepMap_Inh_Productions :: !(AttrOrderMap),nt_Inh_Productions :: !(Identifier),o_case_Inh_Productions :: !(Bool),o_cata_Inh_Productions :: !(Bool),o_dovisit_Inh_Productions :: !(Bool),o_newtypes_Inh_Productions :: !(Bool),o_rename_Inh_Productions :: !(Bool),o_sem_Inh_Productions :: !(Bool),o_sig_Inh_Productions :: !(Bool),o_unbox_Inh_Productions :: !(Bool),o_wantvisit_Inh_Productions :: !(Bool),prefix_Inh_Productions :: !(String),syn_Inh_Productions :: !(Attributes),vcount_Inh_Productions :: !(Int)}+data Syn_Productions = Syn_Productions {additionalDep_Syn_Productions :: !(Seq Edge),cProductions_Syn_Productions :: !(CProductions),cons_Syn_Productions :: !([ConstructorIdent]),directDep_Syn_Productions :: !(Seq Edge),errors_Syn_Productions :: !(Seq Error),instDep_Syn_Productions :: !(Seq Edge),rules_Syn_Productions :: !(Seq (Vertex,CRule)),vcount_Syn_Productions :: !(Int)} wrap_Productions (T_Productions sem) (Inh_Productions _lhsIallnts _lhsIcVisitsMap _lhsIinh _lhsImanualAttrDepMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIprefix _lhsIsyn _lhsIvcount) =     (let ( _lhsOadditionalDep,_lhsOcProductions,_lhsOcons,_lhsOdirectDep,_lhsOerrors,_lhsOinstDep,_lhsOrules,_lhsOvcount) =              (sem _lhsIallnts _lhsIcVisitsMap _lhsIinh _lhsImanualAttrDepMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_unbox _lhsIo_wantvisit _lhsIprefix _lhsIsyn _lhsIvcount)@@ -2572,25 +2574,25 @@                              _tlIinstDep :: (Seq Edge)                              _tlIrules :: (Seq (Vertex,CRule))                              _tlIvcount :: Int-                             -- "Order.ag"(line 486, column 12)+                             -- "Order.ag"(line 489, column 12)                              _lhsOcProductions =                                  _hdIcProduction : _tlIcProductions-                             -- use rule "Order.ag"(line 259, column 71)+                             -- use rule "Order.ag"(line 262, column 71)                              _lhsOadditionalDep =                                  _hdIadditionalDep Seq.<> _tlIadditionalDep-                             -- use rule "Order.ag"(line 382, column 40)+                             -- use rule "Order.ag"(line 385, column 40)                              _lhsOcons =                                  _hdIcons ++ _tlIcons-                             -- use rule "Order.ag"(line 245, column 33)+                             -- use rule "Order.ag"(line 248, column 33)                              _lhsOdirectDep =                                  _hdIdirectDep Seq.<> _tlIdirectDep-                             -- use rule "Order.ag"(line 60, column 70)+                             -- use rule "Order.ag"(line 63, column 70)                              _lhsOerrors =                                  _hdIerrors Seq.<> _tlIerrors-                             -- use rule "Order.ag"(line 292, column 31)+                             -- use rule "Order.ag"(line 295, column 31)                              _lhsOinstDep =                                  _hdIinstDep Seq.<> _tlIinstDep-                             -- use rule "Order.ag"(line 235, column 18)+                             -- use rule "Order.ag"(line 238, column 18)                              _lhsOrules =                                  _hdIrules Seq.<> _tlIrules                              -- copy rule (up)@@ -2730,25 +2732,25 @@                              _lhsOinstDep :: (Seq Edge)                              _lhsOrules :: (Seq (Vertex,CRule))                              _lhsOvcount :: Int-                             -- "Order.ag"(line 487, column 12)+                             -- "Order.ag"(line 490, column 12)                              _lhsOcProductions =                                  []-                             -- use rule "Order.ag"(line 259, column 71)+                             -- use rule "Order.ag"(line 262, column 71)                              _lhsOadditionalDep =                                  Seq.empty-                             -- use rule "Order.ag"(line 382, column 40)+                             -- use rule "Order.ag"(line 385, column 40)                              _lhsOcons =                                  []-                             -- use rule "Order.ag"(line 245, column 33)+                             -- use rule "Order.ag"(line 248, column 33)                              _lhsOdirectDep =                                  Seq.empty-                             -- use rule "Order.ag"(line 60, column 70)+                             -- use rule "Order.ag"(line 63, column 70)                              _lhsOerrors =                                  Seq.empty-                             -- use rule "Order.ag"(line 292, column 31)+                             -- use rule "Order.ag"(line 295, column 31)                              _lhsOinstDep =                                  Seq.empty-                             -- use rule "Order.ag"(line 235, column 18)+                             -- use rule "Order.ag"(line 238, column 18)                              _lhsOrules =                                  Seq.empty                              -- copy rule (chain)@@ -2830,8 +2832,8 @@                          Attributes ->                          (Map Identifier Attributes) ->                          ( (Seq Edge),(Seq Edge),(Seq Error),([AltAttr]),(Seq CRule),(Seq Edge),([Identifier]),([Identifier])))-data Inh_Rule = Inh_Rule {allTypeSigs_Inh_Rule :: Map Identifier Type,allfields_Inh_Rule :: [(Identifier,Type,Bool)],allnts_Inh_Rule :: [Identifier],altAttrs_Inh_Rule :: Map AltAttr Vertex,attrs_Inh_Rule :: [(Identifier,Identifier)],childInhs_Inh_Rule :: Map Identifier Attributes,childNts_Inh_Rule :: Map Identifier NontermIdent,con_Inh_Rule :: Identifier,inh_Inh_Rule :: Attributes,manualAttrDepMap_Inh_Rule :: AttrOrderMap,nt_Inh_Rule :: Identifier,o_case_Inh_Rule :: Bool,o_cata_Inh_Rule :: Bool,o_dovisit_Inh_Rule :: Bool,o_newtypes_Inh_Rule :: Bool,o_rename_Inh_Rule :: Bool,o_sem_Inh_Rule :: Bool,o_sig_Inh_Rule :: Bool,o_wantvisit_Inh_Rule :: Bool,prefix_Inh_Rule :: String,syn_Inh_Rule :: Attributes,synsOfChildren_Inh_Rule :: Map Identifier Attributes}-data Syn_Rule = Syn_Rule {additionalDep_Syn_Rule :: Seq Edge,directDep_Syn_Rule :: Seq Edge,errors_Syn_Rule :: Seq Error,gathAltAttrs_Syn_Rule :: [AltAttr],gathRules_Syn_Rule :: Seq CRule,instDep_Syn_Rule :: Seq Edge,instVars_Syn_Rule :: [Identifier],locVars_Syn_Rule :: [Identifier]}+data Inh_Rule = Inh_Rule {allTypeSigs_Inh_Rule :: !(Map Identifier Type),allfields_Inh_Rule :: !([(Identifier,Type,Bool)]),allnts_Inh_Rule :: !([Identifier]),altAttrs_Inh_Rule :: !(Map AltAttr Vertex),attrs_Inh_Rule :: !([(Identifier,Identifier)]),childInhs_Inh_Rule :: !(Map Identifier Attributes),childNts_Inh_Rule :: !(Map Identifier NontermIdent),con_Inh_Rule :: !(Identifier),inh_Inh_Rule :: !(Attributes),manualAttrDepMap_Inh_Rule :: !(AttrOrderMap),nt_Inh_Rule :: !(Identifier),o_case_Inh_Rule :: !(Bool),o_cata_Inh_Rule :: !(Bool),o_dovisit_Inh_Rule :: !(Bool),o_newtypes_Inh_Rule :: !(Bool),o_rename_Inh_Rule :: !(Bool),o_sem_Inh_Rule :: !(Bool),o_sig_Inh_Rule :: !(Bool),o_wantvisit_Inh_Rule :: !(Bool),prefix_Inh_Rule :: !(String),syn_Inh_Rule :: !(Attributes),synsOfChildren_Inh_Rule :: !(Map Identifier Attributes)}+data Syn_Rule = Syn_Rule {additionalDep_Syn_Rule :: !(Seq Edge),directDep_Syn_Rule :: !(Seq Edge),errors_Syn_Rule :: !(Seq Error),gathAltAttrs_Syn_Rule :: !([AltAttr]),gathRules_Syn_Rule :: !(Seq CRule),instDep_Syn_Rule :: !(Seq Edge),instVars_Syn_Rule :: !([Identifier]),locVars_Syn_Rule :: !([Identifier])} wrap_Rule (T_Rule sem) (Inh_Rule _lhsIallTypeSigs _lhsIallfields _lhsIallnts _lhsIaltAttrs _lhsIattrs _lhsIchildInhs _lhsIchildNts _lhsIcon _lhsIinh _lhsImanualAttrDepMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_wantvisit _lhsIprefix _lhsIsyn _lhsIsynsOfChildren) =     (let ( _lhsOadditionalDep,_lhsOdirectDep,_lhsOerrors,_lhsOgathAltAttrs,_lhsOgathRules,_lhsOinstDep,_lhsOinstVars,_lhsOlocVars) =              (sem _lhsIallTypeSigs _lhsIallfields _lhsIallnts _lhsIaltAttrs _lhsIattrs _lhsIchildInhs _lhsIchildNts _lhsIcon _lhsIinh _lhsImanualAttrDepMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_wantvisit _lhsIprefix _lhsIsyn _lhsIsynsOfChildren)@@ -2896,7 +2898,7 @@                       _rhsIusedAttrs :: ([(Identifier,Identifier)])                       _rhsIusedFields :: ([Identifier])                       _rhsIusedLocals :: ([Identifier])-                      -- "Order.ag"(line 193, column 12)+                      -- "Order.ag"(line 196, column 12)                       _defines =                           let  tp field attr parts | field == _LOC || field == _INST                                                                    = case parts of@@ -2913,29 +2915,29 @@                                            | (field,attr,isLocalOrInst,parts) <- _patternIpatternAttrs                                            , let aa = AltAttr field attr isLocalOrInst                                            ]-                      -- "Order.ag"(line 209, column 12)+                      -- "Order.ag"(line 212, column 12)                       _gathRules =                           let childnt field = Map.lookup field _lhsIchildNts                           in Seq.fromList [ CRule attr False True _lhsInt _lhsIcon field (childnt field) tp _patternIcopy _rhsItextLines _defines owrt_ origin_ _rhsIallRhsVars                                           | (field,attr,tp) <- Map.elems _defines                                           ]-                      -- "Order.ag"(line 247, column 12)+                      -- "Order.ag"(line 250, column 12)                       _lhsOdirectDep =                           let  defined = Map.keys _defines                                used =  [ Map.lookup (AltAttr field attr True) _lhsIaltAttrs | (field,attr) <- _rhsIusedAttrs]                                        ++ [ Map.lookup (AltAttr _LOC attr True) _lhsIaltAttrs | attr <- _rhsIusedLocals ++ _rhsIusedFields ]                           in Seq.fromList [ (x,y) | Just x <- used, y <- defined ]-                      -- "Order.ag"(line 265, column 7)+                      -- "Order.ag"(line 268, column 7)                       _manualDeps =                           Set.toList $ Map.findWithDefault Set.empty _lhsIcon $ Map.findWithDefault Map.empty _lhsInt _lhsImanualAttrDepMap-                      -- "Order.ag"(line 267, column 7)+                      -- "Order.ag"(line 270, column 7)                       _lhsOadditionalDep =                           Seq.fromList [ (vertexA, vertexB)                                        | Dependency (fldA,nmA) (fldB,nmB) <- _manualDeps                                        , let vertexA = findWithErr2 (AltAttr fldA nmA True) _lhsIaltAttrs                                        , vertexB <- lookupVertices fldB nmB _lhsIaltAttrs                                        ]-                      -- "Order.ag"(line 295, column 7)+                      -- "Order.ag"(line 298, column 7)                       _lhsOinstDep =                           Seq.fromList $                             [ (instVert, synVert)@@ -2947,19 +2949,19 @@                                   instVert = findWithErr2 instAttr _lhsIaltAttrs                                   synVert  = findWithErr2 synAttr _lhsIaltAttrs                             ]-                      -- use rule "Order.ag"(line 60, column 70)+                      -- use rule "Order.ag"(line 63, column 70)                       _lhsOerrors =                           _patternIerrors Seq.<> _rhsIerrors-                      -- use rule "Order.ag"(line 146, column 68)+                      -- use rule "Order.ag"(line 149, column 68)                       _lhsOgathAltAttrs =                           _patternIgathAltAttrs-                      -- use rule "Order.ag"(line 182, column 23)+                      -- use rule "Order.ag"(line 185, column 23)                       _lhsOgathRules =                           _gathRules-                      -- use rule "Order.ag"(line 533, column 86)+                      -- use rule "Order.ag"(line 536, column 86)                       _lhsOinstVars =                           _patternIinstVars-                      -- use rule "Order.ag"(line 533, column 48)+                      -- use rule "Order.ag"(line 536, column 48)                       _lhsOlocVars =                           _patternIlocVars                       -- copy rule (down)@@ -3070,8 +3072,8 @@                            Attributes ->                            (Map Identifier Attributes) ->                            ( (Seq Edge),(Seq Edge),(Seq Error),([AltAttr]),(Seq CRule),(Seq Edge),([Identifier]),([Identifier])))-data Inh_Rules = Inh_Rules {allTypeSigs_Inh_Rules :: Map Identifier Type,allfields_Inh_Rules :: [(Identifier,Type,Bool)],allnts_Inh_Rules :: [Identifier],altAttrs_Inh_Rules :: Map AltAttr Vertex,attrs_Inh_Rules :: [(Identifier,Identifier)],childInhs_Inh_Rules :: Map Identifier Attributes,childNts_Inh_Rules :: Map Identifier NontermIdent,con_Inh_Rules :: Identifier,inh_Inh_Rules :: Attributes,manualAttrDepMap_Inh_Rules :: AttrOrderMap,nt_Inh_Rules :: Identifier,o_case_Inh_Rules :: Bool,o_cata_Inh_Rules :: Bool,o_dovisit_Inh_Rules :: Bool,o_newtypes_Inh_Rules :: Bool,o_rename_Inh_Rules :: Bool,o_sem_Inh_Rules :: Bool,o_sig_Inh_Rules :: Bool,o_wantvisit_Inh_Rules :: Bool,prefix_Inh_Rules :: String,syn_Inh_Rules :: Attributes,synsOfChildren_Inh_Rules :: Map Identifier Attributes}-data Syn_Rules = Syn_Rules {additionalDep_Syn_Rules :: Seq Edge,directDep_Syn_Rules :: Seq Edge,errors_Syn_Rules :: Seq Error,gathAltAttrs_Syn_Rules :: [AltAttr],gathRules_Syn_Rules :: Seq CRule,instDep_Syn_Rules :: Seq Edge,instVars_Syn_Rules :: [Identifier],locVars_Syn_Rules :: [Identifier]}+data Inh_Rules = Inh_Rules {allTypeSigs_Inh_Rules :: !(Map Identifier Type),allfields_Inh_Rules :: !([(Identifier,Type,Bool)]),allnts_Inh_Rules :: !([Identifier]),altAttrs_Inh_Rules :: !(Map AltAttr Vertex),attrs_Inh_Rules :: !([(Identifier,Identifier)]),childInhs_Inh_Rules :: !(Map Identifier Attributes),childNts_Inh_Rules :: !(Map Identifier NontermIdent),con_Inh_Rules :: !(Identifier),inh_Inh_Rules :: !(Attributes),manualAttrDepMap_Inh_Rules :: !(AttrOrderMap),nt_Inh_Rules :: !(Identifier),o_case_Inh_Rules :: !(Bool),o_cata_Inh_Rules :: !(Bool),o_dovisit_Inh_Rules :: !(Bool),o_newtypes_Inh_Rules :: !(Bool),o_rename_Inh_Rules :: !(Bool),o_sem_Inh_Rules :: !(Bool),o_sig_Inh_Rules :: !(Bool),o_wantvisit_Inh_Rules :: !(Bool),prefix_Inh_Rules :: !(String),syn_Inh_Rules :: !(Attributes),synsOfChildren_Inh_Rules :: !(Map Identifier Attributes)}+data Syn_Rules = Syn_Rules {additionalDep_Syn_Rules :: !(Seq Edge),directDep_Syn_Rules :: !(Seq Edge),errors_Syn_Rules :: !(Seq Error),gathAltAttrs_Syn_Rules :: !([AltAttr]),gathRules_Syn_Rules :: !(Seq CRule),instDep_Syn_Rules :: !(Seq Edge),instVars_Syn_Rules :: !([Identifier]),locVars_Syn_Rules :: !([Identifier])} wrap_Rules (T_Rules sem) (Inh_Rules _lhsIallTypeSigs _lhsIallfields _lhsIallnts _lhsIaltAttrs _lhsIattrs _lhsIchildInhs _lhsIchildNts _lhsIcon _lhsIinh _lhsImanualAttrDepMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_wantvisit _lhsIprefix _lhsIsyn _lhsIsynsOfChildren) =     (let ( _lhsOadditionalDep,_lhsOdirectDep,_lhsOerrors,_lhsOgathAltAttrs,_lhsOgathRules,_lhsOinstDep,_lhsOinstVars,_lhsOlocVars) =              (sem _lhsIallTypeSigs _lhsIallfields _lhsIallnts _lhsIaltAttrs _lhsIattrs _lhsIchildInhs _lhsIchildNts _lhsIcon _lhsIinh _lhsImanualAttrDepMap _lhsInt _lhsIo_case _lhsIo_cata _lhsIo_dovisit _lhsIo_newtypes _lhsIo_rename _lhsIo_sem _lhsIo_sig _lhsIo_wantvisit _lhsIprefix _lhsIsyn _lhsIsynsOfChildren)@@ -3170,28 +3172,28 @@                        _tlIinstDep :: (Seq Edge)                        _tlIinstVars :: ([Identifier])                        _tlIlocVars :: ([Identifier])-                       -- use rule "Order.ag"(line 259, column 71)+                       -- use rule "Order.ag"(line 262, column 71)                        _lhsOadditionalDep =                            _hdIadditionalDep Seq.<> _tlIadditionalDep-                       -- use rule "Order.ag"(line 245, column 33)+                       -- use rule "Order.ag"(line 248, column 33)                        _lhsOdirectDep =                            _hdIdirectDep Seq.<> _tlIdirectDep-                       -- use rule "Order.ag"(line 60, column 70)+                       -- use rule "Order.ag"(line 63, column 70)                        _lhsOerrors =                            _hdIerrors Seq.<> _tlIerrors-                       -- use rule "Order.ag"(line 146, column 68)+                       -- use rule "Order.ag"(line 149, column 68)                        _lhsOgathAltAttrs =                            _hdIgathAltAttrs ++ _tlIgathAltAttrs-                       -- use rule "Order.ag"(line 182, column 23)+                       -- use rule "Order.ag"(line 185, column 23)                        _lhsOgathRules =                            _hdIgathRules Seq.<> _tlIgathRules-                       -- use rule "Order.ag"(line 292, column 31)+                       -- use rule "Order.ag"(line 295, column 31)                        _lhsOinstDep =                            _hdIinstDep Seq.<> _tlIinstDep-                       -- use rule "Order.ag"(line 533, column 86)+                       -- use rule "Order.ag"(line 536, column 86)                        _lhsOinstVars =                            _hdIinstVars ++ _tlIinstVars-                       -- use rule "Order.ag"(line 533, column 48)+                       -- use rule "Order.ag"(line 536, column 48)                        _lhsOlocVars =                            _hdIlocVars ++ _tlIlocVars                        -- copy rule (down)@@ -3363,28 +3365,28 @@                        _lhsOinstDep :: (Seq Edge)                        _lhsOinstVars :: ([Identifier])                        _lhsOlocVars :: ([Identifier])-                       -- use rule "Order.ag"(line 259, column 71)+                       -- use rule "Order.ag"(line 262, column 71)                        _lhsOadditionalDep =                            Seq.empty-                       -- use rule "Order.ag"(line 245, column 33)+                       -- use rule "Order.ag"(line 248, column 33)                        _lhsOdirectDep =                            Seq.empty-                       -- use rule "Order.ag"(line 60, column 70)+                       -- use rule "Order.ag"(line 63, column 70)                        _lhsOerrors =                            Seq.empty-                       -- use rule "Order.ag"(line 146, column 68)+                       -- use rule "Order.ag"(line 149, column 68)                        _lhsOgathAltAttrs =                            []-                       -- use rule "Order.ag"(line 182, column 23)+                       -- use rule "Order.ag"(line 185, column 23)                        _lhsOgathRules =                            Seq.empty-                       -- use rule "Order.ag"(line 292, column 31)+                       -- use rule "Order.ag"(line 295, column 31)                        _lhsOinstDep =                            Seq.empty-                       -- use rule "Order.ag"(line 533, column 86)+                       -- use rule "Order.ag"(line 536, column 86)                        _lhsOinstVars =                            []-                       -- use rule "Order.ag"(line 533, column 48)+                       -- use rule "Order.ag"(line 536, column 48)                        _lhsOlocVars =                            []                    in  ( _lhsOadditionalDep,_lhsOdirectDep,_lhsOerrors,_lhsOgathAltAttrs,_lhsOgathRules,_lhsOinstDep,_lhsOinstVars,_lhsOlocVars))))@@ -3406,8 +3408,8 @@ -- semantic domain newtype T_TypeSig = T_TypeSig ((Map Identifier Type) ->                                ( (Map Identifier Type)))-data Inh_TypeSig = Inh_TypeSig {typeSigs_Inh_TypeSig :: Map Identifier Type}-data Syn_TypeSig = Syn_TypeSig {typeSigs_Syn_TypeSig :: Map Identifier Type}+data Inh_TypeSig = Inh_TypeSig {typeSigs_Inh_TypeSig :: !(Map Identifier Type)}+data Syn_TypeSig = Syn_TypeSig {typeSigs_Syn_TypeSig :: !(Map Identifier Type)} wrap_TypeSig (T_TypeSig sem) (Inh_TypeSig _lhsItypeSigs) =     (let ( _lhsOtypeSigs) =              (sem _lhsItypeSigs)@@ -3418,7 +3420,7 @@ sem_TypeSig_TypeSig name_ tp_ =     (T_TypeSig (\ _lhsItypeSigs ->                     (let _lhsOtypeSigs :: (Map Identifier Type)-                         -- "Order.ag"(line 393, column 13)+                         -- "Order.ag"(line 396, column 13)                          _lhsOtypeSigs =                              Map.insert name_ tp_ _lhsItypeSigs                      in  ( _lhsOtypeSigs))))@@ -3441,8 +3443,8 @@ -- semantic domain newtype T_TypeSigs = T_TypeSigs ((Map Identifier Type) ->                                  ( (Map Identifier Type)))-data Inh_TypeSigs = Inh_TypeSigs {typeSigs_Inh_TypeSigs :: Map Identifier Type}-data Syn_TypeSigs = Syn_TypeSigs {typeSigs_Syn_TypeSigs :: Map Identifier Type}+data Inh_TypeSigs = Inh_TypeSigs {typeSigs_Inh_TypeSigs :: !(Map Identifier Type)}+data Syn_TypeSigs = Syn_TypeSigs {typeSigs_Syn_TypeSigs :: !(Map Identifier Type)} wrap_TypeSigs (T_TypeSigs sem) (Inh_TypeSigs _lhsItypeSigs) =     (let ( _lhsOtypeSigs) =              (sem _lhsItypeSigs)
src-derived/PrintCode.hs view
@@ -1,2858 +1,2161 @@--- UUAGC 0.9.5 (PrintCode.ag)-module PrintCode where--import Char (isAlphaNum)-import Pretty-import Code-import Patterns-import Options-import CommonTypes (attrname, _LOC, getName, nullIdent)-import Data.List(intersperse)-import System.IO-import System.Directory--import Pretty-import Patterns-import Data.List(partition)-import Data.Set(Set)-import qualified UU.DData.Set as Set-import Data.Map(Map)-import qualified Data.Map as Map---- Patterns.ag imports-import UU.Scanner.Position(Pos)-import CommonTypes (ConstructorIdent,Identifier)--type PP_Docs = [PP_Doc]--ppMultiSeqH :: [PP_Doc] -> PP_Doc -> PP_Doc-ppMultiSeqH = ppMultiSeq' (>#<)--ppMultiSeqV :: [PP_Doc] -> PP_Doc -> PP_Doc-ppMultiSeqV = ppMultiSeq' (>-<)--ppMultiSeq' :: (PP_Doc -> PP_Doc -> PP_Doc) -> [PP_Doc] -> PP_Doc -> PP_Doc-ppMultiSeq' next strictArgs expr-  = foldr (\v r -> (v >#< "`seq`") `next` pp_parens r) expr strictArgs---reallySimple :: String -> Bool-reallySimple = and . map (\x -> isAlphaNum x || x=='_')--ppTuple True  pps = "(" >|< pp_block " " (replicate (length pps `max` 1) ')') ",(" pps-ppTuple False pps = "(" >|< pp_block " " ")" "," pps-ppUnboxedTuple True pps  = "(# " >|< pp_block " " (concat $ replicate (length pps `max` 1) " #)") ",(# " pps-ppUnboxedTuple False pps = "(# " >|< pp_block " " " #)" "," pps---locname' n = "_loc_" ++ getName n--renderDocs :: [PP_Doc] -> String-renderDocs pps = foldr (.) id (map (\d -> (disp d 50000) . ( '\n':) ) pps) ""--writeModule :: FilePath -> [PP_Doc] -> IO ()-writeModule path docs-  = do bExists <- doesFileExist path-       if bExists-        then do input <- readFile path-                seq (length input) (return ())-                if input /= output-                 then dumpIt-                 else return ()-        else dumpIt-  where-    output = renderDocs docs-    dumpIt = writeFile path output---- Unboxed tuples---   unbox  Whether unboxed tuples are wanted or not---   inh    The inherited attributes. ---          If there are none, no unboxing can take place, ---          because in that case the semantic function (a top-level identifier) would have an unboxed type.--- Of course we can't have an unboxed 1-tuple-mkTupleExpr :: Bool -> Bool -> Exprs -> Expr-mkTupleExpr unbox noInh exprs | not unbox || noInh || length exprs == 1 = TupleExpr exprs-                              | otherwise                               = UnboxedTupleExpr exprs-mkTupleType :: Bool -> Bool -> Types -> Type-mkTupleType unbox noInh tps | not unbox || noInh || length tps == 1 = TupleType tps-                            | otherwise                             = UnboxedTupleType tps-mkTupleLhs :: Bool -> Bool -> [String] -> Lhs-mkTupleLhs  unbox noInh comps | not unbox || noInh || length comps == 1 = TupleLhs comps-                              | otherwise                               = UnboxedTupleLhs comps--- CaseAlt ------------------------------------------------------{--   visit 0:-      inherited attributes:-         nested               : Bool-         options              : Options-         outputfile           : String-      synthesized attribute:-         pps                  : PP_Docs-   alternatives:-      alternative CaseAlt:-         child left           : Lhs-         child expr           : Expr--}--- cata-sem_CaseAlt :: CaseAlt ->-               T_CaseAlt-sem_CaseAlt (CaseAlt _left _expr) =-    (sem_CaseAlt_CaseAlt (sem_Lhs _left) (sem_Expr _expr))--- semantic domain-newtype T_CaseAlt = T_CaseAlt (Bool ->-                               Options ->-                               String ->-                               ( PP_Docs))-data Inh_CaseAlt = Inh_CaseAlt {nested_Inh_CaseAlt :: Bool,options_Inh_CaseAlt :: Options,outputfile_Inh_CaseAlt :: String}-data Syn_CaseAlt = Syn_CaseAlt {pps_Syn_CaseAlt :: PP_Docs}-wrap_CaseAlt (T_CaseAlt sem) (Inh_CaseAlt _lhsInested _lhsIoptions _lhsIoutputfile) =-    (let ( _lhsOpps) =-             (sem _lhsInested _lhsIoptions _lhsIoutputfile)-     in  (Syn_CaseAlt _lhsOpps))-sem_CaseAlt_CaseAlt :: T_Lhs ->-                       T_Expr ->-                       T_CaseAlt-sem_CaseAlt_CaseAlt (T_Lhs left_) (T_Expr expr_) =-    (T_CaseAlt (\ _lhsInested-                  _lhsIoptions-                  _lhsIoutputfile ->-                    (let _lhsOpps :: PP_Docs-                         _leftOisDeclOfLet :: Bool-                         _leftOnested :: Bool-                         _leftOoptions :: Options-                         _leftOoutputfile :: String-                         _exprOnested :: Bool-                         _exprOoptions :: Options-                         _exprOoutputfile :: String-                         _leftIpp :: PP_Doc-                         _exprIpp :: PP_Doc-                         -- "PrintCode.ag"(line 150, column 16)-                         _lhsOpps =-                             ["{" >#< _leftIpp >#< "->", _exprIpp >#< "}"]-                         -- "PrintCode.ag"(line 326, column 7)-                         _leftOisDeclOfLet =-                             False-                         -- copy rule (down)-                         _leftOnested =-                             _lhsInested-                         -- copy rule (down)-                         _leftOoptions =-                             _lhsIoptions-                         -- copy rule (down)-                         _leftOoutputfile =-                             _lhsIoutputfile-                         -- copy rule (down)-                         _exprOnested =-                             _lhsInested-                         -- copy rule (down)-                         _exprOoptions =-                             _lhsIoptions-                         -- copy rule (down)-                         _exprOoutputfile =-                             _lhsIoutputfile-                         ( _leftIpp) =-                             (left_ _leftOisDeclOfLet _leftOnested _leftOoptions _leftOoutputfile)-                         ( _exprIpp) =-                             (expr_ _exprOnested _exprOoptions _exprOoutputfile)-                     in  ( _lhsOpps))))--- CaseAlts -----------------------------------------------------{--   visit 0:-      inherited attributes:-         nested               : Bool-         options              : Options-         outputfile           : String-      synthesized attribute:-         pps                  : PP_Docs-   alternatives:-      alternative Cons:-         child hd             : CaseAlt-         child tl             : CaseAlts-      alternative Nil:--}--- cata-sem_CaseAlts :: CaseAlts ->-                T_CaseAlts-sem_CaseAlts list =-    (Prelude.foldr sem_CaseAlts_Cons sem_CaseAlts_Nil (Prelude.map sem_CaseAlt list))--- semantic domain-newtype T_CaseAlts = T_CaseAlts (Bool ->-                                 Options ->-                                 String ->-                                 ( PP_Docs))-data Inh_CaseAlts = Inh_CaseAlts {nested_Inh_CaseAlts :: Bool,options_Inh_CaseAlts :: Options,outputfile_Inh_CaseAlts :: String}-data Syn_CaseAlts = Syn_CaseAlts {pps_Syn_CaseAlts :: PP_Docs}-wrap_CaseAlts (T_CaseAlts sem) (Inh_CaseAlts _lhsInested _lhsIoptions _lhsIoutputfile) =-    (let ( _lhsOpps) =-             (sem _lhsInested _lhsIoptions _lhsIoutputfile)-     in  (Syn_CaseAlts _lhsOpps))-sem_CaseAlts_Cons :: T_CaseAlt ->-                     T_CaseAlts ->-                     T_CaseAlts-sem_CaseAlts_Cons (T_CaseAlt hd_) (T_CaseAlts tl_) =-    (T_CaseAlts (\ _lhsInested-                   _lhsIoptions-                   _lhsIoutputfile ->-                     (let _lhsOpps :: PP_Docs-                          _hdOnested :: Bool-                          _hdOoptions :: Options-                          _hdOoutputfile :: String-                          _tlOnested :: Bool-                          _tlOoptions :: Options-                          _tlOoutputfile :: String-                          _hdIpps :: PP_Docs-                          _tlIpps :: PP_Docs-                          -- "PrintCode.ag"(line 59, column 10)-                          _lhsOpps =-                              _hdIpps ++ _tlIpps-                          -- copy rule (down)-                          _hdOnested =-                              _lhsInested-                          -- copy rule (down)-                          _hdOoptions =-                              _lhsIoptions-                          -- copy rule (down)-                          _hdOoutputfile =-                              _lhsIoutputfile-                          -- copy rule (down)-                          _tlOnested =-                              _lhsInested-                          -- copy rule (down)-                          _tlOoptions =-                              _lhsIoptions-                          -- copy rule (down)-                          _tlOoutputfile =-                              _lhsIoutputfile-                          ( _hdIpps) =-                              (hd_ _hdOnested _hdOoptions _hdOoutputfile)-                          ( _tlIpps) =-                              (tl_ _tlOnested _tlOoptions _tlOoutputfile)-                      in  ( _lhsOpps))))-sem_CaseAlts_Nil :: T_CaseAlts-sem_CaseAlts_Nil  =-    (T_CaseAlts (\ _lhsInested-                   _lhsIoptions-                   _lhsIoutputfile ->-                     (let _lhsOpps :: PP_Docs-                          -- "PrintCode.ag"(line 60, column 10)-                          _lhsOpps =-                              []-                      in  ( _lhsOpps))))--- Chunk --------------------------------------------------------{--   visit 0:-      inherited attributes:-         importBlocks         : PP_Doc-         isDeclOfLet          : Bool-         mainFile             : String-         mainName             : String-         moduleHeader         : String -> String -> String -> Bool -> String-         nested               : Bool-         options              : Options-         optionsLine          : String-         pragmaBlocks         : String-         textBlocks           : PP_Doc-      synthesized attributes:-         appendCommon         : [[PP_Doc]]-         appendMain           : [[PP_Doc]]-         genSems              : IO ()-         imports              : [String]-         pps                  : PP_Docs-   alternatives:-      alternative Chunk:-         child name           : {String}-         child comment        : Decl-         child info           : Decls-         child dataDef        : Decls-         child cataFun        : Decls-         child semDom         : Decls-         child semWrapper     : Decls-         child semFunctions   : Decls-         child semNames       : {[String]}-         visit 0:-            local outputfile  : _-            local exports     : _--}--- cata-sem_Chunk :: Chunk ->-             T_Chunk-sem_Chunk (Chunk _name _comment _info _dataDef _cataFun _semDom _semWrapper _semFunctions _semNames) =-    (sem_Chunk_Chunk _name (sem_Decl _comment) (sem_Decls _info) (sem_Decls _dataDef) (sem_Decls _cataFun) (sem_Decls _semDom) (sem_Decls _semWrapper) (sem_Decls _semFunctions) _semNames)--- semantic domain-newtype T_Chunk = T_Chunk (PP_Doc ->-                           Bool ->-                           String ->-                           String ->-                           (String -> String -> String -> Bool -> String) ->-                           Bool ->-                           Options ->-                           String ->-                           String ->-                           PP_Doc ->-                           ( ([[PP_Doc]]),([[PP_Doc]]),(IO ()),([String]),PP_Docs))-data Inh_Chunk = Inh_Chunk {importBlocks_Inh_Chunk :: PP_Doc,isDeclOfLet_Inh_Chunk :: Bool,mainFile_Inh_Chunk :: String,mainName_Inh_Chunk :: String,moduleHeader_Inh_Chunk :: String -> String -> String -> Bool -> String,nested_Inh_Chunk :: Bool,options_Inh_Chunk :: Options,optionsLine_Inh_Chunk :: String,pragmaBlocks_Inh_Chunk :: String,textBlocks_Inh_Chunk :: PP_Doc}-data Syn_Chunk = Syn_Chunk {appendCommon_Syn_Chunk :: [[PP_Doc]],appendMain_Syn_Chunk :: [[PP_Doc]],genSems_Syn_Chunk :: IO (),imports_Syn_Chunk :: [String],pps_Syn_Chunk :: PP_Docs}-wrap_Chunk (T_Chunk sem) (Inh_Chunk _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlocks) =-    (let ( _lhsOappendCommon,_lhsOappendMain,_lhsOgenSems,_lhsOimports,_lhsOpps) =-             (sem _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlocks)-     in  (Syn_Chunk _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps))-sem_Chunk_Chunk :: String ->-                   T_Decl ->-                   T_Decls ->-                   T_Decls ->-                   T_Decls ->-                   T_Decls ->-                   T_Decls ->-                   T_Decls ->-                   ([String]) ->-                   T_Chunk-sem_Chunk_Chunk name_ (T_Decl comment_) (T_Decls info_) (T_Decls dataDef_) (T_Decls cataFun_) (T_Decls semDom_) (T_Decls semWrapper_) (T_Decls semFunctions_) semNames_ =-    (T_Chunk (\ _lhsIimportBlocks-                _lhsIisDeclOfLet-                _lhsImainFile-                _lhsImainName-                _lhsImoduleHeader-                _lhsInested-                _lhsIoptions-                _lhsIoptionsLine-                _lhsIpragmaBlocks-                _lhsItextBlocks ->-                  (let _lhsOpps :: PP_Docs-                       _lhsOimports :: ([String])-                       _lhsOappendCommon :: ([[PP_Doc]])-                       _lhsOappendMain :: ([[PP_Doc]])-                       _lhsOgenSems :: (IO ())-                       _commentOisDeclOfLet :: Bool-                       _commentOnested :: Bool-                       _commentOoptions :: Options-                       _commentOoutputfile :: String-                       _infoOisDeclOfLet :: Bool-                       _infoOnested :: Bool-                       _infoOoptions :: Options-                       _infoOoutputfile :: String-                       _dataDefOisDeclOfLet :: Bool-                       _dataDefOnested :: Bool-                       _dataDefOoptions :: Options-                       _dataDefOoutputfile :: String-                       _cataFunOisDeclOfLet :: Bool-                       _cataFunOnested :: Bool-                       _cataFunOoptions :: Options-                       _cataFunOoutputfile :: String-                       _semDomOisDeclOfLet :: Bool-                       _semDomOnested :: Bool-                       _semDomOoptions :: Options-                       _semDomOoutputfile :: String-                       _semWrapperOisDeclOfLet :: Bool-                       _semWrapperOnested :: Bool-                       _semWrapperOoptions :: Options-                       _semWrapperOoutputfile :: String-                       _semFunctionsOisDeclOfLet :: Bool-                       _semFunctionsOnested :: Bool-                       _semFunctionsOoptions :: Options-                       _semFunctionsOoutputfile :: String-                       _commentIpp :: PP_Doc-                       _infoIpps :: PP_Docs-                       _dataDefIpps :: PP_Docs-                       _cataFunIpps :: PP_Docs-                       _semDomIpps :: PP_Docs-                       _semWrapperIpps :: PP_Docs-                       _semFunctionsIpps :: PP_Docs-                       -- "PrintCode.ag"(line 37, column 7)-                       _outputfile =-                           if sepSemMods _lhsIoptions-                           then _lhsImainFile ++ "_" ++ name_ ++ ".hs"-                           else _lhsImainFile ++ ".hs"-                       -- "PrintCode.ag"(line 83, column 16)-                       _lhsOpps =-                           _commentIpp-                           :  _infoIpps-                           ++ _dataDefIpps-                           ++ _cataFunIpps-                           ++ _semDomIpps-                           ++ _semWrapperIpps-                           ++ _semFunctionsIpps-                       -- "PrintCode.ag"(line 383, column 7)-                       _lhsOimports =-                           ["import " ++ _lhsImainName ++ "_" ++ name_ ++ "\n"]-                       -- "PrintCode.ag"(line 389, column 7)-                       _lhsOappendCommon =-                           [ [_commentIpp]-                           , _dataDefIpps-                           , _semDomIpps-                           ]-                       -- "PrintCode.ag"(line 394, column 7)-                       _lhsOappendMain =-                           [ [_commentIpp]-                           , _cataFunIpps-                           , _semWrapperIpps-                           ]-                       -- "PrintCode.ag"(line 404, column 7)-                       _lhsOgenSems =-                           writeModule _outputfile-                             [ pp $ _lhsIpragmaBlocks-                             , pp $ _lhsIoptionsLine-                             , pp $ _lhsImoduleHeader _lhsImainName ("_" ++ name_) _exports     True-                             , pp $ ("import " ++ _lhsImainName ++ "_common\n")-                             , _commentIpp-                             , vlist_sep "" _infoIpps-                             , vlist_sep "" _semFunctionsIpps-                             ]-                       -- "PrintCode.ag"(line 417, column 7)-                       _exports =-                           concat $ intersperse "," semNames_-                       -- copy rule (down)-                       _commentOisDeclOfLet =-                           _lhsIisDeclOfLet-                       -- copy rule (down)-                       _commentOnested =-                           _lhsInested-                       -- copy rule (down)-                       _commentOoptions =-                           _lhsIoptions-                       -- copy rule (from local)-                       _commentOoutputfile =-                           _outputfile-                       -- copy rule (down)-                       _infoOisDeclOfLet =-                           _lhsIisDeclOfLet-                       -- copy rule (down)-                       _infoOnested =-                           _lhsInested-                       -- copy rule (down)-                       _infoOoptions =-                           _lhsIoptions-                       -- copy rule (from local)-                       _infoOoutputfile =-                           _outputfile-                       -- copy rule (down)-                       _dataDefOisDeclOfLet =-                           _lhsIisDeclOfLet-                       -- copy rule (down)-                       _dataDefOnested =-                           _lhsInested-                       -- copy rule (down)-                       _dataDefOoptions =-                           _lhsIoptions-                       -- copy rule (from local)-                       _dataDefOoutputfile =-                           _outputfile-                       -- copy rule (down)-                       _cataFunOisDeclOfLet =-                           _lhsIisDeclOfLet-                       -- copy rule (down)-                       _cataFunOnested =-                           _lhsInested-                       -- copy rule (down)-                       _cataFunOoptions =-                           _lhsIoptions-                       -- copy rule (from local)-                       _cataFunOoutputfile =-                           _outputfile-                       -- copy rule (down)-                       _semDomOisDeclOfLet =-                           _lhsIisDeclOfLet-                       -- copy rule (down)-                       _semDomOnested =-                           _lhsInested-                       -- copy rule (down)-                       _semDomOoptions =-                           _lhsIoptions-                       -- copy rule (from local)-                       _semDomOoutputfile =-                           _outputfile-                       -- copy rule (down)-                       _semWrapperOisDeclOfLet =-                           _lhsIisDeclOfLet-                       -- copy rule (down)-                       _semWrapperOnested =-                           _lhsInested-                       -- copy rule (down)-                       _semWrapperOoptions =-                           _lhsIoptions-                       -- copy rule (from local)-                       _semWrapperOoutputfile =-                           _outputfile-                       -- copy rule (down)-                       _semFunctionsOisDeclOfLet =-                           _lhsIisDeclOfLet-                       -- copy rule (down)-                       _semFunctionsOnested =-                           _lhsInested-                       -- copy rule (down)-                       _semFunctionsOoptions =-                           _lhsIoptions-                       -- copy rule (from local)-                       _semFunctionsOoutputfile =-                           _outputfile-                       ( _commentIpp) =-                           (comment_ _commentOisDeclOfLet _commentOnested _commentOoptions _commentOoutputfile)-                       ( _infoIpps) =-                           (info_ _infoOisDeclOfLet _infoOnested _infoOoptions _infoOoutputfile)-                       ( _dataDefIpps) =-                           (dataDef_ _dataDefOisDeclOfLet _dataDefOnested _dataDefOoptions _dataDefOoutputfile)-                       ( _cataFunIpps) =-                           (cataFun_ _cataFunOisDeclOfLet _cataFunOnested _cataFunOoptions _cataFunOoutputfile)-                       ( _semDomIpps) =-                           (semDom_ _semDomOisDeclOfLet _semDomOnested _semDomOoptions _semDomOoutputfile)-                       ( _semWrapperIpps) =-                           (semWrapper_ _semWrapperOisDeclOfLet _semWrapperOnested _semWrapperOoptions _semWrapperOoutputfile)-                       ( _semFunctionsIpps) =-                           (semFunctions_ _semFunctionsOisDeclOfLet _semFunctionsOnested _semFunctionsOoptions _semFunctionsOoutputfile)-                   in  ( _lhsOappendCommon,_lhsOappendMain,_lhsOgenSems,_lhsOimports,_lhsOpps))))--- Chunks -------------------------------------------------------{--   visit 0:-      inherited attributes:-         importBlocks         : PP_Doc-         isDeclOfLet          : Bool-         mainFile             : String-         mainName             : String-         moduleHeader         : String -> String -> String -> Bool -> String-         nested               : Bool-         options              : Options-         optionsLine          : String-         pragmaBlocks         : String-         textBlocks           : PP_Doc-      synthesized attributes:-         appendCommon         : [[PP_Doc]]-         appendMain           : [[PP_Doc]]-         genSems              : IO ()-         imports              : [String]-         pps                  : PP_Docs-   alternatives:-      alternative Cons:-         child hd             : Chunk-         child tl             : Chunks-      alternative Nil:--}--- cata-sem_Chunks :: Chunks ->-              T_Chunks-sem_Chunks list =-    (Prelude.foldr sem_Chunks_Cons sem_Chunks_Nil (Prelude.map sem_Chunk list))--- semantic domain-newtype T_Chunks = T_Chunks (PP_Doc ->-                             Bool ->-                             String ->-                             String ->-                             (String -> String -> String -> Bool -> String) ->-                             Bool ->-                             Options ->-                             String ->-                             String ->-                             PP_Doc ->-                             ( ([[PP_Doc]]),([[PP_Doc]]),(IO ()),([String]),PP_Docs))-data Inh_Chunks = Inh_Chunks {importBlocks_Inh_Chunks :: PP_Doc,isDeclOfLet_Inh_Chunks :: Bool,mainFile_Inh_Chunks :: String,mainName_Inh_Chunks :: String,moduleHeader_Inh_Chunks :: String -> String -> String -> Bool -> String,nested_Inh_Chunks :: Bool,options_Inh_Chunks :: Options,optionsLine_Inh_Chunks :: String,pragmaBlocks_Inh_Chunks :: String,textBlocks_Inh_Chunks :: PP_Doc}-data Syn_Chunks = Syn_Chunks {appendCommon_Syn_Chunks :: [[PP_Doc]],appendMain_Syn_Chunks :: [[PP_Doc]],genSems_Syn_Chunks :: IO (),imports_Syn_Chunks :: [String],pps_Syn_Chunks :: PP_Docs}-wrap_Chunks (T_Chunks sem) (Inh_Chunks _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlocks) =-    (let ( _lhsOappendCommon,_lhsOappendMain,_lhsOgenSems,_lhsOimports,_lhsOpps) =-             (sem _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlocks)-     in  (Syn_Chunks _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps))-sem_Chunks_Cons :: T_Chunk ->-                   T_Chunks ->-                   T_Chunks-sem_Chunks_Cons (T_Chunk hd_) (T_Chunks tl_) =-    (T_Chunks (\ _lhsIimportBlocks-                 _lhsIisDeclOfLet-                 _lhsImainFile-                 _lhsImainName-                 _lhsImoduleHeader-                 _lhsInested-                 _lhsIoptions-                 _lhsIoptionsLine-                 _lhsIpragmaBlocks-                 _lhsItextBlocks ->-                   (let _lhsOpps :: PP_Docs-                        _lhsOappendCommon :: ([[PP_Doc]])-                        _lhsOappendMain :: ([[PP_Doc]])-                        _lhsOgenSems :: (IO ())-                        _lhsOimports :: ([String])-                        _hdOimportBlocks :: PP_Doc-                        _hdOisDeclOfLet :: Bool-                        _hdOmainFile :: String-                        _hdOmainName :: String-                        _hdOmoduleHeader :: (String -> String -> String -> Bool -> String)-                        _hdOnested :: Bool-                        _hdOoptions :: Options-                        _hdOoptionsLine :: String-                        _hdOpragmaBlocks :: String-                        _hdOtextBlocks :: PP_Doc-                        _tlOimportBlocks :: PP_Doc-                        _tlOisDeclOfLet :: Bool-                        _tlOmainFile :: String-                        _tlOmainName :: String-                        _tlOmoduleHeader :: (String -> String -> String -> Bool -> String)-                        _tlOnested :: Bool-                        _tlOoptions :: Options-                        _tlOoptionsLine :: String-                        _tlOpragmaBlocks :: String-                        _tlOtextBlocks :: PP_Doc-                        _hdIappendCommon :: ([[PP_Doc]])-                        _hdIappendMain :: ([[PP_Doc]])-                        _hdIgenSems :: (IO ())-                        _hdIimports :: ([String])-                        _hdIpps :: PP_Docs-                        _tlIappendCommon :: ([[PP_Doc]])-                        _tlIappendMain :: ([[PP_Doc]])-                        _tlIgenSems :: (IO ())-                        _tlIimports :: ([String])-                        _tlIpps :: PP_Docs-                        -- "PrintCode.ag"(line 75, column 10)-                        _lhsOpps =-                            _hdIpps ++ _tlIpps-                        -- use rule "PrintCode.ag"(line 385, column 50)-                        _lhsOappendCommon =-                            _hdIappendCommon ++ _tlIappendCommon-                        -- use rule "PrintCode.ag"(line 385, column 50)-                        _lhsOappendMain =-                            _hdIappendMain ++ _tlIappendMain-                        -- use rule "PrintCode.ag"(line 400, column 33)-                        _lhsOgenSems =-                            _hdIgenSems >> _tlIgenSems-                        -- use rule "PrintCode.ag"(line 380, column 33)-                        _lhsOimports =-                            _hdIimports ++ _tlIimports-                        -- copy rule (down)-                        _hdOimportBlocks =-                            _lhsIimportBlocks-                        -- copy rule (down)-                        _hdOisDeclOfLet =-                            _lhsIisDeclOfLet-                        -- copy rule (down)-                        _hdOmainFile =-                            _lhsImainFile-                        -- copy rule (down)-                        _hdOmainName =-                            _lhsImainName-                        -- copy rule (down)-                        _hdOmoduleHeader =-                            _lhsImoduleHeader-                        -- copy rule (down)-                        _hdOnested =-                            _lhsInested-                        -- copy rule (down)-                        _hdOoptions =-                            _lhsIoptions-                        -- copy rule (down)-                        _hdOoptionsLine =-                            _lhsIoptionsLine-                        -- copy rule (down)-                        _hdOpragmaBlocks =-                            _lhsIpragmaBlocks-                        -- copy rule (down)-                        _hdOtextBlocks =-                            _lhsItextBlocks-                        -- copy rule (down)-                        _tlOimportBlocks =-                            _lhsIimportBlocks-                        -- copy rule (down)-                        _tlOisDeclOfLet =-                            _lhsIisDeclOfLet-                        -- copy rule (down)-                        _tlOmainFile =-                            _lhsImainFile-                        -- copy rule (down)-                        _tlOmainName =-                            _lhsImainName-                        -- copy rule (down)-                        _tlOmoduleHeader =-                            _lhsImoduleHeader-                        -- copy rule (down)-                        _tlOnested =-                            _lhsInested-                        -- copy rule (down)-                        _tlOoptions =-                            _lhsIoptions-                        -- copy rule (down)-                        _tlOoptionsLine =-                            _lhsIoptionsLine-                        -- copy rule (down)-                        _tlOpragmaBlocks =-                            _lhsIpragmaBlocks-                        -- copy rule (down)-                        _tlOtextBlocks =-                            _lhsItextBlocks-                        ( _hdIappendCommon,_hdIappendMain,_hdIgenSems,_hdIimports,_hdIpps) =-                            (hd_ _hdOimportBlocks _hdOisDeclOfLet _hdOmainFile _hdOmainName _hdOmoduleHeader _hdOnested _hdOoptions _hdOoptionsLine _hdOpragmaBlocks _hdOtextBlocks)-                        ( _tlIappendCommon,_tlIappendMain,_tlIgenSems,_tlIimports,_tlIpps) =-                            (tl_ _tlOimportBlocks _tlOisDeclOfLet _tlOmainFile _tlOmainName _tlOmoduleHeader _tlOnested _tlOoptions _tlOoptionsLine _tlOpragmaBlocks _tlOtextBlocks)-                    in  ( _lhsOappendCommon,_lhsOappendMain,_lhsOgenSems,_lhsOimports,_lhsOpps))))-sem_Chunks_Nil :: T_Chunks-sem_Chunks_Nil  =-    (T_Chunks (\ _lhsIimportBlocks-                 _lhsIisDeclOfLet-                 _lhsImainFile-                 _lhsImainName-                 _lhsImoduleHeader-                 _lhsInested-                 _lhsIoptions-                 _lhsIoptionsLine-                 _lhsIpragmaBlocks-                 _lhsItextBlocks ->-                   (let _lhsOpps :: PP_Docs-                        _lhsOappendCommon :: ([[PP_Doc]])-                        _lhsOappendMain :: ([[PP_Doc]])-                        _lhsOgenSems :: (IO ())-                        _lhsOimports :: ([String])-                        -- "PrintCode.ag"(line 76, column 10)-                        _lhsOpps =-                            []-                        -- use rule "PrintCode.ag"(line 385, column 50)-                        _lhsOappendCommon =-                            []-                        -- use rule "PrintCode.ag"(line 385, column 50)-                        _lhsOappendMain =-                            []-                        -- use rule "PrintCode.ag"(line 400, column 33)-                        _lhsOgenSems =-                            return ()-                        -- use rule "PrintCode.ag"(line 380, column 33)-                        _lhsOimports =-                            []-                    in  ( _lhsOappendCommon,_lhsOappendMain,_lhsOgenSems,_lhsOimports,_lhsOpps))))--- DataAlt ------------------------------------------------------{--   visit 0:-      inherited attributes:-         nested               : Bool-         strictPre            : PP_Doc-      synthesized attribute:-         pp                   : PP_Doc-   alternatives:-      alternative DataAlt:-         child name           : {String}-         child args           : {[String]}-      alternative Record:-         child name           : {String}-         child args           : {[(String,String)]}--}--- cata-sem_DataAlt :: DataAlt ->-               T_DataAlt-sem_DataAlt (DataAlt _name _args) =-    (sem_DataAlt_DataAlt _name _args)-sem_DataAlt (Record _name _args) =-    (sem_DataAlt_Record _name _args)--- semantic domain-newtype T_DataAlt = T_DataAlt (Bool ->-                               PP_Doc ->-                               ( PP_Doc))-data Inh_DataAlt = Inh_DataAlt {nested_Inh_DataAlt :: Bool,strictPre_Inh_DataAlt :: PP_Doc}-data Syn_DataAlt = Syn_DataAlt {pp_Syn_DataAlt :: PP_Doc}-wrap_DataAlt (T_DataAlt sem) (Inh_DataAlt _lhsInested _lhsIstrictPre) =-    (let ( _lhsOpp) =-             (sem _lhsInested _lhsIstrictPre)-     in  (Syn_DataAlt _lhsOpp))-sem_DataAlt_DataAlt :: String ->-                       ([String]) ->-                       T_DataAlt-sem_DataAlt_DataAlt name_ args_ =-    (T_DataAlt (\ _lhsInested-                  _lhsIstrictPre ->-                    (let _lhsOpp :: PP_Doc-                         -- "PrintCode.ag"(line 153, column 16)-                         _lhsOpp =-                             name_ >#< hv_sp (map ((_lhsIstrictPre >|<) . pp_parens . text) args_)-                     in  ( _lhsOpp))))-sem_DataAlt_Record :: String ->-                      ([(String,String)]) ->-                      T_DataAlt-sem_DataAlt_Record name_ args_ =-    (T_DataAlt (\ _lhsInested-                  _lhsIstrictPre ->-                    (let _lhsOpp :: PP_Doc-                         -- "PrintCode.ag"(line 154, column 16)-                         _lhsOpp =-                             name_ >#< pp_block "{" "}" ","-                                                [ f >#< "::" >#< t | (f,t) <- args_ ]-                     in  ( _lhsOpp))))--- DataAlts -----------------------------------------------------{--   visit 0:-      inherited attributes:-         nested               : Bool-         strictPre            : PP_Doc-      synthesized attribute:-         pps                  : PP_Docs-   alternatives:-      alternative Cons:-         child hd             : DataAlt-         child tl             : DataAlts-      alternative Nil:--}--- cata-sem_DataAlts :: DataAlts ->-                T_DataAlts-sem_DataAlts list =-    (Prelude.foldr sem_DataAlts_Cons sem_DataAlts_Nil (Prelude.map sem_DataAlt list))--- semantic domain-newtype T_DataAlts = T_DataAlts (Bool ->-                                 PP_Doc ->-                                 ( PP_Docs))-data Inh_DataAlts = Inh_DataAlts {nested_Inh_DataAlts :: Bool,strictPre_Inh_DataAlts :: PP_Doc}-data Syn_DataAlts = Syn_DataAlts {pps_Syn_DataAlts :: PP_Docs}-wrap_DataAlts (T_DataAlts sem) (Inh_DataAlts _lhsInested _lhsIstrictPre) =-    (let ( _lhsOpps) =-             (sem _lhsInested _lhsIstrictPre)-     in  (Syn_DataAlts _lhsOpps))-sem_DataAlts_Cons :: T_DataAlt ->-                     T_DataAlts ->-                     T_DataAlts-sem_DataAlts_Cons (T_DataAlt hd_) (T_DataAlts tl_) =-    (T_DataAlts (\ _lhsInested-                   _lhsIstrictPre ->-                     (let _lhsOpps :: PP_Docs-                          _hdOnested :: Bool-                          _hdOstrictPre :: PP_Doc-                          _tlOnested :: Bool-                          _tlOstrictPre :: PP_Doc-                          _hdIpp :: PP_Doc-                          _tlIpps :: PP_Docs-                          -- "PrintCode.ag"(line 63, column 10)-                          _lhsOpps =-                              _hdIpp : _tlIpps-                          -- copy rule (down)-                          _hdOnested =-                              _lhsInested-                          -- copy rule (down)-                          _hdOstrictPre =-                              _lhsIstrictPre-                          -- copy rule (down)-                          _tlOnested =-                              _lhsInested-                          -- copy rule (down)-                          _tlOstrictPre =-                              _lhsIstrictPre-                          ( _hdIpp) =-                              (hd_ _hdOnested _hdOstrictPre)-                          ( _tlIpps) =-                              (tl_ _tlOnested _tlOstrictPre)-                      in  ( _lhsOpps))))-sem_DataAlts_Nil :: T_DataAlts-sem_DataAlts_Nil  =-    (T_DataAlts (\ _lhsInested-                   _lhsIstrictPre ->-                     (let _lhsOpps :: PP_Docs-                          -- "PrintCode.ag"(line 64, column 10)-                          _lhsOpps =-                              []-                      in  ( _lhsOpps))))--- Decl ---------------------------------------------------------{--   visit 0:-      inherited attributes:-         isDeclOfLet          : Bool-         nested               : Bool-         options              : Options-         outputfile           : String-      synthesized attribute:-         pp                   : PP_Doc-   alternatives:-      alternative Comment:-         child txt            : {String}-      alternative Data:-         child name           : {String}-         child params         : {[String]}-         child alts           : DataAlts-         child strict         : {Bool}-         child derivings      : {[String]}-      alternative Decl:-         child left           : Lhs-         child rhs            : Expr-         child binds          : {Set String}-         child uses           : {Set String}-      alternative NewType:-         child name           : {String}-         child params         : {[String]}-         child con            : {String}-         child tp             : Type-      alternative PragmaDecl:-         child txt            : {String}-      alternative TSig:-         child name           : {String}-         child tp             : Type-      alternative Type:-         child name           : {String}-         child params         : {[String]}-         child tp             : Type--}--- cata-sem_Decl :: Decl ->-            T_Decl-sem_Decl (Comment _txt) =-    (sem_Decl_Comment _txt)-sem_Decl (Data _name _params _alts _strict _derivings) =-    (sem_Decl_Data _name _params (sem_DataAlts _alts) _strict _derivings)-sem_Decl (Decl _left _rhs _binds _uses) =-    (sem_Decl_Decl (sem_Lhs _left) (sem_Expr _rhs) _binds _uses)-sem_Decl (NewType _name _params _con _tp) =-    (sem_Decl_NewType _name _params _con (sem_Type _tp))-sem_Decl (PragmaDecl _txt) =-    (sem_Decl_PragmaDecl _txt)-sem_Decl (TSig _name _tp) =-    (sem_Decl_TSig _name (sem_Type _tp))-sem_Decl (Type _name _params _tp) =-    (sem_Decl_Type _name _params (sem_Type _tp))--- semantic domain-newtype T_Decl = T_Decl (Bool ->-                         Bool ->-                         Options ->-                         String ->-                         ( PP_Doc))-data Inh_Decl = Inh_Decl {isDeclOfLet_Inh_Decl :: Bool,nested_Inh_Decl :: Bool,options_Inh_Decl :: Options,outputfile_Inh_Decl :: String}-data Syn_Decl = Syn_Decl {pp_Syn_Decl :: PP_Doc}-wrap_Decl (T_Decl sem) (Inh_Decl _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile) =-    (let ( _lhsOpp) =-             (sem _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile)-     in  (Syn_Decl _lhsOpp))-sem_Decl_Comment :: String ->-                    T_Decl-sem_Decl_Comment txt_ =-    (T_Decl (\ _lhsIisDeclOfLet-               _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      -- "PrintCode.ag"(line 106, column 16)-                      _lhsOpp =-                          if '\n' `elem` txt_-                            then "{-" >-< vlist (lines txt_) >-< "-}"-                            else "--" >#< txt_-                  in  ( _lhsOpp))))-sem_Decl_Data :: String ->-                 ([String]) ->-                 T_DataAlts ->-                 Bool ->-                 ([String]) ->-                 T_Decl-sem_Decl_Data name_ params_ (T_DataAlts alts_) strict_ derivings_ =-    (T_Decl (\ _lhsIisDeclOfLet-               _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      _altsOstrictPre :: PP_Doc-                      _altsOnested :: Bool-                      _altsIpps :: PP_Docs-                      -- "PrintCode.ag"(line 94, column 16)-                      _lhsOpp =-                          "data" >#< hv_sp (name_ : params_)-                          >#<  ( case _altsIpps of-                                       [] -> empty-                                       (x:xs) ->              "=" >#<  x-                                              >-< vlist (map ("|" >#<) xs)-                                  >-< if null derivings_-                                         then empty-                                         else "deriving" >#< ppTuple False (map text derivings_)-                               )-                      -- "PrintCode.ag"(line 228, column 10)-                      _altsOstrictPre =-                          if strict_ then pp "!" else empty-                      -- copy rule (down)-                      _altsOnested =-                          _lhsInested-                      ( _altsIpps) =-                          (alts_ _altsOnested _altsOstrictPre)-                  in  ( _lhsOpp))))-sem_Decl_Decl :: T_Lhs ->-                 T_Expr ->-                 (Set String) ->-                 (Set String) ->-                 T_Decl-sem_Decl_Decl (T_Lhs left_) (T_Expr rhs_) binds_ uses_ =-    (T_Decl (\ _lhsIisDeclOfLet-               _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      _leftOisDeclOfLet :: Bool-                      _leftOnested :: Bool-                      _leftOoptions :: Options-                      _leftOoutputfile :: String-                      _rhsOnested :: Bool-                      _rhsOoptions :: Options-                      _rhsOoutputfile :: String-                      _leftIpp :: PP_Doc-                      _rhsIpp :: PP_Doc-                      -- "PrintCode.ag"(line 92, column 16)-                      _lhsOpp =-                          _leftIpp >#< "="-                          >-< indent 4 _rhsIpp-                      -- copy rule (down)-                      _leftOisDeclOfLet =-                          _lhsIisDeclOfLet-                      -- copy rule (down)-                      _leftOnested =-                          _lhsInested-                      -- copy rule (down)-                      _leftOoptions =-                          _lhsIoptions-                      -- copy rule (down)-                      _leftOoutputfile =-                          _lhsIoutputfile-                      -- copy rule (down)-                      _rhsOnested =-                          _lhsInested-                      -- copy rule (down)-                      _rhsOoptions =-                          _lhsIoptions-                      -- copy rule (down)-                      _rhsOoutputfile =-                          _lhsIoutputfile-                      ( _leftIpp) =-                          (left_ _leftOisDeclOfLet _leftOnested _leftOoptions _leftOoutputfile)-                      ( _rhsIpp) =-                          (rhs_ _rhsOnested _rhsOoptions _rhsOoutputfile)-                  in  ( _lhsOpp))))-sem_Decl_NewType :: String ->-                    ([String]) ->-                    String ->-                    T_Type ->-                    T_Decl-sem_Decl_NewType name_ params_ con_ (T_Type tp_) =-    (T_Decl (\ _lhsIisDeclOfLet-               _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      _tpOnested :: Bool-                      _tpIpp :: PP_Doc-                      _tpIprec :: Int-                      -- "PrintCode.ag"(line 103, column 16)-                      _lhsOpp =-                          "newtype" >#< hv_sp (name_ : params_) >#< "=" >#< con_ >#< pp_parens _tpIpp-                      -- copy rule (down)-                      _tpOnested =-                          _lhsInested-                      ( _tpIpp,_tpIprec) =-                          (tp_ _tpOnested)-                  in  ( _lhsOpp))))-sem_Decl_PragmaDecl :: String ->-                       T_Decl-sem_Decl_PragmaDecl txt_ =-    (T_Decl (\ _lhsIisDeclOfLet-               _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      -- "PrintCode.ag"(line 109, column 16)-                      _lhsOpp =-                          "{-#" >#< text txt_ >#< "#-}"-                  in  ( _lhsOpp))))-sem_Decl_TSig :: String ->-                 T_Type ->-                 T_Decl-sem_Decl_TSig name_ (T_Type tp_) =-    (T_Decl (\ _lhsIisDeclOfLet-               _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      _tpOnested :: Bool-                      _tpIpp :: PP_Doc-                      _tpIprec :: Int-                      -- "PrintCode.ag"(line 105, column 16)-                      _lhsOpp =-                          name_ >#< "::" >#< _tpIpp-                      -- copy rule (down)-                      _tpOnested =-                          _lhsInested-                      ( _tpIpp,_tpIprec) =-                          (tp_ _tpOnested)-                  in  ( _lhsOpp))))-sem_Decl_Type :: String ->-                 ([String]) ->-                 T_Type ->-                 T_Decl-sem_Decl_Type name_ params_ (T_Type tp_) =-    (T_Decl (\ _lhsIisDeclOfLet-               _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      _tpOnested :: Bool-                      _tpIpp :: PP_Doc-                      _tpIprec :: Int-                      -- "PrintCode.ag"(line 104, column 16)-                      _lhsOpp =-                          "type" >#< hv_sp (name_ : params_) >#< "=" >#<  _tpIpp-                      -- copy rule (down)-                      _tpOnested =-                          _lhsInested-                      ( _tpIpp,_tpIprec) =-                          (tp_ _tpOnested)-                  in  ( _lhsOpp))))--- Decls --------------------------------------------------------{--   visit 0:-      inherited attributes:-         isDeclOfLet          : Bool-         nested               : Bool-         options              : Options-         outputfile           : String-      synthesized attribute:-         pps                  : PP_Docs-   alternatives:-      alternative Cons:-         child hd             : Decl-         child tl             : Decls-      alternative Nil:--}--- cata-sem_Decls :: Decls ->-             T_Decls-sem_Decls list =-    (Prelude.foldr sem_Decls_Cons sem_Decls_Nil (Prelude.map sem_Decl list))--- semantic domain-newtype T_Decls = T_Decls (Bool ->-                           Bool ->-                           Options ->-                           String ->-                           ( PP_Docs))-data Inh_Decls = Inh_Decls {isDeclOfLet_Inh_Decls :: Bool,nested_Inh_Decls :: Bool,options_Inh_Decls :: Options,outputfile_Inh_Decls :: String}-data Syn_Decls = Syn_Decls {pps_Syn_Decls :: PP_Docs}-wrap_Decls (T_Decls sem) (Inh_Decls _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile) =-    (let ( _lhsOpps) =-             (sem _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile)-     in  (Syn_Decls _lhsOpps))-sem_Decls_Cons :: T_Decl ->-                  T_Decls ->-                  T_Decls-sem_Decls_Cons (T_Decl hd_) (T_Decls tl_) =-    (T_Decls (\ _lhsIisDeclOfLet-                _lhsInested-                _lhsIoptions-                _lhsIoutputfile ->-                  (let _lhsOpps :: PP_Docs-                       _hdOisDeclOfLet :: Bool-                       _hdOnested :: Bool-                       _hdOoptions :: Options-                       _hdOoutputfile :: String-                       _tlOisDeclOfLet :: Bool-                       _tlOnested :: Bool-                       _tlOoptions :: Options-                       _tlOoutputfile :: String-                       _hdIpp :: PP_Doc-                       _tlIpps :: PP_Docs-                       -- "PrintCode.ag"(line 71, column 10)-                       _lhsOpps =-                           _hdIpp : _tlIpps-                       -- copy rule (down)-                       _hdOisDeclOfLet =-                           _lhsIisDeclOfLet-                       -- copy rule (down)-                       _hdOnested =-                           _lhsInested-                       -- copy rule (down)-                       _hdOoptions =-                           _lhsIoptions-                       -- copy rule (down)-                       _hdOoutputfile =-                           _lhsIoutputfile-                       -- copy rule (down)-                       _tlOisDeclOfLet =-                           _lhsIisDeclOfLet-                       -- copy rule (down)-                       _tlOnested =-                           _lhsInested-                       -- copy rule (down)-                       _tlOoptions =-                           _lhsIoptions-                       -- copy rule (down)-                       _tlOoutputfile =-                           _lhsIoutputfile-                       ( _hdIpp) =-                           (hd_ _hdOisDeclOfLet _hdOnested _hdOoptions _hdOoutputfile)-                       ( _tlIpps) =-                           (tl_ _tlOisDeclOfLet _tlOnested _tlOoptions _tlOoutputfile)-                   in  ( _lhsOpps))))-sem_Decls_Nil :: T_Decls-sem_Decls_Nil  =-    (T_Decls (\ _lhsIisDeclOfLet-                _lhsInested-                _lhsIoptions-                _lhsIoutputfile ->-                  (let _lhsOpps :: PP_Docs-                       -- "PrintCode.ag"(line 72, column 10)-                       _lhsOpps =-                           []-                   in  ( _lhsOpps))))--- Expr ---------------------------------------------------------{--   visit 0:-      inherited attributes:-         nested               : Bool-         options              : Options-         outputfile           : String-      synthesized attribute:-         pp                   : PP_Doc-   alternatives:-      alternative App:-         child name           : {String}-         child args           : Exprs-      alternative Case:-         child expr           : Expr-         child alts           : CaseAlts-      alternative Lambda:-         child args           : Exprs-         child body           : Expr-         visit 0:-            local strictParams : _-            local addBang     : _-      alternative Let:-         child decls          : Decls-         child body           : Expr-      alternative LineExpr:-         child expr           : Expr-      alternative PragmaExpr:-         child onLeftSide     : {Bool}-         child onNewLine      : {Bool}-         child txt            : {String}-         child expr           : Expr-      alternative SimpleExpr:-         child txt            : {String}-      alternative TextExpr:-         child lns            : {[String]}-      alternative Trace:-         child txt            : {String}-         child expr           : Expr-      alternative TupleExpr:-         child exprs          : Exprs-      alternative TypedExpr:-         child expr           : Expr-         child tp             : Type-      alternative UnboxedTupleExpr:-         child exprs          : Exprs--}--- cata-sem_Expr :: Expr ->-            T_Expr-sem_Expr (App _name _args) =-    (sem_Expr_App _name (sem_Exprs _args))-sem_Expr (Case _expr _alts) =-    (sem_Expr_Case (sem_Expr _expr) (sem_CaseAlts _alts))-sem_Expr (Lambda _args _body) =-    (sem_Expr_Lambda (sem_Exprs _args) (sem_Expr _body))-sem_Expr (Let _decls _body) =-    (sem_Expr_Let (sem_Decls _decls) (sem_Expr _body))-sem_Expr (LineExpr _expr) =-    (sem_Expr_LineExpr (sem_Expr _expr))-sem_Expr (PragmaExpr _onLeftSide _onNewLine _txt _expr) =-    (sem_Expr_PragmaExpr _onLeftSide _onNewLine _txt (sem_Expr _expr))-sem_Expr (SimpleExpr _txt) =-    (sem_Expr_SimpleExpr _txt)-sem_Expr (TextExpr _lns) =-    (sem_Expr_TextExpr _lns)-sem_Expr (Trace _txt _expr) =-    (sem_Expr_Trace _txt (sem_Expr _expr))-sem_Expr (TupleExpr _exprs) =-    (sem_Expr_TupleExpr (sem_Exprs _exprs))-sem_Expr (TypedExpr _expr _tp) =-    (sem_Expr_TypedExpr (sem_Expr _expr) (sem_Type _tp))-sem_Expr (UnboxedTupleExpr _exprs) =-    (sem_Expr_UnboxedTupleExpr (sem_Exprs _exprs))--- semantic domain-newtype T_Expr = T_Expr (Bool ->-                         Options ->-                         String ->-                         ( PP_Doc))-data Inh_Expr = Inh_Expr {nested_Inh_Expr :: Bool,options_Inh_Expr :: Options,outputfile_Inh_Expr :: String}-data Syn_Expr = Syn_Expr {pp_Syn_Expr :: PP_Doc}-wrap_Expr (T_Expr sem) (Inh_Expr _lhsInested _lhsIoptions _lhsIoutputfile) =-    (let ( _lhsOpp) =-             (sem _lhsInested _lhsIoptions _lhsIoutputfile)-     in  (Syn_Expr _lhsOpp))-sem_Expr_App :: String ->-                T_Exprs ->-                T_Expr-sem_Expr_App name_ (T_Exprs args_) =-    (T_Expr (\ _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      _argsOnested :: Bool-                      _argsOoptions :: Options-                      _argsOoutputfile :: String-                      _argsIpps :: PP_Docs-                      -- "PrintCode.ag"(line 129, column 16)-                      _lhsOpp =-                          pp_parens $ name_ >#< hv_sp _argsIpps-                      -- copy rule (down)-                      _argsOnested =-                          _lhsInested-                      -- copy rule (down)-                      _argsOoptions =-                          _lhsIoptions-                      -- copy rule (down)-                      _argsOoutputfile =-                          _lhsIoutputfile-                      ( _argsIpps) =-                          (args_ _argsOnested _argsOoptions _argsOoutputfile)-                  in  ( _lhsOpp))))-sem_Expr_Case :: T_Expr ->-                 T_CaseAlts ->-                 T_Expr-sem_Expr_Case (T_Expr expr_) (T_CaseAlts alts_) =-    (T_Expr (\ _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      _exprOnested :: Bool-                      _exprOoptions :: Options-                      _exprOoutputfile :: String-                      _altsOnested :: Bool-                      _altsOoptions :: Options-                      _altsOoutputfile :: String-                      _exprIpp :: PP_Doc-                      _altsIpps :: PP_Docs-                      -- "PrintCode.ag"(line 115, column 16)-                      _lhsOpp =-                          pp_parens (    "case" >#< pp_parens _exprIpp >#< "of"-                                    >-< (vlist _altsIpps)-                                    )-                      -- copy rule (down)-                      _exprOnested =-                          _lhsInested-                      -- copy rule (down)-                      _exprOoptions =-                          _lhsIoptions-                      -- copy rule (down)-                      _exprOoutputfile =-                          _lhsIoutputfile-                      -- copy rule (down)-                      _altsOnested =-                          _lhsInested-                      -- copy rule (down)-                      _altsOoptions =-                          _lhsIoptions-                      -- copy rule (down)-                      _altsOoutputfile =-                          _lhsIoutputfile-                      ( _exprIpp) =-                          (expr_ _exprOnested _exprOoptions _exprOoutputfile)-                      ( _altsIpps) =-                          (alts_ _altsOnested _altsOoptions _altsOoutputfile)-                  in  ( _lhsOpp))))-sem_Expr_Lambda :: T_Exprs ->-                   T_Expr ->-                   T_Expr-sem_Expr_Lambda (T_Exprs args_) (T_Expr body_) =-    (T_Expr (\ _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      _argsOnested :: Bool-                      _argsOoptions :: Options-                      _argsOoutputfile :: String-                      _bodyOnested :: Bool-                      _bodyOoptions :: Options-                      _bodyOoutputfile :: String-                      _argsIpps :: PP_Docs-                      _bodyIpp :: PP_Doc-                      -- "PrintCode.ag"(line 118, column 16)-                      _strictParams =-                          if strictSems _lhsIoptions-                          then _argsIpps-                          else []-                      -- "PrintCode.ag"(line 121, column 16)-                      _addBang =-                          if bangpats _lhsIoptions-                          then \p -> pp_parens ("!" >|< p)-                          else id-                      -- "PrintCode.ag"(line 124, column 16)-                      _lhsOpp =-                          pp_parens (    "\\" >#< (vlist (map _addBang     _argsIpps)) >#< "->"-                                    >-< indent 4 (_strictParams     `ppMultiSeqV` _bodyIpp)-                                    )-                      -- copy rule (down)-                      _argsOnested =-                          _lhsInested-                      -- copy rule (down)-                      _argsOoptions =-                          _lhsIoptions-                      -- copy rule (down)-                      _argsOoutputfile =-                          _lhsIoutputfile-                      -- copy rule (down)-                      _bodyOnested =-                          _lhsInested-                      -- copy rule (down)-                      _bodyOoptions =-                          _lhsIoptions-                      -- copy rule (down)-                      _bodyOoutputfile =-                          _lhsIoutputfile-                      ( _argsIpps) =-                          (args_ _argsOnested _argsOoptions _argsOoutputfile)-                      ( _bodyIpp) =-                          (body_ _bodyOnested _bodyOoptions _bodyOoutputfile)-                  in  ( _lhsOpp))))-sem_Expr_Let :: T_Decls ->-                T_Expr ->-                T_Expr-sem_Expr_Let (T_Decls decls_) (T_Expr body_) =-    (T_Expr (\ _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      _declsOisDeclOfLet :: Bool-                      _declsOnested :: Bool-                      _declsOoptions :: Options-                      _declsOoutputfile :: String-                      _bodyOnested :: Bool-                      _bodyOoptions :: Options-                      _bodyOoutputfile :: String-                      _declsIpps :: PP_Docs-                      _bodyIpp :: PP_Doc-                      -- "PrintCode.ag"(line 112, column 16)-                      _lhsOpp =-                          pp_parens (    "let" >#< (vlist _declsIpps)-                                    >-< "in " >#< _bodyIpp-                                    )-                      -- "PrintCode.ag"(line 322, column 7)-                      _declsOisDeclOfLet =-                          True-                      -- copy rule (down)-                      _declsOnested =-                          _lhsInested-                      -- copy rule (down)-                      _declsOoptions =-                          _lhsIoptions-                      -- copy rule (down)-                      _declsOoutputfile =-                          _lhsIoutputfile-                      -- copy rule (down)-                      _bodyOnested =-                          _lhsInested-                      -- copy rule (down)-                      _bodyOoptions =-                          _lhsIoptions-                      -- copy rule (down)-                      _bodyOoutputfile =-                          _lhsIoutputfile-                      ( _declsIpps) =-                          (decls_ _declsOisDeclOfLet _declsOnested _declsOoptions _declsOoutputfile)-                      ( _bodyIpp) =-                          (body_ _bodyOnested _bodyOoptions _bodyOoutputfile)-                  in  ( _lhsOpp))))-sem_Expr_LineExpr :: T_Expr ->-                     T_Expr-sem_Expr_LineExpr (T_Expr expr_) =-    (T_Expr (\ _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      _exprOnested :: Bool-                      _exprOoptions :: Options-                      _exprOoutputfile :: String-                      _exprIpp :: PP_Doc-                      -- "PrintCode.ag"(line 146, column 16)-                      _lhsOpp =-                          _exprIpp >-< "{-# LINE" >#< ppWithLineNr (\n -> pp $ show $ n + 1) >#< show _lhsIoutputfile >#< "#-}"-                      -- copy rule (down)-                      _exprOnested =-                          _lhsInested-                      -- copy rule (down)-                      _exprOoptions =-                          _lhsIoptions-                      -- copy rule (down)-                      _exprOoutputfile =-                          _lhsIoutputfile-                      ( _exprIpp) =-                          (expr_ _exprOnested _exprOoptions _exprOoutputfile)-                  in  ( _lhsOpp))))-sem_Expr_PragmaExpr :: Bool ->-                       Bool ->-                       String ->-                       T_Expr ->-                       T_Expr-sem_Expr_PragmaExpr onLeftSide_ onNewLine_ txt_ (T_Expr expr_) =-    (T_Expr (\ _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      _exprOnested :: Bool-                      _exprOoptions :: Options-                      _exprOoutputfile :: String-                      _exprIpp :: PP_Doc-                      -- "PrintCode.ag"(line 135, column 16)-                      _lhsOpp =-                          let pragmaDoc = "{-#" >#< txt_ >#< "#-}"-                              op = if onNewLine_-                                   then (>-<)-                                   else (>#<)-                              leftOp x y = if onLeftSide_-                                           then x `op` y-                                           else y-                              rightOp x y = if onLeftSide_-                                            then x-                                            else x `op` y-                          in pragmaDoc `leftOp` _exprIpp `rightOp` pragmaDoc-                      -- copy rule (down)-                      _exprOnested =-                          _lhsInested-                      -- copy rule (down)-                      _exprOoptions =-                          _lhsIoptions-                      -- copy rule (down)-                      _exprOoutputfile =-                          _lhsIoutputfile-                      ( _exprIpp) =-                          (expr_ _exprOnested _exprOoptions _exprOoutputfile)-                  in  ( _lhsOpp))))-sem_Expr_SimpleExpr :: String ->-                       T_Expr-sem_Expr_SimpleExpr txt_ =-    (T_Expr (\ _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      -- "PrintCode.ag"(line 130, column 16)-                      _lhsOpp =-                          text txt_-                  in  ( _lhsOpp))))-sem_Expr_TextExpr :: ([String]) ->-                     T_Expr-sem_Expr_TextExpr lns_ =-    (T_Expr (\ _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      -- "PrintCode.ag"(line 131, column 16)-                      _lhsOpp =-                          vlist (map text lns_)-                  in  ( _lhsOpp))))-sem_Expr_Trace :: String ->-                  T_Expr ->-                  T_Expr-sem_Expr_Trace txt_ (T_Expr expr_) =-    (T_Expr (\ _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      _exprOnested :: Bool-                      _exprOoptions :: Options-                      _exprOoutputfile :: String-                      _exprIpp :: PP_Doc-                      -- "PrintCode.ag"(line 132, column 16)-                      _lhsOpp =-                          "trace" >#< (   pp_parens ("\"" >|< text txt_ >|< "\"")-                                      >-< pp_parens _exprIpp-                                      )-                      -- copy rule (down)-                      _exprOnested =-                          _lhsInested-                      -- copy rule (down)-                      _exprOoptions =-                          _lhsIoptions-                      -- copy rule (down)-                      _exprOoutputfile =-                          _lhsIoutputfile-                      ( _exprIpp) =-                          (expr_ _exprOnested _exprOoptions _exprOoutputfile)-                  in  ( _lhsOpp))))-sem_Expr_TupleExpr :: T_Exprs ->-                      T_Expr-sem_Expr_TupleExpr (T_Exprs exprs_) =-    (T_Expr (\ _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      _exprsOnested :: Bool-                      _exprsOoptions :: Options-                      _exprsOoutputfile :: String-                      _exprsIpps :: PP_Docs-                      -- "PrintCode.ag"(line 127, column 16)-                      _lhsOpp =-                          ppTuple _lhsInested _exprsIpps-                      -- copy rule (down)-                      _exprsOnested =-                          _lhsInested-                      -- copy rule (down)-                      _exprsOoptions =-                          _lhsIoptions-                      -- copy rule (down)-                      _exprsOoutputfile =-                          _lhsIoutputfile-                      ( _exprsIpps) =-                          (exprs_ _exprsOnested _exprsOoptions _exprsOoutputfile)-                  in  ( _lhsOpp))))-sem_Expr_TypedExpr :: T_Expr ->-                      T_Type ->-                      T_Expr-sem_Expr_TypedExpr (T_Expr expr_) (T_Type tp_) =-    (T_Expr (\ _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      _exprOnested :: Bool-                      _exprOoptions :: Options-                      _exprOoutputfile :: String-                      _tpOnested :: Bool-                      _exprIpp :: PP_Doc-                      _tpIpp :: PP_Doc-                      _tpIprec :: Int-                      -- "PrintCode.ag"(line 147, column 16)-                      _lhsOpp =-                          pp_parens (_exprIpp >#< "::" >#< _tpIpp)-                      -- copy rule (down)-                      _exprOnested =-                          _lhsInested-                      -- copy rule (down)-                      _exprOoptions =-                          _lhsIoptions-                      -- copy rule (down)-                      _exprOoutputfile =-                          _lhsIoutputfile-                      -- copy rule (down)-                      _tpOnested =-                          _lhsInested-                      ( _exprIpp) =-                          (expr_ _exprOnested _exprOoptions _exprOoutputfile)-                      ( _tpIpp,_tpIprec) =-                          (tp_ _tpOnested)-                  in  ( _lhsOpp))))-sem_Expr_UnboxedTupleExpr :: T_Exprs ->-                             T_Expr-sem_Expr_UnboxedTupleExpr (T_Exprs exprs_) =-    (T_Expr (\ _lhsInested-               _lhsIoptions-               _lhsIoutputfile ->-                 (let _lhsOpp :: PP_Doc-                      _exprsOnested :: Bool-                      _exprsOoptions :: Options-                      _exprsOoutputfile :: String-                      _exprsIpps :: PP_Docs-                      -- "PrintCode.ag"(line 128, column 23)-                      _lhsOpp =-                          ppUnboxedTuple _lhsInested _exprsIpps-                      -- copy rule (down)-                      _exprsOnested =-                          _lhsInested-                      -- copy rule (down)-                      _exprsOoptions =-                          _lhsIoptions-                      -- copy rule (down)-                      _exprsOoutputfile =-                          _lhsIoutputfile-                      ( _exprsIpps) =-                          (exprs_ _exprsOnested _exprsOoptions _exprsOoutputfile)-                  in  ( _lhsOpp))))--- Exprs --------------------------------------------------------{--   visit 0:-      inherited attributes:-         nested               : Bool-         options              : Options-         outputfile           : String-      synthesized attribute:-         pps                  : PP_Docs-   alternatives:-      alternative Cons:-         child hd             : Expr-         child tl             : Exprs-      alternative Nil:--}--- cata-sem_Exprs :: Exprs ->-             T_Exprs-sem_Exprs list =-    (Prelude.foldr sem_Exprs_Cons sem_Exprs_Nil (Prelude.map sem_Expr list))--- semantic domain-newtype T_Exprs = T_Exprs (Bool ->-                           Options ->-                           String ->-                           ( PP_Docs))-data Inh_Exprs = Inh_Exprs {nested_Inh_Exprs :: Bool,options_Inh_Exprs :: Options,outputfile_Inh_Exprs :: String}-data Syn_Exprs = Syn_Exprs {pps_Syn_Exprs :: PP_Docs}-wrap_Exprs (T_Exprs sem) (Inh_Exprs _lhsInested _lhsIoptions _lhsIoutputfile) =-    (let ( _lhsOpps) =-             (sem _lhsInested _lhsIoptions _lhsIoutputfile)-     in  (Syn_Exprs _lhsOpps))-sem_Exprs_Cons :: T_Expr ->-                  T_Exprs ->-                  T_Exprs-sem_Exprs_Cons (T_Expr hd_) (T_Exprs tl_) =-    (T_Exprs (\ _lhsInested-                _lhsIoptions-                _lhsIoutputfile ->-                  (let _lhsOpps :: PP_Docs-                       _hdOnested :: Bool-                       _hdOoptions :: Options-                       _hdOoutputfile :: String-                       _tlOnested :: Bool-                       _tlOoptions :: Options-                       _tlOoutputfile :: String-                       _hdIpp :: PP_Doc-                       _tlIpps :: PP_Docs-                       -- "PrintCode.ag"(line 55, column 10)-                       _lhsOpps =-                           _hdIpp : _tlIpps-                       -- copy rule (down)-                       _hdOnested =-                           _lhsInested-                       -- copy rule (down)-                       _hdOoptions =-                           _lhsIoptions-                       -- copy rule (down)-                       _hdOoutputfile =-                           _lhsIoutputfile-                       -- copy rule (down)-                       _tlOnested =-                           _lhsInested-                       -- copy rule (down)-                       _tlOoptions =-                           _lhsIoptions-                       -- copy rule (down)-                       _tlOoutputfile =-                           _lhsIoutputfile-                       ( _hdIpp) =-                           (hd_ _hdOnested _hdOoptions _hdOoutputfile)-                       ( _tlIpps) =-                           (tl_ _tlOnested _tlOoptions _tlOoutputfile)-                   in  ( _lhsOpps))))-sem_Exprs_Nil :: T_Exprs-sem_Exprs_Nil  =-    (T_Exprs (\ _lhsInested-                _lhsIoptions-                _lhsIoutputfile ->-                  (let _lhsOpps :: PP_Docs-                       -- "PrintCode.ag"(line 56, column 10)-                       _lhsOpps =-                           []-                   in  ( _lhsOpps))))--- Lhs ----------------------------------------------------------{--   visit 0:-      inherited attributes:-         isDeclOfLet          : Bool-         nested               : Bool-         options              : Options-         outputfile           : String-      synthesized attribute:-         pp                   : PP_Doc-   alternatives:-      alternative Fun:-         child name           : {String}-         child args           : Exprs-         visit 0:-            local addStrictGuard : _-            local hasStrictVars : _-            local strictGuard : _-            local addBang     : _-      alternative Pattern3:-         child pat3           : Pattern-         visit 0:-            local addStrictGuard : _-            local strictGuard : _-            local hasStrictVars : _-      alternative Pattern3SM:-         child pat3           : Pattern-      alternative TupleLhs:-         child comps          : {[String]}-         visit 0:-            local addStrictGuard : _-            local strictGuard : _-            local hasStrictVars : _-            local addBang     : _-      alternative UnboxedTupleLhs:-         child comps          : {[String]}-         visit 0:-            local addStrictGuard : _-            local strictGuard : _-            local hasStrictVars : _-            local addBang     : _--}--- cata-sem_Lhs :: Lhs ->-           T_Lhs-sem_Lhs (Fun _name _args) =-    (sem_Lhs_Fun _name (sem_Exprs _args))-sem_Lhs (Pattern3 _pat3) =-    (sem_Lhs_Pattern3 (sem_Pattern _pat3))-sem_Lhs (Pattern3SM _pat3) =-    (sem_Lhs_Pattern3SM (sem_Pattern _pat3))-sem_Lhs (TupleLhs _comps) =-    (sem_Lhs_TupleLhs _comps)-sem_Lhs (UnboxedTupleLhs _comps) =-    (sem_Lhs_UnboxedTupleLhs _comps)--- semantic domain-newtype T_Lhs = T_Lhs (Bool ->-                       Bool ->-                       Options ->-                       String ->-                       ( PP_Doc))-data Inh_Lhs = Inh_Lhs {isDeclOfLet_Inh_Lhs :: Bool,nested_Inh_Lhs :: Bool,options_Inh_Lhs :: Options,outputfile_Inh_Lhs :: String}-data Syn_Lhs = Syn_Lhs {pp_Syn_Lhs :: PP_Doc}-wrap_Lhs (T_Lhs sem) (Inh_Lhs _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile) =-    (let ( _lhsOpp) =-             (sem _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile)-     in  (Syn_Lhs _lhsOpp))-sem_Lhs_Fun :: String ->-               T_Exprs ->-               T_Lhs-sem_Lhs_Fun name_ (T_Exprs args_) =-    (T_Lhs (\ _lhsIisDeclOfLet-              _lhsInested-              _lhsIoptions-              _lhsIoutputfile ->-                (let _lhsOpp :: PP_Doc-                     _argsOnested :: Bool-                     _argsOoptions :: Options-                     _argsOoutputfile :: String-                     _argsIpps :: PP_Docs-                     -- "PrintCode.ag"(line 169, column 7)-                     _addStrictGuard =-                         if strictSems _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id-                     -- "PrintCode.ag"(line 170, column 7)-                     _hasStrictVars =-                         not (null _argsIpps)-                     -- "PrintCode.ag"(line 171, column 7)-                     _strictGuard =-                         _argsIpps `ppMultiSeqH` (pp "True")-                     -- "PrintCode.ag"(line 174, column 7)-                     _addBang =-                         if bangpats _lhsIoptions-                                  then \p -> "!" >|< p-                                  else id-                     -- "PrintCode.ag"(line 182, column 16)-                     _lhsOpp =-                         _addStrictGuard     (name_ >#< hv_sp (map _addBang     _argsIpps))-                     -- copy rule (down)-                     _argsOnested =-                         _lhsInested-                     -- copy rule (down)-                     _argsOoptions =-                         _lhsIoptions-                     -- copy rule (down)-                     _argsOoutputfile =-                         _lhsIoutputfile-                     ( _argsIpps) =-                         (args_ _argsOnested _argsOoptions _argsOoutputfile)-                 in  ( _lhsOpp))))-sem_Lhs_Pattern3 :: T_Pattern ->-                    T_Lhs-sem_Lhs_Pattern3 (T_Pattern pat3_) =-    (T_Lhs (\ _lhsIisDeclOfLet-              _lhsInested-              _lhsIoptions-              _lhsIoutputfile ->-                (let _lhsOpp :: PP_Doc-                     _pat3ObelowIrrefutable :: Bool-                     _pat3OisDeclOfLet :: Bool-                     _pat3Ooptions :: Options-                     _pat3Icopy :: Pattern-                     _pat3IisUnderscore :: Bool-                     _pat3Ipp :: PP_Doc-                     _pat3Ipp' :: PP_Doc-                     _pat3IstrictVars :: ([PP_Doc])-                     -- "PrintCode.ag"(line 158, column 7)-                     _addStrictGuard =-                         if strictCases _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id-                     -- "PrintCode.ag"(line 160, column 7)-                     _strictGuard =-                         _pat3IstrictVars `ppMultiSeqH` (pp "True")-                     -- "PrintCode.ag"(line 161, column 7)-                     _hasStrictVars =-                         not (null _pat3IstrictVars)-                     -- "PrintCode.ag"(line 178, column 16)-                     _lhsOpp =-                         _addStrictGuard     _pat3Ipp-                     -- "PrintCode.ag"(line 288, column 7)-                     _pat3ObelowIrrefutable =-                         False-                     -- copy rule (down)-                     _pat3OisDeclOfLet =-                         _lhsIisDeclOfLet-                     -- copy rule (down)-                     _pat3Ooptions =-                         _lhsIoptions-                     ( _pat3Icopy,_pat3IisUnderscore,_pat3Ipp,_pat3Ipp',_pat3IstrictVars) =-                         (pat3_ _pat3ObelowIrrefutable _pat3OisDeclOfLet _pat3Ooptions)-                 in  ( _lhsOpp))))-sem_Lhs_Pattern3SM :: T_Pattern ->-                      T_Lhs-sem_Lhs_Pattern3SM (T_Pattern pat3_) =-    (T_Lhs (\ _lhsIisDeclOfLet-              _lhsInested-              _lhsIoptions-              _lhsIoutputfile ->-                (let _lhsOpp :: PP_Doc-                     _pat3ObelowIrrefutable :: Bool-                     _pat3OisDeclOfLet :: Bool-                     _pat3Ooptions :: Options-                     _pat3Icopy :: Pattern-                     _pat3IisUnderscore :: Bool-                     _pat3Ipp :: PP_Doc-                     _pat3Ipp' :: PP_Doc-                     _pat3IstrictVars :: ([PP_Doc])-                     -- "PrintCode.ag"(line 179, column 16)-                     _lhsOpp =-                         _pat3Ipp'-                     -- "PrintCode.ag"(line 288, column 7)-                     _pat3ObelowIrrefutable =-                         False-                     -- copy rule (down)-                     _pat3OisDeclOfLet =-                         _lhsIisDeclOfLet-                     -- copy rule (down)-                     _pat3Ooptions =-                         _lhsIoptions-                     ( _pat3Icopy,_pat3IisUnderscore,_pat3Ipp,_pat3Ipp',_pat3IstrictVars) =-                         (pat3_ _pat3ObelowIrrefutable _pat3OisDeclOfLet _pat3Ooptions)-                 in  ( _lhsOpp))))-sem_Lhs_TupleLhs :: ([String]) ->-                    T_Lhs-sem_Lhs_TupleLhs comps_ =-    (T_Lhs (\ _lhsIisDeclOfLet-              _lhsInested-              _lhsIoptions-              _lhsIoutputfile ->-                (let _lhsOpp :: PP_Doc-                     -- "PrintCode.ag"(line 158, column 7)-                     _addStrictGuard =-                         if strictCases _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id-                     -- "PrintCode.ag"(line 163, column 7)-                     _strictGuard =-                         if stricterCases _lhsIoptions && not _lhsIisDeclOfLet-                         then map text comps_ `ppMultiSeqH` (pp "True")-                         else pp "True"-                     -- "PrintCode.ag"(line 166, column 7)-                     _hasStrictVars =-                         not (null comps_)-                     -- "PrintCode.ag"(line 174, column 7)-                     _addBang =-                         if bangpats _lhsIoptions-                                  then \p -> "!" >|< p-                                  else id-                     -- "PrintCode.ag"(line 180, column 16)-                     _lhsOpp =-                         _addStrictGuard     $ ppTuple _lhsInested (map (_addBang     . text) comps_)-                 in  ( _lhsOpp))))-sem_Lhs_UnboxedTupleLhs :: ([String]) ->-                           T_Lhs-sem_Lhs_UnboxedTupleLhs comps_ =-    (T_Lhs (\ _lhsIisDeclOfLet-              _lhsInested-              _lhsIoptions-              _lhsIoutputfile ->-                (let _lhsOpp :: PP_Doc-                     -- "PrintCode.ag"(line 158, column 7)-                     _addStrictGuard =-                         if strictCases _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id-                     -- "PrintCode.ag"(line 163, column 7)-                     _strictGuard =-                         if stricterCases _lhsIoptions && not _lhsIisDeclOfLet-                         then map text comps_ `ppMultiSeqH` (pp "True")-                         else pp "True"-                     -- "PrintCode.ag"(line 166, column 7)-                     _hasStrictVars =-                         not (null comps_)-                     -- "PrintCode.ag"(line 174, column 7)-                     _addBang =-                         if bangpats _lhsIoptions-                                  then \p -> "!" >|< p-                                  else id-                     -- "PrintCode.ag"(line 181, column 23)-                     _lhsOpp =-                         _addStrictGuard     $ ppUnboxedTuple _lhsInested (map (_addBang     . text) comps_)-                 in  ( _lhsOpp))))--- Pattern ------------------------------------------------------{--   visit 0:-      inherited attributes:-         belowIrrefutable     : Bool-         isDeclOfLet          : Bool-         options              : Options-      synthesized attributes:-         copy                 : SELF-         isUnderscore         : Bool-         pp                   : PP_Doc-         pp'                  : PP_Doc-         strictVars           : [PP_Doc]-   alternatives:-      alternative Alias:-         child field          : {Identifier}-         child attr           : {Identifier}-         child pat            : Pattern-         child parts          : Patterns-         visit 0:-            local strictVar   : _-            local strictPatVars : _-            local addBang     : _-            local ppVar       : _-            local ppVarBang   : _-            local copy        : _-      alternative Constr:-         child name           : {ConstructorIdent}-         child pats           : Patterns-         visit 0:-            local addBang     : _-            local copy        : _-      alternative Irrefutable:-         child pat            : Pattern-         visit 0:-            local copy        : _-      alternative Product:-         child pos            : {Pos}-         child pats           : Patterns-         visit 0:-            local addBang     : _-            local copy        : _-      alternative Underscore:-         child pos            : {Pos}-         visit 0:-            local copy        : _--}--- cata-sem_Pattern :: Pattern ->-               T_Pattern-sem_Pattern (Alias _field _attr _pat _parts) =-    (sem_Pattern_Alias _field _attr (sem_Pattern _pat) (sem_Patterns _parts))-sem_Pattern (Constr _name _pats) =-    (sem_Pattern_Constr _name (sem_Patterns _pats))-sem_Pattern (Irrefutable _pat) =-    (sem_Pattern_Irrefutable (sem_Pattern _pat))-sem_Pattern (Product _pos _pats) =-    (sem_Pattern_Product _pos (sem_Patterns _pats))-sem_Pattern (Underscore _pos) =-    (sem_Pattern_Underscore _pos)--- semantic domain-newtype T_Pattern = T_Pattern (Bool ->-                               Bool ->-                               Options ->-                               ( Pattern,Bool,PP_Doc,PP_Doc,([PP_Doc])))-data Inh_Pattern = Inh_Pattern {belowIrrefutable_Inh_Pattern :: Bool,isDeclOfLet_Inh_Pattern :: Bool,options_Inh_Pattern :: Options}-data Syn_Pattern = Syn_Pattern {copy_Syn_Pattern :: Pattern,isUnderscore_Syn_Pattern :: Bool,pp_Syn_Pattern :: PP_Doc,pp'_Syn_Pattern :: PP_Doc,strictVars_Syn_Pattern :: [PP_Doc]}-wrap_Pattern (T_Pattern sem) (Inh_Pattern _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions) =-    (let ( _lhsOcopy,_lhsOisUnderscore,_lhsOpp,_lhsOpp',_lhsOstrictVars) =-             (sem _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions)-     in  (Syn_Pattern _lhsOcopy _lhsOisUnderscore _lhsOpp _lhsOpp' _lhsOstrictVars))-sem_Pattern_Alias :: Identifier ->-                     Identifier ->-                     T_Pattern ->-                     T_Patterns ->-                     T_Pattern-sem_Pattern_Alias field_ attr_ (T_Pattern pat_) (T_Patterns parts_) =-    (T_Pattern (\ _lhsIbelowIrrefutable-                  _lhsIisDeclOfLet-                  _lhsIoptions ->-                    (let _lhsOstrictVars :: ([PP_Doc])-                         _lhsOpp :: PP_Doc-                         _lhsOisUnderscore :: Bool-                         _lhsOpp' :: PP_Doc-                         _lhsOcopy :: Pattern-                         _patObelowIrrefutable :: Bool-                         _patOisDeclOfLet :: Bool-                         _patOoptions :: Options-                         _partsObelowIrrefutable :: Bool-                         _partsOisDeclOfLet :: Bool-                         _partsOoptions :: Options-                         _patIcopy :: Pattern-                         _patIisUnderscore :: Bool-                         _patIpp :: PP_Doc-                         _patIpp' :: PP_Doc-                         _patIstrictVars :: ([PP_Doc])-                         _partsIcopy :: Patterns-                         _partsIpps :: ([PP_Doc])-                         _partsIpps' :: ([PP_Doc])-                         _partsIstrictVars :: ([PP_Doc])-                         -- "PrintCode.ag"(line 237, column 7)-                         _strictVar =-                             if strictCases _lhsIoptions && not _lhsIisDeclOfLet-                             then [_ppVar    ]-                             else []-                         -- "PrintCode.ag"(line 241, column 7)-                         _strictPatVars =-                             if stricterCases _lhsIoptions && not _lhsIisDeclOfLet-                             then _patIstrictVars-                             else []-                         -- "PrintCode.ag"(line 245, column 7)-                         _lhsOstrictVars =-                             _strictVar     ++ _strictPatVars-                         -- "PrintCode.ag"(line 260, column 7)-                         _addBang =-                             if bangpats _lhsIoptions && not _lhsIisDeclOfLet && not _lhsIbelowIrrefutable-                             then \p -> "!" >|< p-                             else id-                         -- "PrintCode.ag"(line 267, column 13)-                         _ppVar =-                             pp (attrname False field_ attr_)-                         -- "PrintCode.ag"(line 268, column 13)-                         _ppVarBang =-                             _addBang     $ _ppVar-                         -- "PrintCode.ag"(line 269, column 13)-                         _lhsOpp =-                             if _patIisUnderscore-                              then _ppVarBang-                              else _ppVarBang     >|< "@" >|< _patIpp-                         -- "PrintCode.ag"(line 278, column 16)-                         _lhsOisUnderscore =-                             False-                         -- "PrintCode.ag"(line 301, column 13)-                         _lhsOpp' =-                             let attribute | field_ == _LOC || field_ == nullIdent = locname' attr_-                                           | otherwise                             = attrname False field_ attr_-                             in attribute >|< "@" >|< _patIpp'-                         -- self rule-                         _copy =-                             Alias field_ attr_ _patIcopy _partsIcopy-                         -- self rule-                         _lhsOcopy =-                             _copy-                         -- copy rule (down)-                         _patObelowIrrefutable =-                             _lhsIbelowIrrefutable-                         -- copy rule (down)-                         _patOisDeclOfLet =-                             _lhsIisDeclOfLet-                         -- copy rule (down)-                         _patOoptions =-                             _lhsIoptions-                         -- copy rule (down)-                         _partsObelowIrrefutable =-                             _lhsIbelowIrrefutable-                         -- copy rule (down)-                         _partsOisDeclOfLet =-                             _lhsIisDeclOfLet-                         -- copy rule (down)-                         _partsOoptions =-                             _lhsIoptions-                         ( _patIcopy,_patIisUnderscore,_patIpp,_patIpp',_patIstrictVars) =-                             (pat_ _patObelowIrrefutable _patOisDeclOfLet _patOoptions)-                         ( _partsIcopy,_partsIpps,_partsIpps',_partsIstrictVars) =-                             (parts_ _partsObelowIrrefutable _partsOisDeclOfLet _partsOoptions)-                     in  ( _lhsOcopy,_lhsOisUnderscore,_lhsOpp,_lhsOpp',_lhsOstrictVars))))-sem_Pattern_Constr :: ConstructorIdent ->-                      T_Patterns ->-                      T_Pattern-sem_Pattern_Constr name_ (T_Patterns pats_) =-    (T_Pattern (\ _lhsIbelowIrrefutable-                  _lhsIisDeclOfLet-                  _lhsIoptions ->-                    (let _lhsOpp :: PP_Doc-                         _lhsOisUnderscore :: Bool-                         _lhsOpp' :: PP_Doc-                         _lhsOstrictVars :: ([PP_Doc])-                         _lhsOcopy :: Pattern-                         _patsObelowIrrefutable :: Bool-                         _patsOisDeclOfLet :: Bool-                         _patsOoptions :: Options-                         _patsIcopy :: Patterns-                         _patsIpps :: ([PP_Doc])-                         _patsIpps' :: ([PP_Doc])-                         _patsIstrictVars :: ([PP_Doc])-                         -- "PrintCode.ag"(line 260, column 7)-                         _addBang =-                             if bangpats _lhsIoptions && not _lhsIisDeclOfLet && not _lhsIbelowIrrefutable-                             then \p -> "!" >|< p-                             else id-                         -- "PrintCode.ag"(line 265, column 13)-                         _lhsOpp =-                             _addBang     $ pp_parens $ name_ >#< hv_sp _patsIpps-                         -- "PrintCode.ag"(line 276, column 16)-                         _lhsOisUnderscore =-                             False-                         -- "PrintCode.ag"(line 299, column 13)-                         _lhsOpp' =-                             pp_parens $ name_ >#< hv_sp (map pp_parens _patsIpps')-                         -- use rule "PrintCode.ag"(line 234, column 40)-                         _lhsOstrictVars =-                             _patsIstrictVars-                         -- self rule-                         _copy =-                             Constr name_ _patsIcopy-                         -- self rule-                         _lhsOcopy =-                             _copy-                         -- copy rule (down)-                         _patsObelowIrrefutable =-                             _lhsIbelowIrrefutable-                         -- copy rule (down)-                         _patsOisDeclOfLet =-                             _lhsIisDeclOfLet-                         -- copy rule (down)-                         _patsOoptions =-                             _lhsIoptions-                         ( _patsIcopy,_patsIpps,_patsIpps',_patsIstrictVars) =-                             (pats_ _patsObelowIrrefutable _patsOisDeclOfLet _patsOoptions)-                     in  ( _lhsOcopy,_lhsOisUnderscore,_lhsOpp,_lhsOpp',_lhsOstrictVars))))-sem_Pattern_Irrefutable :: T_Pattern ->-                           T_Pattern-sem_Pattern_Irrefutable (T_Pattern pat_) =-    (T_Pattern (\ _lhsIbelowIrrefutable-                  _lhsIisDeclOfLet-                  _lhsIoptions ->-                    (let _lhsOstrictVars :: ([PP_Doc])-                         _lhsOpp :: PP_Doc-                         _patObelowIrrefutable :: Bool-                         _lhsOpp' :: PP_Doc-                         _lhsOcopy :: Pattern-                         _lhsOisUnderscore :: Bool-                         _patOisDeclOfLet :: Bool-                         _patOoptions :: Options-                         _patIcopy :: Pattern-                         _patIisUnderscore :: Bool-                         _patIpp :: PP_Doc-                         _patIpp' :: PP_Doc-                         _patIstrictVars :: ([PP_Doc])-                         -- "PrintCode.ag"(line 248, column 7)-                         _lhsOstrictVars =-                             []-                         -- "PrintCode.ag"(line 272, column 17)-                         _lhsOpp =-                             text "~" >|< pp_parens _patIpp-                         -- "PrintCode.ag"(line 284, column 7)-                         _patObelowIrrefutable =-                             True-                         -- "PrintCode.ag"(line 304, column 17)-                         _lhsOpp' =-                             text "~" >|< pp_parens _patIpp-                         -- self rule-                         _copy =-                             Irrefutable _patIcopy-                         -- self rule-                         _lhsOcopy =-                             _copy-                         -- copy rule (up)-                         _lhsOisUnderscore =-                             _patIisUnderscore-                         -- copy rule (down)-                         _patOisDeclOfLet =-                             _lhsIisDeclOfLet-                         -- copy rule (down)-                         _patOoptions =-                             _lhsIoptions-                         ( _patIcopy,_patIisUnderscore,_patIpp,_patIpp',_patIstrictVars) =-                             (pat_ _patObelowIrrefutable _patOisDeclOfLet _patOoptions)-                     in  ( _lhsOcopy,_lhsOisUnderscore,_lhsOpp,_lhsOpp',_lhsOstrictVars))))-sem_Pattern_Product :: Pos ->-                       T_Patterns ->-                       T_Pattern-sem_Pattern_Product pos_ (T_Patterns pats_) =-    (T_Pattern (\ _lhsIbelowIrrefutable-                  _lhsIisDeclOfLet-                  _lhsIoptions ->-                    (let _lhsOpp :: PP_Doc-                         _lhsOisUnderscore :: Bool-                         _lhsOpp' :: PP_Doc-                         _lhsOstrictVars :: ([PP_Doc])-                         _lhsOcopy :: Pattern-                         _patsObelowIrrefutable :: Bool-                         _patsOisDeclOfLet :: Bool-                         _patsOoptions :: Options-                         _patsIcopy :: Patterns-                         _patsIpps :: ([PP_Doc])-                         _patsIpps' :: ([PP_Doc])-                         _patsIstrictVars :: ([PP_Doc])-                         -- "PrintCode.ag"(line 260, column 7)-                         _addBang =-                             if bangpats _lhsIoptions && not _lhsIisDeclOfLet && not _lhsIbelowIrrefutable-                             then \p -> "!" >|< p-                             else id-                         -- "PrintCode.ag"(line 266, column 13)-                         _lhsOpp =-                             _addBang     $ pp_block "(" ")" "," _patsIpps-                         -- "PrintCode.ag"(line 277, column 16)-                         _lhsOisUnderscore =-                             False-                         -- "PrintCode.ag"(line 300, column 13)-                         _lhsOpp' =-                             pp_block "(" ")" "," _patsIpps'-                         -- use rule "PrintCode.ag"(line 234, column 40)-                         _lhsOstrictVars =-                             _patsIstrictVars-                         -- self rule-                         _copy =-                             Product pos_ _patsIcopy-                         -- self rule-                         _lhsOcopy =-                             _copy-                         -- copy rule (down)-                         _patsObelowIrrefutable =-                             _lhsIbelowIrrefutable-                         -- copy rule (down)-                         _patsOisDeclOfLet =-                             _lhsIisDeclOfLet-                         -- copy rule (down)-                         _patsOoptions =-                             _lhsIoptions-                         ( _patsIcopy,_patsIpps,_patsIpps',_patsIstrictVars) =-                             (pats_ _patsObelowIrrefutable _patsOisDeclOfLet _patsOoptions)-                     in  ( _lhsOcopy,_lhsOisUnderscore,_lhsOpp,_lhsOpp',_lhsOstrictVars))))-sem_Pattern_Underscore :: Pos ->-                          T_Pattern-sem_Pattern_Underscore pos_ =-    (T_Pattern (\ _lhsIbelowIrrefutable-                  _lhsIisDeclOfLet-                  _lhsIoptions ->-                    (let _lhsOpp :: PP_Doc-                         _lhsOisUnderscore :: Bool-                         _lhsOpp' :: PP_Doc-                         _lhsOstrictVars :: ([PP_Doc])-                         _lhsOcopy :: Pattern-                         -- "PrintCode.ag"(line 273, column 16)-                         _lhsOpp =-                             text "_"-                         -- "PrintCode.ag"(line 279, column 16)-                         _lhsOisUnderscore =-                             True-                         -- "PrintCode.ag"(line 305, column 16)-                         _lhsOpp' =-                             text "_"-                         -- use rule "PrintCode.ag"(line 234, column 40)-                         _lhsOstrictVars =-                             []-                         -- self rule-                         _copy =-                             Underscore pos_-                         -- self rule-                         _lhsOcopy =-                             _copy-                     in  ( _lhsOcopy,_lhsOisUnderscore,_lhsOpp,_lhsOpp',_lhsOstrictVars))))--- Patterns -----------------------------------------------------{--   visit 0:-      inherited attributes:-         belowIrrefutable     : Bool-         isDeclOfLet          : Bool-         options              : Options-      synthesized attributes:-         copy                 : SELF-         pps                  : [PP_Doc]-         pps'                 : [PP_Doc]-         strictVars           : [PP_Doc]-   alternatives:-      alternative Cons:-         child hd             : Pattern-         child tl             : Patterns-         visit 0:-            local copy        : _-      alternative Nil:-         visit 0:-            local copy        : _--}--- cata-sem_Patterns :: Patterns ->-                T_Patterns-sem_Patterns list =-    (Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list))--- semantic domain-newtype T_Patterns = T_Patterns (Bool ->-                                 Bool ->-                                 Options ->-                                 ( Patterns,([PP_Doc]),([PP_Doc]),([PP_Doc])))-data Inh_Patterns = Inh_Patterns {belowIrrefutable_Inh_Patterns :: Bool,isDeclOfLet_Inh_Patterns :: Bool,options_Inh_Patterns :: Options}-data Syn_Patterns = Syn_Patterns {copy_Syn_Patterns :: Patterns,pps_Syn_Patterns :: [PP_Doc],pps'_Syn_Patterns :: [PP_Doc],strictVars_Syn_Patterns :: [PP_Doc]}-wrap_Patterns (T_Patterns sem) (Inh_Patterns _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions) =-    (let ( _lhsOcopy,_lhsOpps,_lhsOpps',_lhsOstrictVars) =-             (sem _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions)-     in  (Syn_Patterns _lhsOcopy _lhsOpps _lhsOpps' _lhsOstrictVars))-sem_Patterns_Cons :: T_Pattern ->-                     T_Patterns ->-                     T_Patterns-sem_Patterns_Cons (T_Pattern hd_) (T_Patterns tl_) =-    (T_Patterns (\ _lhsIbelowIrrefutable-                   _lhsIisDeclOfLet-                   _lhsIoptions ->-                     (let _lhsOpps :: ([PP_Doc])-                          _lhsOpps' :: ([PP_Doc])-                          _lhsOstrictVars :: ([PP_Doc])-                          _lhsOcopy :: Patterns-                          _hdObelowIrrefutable :: Bool-                          _hdOisDeclOfLet :: Bool-                          _hdOoptions :: Options-                          _tlObelowIrrefutable :: Bool-                          _tlOisDeclOfLet :: Bool-                          _tlOoptions :: Options-                          _hdIcopy :: Pattern-                          _hdIisUnderscore :: Bool-                          _hdIpp :: PP_Doc-                          _hdIpp' :: PP_Doc-                          _hdIstrictVars :: ([PP_Doc])-                          _tlIcopy :: Patterns-                          _tlIpps :: ([PP_Doc])-                          _tlIpps' :: ([PP_Doc])-                          _tlIstrictVars :: ([PP_Doc])-                          -- "PrintCode.ag"(line 255, column 10)-                          _lhsOpps =-                              _hdIpp : _tlIpps-                          -- "PrintCode.ag"(line 295, column 10)-                          _lhsOpps' =-                              _hdIpp' : _tlIpps'-                          -- use rule "PrintCode.ag"(line 234, column 40)-                          _lhsOstrictVars =-                              _hdIstrictVars ++ _tlIstrictVars-                          -- self rule-                          _copy =-                              (:) _hdIcopy _tlIcopy-                          -- self rule-                          _lhsOcopy =-                              _copy-                          -- copy rule (down)-                          _hdObelowIrrefutable =-                              _lhsIbelowIrrefutable-                          -- copy rule (down)-                          _hdOisDeclOfLet =-                              _lhsIisDeclOfLet-                          -- copy rule (down)-                          _hdOoptions =-                              _lhsIoptions-                          -- copy rule (down)-                          _tlObelowIrrefutable =-                              _lhsIbelowIrrefutable-                          -- copy rule (down)-                          _tlOisDeclOfLet =-                              _lhsIisDeclOfLet-                          -- copy rule (down)-                          _tlOoptions =-                              _lhsIoptions-                          ( _hdIcopy,_hdIisUnderscore,_hdIpp,_hdIpp',_hdIstrictVars) =-                              (hd_ _hdObelowIrrefutable _hdOisDeclOfLet _hdOoptions)-                          ( _tlIcopy,_tlIpps,_tlIpps',_tlIstrictVars) =-                              (tl_ _tlObelowIrrefutable _tlOisDeclOfLet _tlOoptions)-                      in  ( _lhsOcopy,_lhsOpps,_lhsOpps',_lhsOstrictVars))))-sem_Patterns_Nil :: T_Patterns-sem_Patterns_Nil  =-    (T_Patterns (\ _lhsIbelowIrrefutable-                   _lhsIisDeclOfLet-                   _lhsIoptions ->-                     (let _lhsOpps :: ([PP_Doc])-                          _lhsOpps' :: ([PP_Doc])-                          _lhsOstrictVars :: ([PP_Doc])-                          _lhsOcopy :: Patterns-                          -- "PrintCode.ag"(line 256, column 10)-                          _lhsOpps =-                              []-                          -- "PrintCode.ag"(line 296, column 10)-                          _lhsOpps' =-                              []-                          -- use rule "PrintCode.ag"(line 234, column 40)-                          _lhsOstrictVars =-                              []-                          -- self rule-                          _copy =-                              []-                          -- self rule-                          _lhsOcopy =-                              _copy-                      in  ( _lhsOcopy,_lhsOpps,_lhsOpps',_lhsOstrictVars))))--- Program ------------------------------------------------------{--   visit 0:-      inherited attributes:-         importBlocks         : PP_Doc-         mainFile             : String-         mainName             : String-         moduleHeader         : String -> String -> String -> Bool -> String-         options              : Options-         optionsLine          : String-         pragmaBlocks         : String-         textBlocks           : PP_Doc-      synthesized attributes:-         genIO                : IO ()-         output               : PP_Docs-   alternatives:-      alternative Program:-         child chunks         : Chunks-         visit 0:-            local mainModuleFile : _-            local genMainModule : _-            local commonFile  : _-            local genCommonModule : _--}--- cata-sem_Program :: Program ->-               T_Program-sem_Program (Program _chunks) =-    (sem_Program_Program (sem_Chunks _chunks))--- semantic domain-newtype T_Program = T_Program (PP_Doc ->-                               String ->-                               String ->-                               (String -> String -> String -> Bool -> String) ->-                               Options ->-                               String ->-                               String ->-                               PP_Doc ->-                               ( (IO ()),PP_Docs))-data Inh_Program = Inh_Program {importBlocks_Inh_Program :: PP_Doc,mainFile_Inh_Program :: String,mainName_Inh_Program :: String,moduleHeader_Inh_Program :: String -> String -> String -> Bool -> String,options_Inh_Program :: Options,optionsLine_Inh_Program :: String,pragmaBlocks_Inh_Program :: String,textBlocks_Inh_Program :: PP_Doc}-data Syn_Program = Syn_Program {genIO_Syn_Program :: IO (),output_Syn_Program :: PP_Docs}-wrap_Program (T_Program sem) (Inh_Program _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlocks) =-    (let ( _lhsOgenIO,_lhsOoutput) =-             (sem _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlocks)-     in  (Syn_Program _lhsOgenIO _lhsOoutput))-sem_Program_Program :: T_Chunks ->-                       T_Program-sem_Program_Program (T_Chunks chunks_) =-    (T_Program (\ _lhsIimportBlocks-                  _lhsImainFile-                  _lhsImainName-                  _lhsImoduleHeader-                  _lhsIoptions-                  _lhsIoptionsLine-                  _lhsIpragmaBlocks-                  _lhsItextBlocks ->-                    (let _chunksOnested :: Bool-                         _lhsOoutput :: PP_Docs-                         _chunksOisDeclOfLet :: Bool-                         _lhsOgenIO :: (IO ())-                         _chunksOimportBlocks :: PP_Doc-                         _chunksOmainFile :: String-                         _chunksOmainName :: String-                         _chunksOmoduleHeader :: (String -> String -> String -> Bool -> String)-                         _chunksOoptions :: Options-                         _chunksOoptionsLine :: String-                         _chunksOpragmaBlocks :: String-                         _chunksOtextBlocks :: PP_Doc-                         _chunksIappendCommon :: ([[PP_Doc]])-                         _chunksIappendMain :: ([[PP_Doc]])-                         _chunksIgenSems :: (IO ())-                         _chunksIimports :: ([String])-                         _chunksIpps :: PP_Docs-                         -- "PrintCode.ag"(line 52, column 13)-                         _chunksOnested =-                             nest _lhsIoptions-                         -- "PrintCode.ag"(line 80, column 16)-                         _lhsOoutput =-                             _chunksIpps-                         -- "PrintCode.ag"(line 318, column 7)-                         _chunksOisDeclOfLet =-                             False-                         -- "PrintCode.ag"(line 347, column 7)-                         _mainModuleFile =-                             _lhsImainFile ++ ".hs"-                         -- "PrintCode.ag"(line 348, column 7)-                         _genMainModule =-                             writeModule _mainModuleFile-                               ( [ pp $ _lhsIpragmaBlocks-                                 , pp $ _lhsIoptionsLine-                                 , pp $ _lhsImoduleHeader _lhsImainName "" "" False-                                 , pp $ ("import " ++ _lhsImainName ++ "_common\n")-                                 ]-                                 ++ map pp _chunksIimports-                                 ++ map vlist _chunksIappendMain-                               )-                         -- "PrintCode.ag"(line 359, column 7)-                         _commonFile =-                             _lhsImainFile ++ "_common.hs"-                         -- "PrintCode.ag"(line 360, column 7)-                         _genCommonModule =-                             writeModule _commonFile-                                 ( [ pp $ _lhsIpragmaBlocks-                                   , pp $ _lhsIoptionsLine-                                   , pp $ _lhsImoduleHeader _lhsImainName "_common" "" True-                                   , _lhsIimportBlocks-                                   , _lhsItextBlocks-                                   ]-                                   ++ map vlist _chunksIappendCommon-                                 )-                         -- "PrintCode.ag"(line 371, column 7)-                         _lhsOgenIO =-                             do _genMainModule-                                _genCommonModule-                                _chunksIgenSems-                         -- copy rule (down)-                         _chunksOimportBlocks =-                             _lhsIimportBlocks-                         -- copy rule (down)-                         _chunksOmainFile =-                             _lhsImainFile-                         -- copy rule (down)-                         _chunksOmainName =-                             _lhsImainName-                         -- copy rule (down)-                         _chunksOmoduleHeader =-                             _lhsImoduleHeader-                         -- copy rule (down)-                         _chunksOoptions =-                             _lhsIoptions-                         -- copy rule (down)-                         _chunksOoptionsLine =-                             _lhsIoptionsLine-                         -- copy rule (down)-                         _chunksOpragmaBlocks =-                             _lhsIpragmaBlocks-                         -- copy rule (down)-                         _chunksOtextBlocks =-                             _lhsItextBlocks-                         ( _chunksIappendCommon,_chunksIappendMain,_chunksIgenSems,_chunksIimports,_chunksIpps) =-                             (chunks_ _chunksOimportBlocks _chunksOisDeclOfLet _chunksOmainFile _chunksOmainName _chunksOmoduleHeader _chunksOnested _chunksOoptions _chunksOoptionsLine _chunksOpragmaBlocks _chunksOtextBlocks)-                     in  ( _lhsOgenIO,_lhsOoutput))))--- Type ---------------------------------------------------------{--   visit 0:-      inherited attribute:-         nested               : Bool-      synthesized attributes:-         pp                   : PP_Doc-         prec                 : Int-   alternatives:-      alternative Arr:-         child left           : Type-         child right          : Type-         visit 0:-            local l           : _-            local r           : _-      alternative CtxApp:-         child left           : {[(String, [String])]}-         child right          : Type-      alternative List:-         child tp             : Type-      alternative SimpleType:-         child txt            : {String}-      alternative TupleType:-         child tps            : Types-      alternative TypeApp:-         child func           : Type-         child args           : Types-      alternative UnboxedTupleType:-         child tps            : Types--}--- cata-sem_Type :: Type ->-            T_Type-sem_Type (Arr _left _right) =-    (sem_Type_Arr (sem_Type _left) (sem_Type _right))-sem_Type (CtxApp _left _right) =-    (sem_Type_CtxApp _left (sem_Type _right))-sem_Type (List _tp) =-    (sem_Type_List (sem_Type _tp))-sem_Type (SimpleType _txt) =-    (sem_Type_SimpleType _txt)-sem_Type (TupleType _tps) =-    (sem_Type_TupleType (sem_Types _tps))-sem_Type (TypeApp _func _args) =-    (sem_Type_TypeApp (sem_Type _func) (sem_Types _args))-sem_Type (UnboxedTupleType _tps) =-    (sem_Type_UnboxedTupleType (sem_Types _tps))--- semantic domain-newtype T_Type = T_Type (Bool ->-                         ( PP_Doc,Int))-data Inh_Type = Inh_Type {nested_Inh_Type :: Bool}-data Syn_Type = Syn_Type {pp_Syn_Type :: PP_Doc,prec_Syn_Type :: Int}-wrap_Type (T_Type sem) (Inh_Type _lhsInested) =-    (let ( _lhsOpp,_lhsOprec) =-             (sem _lhsInested)-     in  (Syn_Type _lhsOpp _lhsOprec))-sem_Type_Arr :: T_Type ->-                T_Type ->-                T_Type-sem_Type_Arr (T_Type left_) (T_Type right_) =-    (T_Type (\ _lhsInested ->-                 (let _lhsOprec :: Int-                      _lhsOpp :: PP_Doc-                      _leftOnested :: Bool-                      _rightOnested :: Bool-                      _leftIpp :: PP_Doc-                      _leftIprec :: Int-                      _rightIpp :: PP_Doc-                      _rightIprec :: Int-                      -- "PrintCode.ag"(line 185, column 16)-                      _lhsOprec =-                          2-                      -- "PrintCode.ag"(line 185, column 16)-                      _lhsOpp =-                          _l     >#< "->" >-< _r-                      -- "PrintCode.ag"(line 187, column 16)-                      _l =-                          if _leftIprec  <= 2 then pp_parens _leftIpp  else _leftIpp-                      -- "PrintCode.ag"(line 187, column 16)-                      _r =-                          if _rightIprec <  2 then pp_parens _rightIpp else _rightIpp-                      -- copy rule (down)-                      _leftOnested =-                          _lhsInested-                      -- copy rule (down)-                      _rightOnested =-                          _lhsInested-                      ( _leftIpp,_leftIprec) =-                          (left_ _leftOnested)-                      ( _rightIpp,_rightIprec) =-                          (right_ _rightOnested)-                  in  ( _lhsOpp,_lhsOprec))))-sem_Type_CtxApp :: ([(String, [String])]) ->-                   T_Type ->-                   T_Type-sem_Type_CtxApp left_ (T_Type right_) =-    (T_Type (\ _lhsInested ->-                 (let _lhsOpp :: PP_Doc-                      _lhsOprec :: Int-                      _rightOnested :: Bool-                      _rightIpp :: PP_Doc-                      _rightIprec :: Int-                      -- "PrintCode.ag"(line 194, column 7)-                      _lhsOpp =-                          (pp_block "(" ")" "," $ map (\(n,ns) -> hv_sp $ map pp (n:ns)) left_) >#< "=>" >#< _rightIpp-                      -- copy rule (up)-                      _lhsOprec =-                          _rightIprec-                      -- copy rule (down)-                      _rightOnested =-                          _lhsInested-                      ( _rightIpp,_rightIprec) =-                          (right_ _rightOnested)-                  in  ( _lhsOpp,_lhsOprec))))-sem_Type_List :: T_Type ->-                 T_Type-sem_Type_List (T_Type tp_) =-    (T_Type (\ _lhsInested ->-                 (let _lhsOprec :: Int-                      _lhsOpp :: PP_Doc-                      _tpOnested :: Bool-                      _tpIpp :: PP_Doc-                      _tpIprec :: Int-                      -- "PrintCode.ag"(line 202, column 16)-                      _lhsOprec =-                          5-                      -- "PrintCode.ag"(line 202, column 16)-                      _lhsOpp =-                          "[" >|< _tpIpp >|< "]"-                      -- copy rule (down)-                      _tpOnested =-                          _lhsInested-                      ( _tpIpp,_tpIprec) =-                          (tp_ _tpOnested)-                  in  ( _lhsOpp,_lhsOprec))))-sem_Type_SimpleType :: String ->-                       T_Type-sem_Type_SimpleType txt_ =-    (T_Type (\ _lhsInested ->-                 (let _lhsOprec :: Int-                      _lhsOpp :: PP_Doc-                      -- "PrintCode.ag"(line 205, column 16)-                      _lhsOprec =-                          5-                      -- "PrintCode.ag"(line 205, column 16)-                      _lhsOpp =-                          if reallySimple txt_ then text txt_ else pp_parens (text txt_)-                  in  ( _lhsOpp,_lhsOprec))))-sem_Type_TupleType :: T_Types ->-                      T_Type-sem_Type_TupleType (T_Types tps_) =-    (T_Type (\ _lhsInested ->-                 (let _lhsOprec :: Int-                      _lhsOpp :: PP_Doc-                      _tpsOnested :: Bool-                      _tpsIpps :: PP_Docs-                      -- "PrintCode.ag"(line 196, column 16)-                      _lhsOprec =-                          5-                      -- "PrintCode.ag"(line 196, column 16)-                      _lhsOpp =-                          ppTuple _lhsInested _tpsIpps-                      -- copy rule (down)-                      _tpsOnested =-                          _lhsInested-                      ( _tpsIpps) =-                          (tps_ _tpsOnested)-                  in  ( _lhsOpp,_lhsOprec))))-sem_Type_TypeApp :: T_Type ->-                    T_Types ->-                    T_Type-sem_Type_TypeApp (T_Type func_) (T_Types args_) =-    (T_Type (\ _lhsInested ->-                 (let _lhsOpp :: PP_Doc-                      _lhsOprec :: Int-                      _funcOnested :: Bool-                      _argsOnested :: Bool-                      _funcIpp :: PP_Doc-                      _funcIprec :: Int-                      _argsIpps :: PP_Docs-                      -- "PrintCode.ag"(line 191, column 7)-                      _lhsOpp =-                          hv_sp (_funcIpp : _argsIpps)-                      -- copy rule (up)-                      _lhsOprec =-                          _funcIprec-                      -- copy rule (down)-                      _funcOnested =-                          _lhsInested-                      -- copy rule (down)-                      _argsOnested =-                          _lhsInested-                      ( _funcIpp,_funcIprec) =-                          (func_ _funcOnested)-                      ( _argsIpps) =-                          (args_ _argsOnested)-                  in  ( _lhsOpp,_lhsOprec))))-sem_Type_UnboxedTupleType :: T_Types ->-                             T_Type-sem_Type_UnboxedTupleType (T_Types tps_) =-    (T_Type (\ _lhsInested ->-                 (let _lhsOprec :: Int-                      _lhsOpp :: PP_Doc-                      _tpsOnested :: Bool-                      _tpsIpps :: PP_Docs-                      -- "PrintCode.ag"(line 199, column 23)-                      _lhsOprec =-                          5-                      -- "PrintCode.ag"(line 199, column 23)-                      _lhsOpp =-                          ppUnboxedTuple _lhsInested _tpsIpps-                      -- copy rule (down)-                      _tpsOnested =-                          _lhsInested-                      ( _tpsIpps) =-                          (tps_ _tpsOnested)-                  in  ( _lhsOpp,_lhsOprec))))--- Types --------------------------------------------------------{--   visit 0:-      inherited attribute:-         nested               : Bool-      synthesized attribute:-         pps                  : PP_Docs-   alternatives:-      alternative Cons:-         child hd             : Type-         child tl             : Types-      alternative Nil:--}--- cata-sem_Types :: Types ->-             T_Types-sem_Types list =-    (Prelude.foldr sem_Types_Cons sem_Types_Nil (Prelude.map sem_Type list))--- semantic domain-newtype T_Types = T_Types (Bool ->-                           ( PP_Docs))-data Inh_Types = Inh_Types {nested_Inh_Types :: Bool}-data Syn_Types = Syn_Types {pps_Syn_Types :: PP_Docs}-wrap_Types (T_Types sem) (Inh_Types _lhsInested) =-    (let ( _lhsOpps) =-             (sem _lhsInested)-     in  (Syn_Types _lhsOpps))-sem_Types_Cons :: T_Type ->-                  T_Types ->-                  T_Types-sem_Types_Cons (T_Type hd_) (T_Types tl_) =-    (T_Types (\ _lhsInested ->-                  (let _lhsOpps :: PP_Docs-                       _hdOnested :: Bool-                       _tlOnested :: Bool-                       _hdIpp :: PP_Doc-                       _hdIprec :: Int-                       _tlIpps :: PP_Docs-                       -- "PrintCode.ag"(line 67, column 10)-                       _lhsOpps =-                           _hdIpp : _tlIpps-                       -- copy rule (down)-                       _hdOnested =-                           _lhsInested-                       -- copy rule (down)-                       _tlOnested =-                           _lhsInested-                       ( _hdIpp,_hdIprec) =-                           (hd_ _hdOnested)-                       ( _tlIpps) =-                           (tl_ _tlOnested)-                   in  ( _lhsOpps))))-sem_Types_Nil :: T_Types-sem_Types_Nil  =-    (T_Types (\ _lhsInested ->-                  (let _lhsOpps :: PP_Docs-                       -- "PrintCode.ag"(line 68, column 10)-                       _lhsOpps =-                           []-                   in  ( _lhsOpps))))+{-# OPTIONS_GHC -fbang-patterns #-}+-- UUAGC 0.9.5 (PrintCode.ag)+module PrintCode where++import Char (isAlphaNum)+import Pretty+import Code+import Patterns+import Options+import CommonTypes (attrname, _LOC, getName, nullIdent)+import Data.List(intersperse)+import System.IO+import System.Directory+import CommonTypes(BlockInfo, BlockType(..), identifier)++import Pretty+import Patterns+import Data.List(partition)+import Data.Set(Set)+import qualified UU.DData.Set as Set+import Data.Map(Map)+import qualified Data.Map as Map++-- Patterns.ag imports+import UU.Scanner.Position(Pos)+import CommonTypes (ConstructorIdent,Identifier)++type PP_Docs = [PP_Doc]++ppMultiSeqH :: [PP_Doc] -> PP_Doc -> PP_Doc+ppMultiSeqH = ppMultiSeq' (>#<)++ppMultiSeqV :: [PP_Doc] -> PP_Doc -> PP_Doc+ppMultiSeqV = ppMultiSeq' (>-<)++ppMultiSeq' :: (PP_Doc -> PP_Doc -> PP_Doc) -> [PP_Doc] -> PP_Doc -> PP_Doc+ppMultiSeq' next strictArgs expr+  = foldr (\v r -> (v >#< "`seq`") `next` pp_parens r) expr strictArgs+++reallySimple :: String -> Bool+reallySimple = and . map (\x -> isAlphaNum x || x=='_')++ppTuple True  pps = "(" >|< pp_block " " (replicate (length pps `max` 1) ')') ",(" pps+ppTuple False pps = "(" >|< pp_block " " ")" "," pps+ppUnboxedTuple True pps  = "(# " >|< pp_block " " (concat $ replicate (length pps `max` 1) " #)") ",(# " pps+ppUnboxedTuple False pps = "(# " >|< pp_block " " " #)" "," pps+++locname' n = "_loc_" ++ getName n++renderDocs :: [PP_Doc] -> String+renderDocs pps = foldr (.) id (map (\d -> (disp d 50000) . ( '\n':) ) pps) ""++writeModule :: FilePath -> [PP_Doc] -> IO ()+writeModule path docs+  = do bExists <- doesFileExist path+       if bExists+        then do input <- readFile path+                seq (length input) (return ())+                if input /= output+                 then dumpIt+                 else return ()+        else dumpIt+  where+    output = renderDocs docs+    dumpIt = writeFile path output++-- Unboxed tuples+--   unbox  Whether unboxed tuples are wanted or not+--   inh    The inherited attributes. +--          If there are none, no unboxing can take place, +--          because in that case the semantic function (a top-level identifier) would have an unboxed type.+-- Of course we can't have an unboxed 1-tuple+mkTupleExpr :: Bool -> Bool -> Exprs -> Expr+mkTupleExpr unbox noInh exprs | not unbox || noInh || length exprs == 1 = TupleExpr exprs+                              | otherwise                               = UnboxedTupleExpr exprs+mkTupleType :: Bool -> Bool -> Types -> Type+mkTupleType unbox noInh tps | not unbox || noInh || length tps == 1 = TupleType tps+                            | otherwise                             = UnboxedTupleType tps+mkTupleLhs :: Bool -> Bool -> [String] -> Lhs+mkTupleLhs  unbox noInh comps | not unbox || noInh || length comps == 1 = TupleLhs comps+                              | otherwise                               = UnboxedTupleLhs comps+-- CaseAlt -----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         nested               : Bool+         options              : Options+         outputfile           : String+      synthesized attribute:+         pps                  : PP_Docs+   alternatives:+      alternative CaseAlt:+         child left           : Lhs+         child expr           : Expr+-}+-- cata+sem_CaseAlt :: CaseAlt ->+               T_CaseAlt+sem_CaseAlt !(CaseAlt _left _expr) =+    (sem_CaseAlt_CaseAlt (sem_Lhs _left) (sem_Expr _expr))+-- semantic domain+newtype T_CaseAlt = T_CaseAlt (Bool ->+                               Options ->+                               String ->+                               ( PP_Docs))+data Inh_CaseAlt = Inh_CaseAlt {nested_Inh_CaseAlt :: !(Bool),options_Inh_CaseAlt :: !(Options),outputfile_Inh_CaseAlt :: !(String)}+data Syn_CaseAlt = Syn_CaseAlt {pps_Syn_CaseAlt :: !(PP_Docs)}+wrap_CaseAlt !(T_CaseAlt sem) !(Inh_CaseAlt _lhsInested _lhsIoptions _lhsIoutputfile) =+    (let ( !_lhsOpps) =+             (sem _lhsInested _lhsIoptions _lhsIoutputfile)+     in  (Syn_CaseAlt _lhsOpps))+sem_CaseAlt_CaseAlt :: T_Lhs ->+                       T_Expr ->+                       T_CaseAlt+sem_CaseAlt_CaseAlt !(T_Lhs left_) !(T_Expr expr_) =+    (T_CaseAlt (\ (!_lhsInested)+                  (!_lhsIoptions)+                  (!_lhsIoutputfile) ->+                    (case (_lhsIoutputfile) of+                     { !_exprOoutputfile ->+                     (case (_lhsIoptions) of+                      { !_exprOoptions ->+                      (case (_lhsInested) of+                       { !_exprOnested ->+                       (case (_lhsIoutputfile) of+                        { !_leftOoutputfile ->+                        (case (_lhsIoptions) of+                         { !_leftOoptions ->+                         (case (_lhsInested) of+                          { !_leftOnested ->+                          (case (False) of+                           { !_leftOisDeclOfLet ->+                           (case ((expr_ _exprOnested _exprOoptions _exprOoutputfile)) of+                            { ( !_exprIpp) ->+                            (case ((left_ _leftOisDeclOfLet _leftOnested _leftOoptions _leftOoutputfile)) of+                             { ( !_leftIpp) ->+                             (case (["{" >#< _leftIpp >#< "->", _exprIpp >#< "}"]) of+                              { !_lhsOpps ->+                              ( _lhsOpps) }) }) }) }) }) }) }) }) }) })))+-- CaseAlts ----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         nested               : Bool+         options              : Options+         outputfile           : String+      synthesized attribute:+         pps                  : PP_Docs+   alternatives:+      alternative Cons:+         child hd             : CaseAlt+         child tl             : CaseAlts+      alternative Nil:+-}+-- cata+sem_CaseAlts :: CaseAlts ->+                T_CaseAlts+sem_CaseAlts !list =+    (Prelude.foldr sem_CaseAlts_Cons sem_CaseAlts_Nil (Prelude.map sem_CaseAlt list))+-- semantic domain+newtype T_CaseAlts = T_CaseAlts (Bool ->+                                 Options ->+                                 String ->+                                 ( PP_Docs))+data Inh_CaseAlts = Inh_CaseAlts {nested_Inh_CaseAlts :: !(Bool),options_Inh_CaseAlts :: !(Options),outputfile_Inh_CaseAlts :: !(String)}+data Syn_CaseAlts = Syn_CaseAlts {pps_Syn_CaseAlts :: !(PP_Docs)}+wrap_CaseAlts !(T_CaseAlts sem) !(Inh_CaseAlts _lhsInested _lhsIoptions _lhsIoutputfile) =+    (let ( !_lhsOpps) =+             (sem _lhsInested _lhsIoptions _lhsIoutputfile)+     in  (Syn_CaseAlts _lhsOpps))+sem_CaseAlts_Cons :: T_CaseAlt ->+                     T_CaseAlts ->+                     T_CaseAlts+sem_CaseAlts_Cons !(T_CaseAlt hd_) !(T_CaseAlts tl_) =+    (T_CaseAlts (\ (!_lhsInested)+                   (!_lhsIoptions)+                   (!_lhsIoutputfile) ->+                     (case (_lhsIoutputfile) of+                      { !_tlOoutputfile ->+                      (case (_lhsIoptions) of+                       { !_tlOoptions ->+                       (case (_lhsInested) of+                        { !_tlOnested ->+                        (case (_lhsIoutputfile) of+                         { !_hdOoutputfile ->+                         (case (_lhsIoptions) of+                          { !_hdOoptions ->+                          (case (_lhsInested) of+                           { !_hdOnested ->+                           (case ((tl_ _tlOnested _tlOoptions _tlOoutputfile)) of+                            { ( !_tlIpps) ->+                            (case ((hd_ _hdOnested _hdOoptions _hdOoutputfile)) of+                             { ( !_hdIpps) ->+                             (case (_hdIpps ++ _tlIpps) of+                              { !_lhsOpps ->+                              ( _lhsOpps) }) }) }) }) }) }) }) }) })))+sem_CaseAlts_Nil :: T_CaseAlts+sem_CaseAlts_Nil  =+    (T_CaseAlts (\ (!_lhsInested)+                   (!_lhsIoptions)+                   (!_lhsIoutputfile) ->+                     (case ([]) of+                      { !_lhsOpps ->+                      ( _lhsOpps) })))+-- Chunk -------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         importBlocks         : PP_Doc+         isDeclOfLet          : Bool+         mainFile             : String+         mainName             : String+         moduleHeader         : String -> String -> String -> Bool -> String+         nested               : Bool+         options              : Options+         optionsLine          : String+         pragmaBlocks         : String+         textBlockMap         : Map BlockInfo PP_Doc+         textBlocks           : PP_Doc+      synthesized attributes:+         appendCommon         : [[PP_Doc]]+         appendMain           : [[PP_Doc]]+         genSems              : IO ()+         imports              : [String]+         pps                  : PP_Docs+   alternatives:+      alternative Chunk:+         child name           : {String}+         child comment        : Decl+         child info           : Decls+         child dataDef        : Decls+         child cataFun        : Decls+         child semDom         : Decls+         child semWrapper     : Decls+         child semFunctions   : Decls+         child semNames       : {[String]}+         visit 0:+            local outputfile  : _+            local exports     : _+-}+-- cata+sem_Chunk :: Chunk ->+             T_Chunk+sem_Chunk !(Chunk _name _comment _info _dataDef _cataFun _semDom _semWrapper _semFunctions _semNames) =+    (sem_Chunk_Chunk _name (sem_Decl _comment) (sem_Decls _info) (sem_Decls _dataDef) (sem_Decls _cataFun) (sem_Decls _semDom) (sem_Decls _semWrapper) (sem_Decls _semFunctions) _semNames)+-- semantic domain+newtype T_Chunk = T_Chunk (PP_Doc ->+                           Bool ->+                           String ->+                           String ->+                           (String -> String -> String -> Bool -> String) ->+                           Bool ->+                           Options ->+                           String ->+                           String ->+                           (Map BlockInfo PP_Doc) ->+                           PP_Doc ->+                           ( ([[PP_Doc]]),([[PP_Doc]]),(IO ()),([String]),PP_Docs))+data Inh_Chunk = Inh_Chunk {importBlocks_Inh_Chunk :: !(PP_Doc),isDeclOfLet_Inh_Chunk :: !(Bool),mainFile_Inh_Chunk :: !(String),mainName_Inh_Chunk :: !(String),moduleHeader_Inh_Chunk :: !(String -> String -> String -> Bool -> String),nested_Inh_Chunk :: !(Bool),options_Inh_Chunk :: !(Options),optionsLine_Inh_Chunk :: !(String),pragmaBlocks_Inh_Chunk :: !(String),textBlockMap_Inh_Chunk :: !(Map BlockInfo PP_Doc),textBlocks_Inh_Chunk :: !(PP_Doc)}+data Syn_Chunk = Syn_Chunk {appendCommon_Syn_Chunk :: !([[PP_Doc]]),appendMain_Syn_Chunk :: !([[PP_Doc]]),genSems_Syn_Chunk :: !(IO ()),imports_Syn_Chunk :: !([String]),pps_Syn_Chunk :: !(PP_Docs)}+wrap_Chunk !(T_Chunk sem) !(Inh_Chunk _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks) =+    (let ( !_lhsOappendCommon,!_lhsOappendMain,!_lhsOgenSems,!_lhsOimports,!_lhsOpps) =+             (sem _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks)+     in  (Syn_Chunk _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps))+sem_Chunk_Chunk :: String ->+                   T_Decl ->+                   T_Decls ->+                   T_Decls ->+                   T_Decls ->+                   T_Decls ->+                   T_Decls ->+                   T_Decls ->+                   ([String]) ->+                   T_Chunk+sem_Chunk_Chunk !name_ !(T_Decl comment_) !(T_Decls info_) !(T_Decls dataDef_) !(T_Decls cataFun_) !(T_Decls semDom_) !(T_Decls semWrapper_) !(T_Decls semFunctions_) !semNames_ =+    (T_Chunk (\ (!_lhsIimportBlocks)+                (!_lhsIisDeclOfLet)+                (!_lhsImainFile)+                (!_lhsImainName)+                (!_lhsImoduleHeader)+                (!_lhsInested)+                (!_lhsIoptions)+                (!_lhsIoptionsLine)+                (!_lhsIpragmaBlocks)+                (!_lhsItextBlockMap)+                (!_lhsItextBlocks) ->+                  (case (if sepSemMods _lhsIoptions+                         then _lhsImainFile ++ "_" ++ name_ ++ ".hs"+                         else _lhsImainFile ++ ".hs") of+                   { !_outputfile ->+                   (case (_outputfile) of+                    { !_semDomOoutputfile ->+                    (case (_lhsIoptions) of+                     { !_semDomOoptions ->+                     (case (_lhsInested) of+                      { !_semDomOnested ->+                      (case (_lhsIisDeclOfLet) of+                       { !_semDomOisDeclOfLet ->+                       (case (_outputfile) of+                        { !_dataDefOoutputfile ->+                        (case (_lhsIoptions) of+                         { !_dataDefOoptions ->+                         (case (_lhsInested) of+                          { !_dataDefOnested ->+                          (case (_lhsIisDeclOfLet) of+                           { !_dataDefOisDeclOfLet ->+                           (case (_outputfile) of+                            { !_commentOoutputfile ->+                            (case (_lhsIoptions) of+                             { !_commentOoptions ->+                             (case (_lhsInested) of+                              { !_commentOnested ->+                              (case (_lhsIisDeclOfLet) of+                               { !_commentOisDeclOfLet ->+                               (case ((semDom_ _semDomOisDeclOfLet _semDomOnested _semDomOoptions _semDomOoutputfile)) of+                                { ( !_semDomIpps) ->+                                (case ((dataDef_ _dataDefOisDeclOfLet _dataDefOnested _dataDefOoptions _dataDefOoutputfile)) of+                                 { ( !_dataDefIpps) ->+                                 (case ((comment_ _commentOisDeclOfLet _commentOnested _commentOoptions _commentOoutputfile)) of+                                  { ( !_commentIpp) ->+                                  (case ([ [_commentIpp]+                                         , _dataDefIpps+                                         , _semDomIpps+                                         ]) of+                                   { !_lhsOappendCommon ->+                                   (case (_outputfile) of+                                    { !_semWrapperOoutputfile ->+                                    (case (_lhsIoptions) of+                                     { !_semWrapperOoptions ->+                                     (case (_lhsInested) of+                                      { !_semWrapperOnested ->+                                      (case (_lhsIisDeclOfLet) of+                                       { !_semWrapperOisDeclOfLet ->+                                       (case (_outputfile) of+                                        { !_cataFunOoutputfile ->+                                        (case (_lhsIoptions) of+                                         { !_cataFunOoptions ->+                                         (case (_lhsInested) of+                                          { !_cataFunOnested ->+                                          (case (_lhsIisDeclOfLet) of+                                           { !_cataFunOisDeclOfLet ->+                                           (case ((semWrapper_ _semWrapperOisDeclOfLet _semWrapperOnested _semWrapperOoptions _semWrapperOoutputfile)) of+                                            { ( !_semWrapperIpps) ->+                                            (case ((cataFun_ _cataFunOisDeclOfLet _cataFunOnested _cataFunOoptions _cataFunOoutputfile)) of+                                             { ( !_cataFunIpps) ->+                                             (case ([ [_commentIpp]+                                                    , _cataFunIpps+                                                    , _semWrapperIpps+                                                    ]) of+                                              { !_lhsOappendMain ->+                                              (case (_outputfile) of+                                               { !_semFunctionsOoutputfile ->+                                               (case (_lhsIoptions) of+                                                { !_semFunctionsOoptions ->+                                                (case (_lhsInested) of+                                                 { !_semFunctionsOnested ->+                                                 (case (_lhsIisDeclOfLet) of+                                                  { !_semFunctionsOisDeclOfLet ->+                                                  (case (_outputfile) of+                                                   { !_infoOoutputfile ->+                                                   (case (_lhsIoptions) of+                                                    { !_infoOoptions ->+                                                    (case (_lhsInested) of+                                                     { !_infoOnested ->+                                                     (case (_lhsIisDeclOfLet) of+                                                      { !_infoOisDeclOfLet ->+                                                      (case (concat $ intersperse "," semNames_) of+                                                       { !_exports ->+                                                       (case ((semFunctions_ _semFunctionsOisDeclOfLet _semFunctionsOnested _semFunctionsOoptions _semFunctionsOoutputfile)) of+                                                        { ( !_semFunctionsIpps) ->+                                                        (case ((info_ _infoOisDeclOfLet _infoOnested _infoOoptions _infoOoutputfile)) of+                                                         { ( !_infoIpps) ->+                                                         (case (writeModule _outputfile+                                                                  [ pp $ _lhsIpragmaBlocks+                                                                  , pp $ Map.findWithDefault empty (BlockPragma, Just $ identifier name_) _lhsItextBlockMap+                                                                  , pp $ _lhsIoptionsLine+                                                                  , pp $ _lhsImoduleHeader _lhsImainName ("_" ++ name_) _exports     True+                                                                  , pp $ ("import " ++ _lhsImainName ++ "_common\n")+                                                                  , pp $ Map.findWithDefault empty (BlockImport, Just $ identifier name_) _lhsItextBlockMap+                                                                  , _commentIpp+                                                                  , vlist_sep "" _infoIpps+                                                                  , vlist_sep "" _semFunctionsIpps+                                                                  , Map.findWithDefault empty (BlockOther, Just $ identifier name_) _lhsItextBlockMap+                                                                  ]) of+                                                          { !_lhsOgenSems ->+                                                          (case (["import " ++ _lhsImainName ++ "_" ++ name_ ++ "\n"]) of+                                                           { !_lhsOimports ->+                                                           (case (_commentIpp+                                                                  :  _infoIpps+                                                                  ++ _dataDefIpps+                                                                  ++ _cataFunIpps+                                                                  ++ _semDomIpps+                                                                  ++ _semWrapperIpps+                                                                  ++ _semFunctionsIpps+                                                                  ++ [Map.findWithDefault empty (BlockOther, Just $ identifier name_) _lhsItextBlockMap]) of+                                                            { !_lhsOpps ->+                                                            ( _lhsOappendCommon,_lhsOappendMain,_lhsOgenSems,_lhsOimports,_lhsOpps) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+-- Chunks ------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         importBlocks         : PP_Doc+         isDeclOfLet          : Bool+         mainFile             : String+         mainName             : String+         moduleHeader         : String -> String -> String -> Bool -> String+         nested               : Bool+         options              : Options+         optionsLine          : String+         pragmaBlocks         : String+         textBlockMap         : Map BlockInfo PP_Doc+         textBlocks           : PP_Doc+      synthesized attributes:+         appendCommon         : [[PP_Doc]]+         appendMain           : [[PP_Doc]]+         genSems              : IO ()+         imports              : [String]+         pps                  : PP_Docs+   alternatives:+      alternative Cons:+         child hd             : Chunk+         child tl             : Chunks+      alternative Nil:+-}+-- cata+sem_Chunks :: Chunks ->+              T_Chunks+sem_Chunks !list =+    (Prelude.foldr sem_Chunks_Cons sem_Chunks_Nil (Prelude.map sem_Chunk list))+-- semantic domain+newtype T_Chunks = T_Chunks (PP_Doc ->+                             Bool ->+                             String ->+                             String ->+                             (String -> String -> String -> Bool -> String) ->+                             Bool ->+                             Options ->+                             String ->+                             String ->+                             (Map BlockInfo PP_Doc) ->+                             PP_Doc ->+                             ( ([[PP_Doc]]),([[PP_Doc]]),(IO ()),([String]),PP_Docs))+data Inh_Chunks = Inh_Chunks {importBlocks_Inh_Chunks :: !(PP_Doc),isDeclOfLet_Inh_Chunks :: !(Bool),mainFile_Inh_Chunks :: !(String),mainName_Inh_Chunks :: !(String),moduleHeader_Inh_Chunks :: !(String -> String -> String -> Bool -> String),nested_Inh_Chunks :: !(Bool),options_Inh_Chunks :: !(Options),optionsLine_Inh_Chunks :: !(String),pragmaBlocks_Inh_Chunks :: !(String),textBlockMap_Inh_Chunks :: !(Map BlockInfo PP_Doc),textBlocks_Inh_Chunks :: !(PP_Doc)}+data Syn_Chunks = Syn_Chunks {appendCommon_Syn_Chunks :: !([[PP_Doc]]),appendMain_Syn_Chunks :: !([[PP_Doc]]),genSems_Syn_Chunks :: !(IO ()),imports_Syn_Chunks :: !([String]),pps_Syn_Chunks :: !(PP_Docs)}+wrap_Chunks !(T_Chunks sem) !(Inh_Chunks _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks) =+    (let ( !_lhsOappendCommon,!_lhsOappendMain,!_lhsOgenSems,!_lhsOimports,!_lhsOpps) =+             (sem _lhsIimportBlocks _lhsIisDeclOfLet _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInested _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks)+     in  (Syn_Chunks _lhsOappendCommon _lhsOappendMain _lhsOgenSems _lhsOimports _lhsOpps))+sem_Chunks_Cons :: T_Chunk ->+                   T_Chunks ->+                   T_Chunks+sem_Chunks_Cons !(T_Chunk hd_) !(T_Chunks tl_) =+    (T_Chunks (\ (!_lhsIimportBlocks)+                 (!_lhsIisDeclOfLet)+                 (!_lhsImainFile)+                 (!_lhsImainName)+                 (!_lhsImoduleHeader)+                 (!_lhsInested)+                 (!_lhsIoptions)+                 (!_lhsIoptionsLine)+                 (!_lhsIpragmaBlocks)+                 (!_lhsItextBlockMap)+                 (!_lhsItextBlocks) ->+                   (case (_lhsIoptions) of+                    { !_tlOoptions ->+                    (case (_lhsInested) of+                     { !_tlOnested ->+                     (case (_lhsImainFile) of+                      { !_tlOmainFile ->+                      (case (_lhsIisDeclOfLet) of+                       { !_tlOisDeclOfLet ->+                       (case (_lhsIoptions) of+                        { !_hdOoptions ->+                        (case (_lhsInested) of+                         { !_hdOnested ->+                         (case (_lhsImainFile) of+                          { !_hdOmainFile ->+                          (case (_lhsIisDeclOfLet) of+                           { !_hdOisDeclOfLet ->+                           (case (_lhsItextBlocks) of+                            { !_tlOtextBlocks ->+                            (case (_lhsItextBlockMap) of+                             { !_tlOtextBlockMap ->+                             (case (_lhsIpragmaBlocks) of+                              { !_tlOpragmaBlocks ->+                              (case (_lhsIoptionsLine) of+                               { !_tlOoptionsLine ->+                               (case (_lhsImoduleHeader) of+                                { !_tlOmoduleHeader ->+                                (case (_lhsImainName) of+                                 { !_tlOmainName ->+                                 (case (_lhsIimportBlocks) of+                                  { !_tlOimportBlocks ->+                                  (case ((tl_ _tlOimportBlocks _tlOisDeclOfLet _tlOmainFile _tlOmainName _tlOmoduleHeader _tlOnested _tlOoptions _tlOoptionsLine _tlOpragmaBlocks _tlOtextBlockMap _tlOtextBlocks)) of+                                   { ( !_tlIappendCommon,!_tlIappendMain,!_tlIgenSems,!_tlIimports,!_tlIpps) ->+                                   (case (_lhsItextBlocks) of+                                    { !_hdOtextBlocks ->+                                    (case (_lhsItextBlockMap) of+                                     { !_hdOtextBlockMap ->+                                     (case (_lhsIpragmaBlocks) of+                                      { !_hdOpragmaBlocks ->+                                      (case (_lhsIoptionsLine) of+                                       { !_hdOoptionsLine ->+                                       (case (_lhsImoduleHeader) of+                                        { !_hdOmoduleHeader ->+                                        (case (_lhsImainName) of+                                         { !_hdOmainName ->+                                         (case (_lhsIimportBlocks) of+                                          { !_hdOimportBlocks ->+                                          (case ((hd_ _hdOimportBlocks _hdOisDeclOfLet _hdOmainFile _hdOmainName _hdOmoduleHeader _hdOnested _hdOoptions _hdOoptionsLine _hdOpragmaBlocks _hdOtextBlockMap _hdOtextBlocks)) of+                                           { ( !_hdIappendCommon,!_hdIappendMain,!_hdIgenSems,!_hdIimports,!_hdIpps) ->+                                           (case (_hdIappendCommon ++ _tlIappendCommon) of+                                            { !_lhsOappendCommon ->+                                            (case (_hdIappendMain ++ _tlIappendMain) of+                                             { !_lhsOappendMain ->+                                             (case (_hdIgenSems >> _tlIgenSems) of+                                              { !_lhsOgenSems ->+                                              (case (_hdIimports ++ _tlIimports) of+                                               { !_lhsOimports ->+                                               (case (_hdIpps ++ _tlIpps) of+                                                { !_lhsOpps ->+                                                ( _lhsOappendCommon,_lhsOappendMain,_lhsOgenSems,_lhsOimports,_lhsOpps) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Chunks_Nil :: T_Chunks+sem_Chunks_Nil  =+    (T_Chunks (\ (!_lhsIimportBlocks)+                 (!_lhsIisDeclOfLet)+                 (!_lhsImainFile)+                 (!_lhsImainName)+                 (!_lhsImoduleHeader)+                 (!_lhsInested)+                 (!_lhsIoptions)+                 (!_lhsIoptionsLine)+                 (!_lhsIpragmaBlocks)+                 (!_lhsItextBlockMap)+                 (!_lhsItextBlocks) ->+                   (case ([]) of+                    { !_lhsOappendCommon ->+                    (case ([]) of+                     { !_lhsOappendMain ->+                     (case (return ()) of+                      { !_lhsOgenSems ->+                      (case ([]) of+                       { !_lhsOimports ->+                       (case ([]) of+                        { !_lhsOpps ->+                        ( _lhsOappendCommon,_lhsOappendMain,_lhsOgenSems,_lhsOimports,_lhsOpps) }) }) }) }) })))+-- DataAlt -----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         nested               : Bool+         strictPre            : PP_Doc+      synthesized attribute:+         pp                   : PP_Doc+   alternatives:+      alternative DataAlt:+         child name           : {String}+         child args           : {[String]}+      alternative Record:+         child name           : {String}+         child args           : {[(String,String)]}+-}+-- cata+sem_DataAlt :: DataAlt ->+               T_DataAlt+sem_DataAlt !(DataAlt _name _args) =+    (sem_DataAlt_DataAlt _name _args)+sem_DataAlt !(Record _name _args) =+    (sem_DataAlt_Record _name _args)+-- semantic domain+newtype T_DataAlt = T_DataAlt (Bool ->+                               PP_Doc ->+                               ( PP_Doc))+data Inh_DataAlt = Inh_DataAlt {nested_Inh_DataAlt :: !(Bool),strictPre_Inh_DataAlt :: !(PP_Doc)}+data Syn_DataAlt = Syn_DataAlt {pp_Syn_DataAlt :: !(PP_Doc)}+wrap_DataAlt !(T_DataAlt sem) !(Inh_DataAlt _lhsInested _lhsIstrictPre) =+    (let ( !_lhsOpp) =+             (sem _lhsInested _lhsIstrictPre)+     in  (Syn_DataAlt _lhsOpp))+sem_DataAlt_DataAlt :: String ->+                       ([String]) ->+                       T_DataAlt+sem_DataAlt_DataAlt !name_ !args_ =+    (T_DataAlt (\ (!_lhsInested)+                  (!_lhsIstrictPre) ->+                    (case (name_ >#< hv_sp (map ((_lhsIstrictPre >|<) . pp_parens . text) args_)) of+                     { !_lhsOpp ->+                     ( _lhsOpp) })))+sem_DataAlt_Record :: String ->+                      ([(String,String)]) ->+                      T_DataAlt+sem_DataAlt_Record !name_ !args_ =+    (T_DataAlt (\ (!_lhsInested)+                  (!_lhsIstrictPre) ->+                    (case (name_ >#< pp_block "{" "}" ","+                                              [ f >#< "::" >#< t | (f,t) <- args_ ]) of+                     { !_lhsOpp ->+                     ( _lhsOpp) })))+-- DataAlts ----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         nested               : Bool+         strictPre            : PP_Doc+      synthesized attribute:+         pps                  : PP_Docs+   alternatives:+      alternative Cons:+         child hd             : DataAlt+         child tl             : DataAlts+      alternative Nil:+-}+-- cata+sem_DataAlts :: DataAlts ->+                T_DataAlts+sem_DataAlts !list =+    (Prelude.foldr sem_DataAlts_Cons sem_DataAlts_Nil (Prelude.map sem_DataAlt list))+-- semantic domain+newtype T_DataAlts = T_DataAlts (Bool ->+                                 PP_Doc ->+                                 ( PP_Docs))+data Inh_DataAlts = Inh_DataAlts {nested_Inh_DataAlts :: !(Bool),strictPre_Inh_DataAlts :: !(PP_Doc)}+data Syn_DataAlts = Syn_DataAlts {pps_Syn_DataAlts :: !(PP_Docs)}+wrap_DataAlts !(T_DataAlts sem) !(Inh_DataAlts _lhsInested _lhsIstrictPre) =+    (let ( !_lhsOpps) =+             (sem _lhsInested _lhsIstrictPre)+     in  (Syn_DataAlts _lhsOpps))+sem_DataAlts_Cons :: T_DataAlt ->+                     T_DataAlts ->+                     T_DataAlts+sem_DataAlts_Cons !(T_DataAlt hd_) !(T_DataAlts tl_) =+    (T_DataAlts (\ (!_lhsInested)+                   (!_lhsIstrictPre) ->+                     (case (_lhsIstrictPre) of+                      { !_tlOstrictPre ->+                      (case (_lhsIstrictPre) of+                       { !_hdOstrictPre ->+                       (case (_lhsInested) of+                        { !_tlOnested ->+                        (case ((tl_ _tlOnested _tlOstrictPre)) of+                         { ( !_tlIpps) ->+                         (case (_lhsInested) of+                          { !_hdOnested ->+                          (case ((hd_ _hdOnested _hdOstrictPre)) of+                           { ( !_hdIpp) ->+                           (case (_hdIpp : _tlIpps) of+                            { !_lhsOpps ->+                            ( _lhsOpps) }) }) }) }) }) }) })))+sem_DataAlts_Nil :: T_DataAlts+sem_DataAlts_Nil  =+    (T_DataAlts (\ (!_lhsInested)+                   (!_lhsIstrictPre) ->+                     (case ([]) of+                      { !_lhsOpps ->+                      ( _lhsOpps) })))+-- Decl --------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         isDeclOfLet          : Bool+         nested               : Bool+         options              : Options+         outputfile           : String+      synthesized attribute:+         pp                   : PP_Doc+   alternatives:+      alternative Comment:+         child txt            : {String}+      alternative Data:+         child name           : {String}+         child params         : {[String]}+         child alts           : DataAlts+         child strict         : {Bool}+         child derivings      : {[String]}+      alternative Decl:+         child left           : Lhs+         child rhs            : Expr+         child binds          : {Set String}+         child uses           : {Set String}+      alternative NewType:+         child name           : {String}+         child params         : {[String]}+         child con            : {String}+         child tp             : Type+      alternative PragmaDecl:+         child txt            : {String}+      alternative TSig:+         child name           : {String}+         child tp             : Type+      alternative Type:+         child name           : {String}+         child params         : {[String]}+         child tp             : Type+-}+-- cata+sem_Decl :: Decl ->+            T_Decl+sem_Decl !(Comment _txt) =+    (sem_Decl_Comment _txt)+sem_Decl !(Data _name _params _alts _strict _derivings) =+    (sem_Decl_Data _name _params (sem_DataAlts _alts) _strict _derivings)+sem_Decl !(Decl _left _rhs _binds _uses) =+    (sem_Decl_Decl (sem_Lhs _left) (sem_Expr _rhs) _binds _uses)+sem_Decl !(NewType _name _params _con _tp) =+    (sem_Decl_NewType _name _params _con (sem_Type _tp))+sem_Decl !(PragmaDecl _txt) =+    (sem_Decl_PragmaDecl _txt)+sem_Decl !(TSig _name _tp) =+    (sem_Decl_TSig _name (sem_Type _tp))+sem_Decl !(Type _name _params _tp) =+    (sem_Decl_Type _name _params (sem_Type _tp))+-- semantic domain+newtype T_Decl = T_Decl (Bool ->+                         Bool ->+                         Options ->+                         String ->+                         ( PP_Doc))+data Inh_Decl = Inh_Decl {isDeclOfLet_Inh_Decl :: !(Bool),nested_Inh_Decl :: !(Bool),options_Inh_Decl :: !(Options),outputfile_Inh_Decl :: !(String)}+data Syn_Decl = Syn_Decl {pp_Syn_Decl :: !(PP_Doc)}+wrap_Decl !(T_Decl sem) !(Inh_Decl _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile) =+    (let ( !_lhsOpp) =+             (sem _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile)+     in  (Syn_Decl _lhsOpp))+sem_Decl_Comment :: String ->+                    T_Decl+sem_Decl_Comment !txt_ =+    (T_Decl (\ (!_lhsIisDeclOfLet)+               (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (if '\n' `elem` txt_+                          then "{-" >-< vlist (lines txt_) >-< "-}"+                          else "--" >#< txt_) of+                  { !_lhsOpp ->+                  ( _lhsOpp) })))+sem_Decl_Data :: String ->+                 ([String]) ->+                 T_DataAlts ->+                 Bool ->+                 ([String]) ->+                 T_Decl+sem_Decl_Data !name_ !params_ !(T_DataAlts alts_) !strict_ !derivings_ =+    (T_Decl (\ (!_lhsIisDeclOfLet)+               (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (if strict_ then pp "!" else empty) of+                  { !_altsOstrictPre ->+                  (case (_lhsInested) of+                   { !_altsOnested ->+                   (case ((alts_ _altsOnested _altsOstrictPre)) of+                    { ( !_altsIpps) ->+                    (case ("data" >#< hv_sp (name_ : params_)+                           >#<  ( case _altsIpps of+                                        [] -> empty+                                        (x:xs) ->              "=" >#<  x+                                               >-< vlist (map ("|" >#<) xs)+                                   >-< if null derivings_+                                          then empty+                                          else "deriving" >#< ppTuple False (map text derivings_)+                                )) of+                     { !_lhsOpp ->+                     ( _lhsOpp) }) }) }) })))+sem_Decl_Decl :: T_Lhs ->+                 T_Expr ->+                 (Set String) ->+                 (Set String) ->+                 T_Decl+sem_Decl_Decl !(T_Lhs left_) !(T_Expr rhs_) !binds_ !uses_ =+    (T_Decl (\ (!_lhsIisDeclOfLet)+               (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (_lhsIoutputfile) of+                  { !_rhsOoutputfile ->+                  (case (_lhsIoptions) of+                   { !_rhsOoptions ->+                   (case (_lhsInested) of+                    { !_rhsOnested ->+                    (case (_lhsIoutputfile) of+                     { !_leftOoutputfile ->+                     (case (_lhsIoptions) of+                      { !_leftOoptions ->+                      (case (_lhsInested) of+                       { !_leftOnested ->+                       (case (_lhsIisDeclOfLet) of+                        { !_leftOisDeclOfLet ->+                        (case ((rhs_ _rhsOnested _rhsOoptions _rhsOoutputfile)) of+                         { ( !_rhsIpp) ->+                         (case ((left_ _leftOisDeclOfLet _leftOnested _leftOoptions _leftOoutputfile)) of+                          { ( !_leftIpp) ->+                          (case (_leftIpp >#< "="+                                 >-< indent 4 _rhsIpp) of+                           { !_lhsOpp ->+                           ( _lhsOpp) }) }) }) }) }) }) }) }) }) })))+sem_Decl_NewType :: String ->+                    ([String]) ->+                    String ->+                    T_Type ->+                    T_Decl+sem_Decl_NewType !name_ !params_ !con_ !(T_Type tp_) =+    (T_Decl (\ (!_lhsIisDeclOfLet)+               (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (_lhsInested) of+                  { !_tpOnested ->+                  (case ((tp_ _tpOnested)) of+                   { ( !_tpIpp,!_tpIprec) ->+                   (case ("newtype" >#< hv_sp (name_ : params_) >#< "=" >#< con_ >#< pp_parens _tpIpp) of+                    { !_lhsOpp ->+                    ( _lhsOpp) }) }) })))+sem_Decl_PragmaDecl :: String ->+                       T_Decl+sem_Decl_PragmaDecl !txt_ =+    (T_Decl (\ (!_lhsIisDeclOfLet)+               (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case ("{-#" >#< text txt_ >#< "#-}") of+                  { !_lhsOpp ->+                  ( _lhsOpp) })))+sem_Decl_TSig :: String ->+                 T_Type ->+                 T_Decl+sem_Decl_TSig !name_ !(T_Type tp_) =+    (T_Decl (\ (!_lhsIisDeclOfLet)+               (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (_lhsInested) of+                  { !_tpOnested ->+                  (case ((tp_ _tpOnested)) of+                   { ( !_tpIpp,!_tpIprec) ->+                   (case (name_ >#< "::" >#< _tpIpp) of+                    { !_lhsOpp ->+                    ( _lhsOpp) }) }) })))+sem_Decl_Type :: String ->+                 ([String]) ->+                 T_Type ->+                 T_Decl+sem_Decl_Type !name_ !params_ !(T_Type tp_) =+    (T_Decl (\ (!_lhsIisDeclOfLet)+               (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (_lhsInested) of+                  { !_tpOnested ->+                  (case ((tp_ _tpOnested)) of+                   { ( !_tpIpp,!_tpIprec) ->+                   (case ("type" >#< hv_sp (name_ : params_) >#< "=" >#<  _tpIpp) of+                    { !_lhsOpp ->+                    ( _lhsOpp) }) }) })))+-- Decls -------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         isDeclOfLet          : Bool+         nested               : Bool+         options              : Options+         outputfile           : String+      synthesized attribute:+         pps                  : PP_Docs+   alternatives:+      alternative Cons:+         child hd             : Decl+         child tl             : Decls+      alternative Nil:+-}+-- cata+sem_Decls :: Decls ->+             T_Decls+sem_Decls !list =+    (Prelude.foldr sem_Decls_Cons sem_Decls_Nil (Prelude.map sem_Decl list))+-- semantic domain+newtype T_Decls = T_Decls (Bool ->+                           Bool ->+                           Options ->+                           String ->+                           ( PP_Docs))+data Inh_Decls = Inh_Decls {isDeclOfLet_Inh_Decls :: !(Bool),nested_Inh_Decls :: !(Bool),options_Inh_Decls :: !(Options),outputfile_Inh_Decls :: !(String)}+data Syn_Decls = Syn_Decls {pps_Syn_Decls :: !(PP_Docs)}+wrap_Decls !(T_Decls sem) !(Inh_Decls _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile) =+    (let ( !_lhsOpps) =+             (sem _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile)+     in  (Syn_Decls _lhsOpps))+sem_Decls_Cons :: T_Decl ->+                  T_Decls ->+                  T_Decls+sem_Decls_Cons !(T_Decl hd_) !(T_Decls tl_) =+    (T_Decls (\ (!_lhsIisDeclOfLet)+                (!_lhsInested)+                (!_lhsIoptions)+                (!_lhsIoutputfile) ->+                  (case (_lhsIoutputfile) of+                   { !_tlOoutputfile ->+                   (case (_lhsIoptions) of+                    { !_tlOoptions ->+                    (case (_lhsInested) of+                     { !_tlOnested ->+                     (case (_lhsIisDeclOfLet) of+                      { !_tlOisDeclOfLet ->+                      (case (_lhsIoutputfile) of+                       { !_hdOoutputfile ->+                       (case (_lhsIoptions) of+                        { !_hdOoptions ->+                        (case (_lhsInested) of+                         { !_hdOnested ->+                         (case (_lhsIisDeclOfLet) of+                          { !_hdOisDeclOfLet ->+                          (case ((tl_ _tlOisDeclOfLet _tlOnested _tlOoptions _tlOoutputfile)) of+                           { ( !_tlIpps) ->+                           (case ((hd_ _hdOisDeclOfLet _hdOnested _hdOoptions _hdOoutputfile)) of+                            { ( !_hdIpp) ->+                            (case (_hdIpp : _tlIpps) of+                             { !_lhsOpps ->+                             ( _lhsOpps) }) }) }) }) }) }) }) }) }) }) })))+sem_Decls_Nil :: T_Decls+sem_Decls_Nil  =+    (T_Decls (\ (!_lhsIisDeclOfLet)+                (!_lhsInested)+                (!_lhsIoptions)+                (!_lhsIoutputfile) ->+                  (case ([]) of+                   { !_lhsOpps ->+                   ( _lhsOpps) })))+-- Expr --------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         nested               : Bool+         options              : Options+         outputfile           : String+      synthesized attribute:+         pp                   : PP_Doc+   alternatives:+      alternative App:+         child name           : {String}+         child args           : Exprs+      alternative Case:+         child expr           : Expr+         child alts           : CaseAlts+      alternative Lambda:+         child args           : Exprs+         child body           : Expr+         visit 0:+            local addBang     : _+            local strictParams : _+      alternative Let:+         child decls          : Decls+         child body           : Expr+      alternative LineExpr:+         child expr           : Expr+      alternative PragmaExpr:+         child onLeftSide     : {Bool}+         child onNewLine      : {Bool}+         child txt            : {String}+         child expr           : Expr+      alternative SimpleExpr:+         child txt            : {String}+      alternative TextExpr:+         child lns            : {[String]}+      alternative Trace:+         child txt            : {String}+         child expr           : Expr+      alternative TupleExpr:+         child exprs          : Exprs+      alternative TypedExpr:+         child expr           : Expr+         child tp             : Type+      alternative UnboxedTupleExpr:+         child exprs          : Exprs+-}+-- cata+sem_Expr :: Expr ->+            T_Expr+sem_Expr !(App _name _args) =+    (sem_Expr_App _name (sem_Exprs _args))+sem_Expr !(Case _expr _alts) =+    (sem_Expr_Case (sem_Expr _expr) (sem_CaseAlts _alts))+sem_Expr !(Lambda _args _body) =+    (sem_Expr_Lambda (sem_Exprs _args) (sem_Expr _body))+sem_Expr !(Let _decls _body) =+    (sem_Expr_Let (sem_Decls _decls) (sem_Expr _body))+sem_Expr !(LineExpr _expr) =+    (sem_Expr_LineExpr (sem_Expr _expr))+sem_Expr !(PragmaExpr _onLeftSide _onNewLine _txt _expr) =+    (sem_Expr_PragmaExpr _onLeftSide _onNewLine _txt (sem_Expr _expr))+sem_Expr !(SimpleExpr _txt) =+    (sem_Expr_SimpleExpr _txt)+sem_Expr !(TextExpr _lns) =+    (sem_Expr_TextExpr _lns)+sem_Expr !(Trace _txt _expr) =+    (sem_Expr_Trace _txt (sem_Expr _expr))+sem_Expr !(TupleExpr _exprs) =+    (sem_Expr_TupleExpr (sem_Exprs _exprs))+sem_Expr !(TypedExpr _expr _tp) =+    (sem_Expr_TypedExpr (sem_Expr _expr) (sem_Type _tp))+sem_Expr !(UnboxedTupleExpr _exprs) =+    (sem_Expr_UnboxedTupleExpr (sem_Exprs _exprs))+-- semantic domain+newtype T_Expr = T_Expr (Bool ->+                         Options ->+                         String ->+                         ( PP_Doc))+data Inh_Expr = Inh_Expr {nested_Inh_Expr :: !(Bool),options_Inh_Expr :: !(Options),outputfile_Inh_Expr :: !(String)}+data Syn_Expr = Syn_Expr {pp_Syn_Expr :: !(PP_Doc)}+wrap_Expr !(T_Expr sem) !(Inh_Expr _lhsInested _lhsIoptions _lhsIoutputfile) =+    (let ( !_lhsOpp) =+             (sem _lhsInested _lhsIoptions _lhsIoutputfile)+     in  (Syn_Expr _lhsOpp))+sem_Expr_App :: String ->+                T_Exprs ->+                T_Expr+sem_Expr_App !name_ !(T_Exprs args_) =+    (T_Expr (\ (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (_lhsIoutputfile) of+                  { !_argsOoutputfile ->+                  (case (_lhsIoptions) of+                   { !_argsOoptions ->+                   (case (_lhsInested) of+                    { !_argsOnested ->+                    (case ((args_ _argsOnested _argsOoptions _argsOoutputfile)) of+                     { ( !_argsIpps) ->+                     (case (pp_parens $ name_ >#< hv_sp _argsIpps) of+                      { !_lhsOpp ->+                      ( _lhsOpp) }) }) }) }) })))+sem_Expr_Case :: T_Expr ->+                 T_CaseAlts ->+                 T_Expr+sem_Expr_Case !(T_Expr expr_) !(T_CaseAlts alts_) =+    (T_Expr (\ (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (_lhsIoutputfile) of+                  { !_altsOoutputfile ->+                  (case (_lhsIoptions) of+                   { !_altsOoptions ->+                   (case (_lhsInested) of+                    { !_altsOnested ->+                    (case (_lhsIoutputfile) of+                     { !_exprOoutputfile ->+                     (case (_lhsIoptions) of+                      { !_exprOoptions ->+                      (case (_lhsInested) of+                       { !_exprOnested ->+                       (case ((alts_ _altsOnested _altsOoptions _altsOoutputfile)) of+                        { ( !_altsIpps) ->+                        (case ((expr_ _exprOnested _exprOoptions _exprOoutputfile)) of+                         { ( !_exprIpp) ->+                         (case (pp_parens (    "case" >#< pp_parens _exprIpp >#< "of"+                                          >-< (vlist _altsIpps)+                                          )) of+                          { !_lhsOpp ->+                          ( _lhsOpp) }) }) }) }) }) }) }) }) })))+sem_Expr_Lambda :: T_Exprs ->+                   T_Expr ->+                   T_Expr+sem_Expr_Lambda !(T_Exprs args_) !(T_Expr body_) =+    (T_Expr (\ (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (_lhsIoutputfile) of+                  { !_bodyOoutputfile ->+                  (case (_lhsIoptions) of+                   { !_bodyOoptions ->+                   (case (_lhsInested) of+                    { !_bodyOnested ->+                    (case (_lhsIoutputfile) of+                     { !_argsOoutputfile ->+                     (case (_lhsIoptions) of+                      { !_argsOoptions ->+                      (case (_lhsInested) of+                       { !_argsOnested ->+                       (case (if bangpats _lhsIoptions+                              then \p -> pp_parens ("!" >|< p)+                              else id) of+                        { !_addBang ->+                        (case ((args_ _argsOnested _argsOoptions _argsOoutputfile)) of+                         { ( !_argsIpps) ->+                         (case (if strictSems _lhsIoptions+                                then _argsIpps+                                else []) of+                          { !_strictParams ->+                          (case ((body_ _bodyOnested _bodyOoptions _bodyOoutputfile)) of+                           { ( !_bodyIpp) ->+                           (case (pp_parens (    "\\" >#< (vlist (map _addBang     _argsIpps)) >#< "->"+                                            >-< indent 4 (_strictParams     `ppMultiSeqV` _bodyIpp)+                                            )) of+                            { !_lhsOpp ->+                            ( _lhsOpp) }) }) }) }) }) }) }) }) }) }) })))+sem_Expr_Let :: T_Decls ->+                T_Expr ->+                T_Expr+sem_Expr_Let !(T_Decls decls_) !(T_Expr body_) =+    (T_Expr (\ (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (_lhsIoutputfile) of+                  { !_bodyOoutputfile ->+                  (case (_lhsIoptions) of+                   { !_bodyOoptions ->+                   (case (_lhsInested) of+                    { !_bodyOnested ->+                    (case (_lhsIoutputfile) of+                     { !_declsOoutputfile ->+                     (case (_lhsIoptions) of+                      { !_declsOoptions ->+                      (case (_lhsInested) of+                       { !_declsOnested ->+                       (case (True) of+                        { !_declsOisDeclOfLet ->+                        (case ((body_ _bodyOnested _bodyOoptions _bodyOoutputfile)) of+                         { ( !_bodyIpp) ->+                         (case ((decls_ _declsOisDeclOfLet _declsOnested _declsOoptions _declsOoutputfile)) of+                          { ( !_declsIpps) ->+                          (case (pp_parens (    "let" >#< (vlist _declsIpps)+                                           >-< "in " >#< _bodyIpp+                                           )) of+                           { !_lhsOpp ->+                           ( _lhsOpp) }) }) }) }) }) }) }) }) }) })))+sem_Expr_LineExpr :: T_Expr ->+                     T_Expr+sem_Expr_LineExpr !(T_Expr expr_) =+    (T_Expr (\ (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (_lhsIoutputfile) of+                  { !_exprOoutputfile ->+                  (case (_lhsIoptions) of+                   { !_exprOoptions ->+                   (case (_lhsInested) of+                    { !_exprOnested ->+                    (case ((expr_ _exprOnested _exprOoptions _exprOoutputfile)) of+                     { ( !_exprIpp) ->+                     (case (_exprIpp >-< "{-# LINE" >#< ppWithLineNr (\n -> pp $ show $ n + 1) >#< show _lhsIoutputfile >#< "#-}") of+                      { !_lhsOpp ->+                      ( _lhsOpp) }) }) }) }) })))+sem_Expr_PragmaExpr :: Bool ->+                       Bool ->+                       String ->+                       T_Expr ->+                       T_Expr+sem_Expr_PragmaExpr !onLeftSide_ !onNewLine_ !txt_ !(T_Expr expr_) =+    (T_Expr (\ (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (_lhsIoutputfile) of+                  { !_exprOoutputfile ->+                  (case (_lhsIoptions) of+                   { !_exprOoptions ->+                   (case (_lhsInested) of+                    { !_exprOnested ->+                    (case ((expr_ _exprOnested _exprOoptions _exprOoutputfile)) of+                     { ( !_exprIpp) ->+                     (case (let pragmaDoc = "{-#" >#< txt_ >#< "#-}"+                                op = if onNewLine_+                                     then (>-<)+                                     else (>#<)+                                leftOp x y = if onLeftSide_+                                             then x `op` y+                                             else y+                                rightOp x y = if onLeftSide_+                                              then x+                                              else x `op` y+                            in pragmaDoc `leftOp` _exprIpp `rightOp` pragmaDoc) of+                      { !_lhsOpp ->+                      ( _lhsOpp) }) }) }) }) })))+sem_Expr_SimpleExpr :: String ->+                       T_Expr+sem_Expr_SimpleExpr !txt_ =+    (T_Expr (\ (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (text txt_) of+                  { !_lhsOpp ->+                  ( _lhsOpp) })))+sem_Expr_TextExpr :: ([String]) ->+                     T_Expr+sem_Expr_TextExpr !lns_ =+    (T_Expr (\ (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (vlist (map text lns_)) of+                  { !_lhsOpp ->+                  ( _lhsOpp) })))+sem_Expr_Trace :: String ->+                  T_Expr ->+                  T_Expr+sem_Expr_Trace !txt_ !(T_Expr expr_) =+    (T_Expr (\ (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (_lhsIoutputfile) of+                  { !_exprOoutputfile ->+                  (case (_lhsIoptions) of+                   { !_exprOoptions ->+                   (case (_lhsInested) of+                    { !_exprOnested ->+                    (case ((expr_ _exprOnested _exprOoptions _exprOoutputfile)) of+                     { ( !_exprIpp) ->+                     (case ("trace" >#< (   pp_parens ("\"" >|< text txt_ >|< "\"")+                                        >-< pp_parens _exprIpp+                                        )) of+                      { !_lhsOpp ->+                      ( _lhsOpp) }) }) }) }) })))+sem_Expr_TupleExpr :: T_Exprs ->+                      T_Expr+sem_Expr_TupleExpr !(T_Exprs exprs_) =+    (T_Expr (\ (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (_lhsIoutputfile) of+                  { !_exprsOoutputfile ->+                  (case (_lhsIoptions) of+                   { !_exprsOoptions ->+                   (case (_lhsInested) of+                    { !_exprsOnested ->+                    (case ((exprs_ _exprsOnested _exprsOoptions _exprsOoutputfile)) of+                     { ( !_exprsIpps) ->+                     (case (ppTuple _lhsInested _exprsIpps) of+                      { !_lhsOpp ->+                      ( _lhsOpp) }) }) }) }) })))+sem_Expr_TypedExpr :: T_Expr ->+                      T_Type ->+                      T_Expr+sem_Expr_TypedExpr !(T_Expr expr_) !(T_Type tp_) =+    (T_Expr (\ (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (_lhsInested) of+                  { !_tpOnested ->+                  (case (_lhsIoutputfile) of+                   { !_exprOoutputfile ->+                   (case (_lhsIoptions) of+                    { !_exprOoptions ->+                    (case (_lhsInested) of+                     { !_exprOnested ->+                     (case ((tp_ _tpOnested)) of+                      { ( !_tpIpp,!_tpIprec) ->+                      (case ((expr_ _exprOnested _exprOoptions _exprOoutputfile)) of+                       { ( !_exprIpp) ->+                       (case (pp_parens (_exprIpp >#< "::" >#< _tpIpp)) of+                        { !_lhsOpp ->+                        ( _lhsOpp) }) }) }) }) }) }) })))+sem_Expr_UnboxedTupleExpr :: T_Exprs ->+                             T_Expr+sem_Expr_UnboxedTupleExpr !(T_Exprs exprs_) =+    (T_Expr (\ (!_lhsInested)+               (!_lhsIoptions)+               (!_lhsIoutputfile) ->+                 (case (_lhsIoutputfile) of+                  { !_exprsOoutputfile ->+                  (case (_lhsIoptions) of+                   { !_exprsOoptions ->+                   (case (_lhsInested) of+                    { !_exprsOnested ->+                    (case ((exprs_ _exprsOnested _exprsOoptions _exprsOoutputfile)) of+                     { ( !_exprsIpps) ->+                     (case (ppUnboxedTuple _lhsInested _exprsIpps) of+                      { !_lhsOpp ->+                      ( _lhsOpp) }) }) }) }) })))+-- Exprs -------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         nested               : Bool+         options              : Options+         outputfile           : String+      synthesized attribute:+         pps                  : PP_Docs+   alternatives:+      alternative Cons:+         child hd             : Expr+         child tl             : Exprs+      alternative Nil:+-}+-- cata+sem_Exprs :: Exprs ->+             T_Exprs+sem_Exprs !list =+    (Prelude.foldr sem_Exprs_Cons sem_Exprs_Nil (Prelude.map sem_Expr list))+-- semantic domain+newtype T_Exprs = T_Exprs (Bool ->+                           Options ->+                           String ->+                           ( PP_Docs))+data Inh_Exprs = Inh_Exprs {nested_Inh_Exprs :: !(Bool),options_Inh_Exprs :: !(Options),outputfile_Inh_Exprs :: !(String)}+data Syn_Exprs = Syn_Exprs {pps_Syn_Exprs :: !(PP_Docs)}+wrap_Exprs !(T_Exprs sem) !(Inh_Exprs _lhsInested _lhsIoptions _lhsIoutputfile) =+    (let ( !_lhsOpps) =+             (sem _lhsInested _lhsIoptions _lhsIoutputfile)+     in  (Syn_Exprs _lhsOpps))+sem_Exprs_Cons :: T_Expr ->+                  T_Exprs ->+                  T_Exprs+sem_Exprs_Cons !(T_Expr hd_) !(T_Exprs tl_) =+    (T_Exprs (\ (!_lhsInested)+                (!_lhsIoptions)+                (!_lhsIoutputfile) ->+                  (case (_lhsIoutputfile) of+                   { !_tlOoutputfile ->+                   (case (_lhsIoptions) of+                    { !_tlOoptions ->+                    (case (_lhsInested) of+                     { !_tlOnested ->+                     (case (_lhsIoutputfile) of+                      { !_hdOoutputfile ->+                      (case (_lhsIoptions) of+                       { !_hdOoptions ->+                       (case (_lhsInested) of+                        { !_hdOnested ->+                        (case ((tl_ _tlOnested _tlOoptions _tlOoutputfile)) of+                         { ( !_tlIpps) ->+                         (case ((hd_ _hdOnested _hdOoptions _hdOoutputfile)) of+                          { ( !_hdIpp) ->+                          (case (_hdIpp : _tlIpps) of+                           { !_lhsOpps ->+                           ( _lhsOpps) }) }) }) }) }) }) }) }) })))+sem_Exprs_Nil :: T_Exprs+sem_Exprs_Nil  =+    (T_Exprs (\ (!_lhsInested)+                (!_lhsIoptions)+                (!_lhsIoutputfile) ->+                  (case ([]) of+                   { !_lhsOpps ->+                   ( _lhsOpps) })))+-- Lhs ---------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         isDeclOfLet          : Bool+         nested               : Bool+         options              : Options+         outputfile           : String+      synthesized attribute:+         pp                   : PP_Doc+   alternatives:+      alternative Fun:+         child name           : {String}+         child args           : Exprs+         visit 0:+            local addBang     : _+            local strictGuard : _+            local hasStrictVars : _+            local addStrictGuard : _+      alternative Pattern3:+         child pat3           : Pattern+         visit 0:+            local hasStrictVars : _+            local strictGuard : _+            local addStrictGuard : _+      alternative Pattern3SM:+         child pat3           : Pattern+      alternative TupleLhs:+         child comps          : {[String]}+         visit 0:+            local addBang     : _+            local hasStrictVars : _+            local strictGuard : _+            local addStrictGuard : _+      alternative UnboxedTupleLhs:+         child comps          : {[String]}+         visit 0:+            local addBang     : _+            local hasStrictVars : _+            local strictGuard : _+            local addStrictGuard : _+-}+-- cata+sem_Lhs :: Lhs ->+           T_Lhs+sem_Lhs !(Fun _name _args) =+    (sem_Lhs_Fun _name (sem_Exprs _args))+sem_Lhs !(Pattern3 _pat3) =+    (sem_Lhs_Pattern3 (sem_Pattern _pat3))+sem_Lhs !(Pattern3SM _pat3) =+    (sem_Lhs_Pattern3SM (sem_Pattern _pat3))+sem_Lhs !(TupleLhs _comps) =+    (sem_Lhs_TupleLhs _comps)+sem_Lhs !(UnboxedTupleLhs _comps) =+    (sem_Lhs_UnboxedTupleLhs _comps)+-- semantic domain+newtype T_Lhs = T_Lhs (Bool ->+                       Bool ->+                       Options ->+                       String ->+                       ( PP_Doc))+data Inh_Lhs = Inh_Lhs {isDeclOfLet_Inh_Lhs :: !(Bool),nested_Inh_Lhs :: !(Bool),options_Inh_Lhs :: !(Options),outputfile_Inh_Lhs :: !(String)}+data Syn_Lhs = Syn_Lhs {pp_Syn_Lhs :: !(PP_Doc)}+wrap_Lhs !(T_Lhs sem) !(Inh_Lhs _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile) =+    (let ( !_lhsOpp) =+             (sem _lhsIisDeclOfLet _lhsInested _lhsIoptions _lhsIoutputfile)+     in  (Syn_Lhs _lhsOpp))+sem_Lhs_Fun :: String ->+               T_Exprs ->+               T_Lhs+sem_Lhs_Fun !name_ !(T_Exprs args_) =+    (T_Lhs (\ (!_lhsIisDeclOfLet)+              (!_lhsInested)+              (!_lhsIoptions)+              (!_lhsIoutputfile) ->+                (case (_lhsIoutputfile) of+                 { !_argsOoutputfile ->+                 (case (_lhsIoptions) of+                  { !_argsOoptions ->+                  (case (_lhsInested) of+                   { !_argsOnested ->+                   (case (if bangpats _lhsIoptions+                                   then \p -> "!" >|< p+                                   else id) of+                    { !_addBang ->+                    (case ((args_ _argsOnested _argsOoptions _argsOoutputfile)) of+                     { ( !_argsIpps) ->+                     (case (_argsIpps `ppMultiSeqH` (pp "True")) of+                      { !_strictGuard ->+                      (case (not (null _argsIpps)) of+                       { !_hasStrictVars ->+                       (case (if strictSems _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id) of+                        { !_addStrictGuard ->+                        (case (_addStrictGuard     (name_ >#< hv_sp (map _addBang     _argsIpps))) of+                         { !_lhsOpp ->+                         ( _lhsOpp) }) }) }) }) }) }) }) }) })))+sem_Lhs_Pattern3 :: T_Pattern ->+                    T_Lhs+sem_Lhs_Pattern3 !(T_Pattern pat3_) =+    (T_Lhs (\ (!_lhsIisDeclOfLet)+              (!_lhsInested)+              (!_lhsIoptions)+              (!_lhsIoutputfile) ->+                (case (_lhsIoptions) of+                 { !_pat3Ooptions ->+                 (case (_lhsIisDeclOfLet) of+                  { !_pat3OisDeclOfLet ->+                  (case (False) of+                   { !_pat3ObelowIrrefutable ->+                   (case ((pat3_ _pat3ObelowIrrefutable _pat3OisDeclOfLet _pat3Ooptions)) of+                    { ( !_pat3Icopy,!_pat3IisUnderscore,!_pat3Ipp,!_pat3Ipp',!_pat3IstrictVars) ->+                    (case (not (null _pat3IstrictVars)) of+                     { !_hasStrictVars ->+                     (case (_pat3IstrictVars `ppMultiSeqH` (pp "True")) of+                      { !_strictGuard ->+                      (case (if strictCases _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id) of+                       { !_addStrictGuard ->+                       (case (_addStrictGuard     _pat3Ipp) of+                        { !_lhsOpp ->+                        ( _lhsOpp) }) }) }) }) }) }) }) })))+sem_Lhs_Pattern3SM :: T_Pattern ->+                      T_Lhs+sem_Lhs_Pattern3SM !(T_Pattern pat3_) =+    (T_Lhs (\ (!_lhsIisDeclOfLet)+              (!_lhsInested)+              (!_lhsIoptions)+              (!_lhsIoutputfile) ->+                (case (_lhsIoptions) of+                 { !_pat3Ooptions ->+                 (case (_lhsIisDeclOfLet) of+                  { !_pat3OisDeclOfLet ->+                  (case (False) of+                   { !_pat3ObelowIrrefutable ->+                   (case ((pat3_ _pat3ObelowIrrefutable _pat3OisDeclOfLet _pat3Ooptions)) of+                    { ( !_pat3Icopy,!_pat3IisUnderscore,!_pat3Ipp,!_pat3Ipp',!_pat3IstrictVars) ->+                    (case (_pat3Ipp') of+                     { !_lhsOpp ->+                     ( _lhsOpp) }) }) }) }) })))+sem_Lhs_TupleLhs :: ([String]) ->+                    T_Lhs+sem_Lhs_TupleLhs !comps_ =+    (T_Lhs (\ (!_lhsIisDeclOfLet)+              (!_lhsInested)+              (!_lhsIoptions)+              (!_lhsIoutputfile) ->+                (case (if bangpats _lhsIoptions+                                then \p -> "!" >|< p+                                else id) of+                 { !_addBang ->+                 (case (not (null comps_)) of+                  { !_hasStrictVars ->+                  (case (if stricterCases _lhsIoptions && not _lhsIisDeclOfLet+                         then map text comps_ `ppMultiSeqH` (pp "True")+                         else pp "True") of+                   { !_strictGuard ->+                   (case (if strictCases _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id) of+                    { !_addStrictGuard ->+                    (case (_addStrictGuard     $ ppTuple _lhsInested (map (_addBang     . text) comps_)) of+                     { !_lhsOpp ->+                     ( _lhsOpp) }) }) }) }) })))+sem_Lhs_UnboxedTupleLhs :: ([String]) ->+                           T_Lhs+sem_Lhs_UnboxedTupleLhs !comps_ =+    (T_Lhs (\ (!_lhsIisDeclOfLet)+              (!_lhsInested)+              (!_lhsIoptions)+              (!_lhsIoutputfile) ->+                (case (if bangpats _lhsIoptions+                                then \p -> "!" >|< p+                                else id) of+                 { !_addBang ->+                 (case (not (null comps_)) of+                  { !_hasStrictVars ->+                  (case (if stricterCases _lhsIoptions && not _lhsIisDeclOfLet+                         then map text comps_ `ppMultiSeqH` (pp "True")+                         else pp "True") of+                   { !_strictGuard ->+                   (case (if strictCases _lhsIoptions && _hasStrictVars     then \v -> v >#< "|" >#< _strictGuard     else id) of+                    { !_addStrictGuard ->+                    (case (_addStrictGuard     $ ppUnboxedTuple _lhsInested (map (_addBang     . text) comps_)) of+                     { !_lhsOpp ->+                     ( _lhsOpp) }) }) }) }) })))+-- Pattern -----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         belowIrrefutable     : Bool+         isDeclOfLet          : Bool+         options              : Options+      synthesized attributes:+         copy                 : SELF+         isUnderscore         : Bool+         pp                   : PP_Doc+         pp'                  : PP_Doc+         strictVars           : [PP_Doc]+   alternatives:+      alternative Alias:+         child field          : {Identifier}+         child attr           : {Identifier}+         child pat            : Pattern+         child parts          : Patterns+         visit 0:+            local copy        : _+            local ppVar       : _+            local addBang     : _+            local ppVarBang   : _+            local strictPatVars : _+            local strictVar   : _+      alternative Constr:+         child name           : {ConstructorIdent}+         child pats           : Patterns+         visit 0:+            local copy        : _+            local addBang     : _+      alternative Irrefutable:+         child pat            : Pattern+         visit 0:+            local copy        : _+      alternative Product:+         child pos            : {Pos}+         child pats           : Patterns+         visit 0:+            local copy        : _+            local addBang     : _+      alternative Underscore:+         child pos            : {Pos}+         visit 0:+            local copy        : _+-}+-- cata+sem_Pattern :: Pattern ->+               T_Pattern+sem_Pattern !(Alias _field _attr _pat _parts) =+    (sem_Pattern_Alias _field _attr (sem_Pattern _pat) (sem_Patterns _parts))+sem_Pattern !(Constr _name _pats) =+    (sem_Pattern_Constr _name (sem_Patterns _pats))+sem_Pattern !(Irrefutable _pat) =+    (sem_Pattern_Irrefutable (sem_Pattern _pat))+sem_Pattern !(Product _pos _pats) =+    (sem_Pattern_Product _pos (sem_Patterns _pats))+sem_Pattern !(Underscore _pos) =+    (sem_Pattern_Underscore _pos)+-- semantic domain+newtype T_Pattern = T_Pattern (Bool ->+                               Bool ->+                               Options ->+                               ( Pattern,Bool,PP_Doc,PP_Doc,([PP_Doc])))+data Inh_Pattern = Inh_Pattern {belowIrrefutable_Inh_Pattern :: !(Bool),isDeclOfLet_Inh_Pattern :: !(Bool),options_Inh_Pattern :: !(Options)}+data Syn_Pattern = Syn_Pattern {copy_Syn_Pattern :: !(Pattern),isUnderscore_Syn_Pattern :: !(Bool),pp_Syn_Pattern :: !(PP_Doc),pp'_Syn_Pattern :: !(PP_Doc),strictVars_Syn_Pattern :: !([PP_Doc])}+wrap_Pattern !(T_Pattern sem) !(Inh_Pattern _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions) =+    (let ( !_lhsOcopy,!_lhsOisUnderscore,!_lhsOpp,!_lhsOpp',!_lhsOstrictVars) =+             (sem _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions)+     in  (Syn_Pattern _lhsOcopy _lhsOisUnderscore _lhsOpp _lhsOpp' _lhsOstrictVars))+sem_Pattern_Alias :: Identifier ->+                     Identifier ->+                     T_Pattern ->+                     T_Patterns ->+                     T_Pattern+sem_Pattern_Alias !field_ !attr_ !(T_Pattern pat_) !(T_Patterns parts_) =+    (T_Pattern (\ (!_lhsIbelowIrrefutable)+                  (!_lhsIisDeclOfLet)+                  (!_lhsIoptions) ->+                    (case (_lhsIoptions) of+                     { !_partsOoptions ->+                     (case (_lhsIisDeclOfLet) of+                      { !_partsOisDeclOfLet ->+                      (case (_lhsIbelowIrrefutable) of+                       { !_partsObelowIrrefutable ->+                       (case ((parts_ _partsObelowIrrefutable _partsOisDeclOfLet _partsOoptions)) of+                        { ( !_partsIcopy,!_partsIpps,!_partsIpps',!_partsIstrictVars) ->+                        (case (_lhsIoptions) of+                         { !_patOoptions ->+                         (case (_lhsIisDeclOfLet) of+                          { !_patOisDeclOfLet ->+                          (case (_lhsIbelowIrrefutable) of+                           { !_patObelowIrrefutable ->+                           (case ((pat_ _patObelowIrrefutable _patOisDeclOfLet _patOoptions)) of+                            { ( !_patIcopy,!_patIisUnderscore,!_patIpp,!_patIpp',!_patIstrictVars) ->+                            (case (Alias field_ attr_ _patIcopy _partsIcopy) of+                             { !_copy ->+                             (case (_copy) of+                              { !_lhsOcopy ->+                              (case (False) of+                               { !_lhsOisUnderscore ->+                               (case (pp (attrname False field_ attr_)) of+                                { !_ppVar ->+                                (case (if bangpats _lhsIoptions && not _lhsIisDeclOfLet && not _lhsIbelowIrrefutable+                                       then \p -> "!" >|< p+                                       else id) of+                                 { !_addBang ->+                                 (case (_addBang     $ _ppVar) of+                                  { !_ppVarBang ->+                                  (case (if _patIisUnderscore+                                          then _ppVarBang+                                          else _ppVarBang     >|< "@" >|< _patIpp) of+                                   { !_lhsOpp ->+                                   (case (let attribute | field_ == _LOC || field_ == nullIdent = locname' attr_+                                                        | otherwise                             = attrname False field_ attr_+                                          in attribute >|< "@" >|< _patIpp') of+                                    { !_lhsOpp' ->+                                    (case (if stricterCases _lhsIoptions && not _lhsIisDeclOfLet+                                           then _patIstrictVars+                                           else []) of+                                     { !_strictPatVars ->+                                     (case (if strictCases _lhsIoptions && not _lhsIisDeclOfLet+                                            then [_ppVar    ]+                                            else []) of+                                      { !_strictVar ->+                                      (case (_strictVar     ++ _strictPatVars) of+                                       { !_lhsOstrictVars ->+                                       ( _lhsOcopy,_lhsOisUnderscore,_lhsOpp,_lhsOpp',_lhsOstrictVars) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Pattern_Constr :: ConstructorIdent ->+                      T_Patterns ->+                      T_Pattern+sem_Pattern_Constr !name_ !(T_Patterns pats_) =+    (T_Pattern (\ (!_lhsIbelowIrrefutable)+                  (!_lhsIisDeclOfLet)+                  (!_lhsIoptions) ->+                    (case (_lhsIoptions) of+                     { !_patsOoptions ->+                     (case (_lhsIisDeclOfLet) of+                      { !_patsOisDeclOfLet ->+                      (case (_lhsIbelowIrrefutable) of+                       { !_patsObelowIrrefutable ->+                       (case ((pats_ _patsObelowIrrefutable _patsOisDeclOfLet _patsOoptions)) of+                        { ( !_patsIcopy,!_patsIpps,!_patsIpps',!_patsIstrictVars) ->+                        (case (Constr name_ _patsIcopy) of+                         { !_copy ->+                         (case (_copy) of+                          { !_lhsOcopy ->+                          (case (False) of+                           { !_lhsOisUnderscore ->+                           (case (if bangpats _lhsIoptions && not _lhsIisDeclOfLet && not _lhsIbelowIrrefutable+                                  then \p -> "!" >|< p+                                  else id) of+                            { !_addBang ->+                            (case (_addBang     $ pp_parens $ name_ >#< hv_sp _patsIpps) of+                             { !_lhsOpp ->+                             (case (pp_parens $ name_ >#< hv_sp (map pp_parens _patsIpps')) of+                              { !_lhsOpp' ->+                              (case (_patsIstrictVars) of+                               { !_lhsOstrictVars ->+                               ( _lhsOcopy,_lhsOisUnderscore,_lhsOpp,_lhsOpp',_lhsOstrictVars) }) }) }) }) }) }) }) }) }) }) })))+sem_Pattern_Irrefutable :: T_Pattern ->+                           T_Pattern+sem_Pattern_Irrefutable !(T_Pattern pat_) =+    (T_Pattern (\ (!_lhsIbelowIrrefutable)+                  (!_lhsIisDeclOfLet)+                  (!_lhsIoptions) ->+                    (case (_lhsIoptions) of+                     { !_patOoptions ->+                     (case (_lhsIisDeclOfLet) of+                      { !_patOisDeclOfLet ->+                      (case (True) of+                       { !_patObelowIrrefutable ->+                       (case ((pat_ _patObelowIrrefutable _patOisDeclOfLet _patOoptions)) of+                        { ( !_patIcopy,!_patIisUnderscore,!_patIpp,!_patIpp',!_patIstrictVars) ->+                        (case (Irrefutable _patIcopy) of+                         { !_copy ->+                         (case (_copy) of+                          { !_lhsOcopy ->+                          (case (_patIisUnderscore) of+                           { !_lhsOisUnderscore ->+                           (case (text "~" >|< pp_parens _patIpp) of+                            { !_lhsOpp ->+                            (case (text "~" >|< pp_parens _patIpp) of+                             { !_lhsOpp' ->+                             (case ([]) of+                              { !_lhsOstrictVars ->+                              ( _lhsOcopy,_lhsOisUnderscore,_lhsOpp,_lhsOpp',_lhsOstrictVars) }) }) }) }) }) }) }) }) }) })))+sem_Pattern_Product :: Pos ->+                       T_Patterns ->+                       T_Pattern+sem_Pattern_Product !pos_ !(T_Patterns pats_) =+    (T_Pattern (\ (!_lhsIbelowIrrefutable)+                  (!_lhsIisDeclOfLet)+                  (!_lhsIoptions) ->+                    (case (_lhsIoptions) of+                     { !_patsOoptions ->+                     (case (_lhsIisDeclOfLet) of+                      { !_patsOisDeclOfLet ->+                      (case (_lhsIbelowIrrefutable) of+                       { !_patsObelowIrrefutable ->+                       (case ((pats_ _patsObelowIrrefutable _patsOisDeclOfLet _patsOoptions)) of+                        { ( !_patsIcopy,!_patsIpps,!_patsIpps',!_patsIstrictVars) ->+                        (case (Product pos_ _patsIcopy) of+                         { !_copy ->+                         (case (_copy) of+                          { !_lhsOcopy ->+                          (case (False) of+                           { !_lhsOisUnderscore ->+                           (case (if bangpats _lhsIoptions && not _lhsIisDeclOfLet && not _lhsIbelowIrrefutable+                                  then \p -> "!" >|< p+                                  else id) of+                            { !_addBang ->+                            (case (_addBang     $ pp_block "(" ")" "," _patsIpps) of+                             { !_lhsOpp ->+                             (case (pp_block "(" ")" "," _patsIpps') of+                              { !_lhsOpp' ->+                              (case (_patsIstrictVars) of+                               { !_lhsOstrictVars ->+                               ( _lhsOcopy,_lhsOisUnderscore,_lhsOpp,_lhsOpp',_lhsOstrictVars) }) }) }) }) }) }) }) }) }) }) })))+sem_Pattern_Underscore :: Pos ->+                          T_Pattern+sem_Pattern_Underscore !pos_ =+    (T_Pattern (\ (!_lhsIbelowIrrefutable)+                  (!_lhsIisDeclOfLet)+                  (!_lhsIoptions) ->+                    (case (Underscore pos_) of+                     { !_copy ->+                     (case (_copy) of+                      { !_lhsOcopy ->+                      (case (True) of+                       { !_lhsOisUnderscore ->+                       (case (text "_") of+                        { !_lhsOpp ->+                        (case (text "_") of+                         { !_lhsOpp' ->+                         (case ([]) of+                          { !_lhsOstrictVars ->+                          ( _lhsOcopy,_lhsOisUnderscore,_lhsOpp,_lhsOpp',_lhsOstrictVars) }) }) }) }) }) })))+-- Patterns ----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         belowIrrefutable     : Bool+         isDeclOfLet          : Bool+         options              : Options+      synthesized attributes:+         copy                 : SELF+         pps                  : [PP_Doc]+         pps'                 : [PP_Doc]+         strictVars           : [PP_Doc]+   alternatives:+      alternative Cons:+         child hd             : Pattern+         child tl             : Patterns+         visit 0:+            local copy        : _+      alternative Nil:+         visit 0:+            local copy        : _+-}+-- cata+sem_Patterns :: Patterns ->+                T_Patterns+sem_Patterns !list =+    (Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list))+-- semantic domain+newtype T_Patterns = T_Patterns (Bool ->+                                 Bool ->+                                 Options ->+                                 ( Patterns,([PP_Doc]),([PP_Doc]),([PP_Doc])))+data Inh_Patterns = Inh_Patterns {belowIrrefutable_Inh_Patterns :: !(Bool),isDeclOfLet_Inh_Patterns :: !(Bool),options_Inh_Patterns :: !(Options)}+data Syn_Patterns = Syn_Patterns {copy_Syn_Patterns :: !(Patterns),pps_Syn_Patterns :: !([PP_Doc]),pps'_Syn_Patterns :: !([PP_Doc]),strictVars_Syn_Patterns :: !([PP_Doc])}+wrap_Patterns !(T_Patterns sem) !(Inh_Patterns _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions) =+    (let ( !_lhsOcopy,!_lhsOpps,!_lhsOpps',!_lhsOstrictVars) =+             (sem _lhsIbelowIrrefutable _lhsIisDeclOfLet _lhsIoptions)+     in  (Syn_Patterns _lhsOcopy _lhsOpps _lhsOpps' _lhsOstrictVars))+sem_Patterns_Cons :: T_Pattern ->+                     T_Patterns ->+                     T_Patterns+sem_Patterns_Cons !(T_Pattern hd_) !(T_Patterns tl_) =+    (T_Patterns (\ (!_lhsIbelowIrrefutable)+                   (!_lhsIisDeclOfLet)+                   (!_lhsIoptions) ->+                     (case (_lhsIoptions) of+                      { !_tlOoptions ->+                      (case (_lhsIisDeclOfLet) of+                       { !_tlOisDeclOfLet ->+                       (case (_lhsIbelowIrrefutable) of+                        { !_tlObelowIrrefutable ->+                        (case ((tl_ _tlObelowIrrefutable _tlOisDeclOfLet _tlOoptions)) of+                         { ( !_tlIcopy,!_tlIpps,!_tlIpps',!_tlIstrictVars) ->+                         (case (_lhsIoptions) of+                          { !_hdOoptions ->+                          (case (_lhsIisDeclOfLet) of+                           { !_hdOisDeclOfLet ->+                           (case (_lhsIbelowIrrefutable) of+                            { !_hdObelowIrrefutable ->+                            (case ((hd_ _hdObelowIrrefutable _hdOisDeclOfLet _hdOoptions)) of+                             { ( !_hdIcopy,!_hdIisUnderscore,!_hdIpp,!_hdIpp',!_hdIstrictVars) ->+                             (case ((:) _hdIcopy _tlIcopy) of+                              { !_copy ->+                              (case (_copy) of+                               { !_lhsOcopy ->+                               (case (_hdIpp : _tlIpps) of+                                { !_lhsOpps ->+                                (case (_hdIpp' : _tlIpps') of+                                 { !_lhsOpps' ->+                                 (case (_hdIstrictVars ++ _tlIstrictVars) of+                                  { !_lhsOstrictVars ->+                                  ( _lhsOcopy,_lhsOpps,_lhsOpps',_lhsOstrictVars) }) }) }) }) }) }) }) }) }) }) }) }) })))+sem_Patterns_Nil :: T_Patterns+sem_Patterns_Nil  =+    (T_Patterns (\ (!_lhsIbelowIrrefutable)+                   (!_lhsIisDeclOfLet)+                   (!_lhsIoptions) ->+                     (case ([]) of+                      { !_copy ->+                      (case (_copy) of+                       { !_lhsOcopy ->+                       (case ([]) of+                        { !_lhsOpps ->+                        (case ([]) of+                         { !_lhsOpps' ->+                         (case ([]) of+                          { !_lhsOstrictVars ->+                          ( _lhsOcopy,_lhsOpps,_lhsOpps',_lhsOstrictVars) }) }) }) }) })))+-- Program -----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         importBlocks         : PP_Doc+         mainFile             : String+         mainName             : String+         moduleHeader         : String -> String -> String -> Bool -> String+         options              : Options+         optionsLine          : String+         pragmaBlocks         : String+         textBlockMap         : Map BlockInfo PP_Doc+         textBlocks           : PP_Doc+      synthesized attributes:+         genIO                : IO ()+         output               : PP_Docs+   alternatives:+      alternative Program:+         child chunks         : Chunks+         visit 0:+            local commonFile  : _+            local genCommonModule : _+            local mainModuleFile : _+            local genMainModule : _+-}+-- cata+sem_Program :: Program ->+               T_Program+sem_Program !(Program _chunks) =+    (sem_Program_Program (sem_Chunks _chunks))+-- semantic domain+newtype T_Program = T_Program (PP_Doc ->+                               String ->+                               String ->+                               (String -> String -> String -> Bool -> String) ->+                               Options ->+                               String ->+                               String ->+                               (Map BlockInfo PP_Doc) ->+                               PP_Doc ->+                               ( (IO ()),PP_Docs))+data Inh_Program = Inh_Program {importBlocks_Inh_Program :: !(PP_Doc),mainFile_Inh_Program :: !(String),mainName_Inh_Program :: !(String),moduleHeader_Inh_Program :: !(String -> String -> String -> Bool -> String),options_Inh_Program :: !(Options),optionsLine_Inh_Program :: !(String),pragmaBlocks_Inh_Program :: !(String),textBlockMap_Inh_Program :: !(Map BlockInfo PP_Doc),textBlocks_Inh_Program :: !(PP_Doc)}+data Syn_Program = Syn_Program {genIO_Syn_Program :: !(IO ()),output_Syn_Program :: !(PP_Docs)}+wrap_Program !(T_Program sem) !(Inh_Program _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks) =+    (let ( !_lhsOgenIO,!_lhsOoutput) =+             (sem _lhsIimportBlocks _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsItextBlockMap _lhsItextBlocks)+     in  (Syn_Program _lhsOgenIO _lhsOoutput))+sem_Program_Program :: T_Chunks ->+                       T_Program+sem_Program_Program !(T_Chunks chunks_) =+    (T_Program (\ (!_lhsIimportBlocks)+                  (!_lhsImainFile)+                  (!_lhsImainName)+                  (!_lhsImoduleHeader)+                  (!_lhsIoptions)+                  (!_lhsIoptionsLine)+                  (!_lhsIpragmaBlocks)+                  (!_lhsItextBlockMap)+                  (!_lhsItextBlocks) ->+                    (case (_lhsItextBlockMap) of+                     { !_chunksOtextBlockMap ->+                     (case (_lhsIpragmaBlocks) of+                      { !_chunksOpragmaBlocks ->+                      (case (_lhsIoptionsLine) of+                       { !_chunksOoptionsLine ->+                       (case (_lhsIoptions) of+                        { !_chunksOoptions ->+                        (case (_lhsImoduleHeader) of+                         { !_chunksOmoduleHeader ->+                         (case (_lhsImainName) of+                          { !_chunksOmainName ->+                          (case (_lhsImainFile) of+                           { !_chunksOmainFile ->+                           (case (_lhsImainFile ++ "_common.hs") of+                            { !_commonFile ->+                            (case (False) of+                             { !_chunksOisDeclOfLet ->+                             (case (nest _lhsIoptions) of+                              { !_chunksOnested ->+                              (case (_lhsItextBlocks) of+                               { !_chunksOtextBlocks ->+                               (case (_lhsIimportBlocks) of+                                { !_chunksOimportBlocks ->+                                (case ((chunks_ _chunksOimportBlocks _chunksOisDeclOfLet _chunksOmainFile _chunksOmainName _chunksOmoduleHeader _chunksOnested _chunksOoptions _chunksOoptionsLine _chunksOpragmaBlocks _chunksOtextBlockMap _chunksOtextBlocks)) of+                                 { ( !_chunksIappendCommon,!_chunksIappendMain,!_chunksIgenSems,!_chunksIimports,!_chunksIpps) ->+                                 (case (writeModule _commonFile+                                            ( [ pp $ _lhsIpragmaBlocks+                                              , pp $ _lhsIoptionsLine+                                              , pp $ _lhsImoduleHeader _lhsImainName "_common" "" True+                                              , _lhsIimportBlocks+                                              , _lhsItextBlocks+                                              ]+                                              ++ map vlist _chunksIappendCommon+                                            )) of+                                  { !_genCommonModule ->+                                  (case (_lhsImainFile ++ ".hs") of+                                   { !_mainModuleFile ->+                                   (case (writeModule _mainModuleFile+                                            ( [ pp $ _lhsIpragmaBlocks+                                              , pp $ _lhsIoptionsLine+                                              , pp $ _lhsImoduleHeader _lhsImainName "" "" False+                                              , pp $ ("import " ++ _lhsImainName ++ "_common\n")+                                              ]+                                              ++ map pp _chunksIimports+                                              ++ map vlist _chunksIappendMain+                                            )) of+                                    { !_genMainModule ->+                                    (case (do _genMainModule+                                              _genCommonModule+                                              _chunksIgenSems) of+                                     { !_lhsOgenIO ->+                                     (case (_chunksIpps) of+                                      { !_lhsOoutput ->+                                      ( _lhsOgenIO,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))+-- Type --------------------------------------------------------+{-+   visit 0:+      inherited attribute:+         nested               : Bool+      synthesized attributes:+         pp                   : PP_Doc+         prec                 : Int+   alternatives:+      alternative Arr:+         child left           : Type+         child right          : Type+         visit 0:+            local r           : _+            local l           : _+      alternative CtxApp:+         child left           : {[(String, [String])]}+         child right          : Type+      alternative List:+         child tp             : Type+      alternative SimpleType:+         child txt            : {String}+      alternative TupleType:+         child tps            : Types+      alternative TypeApp:+         child func           : Type+         child args           : Types+      alternative UnboxedTupleType:+         child tps            : Types+-}+-- cata+sem_Type :: Type ->+            T_Type+sem_Type !(Arr _left _right) =+    (sem_Type_Arr (sem_Type _left) (sem_Type _right))+sem_Type !(CtxApp _left _right) =+    (sem_Type_CtxApp _left (sem_Type _right))+sem_Type !(List _tp) =+    (sem_Type_List (sem_Type _tp))+sem_Type !(SimpleType _txt) =+    (sem_Type_SimpleType _txt)+sem_Type !(TupleType _tps) =+    (sem_Type_TupleType (sem_Types _tps))+sem_Type !(TypeApp _func _args) =+    (sem_Type_TypeApp (sem_Type _func) (sem_Types _args))+sem_Type !(UnboxedTupleType _tps) =+    (sem_Type_UnboxedTupleType (sem_Types _tps))+-- semantic domain+newtype T_Type = T_Type (Bool ->+                         ( PP_Doc,Int))+data Inh_Type = Inh_Type {nested_Inh_Type :: !(Bool)}+data Syn_Type = Syn_Type {pp_Syn_Type :: !(PP_Doc),prec_Syn_Type :: !(Int)}+wrap_Type !(T_Type sem) !(Inh_Type _lhsInested) =+    (let ( !_lhsOpp,!_lhsOprec) =+             (sem _lhsInested)+     in  (Syn_Type _lhsOpp _lhsOprec))+sem_Type_Arr :: T_Type ->+                T_Type ->+                T_Type+sem_Type_Arr !(T_Type left_) !(T_Type right_) =+    (T_Type (\ (!_lhsInested) ->+                 (case (_lhsInested) of+                  { !_rightOnested ->+                  (case (_lhsInested) of+                   { !_leftOnested ->+                   (case ((right_ _rightOnested)) of+                    { ( !_rightIpp,!_rightIprec) ->+                    (case (if _rightIprec <  2 then pp_parens _rightIpp else _rightIpp) of+                     { !_r ->+                     (case ((left_ _leftOnested)) of+                      { ( !_leftIpp,!_leftIprec) ->+                      (case (if _leftIprec  <= 2 then pp_parens _leftIpp  else _leftIpp) of+                       { !_l ->+                       (case (_l     >#< "->" >-< _r) of+                        { !_lhsOpp ->+                        (case (2) of+                         { !_lhsOprec ->+                         ( _lhsOpp,_lhsOprec) }) }) }) }) }) }) }) })))+sem_Type_CtxApp :: ([(String, [String])]) ->+                   T_Type ->+                   T_Type+sem_Type_CtxApp !left_ !(T_Type right_) =+    (T_Type (\ (!_lhsInested) ->+                 (case (_lhsInested) of+                  { !_rightOnested ->+                  (case ((right_ _rightOnested)) of+                   { ( !_rightIpp,!_rightIprec) ->+                   (case ((pp_block "(" ")" "," $ map (\(n,ns) -> hv_sp $ map pp (n:ns)) left_) >#< "=>" >#< _rightIpp) of+                    { !_lhsOpp ->+                    (case (_rightIprec) of+                     { !_lhsOprec ->+                     ( _lhsOpp,_lhsOprec) }) }) }) })))+sem_Type_List :: T_Type ->+                 T_Type+sem_Type_List !(T_Type tp_) =+    (T_Type (\ (!_lhsInested) ->+                 (case (_lhsInested) of+                  { !_tpOnested ->+                  (case ((tp_ _tpOnested)) of+                   { ( !_tpIpp,!_tpIprec) ->+                   (case ("[" >|< _tpIpp >|< "]") of+                    { !_lhsOpp ->+                    (case (5) of+                     { !_lhsOprec ->+                     ( _lhsOpp,_lhsOprec) }) }) }) })))+sem_Type_SimpleType :: String ->+                       T_Type+sem_Type_SimpleType !txt_ =+    (T_Type (\ (!_lhsInested) ->+                 (case (if reallySimple txt_ then text txt_ else pp_parens (text txt_)) of+                  { !_lhsOpp ->+                  (case (5) of+                   { !_lhsOprec ->+                   ( _lhsOpp,_lhsOprec) }) })))+sem_Type_TupleType :: T_Types ->+                      T_Type+sem_Type_TupleType !(T_Types tps_) =+    (T_Type (\ (!_lhsInested) ->+                 (case (_lhsInested) of+                  { !_tpsOnested ->+                  (case ((tps_ _tpsOnested)) of+                   { ( !_tpsIpps) ->+                   (case (ppTuple _lhsInested _tpsIpps) of+                    { !_lhsOpp ->+                    (case (5) of+                     { !_lhsOprec ->+                     ( _lhsOpp,_lhsOprec) }) }) }) })))+sem_Type_TypeApp :: T_Type ->+                    T_Types ->+                    T_Type+sem_Type_TypeApp !(T_Type func_) !(T_Types args_) =+    (T_Type (\ (!_lhsInested) ->+                 (case (_lhsInested) of+                  { !_argsOnested ->+                  (case (_lhsInested) of+                   { !_funcOnested ->+                   (case ((args_ _argsOnested)) of+                    { ( !_argsIpps) ->+                    (case ((func_ _funcOnested)) of+                     { ( !_funcIpp,!_funcIprec) ->+                     (case (hv_sp (_funcIpp : _argsIpps)) of+                      { !_lhsOpp ->+                      (case (_funcIprec) of+                       { !_lhsOprec ->+                       ( _lhsOpp,_lhsOprec) }) }) }) }) }) })))+sem_Type_UnboxedTupleType :: T_Types ->+                             T_Type+sem_Type_UnboxedTupleType !(T_Types tps_) =+    (T_Type (\ (!_lhsInested) ->+                 (case (_lhsInested) of+                  { !_tpsOnested ->+                  (case ((tps_ _tpsOnested)) of+                   { ( !_tpsIpps) ->+                   (case (ppUnboxedTuple _lhsInested _tpsIpps) of+                    { !_lhsOpp ->+                    (case (5) of+                     { !_lhsOprec ->+                     ( _lhsOpp,_lhsOprec) }) }) }) })))+-- Types -------------------------------------------------------+{-+   visit 0:+      inherited attribute:+         nested               : Bool+      synthesized attribute:+         pps                  : PP_Docs+   alternatives:+      alternative Cons:+         child hd             : Type+         child tl             : Types+      alternative Nil:+-}+-- cata+sem_Types :: Types ->+             T_Types+sem_Types !list =+    (Prelude.foldr sem_Types_Cons sem_Types_Nil (Prelude.map sem_Type list))+-- semantic domain+newtype T_Types = T_Types (Bool ->+                           ( PP_Docs))+data Inh_Types = Inh_Types {nested_Inh_Types :: !(Bool)}+data Syn_Types = Syn_Types {pps_Syn_Types :: !(PP_Docs)}+wrap_Types !(T_Types sem) !(Inh_Types _lhsInested) =+    (let ( !_lhsOpps) =+             (sem _lhsInested)+     in  (Syn_Types _lhsOpps))+sem_Types_Cons :: T_Type ->+                  T_Types ->+                  T_Types+sem_Types_Cons !(T_Type hd_) !(T_Types tl_) =+    (T_Types (\ (!_lhsInested) ->+                  (case (_lhsInested) of+                   { !_tlOnested ->+                   (case (_lhsInested) of+                    { !_hdOnested ->+                    (case ((tl_ _tlOnested)) of+                     { ( !_tlIpps) ->+                     (case ((hd_ _hdOnested)) of+                      { ( !_hdIpp,!_hdIprec) ->+                      (case (_hdIpp : _tlIpps) of+                       { !_lhsOpps ->+                       ( _lhsOpps) }) }) }) }) })))+sem_Types_Nil :: T_Types+sem_Types_Nil  =+    (T_Types (\ (!_lhsInested) ->+                  (case ([]) of+                   { !_lhsOpps ->+                   ( _lhsOpps) })))
src-derived/PrintErrorMessages.hs view
@@ -41,6 +41,8 @@ isError opts (InducedCirc     _ _ _    ) = cycleIsDangerous opts isError opts (MissingTypeSig  _ _ _    ) = False isError opts (MissingInstSig  _ _ _    ) = True+isError opts (DupUnique       _ _ _    ) = False+isError opts (MissingUnique   _ _      ) = True  cycleIsDangerous :: Options -> Bool cycleIsDangerous opts@@ -233,6 +235,12 @@          child occ1           : {NontermIdent}          visit 0:             local me          : _+      alternative DupUnique:+         child nt             : {NontermIdent}+         child con            : {ConstructorIdent}+         child attr           : {Identifier}+         visit 0:+            local me          : _       alternative InducedCirc:          child nt             : {NontermIdent}          child cinter         : {CInterface}@@ -274,6 +282,11 @@          child attr           : {Identifier}          visit 0:             local me          : _+      alternative MissingUnique:+         child nt             : {NontermIdent}+         child attr           : {Identifier}+         visit 0:+            local me          : _       alternative ParserError:          child pos            : {Pos}          child problem        : {String}@@ -344,6 +357,8 @@     (sem_Error_DupSynAttr _nt _attr _occ1) sem_Error (DupSynonym _nt _occ1) =     (sem_Error_DupSynonym _nt _occ1)+sem_Error (DupUnique _nt _con _attr) =+    (sem_Error_DupUnique _nt _con _attr) sem_Error (InducedCirc _nt _cinter _cyclic) =     (sem_Error_InducedCirc _nt _cinter _cyclic) sem_Error (InstCirc _nt _con _attr _o_visit _path) =@@ -356,6 +371,8 @@     (sem_Error_MissingRule _nt _con _field _attr) sem_Error (MissingTypeSig _nt _con _attr) =     (sem_Error_MissingTypeSig _nt _con _attr)+sem_Error (MissingUnique _nt _attr) =+    (sem_Error_MissingUnique _nt _attr) sem_Error (ParserError _pos _problem _action) =     (sem_Error_ParserError _pos _problem _action) sem_Error (SuperfluousRule _nt _con _field _attr) =@@ -389,7 +406,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 300, column 21)+                       -- "PrintErrorMessages.ag"(line 302, column 21)                        _lhsOpp =                            let mesg  = wfill ["Nontrivial field ",getName var_, "is used as local at constructor"                                              , getName con_ , "of nonterminal",getName nt_, "."@@ -419,7 +436,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 342, column 21)+                       -- "PrintErrorMessages.ag"(line 344, column 21)                        _lhsOpp =                            let pat   =  text "unknown"                                help = wfill ["not available."]@@ -439,7 +456,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 333, column 21)+                       -- "PrintErrorMessages.ag"(line 335, column 21)                        _lhsOpp =                            let mesg  = wfill ["Cyclic definition for nonterminal set", getName name_]                                pat   = "SET" >#< getName name_ >#< "=" >#< "..." >#< getName name_ >#< "..."@@ -465,7 +482,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 371, column 21)+                       -- "PrintErrorMessages.ag"(line 373, column 21)                        _lhsOpp =                            let mesg  = wfill ["In nonterminal", getName nt_, "synthesized and inherited attributes are mutually dependent" ]                                        >-< vlist (map showEdge cyclic_)@@ -490,7 +507,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 73, column 21)+                       -- "PrintErrorMessages.ag"(line 75, column 21)                        _lhsOpp =                            let mesg  = wfill ["Repeated definition for alternative", getName con_                                              ,"of nonterminal", getName nt_, "."@@ -527,7 +544,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 166, column 21)+                       -- "PrintErrorMessages.ag"(line 168, column 21)                        _lhsOpp =                            let mesg  = wfill ["Repeated declaration for field", getName name_, "of alternative"                                              ,getName con_, "of nonterminal", getName nt_, "."@@ -562,7 +579,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 128, column 21)+                       -- "PrintErrorMessages.ag"(line 130, column 21)                        _lhsOpp =                            let mesg  = wfill ["Repeated declaration of inherited attribute", getName attr_                                              , "of nonterminal", getName nt_, "."@@ -598,7 +615,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 186, column 21)+                       -- "PrintErrorMessages.ag"(line 188, column 21)                        _lhsOpp =                            let mesg  = wfill ["At constructor",getName con_, "of nonterminal", getName nt_, "there are two or more rules for"                                              ,showAttrDef field_ attr_,"."@@ -630,7 +647,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 112, column 21)+                       -- "PrintErrorMessages.ag"(line 114, column 21)                        _lhsOpp =                            let mesg  = wfill ["Definition of nonterminal set", getName name_, "clashes with another"                                              ,"set, a type synonym or a data definition."@@ -663,7 +680,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 204, column 21)+                       -- "PrintErrorMessages.ag"(line 206, column 21)                        _lhsOpp =                            let mesg  = wfill ["At constructor",getName con_, "of nonterminal", getName nt_, "there are two or more typesignatures for"                                              ,showAttrDef _LOC attr_,"."@@ -695,7 +712,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 147, column 21)+                       -- "PrintErrorMessages.ag"(line 149, column 21)                        _lhsOpp =                            let mesg  = wfill ["Repeated declaration of synthesized attribute", getName attr_                                              , "of nonterminal", getName nt_, "."@@ -728,7 +745,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 95, column 21)+                       -- "PrintErrorMessages.ag"(line 97, column 21)                        _lhsOpp =                            let mesg  = wfill ["Definition of type synonym", getName nt_, "clashes with another"                                              ,"type synonym."@@ -753,6 +770,38 @@                        _lhsOme =                            _me                    in  ( _lhsOme,_lhsOpp))))+sem_Error_DupUnique :: NontermIdent ->+                       ConstructorIdent ->+                       Identifier ->+                       T_Error+sem_Error_DupUnique nt_ con_ attr_ =+    (T_Error (\ _lhsIoptions+                _lhsIverbose ->+                  (let _lhsOpp :: PP_Doc+                       _lhsOme :: Error+                       -- "PrintErrorMessages.ag"(line 434, column 21)+                       _lhsOpp =+                           let mesg  = wfill ["At constructor",getName con_, "of nonterminal", getName nt_, "there are two or more unique-attribute signatures for"+                                             ,showAttrDef _LOC attr_,"."+                                             ]  >-<+                                       wfill ["First signature:", (showPos attr_),"."]+                               pat   =   "SEM" >#< getName nt_+                                     >-< indent 2 ("|" >#< getName con_ >#< ppAttr _LOC attr_ >#< " : UNIQUEREF ...")+                                     >-< indent 2 ("|" >#< getName con_ >#< ppAttr _LOC attr_ >#< " : UNIQUEREF ...")+                               help =  wfill ["In the rules for alternative" , getName con_ , "of nonterminal" , getName nt_+                                                     ,", there is more than one unique-attribute signature for the" , showAttrDef _LOC attr_+                                                     ,". You should remove enough of them to make all unique-signatures for alternative"+                                                     ,getName con_ , "of nonterminal " ,getName  nt_ , "unique."+                                                     ]+                               act  = wfill ["Unpredicatable sharing of unique numbers may occur."]+                           in ppError (isError _lhsIoptions _me) (getPos attr_) mesg pat help act _lhsIverbose+                       -- self rule+                       _me =+                           DupUnique nt_ con_ attr_+                       -- self rule+                       _lhsOme =+                           _me+                   in  ( _lhsOme,_lhsOpp)))) sem_Error_InducedCirc :: NontermIdent ->                          CInterface ->                          ([((Identifier,Identifier),[String],[String])]) ->@@ -762,7 +811,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 379, column 21)+                       -- "PrintErrorMessages.ag"(line 381, column 21)                        _lhsOpp =                            let mesg  = wfill ["After scheduling, in nonterminal", getName nt_, "synthesized and inherited attributes have an INDUCED mutual dependency" ]                                        >-< vlist (map showEdge cyclic_)@@ -790,7 +839,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 359, column 21)+                       -- "PrintErrorMessages.ag"(line 361, column 21)                        _lhsOpp =                            let mesg  = wfill ["Circular dependency for inst attribute", getName attr_                                              , "of alternative", getName con_, "of nonterminal", getName nt_]@@ -821,7 +870,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 347, column 21)+                       -- "PrintErrorMessages.ag"(line 349, column 21)                        _lhsOpp =                            let mesg  = wfill ["Circular dependency for local attribute", getName attr_                                              , "of alternative", getName con_, "of nonterminal", getName nt_]@@ -850,7 +899,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 402, column 21)+                       -- "PrintErrorMessages.ag"(line 404, column 21)                        _lhsOpp =                            let mesg = wfill ["Type signature needed, but not found for", showAttrDef _INST attr_ , "in alternative"                                              , getName con_ , "of nonterminal",getName nt_ ,"."@@ -882,7 +931,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 258, column 21)+                       -- "PrintErrorMessages.ag"(line 260, column 21)                        _lhsOpp =                            let mesg  = wfill ["Missing rule for", showAttrDef field_ attr_ , "in alternative"                                              , getName con_ , "of nonterminal",getName nt_ ,"."@@ -911,7 +960,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 388, column 21)+                       -- "PrintErrorMessages.ag"(line 390, column 21)                        _lhsOpp =                            let mesg = wfill ["Type signature needed, but not found for", showAttrDef _LOC attr_ , "in alternative"                                              , getName con_ , "of nonterminal",getName nt_ ,"."@@ -933,6 +982,37 @@                        _lhsOme =                            _me                    in  ( _lhsOme,_lhsOpp))))+sem_Error_MissingUnique :: NontermIdent ->+                           Identifier ->+                           T_Error+sem_Error_MissingUnique nt_ attr_ =+    (T_Error (\ _lhsIoptions+                _lhsIverbose ->+                  (let _lhsOpp :: PP_Doc+                       _lhsOme :: Error+                       -- "PrintErrorMessages.ag"(line 418, column 21)+                       _lhsOpp =+                           let mesg  = wfill ["Missing unique counter (chained attribute)"+                                             , getName attr_+                                             , "at nonterminal"+                                             , getName nt_, "."+                                             ]+                               pat   = "ATTR" >#< getName nt_ >#< "[ |" >#< getName attr_ >#< " : ... | ]"+                               help =  wfill ["A unique attribute signature in a constructor for nonterminal" , getName nt_+                                             , "refers to an unique counter (chained attribute) named "+                                             , getName attr_+                                             ,"Maybe you misspelled it?"+                                             ,"Otherwise either remove the signature or add an appropriate attribute definition."+                                             ]+                               act  = wfill ["It is not possible to proceed without this declaration."]+                           in ppError (isError _lhsIoptions _me) (getPos attr_) mesg pat help act _lhsIverbose+                       -- self rule+                       _me =+                           MissingUnique nt_ attr_+                       -- self rule+                       _lhsOme =+                           _me+                   in  ( _lhsOme,_lhsOpp)))) sem_Error_ParserError :: Pos ->                          String ->                          String ->@@ -942,7 +1022,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 67, column 21)+                       -- "PrintErrorMessages.ag"(line 69, column 21)                        _lhsOpp =                            let mesg = text ("parser expecting " ++ problem_)                                pat  = text ""@@ -966,7 +1046,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 271, column 21)+                       -- "PrintErrorMessages.ag"(line 273, column 21)                        _lhsOpp =                            let mesg  = wfill ["Rule for non-existing", showAttrDef field_ attr_ , "at alternative"                                              , getName con_ , "of nonterminal",getName nt_, "."@@ -994,7 +1074,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 231, column 21)+                       -- "PrintErrorMessages.ag"(line 233, column 21)                        _lhsOpp =                            let mesg  = wfill ["Constructor", getName con_, "of nonterminal" ,getName nt_, "is  not defined."                                              ]@@ -1024,7 +1104,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 314, column 21)+                       -- "PrintErrorMessages.ag"(line 316, column 21)                        _lhsOpp =                            let mesg  = wfill ["Undefined"                                              , if isOut_@@ -1059,7 +1139,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 243, column 21)+                       -- "PrintErrorMessages.ag"(line 245, column 21)                        _lhsOpp =                            let mesg  = wfill ["Constructor", getName con_, "of nonterminal" ,getName nt_                                              , "does not have a nontrivial field named", getName name_ , "."@@ -1090,7 +1170,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 285, column 21)+                       -- "PrintErrorMessages.ag"(line 287, column 21)                        _lhsOpp =                            let mesg  = wfill ["Undefined local variable or field",getName var_, "at constructor"                                              , getName con_ , "of nonterminal",getName nt_, "."@@ -1119,7 +1199,7 @@                 _lhsIverbose ->                   (let _lhsOpp :: PP_Doc                        _lhsOme :: Error-                       -- "PrintErrorMessages.ag"(line 221, column 21)+                       -- "PrintErrorMessages.ag"(line 223, column 21)                        _lhsOpp =                            let mesg  = wfill ["Nonterminal", getName nt_, "is not defined."                                              ]@@ -1179,10 +1259,10 @@                         _hdIme :: Error                         _hdIpp :: PP_Doc                         _tlIpp :: PP_Doc-                        -- "PrintErrorMessages.ag"(line 62, column 8)+                        -- "PrintErrorMessages.ag"(line 64, column 8)                         _verbose =                             verbose _lhsIoptions-                        -- use rule "PrintErrorMessages.ag"(line 58, column 49)+                        -- use rule "PrintErrorMessages.ag"(line 60, column 49)                         _lhsOpp =                             _hdIpp >-< _tlIpp                         -- copy rule (down)@@ -1203,10 +1283,10 @@ sem_Errors_Nil  =     (T_Errors (\ _lhsIoptions ->                    (let _lhsOpp :: PP_Doc-                        -- "PrintErrorMessages.ag"(line 62, column 8)+                        -- "PrintErrorMessages.ag"(line 64, column 8)                         _verbose =                             verbose _lhsIoptions-                        -- use rule "PrintErrorMessages.ag"(line 58, column 49)+                        -- use rule "PrintErrorMessages.ag"(line 60, column 49)                         _lhsOpp =                             text ""                     in  ( _lhsOpp))))
src-derived/TfmToVisage.hs view
@@ -226,12 +226,13 @@          child manualAttrOrderMap : {AttrOrderMap}          child paramMap       : {ParamMap}          child contextMap     : {ContextMap}+         child uniqueMap      : {UniqueMap} -} -- cata sem_Grammar :: Grammar ->                T_Grammar-sem_Grammar (Grammar _typeSyns _useMap _derivings _wrappers _nonts _pragmas _manualAttrOrderMap _paramMap _contextMap) =-    (sem_Grammar_Grammar _typeSyns _useMap _derivings _wrappers (sem_Nonterminals _nonts) _pragmas _manualAttrOrderMap _paramMap _contextMap)+sem_Grammar (Grammar _typeSyns _useMap _derivings _wrappers _nonts _pragmas _manualAttrOrderMap _paramMap _contextMap _uniqueMap) =+    (sem_Grammar_Grammar _typeSyns _useMap _derivings _wrappers (sem_Nonterminals _nonts) _pragmas _manualAttrOrderMap _paramMap _contextMap _uniqueMap) -- semantic domain newtype T_Grammar = T_Grammar (( VisageGrammar)) data Inh_Grammar = Inh_Grammar {}@@ -249,8 +250,9 @@                        AttrOrderMap ->                        ParamMap ->                        ContextMap ->+                       UniqueMap ->                        T_Grammar-sem_Grammar_Grammar typeSyns_ useMap_ derivings_ wrappers_ (T_Nonterminals nonts_) pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ =+sem_Grammar_Grammar typeSyns_ useMap_ derivings_ wrappers_ (T_Nonterminals nonts_) pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ uniqueMap_ =     (T_Grammar (let _lhsOvisage :: VisageGrammar                     _nontsIvnonts :: ([VisageNonterminal])                     -- "TfmToVisage.ag"(line 86, column 17)
src-derived/Transform.hs view
@@ -2,3663 +2,3912 @@ module Transform where  import Control.Monad(mplus,mzero)-import List (partition, elem, nub)-import Data.Maybe-import qualified Data.Map as Map-import Data.Map (Map)-import Data.Set as Set (Set, member, union, toList, fromList, empty, singleton, member, unions, size, fold, intersection, difference, insert)-import UU.DData.Seq as Seq (Seq, empty, (<>), single, cons, toList, fromList)-import UU.Scanner.Position(noPos)--import ConcreteSyntax-import AbstractSyntax-import ErrorMessages-import Patterns (Patterns(..),Pattern(..))-import Expression (Expression(..))--import Options-import CommonTypes--import UU.Scanner.Position (Pos)-import Patterns   (Pattern)-import Expression (Expression)-import CommonTypes---- Patterns.ag imports-import UU.Scanner.Position(Pos)-import CommonTypes (ConstructorIdent,Identifier)-type DefinedSets = Map Identifier (Set NontermIdent) -type FieldMap  = [(Identifier, Type)] -type DataTypes = Map.Map NontermIdent (Map.Map ConstructorIdent FieldMap) -type AttrName = (Identifier,Identifier) -type RuleInfo = ([AttrName]->Pattern, Expression, [AttrName], Bool, String) -type SigInfo  = (Identifier,Type) ---checkDuplicate :: (Identifier -> Identifier -> Error)-               -> Identifier -> val -> Map Identifier val -> (Map Identifier val,Seq Error)-checkDuplicate dupError key val m-  = case Map.lookupIndex key m of-     Just ix -> let (key',_) = Map.elemAt ix m-                in  (m,Seq.single (dupError key key'))-     Nothing -> (Map.insert key val m,Seq.empty)--checkDuplicates :: (Identifier -> Identifier -> Error)-                -> [(Identifier, val)] -> Map Identifier val -> (Map Identifier val,Seq Error)-checkDuplicates dupError new m = foldErrors check m new- where  check = uncurry (checkDuplicate dupError)--foldErrors f e xs = foldl g (e,Seq.empty) xs-  where g ~(e,es) x = let (e',es') = f x e-                      in (e', es <> es')---checkForDuplicates :: (Identifier -> Identifier -> Error)  ->  [Identifier]  ->  [Error]-checkForDuplicates err [] = []-checkForDuplicates err (x:xs) = let (same,other) = List.partition (equalId x) xs-                                in  map (err x) same ++ checkForDuplicates err other--equalId :: Identifier -> Identifier -> Bool-equalId x y = getName x == getName y---type RulesAndErrors = ([Rule], Seq Error)-type SigsAndErrors  = ([TypeSig], Seq Error)-type InstsAndErrors = ([(Identifier, Type)], Seq Error)-type AttrOverwrite  = Map AttrName Bool-type AccumRuleCheck = (RulesAndErrors, AttrOverwrite)-type AccumDefiCheck = (Seq Error, AttrOverwrite, [AttrName], [AttrName])--checkRules :: Map NontermIdent (Attributes, Attributes) -> Map NontermIdent (Map ConstructorIdent FieldMap) ->-              Map NontermIdent (Map ConstructorIdent [Identifier]) -> Map NontermIdent (Map ConstructorIdent [SigInfo]) ->-              NontermIdent -> ConstructorIdent -> [RuleInfo] -> RulesAndErrors-checkRules attributes fields allinsts allsigs nt con rs-  = let fieldmap :: FieldMap-        fieldmap = (_LHS,NT nt undefined) : (_LOC,NT undefined undefined) : (_INST, NT undefined undefined) : (_FIRST, NT undefined undefined) : (_LAST, NT undefined undefined)-                 : Map.findWithDefault [] con (Map.findWithDefault Map.empty nt fields)-                 ++ mapMaybe (\instNm -> lookup instNm sigs >>= \tp -> return (instNm, tp)) (Map.findWithDefault [] con (Map.findWithDefault Map.empty nt allinsts))-        -        sigs = Map.findWithDefault [] con (Map.findWithDefault Map.empty nt allsigs)--        hasAttrib f tp attr  = Map.member attr (f (Map.findWithDefault (Map.empty,Map.empty) tp attributes))-  -        checkRule :: RuleInfo -> AccumRuleCheck -> AccumRuleCheck-        checkRule (pat,exp,as,owrt,str) ((r1,e1),m1) -          = let (e2,m2,u2,b2) = foldr (checkDefi owrt) (e1,m1,[],[]) as-            in  ( (Rule (pat u2) exp owrt str : r1, e2), m2)--        checkDefi :: Bool -> AttrName -> AccumDefiCheck -> AccumDefiCheck-        checkDefi owrt fa@(field,attr) (e,m,u,bs)-         = case lookup field fieldmap-            of  Just (NT tp _) -> if field == _LOC || field == _INST || field == _FIRST || field == _LAST-                                     || hasAttrib (if getName field==getName _LHS then snd else fst) tp attr-                                  then case Map.lookupIndex fa m of-                                           Just ix -> let ((_,attr2),b) = Map.elemAt ix m-                                                       in  if b && not (fa `elem` bs)-                                                           then (                                             e, Map.insert fa owrt m, fa:u, fa:bs)-                                                           else (Seq.cons (DupRule nt con field attr2 attr)   e,                    m, fa:u,    bs)-                                           Nothing ->           (                                             e, Map.insert fa owrt m,    u, fa:bs)-                                  else                          (Seq.cons (SuperfluousRule nt con field attr) e,                    m, fa:u,    bs)-                _              ->                               (Seq.cons (UndefChild nt con field)           e,                    m, fa:u,    bs )--    in  fst (foldr checkRule (([],Seq.empty),Map.empty) rs)--checkSigs :: NontermIdent -> ConstructorIdent -> [SigInfo] -> SigsAndErrors-checkSigs nt con sis -  = let checkSig (ide,typ) (sigs,errs)-         = if   ide `elem` map (\(TypeSig n t)-> n) sigs-           then (sigs, Seq.cons (DupSig nt con ide) errs)-           -- else if not (ide `elem` locattrdefs)-           -- then (sigs, Seq.cons (SupSig nt con ide) errs)-           else (TypeSig ide typ:sigs, errs)-    in  foldr checkSig ([],Seq.empty) sis--checkInsts :: Map NontermIdent (Map ConstructorIdent [SigInfo]) -> NontermIdent -> ConstructorIdent -> [Identifier] -> InstsAndErrors-checkInsts sigMap nt con-  = foldr (\inst (insts, errs) -> maybe (insts, Seq.single (MissingInstSig nt con inst) <> errs)-                                        (\info -> (info : insts, errs)) $ findSig inst) ([], Seq.empty)-  where-    sigs = Map.findWithDefault [] con (Map.findWithDefault Map.empty nt sigMap)-    -    findSig name-      = do tp@(NT _ _) <- lookup name sigs-           return (name, tp)--flattenDatas :: DataTypes -> Map NontermIdent (Set NontermIdent)-flattenDatas ds = Map.map flatten ds-  where flatten cs =  Set.fromList [ nt | (_,NT nt _) <- concatMap snd (Map.toList cs)]--reachableFrom :: Map NontermIdent (Set NontermIdent) -> Set NontermIdent -> Set NontermIdent-reachableFrom table nts = reach nts-  where reach nts = let nts' = Set.unions (nts : [ ns  | nt <- Set.toList nts-                                                 , let ns = Map.findWithDefault Set.empty nt table ])-                    in if Set.size nts' > Set.size nts-                          then reach nts'-                          else nts-invert :: Map NontermIdent (Set NontermIdent) -> Map NontermIdent (Set NontermIdent)-invert m = foldr inv Map.empty (Map.toList m)-  where inv (x,ns) m = fold (\n m -> Map.insertWith Set.union n (Set.singleton x) m) m ns--path :: Map NontermIdent (Set NontermIdent) -> NontermIdent -> NontermIdent -> Set NontermIdent-path table from to = let children = Map.findWithDefault Set.empty from table-                         forward  = reachableFrom table children-                         backward = reachableFrom (invert table)-                                                  (Set.singleton to)-                     in  Set.intersection forward backward--pragmaMapUnion :: PragmaMap -> PragmaMap -> PragmaMap-pragmaMapUnion = Map.unionWith (Map.unionWith Set.union)--pragmaMapSingle :: NontermIdent -> ConstructorIdent -> Set Identifier -> PragmaMap-pragmaMapSingle nt con nms = Map.singleton nt (Map.singleton con nms)--orderMapUnion :: AttrOrderMap -> AttrOrderMap -> AttrOrderMap-orderMapUnion = Map.unionWith (Map.unionWith Set.union)--orderMapSingle :: NontermIdent -> ConstructorIdent -> Set Dependency -> AttrOrderMap-orderMapSingle nt con deps = Map.singleton nt (Map.singleton con deps)--mergeParams :: ParamMap -> ParamMap -> ParamMap-mergeParams = Map.unionWith (++)--mergeCtx :: ContextMap -> ContextMap -> ContextMap-mergeCtx-  = Map.unionWith nubconcat-  where nubconcat a b = nub (a ++ b)--mergeDerivings m1 m2 = foldr (\(n,cs) m -> Map.insertWith Set.union n cs m) m2 (Map.toList m1)--merge x y = foldr f y (Map.toList x)- where f ~(k,v) m = Map.insertWith (Map.union) k v m--checkAttrs allFields nts inherited synthesized decls = foldErrors check decls nts where-  check nt decls | not (nt `Map.member` allFields) = (decls,Seq.single(UndefNont nt))-                 | otherwise = let (inh,syn) = Map.findWithDefault (Map.empty,Map.empty) nt decls-                                   (inh',einh) = checkDuplicates (DupInhAttr nt) inherited   inh-                                   (syn',esyn) = checkDuplicates (DupSynAttr nt) synthesized syn-                               in (Map.insert nt (inh',syn') decls,einh <> esyn)--addSelf name atMap = let (eInh,eSyn) = Map.findWithDefault(Map.empty,Map.empty) name atMap-                     in  Map.insert name (eInh, Map.insert (Ident "self" noPos) (NT _SELF []) eSyn)atMap--makeType :: Set NontermIdent -> Type -> Type-makeType nts tp@(NT x _) | x == _SELF       = tp-                         | Set.member x nts = tp-                         | otherwise        = Haskell (typeToHaskellString Nothing [] tp)-makeType _   tp                             = tp--constructGrammar ::    Set NontermIdent-                    -> ParamMap-                    -> DataTypes-                    -> Map NontermIdent (Attributes, Attributes)-                    -> Map NontermIdent (Map Identifier (String, String, String))-                    -> Derivings-                    -> Set NontermIdent-                    -> Map NontermIdent (Map ConstructorIdent [Rule])-                    -> Map NontermIdent (Map ConstructorIdent [TypeSig])-                    -> Map NontermIdent (Map ConstructorIdent [(Identifier, Type)])-                    -> TypeSyns-                    -> PragmaMap-                    -> AttrOrderMap-                    -> ContextMap-                    -> Grammar--constructGrammar nts ntParams gram attrs uses derivings wrappers allrules tsigs allinsts tsyns pragmaMap orderMap contextMap =-   let gr = [ (nt,Map.toList alts) | (nt,alts) <- Map.toList gram]-       nonts = map nont gr-       nont (nt,alts) =  let (inh,syn) = Map.findWithDefault (Map.empty,Map.empty) nt attrs-                             rmap      = Map.findWithDefault Map.empty             nt allrules-                             tsmap     = Map.findWithDefault Map.empty             nt tsigs-                             instsmap  = Map.findWithDefault Map.empty             nt allinsts-                             params    = Map.findWithDefault []                    nt ntParams-                             alt (con,flds) =-                                   let rules = maybe [] id (Map.lookup con rmap)-                                       tsigs = maybe [] id (Map.lookup con tsmap)-                                       insts = maybe [] id (Map.lookup con instsmap)-                                       cldrn = map (child False) flds ++ map (child True) insts-                                       child isVirtual (nm, tp) =-                                          let (inh,syn) = case tp of-                                                 NT nt _ -> Map.findWithDefault (Map.empty,Map.empty) nt attrs-                                                 _       -> (Map.empty,Map.empty)-                                          in Child nm tp inh syn isVirtual-                                   in Production con cldrn rules tsigs-                            in Nonterminal nt params inh syn (map alt alts)-   in Grammar tsyns uses derivings wrappers nonts pragmaMap orderMap ntParams contextMap--mapUnionWithSetUnion = Map.unionWith Set.union-mapUnionWithPlusPlus = Map.unionWith (++)--- AG -----------------------------------------------------------{--   visit 0:-      inherited attribute:-         options              : Options-      synthesized attributes:-         blocks               : Blocks-         errors               : Seq Error-         moduleDecl           : Maybe (String,String,String)-         output               : Grammar-         pragmas              : Options -> Options-   alternatives:-      alternative AG:-         child elems          : Elems-         visit 0:-            local allFields   : _-            local allConstrs  : _-            local allRules    : _-            local allSigs     : _-            local allInsts    : _-            local allRulesErrs : _-            local allSigsErrs : _-            local allInstsErrs : _-            local checkedRules : _-            local checkedSigs : _-            local checkedInsts : _-            local errs1       : _-            local errs2       : _-            local errs3       : _-            local errs4       : _-            local errs5       : _-            local errs6       : _-            local allNonterminals : _-            local allAttrDecls : _--}--- cata-sem_AG :: AG ->-          T_AG-sem_AG (AG _elems) =-    (sem_AG_AG (sem_Elems _elems))--- semantic domain-newtype T_AG = T_AG (Options ->-                     ( Blocks,(Seq Error),(Maybe (String,String,String)),Grammar,(Options -> Options)))-data Inh_AG = Inh_AG {options_Inh_AG :: Options}-data Syn_AG = Syn_AG {blocks_Syn_AG :: Blocks,errors_Syn_AG :: Seq Error,moduleDecl_Syn_AG :: Maybe (String,String,String),output_Syn_AG :: Grammar,pragmas_Syn_AG :: Options -> Options}-wrap_AG (T_AG sem) (Inh_AG _lhsIoptions) =-    (let ( _lhsOblocks,_lhsOerrors,_lhsOmoduleDecl,_lhsOoutput,_lhsOpragmas) =-             (sem _lhsIoptions)-     in  (Syn_AG _lhsOblocks _lhsOerrors _lhsOmoduleDecl _lhsOoutput _lhsOpragmas))-sem_AG_AG :: T_Elems ->-             T_AG-sem_AG_AG (T_Elems elems_) =-    (T_AG (\ _lhsIoptions ->-               (let _lhsOoutput :: Grammar-                    _lhsOerrors :: (Seq Error)-                    _elemsOallConstructors :: (Map NontermIdent (Set ConstructorIdent))-                    _elemsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                    _elemsOdefinedSets :: DefinedSets-                    _elemsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                    _lhsOblocks :: Blocks-                    _lhsOmoduleDecl :: (Maybe (String,String,String))-                    _lhsOpragmas :: (Options -> Options)-                    _elemsOallAttrDecls :: (Map NontermIdent (Attributes, Attributes))-                    _elemsOallFields :: DataTypes-                    _elemsOallNonterminals :: (Set NontermIdent)-                    _elemsIattrDecls :: (Map NontermIdent (Attributes, Attributes))-                    _elemsIattrOrderCollect :: AttrOrderMap-                    _elemsIblocks :: Blocks-                    _elemsIcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))-                    _elemsIcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                    _elemsIcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                    _elemsIcollectedNames :: (Set Identifier)-                    _elemsIcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                    _elemsIcollectedSetNames :: (Set Identifier)-                    _elemsIcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                    _elemsIctxCollect :: ContextMap-                    _elemsIdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                    _elemsIderivings :: Derivings-                    _elemsIerrors :: (Seq Error)-                    _elemsImoduleDecl :: (Maybe (String,String,String))-                    _elemsIparamsCollect :: ParamMap-                    _elemsIpragmas :: (Options -> Options)-                    _elemsIsemPragmasCollect :: PragmaMap-                    _elemsItypeSyns :: TypeSyns-                    _elemsIuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                    _elemsIwrappers :: (Set NontermIdent)-                    -- "Transform.ag"(line 45, column 8)-                    _lhsOoutput =-                        constructGrammar _allNonterminals-                                         _elemsIparamsCollect-                                         _allFields-                                         _allAttrDecls-                                         _elemsIuseMap-                                         _elemsIderivings-                                         (if wrappers _lhsIoptions then _allNonterminals     else _elemsIwrappers)-                                         _checkedRules-                                         _checkedSigs-                                         _checkedInsts-                                         _elemsItypeSyns-                                         _elemsIsemPragmasCollect-                                         _elemsIattrOrderCollect-                                         _elemsIctxCollect-                    -- "Transform.ag"(line 219, column 10)-                    _allFields =-                        let f (nt,con,fm) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con fm)-                        in  foldr f (Map.empty) _elemsIcollectedFields-                    -- "Transform.ag"(line 222, column 10)-                    _allConstrs =-                        let f (nt,con,_) = Map.insertWith (++) nt [con]-                        in  foldr f (Map.empty) _elemsIcollectedFields-                    -- "Transform.ag"(line 225, column 10)-                    _allRules =-                        let f (nt,con,r) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con [r])-                        in  foldr f (Map.empty) _elemsIcollectedRules-                    -- "Transform.ag"(line 228, column 10)-                    _allSigs =-                        let f (nt,con,t) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con [t])-                        in  foldr f (Map.empty) _elemsIcollectedSigs-                    -- "Transform.ag"(line 231, column 10)-                    _allInsts =-                        let f (nt,con,is) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con is)-                        in  foldr f (Map.empty) _elemsIcollectedInsts-                    -- "Transform.ag"(line 234, column 10)-                    _allRulesErrs =-                        Map.mapWithKey (Map.mapWithKey . (checkRules _allAttrDecls _allFields _allInsts _allSigs    )) _allRules-                    -- "Transform.ag"(line 235, column 10)-                    _allSigsErrs =-                        Map.mapWithKey (Map.mapWithKey . (checkSigs                                                 )) _allSigs-                    -- "Transform.ag"(line 236, column 10)-                    _allInstsErrs =-                        Map.mapWithKey (Map.mapWithKey . (checkInsts _allSigs                                       )) _allInsts-                    -- "Transform.ag"(line 238, column 10)-                    _checkedRules =-                        Map.map (Map.map fst) _allRulesErrs-                    -- "Transform.ag"(line 239, column 10)-                    _checkedSigs =-                        Map.map (Map.map fst) _allSigsErrs-                    -- "Transform.ag"(line 240, column 10)-                    _checkedInsts =-                        Map.map (Map.map fst) _allInstsErrs-                    -- "Transform.ag"(line 242, column 10)-                    _errs1 =-                        let f = checkForDuplicates (DupSynonym)-                        in  Seq.fromList . f . map fst $ _elemsItypeSyns-                    -- "Transform.ag"(line 245, column 10)-                    _errs2 =-                        let g nt (con,fm) = checkForDuplicates (DupChild nt con) (map fst fm)-                            f (nt,cfm)    = concat . map (g nt) . Map.toList $ cfm-                        in  Seq.fromList . concat . map f . Map.toList $ _allFields-                    -- "Transform.ag"(line 249, column 10)-                    _errs3 =-                        let f (nt,cons) = checkForDuplicates (DupAlt nt) cons-                        in   Seq.empty-                    -- "Transform.ag"(line 253, column 10)-                    _errs4 =-                        let  f m s = Map.fold ((<>) . snd) s m-                        in Map.fold f Seq.empty _allRulesErrs-                    -- "Transform.ag"(line 256, column 10)-                    _errs5 =-                        let  f m s = Map.fold ((<>) . snd) s m-                        in Map.fold f Seq.empty _allSigsErrs-                    -- "Transform.ag"(line 259, column 10)-                    _errs6 =-                        let  f m s = Map.fold ((<>) . snd) s m-                        in Map.fold f Seq.empty _allInstsErrs-                    -- "Transform.ag"(line 262, column 10)-                    _lhsOerrors =-                        _elemsIerrors <> _errs1 <> _errs2 <> _errs3 <> _errs4 <> _errs5 <> _errs6-                    -- "Transform.ag"(line 345, column 10)-                    _allNonterminals =-                        _elemsIcollectedNames `Set.difference` _elemsIcollectedSetNames-                    -- "Transform.ag"(line 365, column 8)-                    _elemsOallConstructors =-                        _elemsIcollectedConstructorsMap-                    -- "Transform.ag"(line 419, column 8)-                    _elemsOdefSets =-                        Map.fromList (map (\x->(x,(Set.singleton x, Set.empty))) (Set.toList _allNonterminals    ))-                    -- "Transform.ag"(line 420, column 8)-                    _elemsOdefinedSets =-                        Map.map fst _elemsIdefSets-                    -- "Transform.ag"(line 664, column 8)-                    _elemsOattrDecls =-                        Map.empty-                    -- "Transform.ag"(line 703, column 9)-                    _allAttrDecls =-                        if withSelf _lhsIoptions-                         then foldr addSelf _elemsIattrDecls (Set.toList _allNonterminals    )-                         else               _elemsIattrDecls-                    -- use rule "Transform.ag"(line 38, column 19)-                    _lhsOblocks =-                        _elemsIblocks-                    -- use rule "Transform.ag"(line 787, column 37)-                    _lhsOmoduleDecl =-                        _elemsImoduleDecl-                    -- use rule "Transform.ag"(line 501, column 34)-                    _lhsOpragmas =-                        _elemsIpragmas-                    -- copy rule (from local)-                    _elemsOallAttrDecls =-                        _allAttrDecls-                    -- copy rule (from local)-                    _elemsOallFields =-                        _allFields-                    -- copy rule (from local)-                    _elemsOallNonterminals =-                        _allNonterminals-                    ( _elemsIattrDecls,_elemsIattrOrderCollect,_elemsIblocks,_elemsIcollectedConstructorsMap,_elemsIcollectedFields,_elemsIcollectedInsts,_elemsIcollectedNames,_elemsIcollectedRules,_elemsIcollectedSetNames,_elemsIcollectedSigs,_elemsIctxCollect,_elemsIdefSets,_elemsIderivings,_elemsIerrors,_elemsImoduleDecl,_elemsIparamsCollect,_elemsIpragmas,_elemsIsemPragmasCollect,_elemsItypeSyns,_elemsIuseMap,_elemsIwrappers) =-                        (elems_ _elemsOallAttrDecls _elemsOallConstructors _elemsOallFields _elemsOallNonterminals _elemsOattrDecls _elemsOdefSets _elemsOdefinedSets)-                in  ( _lhsOblocks,_lhsOerrors,_lhsOmoduleDecl,_lhsOoutput,_lhsOpragmas))))--- Alt ----------------------------------------------------------{--   visit 0:-      inherited attributes:-         allConstructors      : Map NontermIdent (Set ConstructorIdent)-         allNonterminals      : Set NontermIdent-         nts                  : Set NontermIdent-      synthesized attributes:-         collectedConstructorNames : Set ConstructorIdent-         collectedFields      : [(NontermIdent, ConstructorIdent, FieldMap)]-   alternatives:-      alternative Alt:-         child pos            : {Pos}-         child names          : ConstructorSet-         child fields         : {Fields}--}--- cata-sem_Alt :: Alt ->-           T_Alt-sem_Alt (Alt _pos _names _fields) =-    (sem_Alt_Alt _pos (sem_ConstructorSet _names) _fields)--- semantic domain-newtype T_Alt = T_Alt ((Map NontermIdent (Set ConstructorIdent)) ->-                       (Set NontermIdent) ->-                       (Set NontermIdent) ->-                       ( (Set ConstructorIdent),([(NontermIdent, ConstructorIdent, FieldMap)])))-data Inh_Alt = Inh_Alt {allConstructors_Inh_Alt :: Map NontermIdent (Set ConstructorIdent),allNonterminals_Inh_Alt :: Set NontermIdent,nts_Inh_Alt :: Set NontermIdent}-data Syn_Alt = Syn_Alt {collectedConstructorNames_Syn_Alt :: Set ConstructorIdent,collectedFields_Syn_Alt :: [(NontermIdent, ConstructorIdent, FieldMap)]}-wrap_Alt (T_Alt sem) (Inh_Alt _lhsIallConstructors _lhsIallNonterminals _lhsInts) =-    (let ( _lhsOcollectedConstructorNames,_lhsOcollectedFields) =-             (sem _lhsIallConstructors _lhsIallNonterminals _lhsInts)-     in  (Syn_Alt _lhsOcollectedConstructorNames _lhsOcollectedFields))-sem_Alt_Alt :: Pos ->-               T_ConstructorSet ->-               Fields ->-               T_Alt-sem_Alt_Alt pos_ (T_ConstructorSet names_) fields_ =-    (T_Alt (\ _lhsIallConstructors-              _lhsIallNonterminals-              _lhsInts ->-                (let _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                     _lhsOcollectedConstructorNames :: (Set ConstructorIdent)-                     _namesIcollectedConstructorNames :: (Set ConstructorIdent)-                     _namesIconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))-                     _namesIerrors :: (Seq Error)-                     -- "Transform.ag"(line 204, column 10)-                     _lhsOcollectedFields =-                         let fieldTable =-                              [ (attr, makeType _lhsIallNonterminals tp)-                              | (attr, tp) <- fields_-                              ]-                         in   [ (nt, con, fieldTable)-                              | nt  <- Set.toList _lhsInts-                              , con <- Set.toList (_namesIconstructors (Map.findWithDefault Set.empty nt _lhsIallConstructors))-                              ]-                     -- use rule "Transform.ag"(line 82, column 62)-                     _lhsOcollectedConstructorNames =-                         _namesIcollectedConstructorNames-                     ( _namesIcollectedConstructorNames,_namesIconstructors,_namesIerrors) =-                         (names_ )-                 in  ( _lhsOcollectedConstructorNames,_lhsOcollectedFields))))--- Alts ---------------------------------------------------------{--   visit 0:-      inherited attributes:-         allConstructors      : Map NontermIdent (Set ConstructorIdent)-         allNonterminals      : Set NontermIdent-         nts                  : Set NontermIdent-      synthesized attributes:-         collectedConstructorNames : Set ConstructorIdent-         collectedFields      : [(NontermIdent, ConstructorIdent, FieldMap)]-   alternatives:-      alternative Cons:-         child hd             : Alt-         child tl             : Alts-      alternative Nil:--}--- cata-sem_Alts :: Alts ->-            T_Alts-sem_Alts list =-    (Prelude.foldr sem_Alts_Cons sem_Alts_Nil (Prelude.map sem_Alt list))--- semantic domain-newtype T_Alts = T_Alts ((Map NontermIdent (Set ConstructorIdent)) ->-                         (Set NontermIdent) ->-                         (Set NontermIdent) ->-                         ( (Set ConstructorIdent),([(NontermIdent, ConstructorIdent, FieldMap)])))-data Inh_Alts = Inh_Alts {allConstructors_Inh_Alts :: Map NontermIdent (Set ConstructorIdent),allNonterminals_Inh_Alts :: Set NontermIdent,nts_Inh_Alts :: Set NontermIdent}-data Syn_Alts = Syn_Alts {collectedConstructorNames_Syn_Alts :: Set ConstructorIdent,collectedFields_Syn_Alts :: [(NontermIdent, ConstructorIdent, FieldMap)]}-wrap_Alts (T_Alts sem) (Inh_Alts _lhsIallConstructors _lhsIallNonterminals _lhsInts) =-    (let ( _lhsOcollectedConstructorNames,_lhsOcollectedFields) =-             (sem _lhsIallConstructors _lhsIallNonterminals _lhsInts)-     in  (Syn_Alts _lhsOcollectedConstructorNames _lhsOcollectedFields))-sem_Alts_Cons :: T_Alt ->-                 T_Alts ->-                 T_Alts-sem_Alts_Cons (T_Alt hd_) (T_Alts tl_) =-    (T_Alts (\ _lhsIallConstructors-               _lhsIallNonterminals-               _lhsInts ->-                 (let _lhsOcollectedConstructorNames :: (Set ConstructorIdent)-                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                      _hdOallConstructors :: (Map NontermIdent (Set ConstructorIdent))-                      _hdOallNonterminals :: (Set NontermIdent)-                      _hdOnts :: (Set NontermIdent)-                      _tlOallConstructors :: (Map NontermIdent (Set ConstructorIdent))-                      _tlOallNonterminals :: (Set NontermIdent)-                      _tlOnts :: (Set NontermIdent)-                      _hdIcollectedConstructorNames :: (Set ConstructorIdent)-                      _hdIcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                      _tlIcollectedConstructorNames :: (Set ConstructorIdent)-                      _tlIcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                      -- use rule "Transform.ag"(line 82, column 62)-                      _lhsOcollectedConstructorNames =-                          _hdIcollectedConstructorNames `Set.union` _tlIcollectedConstructorNames-                      -- use rule "Transform.ag"(line 114, column 28)-                      _lhsOcollectedFields =-                          _hdIcollectedFields ++ _tlIcollectedFields-                      -- copy rule (down)-                      _hdOallConstructors =-                          _lhsIallConstructors-                      -- copy rule (down)-                      _hdOallNonterminals =-                          _lhsIallNonterminals-                      -- copy rule (down)-                      _hdOnts =-                          _lhsInts-                      -- copy rule (down)-                      _tlOallConstructors =-                          _lhsIallConstructors-                      -- copy rule (down)-                      _tlOallNonterminals =-                          _lhsIallNonterminals-                      -- copy rule (down)-                      _tlOnts =-                          _lhsInts-                      ( _hdIcollectedConstructorNames,_hdIcollectedFields) =-                          (hd_ _hdOallConstructors _hdOallNonterminals _hdOnts)-                      ( _tlIcollectedConstructorNames,_tlIcollectedFields) =-                          (tl_ _tlOallConstructors _tlOallNonterminals _tlOnts)-                  in  ( _lhsOcollectedConstructorNames,_lhsOcollectedFields))))-sem_Alts_Nil :: T_Alts-sem_Alts_Nil  =-    (T_Alts (\ _lhsIallConstructors-               _lhsIallNonterminals-               _lhsInts ->-                 (let _lhsOcollectedConstructorNames :: (Set ConstructorIdent)-                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                      -- use rule "Transform.ag"(line 82, column 62)-                      _lhsOcollectedConstructorNames =-                          Set.empty-                      -- use rule "Transform.ag"(line 114, column 28)-                      _lhsOcollectedFields =-                          []-                  in  ( _lhsOcollectedConstructorNames,_lhsOcollectedFields))))--- Attrs --------------------------------------------------------{--   visit 0:-      inherited attributes:-         allFields            : DataTypes-         allNonterminals      : Set NontermIdent-         nts                  : Set NontermIdent-      chained attribute:-         attrDecls            : Map NontermIdent (Attributes, Attributes)-      synthesized attributes:-         errors               : Seq Error-         useMap               : Map NontermIdent (Map Identifier (String,String,String))-   alternatives:-      alternative Attrs:-         child pos            : {Pos}-         child inh            : {AttrNames}-         child chn            : {AttrNames}-         child syn            : {AttrNames}-         visit 0:-            local _tup1       : _-            local attrDecls   : _-            local errors      : _-            local _tup2       : _-            local inherited   : _-            local synthesized : _-            local useMap      : _--}--- cata-sem_Attrs :: Attrs ->-             T_Attrs-sem_Attrs (Attrs _pos _inh _chn _syn) =-    (sem_Attrs_Attrs _pos _inh _chn _syn)--- semantic domain-newtype T_Attrs = T_Attrs (DataTypes ->-                           (Set NontermIdent) ->-                           (Map NontermIdent (Attributes, Attributes)) ->-                           (Set NontermIdent) ->-                           ( (Map NontermIdent (Attributes, Attributes)),(Seq Error),(Map NontermIdent (Map Identifier (String,String,String)))))-data Inh_Attrs = Inh_Attrs {allFields_Inh_Attrs :: DataTypes,allNonterminals_Inh_Attrs :: Set NontermIdent,attrDecls_Inh_Attrs :: Map NontermIdent (Attributes, Attributes),nts_Inh_Attrs :: Set NontermIdent}-data Syn_Attrs = Syn_Attrs {attrDecls_Syn_Attrs :: Map NontermIdent (Attributes, Attributes),errors_Syn_Attrs :: Seq Error,useMap_Syn_Attrs :: Map NontermIdent (Map Identifier (String,String,String))}-wrap_Attrs (T_Attrs sem) (Inh_Attrs _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsInts) =-    (let ( _lhsOattrDecls,_lhsOerrors,_lhsOuseMap) =-             (sem _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsInts)-     in  (Syn_Attrs _lhsOattrDecls _lhsOerrors _lhsOuseMap))-sem_Attrs_Attrs :: Pos ->-                   AttrNames ->-                   AttrNames ->-                   AttrNames ->-                   T_Attrs-sem_Attrs_Attrs pos_ inh_ chn_ syn_ =-    (T_Attrs (\ _lhsIallFields-                _lhsIallNonterminals-                _lhsIattrDecls-                _lhsInts ->-                  (let _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                       _lhsOerrors :: (Seq Error)-                       _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                       -- "Transform.ag"(line 672, column 15)-                       __tup1 =-                           checkAttrs _lhsIallFields (Set.toList _lhsInts) _inherited _synthesized _lhsIattrDecls-                       -- "Transform.ag"(line 672, column 15)-                       (_attrDecls,_) =-                           __tup1-                       -- "Transform.ag"(line 672, column 15)-                       (_,_errors) =-                           __tup1-                       -- "Transform.ag"(line 674, column 15)-                       __tup2 =-                           let splitAttrs xs = unzip [ ((n,makeType _lhsIallNonterminals t),(n,ud))-                                                     | (n,t,ud) <- xs-                                                     ]-                               (inh,_)     = splitAttrs inh_-                               (chn,uses1) = splitAttrs chn_-                               (syn,uses2) = splitAttrs syn_-                               isUse (n,(e1,e2,_)) = not (null e1 || null e2)-                           in (inh++chn,chn++syn, Map.fromList (Prelude.filter isUse (uses1++uses2)))-                       -- "Transform.ag"(line 674, column 15)-                       (_inherited,_,_) =-                           __tup2-                       -- "Transform.ag"(line 674, column 15)-                       (_,_synthesized,_) =-                           __tup2-                       -- "Transform.ag"(line 674, column 15)-                       (_,_,_useMap) =-                           __tup2-                       -- "Transform.ag"(line 682, column 11)-                       _lhsOuseMap =-                           Map.fromList (zip (Set.toList _lhsInts) (repeat _useMap))-                       -- use rule "Transform.ag"(line 36, column 19)-                       _lhsOerrors =-                           _errors-                       -- copy rule (from local)-                       _lhsOattrDecls =-                           _attrDecls-                   in  ( _lhsOattrDecls,_lhsOerrors,_lhsOuseMap))))--- ConstructorSet -----------------------------------------------{--   visit 0:-      synthesized attributes:-         collectedConstructorNames : Set ConstructorIdent-         constructors         : (Set ConstructorIdent->Set ConstructorIdent)-         errors               : Seq Error-   alternatives:-      alternative CAll:-      alternative CDifference:-         child set1           : ConstructorSet-         child set2           : ConstructorSet-      alternative CName:-         child name           : {ConstructorIdent}-      alternative CUnion:-         child set1           : ConstructorSet-         child set2           : ConstructorSet--}--- cata-sem_ConstructorSet :: ConstructorSet ->-                      T_ConstructorSet-sem_ConstructorSet (CAll ) =-    (sem_ConstructorSet_CAll )-sem_ConstructorSet (CDifference _set1 _set2) =-    (sem_ConstructorSet_CDifference (sem_ConstructorSet _set1) (sem_ConstructorSet _set2))-sem_ConstructorSet (CName _name) =-    (sem_ConstructorSet_CName _name)-sem_ConstructorSet (CUnion _set1 _set2) =-    (sem_ConstructorSet_CUnion (sem_ConstructorSet _set1) (sem_ConstructorSet _set2))--- semantic domain-newtype T_ConstructorSet = T_ConstructorSet (( (Set ConstructorIdent),((Set ConstructorIdent->Set ConstructorIdent)),(Seq Error)))-data Inh_ConstructorSet = Inh_ConstructorSet {}-data Syn_ConstructorSet = Syn_ConstructorSet {collectedConstructorNames_Syn_ConstructorSet :: Set ConstructorIdent,constructors_Syn_ConstructorSet :: (Set ConstructorIdent->Set ConstructorIdent),errors_Syn_ConstructorSet :: Seq Error}-wrap_ConstructorSet (T_ConstructorSet sem) (Inh_ConstructorSet ) =-    (let ( _lhsOcollectedConstructorNames,_lhsOconstructors,_lhsOerrors) =-             (sem )-     in  (Syn_ConstructorSet _lhsOcollectedConstructorNames _lhsOconstructors _lhsOerrors))-sem_ConstructorSet_CAll :: T_ConstructorSet-sem_ConstructorSet_CAll  =-    (T_ConstructorSet (let _lhsOconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))-                           _lhsOcollectedConstructorNames :: (Set ConstructorIdent)-                           _lhsOerrors :: (Seq Error)-                           -- "Transform.ag"(line 486, column 17)-                           _lhsOconstructors =-                               \ds -> ds-                           -- use rule "Transform.ag"(line 82, column 62)-                           _lhsOcollectedConstructorNames =-                               Set.empty-                           -- use rule "Transform.ag"(line 36, column 19)-                           _lhsOerrors =-                               Seq.empty-                       in  ( _lhsOcollectedConstructorNames,_lhsOconstructors,_lhsOerrors)))-sem_ConstructorSet_CDifference :: T_ConstructorSet ->-                                  T_ConstructorSet ->-                                  T_ConstructorSet-sem_ConstructorSet_CDifference (T_ConstructorSet set1_) (T_ConstructorSet set2_) =-    (T_ConstructorSet (let _lhsOconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))-                           _lhsOcollectedConstructorNames :: (Set ConstructorIdent)-                           _lhsOerrors :: (Seq Error)-                           _set1IcollectedConstructorNames :: (Set ConstructorIdent)-                           _set1Iconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))-                           _set1Ierrors :: (Seq Error)-                           _set2IcollectedConstructorNames :: (Set ConstructorIdent)-                           _set2Iconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))-                           _set2Ierrors :: (Seq Error)-                           -- "Transform.ag"(line 485, column 17)-                           _lhsOconstructors =-                               \ds -> _set1Iconstructors ds `Set.difference` _set2Iconstructors ds-                           -- use rule "Transform.ag"(line 82, column 62)-                           _lhsOcollectedConstructorNames =-                               _set1IcollectedConstructorNames `Set.union` _set2IcollectedConstructorNames-                           -- use rule "Transform.ag"(line 36, column 19)-                           _lhsOerrors =-                               _set1Ierrors Seq.<> _set2Ierrors-                           ( _set1IcollectedConstructorNames,_set1Iconstructors,_set1Ierrors) =-                               (set1_ )-                           ( _set2IcollectedConstructorNames,_set2Iconstructors,_set2Ierrors) =-                               (set2_ )-                       in  ( _lhsOcollectedConstructorNames,_lhsOconstructors,_lhsOerrors)))-sem_ConstructorSet_CName :: ConstructorIdent ->-                            T_ConstructorSet-sem_ConstructorSet_CName name_ =-    (T_ConstructorSet (let _lhsOcollectedConstructorNames :: (Set ConstructorIdent)-                           _lhsOconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))-                           _lhsOerrors :: (Seq Error)-                           -- "Transform.ag"(line 353, column 11)-                           _lhsOcollectedConstructorNames =-                               Set.singleton name_-                           -- "Transform.ag"(line 483, column 17)-                           _lhsOconstructors =-                               \ds -> Set.singleton name_-                           -- use rule "Transform.ag"(line 36, column 19)-                           _lhsOerrors =-                               Seq.empty-                       in  ( _lhsOcollectedConstructorNames,_lhsOconstructors,_lhsOerrors)))-sem_ConstructorSet_CUnion :: T_ConstructorSet ->-                             T_ConstructorSet ->-                             T_ConstructorSet-sem_ConstructorSet_CUnion (T_ConstructorSet set1_) (T_ConstructorSet set2_) =-    (T_ConstructorSet (let _lhsOconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))-                           _lhsOcollectedConstructorNames :: (Set ConstructorIdent)-                           _lhsOerrors :: (Seq Error)-                           _set1IcollectedConstructorNames :: (Set ConstructorIdent)-                           _set1Iconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))-                           _set1Ierrors :: (Seq Error)-                           _set2IcollectedConstructorNames :: (Set ConstructorIdent)-                           _set2Iconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))-                           _set2Ierrors :: (Seq Error)-                           -- "Transform.ag"(line 484, column 17)-                           _lhsOconstructors =-                               \ds -> _set1Iconstructors ds `Set.union`      _set2Iconstructors ds-                           -- use rule "Transform.ag"(line 82, column 62)-                           _lhsOcollectedConstructorNames =-                               _set1IcollectedConstructorNames `Set.union` _set2IcollectedConstructorNames-                           -- use rule "Transform.ag"(line 36, column 19)-                           _lhsOerrors =-                               _set1Ierrors Seq.<> _set2Ierrors-                           ( _set1IcollectedConstructorNames,_set1Iconstructors,_set1Ierrors) =-                               (set1_ )-                           ( _set2IcollectedConstructorNames,_set2Iconstructors,_set2Ierrors) =-                               (set2_ )-                       in  ( _lhsOcollectedConstructorNames,_lhsOconstructors,_lhsOerrors)))--- Elem ---------------------------------------------------------{--   visit 0:-      inherited attributes:-         allAttrDecls         : Map NontermIdent (Attributes, Attributes)-         allConstructors      : Map NontermIdent (Set ConstructorIdent)-         allFields            : DataTypes-         allNonterminals      : Set NontermIdent-         definedSets          : DefinedSets-      chained attributes:-         attrDecls            : Map NontermIdent (Attributes, Attributes)-         defSets              : Map Identifier (Set NontermIdent,Set Identifier)-      synthesized attributes:-         attrOrderCollect     : AttrOrderMap-         blocks               : Blocks-         collectedConstructorsMap : Map NontermIdent (Set ConstructorIdent)-         collectedFields      : [(NontermIdent, ConstructorIdent, FieldMap)]-         collectedInsts       : [ (NontermIdent, ConstructorIdent, [Identifier]) ]-         collectedNames       : Set Identifier-         collectedRules       : [ (NontermIdent, ConstructorIdent, RuleInfo)]-         collectedSetNames    : Set Identifier-         collectedSigs        : [ (NontermIdent, ConstructorIdent, SigInfo) ]-         ctxCollect           : ContextMap-         derivings            : Derivings-         errors               : Seq Error-         moduleDecl           : Maybe (String,String,String)-         paramsCollect        : ParamMap-         pragmas              : Options -> Options-         semPragmasCollect    : PragmaMap-         typeSyns             : TypeSyns-         useMap               : Map NontermIdent (Map Identifier (String,String,String))-         wrappers             : Set NontermIdent-   alternatives:-      alternative Attr:-         child pos            : {Pos}-         child ctx            : {ClassContext}-         child names          : NontSet-         child attrs          : Attrs-      alternative Data:-         child pos            : {Pos}-         child ctx            : {ClassContext}-         child names          : NontSet-         child params         : {[Identifier]}-         child attrs          : Attrs-         child alts           : Alts-         child ext            : {Bool}-      alternative Deriving:-         child pos            : {Pos}-         child set            : NontSet-         child classes        : {[NontermIdent]}-      alternative Module:-         child pos            : {Pos}-         child name           : {String}-         child exports        : {String}-         child imports        : {String}-      alternative Pragma:-         child pos            : {Pos}-         child names          : {[NontermIdent]}-      alternative Sem:-         child pos            : {Pos}-         child ctx            : {ClassContext}-         child names          : NontSet-         child attrs          : Attrs-         child alts           : SemAlts-      alternative Set:-         child pos            : {Pos}-         child name           : {NontermIdent}-         child set            : NontSet-         visit 0:-            local _tup3       : _-            local defSets2    : _-            local errs        : _-      alternative Txt:-         child pos            : {Pos}-         child name           : {NontermIdent}-         child lines          : {[String]}-      alternative Type:-         child pos            : {Pos}-         child ctx            : {ClassContext}-         child name           : {NontermIdent}-         child params         : {[Identifier]}-         child type           : {ComplexType}-         visit 0:-            local expanded    : _-            local argType     : _-      alternative Wrapper:-         child pos            : {Pos}-         child set            : NontSet--}--- cata-sem_Elem :: Elem ->-            T_Elem-sem_Elem (Attr _pos _ctx _names _attrs) =-    (sem_Elem_Attr _pos _ctx (sem_NontSet _names) (sem_Attrs _attrs))-sem_Elem (Data _pos _ctx _names _params _attrs _alts _ext) =-    (sem_Elem_Data _pos _ctx (sem_NontSet _names) _params (sem_Attrs _attrs) (sem_Alts _alts) _ext)-sem_Elem (Deriving _pos _set _classes) =-    (sem_Elem_Deriving _pos (sem_NontSet _set) _classes)-sem_Elem (Module _pos _name _exports _imports) =-    (sem_Elem_Module _pos _name _exports _imports)-sem_Elem (Pragma _pos _names) =-    (sem_Elem_Pragma _pos _names)-sem_Elem (Sem _pos _ctx _names _attrs _alts) =-    (sem_Elem_Sem _pos _ctx (sem_NontSet _names) (sem_Attrs _attrs) (sem_SemAlts _alts))-sem_Elem (Set _pos _name _set) =-    (sem_Elem_Set _pos _name (sem_NontSet _set))-sem_Elem (Txt _pos _name _lines) =-    (sem_Elem_Txt _pos _name _lines)-sem_Elem (Type _pos _ctx _name _params _type) =-    (sem_Elem_Type _pos _ctx _name _params _type)-sem_Elem (Wrapper _pos _set) =-    (sem_Elem_Wrapper _pos (sem_NontSet _set))--- semantic domain-newtype T_Elem = T_Elem ((Map NontermIdent (Attributes, Attributes)) ->-                         (Map NontermIdent (Set ConstructorIdent)) ->-                         DataTypes ->-                         (Set NontermIdent) ->-                         (Map NontermIdent (Attributes, Attributes)) ->-                         (Map Identifier (Set NontermIdent,Set Identifier)) ->-                         DefinedSets ->-                         ( (Map NontermIdent (Attributes, Attributes)),AttrOrderMap,Blocks,(Map NontermIdent (Set ConstructorIdent)),([(NontermIdent, ConstructorIdent, FieldMap)]),([ (NontermIdent, ConstructorIdent, [Identifier]) ]),(Set Identifier),([ (NontermIdent, ConstructorIdent, RuleInfo)]),(Set Identifier),([ (NontermIdent, ConstructorIdent, SigInfo) ]),ContextMap,(Map Identifier (Set NontermIdent,Set Identifier)),Derivings,(Seq Error),(Maybe (String,String,String)),ParamMap,(Options -> Options),PragmaMap,TypeSyns,(Map NontermIdent (Map Identifier (String,String,String))),(Set NontermIdent)))-data Inh_Elem = Inh_Elem {allAttrDecls_Inh_Elem :: Map NontermIdent (Attributes, Attributes),allConstructors_Inh_Elem :: Map NontermIdent (Set ConstructorIdent),allFields_Inh_Elem :: DataTypes,allNonterminals_Inh_Elem :: Set NontermIdent,attrDecls_Inh_Elem :: Map NontermIdent (Attributes, Attributes),defSets_Inh_Elem :: Map Identifier (Set NontermIdent,Set Identifier),definedSets_Inh_Elem :: DefinedSets}-data Syn_Elem = Syn_Elem {attrDecls_Syn_Elem :: Map NontermIdent (Attributes, Attributes),attrOrderCollect_Syn_Elem :: AttrOrderMap,blocks_Syn_Elem :: Blocks,collectedConstructorsMap_Syn_Elem :: Map NontermIdent (Set ConstructorIdent),collectedFields_Syn_Elem :: [(NontermIdent, ConstructorIdent, FieldMap)],collectedInsts_Syn_Elem :: [ (NontermIdent, ConstructorIdent, [Identifier]) ],collectedNames_Syn_Elem :: Set Identifier,collectedRules_Syn_Elem :: [ (NontermIdent, ConstructorIdent, RuleInfo)],collectedSetNames_Syn_Elem :: Set Identifier,collectedSigs_Syn_Elem :: [ (NontermIdent, ConstructorIdent, SigInfo) ],ctxCollect_Syn_Elem :: ContextMap,defSets_Syn_Elem :: Map Identifier (Set NontermIdent,Set Identifier),derivings_Syn_Elem :: Derivings,errors_Syn_Elem :: Seq Error,moduleDecl_Syn_Elem :: Maybe (String,String,String),paramsCollect_Syn_Elem :: ParamMap,pragmas_Syn_Elem :: Options -> Options,semPragmasCollect_Syn_Elem :: PragmaMap,typeSyns_Syn_Elem :: TypeSyns,useMap_Syn_Elem :: Map NontermIdent (Map Identifier (String,String,String)),wrappers_Syn_Elem :: Set NontermIdent}-wrap_Elem (T_Elem sem) (Inh_Elem _lhsIallAttrDecls _lhsIallConstructors _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIdefSets _lhsIdefinedSets) =-    (let ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers) =-             (sem _lhsIallAttrDecls _lhsIallConstructors _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIdefSets _lhsIdefinedSets)-     in  (Syn_Elem _lhsOattrDecls _lhsOattrOrderCollect _lhsOblocks _lhsOcollectedConstructorsMap _lhsOcollectedFields _lhsOcollectedInsts _lhsOcollectedNames _lhsOcollectedRules _lhsOcollectedSetNames _lhsOcollectedSigs _lhsOctxCollect _lhsOdefSets _lhsOderivings _lhsOerrors _lhsOmoduleDecl _lhsOparamsCollect _lhsOpragmas _lhsOsemPragmasCollect _lhsOtypeSyns _lhsOuseMap _lhsOwrappers))-sem_Elem_Attr :: Pos ->-                 ClassContext ->-                 T_NontSet ->-                 T_Attrs ->-                 T_Elem-sem_Elem_Attr pos_ ctx_ (T_NontSet names_) (T_Attrs attrs_) =-    (T_Elem (\ _lhsIallAttrDecls-               _lhsIallConstructors-               _lhsIallFields-               _lhsIallNonterminals-               _lhsIattrDecls-               _lhsIdefSets-               _lhsIdefinedSets ->-                 (let _lhsOctxCollect :: ContextMap-                      _attrsOnts :: (Set NontermIdent)-                      _lhsOattrOrderCollect :: AttrOrderMap-                      _lhsOblocks :: Blocks-                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))-                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                      _lhsOcollectedNames :: (Set Identifier)-                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                      _lhsOcollectedSetNames :: (Set Identifier)-                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                      _lhsOderivings :: Derivings-                      _lhsOerrors :: (Seq Error)-                      _lhsOmoduleDecl :: (Maybe (String,String,String))-                      _lhsOparamsCollect :: ParamMap-                      _lhsOpragmas :: (Options -> Options)-                      _lhsOsemPragmasCollect :: PragmaMap-                      _lhsOtypeSyns :: TypeSyns-                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                      _lhsOwrappers :: (Set NontermIdent)-                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                      _namesOallFields :: DataTypes-                      _namesOallNonterminals :: (Set NontermIdent)-                      _namesOdefinedSets :: DefinedSets-                      _attrsOallFields :: DataTypes-                      _attrsOallNonterminals :: (Set NontermIdent)-                      _attrsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _namesIcollectedNames :: (Set Identifier)-                      _namesIerrors :: (Seq Error)-                      _namesInontSet :: (Set NontermIdent)-                      _attrsIattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _attrsIerrors :: (Seq Error)-                      _attrsIuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                      -- "Transform.ag"(line 624, column 7)-                      _lhsOctxCollect =-                          if null ctx_-                          then Map.empty-                          else Map.fromList [(nt, ctx_) | nt <- Set.toList _namesInontSet]-                      -- "Transform.ag"(line 668, column 10)-                      _attrsOnts =-                          _namesInontSet-                      -- use rule "Transform.ag"(line 565, column 55)-                      _lhsOattrOrderCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 38, column 19)-                      _lhsOblocks =-                          Map.empty-                      -- use rule "Transform.ag"(line 83, column 48)-                      _lhsOcollectedConstructorsMap =-                          Map.empty-                      -- use rule "Transform.ag"(line 114, column 28)-                      _lhsOcollectedFields =-                          []-                      -- use rule "Transform.ag"(line 138, column 29)-                      _lhsOcollectedInsts =-                          []-                      -- use rule "Transform.ag"(line 75, column 50)-                      _lhsOcollectedNames =-                          _namesIcollectedNames-                      -- use rule "Transform.ag"(line 136, column 29)-                      _lhsOcollectedRules =-                          []-                      -- use rule "Transform.ag"(line 74, column 50)-                      _lhsOcollectedSetNames =-                          Set.empty-                      -- use rule "Transform.ag"(line 137, column 29)-                      _lhsOcollectedSigs =-                          []-                      -- use rule "Transform.ag"(line 645, column 33)-                      _lhsOderivings =-                          Map.empty-                      -- use rule "Transform.ag"(line 36, column 19)-                      _lhsOerrors =-                          _namesIerrors Seq.<> _attrsIerrors-                      -- use rule "Transform.ag"(line 787, column 37)-                      _lhsOmoduleDecl =-                          mzero-                      -- use rule "Transform.ag"(line 597, column 37)-                      _lhsOparamsCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 501, column 34)-                      _lhsOpragmas =-                          id-                      -- use rule "Transform.ag"(line 537, column 56)-                      _lhsOsemPragmasCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 380, column 32)-                      _lhsOtypeSyns =-                          []-                      -- use rule "Transform.ag"(line 126, column 15)-                      _lhsOuseMap =-                          _attrsIuseMap-                      -- use rule "Transform.ag"(line 492, column 32)-                      _lhsOwrappers =-                          Set.empty-                      -- copy rule (up)-                      _lhsOattrDecls =-                          _attrsIattrDecls-                      -- copy rule (chain)-                      _lhsOdefSets =-                          _lhsIdefSets-                      -- copy rule (down)-                      _namesOallFields =-                          _lhsIallFields-                      -- copy rule (down)-                      _namesOallNonterminals =-                          _lhsIallNonterminals-                      -- copy rule (down)-                      _namesOdefinedSets =-                          _lhsIdefinedSets-                      -- copy rule (down)-                      _attrsOallFields =-                          _lhsIallFields-                      -- copy rule (down)-                      _attrsOallNonterminals =-                          _lhsIallNonterminals-                      -- copy rule (down)-                      _attrsOattrDecls =-                          _lhsIattrDecls-                      ( _namesIcollectedNames,_namesIerrors,_namesInontSet) =-                          (names_ _namesOallFields _namesOallNonterminals _namesOdefinedSets)-                      ( _attrsIattrDecls,_attrsIerrors,_attrsIuseMap) =-                          (attrs_ _attrsOallFields _attrsOallNonterminals _attrsOattrDecls _attrsOnts)-                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))-sem_Elem_Data :: Pos ->-                 ClassContext ->-                 T_NontSet ->-                 ([Identifier]) ->-                 T_Attrs ->-                 T_Alts ->-                 Bool ->-                 T_Elem-sem_Elem_Data pos_ ctx_ (T_NontSet names_) params_ (T_Attrs attrs_) (T_Alts alts_) ext_ =-    (T_Elem (\ _lhsIallAttrDecls-               _lhsIallConstructors-               _lhsIallFields-               _lhsIallNonterminals-               _lhsIattrDecls-               _lhsIdefSets-               _lhsIdefinedSets ->-                 (let _altsOnts :: (Set NontermIdent)-                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))-                      _lhsOparamsCollect :: ParamMap-                      _lhsOctxCollect :: ContextMap-                      _attrsOnts :: (Set NontermIdent)-                      _lhsOattrOrderCollect :: AttrOrderMap-                      _lhsOblocks :: Blocks-                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                      _lhsOcollectedNames :: (Set Identifier)-                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                      _lhsOcollectedSetNames :: (Set Identifier)-                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                      _lhsOderivings :: Derivings-                      _lhsOerrors :: (Seq Error)-                      _lhsOmoduleDecl :: (Maybe (String,String,String))-                      _lhsOpragmas :: (Options -> Options)-                      _lhsOsemPragmasCollect :: PragmaMap-                      _lhsOtypeSyns :: TypeSyns-                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                      _lhsOwrappers :: (Set NontermIdent)-                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                      _namesOallFields :: DataTypes-                      _namesOallNonterminals :: (Set NontermIdent)-                      _namesOdefinedSets :: DefinedSets-                      _attrsOallFields :: DataTypes-                      _attrsOallNonterminals :: (Set NontermIdent)-                      _attrsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _altsOallConstructors :: (Map NontermIdent (Set ConstructorIdent))-                      _altsOallNonterminals :: (Set NontermIdent)-                      _namesIcollectedNames :: (Set Identifier)-                      _namesIerrors :: (Seq Error)-                      _namesInontSet :: (Set NontermIdent)-                      _attrsIattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _attrsIerrors :: (Seq Error)-                      _attrsIuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                      _altsIcollectedConstructorNames :: (Set ConstructorIdent)-                      _altsIcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                      -- "Transform.ag"(line 151, column 10)-                      _altsOnts =-                          _namesInontSet-                      -- "Transform.ag"(line 359, column 11)-                      _lhsOcollectedConstructorsMap =-                          Map.fromList-                          [ (n, _altsIcollectedConstructorNames)-                          | n <- Set.toList _namesInontSet-                          ]-                      -- "Transform.ag"(line 601, column 7)-                      _lhsOparamsCollect =-                          if null params_-                          then Map.empty-                          else Map.fromList [(nt, params_) | nt <- Set.toList _namesInontSet]-                      -- "Transform.ag"(line 624, column 7)-                      _lhsOctxCollect =-                          if null ctx_-                          then Map.empty-                          else Map.fromList [(nt, ctx_) | nt <- Set.toList _namesInontSet]-                      -- "Transform.ag"(line 667, column 10)-                      _attrsOnts =-                          _namesInontSet-                      -- use rule "Transform.ag"(line 565, column 55)-                      _lhsOattrOrderCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 38, column 19)-                      _lhsOblocks =-                          Map.empty-                      -- use rule "Transform.ag"(line 114, column 28)-                      _lhsOcollectedFields =-                          _altsIcollectedFields-                      -- use rule "Transform.ag"(line 138, column 29)-                      _lhsOcollectedInsts =-                          []-                      -- use rule "Transform.ag"(line 75, column 50)-                      _lhsOcollectedNames =-                          _namesIcollectedNames-                      -- use rule "Transform.ag"(line 136, column 29)-                      _lhsOcollectedRules =-                          []-                      -- use rule "Transform.ag"(line 74, column 50)-                      _lhsOcollectedSetNames =-                          Set.empty-                      -- use rule "Transform.ag"(line 137, column 29)-                      _lhsOcollectedSigs =-                          []-                      -- use rule "Transform.ag"(line 645, column 33)-                      _lhsOderivings =-                          Map.empty-                      -- use rule "Transform.ag"(line 36, column 19)-                      _lhsOerrors =-                          _namesIerrors Seq.<> _attrsIerrors-                      -- use rule "Transform.ag"(line 787, column 37)-                      _lhsOmoduleDecl =-                          mzero-                      -- use rule "Transform.ag"(line 501, column 34)-                      _lhsOpragmas =-                          id-                      -- use rule "Transform.ag"(line 537, column 56)-                      _lhsOsemPragmasCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 380, column 32)-                      _lhsOtypeSyns =-                          []-                      -- use rule "Transform.ag"(line 126, column 15)-                      _lhsOuseMap =-                          _attrsIuseMap-                      -- use rule "Transform.ag"(line 492, column 32)-                      _lhsOwrappers =-                          Set.empty-                      -- copy rule (up)-                      _lhsOattrDecls =-                          _attrsIattrDecls-                      -- copy rule (chain)-                      _lhsOdefSets =-                          _lhsIdefSets-                      -- copy rule (down)-                      _namesOallFields =-                          _lhsIallFields-                      -- copy rule (down)-                      _namesOallNonterminals =-                          _lhsIallNonterminals-                      -- copy rule (down)-                      _namesOdefinedSets =-                          _lhsIdefinedSets-                      -- copy rule (down)-                      _attrsOallFields =-                          _lhsIallFields-                      -- copy rule (down)-                      _attrsOallNonterminals =-                          _lhsIallNonterminals-                      -- copy rule (down)-                      _attrsOattrDecls =-                          _lhsIattrDecls-                      -- copy rule (down)-                      _altsOallConstructors =-                          _lhsIallConstructors-                      -- copy rule (down)-                      _altsOallNonterminals =-                          _lhsIallNonterminals-                      ( _namesIcollectedNames,_namesIerrors,_namesInontSet) =-                          (names_ _namesOallFields _namesOallNonterminals _namesOdefinedSets)-                      ( _attrsIattrDecls,_attrsIerrors,_attrsIuseMap) =-                          (attrs_ _attrsOallFields _attrsOallNonterminals _attrsOattrDecls _attrsOnts)-                      ( _altsIcollectedConstructorNames,_altsIcollectedFields) =-                          (alts_ _altsOallConstructors _altsOallNonterminals _altsOnts)-                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))-sem_Elem_Deriving :: Pos ->-                     T_NontSet ->-                     ([NontermIdent]) ->-                     T_Elem-sem_Elem_Deriving pos_ (T_NontSet set_) classes_ =-    (T_Elem (\ _lhsIallAttrDecls-               _lhsIallConstructors-               _lhsIallFields-               _lhsIallNonterminals-               _lhsIattrDecls-               _lhsIdefSets-               _lhsIdefinedSets ->-                 (let _lhsOderivings :: Derivings-                      _lhsOattrOrderCollect :: AttrOrderMap-                      _lhsOblocks :: Blocks-                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))-                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                      _lhsOcollectedNames :: (Set Identifier)-                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                      _lhsOcollectedSetNames :: (Set Identifier)-                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                      _lhsOctxCollect :: ContextMap-                      _lhsOerrors :: (Seq Error)-                      _lhsOmoduleDecl :: (Maybe (String,String,String))-                      _lhsOparamsCollect :: ParamMap-                      _lhsOpragmas :: (Options -> Options)-                      _lhsOsemPragmasCollect :: PragmaMap-                      _lhsOtypeSyns :: TypeSyns-                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                      _lhsOwrappers :: (Set NontermIdent)-                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                      _setOallFields :: DataTypes-                      _setOallNonterminals :: (Set NontermIdent)-                      _setOdefinedSets :: DefinedSets-                      _setIcollectedNames :: (Set Identifier)-                      _setIerrors :: (Seq Error)-                      _setInontSet :: (Set NontermIdent)-                      -- "Transform.ag"(line 652, column 14)-                      _lhsOderivings =-                          Map.fromList [(nt,Set.fromList classes_) | nt <- Set.toList _setInontSet]-                      -- use rule "Transform.ag"(line 565, column 55)-                      _lhsOattrOrderCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 38, column 19)-                      _lhsOblocks =-                          Map.empty-                      -- use rule "Transform.ag"(line 83, column 48)-                      _lhsOcollectedConstructorsMap =-                          Map.empty-                      -- use rule "Transform.ag"(line 114, column 28)-                      _lhsOcollectedFields =-                          []-                      -- use rule "Transform.ag"(line 138, column 29)-                      _lhsOcollectedInsts =-                          []-                      -- use rule "Transform.ag"(line 75, column 50)-                      _lhsOcollectedNames =-                          _setIcollectedNames-                      -- use rule "Transform.ag"(line 136, column 29)-                      _lhsOcollectedRules =-                          []-                      -- use rule "Transform.ag"(line 74, column 50)-                      _lhsOcollectedSetNames =-                          Set.empty-                      -- use rule "Transform.ag"(line 137, column 29)-                      _lhsOcollectedSigs =-                          []-                      -- use rule "Transform.ag"(line 620, column 34)-                      _lhsOctxCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 36, column 19)-                      _lhsOerrors =-                          _setIerrors-                      -- use rule "Transform.ag"(line 787, column 37)-                      _lhsOmoduleDecl =-                          mzero-                      -- use rule "Transform.ag"(line 597, column 37)-                      _lhsOparamsCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 501, column 34)-                      _lhsOpragmas =-                          id-                      -- use rule "Transform.ag"(line 537, column 56)-                      _lhsOsemPragmasCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 380, column 32)-                      _lhsOtypeSyns =-                          []-                      -- use rule "Transform.ag"(line 126, column 15)-                      _lhsOuseMap =-                          Map.empty-                      -- use rule "Transform.ag"(line 492, column 32)-                      _lhsOwrappers =-                          Set.empty-                      -- copy rule (chain)-                      _lhsOattrDecls =-                          _lhsIattrDecls-                      -- copy rule (chain)-                      _lhsOdefSets =-                          _lhsIdefSets-                      -- copy rule (down)-                      _setOallFields =-                          _lhsIallFields-                      -- copy rule (down)-                      _setOallNonterminals =-                          _lhsIallNonterminals-                      -- copy rule (down)-                      _setOdefinedSets =-                          _lhsIdefinedSets-                      ( _setIcollectedNames,_setIerrors,_setInontSet) =-                          (set_ _setOallFields _setOallNonterminals _setOdefinedSets)-                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))-sem_Elem_Module :: Pos ->-                   String ->-                   String ->-                   String ->-                   T_Elem-sem_Elem_Module pos_ name_ exports_ imports_ =-    (T_Elem (\ _lhsIallAttrDecls-               _lhsIallConstructors-               _lhsIallFields-               _lhsIallNonterminals-               _lhsIattrDecls-               _lhsIdefSets-               _lhsIdefinedSets ->-                 (let _lhsOmoduleDecl :: (Maybe (String,String,String))-                      _lhsOattrOrderCollect :: AttrOrderMap-                      _lhsOblocks :: Blocks-                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))-                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                      _lhsOcollectedNames :: (Set Identifier)-                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                      _lhsOcollectedSetNames :: (Set Identifier)-                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                      _lhsOctxCollect :: ContextMap-                      _lhsOderivings :: Derivings-                      _lhsOerrors :: (Seq Error)-                      _lhsOparamsCollect :: ParamMap-                      _lhsOpragmas :: (Options -> Options)-                      _lhsOsemPragmasCollect :: PragmaMap-                      _lhsOtypeSyns :: TypeSyns-                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                      _lhsOwrappers :: (Set NontermIdent)-                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                      -- "Transform.ag"(line 791, column 7)-                      _lhsOmoduleDecl =-                          Just (name_, exports_, imports_)-                      -- use rule "Transform.ag"(line 565, column 55)-                      _lhsOattrOrderCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 38, column 19)-                      _lhsOblocks =-                          Map.empty-                      -- use rule "Transform.ag"(line 83, column 48)-                      _lhsOcollectedConstructorsMap =-                          Map.empty-                      -- use rule "Transform.ag"(line 114, column 28)-                      _lhsOcollectedFields =-                          []-                      -- use rule "Transform.ag"(line 138, column 29)-                      _lhsOcollectedInsts =-                          []-                      -- use rule "Transform.ag"(line 75, column 50)-                      _lhsOcollectedNames =-                          Set.empty-                      -- use rule "Transform.ag"(line 136, column 29)-                      _lhsOcollectedRules =-                          []-                      -- use rule "Transform.ag"(line 74, column 50)-                      _lhsOcollectedSetNames =-                          Set.empty-                      -- use rule "Transform.ag"(line 137, column 29)-                      _lhsOcollectedSigs =-                          []-                      -- use rule "Transform.ag"(line 620, column 34)-                      _lhsOctxCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 645, column 33)-                      _lhsOderivings =-                          Map.empty-                      -- use rule "Transform.ag"(line 36, column 19)-                      _lhsOerrors =-                          Seq.empty-                      -- use rule "Transform.ag"(line 597, column 37)-                      _lhsOparamsCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 501, column 34)-                      _lhsOpragmas =-                          id-                      -- use rule "Transform.ag"(line 537, column 56)-                      _lhsOsemPragmasCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 380, column 32)-                      _lhsOtypeSyns =-                          []-                      -- use rule "Transform.ag"(line 126, column 15)-                      _lhsOuseMap =-                          Map.empty-                      -- use rule "Transform.ag"(line 492, column 32)-                      _lhsOwrappers =-                          Set.empty-                      -- copy rule (chain)-                      _lhsOattrDecls =-                          _lhsIattrDecls-                      -- copy rule (chain)-                      _lhsOdefSets =-                          _lhsIdefSets-                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))-sem_Elem_Pragma :: Pos ->-                   ([NontermIdent]) ->-                   T_Elem-sem_Elem_Pragma pos_ names_ =-    (T_Elem (\ _lhsIallAttrDecls-               _lhsIallConstructors-               _lhsIallFields-               _lhsIallNonterminals-               _lhsIattrDecls-               _lhsIdefSets-               _lhsIdefinedSets ->-                 (let _lhsOpragmas :: (Options -> Options)-                      _lhsOattrOrderCollect :: AttrOrderMap-                      _lhsOblocks :: Blocks-                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))-                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                      _lhsOcollectedNames :: (Set Identifier)-                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                      _lhsOcollectedSetNames :: (Set Identifier)-                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                      _lhsOctxCollect :: ContextMap-                      _lhsOderivings :: Derivings-                      _lhsOerrors :: (Seq Error)-                      _lhsOmoduleDecl :: (Maybe (String,String,String))-                      _lhsOparamsCollect :: ParamMap-                      _lhsOsemPragmasCollect :: PragmaMap-                      _lhsOtypeSyns :: TypeSyns-                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                      _lhsOwrappers :: (Set NontermIdent)-                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                      -- "Transform.ag"(line 504, column 13)-                      _lhsOpragmas =-                          let mk n o = case getName n of-                                         "nocycle"      -> o { withCycle   = False }-                                         "cycle"        -> o { withCycle   = True  }-                                         "nostrictdata" -> o { strictData  = False }-                                         "strictdata"   -> o { strictData  = True  }-                                         "nostrictcase" -> o { strictCases = False }-                                         "strictcase"   -> o { strictCases = True  }-                                         "strictercase" -> o { strictCases = True, stricterCases = True }-                                         "nostrictwrap" -> o { strictWrap  = False }-                                         "strictwrap"   -> o { strictWrap  = True  }-                                         "novisit"      -> o { visit       = False }-                                         "visit"        -> o { visit       = True  }-                                         "nocase"       -> o { cases       = False }-                                         "case"         -> o { cases       = True  }-                                         "noseq"        -> o { withSeq     = False }-                                         "seq"          -> o { withSeq     = True  }-                                         "nounbox"      -> o { unbox       = False }-                                         "unbox"        -> o { unbox       = True  }-                                         "bangpats"     -> o { bangpats    = True  }-                                         "nooptimize"   -> o { cases = False , visit = False }-                                         "optimize"     -> o { cases = True  , visit = True  }-                                         "strictsem"    -> o { strictSems = True }-                                         "gentraces"    -> o { genTraces = True }-                                         "genusetraces" -> o { genUseTraces = True }-                                         "splitsems"    -> o { splitSems = True }-                                         "gencostcentres" -> o { genCostCentres = True }-                                         "sepsemmods"   -> o { sepSemMods = True }-                                         "genlinepragmas" -> o { genLinePragmas = True }-                                         "newtypes"       -> o { newtypes = True }-                                         "nonewtypes"     -> o { newtypes = False }-                                         _              -> o-                          in \o -> foldr mk o names_-                      -- use rule "Transform.ag"(line 565, column 55)-                      _lhsOattrOrderCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 38, column 19)-                      _lhsOblocks =-                          Map.empty-                      -- use rule "Transform.ag"(line 83, column 48)-                      _lhsOcollectedConstructorsMap =-                          Map.empty-                      -- use rule "Transform.ag"(line 114, column 28)-                      _lhsOcollectedFields =-                          []-                      -- use rule "Transform.ag"(line 138, column 29)-                      _lhsOcollectedInsts =-                          []-                      -- use rule "Transform.ag"(line 75, column 50)-                      _lhsOcollectedNames =-                          Set.empty-                      -- use rule "Transform.ag"(line 136, column 29)-                      _lhsOcollectedRules =-                          []-                      -- use rule "Transform.ag"(line 74, column 50)-                      _lhsOcollectedSetNames =-                          Set.empty-                      -- use rule "Transform.ag"(line 137, column 29)-                      _lhsOcollectedSigs =-                          []-                      -- use rule "Transform.ag"(line 620, column 34)-                      _lhsOctxCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 645, column 33)-                      _lhsOderivings =-                          Map.empty-                      -- use rule "Transform.ag"(line 36, column 19)-                      _lhsOerrors =-                          Seq.empty-                      -- use rule "Transform.ag"(line 787, column 37)-                      _lhsOmoduleDecl =-                          mzero-                      -- use rule "Transform.ag"(line 597, column 37)-                      _lhsOparamsCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 537, column 56)-                      _lhsOsemPragmasCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 380, column 32)-                      _lhsOtypeSyns =-                          []-                      -- use rule "Transform.ag"(line 126, column 15)-                      _lhsOuseMap =-                          Map.empty-                      -- use rule "Transform.ag"(line 492, column 32)-                      _lhsOwrappers =-                          Set.empty-                      -- copy rule (chain)-                      _lhsOattrDecls =-                          _lhsIattrDecls-                      -- copy rule (chain)-                      _lhsOdefSets =-                          _lhsIdefSets-                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))-sem_Elem_Sem :: Pos ->-                ClassContext ->-                T_NontSet ->-                T_Attrs ->-                T_SemAlts ->-                T_Elem-sem_Elem_Sem pos_ ctx_ (T_NontSet names_) (T_Attrs attrs_) (T_SemAlts alts_) =-    (T_Elem (\ _lhsIallAttrDecls-               _lhsIallConstructors-               _lhsIallFields-               _lhsIallNonterminals-               _lhsIattrDecls-               _lhsIdefSets-               _lhsIdefinedSets ->-                 (let _altsOnts :: (Set NontermIdent)-                      _lhsOctxCollect :: ContextMap-                      _attrsOnts :: (Set NontermIdent)-                      _lhsOattrOrderCollect :: AttrOrderMap-                      _lhsOblocks :: Blocks-                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))-                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                      _lhsOcollectedNames :: (Set Identifier)-                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                      _lhsOcollectedSetNames :: (Set Identifier)-                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                      _lhsOderivings :: Derivings-                      _lhsOerrors :: (Seq Error)-                      _lhsOmoduleDecl :: (Maybe (String,String,String))-                      _lhsOparamsCollect :: ParamMap-                      _lhsOpragmas :: (Options -> Options)-                      _lhsOsemPragmasCollect :: PragmaMap-                      _lhsOtypeSyns :: TypeSyns-                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                      _lhsOwrappers :: (Set NontermIdent)-                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                      _namesOallFields :: DataTypes-                      _namesOallNonterminals :: (Set NontermIdent)-                      _namesOdefinedSets :: DefinedSets-                      _attrsOallFields :: DataTypes-                      _attrsOallNonterminals :: (Set NontermIdent)-                      _attrsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _altsOallAttrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _altsOallFields :: DataTypes-                      _namesIcollectedNames :: (Set Identifier)-                      _namesIerrors :: (Seq Error)-                      _namesInontSet :: (Set NontermIdent)-                      _attrsIattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _attrsIerrors :: (Seq Error)-                      _attrsIuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                      _altsIattrOrderCollect :: AttrOrderMap-                      _altsIcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                      _altsIcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                      _altsIcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                      _altsIerrors :: (Seq Error)-                      _altsIsemPragmasCollect :: PragmaMap-                      -- "Transform.ag"(line 152, column 10)-                      _altsOnts =-                          _namesInontSet-                      -- "Transform.ag"(line 624, column 7)-                      _lhsOctxCollect =-                          if null ctx_-                          then Map.empty-                          else Map.fromList [(nt, ctx_) | nt <- Set.toList _namesInontSet]-                      -- "Transform.ag"(line 669, column 10)-                      _attrsOnts =-                          _namesInontSet-                      -- use rule "Transform.ag"(line 565, column 55)-                      _lhsOattrOrderCollect =-                          _altsIattrOrderCollect-                      -- use rule "Transform.ag"(line 38, column 19)-                      _lhsOblocks =-                          Map.empty-                      -- use rule "Transform.ag"(line 83, column 48)-                      _lhsOcollectedConstructorsMap =-                          Map.empty-                      -- use rule "Transform.ag"(line 114, column 28)-                      _lhsOcollectedFields =-                          []-                      -- use rule "Transform.ag"(line 138, column 29)-                      _lhsOcollectedInsts =-                          _altsIcollectedInsts-                      -- use rule "Transform.ag"(line 75, column 50)-                      _lhsOcollectedNames =-                          _namesIcollectedNames-                      -- use rule "Transform.ag"(line 136, column 29)-                      _lhsOcollectedRules =-                          _altsIcollectedRules-                      -- use rule "Transform.ag"(line 74, column 50)-                      _lhsOcollectedSetNames =-                          Set.empty-                      -- use rule "Transform.ag"(line 137, column 29)-                      _lhsOcollectedSigs =-                          _altsIcollectedSigs-                      -- use rule "Transform.ag"(line 645, column 33)-                      _lhsOderivings =-                          Map.empty-                      -- use rule "Transform.ag"(line 36, column 19)-                      _lhsOerrors =-                          _namesIerrors Seq.<> _attrsIerrors Seq.<> _altsIerrors-                      -- use rule "Transform.ag"(line 787, column 37)-                      _lhsOmoduleDecl =-                          mzero-                      -- use rule "Transform.ag"(line 597, column 37)-                      _lhsOparamsCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 501, column 34)-                      _lhsOpragmas =-                          id-                      -- use rule "Transform.ag"(line 537, column 56)-                      _lhsOsemPragmasCollect =-                          _altsIsemPragmasCollect-                      -- use rule "Transform.ag"(line 380, column 32)-                      _lhsOtypeSyns =-                          []-                      -- use rule "Transform.ag"(line 126, column 15)-                      _lhsOuseMap =-                          _attrsIuseMap-                      -- use rule "Transform.ag"(line 492, column 32)-                      _lhsOwrappers =-                          Set.empty-                      -- copy rule (up)-                      _lhsOattrDecls =-                          _attrsIattrDecls-                      -- copy rule (chain)-                      _lhsOdefSets =-                          _lhsIdefSets-                      -- copy rule (down)-                      _namesOallFields =-                          _lhsIallFields-                      -- copy rule (down)-                      _namesOallNonterminals =-                          _lhsIallNonterminals-                      -- copy rule (down)-                      _namesOdefinedSets =-                          _lhsIdefinedSets-                      -- copy rule (down)-                      _attrsOallFields =-                          _lhsIallFields-                      -- copy rule (down)-                      _attrsOallNonterminals =-                          _lhsIallNonterminals-                      -- copy rule (down)-                      _attrsOattrDecls =-                          _lhsIattrDecls-                      -- copy rule (down)-                      _altsOallAttrDecls =-                          _lhsIallAttrDecls-                      -- copy rule (down)-                      _altsOallFields =-                          _lhsIallFields-                      ( _namesIcollectedNames,_namesIerrors,_namesInontSet) =-                          (names_ _namesOallFields _namesOallNonterminals _namesOdefinedSets)-                      ( _attrsIattrDecls,_attrsIerrors,_attrsIuseMap) =-                          (attrs_ _attrsOallFields _attrsOallNonterminals _attrsOattrDecls _attrsOnts)-                      ( _altsIattrOrderCollect,_altsIcollectedInsts,_altsIcollectedRules,_altsIcollectedSigs,_altsIerrors,_altsIsemPragmasCollect) =-                          (alts_ _altsOallAttrDecls _altsOallFields _altsOnts)-                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))-sem_Elem_Set :: Pos ->-                NontermIdent ->-                T_NontSet ->-                T_Elem-sem_Elem_Set pos_ name_ (T_NontSet set_) =-    (T_Elem (\ _lhsIallAttrDecls-               _lhsIallConstructors-               _lhsIallFields-               _lhsIallNonterminals-               _lhsIattrDecls-               _lhsIdefSets-               _lhsIdefinedSets ->-                 (let _lhsOcollectedSetNames :: (Set Identifier)-                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                      _lhsOerrors :: (Seq Error)-                      _lhsOattrOrderCollect :: AttrOrderMap-                      _lhsOblocks :: Blocks-                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))-                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                      _lhsOcollectedNames :: (Set Identifier)-                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                      _lhsOctxCollect :: ContextMap-                      _lhsOderivings :: Derivings-                      _lhsOmoduleDecl :: (Maybe (String,String,String))-                      _lhsOparamsCollect :: ParamMap-                      _lhsOpragmas :: (Options -> Options)-                      _lhsOsemPragmasCollect :: PragmaMap-                      _lhsOtypeSyns :: TypeSyns-                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                      _lhsOwrappers :: (Set NontermIdent)-                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _setOallFields :: DataTypes-                      _setOallNonterminals :: (Set NontermIdent)-                      _setOdefinedSets :: DefinedSets-                      _setIcollectedNames :: (Set Identifier)-                      _setIerrors :: (Seq Error)-                      _setInontSet :: (Set NontermIdent)-                      -- "Transform.ag"(line 336, column 10)-                      _lhsOcollectedSetNames =-                          Set.singleton name_-                      -- "Transform.ag"(line 424, column 13)-                      __tup3 =-                          let allUsedNames = Set.unions [ maybe (Set.singleton n)-                                                                snd-                                                                (Map.lookup n _lhsIdefSets)-                                                        | n <- Set.toList _setIcollectedNames-                                                        ]-                              (nontSet,e1) | Set.member name_ allUsedNames-                                                       = (Set.empty, Seq.single(CyclicSet name_))-                                           | otherwise = (_setInontSet, Seq.empty)-                              (res, e2) = checkDuplicate DupSet  name_ (nontSet,Set.insert name_ allUsedNames) _lhsIdefSets-                          in (res, e1 Seq.<> e2)-                      -- "Transform.ag"(line 424, column 13)-                      (_defSets2,_) =-                          __tup3-                      -- "Transform.ag"(line 424, column 13)-                      (_,_errs) =-                          __tup3-                      -- "Transform.ag"(line 434, column 9)-                      _lhsOdefSets =-                          _defSets2-                      -- "Transform.ag"(line 434, column 9)-                      _lhsOerrors =-                          _errs <> _setIerrors-                      -- use rule "Transform.ag"(line 565, column 55)-                      _lhsOattrOrderCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 38, column 19)-                      _lhsOblocks =-                          Map.empty-                      -- use rule "Transform.ag"(line 83, column 48)-                      _lhsOcollectedConstructorsMap =-                          Map.empty-                      -- use rule "Transform.ag"(line 114, column 28)-                      _lhsOcollectedFields =-                          []-                      -- use rule "Transform.ag"(line 138, column 29)-                      _lhsOcollectedInsts =-                          []-                      -- use rule "Transform.ag"(line 75, column 50)-                      _lhsOcollectedNames =-                          _setIcollectedNames-                      -- use rule "Transform.ag"(line 136, column 29)-                      _lhsOcollectedRules =-                          []-                      -- use rule "Transform.ag"(line 137, column 29)-                      _lhsOcollectedSigs =-                          []-                      -- use rule "Transform.ag"(line 620, column 34)-                      _lhsOctxCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 645, column 33)-                      _lhsOderivings =-                          Map.empty-                      -- use rule "Transform.ag"(line 787, column 37)-                      _lhsOmoduleDecl =-                          mzero-                      -- use rule "Transform.ag"(line 597, column 37)-                      _lhsOparamsCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 501, column 34)-                      _lhsOpragmas =-                          id-                      -- use rule "Transform.ag"(line 537, column 56)-                      _lhsOsemPragmasCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 380, column 32)-                      _lhsOtypeSyns =-                          []-                      -- use rule "Transform.ag"(line 126, column 15)-                      _lhsOuseMap =-                          Map.empty-                      -- use rule "Transform.ag"(line 492, column 32)-                      _lhsOwrappers =-                          Set.empty-                      -- copy rule (chain)-                      _lhsOattrDecls =-                          _lhsIattrDecls-                      -- copy rule (down)-                      _setOallFields =-                          _lhsIallFields-                      -- copy rule (down)-                      _setOallNonterminals =-                          _lhsIallNonterminals-                      -- copy rule (down)-                      _setOdefinedSets =-                          _lhsIdefinedSets-                      ( _setIcollectedNames,_setIerrors,_setInontSet) =-                          (set_ _setOallFields _setOallNonterminals _setOdefinedSets)-                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))-sem_Elem_Txt :: Pos ->-                NontermIdent ->-                ([String]) ->-                T_Elem-sem_Elem_Txt pos_ name_ lines_ =-    (T_Elem (\ _lhsIallAttrDecls-               _lhsIallConstructors-               _lhsIallFields-               _lhsIallNonterminals-               _lhsIattrDecls-               _lhsIdefSets-               _lhsIdefinedSets ->-                 (let _lhsOblocks :: Blocks-                      _lhsOattrOrderCollect :: AttrOrderMap-                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))-                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                      _lhsOcollectedNames :: (Set Identifier)-                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                      _lhsOcollectedSetNames :: (Set Identifier)-                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                      _lhsOctxCollect :: ContextMap-                      _lhsOderivings :: Derivings-                      _lhsOerrors :: (Seq Error)-                      _lhsOmoduleDecl :: (Maybe (String,String,String))-                      _lhsOparamsCollect :: ParamMap-                      _lhsOpragmas :: (Options -> Options)-                      _lhsOsemPragmasCollect :: PragmaMap-                      _lhsOtypeSyns :: TypeSyns-                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                      _lhsOwrappers :: (Set NontermIdent)-                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                      -- "Transform.ag"(line 161, column 11)-                      _lhsOblocks =-                          Map.singleton (getName name_) [(lines_, pos_)]-                      -- use rule "Transform.ag"(line 565, column 55)-                      _lhsOattrOrderCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 83, column 48)-                      _lhsOcollectedConstructorsMap =-                          Map.empty-                      -- use rule "Transform.ag"(line 114, column 28)-                      _lhsOcollectedFields =-                          []-                      -- use rule "Transform.ag"(line 138, column 29)-                      _lhsOcollectedInsts =-                          []-                      -- use rule "Transform.ag"(line 75, column 50)-                      _lhsOcollectedNames =-                          Set.empty-                      -- use rule "Transform.ag"(line 136, column 29)-                      _lhsOcollectedRules =-                          []-                      -- use rule "Transform.ag"(line 74, column 50)-                      _lhsOcollectedSetNames =-                          Set.empty-                      -- use rule "Transform.ag"(line 137, column 29)-                      _lhsOcollectedSigs =-                          []-                      -- use rule "Transform.ag"(line 620, column 34)-                      _lhsOctxCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 645, column 33)-                      _lhsOderivings =-                          Map.empty-                      -- use rule "Transform.ag"(line 36, column 19)-                      _lhsOerrors =-                          Seq.empty-                      -- use rule "Transform.ag"(line 787, column 37)-                      _lhsOmoduleDecl =-                          mzero-                      -- use rule "Transform.ag"(line 597, column 37)-                      _lhsOparamsCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 501, column 34)-                      _lhsOpragmas =-                          id-                      -- use rule "Transform.ag"(line 537, column 56)-                      _lhsOsemPragmasCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 380, column 32)-                      _lhsOtypeSyns =-                          []-                      -- use rule "Transform.ag"(line 126, column 15)-                      _lhsOuseMap =-                          Map.empty-                      -- use rule "Transform.ag"(line 492, column 32)-                      _lhsOwrappers =-                          Set.empty-                      -- copy rule (chain)-                      _lhsOattrDecls =-                          _lhsIattrDecls-                      -- copy rule (chain)-                      _lhsOdefSets =-                          _lhsIdefSets-                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))-sem_Elem_Type :: Pos ->-                 ClassContext ->-                 NontermIdent ->-                 ([Identifier]) ->-                 ComplexType ->-                 T_Elem-sem_Elem_Type pos_ ctx_ name_ params_ type_ =-    (T_Elem (\ _lhsIallAttrDecls-               _lhsIallConstructors-               _lhsIallFields-               _lhsIallNonterminals-               _lhsIattrDecls-               _lhsIdefSets-               _lhsIdefinedSets ->-                 (let _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                      _lhsOcollectedNames :: (Set Identifier)-                      _lhsOtypeSyns :: TypeSyns-                      _lhsOparamsCollect :: ParamMap-                      _lhsOctxCollect :: ContextMap-                      _lhsOattrOrderCollect :: AttrOrderMap-                      _lhsOblocks :: Blocks-                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))-                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                      _lhsOcollectedSetNames :: (Set Identifier)-                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                      _lhsOderivings :: Derivings-                      _lhsOerrors :: (Seq Error)-                      _lhsOmoduleDecl :: (Maybe (String,String,String))-                      _lhsOpragmas :: (Options -> Options)-                      _lhsOsemPragmasCollect :: PragmaMap-                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                      _lhsOwrappers :: (Set NontermIdent)-                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                      -- "Transform.ag"(line 214, column 10)-                      _lhsOcollectedFields =-                          map (\(x,y)->(name_, x, y)) _expanded-                      -- "Transform.ag"(line 339, column 11)-                      _lhsOcollectedNames =-                          Set.singleton name_-                      -- "Transform.ag"(line 393, column 11)-                      _expanded =-                          case _argType of-                                  List tp -> [(Ident "Cons" pos_, [(Ident "hd" pos_, tp)-                                                                  ,(Ident "tl" pos_, NT name_ (map getName params_))-                                                                  ]-                                              )-                                             ,(Ident "Nil" pos_,  [])-                                             ]-                                  Maybe tp -> [(Ident "Just" pos_, [(Ident "just" pos_, tp)-                                                                  ]-                                              )-                                             ,(Ident "Nothing" pos_,  [])-                                             ]-                                  Tuple xs -> [(Ident "Tuple" pos_, xs)]-                      -- "Transform.ag"(line 406, column 11)-                      _argType =-                          case type_ of-                           Maybe tp  -> Maybe  (  makeType _lhsIallNonterminals tp)-                           List tp   -> List   (  makeType _lhsIallNonterminals tp)-                           Tuple xs  -> Tuple [(f,makeType _lhsIallNonterminals tp) | (f,tp) <- xs]-                      -- "Transform.ag"(line 410, column 11)-                      _lhsOtypeSyns =-                          [(name_,_argType)]-                      -- "Transform.ag"(line 607, column 7)-                      _lhsOparamsCollect =-                          if null params_-                          then Map.empty-                          else Map.singleton name_ params_-                      -- "Transform.ag"(line 630, column 7)-                      _lhsOctxCollect =-                          if null ctx_-                          then Map.empty-                          else Map.singleton name_ ctx_-                      -- use rule "Transform.ag"(line 565, column 55)-                      _lhsOattrOrderCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 38, column 19)-                      _lhsOblocks =-                          Map.empty-                      -- use rule "Transform.ag"(line 83, column 48)-                      _lhsOcollectedConstructorsMap =-                          Map.empty-                      -- use rule "Transform.ag"(line 138, column 29)-                      _lhsOcollectedInsts =-                          []-                      -- use rule "Transform.ag"(line 136, column 29)-                      _lhsOcollectedRules =-                          []-                      -- use rule "Transform.ag"(line 74, column 50)-                      _lhsOcollectedSetNames =-                          Set.empty-                      -- use rule "Transform.ag"(line 137, column 29)-                      _lhsOcollectedSigs =-                          []-                      -- use rule "Transform.ag"(line 645, column 33)-                      _lhsOderivings =-                          Map.empty-                      -- use rule "Transform.ag"(line 36, column 19)-                      _lhsOerrors =-                          Seq.empty-                      -- use rule "Transform.ag"(line 787, column 37)-                      _lhsOmoduleDecl =-                          mzero-                      -- use rule "Transform.ag"(line 501, column 34)-                      _lhsOpragmas =-                          id-                      -- use rule "Transform.ag"(line 537, column 56)-                      _lhsOsemPragmasCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 126, column 15)-                      _lhsOuseMap =-                          Map.empty-                      -- use rule "Transform.ag"(line 492, column 32)-                      _lhsOwrappers =-                          Set.empty-                      -- copy rule (chain)-                      _lhsOattrDecls =-                          _lhsIattrDecls-                      -- copy rule (chain)-                      _lhsOdefSets =-                          _lhsIdefSets-                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))-sem_Elem_Wrapper :: Pos ->-                    T_NontSet ->-                    T_Elem-sem_Elem_Wrapper pos_ (T_NontSet set_) =-    (T_Elem (\ _lhsIallAttrDecls-               _lhsIallConstructors-               _lhsIallFields-               _lhsIallNonterminals-               _lhsIattrDecls-               _lhsIdefSets-               _lhsIdefinedSets ->-                 (let _lhsOwrappers :: (Set NontermIdent)-                      _lhsOattrOrderCollect :: AttrOrderMap-                      _lhsOblocks :: Blocks-                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))-                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                      _lhsOcollectedNames :: (Set Identifier)-                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                      _lhsOcollectedSetNames :: (Set Identifier)-                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                      _lhsOctxCollect :: ContextMap-                      _lhsOderivings :: Derivings-                      _lhsOerrors :: (Seq Error)-                      _lhsOmoduleDecl :: (Maybe (String,String,String))-                      _lhsOparamsCollect :: ParamMap-                      _lhsOpragmas :: (Options -> Options)-                      _lhsOsemPragmasCollect :: PragmaMap-                      _lhsOtypeSyns :: TypeSyns-                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                      _setOallFields :: DataTypes-                      _setOallNonterminals :: (Set NontermIdent)-                      _setOdefinedSets :: DefinedSets-                      _setIcollectedNames :: (Set Identifier)-                      _setIerrors :: (Seq Error)-                      _setInontSet :: (Set NontermIdent)-                      -- "Transform.ag"(line 495, column 13)-                      _lhsOwrappers =-                          _setInontSet-                      -- use rule "Transform.ag"(line 565, column 55)-                      _lhsOattrOrderCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 38, column 19)-                      _lhsOblocks =-                          Map.empty-                      -- use rule "Transform.ag"(line 83, column 48)-                      _lhsOcollectedConstructorsMap =-                          Map.empty-                      -- use rule "Transform.ag"(line 114, column 28)-                      _lhsOcollectedFields =-                          []-                      -- use rule "Transform.ag"(line 138, column 29)-                      _lhsOcollectedInsts =-                          []-                      -- use rule "Transform.ag"(line 75, column 50)-                      _lhsOcollectedNames =-                          _setIcollectedNames-                      -- use rule "Transform.ag"(line 136, column 29)-                      _lhsOcollectedRules =-                          []-                      -- use rule "Transform.ag"(line 74, column 50)-                      _lhsOcollectedSetNames =-                          Set.empty-                      -- use rule "Transform.ag"(line 137, column 29)-                      _lhsOcollectedSigs =-                          []-                      -- use rule "Transform.ag"(line 620, column 34)-                      _lhsOctxCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 645, column 33)-                      _lhsOderivings =-                          Map.empty-                      -- use rule "Transform.ag"(line 36, column 19)-                      _lhsOerrors =-                          _setIerrors-                      -- use rule "Transform.ag"(line 787, column 37)-                      _lhsOmoduleDecl =-                          mzero-                      -- use rule "Transform.ag"(line 597, column 37)-                      _lhsOparamsCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 501, column 34)-                      _lhsOpragmas =-                          id-                      -- use rule "Transform.ag"(line 537, column 56)-                      _lhsOsemPragmasCollect =-                          Map.empty-                      -- use rule "Transform.ag"(line 380, column 32)-                      _lhsOtypeSyns =-                          []-                      -- use rule "Transform.ag"(line 126, column 15)-                      _lhsOuseMap =-                          Map.empty-                      -- copy rule (chain)-                      _lhsOattrDecls =-                          _lhsIattrDecls-                      -- copy rule (chain)-                      _lhsOdefSets =-                          _lhsIdefSets-                      -- copy rule (down)-                      _setOallFields =-                          _lhsIallFields-                      -- copy rule (down)-                      _setOallNonterminals =-                          _lhsIallNonterminals-                      -- copy rule (down)-                      _setOdefinedSets =-                          _lhsIdefinedSets-                      ( _setIcollectedNames,_setIerrors,_setInontSet) =-                          (set_ _setOallFields _setOallNonterminals _setOdefinedSets)-                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))--- Elems --------------------------------------------------------{--   visit 0:-      inherited attributes:-         allAttrDecls         : Map NontermIdent (Attributes, Attributes)-         allConstructors      : Map NontermIdent (Set ConstructorIdent)-         allFields            : DataTypes-         allNonterminals      : Set NontermIdent-         definedSets          : DefinedSets-      chained attributes:-         attrDecls            : Map NontermIdent (Attributes, Attributes)-         defSets              : Map Identifier (Set NontermIdent,Set Identifier)-      synthesized attributes:-         attrOrderCollect     : AttrOrderMap-         blocks               : Blocks-         collectedConstructorsMap : Map NontermIdent (Set ConstructorIdent)-         collectedFields      : [(NontermIdent, ConstructorIdent, FieldMap)]-         collectedInsts       : [ (NontermIdent, ConstructorIdent, [Identifier]) ]-         collectedNames       : Set Identifier-         collectedRules       : [ (NontermIdent, ConstructorIdent, RuleInfo)]-         collectedSetNames    : Set Identifier-         collectedSigs        : [ (NontermIdent, ConstructorIdent, SigInfo) ]-         ctxCollect           : ContextMap-         derivings            : Derivings-         errors               : Seq Error-         moduleDecl           : Maybe (String,String,String)-         paramsCollect        : ParamMap-         pragmas              : Options -> Options-         semPragmasCollect    : PragmaMap-         typeSyns             : TypeSyns-         useMap               : Map NontermIdent (Map Identifier (String,String,String))-         wrappers             : Set NontermIdent-   alternatives:-      alternative Cons:-         child hd             : Elem-         child tl             : Elems-      alternative Nil:--}--- cata-sem_Elems :: Elems ->-             T_Elems-sem_Elems list =-    (Prelude.foldr sem_Elems_Cons sem_Elems_Nil (Prelude.map sem_Elem list))--- semantic domain-newtype T_Elems = T_Elems ((Map NontermIdent (Attributes, Attributes)) ->-                           (Map NontermIdent (Set ConstructorIdent)) ->-                           DataTypes ->-                           (Set NontermIdent) ->-                           (Map NontermIdent (Attributes, Attributes)) ->-                           (Map Identifier (Set NontermIdent,Set Identifier)) ->-                           DefinedSets ->-                           ( (Map NontermIdent (Attributes, Attributes)),AttrOrderMap,Blocks,(Map NontermIdent (Set ConstructorIdent)),([(NontermIdent, ConstructorIdent, FieldMap)]),([ (NontermIdent, ConstructorIdent, [Identifier]) ]),(Set Identifier),([ (NontermIdent, ConstructorIdent, RuleInfo)]),(Set Identifier),([ (NontermIdent, ConstructorIdent, SigInfo) ]),ContextMap,(Map Identifier (Set NontermIdent,Set Identifier)),Derivings,(Seq Error),(Maybe (String,String,String)),ParamMap,(Options -> Options),PragmaMap,TypeSyns,(Map NontermIdent (Map Identifier (String,String,String))),(Set NontermIdent)))-data Inh_Elems = Inh_Elems {allAttrDecls_Inh_Elems :: Map NontermIdent (Attributes, Attributes),allConstructors_Inh_Elems :: Map NontermIdent (Set ConstructorIdent),allFields_Inh_Elems :: DataTypes,allNonterminals_Inh_Elems :: Set NontermIdent,attrDecls_Inh_Elems :: Map NontermIdent (Attributes, Attributes),defSets_Inh_Elems :: Map Identifier (Set NontermIdent,Set Identifier),definedSets_Inh_Elems :: DefinedSets}-data Syn_Elems = Syn_Elems {attrDecls_Syn_Elems :: Map NontermIdent (Attributes, Attributes),attrOrderCollect_Syn_Elems :: AttrOrderMap,blocks_Syn_Elems :: Blocks,collectedConstructorsMap_Syn_Elems :: Map NontermIdent (Set ConstructorIdent),collectedFields_Syn_Elems :: [(NontermIdent, ConstructorIdent, FieldMap)],collectedInsts_Syn_Elems :: [ (NontermIdent, ConstructorIdent, [Identifier]) ],collectedNames_Syn_Elems :: Set Identifier,collectedRules_Syn_Elems :: [ (NontermIdent, ConstructorIdent, RuleInfo)],collectedSetNames_Syn_Elems :: Set Identifier,collectedSigs_Syn_Elems :: [ (NontermIdent, ConstructorIdent, SigInfo) ],ctxCollect_Syn_Elems :: ContextMap,defSets_Syn_Elems :: Map Identifier (Set NontermIdent,Set Identifier),derivings_Syn_Elems :: Derivings,errors_Syn_Elems :: Seq Error,moduleDecl_Syn_Elems :: Maybe (String,String,String),paramsCollect_Syn_Elems :: ParamMap,pragmas_Syn_Elems :: Options -> Options,semPragmasCollect_Syn_Elems :: PragmaMap,typeSyns_Syn_Elems :: TypeSyns,useMap_Syn_Elems :: Map NontermIdent (Map Identifier (String,String,String)),wrappers_Syn_Elems :: Set NontermIdent}-wrap_Elems (T_Elems sem) (Inh_Elems _lhsIallAttrDecls _lhsIallConstructors _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIdefSets _lhsIdefinedSets) =-    (let ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers) =-             (sem _lhsIallAttrDecls _lhsIallConstructors _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIdefSets _lhsIdefinedSets)-     in  (Syn_Elems _lhsOattrDecls _lhsOattrOrderCollect _lhsOblocks _lhsOcollectedConstructorsMap _lhsOcollectedFields _lhsOcollectedInsts _lhsOcollectedNames _lhsOcollectedRules _lhsOcollectedSetNames _lhsOcollectedSigs _lhsOctxCollect _lhsOdefSets _lhsOderivings _lhsOerrors _lhsOmoduleDecl _lhsOparamsCollect _lhsOpragmas _lhsOsemPragmasCollect _lhsOtypeSyns _lhsOuseMap _lhsOwrappers))-sem_Elems_Cons :: T_Elem ->-                  T_Elems ->-                  T_Elems-sem_Elems_Cons (T_Elem hd_) (T_Elems tl_) =-    (T_Elems (\ _lhsIallAttrDecls-                _lhsIallConstructors-                _lhsIallFields-                _lhsIallNonterminals-                _lhsIattrDecls-                _lhsIdefSets-                _lhsIdefinedSets ->-                  (let _lhsOattrOrderCollect :: AttrOrderMap-                       _lhsOblocks :: Blocks-                       _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))-                       _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                       _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                       _lhsOcollectedNames :: (Set Identifier)-                       _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                       _lhsOcollectedSetNames :: (Set Identifier)-                       _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                       _lhsOctxCollect :: ContextMap-                       _lhsOderivings :: Derivings-                       _lhsOerrors :: (Seq Error)-                       _lhsOmoduleDecl :: (Maybe (String,String,String))-                       _lhsOparamsCollect :: ParamMap-                       _lhsOpragmas :: (Options -> Options)-                       _lhsOsemPragmasCollect :: PragmaMap-                       _lhsOtypeSyns :: TypeSyns-                       _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                       _lhsOwrappers :: (Set NontermIdent)-                       _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                       _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                       _hdOallAttrDecls :: (Map NontermIdent (Attributes, Attributes))-                       _hdOallConstructors :: (Map NontermIdent (Set ConstructorIdent))-                       _hdOallFields :: DataTypes-                       _hdOallNonterminals :: (Set NontermIdent)-                       _hdOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                       _hdOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                       _hdOdefinedSets :: DefinedSets-                       _tlOallAttrDecls :: (Map NontermIdent (Attributes, Attributes))-                       _tlOallConstructors :: (Map NontermIdent (Set ConstructorIdent))-                       _tlOallFields :: DataTypes-                       _tlOallNonterminals :: (Set NontermIdent)-                       _tlOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                       _tlOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                       _tlOdefinedSets :: DefinedSets-                       _hdIattrDecls :: (Map NontermIdent (Attributes, Attributes))-                       _hdIattrOrderCollect :: AttrOrderMap-                       _hdIblocks :: Blocks-                       _hdIcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))-                       _hdIcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                       _hdIcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                       _hdIcollectedNames :: (Set Identifier)-                       _hdIcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                       _hdIcollectedSetNames :: (Set Identifier)-                       _hdIcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                       _hdIctxCollect :: ContextMap-                       _hdIdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                       _hdIderivings :: Derivings-                       _hdIerrors :: (Seq Error)-                       _hdImoduleDecl :: (Maybe (String,String,String))-                       _hdIparamsCollect :: ParamMap-                       _hdIpragmas :: (Options -> Options)-                       _hdIsemPragmasCollect :: PragmaMap-                       _hdItypeSyns :: TypeSyns-                       _hdIuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                       _hdIwrappers :: (Set NontermIdent)-                       _tlIattrDecls :: (Map NontermIdent (Attributes, Attributes))-                       _tlIattrOrderCollect :: AttrOrderMap-                       _tlIblocks :: Blocks-                       _tlIcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))-                       _tlIcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                       _tlIcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                       _tlIcollectedNames :: (Set Identifier)-                       _tlIcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                       _tlIcollectedSetNames :: (Set Identifier)-                       _tlIcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                       _tlIctxCollect :: ContextMap-                       _tlIdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                       _tlIderivings :: Derivings-                       _tlIerrors :: (Seq Error)-                       _tlImoduleDecl :: (Maybe (String,String,String))-                       _tlIparamsCollect :: ParamMap-                       _tlIpragmas :: (Options -> Options)-                       _tlIsemPragmasCollect :: PragmaMap-                       _tlItypeSyns :: TypeSyns-                       _tlIuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                       _tlIwrappers :: (Set NontermIdent)-                       -- use rule "Transform.ag"(line 565, column 55)-                       _lhsOattrOrderCollect =-                           _hdIattrOrderCollect `orderMapUnion` _tlIattrOrderCollect-                       -- use rule "Transform.ag"(line 38, column 19)-                       _lhsOblocks =-                           _hdIblocks `mapUnionWithPlusPlus` _tlIblocks-                       -- use rule "Transform.ag"(line 83, column 48)-                       _lhsOcollectedConstructorsMap =-                           _hdIcollectedConstructorsMap `mapUnionWithSetUnion` _tlIcollectedConstructorsMap-                       -- use rule "Transform.ag"(line 114, column 28)-                       _lhsOcollectedFields =-                           _hdIcollectedFields ++ _tlIcollectedFields-                       -- use rule "Transform.ag"(line 138, column 29)-                       _lhsOcollectedInsts =-                           _hdIcollectedInsts ++ _tlIcollectedInsts-                       -- use rule "Transform.ag"(line 75, column 50)-                       _lhsOcollectedNames =-                           _hdIcollectedNames `Set.union` _tlIcollectedNames-                       -- use rule "Transform.ag"(line 136, column 29)-                       _lhsOcollectedRules =-                           _hdIcollectedRules ++ _tlIcollectedRules-                       -- use rule "Transform.ag"(line 74, column 50)-                       _lhsOcollectedSetNames =-                           _hdIcollectedSetNames `Set.union` _tlIcollectedSetNames-                       -- use rule "Transform.ag"(line 137, column 29)-                       _lhsOcollectedSigs =-                           _hdIcollectedSigs ++ _tlIcollectedSigs-                       -- use rule "Transform.ag"(line 620, column 34)-                       _lhsOctxCollect =-                           _hdIctxCollect `mergeCtx` _tlIctxCollect-                       -- use rule "Transform.ag"(line 645, column 33)-                       _lhsOderivings =-                           _hdIderivings `mergeDerivings` _tlIderivings-                       -- use rule "Transform.ag"(line 36, column 19)-                       _lhsOerrors =-                           _hdIerrors Seq.<> _tlIerrors-                       -- use rule "Transform.ag"(line 787, column 37)-                       _lhsOmoduleDecl =-                           _hdImoduleDecl `mplus` _tlImoduleDecl-                       -- use rule "Transform.ag"(line 597, column 37)-                       _lhsOparamsCollect =-                           _hdIparamsCollect `mergeParams` _tlIparamsCollect-                       -- use rule "Transform.ag"(line 501, column 34)-                       _lhsOpragmas =-                           _hdIpragmas . _tlIpragmas-                       -- use rule "Transform.ag"(line 537, column 56)-                       _lhsOsemPragmasCollect =-                           _hdIsemPragmasCollect `pragmaMapUnion` _tlIsemPragmasCollect-                       -- use rule "Transform.ag"(line 380, column 32)-                       _lhsOtypeSyns =-                           _hdItypeSyns ++ _tlItypeSyns-                       -- use rule "Transform.ag"(line 126, column 15)-                       _lhsOuseMap =-                           _hdIuseMap `merge` _tlIuseMap-                       -- use rule "Transform.ag"(line 492, column 32)-                       _lhsOwrappers =-                           _hdIwrappers `Set.union` _tlIwrappers-                       -- copy rule (up)-                       _lhsOattrDecls =-                           _tlIattrDecls-                       -- copy rule (up)-                       _lhsOdefSets =-                           _tlIdefSets-                       -- copy rule (down)-                       _hdOallAttrDecls =-                           _lhsIallAttrDecls-                       -- copy rule (down)-                       _hdOallConstructors =-                           _lhsIallConstructors-                       -- copy rule (down)-                       _hdOallFields =-                           _lhsIallFields-                       -- copy rule (down)-                       _hdOallNonterminals =-                           _lhsIallNonterminals-                       -- copy rule (down)-                       _hdOattrDecls =-                           _lhsIattrDecls-                       -- copy rule (down)-                       _hdOdefSets =-                           _lhsIdefSets-                       -- copy rule (down)-                       _hdOdefinedSets =-                           _lhsIdefinedSets-                       -- copy rule (down)-                       _tlOallAttrDecls =-                           _lhsIallAttrDecls-                       -- copy rule (down)-                       _tlOallConstructors =-                           _lhsIallConstructors-                       -- copy rule (down)-                       _tlOallFields =-                           _lhsIallFields-                       -- copy rule (down)-                       _tlOallNonterminals =-                           _lhsIallNonterminals-                       -- copy rule (chain)-                       _tlOattrDecls =-                           _hdIattrDecls-                       -- copy rule (chain)-                       _tlOdefSets =-                           _hdIdefSets-                       -- copy rule (down)-                       _tlOdefinedSets =-                           _lhsIdefinedSets-                       ( _hdIattrDecls,_hdIattrOrderCollect,_hdIblocks,_hdIcollectedConstructorsMap,_hdIcollectedFields,_hdIcollectedInsts,_hdIcollectedNames,_hdIcollectedRules,_hdIcollectedSetNames,_hdIcollectedSigs,_hdIctxCollect,_hdIdefSets,_hdIderivings,_hdIerrors,_hdImoduleDecl,_hdIparamsCollect,_hdIpragmas,_hdIsemPragmasCollect,_hdItypeSyns,_hdIuseMap,_hdIwrappers) =-                           (hd_ _hdOallAttrDecls _hdOallConstructors _hdOallFields _hdOallNonterminals _hdOattrDecls _hdOdefSets _hdOdefinedSets)-                       ( _tlIattrDecls,_tlIattrOrderCollect,_tlIblocks,_tlIcollectedConstructorsMap,_tlIcollectedFields,_tlIcollectedInsts,_tlIcollectedNames,_tlIcollectedRules,_tlIcollectedSetNames,_tlIcollectedSigs,_tlIctxCollect,_tlIdefSets,_tlIderivings,_tlIerrors,_tlImoduleDecl,_tlIparamsCollect,_tlIpragmas,_tlIsemPragmasCollect,_tlItypeSyns,_tlIuseMap,_tlIwrappers) =-                           (tl_ _tlOallAttrDecls _tlOallConstructors _tlOallFields _tlOallNonterminals _tlOattrDecls _tlOdefSets _tlOdefinedSets)-                   in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))-sem_Elems_Nil :: T_Elems-sem_Elems_Nil  =-    (T_Elems (\ _lhsIallAttrDecls-                _lhsIallConstructors-                _lhsIallFields-                _lhsIallNonterminals-                _lhsIattrDecls-                _lhsIdefSets-                _lhsIdefinedSets ->-                  (let _lhsOattrOrderCollect :: AttrOrderMap-                       _lhsOblocks :: Blocks-                       _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))-                       _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])-                       _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                       _lhsOcollectedNames :: (Set Identifier)-                       _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                       _lhsOcollectedSetNames :: (Set Identifier)-                       _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                       _lhsOctxCollect :: ContextMap-                       _lhsOderivings :: Derivings-                       _lhsOerrors :: (Seq Error)-                       _lhsOmoduleDecl :: (Maybe (String,String,String))-                       _lhsOparamsCollect :: ParamMap-                       _lhsOpragmas :: (Options -> Options)-                       _lhsOsemPragmasCollect :: PragmaMap-                       _lhsOtypeSyns :: TypeSyns-                       _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))-                       _lhsOwrappers :: (Set NontermIdent)-                       _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))-                       _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))-                       -- use rule "Transform.ag"(line 565, column 55)-                       _lhsOattrOrderCollect =-                           Map.empty-                       -- use rule "Transform.ag"(line 38, column 19)-                       _lhsOblocks =-                           Map.empty-                       -- use rule "Transform.ag"(line 83, column 48)-                       _lhsOcollectedConstructorsMap =-                           Map.empty-                       -- use rule "Transform.ag"(line 114, column 28)-                       _lhsOcollectedFields =-                           []-                       -- use rule "Transform.ag"(line 138, column 29)-                       _lhsOcollectedInsts =-                           []-                       -- use rule "Transform.ag"(line 75, column 50)-                       _lhsOcollectedNames =-                           Set.empty-                       -- use rule "Transform.ag"(line 136, column 29)-                       _lhsOcollectedRules =-                           []-                       -- use rule "Transform.ag"(line 74, column 50)-                       _lhsOcollectedSetNames =-                           Set.empty-                       -- use rule "Transform.ag"(line 137, column 29)-                       _lhsOcollectedSigs =-                           []-                       -- use rule "Transform.ag"(line 620, column 34)-                       _lhsOctxCollect =-                           Map.empty-                       -- use rule "Transform.ag"(line 645, column 33)-                       _lhsOderivings =-                           Map.empty-                       -- use rule "Transform.ag"(line 36, column 19)-                       _lhsOerrors =-                           Seq.empty-                       -- use rule "Transform.ag"(line 787, column 37)-                       _lhsOmoduleDecl =-                           mzero-                       -- use rule "Transform.ag"(line 597, column 37)-                       _lhsOparamsCollect =-                           Map.empty-                       -- use rule "Transform.ag"(line 501, column 34)-                       _lhsOpragmas =-                           id-                       -- use rule "Transform.ag"(line 537, column 56)-                       _lhsOsemPragmasCollect =-                           Map.empty-                       -- use rule "Transform.ag"(line 380, column 32)-                       _lhsOtypeSyns =-                           []-                       -- use rule "Transform.ag"(line 126, column 15)-                       _lhsOuseMap =-                           Map.empty-                       -- use rule "Transform.ag"(line 492, column 32)-                       _lhsOwrappers =-                           Set.empty-                       -- copy rule (chain)-                       _lhsOattrDecls =-                           _lhsIattrDecls-                       -- copy rule (chain)-                       _lhsOdefSets =-                           _lhsIdefSets-                   in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))--- NontSet ------------------------------------------------------{--   visit 0:-      inherited attributes:-         allFields            : DataTypes-         allNonterminals      : Set NontermIdent-         definedSets          : DefinedSets-      synthesized attributes:-         collectedNames       : Set Identifier-         errors               : Seq Error-         nontSet              : Set NontermIdent-   alternatives:-      alternative All:-      alternative Difference:-         child set1           : NontSet-         child set2           : NontSet-      alternative Intersect:-         child set1           : NontSet-         child set2           : NontSet-      alternative NamedSet:-         child name           : {NontermIdent}-         visit 0:-            local _tup4       : _-            local nontSet     : _-            local errors      : _-      alternative Path:-         child from           : {NontermIdent}-         child to             : {NontermIdent}-      alternative Union:-         child set1           : NontSet-         child set2           : NontSet--}--- cata-sem_NontSet :: NontSet ->-               T_NontSet-sem_NontSet (All ) =-    (sem_NontSet_All )-sem_NontSet (Difference _set1 _set2) =-    (sem_NontSet_Difference (sem_NontSet _set1) (sem_NontSet _set2))-sem_NontSet (Intersect _set1 _set2) =-    (sem_NontSet_Intersect (sem_NontSet _set1) (sem_NontSet _set2))-sem_NontSet (NamedSet _name) =-    (sem_NontSet_NamedSet _name)-sem_NontSet (Path _from _to) =-    (sem_NontSet_Path _from _to)-sem_NontSet (Union _set1 _set2) =-    (sem_NontSet_Union (sem_NontSet _set1) (sem_NontSet _set2))--- semantic domain-newtype T_NontSet = T_NontSet (DataTypes ->-                               (Set NontermIdent) ->-                               DefinedSets ->-                               ( (Set Identifier),(Seq Error),(Set NontermIdent)))-data Inh_NontSet = Inh_NontSet {allFields_Inh_NontSet :: DataTypes,allNonterminals_Inh_NontSet :: Set NontermIdent,definedSets_Inh_NontSet :: DefinedSets}-data Syn_NontSet = Syn_NontSet {collectedNames_Syn_NontSet :: Set Identifier,errors_Syn_NontSet :: Seq Error,nontSet_Syn_NontSet :: Set NontermIdent}-wrap_NontSet (T_NontSet sem) (Inh_NontSet _lhsIallFields _lhsIallNonterminals _lhsIdefinedSets) =-    (let ( _lhsOcollectedNames,_lhsOerrors,_lhsOnontSet) =-             (sem _lhsIallFields _lhsIallNonterminals _lhsIdefinedSets)-     in  (Syn_NontSet _lhsOcollectedNames _lhsOerrors _lhsOnontSet))-sem_NontSet_All :: T_NontSet-sem_NontSet_All  =-    (T_NontSet (\ _lhsIallFields-                  _lhsIallNonterminals-                  _lhsIdefinedSets ->-                    (let _lhsOnontSet :: (Set NontermIdent)-                         _lhsOcollectedNames :: (Set Identifier)-                         _lhsOerrors :: (Seq Error)-                         -- "Transform.ag"(line 438, column 16)-                         _lhsOnontSet =-                             _lhsIallNonterminals-                         -- use rule "Transform.ag"(line 75, column 50)-                         _lhsOcollectedNames =-                             Set.empty-                         -- use rule "Transform.ag"(line 36, column 19)-                         _lhsOerrors =-                             Seq.empty-                     in  ( _lhsOcollectedNames,_lhsOerrors,_lhsOnontSet))))-sem_NontSet_Difference :: T_NontSet ->-                          T_NontSet ->-                          T_NontSet-sem_NontSet_Difference (T_NontSet set1_) (T_NontSet set2_) =-    (T_NontSet (\ _lhsIallFields-                  _lhsIallNonterminals-                  _lhsIdefinedSets ->-                    (let _lhsOnontSet :: (Set NontermIdent)-                         _lhsOcollectedNames :: (Set Identifier)-                         _lhsOerrors :: (Seq Error)-                         _set1OallFields :: DataTypes-                         _set1OallNonterminals :: (Set NontermIdent)-                         _set1OdefinedSets :: DefinedSets-                         _set2OallFields :: DataTypes-                         _set2OallNonterminals :: (Set NontermIdent)-                         _set2OdefinedSets :: DefinedSets-                         _set1IcollectedNames :: (Set Identifier)-                         _set1Ierrors :: (Seq Error)-                         _set1InontSet :: (Set NontermIdent)-                         _set2IcollectedNames :: (Set Identifier)-                         _set2Ierrors :: (Seq Error)-                         _set2InontSet :: (Set NontermIdent)-                         -- "Transform.ag"(line 444, column 16)-                         _lhsOnontSet =-                             Set.difference    _set1InontSet _set2InontSet-                         -- use rule "Transform.ag"(line 75, column 50)-                         _lhsOcollectedNames =-                             _set1IcollectedNames `Set.union` _set2IcollectedNames-                         -- use rule "Transform.ag"(line 36, column 19)-                         _lhsOerrors =-                             _set1Ierrors Seq.<> _set2Ierrors-                         -- copy rule (down)-                         _set1OallFields =-                             _lhsIallFields-                         -- copy rule (down)-                         _set1OallNonterminals =-                             _lhsIallNonterminals-                         -- copy rule (down)-                         _set1OdefinedSets =-                             _lhsIdefinedSets-                         -- copy rule (down)-                         _set2OallFields =-                             _lhsIallFields-                         -- copy rule (down)-                         _set2OallNonterminals =-                             _lhsIallNonterminals-                         -- copy rule (down)-                         _set2OdefinedSets =-                             _lhsIdefinedSets-                         ( _set1IcollectedNames,_set1Ierrors,_set1InontSet) =-                             (set1_ _set1OallFields _set1OallNonterminals _set1OdefinedSets)-                         ( _set2IcollectedNames,_set2Ierrors,_set2InontSet) =-                             (set2_ _set2OallFields _set2OallNonterminals _set2OdefinedSets)-                     in  ( _lhsOcollectedNames,_lhsOerrors,_lhsOnontSet))))-sem_NontSet_Intersect :: T_NontSet ->-                         T_NontSet ->-                         T_NontSet-sem_NontSet_Intersect (T_NontSet set1_) (T_NontSet set2_) =-    (T_NontSet (\ _lhsIallFields-                  _lhsIallNonterminals-                  _lhsIdefinedSets ->-                    (let _lhsOnontSet :: (Set NontermIdent)-                         _lhsOcollectedNames :: (Set Identifier)-                         _lhsOerrors :: (Seq Error)-                         _set1OallFields :: DataTypes-                         _set1OallNonterminals :: (Set NontermIdent)-                         _set1OdefinedSets :: DefinedSets-                         _set2OallFields :: DataTypes-                         _set2OallNonterminals :: (Set NontermIdent)-                         _set2OdefinedSets :: DefinedSets-                         _set1IcollectedNames :: (Set Identifier)-                         _set1Ierrors :: (Seq Error)-                         _set1InontSet :: (Set NontermIdent)-                         _set2IcollectedNames :: (Set Identifier)-                         _set2Ierrors :: (Seq Error)-                         _set2InontSet :: (Set NontermIdent)-                         -- "Transform.ag"(line 443, column 16)-                         _lhsOnontSet =-                             Set.intersection  _set1InontSet _set2InontSet-                         -- use rule "Transform.ag"(line 75, column 50)-                         _lhsOcollectedNames =-                             _set1IcollectedNames `Set.union` _set2IcollectedNames-                         -- use rule "Transform.ag"(line 36, column 19)-                         _lhsOerrors =-                             _set1Ierrors Seq.<> _set2Ierrors-                         -- copy rule (down)-                         _set1OallFields =-                             _lhsIallFields-                         -- copy rule (down)-                         _set1OallNonterminals =-                             _lhsIallNonterminals-                         -- copy rule (down)-                         _set1OdefinedSets =-                             _lhsIdefinedSets-                         -- copy rule (down)-                         _set2OallFields =-                             _lhsIallFields-                         -- copy rule (down)-                         _set2OallNonterminals =-                             _lhsIallNonterminals-                         -- copy rule (down)-                         _set2OdefinedSets =-                             _lhsIdefinedSets-                         ( _set1IcollectedNames,_set1Ierrors,_set1InontSet) =-                             (set1_ _set1OallFields _set1OallNonterminals _set1OdefinedSets)-                         ( _set2IcollectedNames,_set2Ierrors,_set2InontSet) =-                             (set2_ _set2OallFields _set2OallNonterminals _set2OdefinedSets)-                     in  ( _lhsOcollectedNames,_lhsOerrors,_lhsOnontSet))))-sem_NontSet_NamedSet :: NontermIdent ->-                        T_NontSet-sem_NontSet_NamedSet name_ =-    (T_NontSet (\ _lhsIallFields-                  _lhsIallNonterminals-                  _lhsIdefinedSets ->-                    (let _lhsOcollectedNames :: (Set Identifier)-                         _lhsOerrors :: (Seq Error)-                         _lhsOnontSet :: (Set NontermIdent)-                         -- "Transform.ag"(line 342, column 14)-                         _lhsOcollectedNames =-                             Set.singleton name_-                         -- "Transform.ag"(line 439, column 20)-                         __tup4 =-                             case Map.lookup name_ _lhsIdefinedSets of-                                          Nothing  -> (Set.empty, Seq.single (UndefNont name_))-                                          Just set -> (set, Seq.empty)-                         -- "Transform.ag"(line 439, column 20)-                         (_nontSet,_) =-                             __tup4-                         -- "Transform.ag"(line 439, column 20)-                         (_,_errors) =-                             __tup4-                         -- use rule "Transform.ag"(line 36, column 19)-                         _lhsOerrors =-                             _errors-                         -- copy rule (from local)-                         _lhsOnontSet =-                             _nontSet-                     in  ( _lhsOcollectedNames,_lhsOerrors,_lhsOnontSet))))-sem_NontSet_Path :: NontermIdent ->-                    NontermIdent ->-                    T_NontSet-sem_NontSet_Path from_ to_ =-    (T_NontSet (\ _lhsIallFields-                  _lhsIallNonterminals-                  _lhsIdefinedSets ->-                    (let _lhsOnontSet :: (Set NontermIdent)-                         _lhsOerrors :: (Seq Error)-                         _lhsOcollectedNames :: (Set Identifier)-                         -- "Transform.ag"(line 445, column 16)-                         _lhsOnontSet =-                             let table = flattenDatas _lhsIallFields-                             in path table from_ to_-                         -- "Transform.ag"(line 447, column 16)-                         _lhsOerrors =-                             let check name | Set.member name _lhsIallNonterminals-                                                        = Seq.empty-                                            | otherwise = Seq.single (UndefNont name)-                             in check from_ <> check to_-                         -- use rule "Transform.ag"(line 75, column 50)-                         _lhsOcollectedNames =-                             Set.empty-                     in  ( _lhsOcollectedNames,_lhsOerrors,_lhsOnontSet))))-sem_NontSet_Union :: T_NontSet ->-                     T_NontSet ->-                     T_NontSet-sem_NontSet_Union (T_NontSet set1_) (T_NontSet set2_) =-    (T_NontSet (\ _lhsIallFields-                  _lhsIallNonterminals-                  _lhsIdefinedSets ->-                    (let _lhsOnontSet :: (Set NontermIdent)-                         _lhsOcollectedNames :: (Set Identifier)-                         _lhsOerrors :: (Seq Error)-                         _set1OallFields :: DataTypes-                         _set1OallNonterminals :: (Set NontermIdent)-                         _set1OdefinedSets :: DefinedSets-                         _set2OallFields :: DataTypes-                         _set2OallNonterminals :: (Set NontermIdent)-                         _set2OdefinedSets :: DefinedSets-                         _set1IcollectedNames :: (Set Identifier)-                         _set1Ierrors :: (Seq Error)-                         _set1InontSet :: (Set NontermIdent)-                         _set2IcollectedNames :: (Set Identifier)-                         _set2Ierrors :: (Seq Error)-                         _set2InontSet :: (Set NontermIdent)-                         -- "Transform.ag"(line 442, column 16)-                         _lhsOnontSet =-                             Set.union         _set1InontSet _set2InontSet-                         -- use rule "Transform.ag"(line 75, column 50)-                         _lhsOcollectedNames =-                             _set1IcollectedNames `Set.union` _set2IcollectedNames-                         -- use rule "Transform.ag"(line 36, column 19)-                         _lhsOerrors =-                             _set1Ierrors Seq.<> _set2Ierrors-                         -- copy rule (down)-                         _set1OallFields =-                             _lhsIallFields-                         -- copy rule (down)-                         _set1OallNonterminals =-                             _lhsIallNonterminals-                         -- copy rule (down)-                         _set1OdefinedSets =-                             _lhsIdefinedSets-                         -- copy rule (down)-                         _set2OallFields =-                             _lhsIallFields-                         -- copy rule (down)-                         _set2OallNonterminals =-                             _lhsIallNonterminals-                         -- copy rule (down)-                         _set2OdefinedSets =-                             _lhsIdefinedSets-                         ( _set1IcollectedNames,_set1Ierrors,_set1InontSet) =-                             (set1_ _set1OallFields _set1OallNonterminals _set1OdefinedSets)-                         ( _set2IcollectedNames,_set2Ierrors,_set2InontSet) =-                             (set2_ _set2OallFields _set2OallNonterminals _set2OdefinedSets)-                     in  ( _lhsOcollectedNames,_lhsOerrors,_lhsOnontSet))))--- Pattern ------------------------------------------------------{--   visit 0:-      synthesized attributes:-         copy                 : SELF-         definedAttrs         : [AttrName]-         definedInsts         : [Identifier]-         patunder             : [AttrName]->Pattern-         stpos                : Pos-   alternatives:-      alternative Alias:-         child field          : {Identifier}-         child attr           : {Identifier}-         child pat            : Pattern-         child parts          : Patterns-         visit 0:-            local copy        : _-      alternative Constr:-         child name           : {ConstructorIdent}-         child pats           : Patterns-         visit 0:-            local copy        : _-      alternative Irrefutable:-         child pat            : Pattern-         visit 0:-            local copy        : _-      alternative Product:-         child pos            : {Pos}-         child pats           : Patterns-         visit 0:-            local copy        : _-      alternative Underscore:-         child pos            : {Pos}-         visit 0:-            local copy        : _--}--- cata-sem_Pattern :: Pattern ->-               T_Pattern-sem_Pattern (Alias _field _attr _pat _parts) =-    (sem_Pattern_Alias _field _attr (sem_Pattern _pat) (sem_Patterns _parts))-sem_Pattern (Constr _name _pats) =-    (sem_Pattern_Constr _name (sem_Patterns _pats))-sem_Pattern (Irrefutable _pat) =-    (sem_Pattern_Irrefutable (sem_Pattern _pat))-sem_Pattern (Product _pos _pats) =-    (sem_Pattern_Product _pos (sem_Patterns _pats))-sem_Pattern (Underscore _pos) =-    (sem_Pattern_Underscore _pos)--- semantic domain-newtype T_Pattern = T_Pattern (( Pattern,([AttrName]),([Identifier]),([AttrName]->Pattern),Pos))-data Inh_Pattern = Inh_Pattern {}-data Syn_Pattern = Syn_Pattern {copy_Syn_Pattern :: Pattern,definedAttrs_Syn_Pattern :: [AttrName],definedInsts_Syn_Pattern :: [Identifier],patunder_Syn_Pattern :: [AttrName]->Pattern,stpos_Syn_Pattern :: Pos}-wrap_Pattern (T_Pattern sem) (Inh_Pattern ) =-    (let ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder,_lhsOstpos) =-             (sem )-     in  (Syn_Pattern _lhsOcopy _lhsOdefinedAttrs _lhsOdefinedInsts _lhsOpatunder _lhsOstpos))-sem_Pattern_Alias :: Identifier ->-                     Identifier ->-                     T_Pattern ->-                     T_Patterns ->-                     T_Pattern-sem_Pattern_Alias field_ attr_ (T_Pattern pat_) (T_Patterns parts_) =-    (T_Pattern (let _lhsOdefinedAttrs :: ([AttrName])-                    _lhsOpatunder :: ([AttrName]->Pattern)-                    _lhsOdefinedInsts :: ([Identifier])-                    _lhsOstpos :: Pos-                    _lhsOcopy :: Pattern-                    _patIcopy :: Pattern-                    _patIdefinedAttrs :: ([AttrName])-                    _patIdefinedInsts :: ([Identifier])-                    _patIpatunder :: ([AttrName]->Pattern)-                    _patIstpos :: Pos-                    _partsIcopy :: Patterns-                    _partsIdefinedAttrs :: ([AttrName])-                    _partsIdefinedInsts :: ([Identifier])-                    _partsIpatunder :: ([AttrName]->Patterns)-                    -- "Transform.ag"(line 763, column 11)-                    _lhsOdefinedAttrs =-                        (field_, attr_) : _patIdefinedAttrs-                    -- "Transform.ag"(line 764, column 11)-                    _lhsOpatunder =-                        \us -> if ((field_,attr_) `elem` us) then Underscore noPos else _copy-                    -- "Transform.ag"(line 765, column 11)-                    _lhsOdefinedInsts =-                        (if field_ == _INST then [attr_] else []) ++ _patIdefinedInsts-                    -- "Transform.ag"(line 780, column 16)-                    _lhsOstpos =-                        getPos field_-                    -- self rule-                    _copy =-                        Alias field_ attr_ _patIcopy _partsIcopy-                    -- self rule-                    _lhsOcopy =-                        _copy-                    ( _patIcopy,_patIdefinedAttrs,_patIdefinedInsts,_patIpatunder,_patIstpos) =-                        (pat_ )-                    ( _partsIcopy,_partsIdefinedAttrs,_partsIdefinedInsts,_partsIpatunder) =-                        (parts_ )-                in  ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder,_lhsOstpos)))-sem_Pattern_Constr :: ConstructorIdent ->-                      T_Patterns ->-                      T_Pattern-sem_Pattern_Constr name_ (T_Patterns pats_) =-    (T_Pattern (let _lhsOpatunder :: ([AttrName]->Pattern)-                    _lhsOstpos :: Pos-                    _lhsOdefinedAttrs :: ([AttrName])-                    _lhsOdefinedInsts :: ([Identifier])-                    _lhsOcopy :: Pattern-                    _patsIcopy :: Patterns-                    _patsIdefinedAttrs :: ([AttrName])-                    _patsIdefinedInsts :: ([Identifier])-                    _patsIpatunder :: ([AttrName]->Patterns)-                    -- "Transform.ag"(line 767, column 12)-                    _lhsOpatunder =-                        \us -> Constr name_ (_patsIpatunder us)-                    -- "Transform.ag"(line 778, column 16)-                    _lhsOstpos =-                        getPos name_-                    -- use rule "Transform.ag"(line 758, column 42)-                    _lhsOdefinedAttrs =-                        _patsIdefinedAttrs-                    -- use rule "Transform.ag"(line 757, column 55)-                    _lhsOdefinedInsts =-                        _patsIdefinedInsts-                    -- self rule-                    _copy =-                        Constr name_ _patsIcopy-                    -- self rule-                    _lhsOcopy =-                        _copy-                    ( _patsIcopy,_patsIdefinedAttrs,_patsIdefinedInsts,_patsIpatunder) =-                        (pats_ )-                in  ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder,_lhsOstpos)))-sem_Pattern_Irrefutable :: T_Pattern ->-                           T_Pattern-sem_Pattern_Irrefutable (T_Pattern pat_) =-    (T_Pattern (let _lhsOpatunder :: ([AttrName]->Pattern)-                    _lhsOdefinedAttrs :: ([AttrName])-                    _lhsOdefinedInsts :: ([Identifier])-                    _lhsOcopy :: Pattern-                    _lhsOstpos :: Pos-                    _patIcopy :: Pattern-                    _patIdefinedAttrs :: ([AttrName])-                    _patIdefinedInsts :: ([Identifier])-                    _patIpatunder :: ([AttrName]->Pattern)-                    _patIstpos :: Pos-                    -- "Transform.ag"(line 769, column 17)-                    _lhsOpatunder =-                        \us -> Irrefutable (_patIpatunder us)-                    -- use rule "Transform.ag"(line 758, column 42)-                    _lhsOdefinedAttrs =-                        _patIdefinedAttrs-                    -- use rule "Transform.ag"(line 757, column 55)-                    _lhsOdefinedInsts =-                        _patIdefinedInsts-                    -- self rule-                    _copy =-                        Irrefutable _patIcopy-                    -- self rule-                    _lhsOcopy =-                        _copy-                    -- copy rule (up)-                    _lhsOstpos =-                        _patIstpos-                    ( _patIcopy,_patIdefinedAttrs,_patIdefinedInsts,_patIpatunder,_patIstpos) =-                        (pat_ )-                in  ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder,_lhsOstpos)))-sem_Pattern_Product :: Pos ->-                       T_Patterns ->-                       T_Pattern-sem_Pattern_Product pos_ (T_Patterns pats_) =-    (T_Pattern (let _lhsOpatunder :: ([AttrName]->Pattern)-                    _lhsOstpos :: Pos-                    _lhsOdefinedAttrs :: ([AttrName])-                    _lhsOdefinedInsts :: ([Identifier])-                    _lhsOcopy :: Pattern-                    _patsIcopy :: Patterns-                    _patsIdefinedAttrs :: ([AttrName])-                    _patsIdefinedInsts :: ([Identifier])-                    _patsIpatunder :: ([AttrName]->Patterns)-                    -- "Transform.ag"(line 768, column 13)-                    _lhsOpatunder =-                        \us -> Product pos_ (_patsIpatunder us)-                    -- "Transform.ag"(line 779, column 16)-                    _lhsOstpos =-                        pos_-                    -- use rule "Transform.ag"(line 758, column 42)-                    _lhsOdefinedAttrs =-                        _patsIdefinedAttrs-                    -- use rule "Transform.ag"(line 757, column 55)-                    _lhsOdefinedInsts =-                        _patsIdefinedInsts-                    -- self rule-                    _copy =-                        Product pos_ _patsIcopy-                    -- self rule-                    _lhsOcopy =-                        _copy-                    ( _patsIcopy,_patsIdefinedAttrs,_patsIdefinedInsts,_patsIpatunder) =-                        (pats_ )-                in  ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder,_lhsOstpos)))-sem_Pattern_Underscore :: Pos ->-                          T_Pattern-sem_Pattern_Underscore pos_ =-    (T_Pattern (let _lhsOpatunder :: ([AttrName]->Pattern)-                    _lhsOstpos :: Pos-                    _lhsOdefinedAttrs :: ([AttrName])-                    _lhsOdefinedInsts :: ([Identifier])-                    _lhsOcopy :: Pattern-                    -- "Transform.ag"(line 766, column 16)-                    _lhsOpatunder =-                        \us -> _copy-                    -- "Transform.ag"(line 781, column 16)-                    _lhsOstpos =-                        pos_-                    -- use rule "Transform.ag"(line 758, column 42)-                    _lhsOdefinedAttrs =-                        []-                    -- use rule "Transform.ag"(line 757, column 55)-                    _lhsOdefinedInsts =-                        []-                    -- self rule-                    _copy =-                        Underscore pos_-                    -- self rule-                    _lhsOcopy =-                        _copy-                in  ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder,_lhsOstpos)))--- Patterns -----------------------------------------------------{--   visit 0:-      synthesized attributes:-         copy                 : SELF-         definedAttrs         : [AttrName]-         definedInsts         : [Identifier]-         patunder             : [AttrName]->Patterns-   alternatives:-      alternative Cons:-         child hd             : Pattern-         child tl             : Patterns-         visit 0:-            local copy        : _-      alternative Nil:-         visit 0:-            local copy        : _--}--- cata-sem_Patterns :: Patterns ->-                T_Patterns-sem_Patterns list =-    (Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list))--- semantic domain-newtype T_Patterns = T_Patterns (( Patterns,([AttrName]),([Identifier]),([AttrName]->Patterns)))-data Inh_Patterns = Inh_Patterns {}-data Syn_Patterns = Syn_Patterns {copy_Syn_Patterns :: Patterns,definedAttrs_Syn_Patterns :: [AttrName],definedInsts_Syn_Patterns :: [Identifier],patunder_Syn_Patterns :: [AttrName]->Patterns}-wrap_Patterns (T_Patterns sem) (Inh_Patterns ) =-    (let ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder) =-             (sem )-     in  (Syn_Patterns _lhsOcopy _lhsOdefinedAttrs _lhsOdefinedInsts _lhsOpatunder))-sem_Patterns_Cons :: T_Pattern ->-                     T_Patterns ->-                     T_Patterns-sem_Patterns_Cons (T_Pattern hd_) (T_Patterns tl_) =-    (T_Patterns (let _lhsOpatunder :: ([AttrName]->Patterns)-                     _lhsOdefinedAttrs :: ([AttrName])-                     _lhsOdefinedInsts :: ([Identifier])-                     _lhsOcopy :: Patterns-                     _hdIcopy :: Pattern-                     _hdIdefinedAttrs :: ([AttrName])-                     _hdIdefinedInsts :: ([Identifier])-                     _hdIpatunder :: ([AttrName]->Pattern)-                     _hdIstpos :: Pos-                     _tlIcopy :: Patterns-                     _tlIdefinedAttrs :: ([AttrName])-                     _tlIdefinedInsts :: ([Identifier])-                     _tlIpatunder :: ([AttrName]->Patterns)-                     -- "Transform.ag"(line 773, column 10)-                     _lhsOpatunder =-                         \us -> (_hdIpatunder us) : (_tlIpatunder us)-                     -- use rule "Transform.ag"(line 758, column 42)-                     _lhsOdefinedAttrs =-                         _hdIdefinedAttrs ++ _tlIdefinedAttrs-                     -- use rule "Transform.ag"(line 757, column 55)-                     _lhsOdefinedInsts =-                         _hdIdefinedInsts ++ _tlIdefinedInsts-                     -- self rule-                     _copy =-                         (:) _hdIcopy _tlIcopy-                     -- self rule-                     _lhsOcopy =-                         _copy-                     ( _hdIcopy,_hdIdefinedAttrs,_hdIdefinedInsts,_hdIpatunder,_hdIstpos) =-                         (hd_ )-                     ( _tlIcopy,_tlIdefinedAttrs,_tlIdefinedInsts,_tlIpatunder) =-                         (tl_ )-                 in  ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder)))-sem_Patterns_Nil :: T_Patterns-sem_Patterns_Nil  =-    (T_Patterns (let _lhsOpatunder :: ([AttrName]->Patterns)-                     _lhsOdefinedAttrs :: ([AttrName])-                     _lhsOdefinedInsts :: ([Identifier])-                     _lhsOcopy :: Patterns-                     -- "Transform.ag"(line 772, column 9)-                     _lhsOpatunder =-                         \us ->  []-                     -- use rule "Transform.ag"(line 758, column 42)-                     _lhsOdefinedAttrs =-                         []-                     -- use rule "Transform.ag"(line 757, column 55)-                     _lhsOdefinedInsts =-                         []-                     -- self rule-                     _copy =-                         []-                     -- self rule-                     _lhsOcopy =-                         _copy-                 in  ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder)))--- SemAlt -------------------------------------------------------{--   visit 0:-      inherited attributes:-         allAttrDecls         : Map NontermIdent (Attributes, Attributes)-         allFields            : DataTypes-         nts                  : Set NontermIdent-      synthesized attributes:-         attrOrderCollect     : AttrOrderMap-         collectedInsts       : [ (NontermIdent, ConstructorIdent, [Identifier]) ]-         collectedRules       : [ (NontermIdent, ConstructorIdent, RuleInfo)]-         collectedSigs        : [ (NontermIdent, ConstructorIdent, SigInfo) ]-         errors               : Seq Error-         semPragmasCollect    : PragmaMap-   alternatives:-      alternative SemAlt:-         child pos            : {Pos}-         child constructorSet : ConstructorSet-         child rules          : SemDefs-         visit 0:-            local pragmaNames : _-            local attrOrders  : _-            local coninfo     : _--}--- cata-sem_SemAlt :: SemAlt ->-              T_SemAlt-sem_SemAlt (SemAlt _pos _constructorSet _rules) =-    (sem_SemAlt_SemAlt _pos (sem_ConstructorSet _constructorSet) (sem_SemDefs _rules))--- semantic domain-newtype T_SemAlt = T_SemAlt ((Map NontermIdent (Attributes, Attributes)) ->-                             DataTypes ->-                             (Set NontermIdent) ->-                             ( AttrOrderMap,([ (NontermIdent, ConstructorIdent, [Identifier]) ]),([ (NontermIdent, ConstructorIdent, RuleInfo)]),([ (NontermIdent, ConstructorIdent, SigInfo) ]),(Seq Error),PragmaMap))-data Inh_SemAlt = Inh_SemAlt {allAttrDecls_Inh_SemAlt :: Map NontermIdent (Attributes, Attributes),allFields_Inh_SemAlt :: DataTypes,nts_Inh_SemAlt :: Set NontermIdent}-data Syn_SemAlt = Syn_SemAlt {attrOrderCollect_Syn_SemAlt :: AttrOrderMap,collectedInsts_Syn_SemAlt :: [ (NontermIdent, ConstructorIdent, [Identifier]) ],collectedRules_Syn_SemAlt :: [ (NontermIdent, ConstructorIdent, RuleInfo)],collectedSigs_Syn_SemAlt :: [ (NontermIdent, ConstructorIdent, SigInfo) ],errors_Syn_SemAlt :: Seq Error,semPragmasCollect_Syn_SemAlt :: PragmaMap}-wrap_SemAlt (T_SemAlt sem) (Inh_SemAlt _lhsIallAttrDecls _lhsIallFields _lhsInts) =-    (let ( _lhsOattrOrderCollect,_lhsOcollectedInsts,_lhsOcollectedRules,_lhsOcollectedSigs,_lhsOerrors,_lhsOsemPragmasCollect) =-             (sem _lhsIallAttrDecls _lhsIallFields _lhsInts)-     in  (Syn_SemAlt _lhsOattrOrderCollect _lhsOcollectedInsts _lhsOcollectedRules _lhsOcollectedSigs _lhsOerrors _lhsOsemPragmasCollect))-sem_SemAlt_SemAlt :: Pos ->-                     T_ConstructorSet ->-                     T_SemDefs ->-                     T_SemAlt-sem_SemAlt_SemAlt pos_ (T_ConstructorSet constructorSet_) (T_SemDefs rules_) =-    (T_SemAlt (\ _lhsIallAttrDecls-                 _lhsIallFields-                 _lhsInts ->-                   (let _lhsOsemPragmasCollect :: PragmaMap-                        _lhsOattrOrderCollect :: AttrOrderMap-                        _lhsOerrors :: (Seq Error)-                        _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                        _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                        _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                        _constructorSetIcollectedConstructorNames :: (Set ConstructorIdent)-                        _constructorSetIconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))-                        _constructorSetIerrors :: (Seq Error)-                        _rulesIdefinedInsts :: ([Identifier])-                        _rulesIorderDepsCollect :: (Set Dependency)-                        _rulesIpragmaNamesCollect :: ([Identifier])-                        _rulesIruleInfos :: ([RuleInfo])-                        _rulesIsigInfos :: ([SigInfo] )-                        -- "Transform.ag"(line 541, column 7)-                        _pragmaNames =-                            Set.fromList _rulesIpragmaNamesCollect-                        -- "Transform.ag"(line 542, column 7)-                        _lhsOsemPragmasCollect =-                            foldr pragmaMapUnion Map.empty [ pragmaMapSingle nt con _pragmaNames-                                                           | (nt, conset, _) <- _coninfo-                                                           , con <- Set.toList conset-                                                           ]-                        -- "Transform.ag"(line 570, column 7)-                        _attrOrders =-                            [ orderMapSingle nt con _rulesIorderDepsCollect-                            | (nt, conset, _) <- _coninfo-                            , con <- Set.toList conset-                            ]-                        -- "Transform.ag"(line 576, column 7)-                        _lhsOattrOrderCollect =-                            foldr orderMapUnion Map.empty _attrOrders-                        -- "Transform.ag"(line 718, column 12)-                        _coninfo =-                            [ (nt, conset, conkeys)-                            | nt  <- Set.toList _lhsInts-                            , let conmap = Map.findWithDefault Map.empty nt _lhsIallFields-                            , let conkeys = Set.fromList (Map.keys conmap)-                            , let conset  = _constructorSetIconstructors conkeys-                            ]-                        -- "Transform.ag"(line 725, column 12)-                        _lhsOerrors =-                            Seq.fromList-                               [ UndefAlt nt con-                               | (nt, conset, conkeys) <- _coninfo-                               , con <- Set.toList (Set.difference conset conkeys)-                               ]-                        -- "Transform.ag"(line 730, column 12)-                        _lhsOcollectedRules =-                            [ (nt,con,r)-                            | (nt, conset, _) <- _coninfo-                            , con <- Set.toList conset-                            , r <- _rulesIruleInfos-                            ]-                        -- "Transform.ag"(line 736, column 12)-                        _lhsOcollectedSigs =-                            [ (nt,con,ts)-                            | (nt, conset, _) <- _coninfo-                            , con <- Set.toList conset-                            , ts <- _rulesIsigInfos-                            ]-                        -- "Transform.ag"(line 743, column 12)-                        _lhsOcollectedInsts =-                            [ (nt,con,_rulesIdefinedInsts)-                            | (nt, conset, _) <- _coninfo-                            , con <- Set.toList conset-                            ]-                        ( _constructorSetIcollectedConstructorNames,_constructorSetIconstructors,_constructorSetIerrors) =-                            (constructorSet_ )-                        ( _rulesIdefinedInsts,_rulesIorderDepsCollect,_rulesIpragmaNamesCollect,_rulesIruleInfos,_rulesIsigInfos) =-                            (rules_ )-                    in  ( _lhsOattrOrderCollect,_lhsOcollectedInsts,_lhsOcollectedRules,_lhsOcollectedSigs,_lhsOerrors,_lhsOsemPragmasCollect))))--- SemAlts ------------------------------------------------------{--   visit 0:-      inherited attributes:-         allAttrDecls         : Map NontermIdent (Attributes, Attributes)-         allFields            : DataTypes-         nts                  : Set NontermIdent-      synthesized attributes:-         attrOrderCollect     : AttrOrderMap-         collectedInsts       : [ (NontermIdent, ConstructorIdent, [Identifier]) ]-         collectedRules       : [ (NontermIdent, ConstructorIdent, RuleInfo)]-         collectedSigs        : [ (NontermIdent, ConstructorIdent, SigInfo) ]-         errors               : Seq Error-         semPragmasCollect    : PragmaMap-   alternatives:-      alternative Cons:-         child hd             : SemAlt-         child tl             : SemAlts-      alternative Nil:--}--- cata-sem_SemAlts :: SemAlts ->-               T_SemAlts-sem_SemAlts list =-    (Prelude.foldr sem_SemAlts_Cons sem_SemAlts_Nil (Prelude.map sem_SemAlt list))--- semantic domain-newtype T_SemAlts = T_SemAlts ((Map NontermIdent (Attributes, Attributes)) ->-                               DataTypes ->-                               (Set NontermIdent) ->-                               ( AttrOrderMap,([ (NontermIdent, ConstructorIdent, [Identifier]) ]),([ (NontermIdent, ConstructorIdent, RuleInfo)]),([ (NontermIdent, ConstructorIdent, SigInfo) ]),(Seq Error),PragmaMap))-data Inh_SemAlts = Inh_SemAlts {allAttrDecls_Inh_SemAlts :: Map NontermIdent (Attributes, Attributes),allFields_Inh_SemAlts :: DataTypes,nts_Inh_SemAlts :: Set NontermIdent}-data Syn_SemAlts = Syn_SemAlts {attrOrderCollect_Syn_SemAlts :: AttrOrderMap,collectedInsts_Syn_SemAlts :: [ (NontermIdent, ConstructorIdent, [Identifier]) ],collectedRules_Syn_SemAlts :: [ (NontermIdent, ConstructorIdent, RuleInfo)],collectedSigs_Syn_SemAlts :: [ (NontermIdent, ConstructorIdent, SigInfo) ],errors_Syn_SemAlts :: Seq Error,semPragmasCollect_Syn_SemAlts :: PragmaMap}-wrap_SemAlts (T_SemAlts sem) (Inh_SemAlts _lhsIallAttrDecls _lhsIallFields _lhsInts) =-    (let ( _lhsOattrOrderCollect,_lhsOcollectedInsts,_lhsOcollectedRules,_lhsOcollectedSigs,_lhsOerrors,_lhsOsemPragmasCollect) =-             (sem _lhsIallAttrDecls _lhsIallFields _lhsInts)-     in  (Syn_SemAlts _lhsOattrOrderCollect _lhsOcollectedInsts _lhsOcollectedRules _lhsOcollectedSigs _lhsOerrors _lhsOsemPragmasCollect))-sem_SemAlts_Cons :: T_SemAlt ->-                    T_SemAlts ->-                    T_SemAlts-sem_SemAlts_Cons (T_SemAlt hd_) (T_SemAlts tl_) =-    (T_SemAlts (\ _lhsIallAttrDecls-                  _lhsIallFields-                  _lhsInts ->-                    (let _lhsOattrOrderCollect :: AttrOrderMap-                         _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                         _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                         _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                         _lhsOerrors :: (Seq Error)-                         _lhsOsemPragmasCollect :: PragmaMap-                         _hdOallAttrDecls :: (Map NontermIdent (Attributes, Attributes))-                         _hdOallFields :: DataTypes-                         _hdOnts :: (Set NontermIdent)-                         _tlOallAttrDecls :: (Map NontermIdent (Attributes, Attributes))-                         _tlOallFields :: DataTypes-                         _tlOnts :: (Set NontermIdent)-                         _hdIattrOrderCollect :: AttrOrderMap-                         _hdIcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                         _hdIcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                         _hdIcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                         _hdIerrors :: (Seq Error)-                         _hdIsemPragmasCollect :: PragmaMap-                         _tlIattrOrderCollect :: AttrOrderMap-                         _tlIcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                         _tlIcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                         _tlIcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                         _tlIerrors :: (Seq Error)-                         _tlIsemPragmasCollect :: PragmaMap-                         -- use rule "Transform.ag"(line 565, column 55)-                         _lhsOattrOrderCollect =-                             _hdIattrOrderCollect `orderMapUnion` _tlIattrOrderCollect-                         -- use rule "Transform.ag"(line 138, column 29)-                         _lhsOcollectedInsts =-                             _hdIcollectedInsts ++ _tlIcollectedInsts-                         -- use rule "Transform.ag"(line 136, column 29)-                         _lhsOcollectedRules =-                             _hdIcollectedRules ++ _tlIcollectedRules-                         -- use rule "Transform.ag"(line 137, column 29)-                         _lhsOcollectedSigs =-                             _hdIcollectedSigs ++ _tlIcollectedSigs-                         -- use rule "Transform.ag"(line 36, column 19)-                         _lhsOerrors =-                             _hdIerrors Seq.<> _tlIerrors-                         -- use rule "Transform.ag"(line 537, column 56)-                         _lhsOsemPragmasCollect =-                             _hdIsemPragmasCollect `pragmaMapUnion` _tlIsemPragmasCollect-                         -- copy rule (down)-                         _hdOallAttrDecls =-                             _lhsIallAttrDecls-                         -- copy rule (down)-                         _hdOallFields =-                             _lhsIallFields-                         -- copy rule (down)-                         _hdOnts =-                             _lhsInts-                         -- copy rule (down)-                         _tlOallAttrDecls =-                             _lhsIallAttrDecls-                         -- copy rule (down)-                         _tlOallFields =-                             _lhsIallFields-                         -- copy rule (down)-                         _tlOnts =-                             _lhsInts-                         ( _hdIattrOrderCollect,_hdIcollectedInsts,_hdIcollectedRules,_hdIcollectedSigs,_hdIerrors,_hdIsemPragmasCollect) =-                             (hd_ _hdOallAttrDecls _hdOallFields _hdOnts)-                         ( _tlIattrOrderCollect,_tlIcollectedInsts,_tlIcollectedRules,_tlIcollectedSigs,_tlIerrors,_tlIsemPragmasCollect) =-                             (tl_ _tlOallAttrDecls _tlOallFields _tlOnts)-                     in  ( _lhsOattrOrderCollect,_lhsOcollectedInsts,_lhsOcollectedRules,_lhsOcollectedSigs,_lhsOerrors,_lhsOsemPragmasCollect))))-sem_SemAlts_Nil :: T_SemAlts-sem_SemAlts_Nil  =-    (T_SemAlts (\ _lhsIallAttrDecls-                  _lhsIallFields-                  _lhsInts ->-                    (let _lhsOattrOrderCollect :: AttrOrderMap-                         _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])-                         _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])-                         _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])-                         _lhsOerrors :: (Seq Error)-                         _lhsOsemPragmasCollect :: PragmaMap-                         -- use rule "Transform.ag"(line 565, column 55)-                         _lhsOattrOrderCollect =-                             Map.empty-                         -- use rule "Transform.ag"(line 138, column 29)-                         _lhsOcollectedInsts =-                             []-                         -- use rule "Transform.ag"(line 136, column 29)-                         _lhsOcollectedRules =-                             []-                         -- use rule "Transform.ag"(line 137, column 29)-                         _lhsOcollectedSigs =-                             []-                         -- use rule "Transform.ag"(line 36, column 19)-                         _lhsOerrors =-                             Seq.empty-                         -- use rule "Transform.ag"(line 537, column 56)-                         _lhsOsemPragmasCollect =-                             Map.empty-                     in  ( _lhsOattrOrderCollect,_lhsOcollectedInsts,_lhsOcollectedRules,_lhsOcollectedSigs,_lhsOerrors,_lhsOsemPragmasCollect))))--- SemDef -------------------------------------------------------{--   visit 0:-      synthesized attributes:-         definedInsts         : [Identifier]-         orderDepsCollect     : Set Dependency-         pragmaNamesCollect   : [Identifier]-         ruleInfos            : [RuleInfo]-         sigInfos             : [SigInfo] -   alternatives:-      alternative AttrOrderBefore:-         child before         : {[(Identifier,Identifier)]}-         child after          : {[(Identifier,Identifier)]}-         visit 0:-            local dependency  : _-      alternative Def:-         child pattern        : Pattern-         child rhs            : {Expression}-         child owrt           : {Bool}-      alternative SemPragma:-         child names          : {[NontermIdent]}-      alternative TypeDef:-         child ident          : {Identifier}-         child tp             : {Type}--}--- cata-sem_SemDef :: SemDef ->-              T_SemDef-sem_SemDef (AttrOrderBefore _before _after) =-    (sem_SemDef_AttrOrderBefore _before _after)-sem_SemDef (Def _pattern _rhs _owrt) =-    (sem_SemDef_Def (sem_Pattern _pattern) _rhs _owrt)-sem_SemDef (SemPragma _names) =-    (sem_SemDef_SemPragma _names)-sem_SemDef (TypeDef _ident _tp) =-    (sem_SemDef_TypeDef _ident _tp)--- semantic domain-newtype T_SemDef = T_SemDef (( ([Identifier]),(Set Dependency),([Identifier]),([RuleInfo]),([SigInfo] )))-data Inh_SemDef = Inh_SemDef {}-data Syn_SemDef = Syn_SemDef {definedInsts_Syn_SemDef :: [Identifier],orderDepsCollect_Syn_SemDef :: Set Dependency,pragmaNamesCollect_Syn_SemDef :: [Identifier],ruleInfos_Syn_SemDef :: [RuleInfo],sigInfos_Syn_SemDef :: [SigInfo] }-wrap_SemDef (T_SemDef sem) (Inh_SemDef ) =-    (let ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos) =-             (sem )-     in  (Syn_SemDef _lhsOdefinedInsts _lhsOorderDepsCollect _lhsOpragmaNamesCollect _lhsOruleInfos _lhsOsigInfos))-sem_SemDef_AttrOrderBefore :: ([(Identifier,Identifier)]) ->-                              ([(Identifier,Identifier)]) ->-                              T_SemDef-sem_SemDef_AttrOrderBefore before_ after_ =-    (T_SemDef (let _lhsOorderDepsCollect :: (Set Dependency)-                   _lhsOdefinedInsts :: ([Identifier])-                   _lhsOpragmaNamesCollect :: ([Identifier])-                   _lhsOruleInfos :: ([RuleInfo])-                   _lhsOsigInfos :: ([SigInfo] )-                   -- "Transform.ag"(line 582, column 7)-                   _dependency =-                       [ Dependency b a | b <- before_, a <- after_ ]-                   -- "Transform.ag"(line 583, column 7)-                   _lhsOorderDepsCollect =-                       Set.fromList _dependency-                   -- use rule "Transform.ag"(line 757, column 55)-                   _lhsOdefinedInsts =-                       []-                   -- use rule "Transform.ag"(line 547, column 46)-                   _lhsOpragmaNamesCollect =-                       []-                   -- use rule "Transform.ag"(line 712, column 37)-                   _lhsOruleInfos =-                       []-                   -- use rule "Transform.ag"(line 713, column 37)-                   _lhsOsigInfos =-                       []-               in  ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos)))-sem_SemDef_Def :: T_Pattern ->-                  Expression ->-                  Bool ->-                  T_SemDef-sem_SemDef_Def (T_Pattern pattern_) rhs_ owrt_ =-    (T_SemDef (let _lhsOruleInfos :: ([RuleInfo])-                   _lhsOdefinedInsts :: ([Identifier])-                   _lhsOorderDepsCollect :: (Set Dependency)-                   _lhsOpragmaNamesCollect :: ([Identifier])-                   _lhsOsigInfos :: ([SigInfo] )-                   _patternIcopy :: Pattern-                   _patternIdefinedAttrs :: ([AttrName])-                   _patternIdefinedInsts :: ([Identifier])-                   _patternIpatunder :: ([AttrName]->Pattern)-                   _patternIstpos :: Pos-                   -- "Transform.ag"(line 751, column 10)-                   _lhsOruleInfos =-                       [ (_patternIpatunder, rhs_, _patternIdefinedAttrs, owrt_, show _patternIstpos) ]-                   -- use rule "Transform.ag"(line 757, column 55)-                   _lhsOdefinedInsts =-                       _patternIdefinedInsts-                   -- use rule "Transform.ag"(line 578, column 44)-                   _lhsOorderDepsCollect =-                       Set.empty-                   -- use rule "Transform.ag"(line 547, column 46)-                   _lhsOpragmaNamesCollect =-                       []-                   -- use rule "Transform.ag"(line 713, column 37)-                   _lhsOsigInfos =-                       []-                   ( _patternIcopy,_patternIdefinedAttrs,_patternIdefinedInsts,_patternIpatunder,_patternIstpos) =-                       (pattern_ )-               in  ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos)))-sem_SemDef_SemPragma :: ([NontermIdent]) ->-                        T_SemDef-sem_SemDef_SemPragma names_ =-    (T_SemDef (let _lhsOpragmaNamesCollect :: ([Identifier])-                   _lhsOdefinedInsts :: ([Identifier])-                   _lhsOorderDepsCollect :: (Set Dependency)-                   _lhsOruleInfos :: ([RuleInfo])-                   _lhsOsigInfos :: ([SigInfo] )-                   -- "Transform.ag"(line 551, column 7)-                   _lhsOpragmaNamesCollect =-                       names_-                   -- use rule "Transform.ag"(line 757, column 55)-                   _lhsOdefinedInsts =-                       []-                   -- use rule "Transform.ag"(line 578, column 44)-                   _lhsOorderDepsCollect =-                       Set.empty-                   -- use rule "Transform.ag"(line 712, column 37)-                   _lhsOruleInfos =-                       []-                   -- use rule "Transform.ag"(line 713, column 37)-                   _lhsOsigInfos =-                       []-               in  ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos)))-sem_SemDef_TypeDef :: Identifier ->-                      Type ->-                      T_SemDef-sem_SemDef_TypeDef ident_ tp_ =-    (T_SemDef (let _lhsOsigInfos :: ([SigInfo] )-                   _lhsOdefinedInsts :: ([Identifier])-                   _lhsOorderDepsCollect :: (Set Dependency)-                   _lhsOpragmaNamesCollect :: ([Identifier])-                   _lhsOruleInfos :: ([RuleInfo])-                   -- "Transform.ag"(line 754, column 14)-                   _lhsOsigInfos =-                       [ (ident_, tp_) ]-                   -- use rule "Transform.ag"(line 757, column 55)-                   _lhsOdefinedInsts =-                       []-                   -- use rule "Transform.ag"(line 578, column 44)-                   _lhsOorderDepsCollect =-                       Set.empty-                   -- use rule "Transform.ag"(line 547, column 46)-                   _lhsOpragmaNamesCollect =-                       []-                   -- use rule "Transform.ag"(line 712, column 37)-                   _lhsOruleInfos =-                       []-               in  ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos)))--- SemDefs ------------------------------------------------------{--   visit 0:-      synthesized attributes:-         definedInsts         : [Identifier]-         orderDepsCollect     : Set Dependency-         pragmaNamesCollect   : [Identifier]-         ruleInfos            : [RuleInfo]-         sigInfos             : [SigInfo] -   alternatives:-      alternative Cons:-         child hd             : SemDef-         child tl             : SemDefs-      alternative Nil:--}--- cata-sem_SemDefs :: SemDefs ->-               T_SemDefs-sem_SemDefs list =-    (Prelude.foldr sem_SemDefs_Cons sem_SemDefs_Nil (Prelude.map sem_SemDef list))--- semantic domain-newtype T_SemDefs = T_SemDefs (( ([Identifier]),(Set Dependency),([Identifier]),([RuleInfo]),([SigInfo] )))-data Inh_SemDefs = Inh_SemDefs {}-data Syn_SemDefs = Syn_SemDefs {definedInsts_Syn_SemDefs :: [Identifier],orderDepsCollect_Syn_SemDefs :: Set Dependency,pragmaNamesCollect_Syn_SemDefs :: [Identifier],ruleInfos_Syn_SemDefs :: [RuleInfo],sigInfos_Syn_SemDefs :: [SigInfo] }-wrap_SemDefs (T_SemDefs sem) (Inh_SemDefs ) =-    (let ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos) =-             (sem )-     in  (Syn_SemDefs _lhsOdefinedInsts _lhsOorderDepsCollect _lhsOpragmaNamesCollect _lhsOruleInfos _lhsOsigInfos))-sem_SemDefs_Cons :: T_SemDef ->-                    T_SemDefs ->-                    T_SemDefs-sem_SemDefs_Cons (T_SemDef hd_) (T_SemDefs tl_) =-    (T_SemDefs (let _lhsOdefinedInsts :: ([Identifier])-                    _lhsOorderDepsCollect :: (Set Dependency)-                    _lhsOpragmaNamesCollect :: ([Identifier])-                    _lhsOruleInfos :: ([RuleInfo])-                    _lhsOsigInfos :: ([SigInfo] )-                    _hdIdefinedInsts :: ([Identifier])-                    _hdIorderDepsCollect :: (Set Dependency)-                    _hdIpragmaNamesCollect :: ([Identifier])-                    _hdIruleInfos :: ([RuleInfo])-                    _hdIsigInfos :: ([SigInfo] )-                    _tlIdefinedInsts :: ([Identifier])-                    _tlIorderDepsCollect :: (Set Dependency)-                    _tlIpragmaNamesCollect :: ([Identifier])-                    _tlIruleInfos :: ([RuleInfo])-                    _tlIsigInfos :: ([SigInfo] )-                    -- use rule "Transform.ag"(line 757, column 55)-                    _lhsOdefinedInsts =-                        _hdIdefinedInsts ++ _tlIdefinedInsts-                    -- use rule "Transform.ag"(line 578, column 44)-                    _lhsOorderDepsCollect =-                        _hdIorderDepsCollect `Set.union` _tlIorderDepsCollect-                    -- use rule "Transform.ag"(line 547, column 46)-                    _lhsOpragmaNamesCollect =-                        _hdIpragmaNamesCollect ++ _tlIpragmaNamesCollect-                    -- use rule "Transform.ag"(line 712, column 37)-                    _lhsOruleInfos =-                        _hdIruleInfos ++ _tlIruleInfos-                    -- use rule "Transform.ag"(line 713, column 37)-                    _lhsOsigInfos =-                        _hdIsigInfos ++ _tlIsigInfos-                    ( _hdIdefinedInsts,_hdIorderDepsCollect,_hdIpragmaNamesCollect,_hdIruleInfos,_hdIsigInfos) =-                        (hd_ )-                    ( _tlIdefinedInsts,_tlIorderDepsCollect,_tlIpragmaNamesCollect,_tlIruleInfos,_tlIsigInfos) =-                        (tl_ )-                in  ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos)))-sem_SemDefs_Nil :: T_SemDefs-sem_SemDefs_Nil  =-    (T_SemDefs (let _lhsOdefinedInsts :: ([Identifier])-                    _lhsOorderDepsCollect :: (Set Dependency)-                    _lhsOpragmaNamesCollect :: ([Identifier])-                    _lhsOruleInfos :: ([RuleInfo])-                    _lhsOsigInfos :: ([SigInfo] )-                    -- use rule "Transform.ag"(line 757, column 55)-                    _lhsOdefinedInsts =-                        []-                    -- use rule "Transform.ag"(line 578, column 44)-                    _lhsOorderDepsCollect =-                        Set.empty-                    -- use rule "Transform.ag"(line 547, column 46)-                    _lhsOpragmaNamesCollect =-                        []-                    -- use rule "Transform.ag"(line 712, column 37)-                    _lhsOruleInfos =-                        []-                    -- use rule "Transform.ag"(line 713, column 37)-                    _lhsOsigInfos =-                        []-                in  ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos)))+import List (partition, elem, nub,intersperse)+import Data.Maybe+import qualified Data.Map as Map+import Data.Map (Map)+import Data.Set as Set (Set, member, union, toList, fromList, empty, singleton, member, unions, size, fold, intersection, difference, insert)+import UU.DData.Seq as Seq (Seq, empty, (<>), single, cons, toList, fromList)+import UU.Scanner.Position(noPos)++import ConcreteSyntax+import AbstractSyntax+import ErrorMessages+import Patterns (Patterns(..),Pattern(..))+import Expression (Expression(..))+import HsToken++import Options+import CommonTypes++import UU.Scanner.Position (Pos)+import Patterns   (Pattern)+import Expression (Expression)+import CommonTypes++-- Patterns.ag imports+import UU.Scanner.Position(Pos)+import CommonTypes (ConstructorIdent,Identifier)+type DefinedSets = Map Identifier (Set NontermIdent) +type FieldMap  = [(Identifier, Type)] +type DataTypes = Map.Map NontermIdent (Map.Map ConstructorIdent FieldMap) +type AttrName   = (Identifier,Identifier) +type RuleInfo   = ([AttrName]->Pattern, Expression, [AttrName], Bool, String) +type SigInfo    = (Identifier,Type) +type UniqueInfo = (Identifier,Identifier) +++checkDuplicate :: (Identifier -> Identifier -> Error)+               -> Identifier -> val -> Map Identifier val -> (Map Identifier val,Seq Error)+checkDuplicate dupError key val m+  = case Map.lookupIndex key m of+     Just ix -> let (key',_) = Map.elemAt ix m+                in  (m,Seq.single (dupError key key'))+     Nothing -> (Map.insert key val m,Seq.empty)++checkDuplicates :: (Identifier -> Identifier -> Error)+                -> [(Identifier, val)] -> Map Identifier val -> (Map Identifier val,Seq Error)+checkDuplicates dupError new m = foldErrors check m new+ where  check = uncurry (checkDuplicate dupError)++foldErrors f e xs = foldl g (e,Seq.empty) xs+  where g ~(e,es) x = let (e',es') = f x e+                      in (e', es <> es')+++checkForDuplicates :: (Identifier -> Identifier -> Error)  ->  [Identifier]  ->  [Error]+checkForDuplicates err [] = []+checkForDuplicates err (x:xs) = let (same,other) = List.partition (equalId x) xs+                                in  map (err x) same ++ checkForDuplicates err other++equalId :: Identifier -> Identifier -> Bool+equalId x y = getName x == getName y+++type RulesAndErrors = ([Rule], Seq Error)+type SigsAndErrors  = ([TypeSig], Seq Error)+type InstsAndErrors = ([(Identifier, Type)], Seq Error)+type UniquesAndErrors = (Map Identifier Identifier, Seq Error)+type AttrOverwrite  = Map AttrName Bool+type AccumRuleCheck = (RulesAndErrors, AttrOverwrite)+type AccumDefiCheck = (Seq Error, AttrOverwrite, [AttrName], [AttrName])++checkRules :: Map NontermIdent (Attributes, Attributes) -> Map NontermIdent (Map ConstructorIdent FieldMap) ->+              Map NontermIdent (Map ConstructorIdent [Identifier]) -> Map NontermIdent (Map ConstructorIdent [SigInfo]) ->+              NontermIdent -> ConstructorIdent -> [RuleInfo] -> RulesAndErrors+checkRules attributes fields allinsts allsigs nt con rs+  = let fieldmap :: FieldMap+        fieldmap = (_LHS,NT nt undefined) : (_LOC,NT undefined undefined) : (_INST, NT undefined undefined) : (_FIRST, NT undefined undefined) : (_LAST, NT undefined undefined)+                 : Map.findWithDefault [] con (Map.findWithDefault Map.empty nt fields)+                 ++ mapMaybe (\instNm -> lookup instNm sigs >>= \tp -> return (instNm, tp)) (Map.findWithDefault [] con (Map.findWithDefault Map.empty nt allinsts))+        +        sigs = Map.findWithDefault [] con (Map.findWithDefault Map.empty nt allsigs)++        hasAttrib f tp attr  = Map.member attr (f (Map.findWithDefault (Map.empty,Map.empty) tp attributes))+  +        checkRule :: RuleInfo -> AccumRuleCheck -> AccumRuleCheck+        checkRule (pat,exp,as,owrt,str) ((r1,e1),m1) +          = let (e2,m2,u2,b2) = foldr (checkDefi owrt) (e1,m1,[],[]) as+            in  ( (Rule (pat u2) exp owrt str : r1, e2), m2)++        checkDefi :: Bool -> AttrName -> AccumDefiCheck -> AccumDefiCheck+        checkDefi owrt fa@(field,attr) (e,m,u,bs)+         = case lookup field fieldmap+            of  Just (NT tp _) -> if field == _LOC || field == _INST || field == _FIRST || field == _LAST+                                     || hasAttrib (if getName field==getName _LHS then snd else fst) tp attr+                                  then case Map.lookupIndex fa m of+                                           Just ix -> let ((_,attr2),b) = Map.elemAt ix m+                                                       in  if b && not (fa `elem` bs)+                                                           then (                                             e, Map.insert fa owrt m, fa:u, fa:bs)+                                                           else (Seq.cons (DupRule nt con field attr2 attr)   e,                    m, fa:u,    bs)+                                           Nothing ->           (                                             e, Map.insert fa owrt m,    u, fa:bs)+                                  else                          (Seq.cons (SuperfluousRule nt con field attr) e,                    m, fa:u,    bs)+                _              ->                               (Seq.cons (UndefChild nt con field)           e,                    m, fa:u,    bs )++    in  fst (foldr checkRule (([],Seq.empty),Map.empty) rs)++checkSigs :: NontermIdent -> ConstructorIdent -> [SigInfo] -> SigsAndErrors+checkSigs nt con sis +  = let checkSig (ide,typ) (sigs,errs)+         = if   ide `elem` map (\(TypeSig n t)-> n) sigs+           then (sigs, Seq.cons (DupSig nt con ide) errs)+           -- else if not (ide `elem` locattrdefs)+           -- then (sigs, Seq.cons (SupSig nt con ide) errs)+           else (TypeSig ide typ:sigs, errs)+    in  foldr checkSig ([],Seq.empty) sis++checkInsts :: Set NontermIdent -> Map NontermIdent (Map ConstructorIdent [SigInfo]) -> NontermIdent -> ConstructorIdent -> [Identifier] -> InstsAndErrors+checkInsts allNts sigMap nt con+  = foldr (\inst (insts, errs) ->+              maybe (insts, Seq.single (MissingInstSig nt con inst) <> errs)+                    (\info@(_, NT nm _) -> case nm `Set.member` allNts of+                                             True  -> (info : insts, errs)+                                             False | take 2 (getName nm) == "T_" -> let nm' = Ident (drop 2 (getName nm)) (getPos nm)+                                                                                    in case nm' `Set.member` allNts of+                                                                                         True  -> (info : insts, errs)+                                                                                         False -> (insts, Seq.single (UndefNont nm') <> errs)+                                                   | otherwise                   -> (insts, Seq.single (UndefNont nm) <> errs)+                    ) +                  $ findSig inst+          ) ([], Seq.empty)+  where+    sigs = Map.findWithDefault [] con (Map.findWithDefault Map.empty nt sigMap)+    +    findSig name+      = do tp@(NT _ _) <- lookup name sigs+           return (name, tp)++checkUniques :: Map NontermIdent (Attributes, Attributes) -> NontermIdent -> ConstructorIdent -> [UniqueInfo] -> UniquesAndErrors+checkUniques allAttrs nt con uniques+  = let checkUnique (ident,ref) (us,errs)+          = if ident `Map.member` us+            then (us, Seq.cons (DupUnique nt con ident) errs)+            else if Map.member ref inhs && Map.member ref syns+                 then (Map.insert ident ref us, errs)+                 else (us, Seq.cons (MissingUnique nt ref) errs)++        (inhs,syns) = Map.findWithDefault (Map.empty,Map.empty) nt allAttrs+    in foldr checkUnique (Map.empty, Seq.empty) uniques++mkUniqueRules :: Options -> Map NontermIdent (Map ConstructorIdent [(Identifier, Type)]) -> Map NontermIdent (Attributes,Attributes) -> NontermIdent -> ConstructorIdent -> Map Identifier Identifier -> [Rule]+mkUniqueRules opts allFields allAttrDecls nt con usMap+  = map apply groups+  where+    fields = Map.findWithDefault [] con (Map.findWithDefault Map.empty nt allFields)++    groups = Map.assocs $ Map.foldWithKey (\i r m -> Map.insertWith (++) r [i] m) Map.empty usMap+    apply (ref,us) = mkRule ref (findOutField ref) us+    findOutField ref = case [ chld | (chld,NT tp _) <- fields, tp `hasSyn` ref] of+                         []    -> _LHS+                         (x:_) -> x+    hasSyn tp ref = Map.member ref $ snd $ Map.findWithDefault (Map.empty,Map.empty) tp allAttrDecls+    mkRule ref outFld locAttrs+      = let pat = Product noPos (attr outFld ref : [attr _LOC u | u <- locAttrs ])+            rhs = Expression noPos $ wrap ref $ foldr gencase (finalout locAttrs) locAttrs+                     -- [HsToken ("mkUniques" ++ show (length locAttrs) ++ " ") noPos, AGField _LHS ref noPos Nothing]+        in Rule pat rhs False "-- generated by the unique rule mechanism."+    attr fld a = Alias fld a (Underscore noPos) []+    gencase nm outp+      = h ("case " ++ uniqueDispenser opts ++ " __cont of { (__cont, " ++ getName nm ++ ") -> ") ++ outp ++ h "}"+    h s = [HsToken s noPos]+    finalout us = h ("(__cont, " ++ concat (intersperse "," (map getName us)) ++ ")")+    wrap ref inp = h "case " ++ [AGField _LHS ref noPos Nothing] ++ h " of { __cont | __cont `seq` True -> " ++ inp ++ h "}"++flattenDatas :: DataTypes -> Map NontermIdent (Set NontermIdent)+flattenDatas ds = Map.map flatten ds+  where flatten cs =  Set.fromList [ nt | (_,NT nt _) <- concatMap snd (Map.toList cs)]++reachableFrom :: Map NontermIdent (Set NontermIdent) -> Set NontermIdent -> Set NontermIdent+reachableFrom table nts = reach nts+  where reach nts = let nts' = Set.unions (nts : [ ns  | nt <- Set.toList nts+                                                 , let ns = Map.findWithDefault Set.empty nt table ])+                    in if Set.size nts' > Set.size nts+                          then reach nts'+                          else nts+invert :: Map NontermIdent (Set NontermIdent) -> Map NontermIdent (Set NontermIdent)+invert m = foldr inv Map.empty (Map.toList m)+  where inv (x,ns) m = fold (\n m -> Map.insertWith Set.union n (Set.singleton x) m) m ns++path :: Map NontermIdent (Set NontermIdent) -> NontermIdent -> NontermIdent -> Set NontermIdent+path table from to = let children = Map.findWithDefault Set.empty from table+                         forward  = reachableFrom table children+                         backward = reachableFrom (invert table)+                                                  (Set.singleton to)+                     in  Set.intersection forward backward++pragmaMapUnion :: PragmaMap -> PragmaMap -> PragmaMap+pragmaMapUnion = Map.unionWith (Map.unionWith Set.union)++pragmaMapSingle :: NontermIdent -> ConstructorIdent -> Set Identifier -> PragmaMap+pragmaMapSingle nt con nms = Map.singleton nt (Map.singleton con nms)++orderMapUnion :: AttrOrderMap -> AttrOrderMap -> AttrOrderMap+orderMapUnion = Map.unionWith (Map.unionWith Set.union)++orderMapSingle :: NontermIdent -> ConstructorIdent -> Set Dependency -> AttrOrderMap+orderMapSingle nt con deps = Map.singleton nt (Map.singleton con deps)++mergeParams :: ParamMap -> ParamMap -> ParamMap+mergeParams = Map.unionWith (++)++mergeCtx :: ContextMap -> ContextMap -> ContextMap+mergeCtx+  = Map.unionWith nubconcat+  where nubconcat a b = nub (a ++ b)++mergeDerivings m1 m2 = foldr (\(n,cs) m -> Map.insertWith Set.union n cs m) m2 (Map.toList m1)++merge x y = foldr f y (Map.toList x)+ where f ~(k,v) m = Map.insertWith (Map.union) k v m++checkAttrs allFields nts inherited synthesized decls = foldErrors check decls nts where+  check nt decls | not (nt `Map.member` allFields) = (decls,Seq.single(UndefNont nt))+                 | otherwise = let (inh,syn) = Map.findWithDefault (Map.empty,Map.empty) nt decls+                                   (inh',einh) = checkDuplicates (DupInhAttr nt) inherited   inh+                                   (syn',esyn) = checkDuplicates (DupSynAttr nt) synthesized syn+                               in (Map.insert nt (inh',syn') decls,einh <> esyn)++addSelf name atMap = let (eInh,eSyn) = Map.findWithDefault(Map.empty,Map.empty) name atMap+                     in  Map.insert name (eInh, Map.insert (Ident "self" noPos) (NT _SELF []) eSyn)atMap++makeType :: Set NontermIdent -> Type -> Type+makeType nts tp@(NT x _) | x == _SELF       = tp+                         | Set.member x nts = tp+                         | otherwise        = Haskell (typeToHaskellString Nothing [] tp)+makeType _   tp                             = tp++constructGrammar ::    Set NontermIdent+                    -> ParamMap+                    -> DataTypes+                    -> Map NontermIdent (Attributes, Attributes)+                    -> Map NontermIdent (Map Identifier (String, String, String))+                    -> Derivings+                    -> Set NontermIdent+                    -> Map NontermIdent (Map ConstructorIdent [Rule])+                    -> Map NontermIdent (Map ConstructorIdent [TypeSig])+                    -> Map NontermIdent (Map ConstructorIdent [(Identifier, Type)])+                    -> TypeSyns+                    -> PragmaMap+                    -> AttrOrderMap+                    -> ContextMap+                    -> UniqueMap+                    -> Grammar++constructGrammar nts ntParams gram attrs uses derivings wrappers allrules tsigs allinsts tsyns pragmaMap orderMap contextMap uniqueMap =+   let gr = [ (nt,Map.toList alts) | (nt,alts) <- Map.toList gram]+       nonts = map nont gr+       nont (nt,alts) =  let (inh,syn) = Map.findWithDefault (Map.empty,Map.empty) nt attrs+                             rmap      = Map.findWithDefault Map.empty             nt allrules+                             tsmap     = Map.findWithDefault Map.empty             nt tsigs+                             instsmap  = Map.findWithDefault Map.empty             nt allinsts+                             params    = Map.findWithDefault []                    nt ntParams+                             alt (con,flds) =+                                   let rules = maybe [] id (Map.lookup con rmap)+                                       tsigs = maybe [] id (Map.lookup con tsmap)+                                       insts = maybe [] id (Map.lookup con instsmap)+                                       cldrn = map (child False) flds ++ map (child True) insts+                                       child isVirtual (nm, tp) =+                                          let (inh,syn) = case tp of+                                                 NT nt _ -> Map.findWithDefault (Map.empty,Map.empty) nt attrs+                                                 _       -> (Map.empty,Map.empty)+                                          in Child nm tp inh syn isVirtual+                                   in Production con cldrn rules tsigs+                            in Nonterminal nt params inh syn (map alt alts)+   in Grammar tsyns uses derivings wrappers nonts pragmaMap orderMap ntParams contextMap uniqueMap++mapUnionWithSetUnion = Map.unionWith Set.union+mapUnionWithPlusPlus = Map.unionWith (++)+-- AG ----------------------------------------------------------+{-+   visit 0:+      inherited attribute:+         options              : Options+      synthesized attributes:+         blocks               : Blocks+         errors               : Seq Error+         moduleDecl           : Maybe (String,String,String)+         output               : Grammar+         pragmas              : Options -> Options+   alternatives:+      alternative AG:+         child elems          : Elems+         visit 0:+            local allFields   : _+            local allConstrs  : _+            local allRules    : _+            local allSigs     : _+            local allInsts    : _+            local allUniques  : _+            local allRulesErrs : _+            local allSigsErrs : _+            local allInstsErrs : _+            local allUniquesErrs : _+            local checkedRulesPre : _+            local checkedSigs : _+            local checkedInsts : _+            local checkedUniques : _+            local checkedRules : _+            local errs1       : _+            local errs2       : _+            local errs3       : _+            local errs4       : _+            local errs5       : _+            local errs6       : _+            local errs7       : _+            local allNonterminals : _+            local allAttrDecls : _+-}+-- cata+sem_AG :: AG ->+          T_AG+sem_AG (AG _elems) =+    (sem_AG_AG (sem_Elems _elems))+-- semantic domain+newtype T_AG = T_AG (Options ->+                     ( Blocks,(Seq Error),(Maybe (String,String,String)),Grammar,(Options -> Options)))+data Inh_AG = Inh_AG {options_Inh_AG :: !(Options)}+data Syn_AG = Syn_AG {blocks_Syn_AG :: !(Blocks),errors_Syn_AG :: !(Seq Error),moduleDecl_Syn_AG :: !(Maybe (String,String,String)),output_Syn_AG :: !(Grammar),pragmas_Syn_AG :: !(Options -> Options)}+wrap_AG (T_AG sem) (Inh_AG _lhsIoptions) =+    (let ( _lhsOblocks,_lhsOerrors,_lhsOmoduleDecl,_lhsOoutput,_lhsOpragmas) =+             (sem _lhsIoptions)+     in  (Syn_AG _lhsOblocks _lhsOerrors _lhsOmoduleDecl _lhsOoutput _lhsOpragmas))+sem_AG_AG :: T_Elems ->+             T_AG+sem_AG_AG (T_Elems elems_) =+    (T_AG (\ _lhsIoptions ->+               (let _lhsOoutput :: Grammar+                    _lhsOerrors :: (Seq Error)+                    _elemsOallConstructors :: (Map NontermIdent (Set ConstructorIdent))+                    _elemsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                    _elemsOdefinedSets :: DefinedSets+                    _elemsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                    _lhsOblocks :: Blocks+                    _lhsOmoduleDecl :: (Maybe (String,String,String))+                    _lhsOpragmas :: (Options -> Options)+                    _elemsOallAttrDecls :: (Map NontermIdent (Attributes, Attributes))+                    _elemsOallFields :: DataTypes+                    _elemsOallNonterminals :: (Set NontermIdent)+                    _elemsIattrDecls :: (Map NontermIdent (Attributes, Attributes))+                    _elemsIattrOrderCollect :: AttrOrderMap+                    _elemsIblocks :: Blocks+                    _elemsIcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))+                    _elemsIcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                    _elemsIcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                    _elemsIcollectedNames :: (Set Identifier)+                    _elemsIcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                    _elemsIcollectedSetNames :: (Set Identifier)+                    _elemsIcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                    _elemsIcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                    _elemsIctxCollect :: ContextMap+                    _elemsIdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                    _elemsIderivings :: Derivings+                    _elemsIerrors :: (Seq Error)+                    _elemsImoduleDecl :: (Maybe (String,String,String))+                    _elemsIparamsCollect :: ParamMap+                    _elemsIpragmas :: (Options -> Options)+                    _elemsIsemPragmasCollect :: PragmaMap+                    _elemsItypeSyns :: TypeSyns+                    _elemsIuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                    _elemsIwrappers :: (Set NontermIdent)+                    -- "Transform.ag"(line 49, column 8)+                    _lhsOoutput =+                        constructGrammar _allNonterminals+                                         _elemsIparamsCollect+                                         _allFields+                                         _allAttrDecls+                                         _elemsIuseMap+                                         _elemsIderivings+                                         (if wrappers _lhsIoptions then _allNonterminals     else _elemsIwrappers)+                                         _checkedRules+                                         _checkedSigs+                                         _checkedInsts+                                         _elemsItypeSyns+                                         _elemsIsemPragmasCollect+                                         _elemsIattrOrderCollect+                                         _elemsIctxCollect+                                         _checkedUniques+                    -- "Transform.ag"(line 235, column 10)+                    _allFields =+                        let f (nt,con,fm) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con fm)+                        in  foldr f (Map.empty) _elemsIcollectedFields+                    -- "Transform.ag"(line 238, column 10)+                    _allConstrs =+                        let f (nt,con,_) = Map.insertWith (++) nt [con]+                        in  foldr f (Map.empty) _elemsIcollectedFields+                    -- "Transform.ag"(line 241, column 10)+                    _allRules =+                        let f (nt,con,r) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con [r])+                        in  foldr f (Map.empty) _elemsIcollectedRules+                    -- "Transform.ag"(line 244, column 10)+                    _allSigs =+                        let f (nt,con,t) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con [t])+                            typeof nt r = Map.findWithDefault (Haskell "<unknown>") r $ fst $ Map.findWithDefault (Map.empty,Map.empty) nt _allAttrDecls+                        in  foldr f (Map.empty) ( _elemsIcollectedSigs+                                                ++ [ (nt, con, (ident,typeof nt ref))  | (nt, con, us) <- _elemsIcollectedUniques, (ident,ref) <- us ]+                                                )+                    -- "Transform.ag"(line 250, column 10)+                    _allInsts =+                        let f (nt,con,is) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con is)+                        in  foldr f (Map.empty) _elemsIcollectedInsts+                    -- "Transform.ag"(line 253, column 10)+                    _allUniques =+                        let f (nt,con,us) = Map.insertWith (Map.unionWith (++)) nt (Map.singleton con us)+                        in foldr f (Map.empty) _elemsIcollectedUniques+                    -- "Transform.ag"(line 256, column 10)+                    _allRulesErrs =+                        Map.mapWithKey (Map.mapWithKey . (checkRules _allAttrDecls _allFields _allInsts _allSigs    )) _allRules+                    -- "Transform.ag"(line 257, column 10)+                    _allSigsErrs =+                        Map.mapWithKey (Map.mapWithKey . (checkSigs                                                 )) _allSigs+                    -- "Transform.ag"(line 258, column 10)+                    _allInstsErrs =+                        Map.mapWithKey (Map.mapWithKey . (checkInsts _allNonterminals     _allSigs                  )) _allInsts+                    -- "Transform.ag"(line 259, column 10)+                    _allUniquesErrs =+                        Map.mapWithKey (Map.mapWithKey . (checkUniques _allAttrDecls                                )) _allUniques+                    -- "Transform.ag"(line 261, column 10)+                    _checkedRulesPre =+                        Map.map (Map.map fst) _allRulesErrs+                    -- "Transform.ag"(line 262, column 10)+                    _checkedSigs =+                        Map.map (Map.map fst) _allSigsErrs+                    -- "Transform.ag"(line 263, column 10)+                    _checkedInsts =+                        Map.map (Map.map fst) _allInstsErrs+                    -- "Transform.ag"(line 264, column 10)+                    _checkedUniques =+                        Map.map (Map.map fst) _allUniquesErrs+                    -- "Transform.ag"(line 265, column 10)+                    _checkedRules =+                        Map.unionWith (Map.unionWith (++)) _checkedRulesPre     (Map.mapWithKey (Map.mapWithKey . (mkUniqueRules _lhsIoptions _allFields     _allAttrDecls    )) _checkedUniques    )+                    -- "Transform.ag"(line 267, column 10)+                    _errs1 =+                        let f = checkForDuplicates (DupSynonym)+                        in  Seq.fromList . f . map fst $ _elemsItypeSyns+                    -- "Transform.ag"(line 270, column 10)+                    _errs2 =+                        let g nt (con,fm) = checkForDuplicates (DupChild nt con) (map fst fm)+                            f (nt,cfm)    = concat . map (g nt) . Map.toList $ cfm+                        in  Seq.fromList . concat . map f . Map.toList $ _allFields+                    -- "Transform.ag"(line 274, column 10)+                    _errs3 =+                        let f (nt,cons) = checkForDuplicates (DupAlt nt) cons+                        in   Seq.empty+                    -- "Transform.ag"(line 278, column 10)+                    _errs4 =+                        let  f m s = Map.fold ((<>) . snd) s m+                        in Map.fold f Seq.empty _allRulesErrs+                    -- "Transform.ag"(line 281, column 10)+                    _errs5 =+                        let  f m s = Map.fold ((<>) . snd) s m+                        in Map.fold f Seq.empty _allSigsErrs+                    -- "Transform.ag"(line 284, column 10)+                    _errs6 =+                        let  f m s = Map.fold ((<>) . snd) s m+                        in Map.fold f Seq.empty _allInstsErrs+                    -- "Transform.ag"(line 287, column 10)+                    _errs7 =+                        let  f m s = Map.fold ((<>) . snd) s m+                        in Map.fold f Seq.empty _allUniquesErrs+                    -- "Transform.ag"(line 290, column 10)+                    _lhsOerrors =+                        _elemsIerrors <> _errs1 <> _errs2 <> _errs3 <> _errs4 <> _errs5 <> _errs6 <> _errs7+                    -- "Transform.ag"(line 423, column 10)+                    _allNonterminals =+                        _elemsIcollectedNames `Set.difference` _elemsIcollectedSetNames+                    -- "Transform.ag"(line 443, column 8)+                    _elemsOallConstructors =+                        _elemsIcollectedConstructorsMap+                    -- "Transform.ag"(line 516, column 8)+                    _elemsOdefSets =+                        Map.fromList (map (\x->(x,(Set.singleton x, Set.empty))) (Set.toList _allNonterminals    ))+                    -- "Transform.ag"(line 517, column 8)+                    _elemsOdefinedSets =+                        Map.map fst _elemsIdefSets+                    -- "Transform.ag"(line 761, column 8)+                    _elemsOattrDecls =+                        Map.empty+                    -- "Transform.ag"(line 800, column 9)+                    _allAttrDecls =+                        if withSelf _lhsIoptions+                         then foldr addSelf _elemsIattrDecls (Set.toList _allNonterminals    )+                         else               _elemsIattrDecls+                    -- use rule "Transform.ag"(line 42, column 19)+                    _lhsOblocks =+                        _elemsIblocks+                    -- use rule "Transform.ag"(line 894, column 37)+                    _lhsOmoduleDecl =+                        _elemsImoduleDecl+                    -- use rule "Transform.ag"(line 598, column 34)+                    _lhsOpragmas =+                        _elemsIpragmas+                    -- copy rule (from local)+                    _elemsOallAttrDecls =+                        _allAttrDecls+                    -- copy rule (from local)+                    _elemsOallFields =+                        _allFields+                    -- copy rule (from local)+                    _elemsOallNonterminals =+                        _allNonterminals+                    ( _elemsIattrDecls,_elemsIattrOrderCollect,_elemsIblocks,_elemsIcollectedConstructorsMap,_elemsIcollectedFields,_elemsIcollectedInsts,_elemsIcollectedNames,_elemsIcollectedRules,_elemsIcollectedSetNames,_elemsIcollectedSigs,_elemsIcollectedUniques,_elemsIctxCollect,_elemsIdefSets,_elemsIderivings,_elemsIerrors,_elemsImoduleDecl,_elemsIparamsCollect,_elemsIpragmas,_elemsIsemPragmasCollect,_elemsItypeSyns,_elemsIuseMap,_elemsIwrappers) =+                        (elems_ _elemsOallAttrDecls _elemsOallConstructors _elemsOallFields _elemsOallNonterminals _elemsOattrDecls _elemsOdefSets _elemsOdefinedSets)+                in  ( _lhsOblocks,_lhsOerrors,_lhsOmoduleDecl,_lhsOoutput,_lhsOpragmas))))+-- Alt ---------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         allConstructors      : Map NontermIdent (Set ConstructorIdent)+         allNonterminals      : Set NontermIdent+         nts                  : Set NontermIdent+      synthesized attributes:+         collectedConstructorNames : Set ConstructorIdent+         collectedFields      : [(NontermIdent, ConstructorIdent, FieldMap)]+   alternatives:+      alternative Alt:+         child pos            : {Pos}+         child names          : ConstructorSet+         child fields         : {Fields}+-}+-- cata+sem_Alt :: Alt ->+           T_Alt+sem_Alt (Alt _pos _names _fields) =+    (sem_Alt_Alt _pos (sem_ConstructorSet _names) _fields)+-- semantic domain+newtype T_Alt = T_Alt ((Map NontermIdent (Set ConstructorIdent)) ->+                       (Set NontermIdent) ->+                       (Set NontermIdent) ->+                       ( (Set ConstructorIdent),([(NontermIdent, ConstructorIdent, FieldMap)])))+data Inh_Alt = Inh_Alt {allConstructors_Inh_Alt :: !(Map NontermIdent (Set ConstructorIdent)),allNonterminals_Inh_Alt :: !(Set NontermIdent),nts_Inh_Alt :: !(Set NontermIdent)}+data Syn_Alt = Syn_Alt {collectedConstructorNames_Syn_Alt :: !(Set ConstructorIdent),collectedFields_Syn_Alt :: !([(NontermIdent, ConstructorIdent, FieldMap)])}+wrap_Alt (T_Alt sem) (Inh_Alt _lhsIallConstructors _lhsIallNonterminals _lhsInts) =+    (let ( _lhsOcollectedConstructorNames,_lhsOcollectedFields) =+             (sem _lhsIallConstructors _lhsIallNonterminals _lhsInts)+     in  (Syn_Alt _lhsOcollectedConstructorNames _lhsOcollectedFields))+sem_Alt_Alt :: Pos ->+               T_ConstructorSet ->+               Fields ->+               T_Alt+sem_Alt_Alt pos_ (T_ConstructorSet names_) fields_ =+    (T_Alt (\ _lhsIallConstructors+              _lhsIallNonterminals+              _lhsInts ->+                (let _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                     _lhsOcollectedConstructorNames :: (Set ConstructorIdent)+                     _namesIcollectedConstructorNames :: (Set ConstructorIdent)+                     _namesIconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))+                     _namesIerrors :: (Seq Error)+                     -- "Transform.ag"(line 220, column 10)+                     _lhsOcollectedFields =+                         let fieldTable =+                              [ (attr, makeType _lhsIallNonterminals tp)+                              | (attr, tp) <- fields_+                              ]+                         in   [ (nt, con, fieldTable)+                              | nt  <- Set.toList _lhsInts+                              , con <- Set.toList (_namesIconstructors (Map.findWithDefault Set.empty nt _lhsIallConstructors))+                              ]+                     -- use rule "Transform.ag"(line 87, column 62)+                     _lhsOcollectedConstructorNames =+                         _namesIcollectedConstructorNames+                     ( _namesIcollectedConstructorNames,_namesIconstructors,_namesIerrors) =+                         (names_ )+                 in  ( _lhsOcollectedConstructorNames,_lhsOcollectedFields))))+-- Alts --------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         allConstructors      : Map NontermIdent (Set ConstructorIdent)+         allNonterminals      : Set NontermIdent+         nts                  : Set NontermIdent+      synthesized attributes:+         collectedConstructorNames : Set ConstructorIdent+         collectedFields      : [(NontermIdent, ConstructorIdent, FieldMap)]+   alternatives:+      alternative Cons:+         child hd             : Alt+         child tl             : Alts+      alternative Nil:+-}+-- cata+sem_Alts :: Alts ->+            T_Alts+sem_Alts list =+    (Prelude.foldr sem_Alts_Cons sem_Alts_Nil (Prelude.map sem_Alt list))+-- semantic domain+newtype T_Alts = T_Alts ((Map NontermIdent (Set ConstructorIdent)) ->+                         (Set NontermIdent) ->+                         (Set NontermIdent) ->+                         ( (Set ConstructorIdent),([(NontermIdent, ConstructorIdent, FieldMap)])))+data Inh_Alts = Inh_Alts {allConstructors_Inh_Alts :: !(Map NontermIdent (Set ConstructorIdent)),allNonterminals_Inh_Alts :: !(Set NontermIdent),nts_Inh_Alts :: !(Set NontermIdent)}+data Syn_Alts = Syn_Alts {collectedConstructorNames_Syn_Alts :: !(Set ConstructorIdent),collectedFields_Syn_Alts :: !([(NontermIdent, ConstructorIdent, FieldMap)])}+wrap_Alts (T_Alts sem) (Inh_Alts _lhsIallConstructors _lhsIallNonterminals _lhsInts) =+    (let ( _lhsOcollectedConstructorNames,_lhsOcollectedFields) =+             (sem _lhsIallConstructors _lhsIallNonterminals _lhsInts)+     in  (Syn_Alts _lhsOcollectedConstructorNames _lhsOcollectedFields))+sem_Alts_Cons :: T_Alt ->+                 T_Alts ->+                 T_Alts+sem_Alts_Cons (T_Alt hd_) (T_Alts tl_) =+    (T_Alts (\ _lhsIallConstructors+               _lhsIallNonterminals+               _lhsInts ->+                 (let _lhsOcollectedConstructorNames :: (Set ConstructorIdent)+                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                      _hdOallConstructors :: (Map NontermIdent (Set ConstructorIdent))+                      _hdOallNonterminals :: (Set NontermIdent)+                      _hdOnts :: (Set NontermIdent)+                      _tlOallConstructors :: (Map NontermIdent (Set ConstructorIdent))+                      _tlOallNonterminals :: (Set NontermIdent)+                      _tlOnts :: (Set NontermIdent)+                      _hdIcollectedConstructorNames :: (Set ConstructorIdent)+                      _hdIcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                      _tlIcollectedConstructorNames :: (Set ConstructorIdent)+                      _tlIcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                      -- use rule "Transform.ag"(line 87, column 62)+                      _lhsOcollectedConstructorNames =+                          _hdIcollectedConstructorNames `Set.union` _tlIcollectedConstructorNames+                      -- use rule "Transform.ag"(line 119, column 28)+                      _lhsOcollectedFields =+                          _hdIcollectedFields ++ _tlIcollectedFields+                      -- copy rule (down)+                      _hdOallConstructors =+                          _lhsIallConstructors+                      -- copy rule (down)+                      _hdOallNonterminals =+                          _lhsIallNonterminals+                      -- copy rule (down)+                      _hdOnts =+                          _lhsInts+                      -- copy rule (down)+                      _tlOallConstructors =+                          _lhsIallConstructors+                      -- copy rule (down)+                      _tlOallNonterminals =+                          _lhsIallNonterminals+                      -- copy rule (down)+                      _tlOnts =+                          _lhsInts+                      ( _hdIcollectedConstructorNames,_hdIcollectedFields) =+                          (hd_ _hdOallConstructors _hdOallNonterminals _hdOnts)+                      ( _tlIcollectedConstructorNames,_tlIcollectedFields) =+                          (tl_ _tlOallConstructors _tlOallNonterminals _tlOnts)+                  in  ( _lhsOcollectedConstructorNames,_lhsOcollectedFields))))+sem_Alts_Nil :: T_Alts+sem_Alts_Nil  =+    (T_Alts (\ _lhsIallConstructors+               _lhsIallNonterminals+               _lhsInts ->+                 (let _lhsOcollectedConstructorNames :: (Set ConstructorIdent)+                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                      -- use rule "Transform.ag"(line 87, column 62)+                      _lhsOcollectedConstructorNames =+                          Set.empty+                      -- use rule "Transform.ag"(line 119, column 28)+                      _lhsOcollectedFields =+                          []+                  in  ( _lhsOcollectedConstructorNames,_lhsOcollectedFields))))+-- Attrs -------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         allFields            : DataTypes+         allNonterminals      : Set NontermIdent+         nts                  : Set NontermIdent+      chained attribute:+         attrDecls            : Map NontermIdent (Attributes, Attributes)+      synthesized attributes:+         errors               : Seq Error+         useMap               : Map NontermIdent (Map Identifier (String,String,String))+   alternatives:+      alternative Attrs:+         child pos            : {Pos}+         child inh            : {AttrNames}+         child chn            : {AttrNames}+         child syn            : {AttrNames}+         visit 0:+            local _tup1       : _+            local attrDecls   : _+            local errors      : _+            local _tup2       : _+            local inherited   : _+            local synthesized : _+            local useMap      : _+-}+-- cata+sem_Attrs :: Attrs ->+             T_Attrs+sem_Attrs (Attrs _pos _inh _chn _syn) =+    (sem_Attrs_Attrs _pos _inh _chn _syn)+-- semantic domain+newtype T_Attrs = T_Attrs (DataTypes ->+                           (Set NontermIdent) ->+                           (Map NontermIdent (Attributes, Attributes)) ->+                           (Set NontermIdent) ->+                           ( (Map NontermIdent (Attributes, Attributes)),(Seq Error),(Map NontermIdent (Map Identifier (String,String,String)))))+data Inh_Attrs = Inh_Attrs {allFields_Inh_Attrs :: !(DataTypes),allNonterminals_Inh_Attrs :: !(Set NontermIdent),attrDecls_Inh_Attrs :: !(Map NontermIdent (Attributes, Attributes)),nts_Inh_Attrs :: !(Set NontermIdent)}+data Syn_Attrs = Syn_Attrs {attrDecls_Syn_Attrs :: !(Map NontermIdent (Attributes, Attributes)),errors_Syn_Attrs :: !(Seq Error),useMap_Syn_Attrs :: !(Map NontermIdent (Map Identifier (String,String,String)))}+wrap_Attrs (T_Attrs sem) (Inh_Attrs _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsInts) =+    (let ( _lhsOattrDecls,_lhsOerrors,_lhsOuseMap) =+             (sem _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsInts)+     in  (Syn_Attrs _lhsOattrDecls _lhsOerrors _lhsOuseMap))+sem_Attrs_Attrs :: Pos ->+                   AttrNames ->+                   AttrNames ->+                   AttrNames ->+                   T_Attrs+sem_Attrs_Attrs pos_ inh_ chn_ syn_ =+    (T_Attrs (\ _lhsIallFields+                _lhsIallNonterminals+                _lhsIattrDecls+                _lhsInts ->+                  (let _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                       _lhsOerrors :: (Seq Error)+                       _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                       -- "Transform.ag"(line 769, column 15)+                       __tup1 =+                           checkAttrs _lhsIallFields (Set.toList _lhsInts) _inherited _synthesized _lhsIattrDecls+                       -- "Transform.ag"(line 769, column 15)+                       (_attrDecls,_) =+                           __tup1+                       -- "Transform.ag"(line 769, column 15)+                       (_,_errors) =+                           __tup1+                       -- "Transform.ag"(line 771, column 15)+                       __tup2 =+                           let splitAttrs xs = unzip [ ((n,makeType _lhsIallNonterminals t),(n,ud))+                                                     | (n,t,ud) <- xs+                                                     ]+                               (inh,_)     = splitAttrs inh_+                               (chn,uses1) = splitAttrs chn_+                               (syn,uses2) = splitAttrs syn_+                               isUse (n,(e1,e2,_)) = not (null e1 || null e2)+                           in (inh++chn,chn++syn, Map.fromList (Prelude.filter isUse (uses1++uses2)))+                       -- "Transform.ag"(line 771, column 15)+                       (_inherited,_,_) =+                           __tup2+                       -- "Transform.ag"(line 771, column 15)+                       (_,_synthesized,_) =+                           __tup2+                       -- "Transform.ag"(line 771, column 15)+                       (_,_,_useMap) =+                           __tup2+                       -- "Transform.ag"(line 779, column 11)+                       _lhsOuseMap =+                           Map.fromList (zip (Set.toList _lhsInts) (repeat _useMap))+                       -- use rule "Transform.ag"(line 40, column 19)+                       _lhsOerrors =+                           _errors+                       -- copy rule (from local)+                       _lhsOattrDecls =+                           _attrDecls+                   in  ( _lhsOattrDecls,_lhsOerrors,_lhsOuseMap))))+-- ConstructorSet ----------------------------------------------+{-+   visit 0:+      synthesized attributes:+         collectedConstructorNames : Set ConstructorIdent+         constructors         : (Set ConstructorIdent->Set ConstructorIdent)+         errors               : Seq Error+   alternatives:+      alternative CAll:+      alternative CDifference:+         child set1           : ConstructorSet+         child set2           : ConstructorSet+      alternative CName:+         child name           : {ConstructorIdent}+      alternative CUnion:+         child set1           : ConstructorSet+         child set2           : ConstructorSet+-}+-- cata+sem_ConstructorSet :: ConstructorSet ->+                      T_ConstructorSet+sem_ConstructorSet (CAll ) =+    (sem_ConstructorSet_CAll )+sem_ConstructorSet (CDifference _set1 _set2) =+    (sem_ConstructorSet_CDifference (sem_ConstructorSet _set1) (sem_ConstructorSet _set2))+sem_ConstructorSet (CName _name) =+    (sem_ConstructorSet_CName _name)+sem_ConstructorSet (CUnion _set1 _set2) =+    (sem_ConstructorSet_CUnion (sem_ConstructorSet _set1) (sem_ConstructorSet _set2))+-- semantic domain+newtype T_ConstructorSet = T_ConstructorSet (( (Set ConstructorIdent),((Set ConstructorIdent->Set ConstructorIdent)),(Seq Error)))+data Inh_ConstructorSet = Inh_ConstructorSet {}+data Syn_ConstructorSet = Syn_ConstructorSet {collectedConstructorNames_Syn_ConstructorSet :: !(Set ConstructorIdent),constructors_Syn_ConstructorSet :: !((Set ConstructorIdent->Set ConstructorIdent)),errors_Syn_ConstructorSet :: !(Seq Error)}+wrap_ConstructorSet (T_ConstructorSet sem) (Inh_ConstructorSet ) =+    (let ( _lhsOcollectedConstructorNames,_lhsOconstructors,_lhsOerrors) =+             (sem )+     in  (Syn_ConstructorSet _lhsOcollectedConstructorNames _lhsOconstructors _lhsOerrors))+sem_ConstructorSet_CAll :: T_ConstructorSet+sem_ConstructorSet_CAll  =+    (T_ConstructorSet (let _lhsOconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))+                           _lhsOcollectedConstructorNames :: (Set ConstructorIdent)+                           _lhsOerrors :: (Seq Error)+                           -- "Transform.ag"(line 583, column 17)+                           _lhsOconstructors =+                               \ds -> ds+                           -- use rule "Transform.ag"(line 87, column 62)+                           _lhsOcollectedConstructorNames =+                               Set.empty+                           -- use rule "Transform.ag"(line 40, column 19)+                           _lhsOerrors =+                               Seq.empty+                       in  ( _lhsOcollectedConstructorNames,_lhsOconstructors,_lhsOerrors)))+sem_ConstructorSet_CDifference :: T_ConstructorSet ->+                                  T_ConstructorSet ->+                                  T_ConstructorSet+sem_ConstructorSet_CDifference (T_ConstructorSet set1_) (T_ConstructorSet set2_) =+    (T_ConstructorSet (let _lhsOconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))+                           _lhsOcollectedConstructorNames :: (Set ConstructorIdent)+                           _lhsOerrors :: (Seq Error)+                           _set1IcollectedConstructorNames :: (Set ConstructorIdent)+                           _set1Iconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))+                           _set1Ierrors :: (Seq Error)+                           _set2IcollectedConstructorNames :: (Set ConstructorIdent)+                           _set2Iconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))+                           _set2Ierrors :: (Seq Error)+                           -- "Transform.ag"(line 582, column 17)+                           _lhsOconstructors =+                               \ds -> _set1Iconstructors ds `Set.difference` _set2Iconstructors ds+                           -- use rule "Transform.ag"(line 87, column 62)+                           _lhsOcollectedConstructorNames =+                               _set1IcollectedConstructorNames `Set.union` _set2IcollectedConstructorNames+                           -- use rule "Transform.ag"(line 40, column 19)+                           _lhsOerrors =+                               _set1Ierrors Seq.<> _set2Ierrors+                           ( _set1IcollectedConstructorNames,_set1Iconstructors,_set1Ierrors) =+                               (set1_ )+                           ( _set2IcollectedConstructorNames,_set2Iconstructors,_set2Ierrors) =+                               (set2_ )+                       in  ( _lhsOcollectedConstructorNames,_lhsOconstructors,_lhsOerrors)))+sem_ConstructorSet_CName :: ConstructorIdent ->+                            T_ConstructorSet+sem_ConstructorSet_CName name_ =+    (T_ConstructorSet (let _lhsOcollectedConstructorNames :: (Set ConstructorIdent)+                           _lhsOconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))+                           _lhsOerrors :: (Seq Error)+                           -- "Transform.ag"(line 431, column 11)+                           _lhsOcollectedConstructorNames =+                               Set.singleton name_+                           -- "Transform.ag"(line 580, column 17)+                           _lhsOconstructors =+                               \ds -> Set.singleton name_+                           -- use rule "Transform.ag"(line 40, column 19)+                           _lhsOerrors =+                               Seq.empty+                       in  ( _lhsOcollectedConstructorNames,_lhsOconstructors,_lhsOerrors)))+sem_ConstructorSet_CUnion :: T_ConstructorSet ->+                             T_ConstructorSet ->+                             T_ConstructorSet+sem_ConstructorSet_CUnion (T_ConstructorSet set1_) (T_ConstructorSet set2_) =+    (T_ConstructorSet (let _lhsOconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))+                           _lhsOcollectedConstructorNames :: (Set ConstructorIdent)+                           _lhsOerrors :: (Seq Error)+                           _set1IcollectedConstructorNames :: (Set ConstructorIdent)+                           _set1Iconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))+                           _set1Ierrors :: (Seq Error)+                           _set2IcollectedConstructorNames :: (Set ConstructorIdent)+                           _set2Iconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))+                           _set2Ierrors :: (Seq Error)+                           -- "Transform.ag"(line 581, column 17)+                           _lhsOconstructors =+                               \ds -> _set1Iconstructors ds `Set.union`      _set2Iconstructors ds+                           -- use rule "Transform.ag"(line 87, column 62)+                           _lhsOcollectedConstructorNames =+                               _set1IcollectedConstructorNames `Set.union` _set2IcollectedConstructorNames+                           -- use rule "Transform.ag"(line 40, column 19)+                           _lhsOerrors =+                               _set1Ierrors Seq.<> _set2Ierrors+                           ( _set1IcollectedConstructorNames,_set1Iconstructors,_set1Ierrors) =+                               (set1_ )+                           ( _set2IcollectedConstructorNames,_set2Iconstructors,_set2Ierrors) =+                               (set2_ )+                       in  ( _lhsOcollectedConstructorNames,_lhsOconstructors,_lhsOerrors)))+-- Elem --------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         allAttrDecls         : Map NontermIdent (Attributes, Attributes)+         allConstructors      : Map NontermIdent (Set ConstructorIdent)+         allFields            : DataTypes+         allNonterminals      : Set NontermIdent+         definedSets          : DefinedSets+      chained attributes:+         attrDecls            : Map NontermIdent (Attributes, Attributes)+         defSets              : Map Identifier (Set NontermIdent,Set Identifier)+      synthesized attributes:+         attrOrderCollect     : AttrOrderMap+         blocks               : Blocks+         collectedConstructorsMap : Map NontermIdent (Set ConstructorIdent)+         collectedFields      : [(NontermIdent, ConstructorIdent, FieldMap)]+         collectedInsts       : [ (NontermIdent, ConstructorIdent, [Identifier]) ]+         collectedNames       : Set Identifier+         collectedRules       : [ (NontermIdent, ConstructorIdent, RuleInfo)]+         collectedSetNames    : Set Identifier+         collectedSigs        : [ (NontermIdent, ConstructorIdent, SigInfo) ]+         collectedUniques     : [ (NontermIdent, ConstructorIdent, [UniqueInfo]) ]+         ctxCollect           : ContextMap+         derivings            : Derivings+         errors               : Seq Error+         moduleDecl           : Maybe (String,String,String)+         paramsCollect        : ParamMap+         pragmas              : Options -> Options+         semPragmasCollect    : PragmaMap+         typeSyns             : TypeSyns+         useMap               : Map NontermIdent (Map Identifier (String,String,String))+         wrappers             : Set NontermIdent+   alternatives:+      alternative Attr:+         child pos            : {Pos}+         child ctx            : {ClassContext}+         child names          : NontSet+         child attrs          : Attrs+      alternative Data:+         child pos            : {Pos}+         child ctx            : {ClassContext}+         child names          : NontSet+         child params         : {[Identifier]}+         child attrs          : Attrs+         child alts           : Alts+         child ext            : {Bool}+      alternative Deriving:+         child pos            : {Pos}+         child set            : NontSet+         child classes        : {[NontermIdent]}+      alternative Module:+         child pos            : {Pos}+         child name           : {String}+         child exports        : {String}+         child imports        : {String}+      alternative Pragma:+         child pos            : {Pos}+         child names          : {[NontermIdent]}+      alternative Sem:+         child pos            : {Pos}+         child ctx            : {ClassContext}+         child names          : NontSet+         child attrs          : Attrs+         child alts           : SemAlts+      alternative Set:+         child pos            : {Pos}+         child name           : {NontermIdent}+         child set            : NontSet+         visit 0:+            local _tup3       : _+            local defSets2    : _+            local errs        : _+      alternative Txt:+         child pos            : {Pos}+         child name           : {Identifier}+         child mbNt           : {Maybe NontermIdent}+         child lines          : {[String]}+         visit 0:+            local blockInfo   : _+            local blockValue  : _+      alternative Type:+         child pos            : {Pos}+         child ctx            : {ClassContext}+         child name           : {NontermIdent}+         child params         : {[Identifier]}+         child type           : {ComplexType}+         visit 0:+            local expanded    : _+            local argType     : _+      alternative Wrapper:+         child pos            : {Pos}+         child set            : NontSet+-}+-- cata+sem_Elem :: Elem ->+            T_Elem+sem_Elem (Attr _pos _ctx _names _attrs) =+    (sem_Elem_Attr _pos _ctx (sem_NontSet _names) (sem_Attrs _attrs))+sem_Elem (Data _pos _ctx _names _params _attrs _alts _ext) =+    (sem_Elem_Data _pos _ctx (sem_NontSet _names) _params (sem_Attrs _attrs) (sem_Alts _alts) _ext)+sem_Elem (Deriving _pos _set _classes) =+    (sem_Elem_Deriving _pos (sem_NontSet _set) _classes)+sem_Elem (Module _pos _name _exports _imports) =+    (sem_Elem_Module _pos _name _exports _imports)+sem_Elem (Pragma _pos _names) =+    (sem_Elem_Pragma _pos _names)+sem_Elem (Sem _pos _ctx _names _attrs _alts) =+    (sem_Elem_Sem _pos _ctx (sem_NontSet _names) (sem_Attrs _attrs) (sem_SemAlts _alts))+sem_Elem (Set _pos _name _set) =+    (sem_Elem_Set _pos _name (sem_NontSet _set))+sem_Elem (Txt _pos _name _mbNt _lines) =+    (sem_Elem_Txt _pos _name _mbNt _lines)+sem_Elem (Type _pos _ctx _name _params _type) =+    (sem_Elem_Type _pos _ctx _name _params _type)+sem_Elem (Wrapper _pos _set) =+    (sem_Elem_Wrapper _pos (sem_NontSet _set))+-- semantic domain+newtype T_Elem = T_Elem ((Map NontermIdent (Attributes, Attributes)) ->+                         (Map NontermIdent (Set ConstructorIdent)) ->+                         DataTypes ->+                         (Set NontermIdent) ->+                         (Map NontermIdent (Attributes, Attributes)) ->+                         (Map Identifier (Set NontermIdent,Set Identifier)) ->+                         DefinedSets ->+                         ( (Map NontermIdent (Attributes, Attributes)),AttrOrderMap,Blocks,(Map NontermIdent (Set ConstructorIdent)),([(NontermIdent, ConstructorIdent, FieldMap)]),([ (NontermIdent, ConstructorIdent, [Identifier]) ]),(Set Identifier),([ (NontermIdent, ConstructorIdent, RuleInfo)]),(Set Identifier),([ (NontermIdent, ConstructorIdent, SigInfo) ]),([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ]),ContextMap,(Map Identifier (Set NontermIdent,Set Identifier)),Derivings,(Seq Error),(Maybe (String,String,String)),ParamMap,(Options -> Options),PragmaMap,TypeSyns,(Map NontermIdent (Map Identifier (String,String,String))),(Set NontermIdent)))+data Inh_Elem = Inh_Elem {allAttrDecls_Inh_Elem :: !(Map NontermIdent (Attributes, Attributes)),allConstructors_Inh_Elem :: !(Map NontermIdent (Set ConstructorIdent)),allFields_Inh_Elem :: !(DataTypes),allNonterminals_Inh_Elem :: !(Set NontermIdent),attrDecls_Inh_Elem :: !(Map NontermIdent (Attributes, Attributes)),defSets_Inh_Elem :: !(Map Identifier (Set NontermIdent,Set Identifier)),definedSets_Inh_Elem :: !(DefinedSets)}+data Syn_Elem = Syn_Elem {attrDecls_Syn_Elem :: !(Map NontermIdent (Attributes, Attributes)),attrOrderCollect_Syn_Elem :: !(AttrOrderMap),blocks_Syn_Elem :: !(Blocks),collectedConstructorsMap_Syn_Elem :: !(Map NontermIdent (Set ConstructorIdent)),collectedFields_Syn_Elem :: !([(NontermIdent, ConstructorIdent, FieldMap)]),collectedInsts_Syn_Elem :: !([ (NontermIdent, ConstructorIdent, [Identifier]) ]),collectedNames_Syn_Elem :: !(Set Identifier),collectedRules_Syn_Elem :: !([ (NontermIdent, ConstructorIdent, RuleInfo)]),collectedSetNames_Syn_Elem :: !(Set Identifier),collectedSigs_Syn_Elem :: !([ (NontermIdent, ConstructorIdent, SigInfo) ]),collectedUniques_Syn_Elem :: !([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ]),ctxCollect_Syn_Elem :: !(ContextMap),defSets_Syn_Elem :: !(Map Identifier (Set NontermIdent,Set Identifier)),derivings_Syn_Elem :: !(Derivings),errors_Syn_Elem :: !(Seq Error),moduleDecl_Syn_Elem :: !(Maybe (String,String,String)),paramsCollect_Syn_Elem :: !(ParamMap),pragmas_Syn_Elem :: !(Options -> Options),semPragmasCollect_Syn_Elem :: !(PragmaMap),typeSyns_Syn_Elem :: !(TypeSyns),useMap_Syn_Elem :: !(Map NontermIdent (Map Identifier (String,String,String))),wrappers_Syn_Elem :: !(Set NontermIdent)}+wrap_Elem (T_Elem sem) (Inh_Elem _lhsIallAttrDecls _lhsIallConstructors _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIdefSets _lhsIdefinedSets) =+    (let ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers) =+             (sem _lhsIallAttrDecls _lhsIallConstructors _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIdefSets _lhsIdefinedSets)+     in  (Syn_Elem _lhsOattrDecls _lhsOattrOrderCollect _lhsOblocks _lhsOcollectedConstructorsMap _lhsOcollectedFields _lhsOcollectedInsts _lhsOcollectedNames _lhsOcollectedRules _lhsOcollectedSetNames _lhsOcollectedSigs _lhsOcollectedUniques _lhsOctxCollect _lhsOdefSets _lhsOderivings _lhsOerrors _lhsOmoduleDecl _lhsOparamsCollect _lhsOpragmas _lhsOsemPragmasCollect _lhsOtypeSyns _lhsOuseMap _lhsOwrappers))+sem_Elem_Attr :: Pos ->+                 ClassContext ->+                 T_NontSet ->+                 T_Attrs ->+                 T_Elem+sem_Elem_Attr pos_ ctx_ (T_NontSet names_) (T_Attrs attrs_) =+    (T_Elem (\ _lhsIallAttrDecls+               _lhsIallConstructors+               _lhsIallFields+               _lhsIallNonterminals+               _lhsIattrDecls+               _lhsIdefSets+               _lhsIdefinedSets ->+                 (let _lhsOctxCollect :: ContextMap+                      _attrsOnts :: (Set NontermIdent)+                      _lhsOattrOrderCollect :: AttrOrderMap+                      _lhsOblocks :: Blocks+                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))+                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                      _lhsOcollectedNames :: (Set Identifier)+                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                      _lhsOcollectedSetNames :: (Set Identifier)+                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                      _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                      _lhsOderivings :: Derivings+                      _lhsOerrors :: (Seq Error)+                      _lhsOmoduleDecl :: (Maybe (String,String,String))+                      _lhsOparamsCollect :: ParamMap+                      _lhsOpragmas :: (Options -> Options)+                      _lhsOsemPragmasCollect :: PragmaMap+                      _lhsOtypeSyns :: TypeSyns+                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                      _lhsOwrappers :: (Set NontermIdent)+                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                      _namesOallFields :: DataTypes+                      _namesOallNonterminals :: (Set NontermIdent)+                      _namesOdefinedSets :: DefinedSets+                      _attrsOallFields :: DataTypes+                      _attrsOallNonterminals :: (Set NontermIdent)+                      _attrsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _namesIcollectedNames :: (Set Identifier)+                      _namesIerrors :: (Seq Error)+                      _namesInontSet :: (Set NontermIdent)+                      _attrsIattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _attrsIerrors :: (Seq Error)+                      _attrsIuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                      -- "Transform.ag"(line 721, column 7)+                      _lhsOctxCollect =+                          if null ctx_+                          then Map.empty+                          else Map.fromList [(nt, ctx_) | nt <- Set.toList _namesInontSet]+                      -- "Transform.ag"(line 765, column 10)+                      _attrsOnts =+                          _namesInontSet+                      -- use rule "Transform.ag"(line 662, column 55)+                      _lhsOattrOrderCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 42, column 19)+                      _lhsOblocks =+                          Map.empty+                      -- use rule "Transform.ag"(line 88, column 48)+                      _lhsOcollectedConstructorsMap =+                          Map.empty+                      -- use rule "Transform.ag"(line 119, column 28)+                      _lhsOcollectedFields =+                          []+                      -- use rule "Transform.ag"(line 144, column 31)+                      _lhsOcollectedInsts =+                          []+                      -- use rule "Transform.ag"(line 80, column 50)+                      _lhsOcollectedNames =+                          _namesIcollectedNames+                      -- use rule "Transform.ag"(line 142, column 31)+                      _lhsOcollectedRules =+                          []+                      -- use rule "Transform.ag"(line 79, column 50)+                      _lhsOcollectedSetNames =+                          Set.empty+                      -- use rule "Transform.ag"(line 143, column 31)+                      _lhsOcollectedSigs =+                          []+                      -- use rule "Transform.ag"(line 145, column 31)+                      _lhsOcollectedUniques =+                          []+                      -- use rule "Transform.ag"(line 742, column 33)+                      _lhsOderivings =+                          Map.empty+                      -- use rule "Transform.ag"(line 40, column 19)+                      _lhsOerrors =+                          _namesIerrors Seq.<> _attrsIerrors+                      -- use rule "Transform.ag"(line 894, column 37)+                      _lhsOmoduleDecl =+                          mzero+                      -- use rule "Transform.ag"(line 694, column 37)+                      _lhsOparamsCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 598, column 34)+                      _lhsOpragmas =+                          id+                      -- use rule "Transform.ag"(line 634, column 56)+                      _lhsOsemPragmasCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 458, column 32)+                      _lhsOtypeSyns =+                          []+                      -- use rule "Transform.ag"(line 131, column 15)+                      _lhsOuseMap =+                          _attrsIuseMap+                      -- use rule "Transform.ag"(line 589, column 32)+                      _lhsOwrappers =+                          Set.empty+                      -- copy rule (up)+                      _lhsOattrDecls =+                          _attrsIattrDecls+                      -- copy rule (chain)+                      _lhsOdefSets =+                          _lhsIdefSets+                      -- copy rule (down)+                      _namesOallFields =+                          _lhsIallFields+                      -- copy rule (down)+                      _namesOallNonterminals =+                          _lhsIallNonterminals+                      -- copy rule (down)+                      _namesOdefinedSets =+                          _lhsIdefinedSets+                      -- copy rule (down)+                      _attrsOallFields =+                          _lhsIallFields+                      -- copy rule (down)+                      _attrsOallNonterminals =+                          _lhsIallNonterminals+                      -- copy rule (down)+                      _attrsOattrDecls =+                          _lhsIattrDecls+                      ( _namesIcollectedNames,_namesIerrors,_namesInontSet) =+                          (names_ _namesOallFields _namesOallNonterminals _namesOdefinedSets)+                      ( _attrsIattrDecls,_attrsIerrors,_attrsIuseMap) =+                          (attrs_ _attrsOallFields _attrsOallNonterminals _attrsOattrDecls _attrsOnts)+                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))+sem_Elem_Data :: Pos ->+                 ClassContext ->+                 T_NontSet ->+                 ([Identifier]) ->+                 T_Attrs ->+                 T_Alts ->+                 Bool ->+                 T_Elem+sem_Elem_Data pos_ ctx_ (T_NontSet names_) params_ (T_Attrs attrs_) (T_Alts alts_) ext_ =+    (T_Elem (\ _lhsIallAttrDecls+               _lhsIallConstructors+               _lhsIallFields+               _lhsIallNonterminals+               _lhsIattrDecls+               _lhsIdefSets+               _lhsIdefinedSets ->+                 (let _altsOnts :: (Set NontermIdent)+                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))+                      _lhsOparamsCollect :: ParamMap+                      _lhsOctxCollect :: ContextMap+                      _attrsOnts :: (Set NontermIdent)+                      _lhsOattrOrderCollect :: AttrOrderMap+                      _lhsOblocks :: Blocks+                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                      _lhsOcollectedNames :: (Set Identifier)+                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                      _lhsOcollectedSetNames :: (Set Identifier)+                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                      _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                      _lhsOderivings :: Derivings+                      _lhsOerrors :: (Seq Error)+                      _lhsOmoduleDecl :: (Maybe (String,String,String))+                      _lhsOpragmas :: (Options -> Options)+                      _lhsOsemPragmasCollect :: PragmaMap+                      _lhsOtypeSyns :: TypeSyns+                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                      _lhsOwrappers :: (Set NontermIdent)+                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                      _namesOallFields :: DataTypes+                      _namesOallNonterminals :: (Set NontermIdent)+                      _namesOdefinedSets :: DefinedSets+                      _attrsOallFields :: DataTypes+                      _attrsOallNonterminals :: (Set NontermIdent)+                      _attrsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _altsOallConstructors :: (Map NontermIdent (Set ConstructorIdent))+                      _altsOallNonterminals :: (Set NontermIdent)+                      _namesIcollectedNames :: (Set Identifier)+                      _namesIerrors :: (Seq Error)+                      _namesInontSet :: (Set NontermIdent)+                      _attrsIattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _attrsIerrors :: (Seq Error)+                      _attrsIuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                      _altsIcollectedConstructorNames :: (Set ConstructorIdent)+                      _altsIcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                      -- "Transform.ag"(line 158, column 10)+                      _altsOnts =+                          _namesInontSet+                      -- "Transform.ag"(line 437, column 11)+                      _lhsOcollectedConstructorsMap =+                          Map.fromList+                          [ (n, _altsIcollectedConstructorNames)+                          | n <- Set.toList _namesInontSet+                          ]+                      -- "Transform.ag"(line 698, column 7)+                      _lhsOparamsCollect =+                          if null params_+                          then Map.empty+                          else Map.fromList [(nt, params_) | nt <- Set.toList _namesInontSet]+                      -- "Transform.ag"(line 721, column 7)+                      _lhsOctxCollect =+                          if null ctx_+                          then Map.empty+                          else Map.fromList [(nt, ctx_) | nt <- Set.toList _namesInontSet]+                      -- "Transform.ag"(line 764, column 10)+                      _attrsOnts =+                          _namesInontSet+                      -- use rule "Transform.ag"(line 662, column 55)+                      _lhsOattrOrderCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 42, column 19)+                      _lhsOblocks =+                          Map.empty+                      -- use rule "Transform.ag"(line 119, column 28)+                      _lhsOcollectedFields =+                          _altsIcollectedFields+                      -- use rule "Transform.ag"(line 144, column 31)+                      _lhsOcollectedInsts =+                          []+                      -- use rule "Transform.ag"(line 80, column 50)+                      _lhsOcollectedNames =+                          _namesIcollectedNames+                      -- use rule "Transform.ag"(line 142, column 31)+                      _lhsOcollectedRules =+                          []+                      -- use rule "Transform.ag"(line 79, column 50)+                      _lhsOcollectedSetNames =+                          Set.empty+                      -- use rule "Transform.ag"(line 143, column 31)+                      _lhsOcollectedSigs =+                          []+                      -- use rule "Transform.ag"(line 145, column 31)+                      _lhsOcollectedUniques =+                          []+                      -- use rule "Transform.ag"(line 742, column 33)+                      _lhsOderivings =+                          Map.empty+                      -- use rule "Transform.ag"(line 40, column 19)+                      _lhsOerrors =+                          _namesIerrors Seq.<> _attrsIerrors+                      -- use rule "Transform.ag"(line 894, column 37)+                      _lhsOmoduleDecl =+                          mzero+                      -- use rule "Transform.ag"(line 598, column 34)+                      _lhsOpragmas =+                          id+                      -- use rule "Transform.ag"(line 634, column 56)+                      _lhsOsemPragmasCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 458, column 32)+                      _lhsOtypeSyns =+                          []+                      -- use rule "Transform.ag"(line 131, column 15)+                      _lhsOuseMap =+                          _attrsIuseMap+                      -- use rule "Transform.ag"(line 589, column 32)+                      _lhsOwrappers =+                          Set.empty+                      -- copy rule (up)+                      _lhsOattrDecls =+                          _attrsIattrDecls+                      -- copy rule (chain)+                      _lhsOdefSets =+                          _lhsIdefSets+                      -- copy rule (down)+                      _namesOallFields =+                          _lhsIallFields+                      -- copy rule (down)+                      _namesOallNonterminals =+                          _lhsIallNonterminals+                      -- copy rule (down)+                      _namesOdefinedSets =+                          _lhsIdefinedSets+                      -- copy rule (down)+                      _attrsOallFields =+                          _lhsIallFields+                      -- copy rule (down)+                      _attrsOallNonterminals =+                          _lhsIallNonterminals+                      -- copy rule (down)+                      _attrsOattrDecls =+                          _lhsIattrDecls+                      -- copy rule (down)+                      _altsOallConstructors =+                          _lhsIallConstructors+                      -- copy rule (down)+                      _altsOallNonterminals =+                          _lhsIallNonterminals+                      ( _namesIcollectedNames,_namesIerrors,_namesInontSet) =+                          (names_ _namesOallFields _namesOallNonterminals _namesOdefinedSets)+                      ( _attrsIattrDecls,_attrsIerrors,_attrsIuseMap) =+                          (attrs_ _attrsOallFields _attrsOallNonterminals _attrsOattrDecls _attrsOnts)+                      ( _altsIcollectedConstructorNames,_altsIcollectedFields) =+                          (alts_ _altsOallConstructors _altsOallNonterminals _altsOnts)+                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))+sem_Elem_Deriving :: Pos ->+                     T_NontSet ->+                     ([NontermIdent]) ->+                     T_Elem+sem_Elem_Deriving pos_ (T_NontSet set_) classes_ =+    (T_Elem (\ _lhsIallAttrDecls+               _lhsIallConstructors+               _lhsIallFields+               _lhsIallNonterminals+               _lhsIattrDecls+               _lhsIdefSets+               _lhsIdefinedSets ->+                 (let _lhsOderivings :: Derivings+                      _lhsOattrOrderCollect :: AttrOrderMap+                      _lhsOblocks :: Blocks+                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))+                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                      _lhsOcollectedNames :: (Set Identifier)+                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                      _lhsOcollectedSetNames :: (Set Identifier)+                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                      _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                      _lhsOctxCollect :: ContextMap+                      _lhsOerrors :: (Seq Error)+                      _lhsOmoduleDecl :: (Maybe (String,String,String))+                      _lhsOparamsCollect :: ParamMap+                      _lhsOpragmas :: (Options -> Options)+                      _lhsOsemPragmasCollect :: PragmaMap+                      _lhsOtypeSyns :: TypeSyns+                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                      _lhsOwrappers :: (Set NontermIdent)+                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                      _setOallFields :: DataTypes+                      _setOallNonterminals :: (Set NontermIdent)+                      _setOdefinedSets :: DefinedSets+                      _setIcollectedNames :: (Set Identifier)+                      _setIerrors :: (Seq Error)+                      _setInontSet :: (Set NontermIdent)+                      -- "Transform.ag"(line 749, column 14)+                      _lhsOderivings =+                          Map.fromList [(nt,Set.fromList classes_) | nt <- Set.toList _setInontSet]+                      -- use rule "Transform.ag"(line 662, column 55)+                      _lhsOattrOrderCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 42, column 19)+                      _lhsOblocks =+                          Map.empty+                      -- use rule "Transform.ag"(line 88, column 48)+                      _lhsOcollectedConstructorsMap =+                          Map.empty+                      -- use rule "Transform.ag"(line 119, column 28)+                      _lhsOcollectedFields =+                          []+                      -- use rule "Transform.ag"(line 144, column 31)+                      _lhsOcollectedInsts =+                          []+                      -- use rule "Transform.ag"(line 80, column 50)+                      _lhsOcollectedNames =+                          _setIcollectedNames+                      -- use rule "Transform.ag"(line 142, column 31)+                      _lhsOcollectedRules =+                          []+                      -- use rule "Transform.ag"(line 79, column 50)+                      _lhsOcollectedSetNames =+                          Set.empty+                      -- use rule "Transform.ag"(line 143, column 31)+                      _lhsOcollectedSigs =+                          []+                      -- use rule "Transform.ag"(line 145, column 31)+                      _lhsOcollectedUniques =+                          []+                      -- use rule "Transform.ag"(line 717, column 34)+                      _lhsOctxCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 40, column 19)+                      _lhsOerrors =+                          _setIerrors+                      -- use rule "Transform.ag"(line 894, column 37)+                      _lhsOmoduleDecl =+                          mzero+                      -- use rule "Transform.ag"(line 694, column 37)+                      _lhsOparamsCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 598, column 34)+                      _lhsOpragmas =+                          id+                      -- use rule "Transform.ag"(line 634, column 56)+                      _lhsOsemPragmasCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 458, column 32)+                      _lhsOtypeSyns =+                          []+                      -- use rule "Transform.ag"(line 131, column 15)+                      _lhsOuseMap =+                          Map.empty+                      -- use rule "Transform.ag"(line 589, column 32)+                      _lhsOwrappers =+                          Set.empty+                      -- copy rule (chain)+                      _lhsOattrDecls =+                          _lhsIattrDecls+                      -- copy rule (chain)+                      _lhsOdefSets =+                          _lhsIdefSets+                      -- copy rule (down)+                      _setOallFields =+                          _lhsIallFields+                      -- copy rule (down)+                      _setOallNonterminals =+                          _lhsIallNonterminals+                      -- copy rule (down)+                      _setOdefinedSets =+                          _lhsIdefinedSets+                      ( _setIcollectedNames,_setIerrors,_setInontSet) =+                          (set_ _setOallFields _setOallNonterminals _setOdefinedSets)+                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))+sem_Elem_Module :: Pos ->+                   String ->+                   String ->+                   String ->+                   T_Elem+sem_Elem_Module pos_ name_ exports_ imports_ =+    (T_Elem (\ _lhsIallAttrDecls+               _lhsIallConstructors+               _lhsIallFields+               _lhsIallNonterminals+               _lhsIattrDecls+               _lhsIdefSets+               _lhsIdefinedSets ->+                 (let _lhsOmoduleDecl :: (Maybe (String,String,String))+                      _lhsOattrOrderCollect :: AttrOrderMap+                      _lhsOblocks :: Blocks+                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))+                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                      _lhsOcollectedNames :: (Set Identifier)+                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                      _lhsOcollectedSetNames :: (Set Identifier)+                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                      _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                      _lhsOctxCollect :: ContextMap+                      _lhsOderivings :: Derivings+                      _lhsOerrors :: (Seq Error)+                      _lhsOparamsCollect :: ParamMap+                      _lhsOpragmas :: (Options -> Options)+                      _lhsOsemPragmasCollect :: PragmaMap+                      _lhsOtypeSyns :: TypeSyns+                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                      _lhsOwrappers :: (Set NontermIdent)+                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                      -- "Transform.ag"(line 898, column 7)+                      _lhsOmoduleDecl =+                          Just (name_, exports_, imports_)+                      -- use rule "Transform.ag"(line 662, column 55)+                      _lhsOattrOrderCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 42, column 19)+                      _lhsOblocks =+                          Map.empty+                      -- use rule "Transform.ag"(line 88, column 48)+                      _lhsOcollectedConstructorsMap =+                          Map.empty+                      -- use rule "Transform.ag"(line 119, column 28)+                      _lhsOcollectedFields =+                          []+                      -- use rule "Transform.ag"(line 144, column 31)+                      _lhsOcollectedInsts =+                          []+                      -- use rule "Transform.ag"(line 80, column 50)+                      _lhsOcollectedNames =+                          Set.empty+                      -- use rule "Transform.ag"(line 142, column 31)+                      _lhsOcollectedRules =+                          []+                      -- use rule "Transform.ag"(line 79, column 50)+                      _lhsOcollectedSetNames =+                          Set.empty+                      -- use rule "Transform.ag"(line 143, column 31)+                      _lhsOcollectedSigs =+                          []+                      -- use rule "Transform.ag"(line 145, column 31)+                      _lhsOcollectedUniques =+                          []+                      -- use rule "Transform.ag"(line 717, column 34)+                      _lhsOctxCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 742, column 33)+                      _lhsOderivings =+                          Map.empty+                      -- use rule "Transform.ag"(line 40, column 19)+                      _lhsOerrors =+                          Seq.empty+                      -- use rule "Transform.ag"(line 694, column 37)+                      _lhsOparamsCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 598, column 34)+                      _lhsOpragmas =+                          id+                      -- use rule "Transform.ag"(line 634, column 56)+                      _lhsOsemPragmasCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 458, column 32)+                      _lhsOtypeSyns =+                          []+                      -- use rule "Transform.ag"(line 131, column 15)+                      _lhsOuseMap =+                          Map.empty+                      -- use rule "Transform.ag"(line 589, column 32)+                      _lhsOwrappers =+                          Set.empty+                      -- copy rule (chain)+                      _lhsOattrDecls =+                          _lhsIattrDecls+                      -- copy rule (chain)+                      _lhsOdefSets =+                          _lhsIdefSets+                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))+sem_Elem_Pragma :: Pos ->+                   ([NontermIdent]) ->+                   T_Elem+sem_Elem_Pragma pos_ names_ =+    (T_Elem (\ _lhsIallAttrDecls+               _lhsIallConstructors+               _lhsIallFields+               _lhsIallNonterminals+               _lhsIattrDecls+               _lhsIdefSets+               _lhsIdefinedSets ->+                 (let _lhsOpragmas :: (Options -> Options)+                      _lhsOattrOrderCollect :: AttrOrderMap+                      _lhsOblocks :: Blocks+                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))+                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                      _lhsOcollectedNames :: (Set Identifier)+                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                      _lhsOcollectedSetNames :: (Set Identifier)+                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                      _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                      _lhsOctxCollect :: ContextMap+                      _lhsOderivings :: Derivings+                      _lhsOerrors :: (Seq Error)+                      _lhsOmoduleDecl :: (Maybe (String,String,String))+                      _lhsOparamsCollect :: ParamMap+                      _lhsOsemPragmasCollect :: PragmaMap+                      _lhsOtypeSyns :: TypeSyns+                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                      _lhsOwrappers :: (Set NontermIdent)+                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                      -- "Transform.ag"(line 601, column 13)+                      _lhsOpragmas =+                          let mk n o = case getName n of+                                         "nocycle"      -> o { withCycle   = False }+                                         "cycle"        -> o { withCycle   = True  }+                                         "nostrictdata" -> o { strictData  = False }+                                         "strictdata"   -> o { strictData  = True  }+                                         "nostrictcase" -> o { strictCases = False }+                                         "strictcase"   -> o { strictCases = True  }+                                         "strictercase" -> o { strictCases = True, stricterCases = True }+                                         "nostrictwrap" -> o { strictWrap  = False }+                                         "strictwrap"   -> o { strictWrap  = True  }+                                         "novisit"      -> o { visit       = False }+                                         "visit"        -> o { visit       = True  }+                                         "nocase"       -> o { cases       = False }+                                         "case"         -> o { cases       = True  }+                                         "noseq"        -> o { withSeq     = False }+                                         "seq"          -> o { withSeq     = True  }+                                         "nounbox"      -> o { unbox       = False }+                                         "unbox"        -> o { unbox       = True  }+                                         "bangpats"     -> o { bangpats    = True  }+                                         "nooptimize"   -> o { cases = False , visit = False }+                                         "optimize"     -> o { cases = True  , visit = True  }+                                         "strictsem"    -> o { strictSems = True }+                                         "gentraces"    -> o { genTraces = True }+                                         "genusetraces" -> o { genUseTraces = True }+                                         "splitsems"    -> o { splitSems = True }+                                         "gencostcentres" -> o { genCostCentres = True }+                                         "sepsemmods"   -> o { sepSemMods = True }+                                         "genlinepragmas" -> o { genLinePragmas = True }+                                         "newtypes"       -> o { newtypes = True }+                                         "nonewtypes"     -> o { newtypes = False }+                                         _              -> o+                          in \o -> foldr mk o names_+                      -- use rule "Transform.ag"(line 662, column 55)+                      _lhsOattrOrderCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 42, column 19)+                      _lhsOblocks =+                          Map.empty+                      -- use rule "Transform.ag"(line 88, column 48)+                      _lhsOcollectedConstructorsMap =+                          Map.empty+                      -- use rule "Transform.ag"(line 119, column 28)+                      _lhsOcollectedFields =+                          []+                      -- use rule "Transform.ag"(line 144, column 31)+                      _lhsOcollectedInsts =+                          []+                      -- use rule "Transform.ag"(line 80, column 50)+                      _lhsOcollectedNames =+                          Set.empty+                      -- use rule "Transform.ag"(line 142, column 31)+                      _lhsOcollectedRules =+                          []+                      -- use rule "Transform.ag"(line 79, column 50)+                      _lhsOcollectedSetNames =+                          Set.empty+                      -- use rule "Transform.ag"(line 143, column 31)+                      _lhsOcollectedSigs =+                          []+                      -- use rule "Transform.ag"(line 145, column 31)+                      _lhsOcollectedUniques =+                          []+                      -- use rule "Transform.ag"(line 717, column 34)+                      _lhsOctxCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 742, column 33)+                      _lhsOderivings =+                          Map.empty+                      -- use rule "Transform.ag"(line 40, column 19)+                      _lhsOerrors =+                          Seq.empty+                      -- use rule "Transform.ag"(line 894, column 37)+                      _lhsOmoduleDecl =+                          mzero+                      -- use rule "Transform.ag"(line 694, column 37)+                      _lhsOparamsCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 634, column 56)+                      _lhsOsemPragmasCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 458, column 32)+                      _lhsOtypeSyns =+                          []+                      -- use rule "Transform.ag"(line 131, column 15)+                      _lhsOuseMap =+                          Map.empty+                      -- use rule "Transform.ag"(line 589, column 32)+                      _lhsOwrappers =+                          Set.empty+                      -- copy rule (chain)+                      _lhsOattrDecls =+                          _lhsIattrDecls+                      -- copy rule (chain)+                      _lhsOdefSets =+                          _lhsIdefSets+                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))+sem_Elem_Sem :: Pos ->+                ClassContext ->+                T_NontSet ->+                T_Attrs ->+                T_SemAlts ->+                T_Elem+sem_Elem_Sem pos_ ctx_ (T_NontSet names_) (T_Attrs attrs_) (T_SemAlts alts_) =+    (T_Elem (\ _lhsIallAttrDecls+               _lhsIallConstructors+               _lhsIallFields+               _lhsIallNonterminals+               _lhsIattrDecls+               _lhsIdefSets+               _lhsIdefinedSets ->+                 (let _altsOnts :: (Set NontermIdent)+                      _lhsOctxCollect :: ContextMap+                      _attrsOnts :: (Set NontermIdent)+                      _lhsOattrOrderCollect :: AttrOrderMap+                      _lhsOblocks :: Blocks+                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))+                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                      _lhsOcollectedNames :: (Set Identifier)+                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                      _lhsOcollectedSetNames :: (Set Identifier)+                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                      _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                      _lhsOderivings :: Derivings+                      _lhsOerrors :: (Seq Error)+                      _lhsOmoduleDecl :: (Maybe (String,String,String))+                      _lhsOparamsCollect :: ParamMap+                      _lhsOpragmas :: (Options -> Options)+                      _lhsOsemPragmasCollect :: PragmaMap+                      _lhsOtypeSyns :: TypeSyns+                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                      _lhsOwrappers :: (Set NontermIdent)+                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                      _namesOallFields :: DataTypes+                      _namesOallNonterminals :: (Set NontermIdent)+                      _namesOdefinedSets :: DefinedSets+                      _attrsOallFields :: DataTypes+                      _attrsOallNonterminals :: (Set NontermIdent)+                      _attrsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _altsOallAttrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _altsOallFields :: DataTypes+                      _namesIcollectedNames :: (Set Identifier)+                      _namesIerrors :: (Seq Error)+                      _namesInontSet :: (Set NontermIdent)+                      _attrsIattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _attrsIerrors :: (Seq Error)+                      _attrsIuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                      _altsIattrOrderCollect :: AttrOrderMap+                      _altsIcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                      _altsIcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                      _altsIcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                      _altsIcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                      _altsIerrors :: (Seq Error)+                      _altsIsemPragmasCollect :: PragmaMap+                      -- "Transform.ag"(line 159, column 10)+                      _altsOnts =+                          _namesInontSet+                      -- "Transform.ag"(line 721, column 7)+                      _lhsOctxCollect =+                          if null ctx_+                          then Map.empty+                          else Map.fromList [(nt, ctx_) | nt <- Set.toList _namesInontSet]+                      -- "Transform.ag"(line 766, column 10)+                      _attrsOnts =+                          _namesInontSet+                      -- use rule "Transform.ag"(line 662, column 55)+                      _lhsOattrOrderCollect =+                          _altsIattrOrderCollect+                      -- use rule "Transform.ag"(line 42, column 19)+                      _lhsOblocks =+                          Map.empty+                      -- use rule "Transform.ag"(line 88, column 48)+                      _lhsOcollectedConstructorsMap =+                          Map.empty+                      -- use rule "Transform.ag"(line 119, column 28)+                      _lhsOcollectedFields =+                          []+                      -- use rule "Transform.ag"(line 144, column 31)+                      _lhsOcollectedInsts =+                          _altsIcollectedInsts+                      -- use rule "Transform.ag"(line 80, column 50)+                      _lhsOcollectedNames =+                          _namesIcollectedNames+                      -- use rule "Transform.ag"(line 142, column 31)+                      _lhsOcollectedRules =+                          _altsIcollectedRules+                      -- use rule "Transform.ag"(line 79, column 50)+                      _lhsOcollectedSetNames =+                          Set.empty+                      -- use rule "Transform.ag"(line 143, column 31)+                      _lhsOcollectedSigs =+                          _altsIcollectedSigs+                      -- use rule "Transform.ag"(line 145, column 31)+                      _lhsOcollectedUniques =+                          _altsIcollectedUniques+                      -- use rule "Transform.ag"(line 742, column 33)+                      _lhsOderivings =+                          Map.empty+                      -- use rule "Transform.ag"(line 40, column 19)+                      _lhsOerrors =+                          _namesIerrors Seq.<> _attrsIerrors Seq.<> _altsIerrors+                      -- use rule "Transform.ag"(line 894, column 37)+                      _lhsOmoduleDecl =+                          mzero+                      -- use rule "Transform.ag"(line 694, column 37)+                      _lhsOparamsCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 598, column 34)+                      _lhsOpragmas =+                          id+                      -- use rule "Transform.ag"(line 634, column 56)+                      _lhsOsemPragmasCollect =+                          _altsIsemPragmasCollect+                      -- use rule "Transform.ag"(line 458, column 32)+                      _lhsOtypeSyns =+                          []+                      -- use rule "Transform.ag"(line 131, column 15)+                      _lhsOuseMap =+                          _attrsIuseMap+                      -- use rule "Transform.ag"(line 589, column 32)+                      _lhsOwrappers =+                          Set.empty+                      -- copy rule (up)+                      _lhsOattrDecls =+                          _attrsIattrDecls+                      -- copy rule (chain)+                      _lhsOdefSets =+                          _lhsIdefSets+                      -- copy rule (down)+                      _namesOallFields =+                          _lhsIallFields+                      -- copy rule (down)+                      _namesOallNonterminals =+                          _lhsIallNonterminals+                      -- copy rule (down)+                      _namesOdefinedSets =+                          _lhsIdefinedSets+                      -- copy rule (down)+                      _attrsOallFields =+                          _lhsIallFields+                      -- copy rule (down)+                      _attrsOallNonterminals =+                          _lhsIallNonterminals+                      -- copy rule (down)+                      _attrsOattrDecls =+                          _lhsIattrDecls+                      -- copy rule (down)+                      _altsOallAttrDecls =+                          _lhsIallAttrDecls+                      -- copy rule (down)+                      _altsOallFields =+                          _lhsIallFields+                      ( _namesIcollectedNames,_namesIerrors,_namesInontSet) =+                          (names_ _namesOallFields _namesOallNonterminals _namesOdefinedSets)+                      ( _attrsIattrDecls,_attrsIerrors,_attrsIuseMap) =+                          (attrs_ _attrsOallFields _attrsOallNonterminals _attrsOattrDecls _attrsOnts)+                      ( _altsIattrOrderCollect,_altsIcollectedInsts,_altsIcollectedRules,_altsIcollectedSigs,_altsIcollectedUniques,_altsIerrors,_altsIsemPragmasCollect) =+                          (alts_ _altsOallAttrDecls _altsOallFields _altsOnts)+                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))+sem_Elem_Set :: Pos ->+                NontermIdent ->+                T_NontSet ->+                T_Elem+sem_Elem_Set pos_ name_ (T_NontSet set_) =+    (T_Elem (\ _lhsIallAttrDecls+               _lhsIallConstructors+               _lhsIallFields+               _lhsIallNonterminals+               _lhsIattrDecls+               _lhsIdefSets+               _lhsIdefinedSets ->+                 (let _lhsOcollectedSetNames :: (Set Identifier)+                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                      _lhsOerrors :: (Seq Error)+                      _lhsOattrOrderCollect :: AttrOrderMap+                      _lhsOblocks :: Blocks+                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))+                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                      _lhsOcollectedNames :: (Set Identifier)+                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                      _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                      _lhsOctxCollect :: ContextMap+                      _lhsOderivings :: Derivings+                      _lhsOmoduleDecl :: (Maybe (String,String,String))+                      _lhsOparamsCollect :: ParamMap+                      _lhsOpragmas :: (Options -> Options)+                      _lhsOsemPragmasCollect :: PragmaMap+                      _lhsOtypeSyns :: TypeSyns+                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                      _lhsOwrappers :: (Set NontermIdent)+                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _setOallFields :: DataTypes+                      _setOallNonterminals :: (Set NontermIdent)+                      _setOdefinedSets :: DefinedSets+                      _setIcollectedNames :: (Set Identifier)+                      _setIerrors :: (Seq Error)+                      _setInontSet :: (Set NontermIdent)+                      -- "Transform.ag"(line 414, column 10)+                      _lhsOcollectedSetNames =+                          Set.singleton name_+                      -- "Transform.ag"(line 521, column 13)+                      __tup3 =+                          let allUsedNames = Set.unions [ maybe (Set.singleton n)+                                                                snd+                                                                (Map.lookup n _lhsIdefSets)+                                                        | n <- Set.toList _setIcollectedNames+                                                        ]+                              (nontSet,e1) | Set.member name_ allUsedNames+                                                       = (Set.empty, Seq.single(CyclicSet name_))+                                           | otherwise = (_setInontSet, Seq.empty)+                              (res, e2) = checkDuplicate DupSet  name_ (nontSet,Set.insert name_ allUsedNames) _lhsIdefSets+                          in (res, e1 Seq.<> e2)+                      -- "Transform.ag"(line 521, column 13)+                      (_defSets2,_) =+                          __tup3+                      -- "Transform.ag"(line 521, column 13)+                      (_,_errs) =+                          __tup3+                      -- "Transform.ag"(line 531, column 9)+                      _lhsOdefSets =+                          _defSets2+                      -- "Transform.ag"(line 531, column 9)+                      _lhsOerrors =+                          _errs <> _setIerrors+                      -- use rule "Transform.ag"(line 662, column 55)+                      _lhsOattrOrderCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 42, column 19)+                      _lhsOblocks =+                          Map.empty+                      -- use rule "Transform.ag"(line 88, column 48)+                      _lhsOcollectedConstructorsMap =+                          Map.empty+                      -- use rule "Transform.ag"(line 119, column 28)+                      _lhsOcollectedFields =+                          []+                      -- use rule "Transform.ag"(line 144, column 31)+                      _lhsOcollectedInsts =+                          []+                      -- use rule "Transform.ag"(line 80, column 50)+                      _lhsOcollectedNames =+                          _setIcollectedNames+                      -- use rule "Transform.ag"(line 142, column 31)+                      _lhsOcollectedRules =+                          []+                      -- use rule "Transform.ag"(line 143, column 31)+                      _lhsOcollectedSigs =+                          []+                      -- use rule "Transform.ag"(line 145, column 31)+                      _lhsOcollectedUniques =+                          []+                      -- use rule "Transform.ag"(line 717, column 34)+                      _lhsOctxCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 742, column 33)+                      _lhsOderivings =+                          Map.empty+                      -- use rule "Transform.ag"(line 894, column 37)+                      _lhsOmoduleDecl =+                          mzero+                      -- use rule "Transform.ag"(line 694, column 37)+                      _lhsOparamsCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 598, column 34)+                      _lhsOpragmas =+                          id+                      -- use rule "Transform.ag"(line 634, column 56)+                      _lhsOsemPragmasCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 458, column 32)+                      _lhsOtypeSyns =+                          []+                      -- use rule "Transform.ag"(line 131, column 15)+                      _lhsOuseMap =+                          Map.empty+                      -- use rule "Transform.ag"(line 589, column 32)+                      _lhsOwrappers =+                          Set.empty+                      -- copy rule (chain)+                      _lhsOattrDecls =+                          _lhsIattrDecls+                      -- copy rule (down)+                      _setOallFields =+                          _lhsIallFields+                      -- copy rule (down)+                      _setOallNonterminals =+                          _lhsIallNonterminals+                      -- copy rule (down)+                      _setOdefinedSets =+                          _lhsIdefinedSets+                      ( _setIcollectedNames,_setIerrors,_setInontSet) =+                          (set_ _setOallFields _setOallNonterminals _setOdefinedSets)+                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))+sem_Elem_Txt :: Pos ->+                Identifier ->+                (Maybe NontermIdent) ->+                ([String]) ->+                T_Elem+sem_Elem_Txt pos_ name_ mbNt_ lines_ =+    (T_Elem (\ _lhsIallAttrDecls+               _lhsIallConstructors+               _lhsIallFields+               _lhsIallNonterminals+               _lhsIattrDecls+               _lhsIdefSets+               _lhsIdefinedSets ->+                 (let _lhsOblocks :: Blocks+                      _lhsOattrOrderCollect :: AttrOrderMap+                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))+                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                      _lhsOcollectedNames :: (Set Identifier)+                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                      _lhsOcollectedSetNames :: (Set Identifier)+                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                      _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                      _lhsOctxCollect :: ContextMap+                      _lhsOderivings :: Derivings+                      _lhsOerrors :: (Seq Error)+                      _lhsOmoduleDecl :: (Maybe (String,String,String))+                      _lhsOparamsCollect :: ParamMap+                      _lhsOpragmas :: (Options -> Options)+                      _lhsOsemPragmasCollect :: PragmaMap+                      _lhsOtypeSyns :: TypeSyns+                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                      _lhsOwrappers :: (Set NontermIdent)+                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                      -- "Transform.ag"(line 168, column 10)+                      _blockInfo =+                          ( let nm = getName name_+                            in if nm == "imports"+                               then BlockImport+                               else if nm == "optpragmas"+                                    then BlockPragma+                                    else BlockOther+                          , mbNt_+                          )+                      -- "Transform.ag"(line 176, column 10)+                      _blockValue =+                          [(lines_, pos_)]+                      -- "Transform.ag"(line 177, column 10)+                      _lhsOblocks =+                          Map.singleton _blockInfo     _blockValue+                      -- use rule "Transform.ag"(line 662, column 55)+                      _lhsOattrOrderCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 88, column 48)+                      _lhsOcollectedConstructorsMap =+                          Map.empty+                      -- use rule "Transform.ag"(line 119, column 28)+                      _lhsOcollectedFields =+                          []+                      -- use rule "Transform.ag"(line 144, column 31)+                      _lhsOcollectedInsts =+                          []+                      -- use rule "Transform.ag"(line 80, column 50)+                      _lhsOcollectedNames =+                          Set.empty+                      -- use rule "Transform.ag"(line 142, column 31)+                      _lhsOcollectedRules =+                          []+                      -- use rule "Transform.ag"(line 79, column 50)+                      _lhsOcollectedSetNames =+                          Set.empty+                      -- use rule "Transform.ag"(line 143, column 31)+                      _lhsOcollectedSigs =+                          []+                      -- use rule "Transform.ag"(line 145, column 31)+                      _lhsOcollectedUniques =+                          []+                      -- use rule "Transform.ag"(line 717, column 34)+                      _lhsOctxCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 742, column 33)+                      _lhsOderivings =+                          Map.empty+                      -- use rule "Transform.ag"(line 40, column 19)+                      _lhsOerrors =+                          Seq.empty+                      -- use rule "Transform.ag"(line 894, column 37)+                      _lhsOmoduleDecl =+                          mzero+                      -- use rule "Transform.ag"(line 694, column 37)+                      _lhsOparamsCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 598, column 34)+                      _lhsOpragmas =+                          id+                      -- use rule "Transform.ag"(line 634, column 56)+                      _lhsOsemPragmasCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 458, column 32)+                      _lhsOtypeSyns =+                          []+                      -- use rule "Transform.ag"(line 131, column 15)+                      _lhsOuseMap =+                          Map.empty+                      -- use rule "Transform.ag"(line 589, column 32)+                      _lhsOwrappers =+                          Set.empty+                      -- copy rule (chain)+                      _lhsOattrDecls =+                          _lhsIattrDecls+                      -- copy rule (chain)+                      _lhsOdefSets =+                          _lhsIdefSets+                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))+sem_Elem_Type :: Pos ->+                 ClassContext ->+                 NontermIdent ->+                 ([Identifier]) ->+                 ComplexType ->+                 T_Elem+sem_Elem_Type pos_ ctx_ name_ params_ type_ =+    (T_Elem (\ _lhsIallAttrDecls+               _lhsIallConstructors+               _lhsIallFields+               _lhsIallNonterminals+               _lhsIattrDecls+               _lhsIdefSets+               _lhsIdefinedSets ->+                 (let _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                      _lhsOcollectedNames :: (Set Identifier)+                      _lhsOtypeSyns :: TypeSyns+                      _lhsOparamsCollect :: ParamMap+                      _lhsOctxCollect :: ContextMap+                      _lhsOattrOrderCollect :: AttrOrderMap+                      _lhsOblocks :: Blocks+                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))+                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                      _lhsOcollectedSetNames :: (Set Identifier)+                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                      _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                      _lhsOderivings :: Derivings+                      _lhsOerrors :: (Seq Error)+                      _lhsOmoduleDecl :: (Maybe (String,String,String))+                      _lhsOpragmas :: (Options -> Options)+                      _lhsOsemPragmasCollect :: PragmaMap+                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                      _lhsOwrappers :: (Set NontermIdent)+                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                      -- "Transform.ag"(line 230, column 10)+                      _lhsOcollectedFields =+                          map (\(x,y)->(name_, x, y)) _expanded+                      -- "Transform.ag"(line 417, column 11)+                      _lhsOcollectedNames =+                          Set.singleton name_+                      -- "Transform.ag"(line 471, column 11)+                      _expanded =+                          case _argType of+                                  List tp -> [(Ident "Cons" pos_, [(Ident "hd" pos_, tp)+                                                                  ,(Ident "tl" pos_, NT name_ (map getName params_))+                                                                  ]+                                              )+                                             ,(Ident "Nil" pos_,  [])+                                             ]+                                  Maybe tp -> [(Ident "Just" pos_, [(Ident "just" pos_, tp)+                                                                  ]+                                              )+                                             ,(Ident "Nothing" pos_,  [])+                                             ]+                                  Either tp1 tp2 -> [+                                               (Ident "Left"    pos_,  [(Ident "left"  pos_, tp1) ])+                                             , (Ident "Right"   pos_,  [(Ident "right" pos_, tp2) ])+                                             ]+                                  Map tp1 tp2 -> [ (Ident "Entry" pos_, [ (Ident "key" pos_, tp1)+                                                                        , (Ident "val" pos_, tp2)+                                                                        , (Ident "tl" pos_, NT name_ (map getName params_))+                                                                        ])+                                                 , (Ident "Nil" pos_, [])+                                                 ]+                                  IntMap tp   -> [ (Ident "Entry" pos_, [ (Ident "key" pos_, Haskell "Int")+                                                                        , (Ident "val" pos_, tp)+                                                                        , (Ident "tl" pos_, NT name_ (map getName params_))+                                                                        ])+                                                 , (Ident "Nil" pos_, [])+                                                 ]+                                  Tuple xs -> [(Ident "Tuple" pos_, xs)]+                      -- "Transform.ag"(line 500, column 11)+                      _argType =+                          case type_ of+                           Maybe tp       -> Maybe  (  makeType _lhsIallNonterminals tp)+                           Either tp1 tp2 -> Either (  makeType _lhsIallNonterminals tp1) (makeType _lhsIallNonterminals tp2)+                           List tp        -> List   (  makeType _lhsIallNonterminals tp)+                           Tuple xs       -> Tuple [(f,makeType _lhsIallNonterminals tp) | (f,tp) <- xs]+                           Map tp1 tp2    -> Map    (  makeType _lhsIallNonterminals tp1) (makeType _lhsIallNonterminals tp2)+                           IntMap tp      -> IntMap (  makeType _lhsIallNonterminals tp)+                      -- "Transform.ag"(line 507, column 11)+                      _lhsOtypeSyns =+                          [(name_,_argType)]+                      -- "Transform.ag"(line 704, column 7)+                      _lhsOparamsCollect =+                          if null params_+                          then Map.empty+                          else Map.singleton name_ params_+                      -- "Transform.ag"(line 727, column 7)+                      _lhsOctxCollect =+                          if null ctx_+                          then Map.empty+                          else Map.singleton name_ ctx_+                      -- use rule "Transform.ag"(line 662, column 55)+                      _lhsOattrOrderCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 42, column 19)+                      _lhsOblocks =+                          Map.empty+                      -- use rule "Transform.ag"(line 88, column 48)+                      _lhsOcollectedConstructorsMap =+                          Map.empty+                      -- use rule "Transform.ag"(line 144, column 31)+                      _lhsOcollectedInsts =+                          []+                      -- use rule "Transform.ag"(line 142, column 31)+                      _lhsOcollectedRules =+                          []+                      -- use rule "Transform.ag"(line 79, column 50)+                      _lhsOcollectedSetNames =+                          Set.empty+                      -- use rule "Transform.ag"(line 143, column 31)+                      _lhsOcollectedSigs =+                          []+                      -- use rule "Transform.ag"(line 145, column 31)+                      _lhsOcollectedUniques =+                          []+                      -- use rule "Transform.ag"(line 742, column 33)+                      _lhsOderivings =+                          Map.empty+                      -- use rule "Transform.ag"(line 40, column 19)+                      _lhsOerrors =+                          Seq.empty+                      -- use rule "Transform.ag"(line 894, column 37)+                      _lhsOmoduleDecl =+                          mzero+                      -- use rule "Transform.ag"(line 598, column 34)+                      _lhsOpragmas =+                          id+                      -- use rule "Transform.ag"(line 634, column 56)+                      _lhsOsemPragmasCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 131, column 15)+                      _lhsOuseMap =+                          Map.empty+                      -- use rule "Transform.ag"(line 589, column 32)+                      _lhsOwrappers =+                          Set.empty+                      -- copy rule (chain)+                      _lhsOattrDecls =+                          _lhsIattrDecls+                      -- copy rule (chain)+                      _lhsOdefSets =+                          _lhsIdefSets+                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))+sem_Elem_Wrapper :: Pos ->+                    T_NontSet ->+                    T_Elem+sem_Elem_Wrapper pos_ (T_NontSet set_) =+    (T_Elem (\ _lhsIallAttrDecls+               _lhsIallConstructors+               _lhsIallFields+               _lhsIallNonterminals+               _lhsIattrDecls+               _lhsIdefSets+               _lhsIdefinedSets ->+                 (let _lhsOwrappers :: (Set NontermIdent)+                      _lhsOattrOrderCollect :: AttrOrderMap+                      _lhsOblocks :: Blocks+                      _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))+                      _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                      _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                      _lhsOcollectedNames :: (Set Identifier)+                      _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                      _lhsOcollectedSetNames :: (Set Identifier)+                      _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                      _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                      _lhsOctxCollect :: ContextMap+                      _lhsOderivings :: Derivings+                      _lhsOerrors :: (Seq Error)+                      _lhsOmoduleDecl :: (Maybe (String,String,String))+                      _lhsOparamsCollect :: ParamMap+                      _lhsOpragmas :: (Options -> Options)+                      _lhsOsemPragmasCollect :: PragmaMap+                      _lhsOtypeSyns :: TypeSyns+                      _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                      _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                      _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                      _setOallFields :: DataTypes+                      _setOallNonterminals :: (Set NontermIdent)+                      _setOdefinedSets :: DefinedSets+                      _setIcollectedNames :: (Set Identifier)+                      _setIerrors :: (Seq Error)+                      _setInontSet :: (Set NontermIdent)+                      -- "Transform.ag"(line 592, column 13)+                      _lhsOwrappers =+                          _setInontSet+                      -- use rule "Transform.ag"(line 662, column 55)+                      _lhsOattrOrderCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 42, column 19)+                      _lhsOblocks =+                          Map.empty+                      -- use rule "Transform.ag"(line 88, column 48)+                      _lhsOcollectedConstructorsMap =+                          Map.empty+                      -- use rule "Transform.ag"(line 119, column 28)+                      _lhsOcollectedFields =+                          []+                      -- use rule "Transform.ag"(line 144, column 31)+                      _lhsOcollectedInsts =+                          []+                      -- use rule "Transform.ag"(line 80, column 50)+                      _lhsOcollectedNames =+                          _setIcollectedNames+                      -- use rule "Transform.ag"(line 142, column 31)+                      _lhsOcollectedRules =+                          []+                      -- use rule "Transform.ag"(line 79, column 50)+                      _lhsOcollectedSetNames =+                          Set.empty+                      -- use rule "Transform.ag"(line 143, column 31)+                      _lhsOcollectedSigs =+                          []+                      -- use rule "Transform.ag"(line 145, column 31)+                      _lhsOcollectedUniques =+                          []+                      -- use rule "Transform.ag"(line 717, column 34)+                      _lhsOctxCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 742, column 33)+                      _lhsOderivings =+                          Map.empty+                      -- use rule "Transform.ag"(line 40, column 19)+                      _lhsOerrors =+                          _setIerrors+                      -- use rule "Transform.ag"(line 894, column 37)+                      _lhsOmoduleDecl =+                          mzero+                      -- use rule "Transform.ag"(line 694, column 37)+                      _lhsOparamsCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 598, column 34)+                      _lhsOpragmas =+                          id+                      -- use rule "Transform.ag"(line 634, column 56)+                      _lhsOsemPragmasCollect =+                          Map.empty+                      -- use rule "Transform.ag"(line 458, column 32)+                      _lhsOtypeSyns =+                          []+                      -- use rule "Transform.ag"(line 131, column 15)+                      _lhsOuseMap =+                          Map.empty+                      -- copy rule (chain)+                      _lhsOattrDecls =+                          _lhsIattrDecls+                      -- copy rule (chain)+                      _lhsOdefSets =+                          _lhsIdefSets+                      -- copy rule (down)+                      _setOallFields =+                          _lhsIallFields+                      -- copy rule (down)+                      _setOallNonterminals =+                          _lhsIallNonterminals+                      -- copy rule (down)+                      _setOdefinedSets =+                          _lhsIdefinedSets+                      ( _setIcollectedNames,_setIerrors,_setInontSet) =+                          (set_ _setOallFields _setOallNonterminals _setOdefinedSets)+                  in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))+-- Elems -------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         allAttrDecls         : Map NontermIdent (Attributes, Attributes)+         allConstructors      : Map NontermIdent (Set ConstructorIdent)+         allFields            : DataTypes+         allNonterminals      : Set NontermIdent+         definedSets          : DefinedSets+      chained attributes:+         attrDecls            : Map NontermIdent (Attributes, Attributes)+         defSets              : Map Identifier (Set NontermIdent,Set Identifier)+      synthesized attributes:+         attrOrderCollect     : AttrOrderMap+         blocks               : Blocks+         collectedConstructorsMap : Map NontermIdent (Set ConstructorIdent)+         collectedFields      : [(NontermIdent, ConstructorIdent, FieldMap)]+         collectedInsts       : [ (NontermIdent, ConstructorIdent, [Identifier]) ]+         collectedNames       : Set Identifier+         collectedRules       : [ (NontermIdent, ConstructorIdent, RuleInfo)]+         collectedSetNames    : Set Identifier+         collectedSigs        : [ (NontermIdent, ConstructorIdent, SigInfo) ]+         collectedUniques     : [ (NontermIdent, ConstructorIdent, [UniqueInfo]) ]+         ctxCollect           : ContextMap+         derivings            : Derivings+         errors               : Seq Error+         moduleDecl           : Maybe (String,String,String)+         paramsCollect        : ParamMap+         pragmas              : Options -> Options+         semPragmasCollect    : PragmaMap+         typeSyns             : TypeSyns+         useMap               : Map NontermIdent (Map Identifier (String,String,String))+         wrappers             : Set NontermIdent+   alternatives:+      alternative Cons:+         child hd             : Elem+         child tl             : Elems+      alternative Nil:+-}+-- cata+sem_Elems :: Elems ->+             T_Elems+sem_Elems list =+    (Prelude.foldr sem_Elems_Cons sem_Elems_Nil (Prelude.map sem_Elem list))+-- semantic domain+newtype T_Elems = T_Elems ((Map NontermIdent (Attributes, Attributes)) ->+                           (Map NontermIdent (Set ConstructorIdent)) ->+                           DataTypes ->+                           (Set NontermIdent) ->+                           (Map NontermIdent (Attributes, Attributes)) ->+                           (Map Identifier (Set NontermIdent,Set Identifier)) ->+                           DefinedSets ->+                           ( (Map NontermIdent (Attributes, Attributes)),AttrOrderMap,Blocks,(Map NontermIdent (Set ConstructorIdent)),([(NontermIdent, ConstructorIdent, FieldMap)]),([ (NontermIdent, ConstructorIdent, [Identifier]) ]),(Set Identifier),([ (NontermIdent, ConstructorIdent, RuleInfo)]),(Set Identifier),([ (NontermIdent, ConstructorIdent, SigInfo) ]),([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ]),ContextMap,(Map Identifier (Set NontermIdent,Set Identifier)),Derivings,(Seq Error),(Maybe (String,String,String)),ParamMap,(Options -> Options),PragmaMap,TypeSyns,(Map NontermIdent (Map Identifier (String,String,String))),(Set NontermIdent)))+data Inh_Elems = Inh_Elems {allAttrDecls_Inh_Elems :: !(Map NontermIdent (Attributes, Attributes)),allConstructors_Inh_Elems :: !(Map NontermIdent (Set ConstructorIdent)),allFields_Inh_Elems :: !(DataTypes),allNonterminals_Inh_Elems :: !(Set NontermIdent),attrDecls_Inh_Elems :: !(Map NontermIdent (Attributes, Attributes)),defSets_Inh_Elems :: !(Map Identifier (Set NontermIdent,Set Identifier)),definedSets_Inh_Elems :: !(DefinedSets)}+data Syn_Elems = Syn_Elems {attrDecls_Syn_Elems :: !(Map NontermIdent (Attributes, Attributes)),attrOrderCollect_Syn_Elems :: !(AttrOrderMap),blocks_Syn_Elems :: !(Blocks),collectedConstructorsMap_Syn_Elems :: !(Map NontermIdent (Set ConstructorIdent)),collectedFields_Syn_Elems :: !([(NontermIdent, ConstructorIdent, FieldMap)]),collectedInsts_Syn_Elems :: !([ (NontermIdent, ConstructorIdent, [Identifier]) ]),collectedNames_Syn_Elems :: !(Set Identifier),collectedRules_Syn_Elems :: !([ (NontermIdent, ConstructorIdent, RuleInfo)]),collectedSetNames_Syn_Elems :: !(Set Identifier),collectedSigs_Syn_Elems :: !([ (NontermIdent, ConstructorIdent, SigInfo) ]),collectedUniques_Syn_Elems :: !([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ]),ctxCollect_Syn_Elems :: !(ContextMap),defSets_Syn_Elems :: !(Map Identifier (Set NontermIdent,Set Identifier)),derivings_Syn_Elems :: !(Derivings),errors_Syn_Elems :: !(Seq Error),moduleDecl_Syn_Elems :: !(Maybe (String,String,String)),paramsCollect_Syn_Elems :: !(ParamMap),pragmas_Syn_Elems :: !(Options -> Options),semPragmasCollect_Syn_Elems :: !(PragmaMap),typeSyns_Syn_Elems :: !(TypeSyns),useMap_Syn_Elems :: !(Map NontermIdent (Map Identifier (String,String,String))),wrappers_Syn_Elems :: !(Set NontermIdent)}+wrap_Elems (T_Elems sem) (Inh_Elems _lhsIallAttrDecls _lhsIallConstructors _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIdefSets _lhsIdefinedSets) =+    (let ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers) =+             (sem _lhsIallAttrDecls _lhsIallConstructors _lhsIallFields _lhsIallNonterminals _lhsIattrDecls _lhsIdefSets _lhsIdefinedSets)+     in  (Syn_Elems _lhsOattrDecls _lhsOattrOrderCollect _lhsOblocks _lhsOcollectedConstructorsMap _lhsOcollectedFields _lhsOcollectedInsts _lhsOcollectedNames _lhsOcollectedRules _lhsOcollectedSetNames _lhsOcollectedSigs _lhsOcollectedUniques _lhsOctxCollect _lhsOdefSets _lhsOderivings _lhsOerrors _lhsOmoduleDecl _lhsOparamsCollect _lhsOpragmas _lhsOsemPragmasCollect _lhsOtypeSyns _lhsOuseMap _lhsOwrappers))+sem_Elems_Cons :: T_Elem ->+                  T_Elems ->+                  T_Elems+sem_Elems_Cons (T_Elem hd_) (T_Elems tl_) =+    (T_Elems (\ _lhsIallAttrDecls+                _lhsIallConstructors+                _lhsIallFields+                _lhsIallNonterminals+                _lhsIattrDecls+                _lhsIdefSets+                _lhsIdefinedSets ->+                  (let _lhsOattrOrderCollect :: AttrOrderMap+                       _lhsOblocks :: Blocks+                       _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))+                       _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                       _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                       _lhsOcollectedNames :: (Set Identifier)+                       _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                       _lhsOcollectedSetNames :: (Set Identifier)+                       _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                       _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                       _lhsOctxCollect :: ContextMap+                       _lhsOderivings :: Derivings+                       _lhsOerrors :: (Seq Error)+                       _lhsOmoduleDecl :: (Maybe (String,String,String))+                       _lhsOparamsCollect :: ParamMap+                       _lhsOpragmas :: (Options -> Options)+                       _lhsOsemPragmasCollect :: PragmaMap+                       _lhsOtypeSyns :: TypeSyns+                       _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                       _lhsOwrappers :: (Set NontermIdent)+                       _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                       _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                       _hdOallAttrDecls :: (Map NontermIdent (Attributes, Attributes))+                       _hdOallConstructors :: (Map NontermIdent (Set ConstructorIdent))+                       _hdOallFields :: DataTypes+                       _hdOallNonterminals :: (Set NontermIdent)+                       _hdOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                       _hdOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                       _hdOdefinedSets :: DefinedSets+                       _tlOallAttrDecls :: (Map NontermIdent (Attributes, Attributes))+                       _tlOallConstructors :: (Map NontermIdent (Set ConstructorIdent))+                       _tlOallFields :: DataTypes+                       _tlOallNonterminals :: (Set NontermIdent)+                       _tlOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                       _tlOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                       _tlOdefinedSets :: DefinedSets+                       _hdIattrDecls :: (Map NontermIdent (Attributes, Attributes))+                       _hdIattrOrderCollect :: AttrOrderMap+                       _hdIblocks :: Blocks+                       _hdIcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))+                       _hdIcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                       _hdIcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                       _hdIcollectedNames :: (Set Identifier)+                       _hdIcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                       _hdIcollectedSetNames :: (Set Identifier)+                       _hdIcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                       _hdIcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                       _hdIctxCollect :: ContextMap+                       _hdIdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                       _hdIderivings :: Derivings+                       _hdIerrors :: (Seq Error)+                       _hdImoduleDecl :: (Maybe (String,String,String))+                       _hdIparamsCollect :: ParamMap+                       _hdIpragmas :: (Options -> Options)+                       _hdIsemPragmasCollect :: PragmaMap+                       _hdItypeSyns :: TypeSyns+                       _hdIuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                       _hdIwrappers :: (Set NontermIdent)+                       _tlIattrDecls :: (Map NontermIdent (Attributes, Attributes))+                       _tlIattrOrderCollect :: AttrOrderMap+                       _tlIblocks :: Blocks+                       _tlIcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))+                       _tlIcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                       _tlIcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                       _tlIcollectedNames :: (Set Identifier)+                       _tlIcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                       _tlIcollectedSetNames :: (Set Identifier)+                       _tlIcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                       _tlIcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                       _tlIctxCollect :: ContextMap+                       _tlIdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                       _tlIderivings :: Derivings+                       _tlIerrors :: (Seq Error)+                       _tlImoduleDecl :: (Maybe (String,String,String))+                       _tlIparamsCollect :: ParamMap+                       _tlIpragmas :: (Options -> Options)+                       _tlIsemPragmasCollect :: PragmaMap+                       _tlItypeSyns :: TypeSyns+                       _tlIuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                       _tlIwrappers :: (Set NontermIdent)+                       -- use rule "Transform.ag"(line 662, column 55)+                       _lhsOattrOrderCollect =+                           _hdIattrOrderCollect `orderMapUnion` _tlIattrOrderCollect+                       -- use rule "Transform.ag"(line 42, column 19)+                       _lhsOblocks =+                           _hdIblocks `mapUnionWithPlusPlus` _tlIblocks+                       -- use rule "Transform.ag"(line 88, column 48)+                       _lhsOcollectedConstructorsMap =+                           _hdIcollectedConstructorsMap `mapUnionWithSetUnion` _tlIcollectedConstructorsMap+                       -- use rule "Transform.ag"(line 119, column 28)+                       _lhsOcollectedFields =+                           _hdIcollectedFields ++ _tlIcollectedFields+                       -- use rule "Transform.ag"(line 144, column 31)+                       _lhsOcollectedInsts =+                           _hdIcollectedInsts ++ _tlIcollectedInsts+                       -- use rule "Transform.ag"(line 80, column 50)+                       _lhsOcollectedNames =+                           _hdIcollectedNames `Set.union` _tlIcollectedNames+                       -- use rule "Transform.ag"(line 142, column 31)+                       _lhsOcollectedRules =+                           _hdIcollectedRules ++ _tlIcollectedRules+                       -- use rule "Transform.ag"(line 79, column 50)+                       _lhsOcollectedSetNames =+                           _hdIcollectedSetNames `Set.union` _tlIcollectedSetNames+                       -- use rule "Transform.ag"(line 143, column 31)+                       _lhsOcollectedSigs =+                           _hdIcollectedSigs ++ _tlIcollectedSigs+                       -- use rule "Transform.ag"(line 145, column 31)+                       _lhsOcollectedUniques =+                           _hdIcollectedUniques ++ _tlIcollectedUniques+                       -- use rule "Transform.ag"(line 717, column 34)+                       _lhsOctxCollect =+                           _hdIctxCollect `mergeCtx` _tlIctxCollect+                       -- use rule "Transform.ag"(line 742, column 33)+                       _lhsOderivings =+                           _hdIderivings `mergeDerivings` _tlIderivings+                       -- use rule "Transform.ag"(line 40, column 19)+                       _lhsOerrors =+                           _hdIerrors Seq.<> _tlIerrors+                       -- use rule "Transform.ag"(line 894, column 37)+                       _lhsOmoduleDecl =+                           _hdImoduleDecl `mplus` _tlImoduleDecl+                       -- use rule "Transform.ag"(line 694, column 37)+                       _lhsOparamsCollect =+                           _hdIparamsCollect `mergeParams` _tlIparamsCollect+                       -- use rule "Transform.ag"(line 598, column 34)+                       _lhsOpragmas =+                           _hdIpragmas . _tlIpragmas+                       -- use rule "Transform.ag"(line 634, column 56)+                       _lhsOsemPragmasCollect =+                           _hdIsemPragmasCollect `pragmaMapUnion` _tlIsemPragmasCollect+                       -- use rule "Transform.ag"(line 458, column 32)+                       _lhsOtypeSyns =+                           _hdItypeSyns ++ _tlItypeSyns+                       -- use rule "Transform.ag"(line 131, column 15)+                       _lhsOuseMap =+                           _hdIuseMap `merge` _tlIuseMap+                       -- use rule "Transform.ag"(line 589, column 32)+                       _lhsOwrappers =+                           _hdIwrappers `Set.union` _tlIwrappers+                       -- copy rule (up)+                       _lhsOattrDecls =+                           _tlIattrDecls+                       -- copy rule (up)+                       _lhsOdefSets =+                           _tlIdefSets+                       -- copy rule (down)+                       _hdOallAttrDecls =+                           _lhsIallAttrDecls+                       -- copy rule (down)+                       _hdOallConstructors =+                           _lhsIallConstructors+                       -- copy rule (down)+                       _hdOallFields =+                           _lhsIallFields+                       -- copy rule (down)+                       _hdOallNonterminals =+                           _lhsIallNonterminals+                       -- copy rule (down)+                       _hdOattrDecls =+                           _lhsIattrDecls+                       -- copy rule (down)+                       _hdOdefSets =+                           _lhsIdefSets+                       -- copy rule (down)+                       _hdOdefinedSets =+                           _lhsIdefinedSets+                       -- copy rule (down)+                       _tlOallAttrDecls =+                           _lhsIallAttrDecls+                       -- copy rule (down)+                       _tlOallConstructors =+                           _lhsIallConstructors+                       -- copy rule (down)+                       _tlOallFields =+                           _lhsIallFields+                       -- copy rule (down)+                       _tlOallNonterminals =+                           _lhsIallNonterminals+                       -- copy rule (chain)+                       _tlOattrDecls =+                           _hdIattrDecls+                       -- copy rule (chain)+                       _tlOdefSets =+                           _hdIdefSets+                       -- copy rule (down)+                       _tlOdefinedSets =+                           _lhsIdefinedSets+                       ( _hdIattrDecls,_hdIattrOrderCollect,_hdIblocks,_hdIcollectedConstructorsMap,_hdIcollectedFields,_hdIcollectedInsts,_hdIcollectedNames,_hdIcollectedRules,_hdIcollectedSetNames,_hdIcollectedSigs,_hdIcollectedUniques,_hdIctxCollect,_hdIdefSets,_hdIderivings,_hdIerrors,_hdImoduleDecl,_hdIparamsCollect,_hdIpragmas,_hdIsemPragmasCollect,_hdItypeSyns,_hdIuseMap,_hdIwrappers) =+                           (hd_ _hdOallAttrDecls _hdOallConstructors _hdOallFields _hdOallNonterminals _hdOattrDecls _hdOdefSets _hdOdefinedSets)+                       ( _tlIattrDecls,_tlIattrOrderCollect,_tlIblocks,_tlIcollectedConstructorsMap,_tlIcollectedFields,_tlIcollectedInsts,_tlIcollectedNames,_tlIcollectedRules,_tlIcollectedSetNames,_tlIcollectedSigs,_tlIcollectedUniques,_tlIctxCollect,_tlIdefSets,_tlIderivings,_tlIerrors,_tlImoduleDecl,_tlIparamsCollect,_tlIpragmas,_tlIsemPragmasCollect,_tlItypeSyns,_tlIuseMap,_tlIwrappers) =+                           (tl_ _tlOallAttrDecls _tlOallConstructors _tlOallFields _tlOallNonterminals _tlOattrDecls _tlOdefSets _tlOdefinedSets)+                   in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))+sem_Elems_Nil :: T_Elems+sem_Elems_Nil  =+    (T_Elems (\ _lhsIallAttrDecls+                _lhsIallConstructors+                _lhsIallFields+                _lhsIallNonterminals+                _lhsIattrDecls+                _lhsIdefSets+                _lhsIdefinedSets ->+                  (let _lhsOattrOrderCollect :: AttrOrderMap+                       _lhsOblocks :: Blocks+                       _lhsOcollectedConstructorsMap :: (Map NontermIdent (Set ConstructorIdent))+                       _lhsOcollectedFields :: ([(NontermIdent, ConstructorIdent, FieldMap)])+                       _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                       _lhsOcollectedNames :: (Set Identifier)+                       _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                       _lhsOcollectedSetNames :: (Set Identifier)+                       _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                       _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                       _lhsOctxCollect :: ContextMap+                       _lhsOderivings :: Derivings+                       _lhsOerrors :: (Seq Error)+                       _lhsOmoduleDecl :: (Maybe (String,String,String))+                       _lhsOparamsCollect :: ParamMap+                       _lhsOpragmas :: (Options -> Options)+                       _lhsOsemPragmasCollect :: PragmaMap+                       _lhsOtypeSyns :: TypeSyns+                       _lhsOuseMap :: (Map NontermIdent (Map Identifier (String,String,String)))+                       _lhsOwrappers :: (Set NontermIdent)+                       _lhsOattrDecls :: (Map NontermIdent (Attributes, Attributes))+                       _lhsOdefSets :: (Map Identifier (Set NontermIdent,Set Identifier))+                       -- use rule "Transform.ag"(line 662, column 55)+                       _lhsOattrOrderCollect =+                           Map.empty+                       -- use rule "Transform.ag"(line 42, column 19)+                       _lhsOblocks =+                           Map.empty+                       -- use rule "Transform.ag"(line 88, column 48)+                       _lhsOcollectedConstructorsMap =+                           Map.empty+                       -- use rule "Transform.ag"(line 119, column 28)+                       _lhsOcollectedFields =+                           []+                       -- use rule "Transform.ag"(line 144, column 31)+                       _lhsOcollectedInsts =+                           []+                       -- use rule "Transform.ag"(line 80, column 50)+                       _lhsOcollectedNames =+                           Set.empty+                       -- use rule "Transform.ag"(line 142, column 31)+                       _lhsOcollectedRules =+                           []+                       -- use rule "Transform.ag"(line 79, column 50)+                       _lhsOcollectedSetNames =+                           Set.empty+                       -- use rule "Transform.ag"(line 143, column 31)+                       _lhsOcollectedSigs =+                           []+                       -- use rule "Transform.ag"(line 145, column 31)+                       _lhsOcollectedUniques =+                           []+                       -- use rule "Transform.ag"(line 717, column 34)+                       _lhsOctxCollect =+                           Map.empty+                       -- use rule "Transform.ag"(line 742, column 33)+                       _lhsOderivings =+                           Map.empty+                       -- use rule "Transform.ag"(line 40, column 19)+                       _lhsOerrors =+                           Seq.empty+                       -- use rule "Transform.ag"(line 894, column 37)+                       _lhsOmoduleDecl =+                           mzero+                       -- use rule "Transform.ag"(line 694, column 37)+                       _lhsOparamsCollect =+                           Map.empty+                       -- use rule "Transform.ag"(line 598, column 34)+                       _lhsOpragmas =+                           id+                       -- use rule "Transform.ag"(line 634, column 56)+                       _lhsOsemPragmasCollect =+                           Map.empty+                       -- use rule "Transform.ag"(line 458, column 32)+                       _lhsOtypeSyns =+                           []+                       -- use rule "Transform.ag"(line 131, column 15)+                       _lhsOuseMap =+                           Map.empty+                       -- use rule "Transform.ag"(line 589, column 32)+                       _lhsOwrappers =+                           Set.empty+                       -- copy rule (chain)+                       _lhsOattrDecls =+                           _lhsIattrDecls+                       -- copy rule (chain)+                       _lhsOdefSets =+                           _lhsIdefSets+                   in  ( _lhsOattrDecls,_lhsOattrOrderCollect,_lhsOblocks,_lhsOcollectedConstructorsMap,_lhsOcollectedFields,_lhsOcollectedInsts,_lhsOcollectedNames,_lhsOcollectedRules,_lhsOcollectedSetNames,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOctxCollect,_lhsOdefSets,_lhsOderivings,_lhsOerrors,_lhsOmoduleDecl,_lhsOparamsCollect,_lhsOpragmas,_lhsOsemPragmasCollect,_lhsOtypeSyns,_lhsOuseMap,_lhsOwrappers))))+-- NontSet -----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         allFields            : DataTypes+         allNonterminals      : Set NontermIdent+         definedSets          : DefinedSets+      synthesized attributes:+         collectedNames       : Set Identifier+         errors               : Seq Error+         nontSet              : Set NontermIdent+   alternatives:+      alternative All:+      alternative Difference:+         child set1           : NontSet+         child set2           : NontSet+      alternative Intersect:+         child set1           : NontSet+         child set2           : NontSet+      alternative NamedSet:+         child name           : {NontermIdent}+         visit 0:+            local _tup4       : _+            local nontSet     : _+            local errors      : _+      alternative Path:+         child from           : {NontermIdent}+         child to             : {NontermIdent}+      alternative Union:+         child set1           : NontSet+         child set2           : NontSet+-}+-- cata+sem_NontSet :: NontSet ->+               T_NontSet+sem_NontSet (All ) =+    (sem_NontSet_All )+sem_NontSet (Difference _set1 _set2) =+    (sem_NontSet_Difference (sem_NontSet _set1) (sem_NontSet _set2))+sem_NontSet (Intersect _set1 _set2) =+    (sem_NontSet_Intersect (sem_NontSet _set1) (sem_NontSet _set2))+sem_NontSet (NamedSet _name) =+    (sem_NontSet_NamedSet _name)+sem_NontSet (Path _from _to) =+    (sem_NontSet_Path _from _to)+sem_NontSet (Union _set1 _set2) =+    (sem_NontSet_Union (sem_NontSet _set1) (sem_NontSet _set2))+-- semantic domain+newtype T_NontSet = T_NontSet (DataTypes ->+                               (Set NontermIdent) ->+                               DefinedSets ->+                               ( (Set Identifier),(Seq Error),(Set NontermIdent)))+data Inh_NontSet = Inh_NontSet {allFields_Inh_NontSet :: !(DataTypes),allNonterminals_Inh_NontSet :: !(Set NontermIdent),definedSets_Inh_NontSet :: !(DefinedSets)}+data Syn_NontSet = Syn_NontSet {collectedNames_Syn_NontSet :: !(Set Identifier),errors_Syn_NontSet :: !(Seq Error),nontSet_Syn_NontSet :: !(Set NontermIdent)}+wrap_NontSet (T_NontSet sem) (Inh_NontSet _lhsIallFields _lhsIallNonterminals _lhsIdefinedSets) =+    (let ( _lhsOcollectedNames,_lhsOerrors,_lhsOnontSet) =+             (sem _lhsIallFields _lhsIallNonterminals _lhsIdefinedSets)+     in  (Syn_NontSet _lhsOcollectedNames _lhsOerrors _lhsOnontSet))+sem_NontSet_All :: T_NontSet+sem_NontSet_All  =+    (T_NontSet (\ _lhsIallFields+                  _lhsIallNonterminals+                  _lhsIdefinedSets ->+                    (let _lhsOnontSet :: (Set NontermIdent)+                         _lhsOcollectedNames :: (Set Identifier)+                         _lhsOerrors :: (Seq Error)+                         -- "Transform.ag"(line 535, column 16)+                         _lhsOnontSet =+                             _lhsIallNonterminals+                         -- use rule "Transform.ag"(line 80, column 50)+                         _lhsOcollectedNames =+                             Set.empty+                         -- use rule "Transform.ag"(line 40, column 19)+                         _lhsOerrors =+                             Seq.empty+                     in  ( _lhsOcollectedNames,_lhsOerrors,_lhsOnontSet))))+sem_NontSet_Difference :: T_NontSet ->+                          T_NontSet ->+                          T_NontSet+sem_NontSet_Difference (T_NontSet set1_) (T_NontSet set2_) =+    (T_NontSet (\ _lhsIallFields+                  _lhsIallNonterminals+                  _lhsIdefinedSets ->+                    (let _lhsOnontSet :: (Set NontermIdent)+                         _lhsOcollectedNames :: (Set Identifier)+                         _lhsOerrors :: (Seq Error)+                         _set1OallFields :: DataTypes+                         _set1OallNonterminals :: (Set NontermIdent)+                         _set1OdefinedSets :: DefinedSets+                         _set2OallFields :: DataTypes+                         _set2OallNonterminals :: (Set NontermIdent)+                         _set2OdefinedSets :: DefinedSets+                         _set1IcollectedNames :: (Set Identifier)+                         _set1Ierrors :: (Seq Error)+                         _set1InontSet :: (Set NontermIdent)+                         _set2IcollectedNames :: (Set Identifier)+                         _set2Ierrors :: (Seq Error)+                         _set2InontSet :: (Set NontermIdent)+                         -- "Transform.ag"(line 541, column 16)+                         _lhsOnontSet =+                             Set.difference    _set1InontSet _set2InontSet+                         -- use rule "Transform.ag"(line 80, column 50)+                         _lhsOcollectedNames =+                             _set1IcollectedNames `Set.union` _set2IcollectedNames+                         -- use rule "Transform.ag"(line 40, column 19)+                         _lhsOerrors =+                             _set1Ierrors Seq.<> _set2Ierrors+                         -- copy rule (down)+                         _set1OallFields =+                             _lhsIallFields+                         -- copy rule (down)+                         _set1OallNonterminals =+                             _lhsIallNonterminals+                         -- copy rule (down)+                         _set1OdefinedSets =+                             _lhsIdefinedSets+                         -- copy rule (down)+                         _set2OallFields =+                             _lhsIallFields+                         -- copy rule (down)+                         _set2OallNonterminals =+                             _lhsIallNonterminals+                         -- copy rule (down)+                         _set2OdefinedSets =+                             _lhsIdefinedSets+                         ( _set1IcollectedNames,_set1Ierrors,_set1InontSet) =+                             (set1_ _set1OallFields _set1OallNonterminals _set1OdefinedSets)+                         ( _set2IcollectedNames,_set2Ierrors,_set2InontSet) =+                             (set2_ _set2OallFields _set2OallNonterminals _set2OdefinedSets)+                     in  ( _lhsOcollectedNames,_lhsOerrors,_lhsOnontSet))))+sem_NontSet_Intersect :: T_NontSet ->+                         T_NontSet ->+                         T_NontSet+sem_NontSet_Intersect (T_NontSet set1_) (T_NontSet set2_) =+    (T_NontSet (\ _lhsIallFields+                  _lhsIallNonterminals+                  _lhsIdefinedSets ->+                    (let _lhsOnontSet :: (Set NontermIdent)+                         _lhsOcollectedNames :: (Set Identifier)+                         _lhsOerrors :: (Seq Error)+                         _set1OallFields :: DataTypes+                         _set1OallNonterminals :: (Set NontermIdent)+                         _set1OdefinedSets :: DefinedSets+                         _set2OallFields :: DataTypes+                         _set2OallNonterminals :: (Set NontermIdent)+                         _set2OdefinedSets :: DefinedSets+                         _set1IcollectedNames :: (Set Identifier)+                         _set1Ierrors :: (Seq Error)+                         _set1InontSet :: (Set NontermIdent)+                         _set2IcollectedNames :: (Set Identifier)+                         _set2Ierrors :: (Seq Error)+                         _set2InontSet :: (Set NontermIdent)+                         -- "Transform.ag"(line 540, column 16)+                         _lhsOnontSet =+                             Set.intersection  _set1InontSet _set2InontSet+                         -- use rule "Transform.ag"(line 80, column 50)+                         _lhsOcollectedNames =+                             _set1IcollectedNames `Set.union` _set2IcollectedNames+                         -- use rule "Transform.ag"(line 40, column 19)+                         _lhsOerrors =+                             _set1Ierrors Seq.<> _set2Ierrors+                         -- copy rule (down)+                         _set1OallFields =+                             _lhsIallFields+                         -- copy rule (down)+                         _set1OallNonterminals =+                             _lhsIallNonterminals+                         -- copy rule (down)+                         _set1OdefinedSets =+                             _lhsIdefinedSets+                         -- copy rule (down)+                         _set2OallFields =+                             _lhsIallFields+                         -- copy rule (down)+                         _set2OallNonterminals =+                             _lhsIallNonterminals+                         -- copy rule (down)+                         _set2OdefinedSets =+                             _lhsIdefinedSets+                         ( _set1IcollectedNames,_set1Ierrors,_set1InontSet) =+                             (set1_ _set1OallFields _set1OallNonterminals _set1OdefinedSets)+                         ( _set2IcollectedNames,_set2Ierrors,_set2InontSet) =+                             (set2_ _set2OallFields _set2OallNonterminals _set2OdefinedSets)+                     in  ( _lhsOcollectedNames,_lhsOerrors,_lhsOnontSet))))+sem_NontSet_NamedSet :: NontermIdent ->+                        T_NontSet+sem_NontSet_NamedSet name_ =+    (T_NontSet (\ _lhsIallFields+                  _lhsIallNonterminals+                  _lhsIdefinedSets ->+                    (let _lhsOcollectedNames :: (Set Identifier)+                         _lhsOerrors :: (Seq Error)+                         _lhsOnontSet :: (Set NontermIdent)+                         -- "Transform.ag"(line 420, column 14)+                         _lhsOcollectedNames =+                             Set.singleton name_+                         -- "Transform.ag"(line 536, column 20)+                         __tup4 =+                             case Map.lookup name_ _lhsIdefinedSets of+                                          Nothing  -> (Set.empty, Seq.single (UndefNont name_))+                                          Just set -> (set, Seq.empty)+                         -- "Transform.ag"(line 536, column 20)+                         (_nontSet,_) =+                             __tup4+                         -- "Transform.ag"(line 536, column 20)+                         (_,_errors) =+                             __tup4+                         -- use rule "Transform.ag"(line 40, column 19)+                         _lhsOerrors =+                             _errors+                         -- copy rule (from local)+                         _lhsOnontSet =+                             _nontSet+                     in  ( _lhsOcollectedNames,_lhsOerrors,_lhsOnontSet))))+sem_NontSet_Path :: NontermIdent ->+                    NontermIdent ->+                    T_NontSet+sem_NontSet_Path from_ to_ =+    (T_NontSet (\ _lhsIallFields+                  _lhsIallNonterminals+                  _lhsIdefinedSets ->+                    (let _lhsOnontSet :: (Set NontermIdent)+                         _lhsOerrors :: (Seq Error)+                         _lhsOcollectedNames :: (Set Identifier)+                         -- "Transform.ag"(line 542, column 16)+                         _lhsOnontSet =+                             let table = flattenDatas _lhsIallFields+                             in path table from_ to_+                         -- "Transform.ag"(line 544, column 16)+                         _lhsOerrors =+                             let check name | Set.member name _lhsIallNonterminals+                                                        = Seq.empty+                                            | otherwise = Seq.single (UndefNont name)+                             in check from_ <> check to_+                         -- use rule "Transform.ag"(line 80, column 50)+                         _lhsOcollectedNames =+                             Set.empty+                     in  ( _lhsOcollectedNames,_lhsOerrors,_lhsOnontSet))))+sem_NontSet_Union :: T_NontSet ->+                     T_NontSet ->+                     T_NontSet+sem_NontSet_Union (T_NontSet set1_) (T_NontSet set2_) =+    (T_NontSet (\ _lhsIallFields+                  _lhsIallNonterminals+                  _lhsIdefinedSets ->+                    (let _lhsOnontSet :: (Set NontermIdent)+                         _lhsOcollectedNames :: (Set Identifier)+                         _lhsOerrors :: (Seq Error)+                         _set1OallFields :: DataTypes+                         _set1OallNonterminals :: (Set NontermIdent)+                         _set1OdefinedSets :: DefinedSets+                         _set2OallFields :: DataTypes+                         _set2OallNonterminals :: (Set NontermIdent)+                         _set2OdefinedSets :: DefinedSets+                         _set1IcollectedNames :: (Set Identifier)+                         _set1Ierrors :: (Seq Error)+                         _set1InontSet :: (Set NontermIdent)+                         _set2IcollectedNames :: (Set Identifier)+                         _set2Ierrors :: (Seq Error)+                         _set2InontSet :: (Set NontermIdent)+                         -- "Transform.ag"(line 539, column 16)+                         _lhsOnontSet =+                             Set.union         _set1InontSet _set2InontSet+                         -- use rule "Transform.ag"(line 80, column 50)+                         _lhsOcollectedNames =+                             _set1IcollectedNames `Set.union` _set2IcollectedNames+                         -- use rule "Transform.ag"(line 40, column 19)+                         _lhsOerrors =+                             _set1Ierrors Seq.<> _set2Ierrors+                         -- copy rule (down)+                         _set1OallFields =+                             _lhsIallFields+                         -- copy rule (down)+                         _set1OallNonterminals =+                             _lhsIallNonterminals+                         -- copy rule (down)+                         _set1OdefinedSets =+                             _lhsIdefinedSets+                         -- copy rule (down)+                         _set2OallFields =+                             _lhsIallFields+                         -- copy rule (down)+                         _set2OallNonterminals =+                             _lhsIallNonterminals+                         -- copy rule (down)+                         _set2OdefinedSets =+                             _lhsIdefinedSets+                         ( _set1IcollectedNames,_set1Ierrors,_set1InontSet) =+                             (set1_ _set1OallFields _set1OallNonterminals _set1OdefinedSets)+                         ( _set2IcollectedNames,_set2Ierrors,_set2InontSet) =+                             (set2_ _set2OallFields _set2OallNonterminals _set2OdefinedSets)+                     in  ( _lhsOcollectedNames,_lhsOerrors,_lhsOnontSet))))+-- Pattern -----------------------------------------------------+{-+   visit 0:+      synthesized attributes:+         copy                 : SELF+         definedAttrs         : [AttrName]+         definedInsts         : [Identifier]+         patunder             : [AttrName]->Pattern+         stpos                : Pos+   alternatives:+      alternative Alias:+         child field          : {Identifier}+         child attr           : {Identifier}+         child pat            : Pattern+         child parts          : Patterns+         visit 0:+            local copy        : _+      alternative Constr:+         child name           : {ConstructorIdent}+         child pats           : Patterns+         visit 0:+            local copy        : _+      alternative Irrefutable:+         child pat            : Pattern+         visit 0:+            local copy        : _+      alternative Product:+         child pos            : {Pos}+         child pats           : Patterns+         visit 0:+            local copy        : _+      alternative Underscore:+         child pos            : {Pos}+         visit 0:+            local copy        : _+-}+-- cata+sem_Pattern :: Pattern ->+               T_Pattern+sem_Pattern (Alias _field _attr _pat _parts) =+    (sem_Pattern_Alias _field _attr (sem_Pattern _pat) (sem_Patterns _parts))+sem_Pattern (Constr _name _pats) =+    (sem_Pattern_Constr _name (sem_Patterns _pats))+sem_Pattern (Irrefutable _pat) =+    (sem_Pattern_Irrefutable (sem_Pattern _pat))+sem_Pattern (Product _pos _pats) =+    (sem_Pattern_Product _pos (sem_Patterns _pats))+sem_Pattern (Underscore _pos) =+    (sem_Pattern_Underscore _pos)+-- semantic domain+newtype T_Pattern = T_Pattern (( Pattern,([AttrName]),([Identifier]),([AttrName]->Pattern),Pos))+data Inh_Pattern = Inh_Pattern {}+data Syn_Pattern = Syn_Pattern {copy_Syn_Pattern :: !(Pattern),definedAttrs_Syn_Pattern :: !([AttrName]),definedInsts_Syn_Pattern :: !([Identifier]),patunder_Syn_Pattern :: !([AttrName]->Pattern),stpos_Syn_Pattern :: !(Pos)}+wrap_Pattern (T_Pattern sem) (Inh_Pattern ) =+    (let ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder,_lhsOstpos) =+             (sem )+     in  (Syn_Pattern _lhsOcopy _lhsOdefinedAttrs _lhsOdefinedInsts _lhsOpatunder _lhsOstpos))+sem_Pattern_Alias :: Identifier ->+                     Identifier ->+                     T_Pattern ->+                     T_Patterns ->+                     T_Pattern+sem_Pattern_Alias field_ attr_ (T_Pattern pat_) (T_Patterns parts_) =+    (T_Pattern (let _lhsOdefinedAttrs :: ([AttrName])+                    _lhsOpatunder :: ([AttrName]->Pattern)+                    _lhsOdefinedInsts :: ([Identifier])+                    _lhsOstpos :: Pos+                    _lhsOcopy :: Pattern+                    _patIcopy :: Pattern+                    _patIdefinedAttrs :: ([AttrName])+                    _patIdefinedInsts :: ([Identifier])+                    _patIpatunder :: ([AttrName]->Pattern)+                    _patIstpos :: Pos+                    _partsIcopy :: Patterns+                    _partsIdefinedAttrs :: ([AttrName])+                    _partsIdefinedInsts :: ([Identifier])+                    _partsIpatunder :: ([AttrName]->Patterns)+                    -- "Transform.ag"(line 870, column 11)+                    _lhsOdefinedAttrs =+                        (field_, attr_) : _patIdefinedAttrs+                    -- "Transform.ag"(line 871, column 11)+                    _lhsOpatunder =+                        \us -> if ((field_,attr_) `elem` us) then Underscore noPos else _copy+                    -- "Transform.ag"(line 872, column 11)+                    _lhsOdefinedInsts =+                        (if field_ == _INST then [attr_] else []) ++ _patIdefinedInsts+                    -- "Transform.ag"(line 887, column 16)+                    _lhsOstpos =+                        getPos field_+                    -- self rule+                    _copy =+                        Alias field_ attr_ _patIcopy _partsIcopy+                    -- self rule+                    _lhsOcopy =+                        _copy+                    ( _patIcopy,_patIdefinedAttrs,_patIdefinedInsts,_patIpatunder,_patIstpos) =+                        (pat_ )+                    ( _partsIcopy,_partsIdefinedAttrs,_partsIdefinedInsts,_partsIpatunder) =+                        (parts_ )+                in  ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder,_lhsOstpos)))+sem_Pattern_Constr :: ConstructorIdent ->+                      T_Patterns ->+                      T_Pattern+sem_Pattern_Constr name_ (T_Patterns pats_) =+    (T_Pattern (let _lhsOpatunder :: ([AttrName]->Pattern)+                    _lhsOstpos :: Pos+                    _lhsOdefinedAttrs :: ([AttrName])+                    _lhsOdefinedInsts :: ([Identifier])+                    _lhsOcopy :: Pattern+                    _patsIcopy :: Patterns+                    _patsIdefinedAttrs :: ([AttrName])+                    _patsIdefinedInsts :: ([Identifier])+                    _patsIpatunder :: ([AttrName]->Patterns)+                    -- "Transform.ag"(line 874, column 12)+                    _lhsOpatunder =+                        \us -> Constr name_ (_patsIpatunder us)+                    -- "Transform.ag"(line 885, column 16)+                    _lhsOstpos =+                        getPos name_+                    -- use rule "Transform.ag"(line 865, column 42)+                    _lhsOdefinedAttrs =+                        _patsIdefinedAttrs+                    -- use rule "Transform.ag"(line 864, column 55)+                    _lhsOdefinedInsts =+                        _patsIdefinedInsts+                    -- self rule+                    _copy =+                        Constr name_ _patsIcopy+                    -- self rule+                    _lhsOcopy =+                        _copy+                    ( _patsIcopy,_patsIdefinedAttrs,_patsIdefinedInsts,_patsIpatunder) =+                        (pats_ )+                in  ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder,_lhsOstpos)))+sem_Pattern_Irrefutable :: T_Pattern ->+                           T_Pattern+sem_Pattern_Irrefutable (T_Pattern pat_) =+    (T_Pattern (let _lhsOpatunder :: ([AttrName]->Pattern)+                    _lhsOdefinedAttrs :: ([AttrName])+                    _lhsOdefinedInsts :: ([Identifier])+                    _lhsOcopy :: Pattern+                    _lhsOstpos :: Pos+                    _patIcopy :: Pattern+                    _patIdefinedAttrs :: ([AttrName])+                    _patIdefinedInsts :: ([Identifier])+                    _patIpatunder :: ([AttrName]->Pattern)+                    _patIstpos :: Pos+                    -- "Transform.ag"(line 876, column 17)+                    _lhsOpatunder =+                        \us -> Irrefutable (_patIpatunder us)+                    -- use rule "Transform.ag"(line 865, column 42)+                    _lhsOdefinedAttrs =+                        _patIdefinedAttrs+                    -- use rule "Transform.ag"(line 864, column 55)+                    _lhsOdefinedInsts =+                        _patIdefinedInsts+                    -- self rule+                    _copy =+                        Irrefutable _patIcopy+                    -- self rule+                    _lhsOcopy =+                        _copy+                    -- copy rule (up)+                    _lhsOstpos =+                        _patIstpos+                    ( _patIcopy,_patIdefinedAttrs,_patIdefinedInsts,_patIpatunder,_patIstpos) =+                        (pat_ )+                in  ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder,_lhsOstpos)))+sem_Pattern_Product :: Pos ->+                       T_Patterns ->+                       T_Pattern+sem_Pattern_Product pos_ (T_Patterns pats_) =+    (T_Pattern (let _lhsOpatunder :: ([AttrName]->Pattern)+                    _lhsOstpos :: Pos+                    _lhsOdefinedAttrs :: ([AttrName])+                    _lhsOdefinedInsts :: ([Identifier])+                    _lhsOcopy :: Pattern+                    _patsIcopy :: Patterns+                    _patsIdefinedAttrs :: ([AttrName])+                    _patsIdefinedInsts :: ([Identifier])+                    _patsIpatunder :: ([AttrName]->Patterns)+                    -- "Transform.ag"(line 875, column 13)+                    _lhsOpatunder =+                        \us -> Product pos_ (_patsIpatunder us)+                    -- "Transform.ag"(line 886, column 16)+                    _lhsOstpos =+                        pos_+                    -- use rule "Transform.ag"(line 865, column 42)+                    _lhsOdefinedAttrs =+                        _patsIdefinedAttrs+                    -- use rule "Transform.ag"(line 864, column 55)+                    _lhsOdefinedInsts =+                        _patsIdefinedInsts+                    -- self rule+                    _copy =+                        Product pos_ _patsIcopy+                    -- self rule+                    _lhsOcopy =+                        _copy+                    ( _patsIcopy,_patsIdefinedAttrs,_patsIdefinedInsts,_patsIpatunder) =+                        (pats_ )+                in  ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder,_lhsOstpos)))+sem_Pattern_Underscore :: Pos ->+                          T_Pattern+sem_Pattern_Underscore pos_ =+    (T_Pattern (let _lhsOpatunder :: ([AttrName]->Pattern)+                    _lhsOstpos :: Pos+                    _lhsOdefinedAttrs :: ([AttrName])+                    _lhsOdefinedInsts :: ([Identifier])+                    _lhsOcopy :: Pattern+                    -- "Transform.ag"(line 873, column 16)+                    _lhsOpatunder =+                        \us -> _copy+                    -- "Transform.ag"(line 888, column 16)+                    _lhsOstpos =+                        pos_+                    -- use rule "Transform.ag"(line 865, column 42)+                    _lhsOdefinedAttrs =+                        []+                    -- use rule "Transform.ag"(line 864, column 55)+                    _lhsOdefinedInsts =+                        []+                    -- self rule+                    _copy =+                        Underscore pos_+                    -- self rule+                    _lhsOcopy =+                        _copy+                in  ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder,_lhsOstpos)))+-- Patterns ----------------------------------------------------+{-+   visit 0:+      synthesized attributes:+         copy                 : SELF+         definedAttrs         : [AttrName]+         definedInsts         : [Identifier]+         patunder             : [AttrName]->Patterns+   alternatives:+      alternative Cons:+         child hd             : Pattern+         child tl             : Patterns+         visit 0:+            local copy        : _+      alternative Nil:+         visit 0:+            local copy        : _+-}+-- cata+sem_Patterns :: Patterns ->+                T_Patterns+sem_Patterns list =+    (Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list))+-- semantic domain+newtype T_Patterns = T_Patterns (( Patterns,([AttrName]),([Identifier]),([AttrName]->Patterns)))+data Inh_Patterns = Inh_Patterns {}+data Syn_Patterns = Syn_Patterns {copy_Syn_Patterns :: !(Patterns),definedAttrs_Syn_Patterns :: !([AttrName]),definedInsts_Syn_Patterns :: !([Identifier]),patunder_Syn_Patterns :: !([AttrName]->Patterns)}+wrap_Patterns (T_Patterns sem) (Inh_Patterns ) =+    (let ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder) =+             (sem )+     in  (Syn_Patterns _lhsOcopy _lhsOdefinedAttrs _lhsOdefinedInsts _lhsOpatunder))+sem_Patterns_Cons :: T_Pattern ->+                     T_Patterns ->+                     T_Patterns+sem_Patterns_Cons (T_Pattern hd_) (T_Patterns tl_) =+    (T_Patterns (let _lhsOpatunder :: ([AttrName]->Patterns)+                     _lhsOdefinedAttrs :: ([AttrName])+                     _lhsOdefinedInsts :: ([Identifier])+                     _lhsOcopy :: Patterns+                     _hdIcopy :: Pattern+                     _hdIdefinedAttrs :: ([AttrName])+                     _hdIdefinedInsts :: ([Identifier])+                     _hdIpatunder :: ([AttrName]->Pattern)+                     _hdIstpos :: Pos+                     _tlIcopy :: Patterns+                     _tlIdefinedAttrs :: ([AttrName])+                     _tlIdefinedInsts :: ([Identifier])+                     _tlIpatunder :: ([AttrName]->Patterns)+                     -- "Transform.ag"(line 880, column 10)+                     _lhsOpatunder =+                         \us -> (_hdIpatunder us) : (_tlIpatunder us)+                     -- use rule "Transform.ag"(line 865, column 42)+                     _lhsOdefinedAttrs =+                         _hdIdefinedAttrs ++ _tlIdefinedAttrs+                     -- use rule "Transform.ag"(line 864, column 55)+                     _lhsOdefinedInsts =+                         _hdIdefinedInsts ++ _tlIdefinedInsts+                     -- self rule+                     _copy =+                         (:) _hdIcopy _tlIcopy+                     -- self rule+                     _lhsOcopy =+                         _copy+                     ( _hdIcopy,_hdIdefinedAttrs,_hdIdefinedInsts,_hdIpatunder,_hdIstpos) =+                         (hd_ )+                     ( _tlIcopy,_tlIdefinedAttrs,_tlIdefinedInsts,_tlIpatunder) =+                         (tl_ )+                 in  ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder)))+sem_Patterns_Nil :: T_Patterns+sem_Patterns_Nil  =+    (T_Patterns (let _lhsOpatunder :: ([AttrName]->Patterns)+                     _lhsOdefinedAttrs :: ([AttrName])+                     _lhsOdefinedInsts :: ([Identifier])+                     _lhsOcopy :: Patterns+                     -- "Transform.ag"(line 879, column 9)+                     _lhsOpatunder =+                         \us ->  []+                     -- use rule "Transform.ag"(line 865, column 42)+                     _lhsOdefinedAttrs =+                         []+                     -- use rule "Transform.ag"(line 864, column 55)+                     _lhsOdefinedInsts =+                         []+                     -- self rule+                     _copy =+                         []+                     -- self rule+                     _lhsOcopy =+                         _copy+                 in  ( _lhsOcopy,_lhsOdefinedAttrs,_lhsOdefinedInsts,_lhsOpatunder)))+-- SemAlt ------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         allAttrDecls         : Map NontermIdent (Attributes, Attributes)+         allFields            : DataTypes+         nts                  : Set NontermIdent+      synthesized attributes:+         attrOrderCollect     : AttrOrderMap+         collectedInsts       : [ (NontermIdent, ConstructorIdent, [Identifier]) ]+         collectedRules       : [ (NontermIdent, ConstructorIdent, RuleInfo)]+         collectedSigs        : [ (NontermIdent, ConstructorIdent, SigInfo) ]+         collectedUniques     : [ (NontermIdent, ConstructorIdent, [UniqueInfo]) ]+         errors               : Seq Error+         semPragmasCollect    : PragmaMap+   alternatives:+      alternative SemAlt:+         child pos            : {Pos}+         child constructorSet : ConstructorSet+         child rules          : SemDefs+         visit 0:+            local pragmaNames : _+            local attrOrders  : _+            local coninfo     : _+-}+-- cata+sem_SemAlt :: SemAlt ->+              T_SemAlt+sem_SemAlt (SemAlt _pos _constructorSet _rules) =+    (sem_SemAlt_SemAlt _pos (sem_ConstructorSet _constructorSet) (sem_SemDefs _rules))+-- semantic domain+newtype T_SemAlt = T_SemAlt ((Map NontermIdent (Attributes, Attributes)) ->+                             DataTypes ->+                             (Set NontermIdent) ->+                             ( AttrOrderMap,([ (NontermIdent, ConstructorIdent, [Identifier]) ]),([ (NontermIdent, ConstructorIdent, RuleInfo)]),([ (NontermIdent, ConstructorIdent, SigInfo) ]),([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ]),(Seq Error),PragmaMap))+data Inh_SemAlt = Inh_SemAlt {allAttrDecls_Inh_SemAlt :: !(Map NontermIdent (Attributes, Attributes)),allFields_Inh_SemAlt :: !(DataTypes),nts_Inh_SemAlt :: !(Set NontermIdent)}+data Syn_SemAlt = Syn_SemAlt {attrOrderCollect_Syn_SemAlt :: !(AttrOrderMap),collectedInsts_Syn_SemAlt :: !([ (NontermIdent, ConstructorIdent, [Identifier]) ]),collectedRules_Syn_SemAlt :: !([ (NontermIdent, ConstructorIdent, RuleInfo)]),collectedSigs_Syn_SemAlt :: !([ (NontermIdent, ConstructorIdent, SigInfo) ]),collectedUniques_Syn_SemAlt :: !([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ]),errors_Syn_SemAlt :: !(Seq Error),semPragmasCollect_Syn_SemAlt :: !(PragmaMap)}+wrap_SemAlt (T_SemAlt sem) (Inh_SemAlt _lhsIallAttrDecls _lhsIallFields _lhsInts) =+    (let ( _lhsOattrOrderCollect,_lhsOcollectedInsts,_lhsOcollectedRules,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOerrors,_lhsOsemPragmasCollect) =+             (sem _lhsIallAttrDecls _lhsIallFields _lhsInts)+     in  (Syn_SemAlt _lhsOattrOrderCollect _lhsOcollectedInsts _lhsOcollectedRules _lhsOcollectedSigs _lhsOcollectedUniques _lhsOerrors _lhsOsemPragmasCollect))+sem_SemAlt_SemAlt :: Pos ->+                     T_ConstructorSet ->+                     T_SemDefs ->+                     T_SemAlt+sem_SemAlt_SemAlt pos_ (T_ConstructorSet constructorSet_) (T_SemDefs rules_) =+    (T_SemAlt (\ _lhsIallAttrDecls+                 _lhsIallFields+                 _lhsInts ->+                   (let _lhsOsemPragmasCollect :: PragmaMap+                        _lhsOattrOrderCollect :: AttrOrderMap+                        _lhsOerrors :: (Seq Error)+                        _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                        _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                        _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                        _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                        _constructorSetIcollectedConstructorNames :: (Set ConstructorIdent)+                        _constructorSetIconstructors :: ((Set ConstructorIdent->Set ConstructorIdent))+                        _constructorSetIerrors :: (Seq Error)+                        _rulesIdefinedInsts :: ([Identifier])+                        _rulesIorderDepsCollect :: (Set Dependency)+                        _rulesIpragmaNamesCollect :: ([Identifier])+                        _rulesIruleInfos :: ([RuleInfo])+                        _rulesIsigInfos :: ([SigInfo])+                        _rulesIuniqueInfos :: ([UniqueInfo])+                        -- "Transform.ag"(line 638, column 7)+                        _pragmaNames =+                            Set.fromList _rulesIpragmaNamesCollect+                        -- "Transform.ag"(line 639, column 7)+                        _lhsOsemPragmasCollect =+                            foldr pragmaMapUnion Map.empty [ pragmaMapSingle nt con _pragmaNames+                                                           | (nt, conset, _) <- _coninfo+                                                           , con <- Set.toList conset+                                                           ]+                        -- "Transform.ag"(line 667, column 7)+                        _attrOrders =+                            [ orderMapSingle nt con _rulesIorderDepsCollect+                            | (nt, conset, _) <- _coninfo+                            , con <- Set.toList conset+                            ]+                        -- "Transform.ag"(line 673, column 7)+                        _lhsOattrOrderCollect =+                            foldr orderMapUnion Map.empty _attrOrders+                        -- "Transform.ag"(line 816, column 12)+                        _coninfo =+                            [ (nt, conset, conkeys)+                            | nt  <- Set.toList _lhsInts+                            , let conmap = Map.findWithDefault Map.empty nt _lhsIallFields+                            , let conkeys = Set.fromList (Map.keys conmap)+                            , let conset  = _constructorSetIconstructors conkeys+                            ]+                        -- "Transform.ag"(line 823, column 12)+                        _lhsOerrors =+                            Seq.fromList+                               [ UndefAlt nt con+                               | (nt, conset, conkeys) <- _coninfo+                               , con <- Set.toList (Set.difference conset conkeys)+                               ]+                        -- "Transform.ag"(line 828, column 12)+                        _lhsOcollectedRules =+                            [ (nt,con,r)+                            | (nt, conset, _) <- _coninfo+                            , con <- Set.toList conset+                            , r <- _rulesIruleInfos+                            ]+                        -- "Transform.ag"(line 834, column 12)+                        _lhsOcollectedSigs =+                            [ (nt,con,ts)+                            | (nt, conset, _) <- _coninfo+                            , con <- Set.toList conset+                            , ts <- _rulesIsigInfos+                            ]+                        -- "Transform.ag"(line 841, column 12)+                        _lhsOcollectedInsts =+                            [ (nt,con,_rulesIdefinedInsts)+                            | (nt, conset, _) <- _coninfo+                            , con <- Set.toList conset+                            ]+                        -- "Transform.ag"(line 847, column 12)+                        _lhsOcollectedUniques =+                            [ (nt,con,_rulesIuniqueInfos)+                            | (nt, conset, _) <- _coninfo+                            , con <- Set.toList conset+                            ]+                        ( _constructorSetIcollectedConstructorNames,_constructorSetIconstructors,_constructorSetIerrors) =+                            (constructorSet_ )+                        ( _rulesIdefinedInsts,_rulesIorderDepsCollect,_rulesIpragmaNamesCollect,_rulesIruleInfos,_rulesIsigInfos,_rulesIuniqueInfos) =+                            (rules_ )+                    in  ( _lhsOattrOrderCollect,_lhsOcollectedInsts,_lhsOcollectedRules,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOerrors,_lhsOsemPragmasCollect))))+-- SemAlts -----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         allAttrDecls         : Map NontermIdent (Attributes, Attributes)+         allFields            : DataTypes+         nts                  : Set NontermIdent+      synthesized attributes:+         attrOrderCollect     : AttrOrderMap+         collectedInsts       : [ (NontermIdent, ConstructorIdent, [Identifier]) ]+         collectedRules       : [ (NontermIdent, ConstructorIdent, RuleInfo)]+         collectedSigs        : [ (NontermIdent, ConstructorIdent, SigInfo) ]+         collectedUniques     : [ (NontermIdent, ConstructorIdent, [UniqueInfo]) ]+         errors               : Seq Error+         semPragmasCollect    : PragmaMap+   alternatives:+      alternative Cons:+         child hd             : SemAlt+         child tl             : SemAlts+      alternative Nil:+-}+-- cata+sem_SemAlts :: SemAlts ->+               T_SemAlts+sem_SemAlts list =+    (Prelude.foldr sem_SemAlts_Cons sem_SemAlts_Nil (Prelude.map sem_SemAlt list))+-- semantic domain+newtype T_SemAlts = T_SemAlts ((Map NontermIdent (Attributes, Attributes)) ->+                               DataTypes ->+                               (Set NontermIdent) ->+                               ( AttrOrderMap,([ (NontermIdent, ConstructorIdent, [Identifier]) ]),([ (NontermIdent, ConstructorIdent, RuleInfo)]),([ (NontermIdent, ConstructorIdent, SigInfo) ]),([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ]),(Seq Error),PragmaMap))+data Inh_SemAlts = Inh_SemAlts {allAttrDecls_Inh_SemAlts :: !(Map NontermIdent (Attributes, Attributes)),allFields_Inh_SemAlts :: !(DataTypes),nts_Inh_SemAlts :: !(Set NontermIdent)}+data Syn_SemAlts = Syn_SemAlts {attrOrderCollect_Syn_SemAlts :: !(AttrOrderMap),collectedInsts_Syn_SemAlts :: !([ (NontermIdent, ConstructorIdent, [Identifier]) ]),collectedRules_Syn_SemAlts :: !([ (NontermIdent, ConstructorIdent, RuleInfo)]),collectedSigs_Syn_SemAlts :: !([ (NontermIdent, ConstructorIdent, SigInfo) ]),collectedUniques_Syn_SemAlts :: !([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ]),errors_Syn_SemAlts :: !(Seq Error),semPragmasCollect_Syn_SemAlts :: !(PragmaMap)}+wrap_SemAlts (T_SemAlts sem) (Inh_SemAlts _lhsIallAttrDecls _lhsIallFields _lhsInts) =+    (let ( _lhsOattrOrderCollect,_lhsOcollectedInsts,_lhsOcollectedRules,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOerrors,_lhsOsemPragmasCollect) =+             (sem _lhsIallAttrDecls _lhsIallFields _lhsInts)+     in  (Syn_SemAlts _lhsOattrOrderCollect _lhsOcollectedInsts _lhsOcollectedRules _lhsOcollectedSigs _lhsOcollectedUniques _lhsOerrors _lhsOsemPragmasCollect))+sem_SemAlts_Cons :: T_SemAlt ->+                    T_SemAlts ->+                    T_SemAlts+sem_SemAlts_Cons (T_SemAlt hd_) (T_SemAlts tl_) =+    (T_SemAlts (\ _lhsIallAttrDecls+                  _lhsIallFields+                  _lhsInts ->+                    (let _lhsOattrOrderCollect :: AttrOrderMap+                         _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                         _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                         _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                         _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                         _lhsOerrors :: (Seq Error)+                         _lhsOsemPragmasCollect :: PragmaMap+                         _hdOallAttrDecls :: (Map NontermIdent (Attributes, Attributes))+                         _hdOallFields :: DataTypes+                         _hdOnts :: (Set NontermIdent)+                         _tlOallAttrDecls :: (Map NontermIdent (Attributes, Attributes))+                         _tlOallFields :: DataTypes+                         _tlOnts :: (Set NontermIdent)+                         _hdIattrOrderCollect :: AttrOrderMap+                         _hdIcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                         _hdIcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                         _hdIcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                         _hdIcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                         _hdIerrors :: (Seq Error)+                         _hdIsemPragmasCollect :: PragmaMap+                         _tlIattrOrderCollect :: AttrOrderMap+                         _tlIcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                         _tlIcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                         _tlIcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                         _tlIcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                         _tlIerrors :: (Seq Error)+                         _tlIsemPragmasCollect :: PragmaMap+                         -- use rule "Transform.ag"(line 662, column 55)+                         _lhsOattrOrderCollect =+                             _hdIattrOrderCollect `orderMapUnion` _tlIattrOrderCollect+                         -- use rule "Transform.ag"(line 144, column 31)+                         _lhsOcollectedInsts =+                             _hdIcollectedInsts ++ _tlIcollectedInsts+                         -- use rule "Transform.ag"(line 142, column 31)+                         _lhsOcollectedRules =+                             _hdIcollectedRules ++ _tlIcollectedRules+                         -- use rule "Transform.ag"(line 143, column 31)+                         _lhsOcollectedSigs =+                             _hdIcollectedSigs ++ _tlIcollectedSigs+                         -- use rule "Transform.ag"(line 145, column 31)+                         _lhsOcollectedUniques =+                             _hdIcollectedUniques ++ _tlIcollectedUniques+                         -- use rule "Transform.ag"(line 40, column 19)+                         _lhsOerrors =+                             _hdIerrors Seq.<> _tlIerrors+                         -- use rule "Transform.ag"(line 634, column 56)+                         _lhsOsemPragmasCollect =+                             _hdIsemPragmasCollect `pragmaMapUnion` _tlIsemPragmasCollect+                         -- copy rule (down)+                         _hdOallAttrDecls =+                             _lhsIallAttrDecls+                         -- copy rule (down)+                         _hdOallFields =+                             _lhsIallFields+                         -- copy rule (down)+                         _hdOnts =+                             _lhsInts+                         -- copy rule (down)+                         _tlOallAttrDecls =+                             _lhsIallAttrDecls+                         -- copy rule (down)+                         _tlOallFields =+                             _lhsIallFields+                         -- copy rule (down)+                         _tlOnts =+                             _lhsInts+                         ( _hdIattrOrderCollect,_hdIcollectedInsts,_hdIcollectedRules,_hdIcollectedSigs,_hdIcollectedUniques,_hdIerrors,_hdIsemPragmasCollect) =+                             (hd_ _hdOallAttrDecls _hdOallFields _hdOnts)+                         ( _tlIattrOrderCollect,_tlIcollectedInsts,_tlIcollectedRules,_tlIcollectedSigs,_tlIcollectedUniques,_tlIerrors,_tlIsemPragmasCollect) =+                             (tl_ _tlOallAttrDecls _tlOallFields _tlOnts)+                     in  ( _lhsOattrOrderCollect,_lhsOcollectedInsts,_lhsOcollectedRules,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOerrors,_lhsOsemPragmasCollect))))+sem_SemAlts_Nil :: T_SemAlts+sem_SemAlts_Nil  =+    (T_SemAlts (\ _lhsIallAttrDecls+                  _lhsIallFields+                  _lhsInts ->+                    (let _lhsOattrOrderCollect :: AttrOrderMap+                         _lhsOcollectedInsts :: ([ (NontermIdent, ConstructorIdent, [Identifier]) ])+                         _lhsOcollectedRules :: ([ (NontermIdent, ConstructorIdent, RuleInfo)])+                         _lhsOcollectedSigs :: ([ (NontermIdent, ConstructorIdent, SigInfo) ])+                         _lhsOcollectedUniques :: ([ (NontermIdent, ConstructorIdent, [UniqueInfo]) ])+                         _lhsOerrors :: (Seq Error)+                         _lhsOsemPragmasCollect :: PragmaMap+                         -- use rule "Transform.ag"(line 662, column 55)+                         _lhsOattrOrderCollect =+                             Map.empty+                         -- use rule "Transform.ag"(line 144, column 31)+                         _lhsOcollectedInsts =+                             []+                         -- use rule "Transform.ag"(line 142, column 31)+                         _lhsOcollectedRules =+                             []+                         -- use rule "Transform.ag"(line 143, column 31)+                         _lhsOcollectedSigs =+                             []+                         -- use rule "Transform.ag"(line 145, column 31)+                         _lhsOcollectedUniques =+                             []+                         -- use rule "Transform.ag"(line 40, column 19)+                         _lhsOerrors =+                             Seq.empty+                         -- use rule "Transform.ag"(line 634, column 56)+                         _lhsOsemPragmasCollect =+                             Map.empty+                     in  ( _lhsOattrOrderCollect,_lhsOcollectedInsts,_lhsOcollectedRules,_lhsOcollectedSigs,_lhsOcollectedUniques,_lhsOerrors,_lhsOsemPragmasCollect))))+-- SemDef ------------------------------------------------------+{-+   visit 0:+      synthesized attributes:+         definedInsts         : [Identifier]+         orderDepsCollect     : Set Dependency+         pragmaNamesCollect   : [Identifier]+         ruleInfos            : [RuleInfo]+         sigInfos             : [SigInfo]+         uniqueInfos          : [UniqueInfo]+   alternatives:+      alternative AttrOrderBefore:+         child before         : {[(Identifier,Identifier)]}+         child after          : {[(Identifier,Identifier)]}+         visit 0:+            local dependency  : _+      alternative Def:+         child pattern        : Pattern+         child rhs            : {Expression}+         child owrt           : {Bool}+      alternative SemPragma:+         child names          : {[NontermIdent]}+      alternative TypeDef:+         child ident          : {Identifier}+         child tp             : {Type}+      alternative UniqueDef:+         child ident          : {Identifier}+         child ref            : {Identifier}+-}+-- cata+sem_SemDef :: SemDef ->+              T_SemDef+sem_SemDef (AttrOrderBefore _before _after) =+    (sem_SemDef_AttrOrderBefore _before _after)+sem_SemDef (Def _pattern _rhs _owrt) =+    (sem_SemDef_Def (sem_Pattern _pattern) _rhs _owrt)+sem_SemDef (SemPragma _names) =+    (sem_SemDef_SemPragma _names)+sem_SemDef (TypeDef _ident _tp) =+    (sem_SemDef_TypeDef _ident _tp)+sem_SemDef (UniqueDef _ident _ref) =+    (sem_SemDef_UniqueDef _ident _ref)+-- semantic domain+newtype T_SemDef = T_SemDef (( ([Identifier]),(Set Dependency),([Identifier]),([RuleInfo]),([SigInfo]),([UniqueInfo])))+data Inh_SemDef = Inh_SemDef {}+data Syn_SemDef = Syn_SemDef {definedInsts_Syn_SemDef :: !([Identifier]),orderDepsCollect_Syn_SemDef :: !(Set Dependency),pragmaNamesCollect_Syn_SemDef :: !([Identifier]),ruleInfos_Syn_SemDef :: !([RuleInfo]),sigInfos_Syn_SemDef :: !([SigInfo]),uniqueInfos_Syn_SemDef :: !([UniqueInfo])}+wrap_SemDef (T_SemDef sem) (Inh_SemDef ) =+    (let ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos) =+             (sem )+     in  (Syn_SemDef _lhsOdefinedInsts _lhsOorderDepsCollect _lhsOpragmaNamesCollect _lhsOruleInfos _lhsOsigInfos _lhsOuniqueInfos))+sem_SemDef_AttrOrderBefore :: ([(Identifier,Identifier)]) ->+                              ([(Identifier,Identifier)]) ->+                              T_SemDef+sem_SemDef_AttrOrderBefore before_ after_ =+    (T_SemDef (let _lhsOorderDepsCollect :: (Set Dependency)+                   _lhsOdefinedInsts :: ([Identifier])+                   _lhsOpragmaNamesCollect :: ([Identifier])+                   _lhsOruleInfos :: ([RuleInfo])+                   _lhsOsigInfos :: ([SigInfo])+                   _lhsOuniqueInfos :: ([UniqueInfo])+                   -- "Transform.ag"(line 679, column 7)+                   _dependency =+                       [ Dependency b a | b <- before_, a <- after_ ]+                   -- "Transform.ag"(line 680, column 7)+                   _lhsOorderDepsCollect =+                       Set.fromList _dependency+                   -- use rule "Transform.ag"(line 864, column 55)+                   _lhsOdefinedInsts =+                       []+                   -- use rule "Transform.ag"(line 644, column 46)+                   _lhsOpragmaNamesCollect =+                       []+                   -- use rule "Transform.ag"(line 809, column 39)+                   _lhsOruleInfos =+                       []+                   -- use rule "Transform.ag"(line 810, column 39)+                   _lhsOsigInfos =+                       []+                   -- use rule "Transform.ag"(line 811, column 39)+                   _lhsOuniqueInfos =+                       []+               in  ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)))+sem_SemDef_Def :: T_Pattern ->+                  Expression ->+                  Bool ->+                  T_SemDef+sem_SemDef_Def (T_Pattern pattern_) rhs_ owrt_ =+    (T_SemDef (let _lhsOruleInfos :: ([RuleInfo])+                   _lhsOdefinedInsts :: ([Identifier])+                   _lhsOorderDepsCollect :: (Set Dependency)+                   _lhsOpragmaNamesCollect :: ([Identifier])+                   _lhsOsigInfos :: ([SigInfo])+                   _lhsOuniqueInfos :: ([UniqueInfo])+                   _patternIcopy :: Pattern+                   _patternIdefinedAttrs :: ([AttrName])+                   _patternIdefinedInsts :: ([Identifier])+                   _patternIpatunder :: ([AttrName]->Pattern)+                   _patternIstpos :: Pos+                   -- "Transform.ag"(line 855, column 10)+                   _lhsOruleInfos =+                       [ (_patternIpatunder, rhs_, _patternIdefinedAttrs, owrt_, show _patternIstpos) ]+                   -- use rule "Transform.ag"(line 864, column 55)+                   _lhsOdefinedInsts =+                       _patternIdefinedInsts+                   -- use rule "Transform.ag"(line 675, column 44)+                   _lhsOorderDepsCollect =+                       Set.empty+                   -- use rule "Transform.ag"(line 644, column 46)+                   _lhsOpragmaNamesCollect =+                       []+                   -- use rule "Transform.ag"(line 810, column 39)+                   _lhsOsigInfos =+                       []+                   -- use rule "Transform.ag"(line 811, column 39)+                   _lhsOuniqueInfos =+                       []+                   ( _patternIcopy,_patternIdefinedAttrs,_patternIdefinedInsts,_patternIpatunder,_patternIstpos) =+                       (pattern_ )+               in  ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)))+sem_SemDef_SemPragma :: ([NontermIdent]) ->+                        T_SemDef+sem_SemDef_SemPragma names_ =+    (T_SemDef (let _lhsOpragmaNamesCollect :: ([Identifier])+                   _lhsOdefinedInsts :: ([Identifier])+                   _lhsOorderDepsCollect :: (Set Dependency)+                   _lhsOruleInfos :: ([RuleInfo])+                   _lhsOsigInfos :: ([SigInfo])+                   _lhsOuniqueInfos :: ([UniqueInfo])+                   -- "Transform.ag"(line 648, column 7)+                   _lhsOpragmaNamesCollect =+                       names_+                   -- use rule "Transform.ag"(line 864, column 55)+                   _lhsOdefinedInsts =+                       []+                   -- use rule "Transform.ag"(line 675, column 44)+                   _lhsOorderDepsCollect =+                       Set.empty+                   -- use rule "Transform.ag"(line 809, column 39)+                   _lhsOruleInfos =+                       []+                   -- use rule "Transform.ag"(line 810, column 39)+                   _lhsOsigInfos =+                       []+                   -- use rule "Transform.ag"(line 811, column 39)+                   _lhsOuniqueInfos =+                       []+               in  ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)))+sem_SemDef_TypeDef :: Identifier ->+                      Type ->+                      T_SemDef+sem_SemDef_TypeDef ident_ tp_ =+    (T_SemDef (let _lhsOsigInfos :: ([SigInfo])+                   _lhsOdefinedInsts :: ([Identifier])+                   _lhsOorderDepsCollect :: (Set Dependency)+                   _lhsOpragmaNamesCollect :: ([Identifier])+                   _lhsOruleInfos :: ([RuleInfo])+                   _lhsOuniqueInfos :: ([UniqueInfo])+                   -- "Transform.ag"(line 858, column 14)+                   _lhsOsigInfos =+                       [ (ident_, tp_) ]+                   -- use rule "Transform.ag"(line 864, column 55)+                   _lhsOdefinedInsts =+                       []+                   -- use rule "Transform.ag"(line 675, column 44)+                   _lhsOorderDepsCollect =+                       Set.empty+                   -- use rule "Transform.ag"(line 644, column 46)+                   _lhsOpragmaNamesCollect =+                       []+                   -- use rule "Transform.ag"(line 809, column 39)+                   _lhsOruleInfos =+                       []+                   -- use rule "Transform.ag"(line 811, column 39)+                   _lhsOuniqueInfos =+                       []+               in  ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)))+sem_SemDef_UniqueDef :: Identifier ->+                        Identifier ->+                        T_SemDef+sem_SemDef_UniqueDef ident_ ref_ =+    (T_SemDef (let _lhsOuniqueInfos :: ([UniqueInfo])+                   _lhsOdefinedInsts :: ([Identifier])+                   _lhsOorderDepsCollect :: (Set Dependency)+                   _lhsOpragmaNamesCollect :: ([Identifier])+                   _lhsOruleInfos :: ([RuleInfo])+                   _lhsOsigInfos :: ([SigInfo])+                   -- "Transform.ag"(line 861, column 16)+                   _lhsOuniqueInfos =+                       [ (ident_, ref_) ]+                   -- use rule "Transform.ag"(line 864, column 55)+                   _lhsOdefinedInsts =+                       []+                   -- use rule "Transform.ag"(line 675, column 44)+                   _lhsOorderDepsCollect =+                       Set.empty+                   -- use rule "Transform.ag"(line 644, column 46)+                   _lhsOpragmaNamesCollect =+                       []+                   -- use rule "Transform.ag"(line 809, column 39)+                   _lhsOruleInfos =+                       []+                   -- use rule "Transform.ag"(line 810, column 39)+                   _lhsOsigInfos =+                       []+               in  ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)))+-- SemDefs -----------------------------------------------------+{-+   visit 0:+      synthesized attributes:+         definedInsts         : [Identifier]+         orderDepsCollect     : Set Dependency+         pragmaNamesCollect   : [Identifier]+         ruleInfos            : [RuleInfo]+         sigInfos             : [SigInfo]+         uniqueInfos          : [UniqueInfo]+   alternatives:+      alternative Cons:+         child hd             : SemDef+         child tl             : SemDefs+      alternative Nil:+-}+-- cata+sem_SemDefs :: SemDefs ->+               T_SemDefs+sem_SemDefs list =+    (Prelude.foldr sem_SemDefs_Cons sem_SemDefs_Nil (Prelude.map sem_SemDef list))+-- semantic domain+newtype T_SemDefs = T_SemDefs (( ([Identifier]),(Set Dependency),([Identifier]),([RuleInfo]),([SigInfo]),([UniqueInfo])))+data Inh_SemDefs = Inh_SemDefs {}+data Syn_SemDefs = Syn_SemDefs {definedInsts_Syn_SemDefs :: !([Identifier]),orderDepsCollect_Syn_SemDefs :: !(Set Dependency),pragmaNamesCollect_Syn_SemDefs :: !([Identifier]),ruleInfos_Syn_SemDefs :: !([RuleInfo]),sigInfos_Syn_SemDefs :: !([SigInfo]),uniqueInfos_Syn_SemDefs :: !([UniqueInfo])}+wrap_SemDefs (T_SemDefs sem) (Inh_SemDefs ) =+    (let ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos) =+             (sem )+     in  (Syn_SemDefs _lhsOdefinedInsts _lhsOorderDepsCollect _lhsOpragmaNamesCollect _lhsOruleInfos _lhsOsigInfos _lhsOuniqueInfos))+sem_SemDefs_Cons :: T_SemDef ->+                    T_SemDefs ->+                    T_SemDefs+sem_SemDefs_Cons (T_SemDef hd_) (T_SemDefs tl_) =+    (T_SemDefs (let _lhsOdefinedInsts :: ([Identifier])+                    _lhsOorderDepsCollect :: (Set Dependency)+                    _lhsOpragmaNamesCollect :: ([Identifier])+                    _lhsOruleInfos :: ([RuleInfo])+                    _lhsOsigInfos :: ([SigInfo])+                    _lhsOuniqueInfos :: ([UniqueInfo])+                    _hdIdefinedInsts :: ([Identifier])+                    _hdIorderDepsCollect :: (Set Dependency)+                    _hdIpragmaNamesCollect :: ([Identifier])+                    _hdIruleInfos :: ([RuleInfo])+                    _hdIsigInfos :: ([SigInfo])+                    _hdIuniqueInfos :: ([UniqueInfo])+                    _tlIdefinedInsts :: ([Identifier])+                    _tlIorderDepsCollect :: (Set Dependency)+                    _tlIpragmaNamesCollect :: ([Identifier])+                    _tlIruleInfos :: ([RuleInfo])+                    _tlIsigInfos :: ([SigInfo])+                    _tlIuniqueInfos :: ([UniqueInfo])+                    -- use rule "Transform.ag"(line 864, column 55)+                    _lhsOdefinedInsts =+                        _hdIdefinedInsts ++ _tlIdefinedInsts+                    -- use rule "Transform.ag"(line 675, column 44)+                    _lhsOorderDepsCollect =+                        _hdIorderDepsCollect `Set.union` _tlIorderDepsCollect+                    -- use rule "Transform.ag"(line 644, column 46)+                    _lhsOpragmaNamesCollect =+                        _hdIpragmaNamesCollect ++ _tlIpragmaNamesCollect+                    -- use rule "Transform.ag"(line 809, column 39)+                    _lhsOruleInfos =+                        _hdIruleInfos ++ _tlIruleInfos+                    -- use rule "Transform.ag"(line 810, column 39)+                    _lhsOsigInfos =+                        _hdIsigInfos ++ _tlIsigInfos+                    -- use rule "Transform.ag"(line 811, column 39)+                    _lhsOuniqueInfos =+                        _hdIuniqueInfos ++ _tlIuniqueInfos+                    ( _hdIdefinedInsts,_hdIorderDepsCollect,_hdIpragmaNamesCollect,_hdIruleInfos,_hdIsigInfos,_hdIuniqueInfos) =+                        (hd_ )+                    ( _tlIdefinedInsts,_tlIorderDepsCollect,_tlIpragmaNamesCollect,_tlIruleInfos,_tlIsigInfos,_tlIuniqueInfos) =+                        (tl_ )+                in  ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)))+sem_SemDefs_Nil :: T_SemDefs+sem_SemDefs_Nil  =+    (T_SemDefs (let _lhsOdefinedInsts :: ([Identifier])+                    _lhsOorderDepsCollect :: (Set Dependency)+                    _lhsOpragmaNamesCollect :: ([Identifier])+                    _lhsOruleInfos :: ([RuleInfo])+                    _lhsOsigInfos :: ([SigInfo])+                    _lhsOuniqueInfos :: ([UniqueInfo])+                    -- use rule "Transform.ag"(line 864, column 55)+                    _lhsOdefinedInsts =+                        []+                    -- use rule "Transform.ag"(line 675, column 44)+                    _lhsOorderDepsCollect =+                        Set.empty+                    -- use rule "Transform.ag"(line 644, column 46)+                    _lhsOpragmaNamesCollect =+                        []+                    -- use rule "Transform.ag"(line 809, column 39)+                    _lhsOruleInfos =+                        []+                    -- use rule "Transform.ag"(line 810, column 39)+                    _lhsOsigInfos =+                        []+                    -- use rule "Transform.ag"(line 811, column 39)+                    _lhsOuniqueInfos =+                        []+                in  ( _lhsOdefinedInsts,_lhsOorderDepsCollect,_lhsOpragmaNamesCollect,_lhsOruleInfos,_lhsOsigInfos,_lhsOuniqueInfos)))
src-derived/Visage.hs view
@@ -1,4 +1,3 @@- -- UUAGC 0.9.5 (Visage.ag) module Visage where @@ -13,18 +12,15 @@ import Data.List(intersperse) import TokenDef - import CommonTypes import UU.Pretty import AbstractSyntax import VisagePatterns import Expression - import UU.Scanner.Position(Pos) import CommonTypes - import UU.Scanner.Position(Pos) import HsToken @@ -64,25 +60,25 @@ -- cata sem_Expression :: Expression ->                   T_Expression-sem_Expression (Expression _pos _tks )  =-    (sem_Expression_Expression _pos _tks )+sem_Expression (Expression _pos _tks) =+    (sem_Expression_Expression _pos _tks) -- semantic domain newtype T_Expression = T_Expression (( ATerm)) data Inh_Expression = Inh_Expression {} data Syn_Expression = Syn_Expression {aterm_Syn_Expression :: ATerm}-wrap_Expression (T_Expression sem ) (Inh_Expression )  =+wrap_Expression (T_Expression sem) (Inh_Expression ) =     (let ( _lhsOaterm) =              (sem )-     in  (Syn_Expression _lhsOaterm ))+     in  (Syn_Expression _lhsOaterm)) sem_Expression_Expression :: Pos ->                              ([HsToken]) ->                              T_Expression-sem_Expression_Expression pos_ tks_  =+sem_Expression_Expression pos_ tks_ =     (T_Expression (let _lhsOaterm :: ATerm                        -- "Visage.ag"(line 103, column 17)                        _lhsOaterm =                            AAppl "Expression" [AString (sQ (showAGPos pos_)), AString (sQ (unlines . showTokens . tokensToStrings $ tks_))]-                   in  ( _lhsOaterm)) )+                   in  ( _lhsOaterm))) -- VisageChild ------------------------------------------------- {-    visit 0:@@ -94,28 +90,28 @@          child tp             : {Type}          child inh            : {Attributes}          child syn            : {Attributes}-         child rules          : VisageRules +         child rules          : VisageRules -} -- cata sem_VisageChild :: VisageChild ->                    T_VisageChild-sem_VisageChild (VChild _name _tp _inh _syn _rules )  =-    (sem_VisageChild_VChild _name _tp _inh _syn (sem_VisageRules _rules ) )+sem_VisageChild (VChild _name _tp _inh _syn _rules) =+    (sem_VisageChild_VChild _name _tp _inh _syn (sem_VisageRules _rules)) -- semantic domain newtype T_VisageChild = T_VisageChild (( ATerm)) data Inh_VisageChild = Inh_VisageChild {} data Syn_VisageChild = Syn_VisageChild {aterm_Syn_VisageChild :: ATerm}-wrap_VisageChild (T_VisageChild sem ) (Inh_VisageChild )  =+wrap_VisageChild (T_VisageChild sem) (Inh_VisageChild ) =     (let ( _lhsOaterm) =              (sem )-     in  (Syn_VisageChild _lhsOaterm ))+     in  (Syn_VisageChild _lhsOaterm)) sem_VisageChild_VChild :: Identifier ->                           Type ->                           Attributes ->                           Attributes ->                           T_VisageRules ->                           T_VisageChild-sem_VisageChild_VChild name_ tp_ inh_ syn_ (T_VisageRules rules_ )  =+sem_VisageChild_VChild name_ tp_ inh_ syn_ (T_VisageRules rules_) =     (T_VisageChild (let _lhsOaterm :: ATerm                         _rulesOisLoc :: Bool                         _rulesIaterms :: ([ATerm])@@ -129,8 +125,8 @@                         _rulesOisLoc =                             False                         ( _rulesIaterms) =-                            (rules_ _rulesOisLoc )-                    in  ( _lhsOaterm)) )+                            (rules_ _rulesOisLoc)+                    in  ( _lhsOaterm))) -- VisageChildren ---------------------------------------------- {-    visit 0:@@ -138,27 +134,27 @@          aterms               : [ATerm]    alternatives:       alternative Cons:-         child hd             : VisageChild -         child tl             : VisageChildren +         child hd             : VisageChild+         child tl             : VisageChildren       alternative Nil: -} -- cata sem_VisageChildren :: VisageChildren ->                       T_VisageChildren-sem_VisageChildren list  =-    (Prelude.foldr sem_VisageChildren_Cons sem_VisageChildren_Nil (Prelude.map sem_VisageChild list) )+sem_VisageChildren list =+    (Prelude.foldr sem_VisageChildren_Cons sem_VisageChildren_Nil (Prelude.map sem_VisageChild list)) -- semantic domain newtype T_VisageChildren = T_VisageChildren (( ([ATerm]))) data Inh_VisageChildren = Inh_VisageChildren {} data Syn_VisageChildren = Syn_VisageChildren {aterms_Syn_VisageChildren :: [ATerm]}-wrap_VisageChildren (T_VisageChildren sem ) (Inh_VisageChildren )  =+wrap_VisageChildren (T_VisageChildren sem) (Inh_VisageChildren ) =     (let ( _lhsOaterms) =              (sem )-     in  (Syn_VisageChildren _lhsOaterms ))+     in  (Syn_VisageChildren _lhsOaterms)) sem_VisageChildren_Cons :: T_VisageChild ->                            T_VisageChildren ->                            T_VisageChildren-sem_VisageChildren_Cons (T_VisageChild hd_ ) (T_VisageChildren tl_ )  =+sem_VisageChildren_Cons (T_VisageChild hd_) (T_VisageChildren tl_) =     (T_VisageChildren (let _lhsOaterms :: ([ATerm])                            _hdIaterm :: ATerm                            _tlIaterms :: ([ATerm])@@ -169,14 +165,14 @@                                (hd_ )                            ( _tlIaterms) =                                (tl_ )-                       in  ( _lhsOaterms)) )+                       in  ( _lhsOaterms))) sem_VisageChildren_Nil :: T_VisageChildren sem_VisageChildren_Nil  =     (T_VisageChildren (let _lhsOaterms :: ([ATerm])                            -- "Visage.ag"(line 81, column 17)                            _lhsOaterms =                                []-                       in  ( _lhsOaterms)) )+                       in  ( _lhsOaterms))) -- VisageGrammar ----------------------------------------------- {-    visit 0:@@ -184,24 +180,24 @@          aterm                : ATerm    alternatives:       alternative VGrammar:-         child nonts          : VisageNonterminals +         child nonts          : VisageNonterminals -} -- cata sem_VisageGrammar :: VisageGrammar ->                      T_VisageGrammar-sem_VisageGrammar (VGrammar _nonts )  =-    (sem_VisageGrammar_VGrammar (sem_VisageNonterminals _nonts ) )+sem_VisageGrammar (VGrammar _nonts) =+    (sem_VisageGrammar_VGrammar (sem_VisageNonterminals _nonts)) -- semantic domain newtype T_VisageGrammar = T_VisageGrammar (( ATerm)) data Inh_VisageGrammar = Inh_VisageGrammar {} data Syn_VisageGrammar = Syn_VisageGrammar {aterm_Syn_VisageGrammar :: ATerm}-wrap_VisageGrammar (T_VisageGrammar sem ) (Inh_VisageGrammar )  =+wrap_VisageGrammar (T_VisageGrammar sem) (Inh_VisageGrammar ) =     (let ( _lhsOaterm) =              (sem )-     in  (Syn_VisageGrammar _lhsOaterm ))+     in  (Syn_VisageGrammar _lhsOaterm)) sem_VisageGrammar_VGrammar :: T_VisageNonterminals ->                               T_VisageGrammar-sem_VisageGrammar_VGrammar (T_VisageNonterminals nonts_ )  =+sem_VisageGrammar_VGrammar (T_VisageNonterminals nonts_) =     (T_VisageGrammar (let _lhsOaterm :: ATerm                           _nontsIaterms :: ([ATerm])                           -- "Visage.ag"(line 54, column 18)@@ -209,7 +205,7 @@                               AAppl "Productions" _nontsIaterms                           ( _nontsIaterms) =                               (nonts_ )-                      in  ( _lhsOaterm)) )+                      in  ( _lhsOaterm))) -- VisageNonterminal ------------------------------------------- {-    visit 0:@@ -220,27 +216,27 @@          child nt             : {NontermIdent}          child inh            : {Attributes}          child syn            : {Attributes}-         child alts           : VisageProductions +         child alts           : VisageProductions -} -- cata sem_VisageNonterminal :: VisageNonterminal ->                          T_VisageNonterminal-sem_VisageNonterminal (VNonterminal _nt _inh _syn _alts )  =-    (sem_VisageNonterminal_VNonterminal _nt _inh _syn (sem_VisageProductions _alts ) )+sem_VisageNonterminal (VNonterminal _nt _inh _syn _alts) =+    (sem_VisageNonterminal_VNonterminal _nt _inh _syn (sem_VisageProductions _alts)) -- semantic domain newtype T_VisageNonterminal = T_VisageNonterminal (( ATerm)) data Inh_VisageNonterminal = Inh_VisageNonterminal {} data Syn_VisageNonterminal = Syn_VisageNonterminal {aterm_Syn_VisageNonterminal :: ATerm}-wrap_VisageNonterminal (T_VisageNonterminal sem ) (Inh_VisageNonterminal )  =+wrap_VisageNonterminal (T_VisageNonterminal sem) (Inh_VisageNonterminal ) =     (let ( _lhsOaterm) =              (sem )-     in  (Syn_VisageNonterminal _lhsOaterm ))+     in  (Syn_VisageNonterminal _lhsOaterm)) sem_VisageNonterminal_VNonterminal :: NontermIdent ->                                       Attributes ->                                       Attributes ->                                       T_VisageProductions ->                                       T_VisageNonterminal-sem_VisageNonterminal_VNonterminal nt_ inh_ syn_ (T_VisageProductions alts_ )  =+sem_VisageNonterminal_VNonterminal nt_ inh_ syn_ (T_VisageProductions alts_) =     (T_VisageNonterminal (let _lhsOaterm :: ATerm                               _altsIaterms :: ([ATerm])                               -- "Visage.ag"(line 63, column 19)@@ -249,7 +245,7 @@                                                      AString (sQ(showMap syn_)), AAppl "Alternatives" _altsIaterms]                               ( _altsIaterms) =                                   (alts_ )-                          in  ( _lhsOaterm)) )+                          in  ( _lhsOaterm))) -- VisageNonterminals ------------------------------------------ {-    visit 0:@@ -257,27 +253,27 @@          aterms               : [ATerm]    alternatives:       alternative Cons:-         child hd             : VisageNonterminal -         child tl             : VisageNonterminals +         child hd             : VisageNonterminal+         child tl             : VisageNonterminals       alternative Nil: -} -- cata sem_VisageNonterminals :: VisageNonterminals ->                           T_VisageNonterminals-sem_VisageNonterminals list  =-    (Prelude.foldr sem_VisageNonterminals_Cons sem_VisageNonterminals_Nil (Prelude.map sem_VisageNonterminal list) )+sem_VisageNonterminals list =+    (Prelude.foldr sem_VisageNonterminals_Cons sem_VisageNonterminals_Nil (Prelude.map sem_VisageNonterminal list)) -- semantic domain newtype T_VisageNonterminals = T_VisageNonterminals (( ([ATerm]))) data Inh_VisageNonterminals = Inh_VisageNonterminals {} data Syn_VisageNonterminals = Syn_VisageNonterminals {aterms_Syn_VisageNonterminals :: [ATerm]}-wrap_VisageNonterminals (T_VisageNonterminals sem ) (Inh_VisageNonterminals )  =+wrap_VisageNonterminals (T_VisageNonterminals sem) (Inh_VisageNonterminals ) =     (let ( _lhsOaterms) =              (sem )-     in  (Syn_VisageNonterminals _lhsOaterms ))+     in  (Syn_VisageNonterminals _lhsOaterms)) sem_VisageNonterminals_Cons :: T_VisageNonterminal ->                                T_VisageNonterminals ->                                T_VisageNonterminals-sem_VisageNonterminals_Cons (T_VisageNonterminal hd_ ) (T_VisageNonterminals tl_ )  =+sem_VisageNonterminals_Cons (T_VisageNonterminal hd_) (T_VisageNonterminals tl_) =     (T_VisageNonterminals (let _lhsOaterms :: ([ATerm])                                _hdIaterm :: ATerm                                _tlIaterms :: ([ATerm])@@ -288,14 +284,14 @@                                    (hd_ )                                ( _tlIaterms) =                                    (tl_ )-                           in  ( _lhsOaterms)) )+                           in  ( _lhsOaterms))) sem_VisageNonterminals_Nil :: T_VisageNonterminals sem_VisageNonterminals_Nil  =     (T_VisageNonterminals (let _lhsOaterms :: ([ATerm])                                -- "Visage.ag"(line 59, column 17)                                _lhsOaterms =                                    []-                           in  ( _lhsOaterms)) )+                           in  ( _lhsOaterms))) -- VisagePattern ----------------------------------------------- {-    visit 0:@@ -305,13 +301,13 @@       alternative VAlias:          child field          : {Identifier}          child attr           : {Identifier}-         child pat            : VisagePattern +         child pat            : VisagePattern       alternative VConstr:          child name           : {ConstructorIdent}-         child pats           : VisagePatterns +         child pats           : VisagePatterns       alternative VProduct:          child pos            : {Pos}-         child pats           : VisagePatterns +         child pats           : VisagePatterns       alternative VUnderscore:          child pos            : {Pos}       alternative VVar:@@ -321,29 +317,29 @@ -- cata sem_VisagePattern :: VisagePattern ->                      T_VisagePattern-sem_VisagePattern (VAlias _field _attr _pat )  =-    (sem_VisagePattern_VAlias _field _attr (sem_VisagePattern _pat ) )-sem_VisagePattern (VConstr _name _pats )  =-    (sem_VisagePattern_VConstr _name (sem_VisagePatterns _pats ) )-sem_VisagePattern (VProduct _pos _pats )  =-    (sem_VisagePattern_VProduct _pos (sem_VisagePatterns _pats ) )-sem_VisagePattern (VUnderscore _pos )  =-    (sem_VisagePattern_VUnderscore _pos )-sem_VisagePattern (VVar _field _attr )  =-    (sem_VisagePattern_VVar _field _attr )+sem_VisagePattern (VAlias _field _attr _pat) =+    (sem_VisagePattern_VAlias _field _attr (sem_VisagePattern _pat))+sem_VisagePattern (VConstr _name _pats) =+    (sem_VisagePattern_VConstr _name (sem_VisagePatterns _pats))+sem_VisagePattern (VProduct _pos _pats) =+    (sem_VisagePattern_VProduct _pos (sem_VisagePatterns _pats))+sem_VisagePattern (VUnderscore _pos) =+    (sem_VisagePattern_VUnderscore _pos)+sem_VisagePattern (VVar _field _attr) =+    (sem_VisagePattern_VVar _field _attr) -- semantic domain newtype T_VisagePattern = T_VisagePattern (( ATerm)) data Inh_VisagePattern = Inh_VisagePattern {} data Syn_VisagePattern = Syn_VisagePattern {aterm_Syn_VisagePattern :: ATerm}-wrap_VisagePattern (T_VisagePattern sem ) (Inh_VisagePattern )  =+wrap_VisagePattern (T_VisagePattern sem) (Inh_VisagePattern ) =     (let ( _lhsOaterm) =              (sem )-     in  (Syn_VisagePattern _lhsOaterm ))+     in  (Syn_VisagePattern _lhsOaterm)) sem_VisagePattern_VAlias :: Identifier ->                             Identifier ->                             T_VisagePattern ->                             T_VisagePattern-sem_VisagePattern_VAlias field_ attr_ (T_VisagePattern pat_ )  =+sem_VisagePattern_VAlias field_ attr_ (T_VisagePattern pat_) =     (T_VisagePattern (let _lhsOaterm :: ATerm                           _patIaterm :: ATerm                           -- "Visage.ag"(line 119, column 18)@@ -352,11 +348,11 @@                                                               AString (sQ (getName field_ ++ "." ++ getName attr_)), _patIaterm]]                           ( _patIaterm) =                               (pat_ )-                      in  ( _lhsOaterm)) )+                      in  ( _lhsOaterm))) sem_VisagePattern_VConstr :: ConstructorIdent ->                              T_VisagePatterns ->                              T_VisagePattern-sem_VisagePattern_VConstr name_ (T_VisagePatterns pats_ )  =+sem_VisagePattern_VConstr name_ (T_VisagePatterns pats_) =     (T_VisagePattern (let _lhsOaterm :: ATerm                           _patsIaterms :: ([ATerm])                           -- "Visage.ag"(line 112, column 18)@@ -366,11 +362,11 @@                                                AAppl "Patterns" _patsIaterms]]                           ( _patsIaterms) =                               (pats_ )-                      in  ( _lhsOaterm)) )+                      in  ( _lhsOaterm))) sem_VisagePattern_VProduct :: Pos ->                               T_VisagePatterns ->                               T_VisagePattern-sem_VisagePattern_VProduct pos_ (T_VisagePatterns pats_ )  =+sem_VisagePattern_VProduct pos_ (T_VisagePatterns pats_) =     (T_VisagePattern (let _lhsOaterm :: ATerm                           _patsIaterms :: ([ATerm])                           -- "Visage.ag"(line 115, column 18)@@ -379,25 +375,25 @@                                                                 AAppl "Patterns" _patsIaterms]]                           ( _patsIaterms) =                               (pats_ )-                      in  ( _lhsOaterm)) )+                      in  ( _lhsOaterm))) sem_VisagePattern_VUnderscore :: Pos ->                                  T_VisagePattern-sem_VisagePattern_VUnderscore pos_  =+sem_VisagePattern_VUnderscore pos_ =     (T_VisagePattern (let _lhsOaterm :: ATerm                           -- "Visage.ag"(line 121, column 18)                           _lhsOaterm =                               AAppl "Pattern" [AAppl "Underscore" [AString (sQ (showAGPos pos_))]]-                      in  ( _lhsOaterm)) )+                      in  ( _lhsOaterm))) sem_VisagePattern_VVar :: Identifier ->                           Identifier ->                           T_VisagePattern-sem_VisagePattern_VVar field_ attr_  =+sem_VisagePattern_VVar field_ attr_ =     (T_VisagePattern (let _lhsOaterm :: ATerm                           -- "Visage.ag"(line 117, column 18)                           _lhsOaterm =                               AAppl "Pattern" [AAppl "Var" [AString (sQ (showAGPos (getPos field_))),                                                             AString (sQ (getName field_ ++ "." ++ getName attr_))]]-                      in  ( _lhsOaterm)) )+                      in  ( _lhsOaterm))) -- VisagePatterns ---------------------------------------------- {-    visit 0:@@ -405,27 +401,27 @@          aterms               : [ATerm]    alternatives:       alternative Cons:-         child hd             : VisagePattern -         child tl             : VisagePatterns +         child hd             : VisagePattern+         child tl             : VisagePatterns       alternative Nil: -} -- cata sem_VisagePatterns :: VisagePatterns ->                       T_VisagePatterns-sem_VisagePatterns list  =-    (Prelude.foldr sem_VisagePatterns_Cons sem_VisagePatterns_Nil (Prelude.map sem_VisagePattern list) )+sem_VisagePatterns list =+    (Prelude.foldr sem_VisagePatterns_Cons sem_VisagePatterns_Nil (Prelude.map sem_VisagePattern list)) -- semantic domain newtype T_VisagePatterns = T_VisagePatterns (( ([ATerm]))) data Inh_VisagePatterns = Inh_VisagePatterns {} data Syn_VisagePatterns = Syn_VisagePatterns {aterms_Syn_VisagePatterns :: [ATerm]}-wrap_VisagePatterns (T_VisagePatterns sem ) (Inh_VisagePatterns )  =+wrap_VisagePatterns (T_VisagePatterns sem) (Inh_VisagePatterns ) =     (let ( _lhsOaterms) =              (sem )-     in  (Syn_VisagePatterns _lhsOaterms ))+     in  (Syn_VisagePatterns _lhsOaterms)) sem_VisagePatterns_Cons :: T_VisagePattern ->                            T_VisagePatterns ->                            T_VisagePatterns-sem_VisagePatterns_Cons (T_VisagePattern hd_ ) (T_VisagePatterns tl_ )  =+sem_VisagePatterns_Cons (T_VisagePattern hd_) (T_VisagePatterns tl_) =     (T_VisagePatterns (let _lhsOaterms :: ([ATerm])                            _hdIaterm :: ATerm                            _tlIaterms :: ([ATerm])@@ -436,14 +432,14 @@                                (hd_ )                            ( _tlIaterms) =                                (tl_ )-                       in  ( _lhsOaterms)) )+                       in  ( _lhsOaterms))) sem_VisagePatterns_Nil :: T_VisagePatterns sem_VisagePatterns_Nil  =     (T_VisagePatterns (let _lhsOaterms :: ([ATerm])                            -- "Visage.ag"(line 108, column 17)                            _lhsOaterms =                                []-                       in  ( _lhsOaterms)) )+                       in  ( _lhsOaterms))) -- VisageProduction -------------------------------------------- {-    visit 0:@@ -452,29 +448,29 @@    alternatives:       alternative VProduction:          child con            : {ConstructorIdent}-         child children       : VisageChildren -         child rules          : VisageRules -         child locrules       : VisageRules +         child children       : VisageChildren+         child rules          : VisageRules+         child locrules       : VisageRules -} -- cata sem_VisageProduction :: VisageProduction ->                         T_VisageProduction-sem_VisageProduction (VProduction _con _children _rules _locrules )  =-    (sem_VisageProduction_VProduction _con (sem_VisageChildren _children ) (sem_VisageRules _rules ) (sem_VisageRules _locrules ) )+sem_VisageProduction (VProduction _con _children _rules _locrules) =+    (sem_VisageProduction_VProduction _con (sem_VisageChildren _children) (sem_VisageRules _rules) (sem_VisageRules _locrules)) -- semantic domain newtype T_VisageProduction = T_VisageProduction (( ATerm)) data Inh_VisageProduction = Inh_VisageProduction {} data Syn_VisageProduction = Syn_VisageProduction {aterm_Syn_VisageProduction :: ATerm}-wrap_VisageProduction (T_VisageProduction sem ) (Inh_VisageProduction )  =+wrap_VisageProduction (T_VisageProduction sem) (Inh_VisageProduction ) =     (let ( _lhsOaterm) =              (sem )-     in  (Syn_VisageProduction _lhsOaterm ))+     in  (Syn_VisageProduction _lhsOaterm)) sem_VisageProduction_VProduction :: ConstructorIdent ->                                     T_VisageChildren ->                                     T_VisageRules ->                                     T_VisageRules ->                                     T_VisageProduction-sem_VisageProduction_VProduction con_ (T_VisageChildren children_ ) (T_VisageRules rules_ ) (T_VisageRules locrules_ )  =+sem_VisageProduction_VProduction con_ (T_VisageChildren children_) (T_VisageRules rules_) (T_VisageRules locrules_) =     (T_VisageProduction (let _lhsOaterm :: ATerm                              _locrulesOisLoc :: Bool                              _rulesOisLoc :: Bool@@ -495,10 +491,10 @@                              ( _childrenIaterms) =                                  (children_ )                              ( _rulesIaterms) =-                                 (rules_ _rulesOisLoc )+                                 (rules_ _rulesOisLoc)                              ( _locrulesIaterms) =-                                 (locrules_ _locrulesOisLoc )-                         in  ( _lhsOaterm)) )+                                 (locrules_ _locrulesOisLoc)+                         in  ( _lhsOaterm))) -- VisageProductions ------------------------------------------- {-    visit 0:@@ -506,27 +502,27 @@          aterms               : [ATerm]    alternatives:       alternative Cons:-         child hd             : VisageProduction -         child tl             : VisageProductions +         child hd             : VisageProduction+         child tl             : VisageProductions       alternative Nil: -} -- cata sem_VisageProductions :: VisageProductions ->                          T_VisageProductions-sem_VisageProductions list  =-    (Prelude.foldr sem_VisageProductions_Cons sem_VisageProductions_Nil (Prelude.map sem_VisageProduction list) )+sem_VisageProductions list =+    (Prelude.foldr sem_VisageProductions_Cons sem_VisageProductions_Nil (Prelude.map sem_VisageProduction list)) -- semantic domain newtype T_VisageProductions = T_VisageProductions (( ([ATerm]))) data Inh_VisageProductions = Inh_VisageProductions {} data Syn_VisageProductions = Syn_VisageProductions {aterms_Syn_VisageProductions :: [ATerm]}-wrap_VisageProductions (T_VisageProductions sem ) (Inh_VisageProductions )  =+wrap_VisageProductions (T_VisageProductions sem) (Inh_VisageProductions ) =     (let ( _lhsOaterms) =              (sem )-     in  (Syn_VisageProductions _lhsOaterms ))+     in  (Syn_VisageProductions _lhsOaterms)) sem_VisageProductions_Cons :: T_VisageProduction ->                               T_VisageProductions ->                               T_VisageProductions-sem_VisageProductions_Cons (T_VisageProduction hd_ ) (T_VisageProductions tl_ )  =+sem_VisageProductions_Cons (T_VisageProduction hd_) (T_VisageProductions tl_) =     (T_VisageProductions (let _lhsOaterms :: ([ATerm])                               _hdIaterm :: ATerm                               _tlIaterms :: ([ATerm])@@ -537,14 +533,14 @@                                   (hd_ )                               ( _tlIaterms) =                                   (tl_ )-                          in  ( _lhsOaterms)) )+                          in  ( _lhsOaterms))) sem_VisageProductions_Nil :: T_VisageProductions sem_VisageProductions_Nil  =     (T_VisageProductions (let _lhsOaterms :: ([ATerm])                               -- "Visage.ag"(line 69, column 17)                               _lhsOaterms =                                   []-                          in  ( _lhsOaterms)) )+                          in  ( _lhsOaterms))) -- VisageRule -------------------------------------------------- {-    visit 0:@@ -556,31 +552,31 @@       alternative VRule:          child fieldattrs     : {[(Identifier,Identifier)]}          child attr           : {Identifier}-         child pat            : VisagePattern -         child rhs            : Expression +         child pat            : VisagePattern+         child rhs            : Expression          child owrt           : {Bool} -} -- cata sem_VisageRule :: VisageRule ->                   T_VisageRule-sem_VisageRule (VRule _fieldattrs _attr _pat _rhs _owrt )  =-    (sem_VisageRule_VRule _fieldattrs _attr (sem_VisagePattern _pat ) (sem_Expression _rhs ) _owrt )+sem_VisageRule (VRule _fieldattrs _attr _pat _rhs _owrt) =+    (sem_VisageRule_VRule _fieldattrs _attr (sem_VisagePattern _pat) (sem_Expression _rhs) _owrt) -- semantic domain newtype T_VisageRule = T_VisageRule (Bool ->                                      ( ATerm)) data Inh_VisageRule = Inh_VisageRule {isLoc_Inh_VisageRule :: Bool} data Syn_VisageRule = Syn_VisageRule {aterm_Syn_VisageRule :: ATerm}-wrap_VisageRule (T_VisageRule sem ) (Inh_VisageRule _lhsIisLoc )  =+wrap_VisageRule (T_VisageRule sem) (Inh_VisageRule _lhsIisLoc) =     (let ( _lhsOaterm) =-             (sem _lhsIisLoc )-     in  (Syn_VisageRule _lhsOaterm ))+             (sem _lhsIisLoc)+     in  (Syn_VisageRule _lhsOaterm)) sem_VisageRule_VRule :: ([(Identifier,Identifier)]) ->                         Identifier ->                         T_VisagePattern ->                         T_Expression ->                         Bool ->                         T_VisageRule-sem_VisageRule_VRule fieldattrs_ attr_ (T_VisagePattern pat_ ) (T_Expression rhs_ ) owrt_  =+sem_VisageRule_VRule fieldattrs_ attr_ (T_VisagePattern pat_) (T_Expression rhs_) owrt_ =     (T_VisageRule (\ _lhsIisLoc ->                        (let _lhsOaterm :: ATerm                             _patIaterm :: ATerm@@ -593,7 +589,7 @@                                 (pat_ )                             ( _rhsIaterm) =                                 (rhs_ )-                        in  ( _lhsOaterm))) )+                        in  ( _lhsOaterm)))) -- VisageRules ------------------------------------------------- {-    visit 0:@@ -603,28 +599,28 @@          aterms               : [ATerm]    alternatives:       alternative Cons:-         child hd             : VisageRule -         child tl             : VisageRules +         child hd             : VisageRule+         child tl             : VisageRules       alternative Nil: -} -- cata sem_VisageRules :: VisageRules ->                    T_VisageRules-sem_VisageRules list  =-    (Prelude.foldr sem_VisageRules_Cons sem_VisageRules_Nil (Prelude.map sem_VisageRule list) )+sem_VisageRules list =+    (Prelude.foldr sem_VisageRules_Cons sem_VisageRules_Nil (Prelude.map sem_VisageRule list)) -- semantic domain newtype T_VisageRules = T_VisageRules (Bool ->                                        ( ([ATerm]))) data Inh_VisageRules = Inh_VisageRules {isLoc_Inh_VisageRules :: Bool} data Syn_VisageRules = Syn_VisageRules {aterms_Syn_VisageRules :: [ATerm]}-wrap_VisageRules (T_VisageRules sem ) (Inh_VisageRules _lhsIisLoc )  =+wrap_VisageRules (T_VisageRules sem) (Inh_VisageRules _lhsIisLoc) =     (let ( _lhsOaterms) =-             (sem _lhsIisLoc )-     in  (Syn_VisageRules _lhsOaterms ))+             (sem _lhsIisLoc)+     in  (Syn_VisageRules _lhsOaterms)) sem_VisageRules_Cons :: T_VisageRule ->                         T_VisageRules ->                         T_VisageRules-sem_VisageRules_Cons (T_VisageRule hd_ ) (T_VisageRules tl_ )  =+sem_VisageRules_Cons (T_VisageRule hd_) (T_VisageRules tl_) =     (T_VisageRules (\ _lhsIisLoc ->                         (let _lhsOaterms :: ([ATerm])                              _hdOisLoc :: Bool@@ -641,10 +637,10 @@                              _tlOisLoc =                                  _lhsIisLoc                              ( _hdIaterm) =-                                 (hd_ _hdOisLoc )+                                 (hd_ _hdOisLoc)                              ( _tlIaterms) =-                                 (tl_ _tlOisLoc )-                         in  ( _lhsOaterms))) )+                                 (tl_ _tlOisLoc)+                         in  ( _lhsOaterms)))) sem_VisageRules_Nil :: T_VisageRules sem_VisageRules_Nil  =     (T_VisageRules (\ _lhsIisLoc ->@@ -652,4 +648,4 @@                              -- "Visage.ag"(line 93, column 17)                              _lhsOaterms =                                  []-                         in  ( _lhsOaterms))) )+                         in  ( _lhsOaterms))))
src-derived/VisagePatterns.hs view
@@ -1,4 +1,3 @@- -- UUAGC 0.9.5 (VisagePatterns.ag) module VisagePatterns where @@ -10,30 +9,30 @@       alternative VAlias:          child field          : {Identifier}          child attr           : {Identifier}-         child pat            : VisagePattern +         child pat            : VisagePattern       alternative VConstr:          child name           : {ConstructorIdent}-         child pats           : VisagePatterns +         child pats           : VisagePatterns       alternative VProduct:          child pos            : {Pos}-         child pats           : VisagePatterns +         child pats           : VisagePatterns       alternative VUnderscore:          child pos            : {Pos}       alternative VVar:          child field          : {Identifier}          child attr           : {Identifier} -}-data VisagePattern = VAlias (Identifier) (Identifier) (VisagePattern) -                   | VConstr (ConstructorIdent) (VisagePatterns) -                   | VProduct (Pos) (VisagePatterns) -                   | VUnderscore (Pos) -                   | VVar (Identifier) (Identifier) +data VisagePattern = VAlias (Identifier) (Identifier) (VisagePattern)+                   | VConstr (ConstructorIdent) (VisagePatterns)+                   | VProduct (Pos) (VisagePatterns)+                   | VUnderscore (Pos)+                   | VVar (Identifier) (Identifier) -- VisagePatterns ---------------------------------------------- {-    alternatives:       alternative Cons:-         child hd             : VisagePattern -         child tl             : VisagePatterns +         child hd             : VisagePattern+         child tl             : VisagePatterns       alternative Nil: -} type VisagePatterns = [VisagePattern]
src-derived/VisageSyntax.hs view
@@ -1,4 +1,3 @@- -- UUAGC 0.9.5 (VisageSyntax.ag) module VisageSyntax where @@ -15,15 +14,15 @@          child tp             : {Type}          child inh            : {Attributes}          child syn            : {Attributes}-         child rules          : VisageRules +         child rules          : VisageRules -}-data VisageChild = VChild (Identifier) (Type) (Attributes) (Attributes) (VisageRules) +data VisageChild = VChild (Identifier) (Type) (Attributes) (Attributes) (VisageRules) -- VisageChildren ---------------------------------------------- {-    alternatives:       alternative Cons:-         child hd             : VisageChild -         child tl             : VisageChildren +         child hd             : VisageChild+         child tl             : VisageChildren       alternative Nil: -} type VisageChildren = [VisageChild]@@ -31,9 +30,9 @@ {-    alternatives:       alternative VGrammar:-         child nonts          : VisageNonterminals +         child nonts          : VisageNonterminals -}-data VisageGrammar = VGrammar (VisageNonterminals) +data VisageGrammar = VGrammar (VisageNonterminals) -- VisageNonterminal ------------------------------------------- {-    alternatives:@@ -41,15 +40,15 @@          child nt             : {NontermIdent}          child inh            : {Attributes}          child syn            : {Attributes}-         child alts           : VisageProductions +         child alts           : VisageProductions -}-data VisageNonterminal = VNonterminal (NontermIdent) (Attributes) (Attributes) (VisageProductions) +data VisageNonterminal = VNonterminal (NontermIdent) (Attributes) (Attributes) (VisageProductions) -- VisageNonterminals ------------------------------------------ {-    alternatives:       alternative Cons:-         child hd             : VisageNonterminal -         child tl             : VisageNonterminals +         child hd             : VisageNonterminal+         child tl             : VisageNonterminals       alternative Nil: -} type VisageNonterminals = [VisageNonterminal]@@ -58,17 +57,17 @@    alternatives:       alternative VProduction:          child con            : {ConstructorIdent}-         child children       : VisageChildren -         child rules          : VisageRules -         child locrules       : VisageRules +         child children       : VisageChildren+         child rules          : VisageRules+         child locrules       : VisageRules -}-data VisageProduction = VProduction (ConstructorIdent) (VisageChildren) (VisageRules) (VisageRules) +data VisageProduction = VProduction (ConstructorIdent) (VisageChildren) (VisageRules) (VisageRules) -- VisageProductions ------------------------------------------- {-    alternatives:       alternative Cons:-         child hd             : VisageProduction -         child tl             : VisageProductions +         child hd             : VisageProduction+         child tl             : VisageProductions       alternative Nil: -} type VisageProductions = [VisageProduction]@@ -82,13 +81,13 @@          child rhs            : {Expression}          child owrt           : {Bool} -}-data VisageRule = VRule ([(Identifier,Identifier)]) (Identifier) (VisagePattern) (Expression) (Bool) +data VisageRule = VRule ([(Identifier,Identifier)]) (Identifier) (VisagePattern) (Expression) (Bool) -- VisageRules ------------------------------------------------- {-    alternatives:       alternative Cons:-         child hd             : VisageRule -         child tl             : VisageRules +         child hd             : VisageRule+         child tl             : VisageRules       alternative Nil: -} type VisageRules = [VisageRule]
src/Ag.hs view
@@ -70,7 +70,7 @@           output3   = Pass3.wrap_Grammar         (Pass3.sem_Grammar grammar2                           ) Pass3.Inh_Grammar  {Pass3.options_Inh_Grammar  = flags'}           grammar3  = Pass3.output_Syn_Grammar   output3           output4   = Pass4.wrap_CGrammar        (Pass4.sem_CGrammar(Pass3.output_Syn_Grammar  output3)) Pass4.Inh_CGrammar {Pass4.options_Inh_CGrammar = flags'}-          output5   = Pass5.wrap_Program         (Pass5.sem_Program (Pass4.output_Syn_CGrammar output4)) Pass5.Inh_Program  {Pass5.options_Inh_Program  = flags', Pass5.pragmaBlocks_Inh_Program = pragmaBlocksTxt, Pass5.importBlocks_Inh_Program = importBlocksTxt, Pass5.textBlocks_Inh_Program = textBlocksDoc, Pass5.optionsLine_Inh_Program = optionsLine, Pass5.mainFile_Inh_Program = mainFile, Pass5.moduleHeader_Inh_Program = mkModuleHeader $ Pass1.moduleDecl_Syn_AG output1, Pass5.mainName_Inh_Program = mkMainName mainName $ Pass1.moduleDecl_Syn_AG output1}+          output5   = Pass5.wrap_Program         (Pass5.sem_Program (Pass4.output_Syn_CGrammar output4)) Pass5.Inh_Program  {Pass5.options_Inh_Program  = flags', Pass5.pragmaBlocks_Inh_Program = pragmaBlocksTxt, Pass5.importBlocks_Inh_Program = importBlocksTxt, Pass5.textBlocks_Inh_Program = textBlocksDoc, Pass5.textBlockMap_Inh_Program = textBlockMap, Pass5.optionsLine_Inh_Program = optionsLine, Pass5.mainFile_Inh_Program = mainFile, Pass5.moduleHeader_Inh_Program = mkModuleHeader $ Pass1.moduleDecl_Syn_AG output1, Pass5.mainName_Inh_Program = mkMainName mainName $ Pass1.moduleDecl_Syn_AG output1}           output6   = PrErr.wrap_Errors          (PrErr.sem_Errors                       errorsToReport) PrErr.Inh_Errors   {PrErr.options_Inh_Errors   = flags'}             dump1    = GrammarDump.wrap_Grammar   (GrammarDump.sem_Grammar grammar1                     ) GrammarDump.Inh_Grammar@@ -105,12 +105,13 @@                             else fatalErrorList                      blocks1                    = (Pass1.blocks_Syn_AG output1) {-SM `Map.unionWith (++)` (Pass3.blocks_Syn_Grammar output3)-}-          (pragmaBlocks, blocks2)    = Map.partitionWithKey (\k _->k=="optpragmas") blocks1-          (importBlocks, textBlocks) = Map.partitionWithKey (\k _->k=="imports"   ) blocks2+          (pragmaBlocks, blocks2)    = Map.partitionWithKey (\(k, at) _->k==BlockPragma && at == Nothing) blocks1+          (importBlocks, textBlocks) = Map.partitionWithKey (\(k, at) _->k==BlockImport && at == Nothing) blocks2                      importBlocksTxt = vlist_sep "" . map addLocationPragma . concat . Map.elems $ importBlocks-          textBlocksDoc   = vlist_sep "" . map addLocationPragma . concat . Map.elems $ textBlocks-          pragmaBlocksTxt = unlines . concat . map fst      . concat . Map.elems $ pragmaBlocks+          textBlocksDoc   = vlist_sep "" . map addLocationPragma . Map.findWithDefault [] (BlockOther, Nothing) $ textBlocks+          pragmaBlocksTxt = unlines . concat . map fst  . concat . Map.elems $ pragmaBlocks+          textBlockMap    = Map.map (vlist_sep "" . map addLocationPragma) . Map.filterWithKey (\(_, at) _ -> at /= Nothing) $ textBlocks                      outputfile = if null output then outputFile input else output           @@ -139,8 +140,8 @@           pluralS n = if n == 1 then "" else "s"        putStr . formatErrors $ PrErr.pp_Syn_Errors output6--      if additionalErrors > 0 +      +      if additionalErrors > 0        then putStr $ "\nPlus " ++ show additionalErrors ++ " more error" ++ pluralS additionalErrors ++                      if additionalWarnings > 0                      then " and " ++ show additionalWarnings ++ " more warning" ++ pluralS additionalWarnings ++ ".\n"
src/CommonTypes.hs view
@@ -8,9 +8,15 @@ import qualified Data.Set as Set  -type Blocks = Map String [([String], Pos)]+type Blocks = Map BlockInfo [([String], Pos)]+type BlockInfo = (BlockType, Maybe NontermIdent)+data BlockType+  = BlockImport+  | BlockPragma+  | BlockOther+  deriving (Eq, Ord, Show) -data Identifier  = Ident {getName::String , getPos::Pos}+data Identifier = Ident { getName::String, getPos::Pos }  instance Eq Identifier where  Ident x _ == Ident y _ = x == y@@ -30,11 +36,17 @@ data ComplexType = List Type                  | Tuple [(Identifier, Type)]                  | Maybe Type+                 | Either Type Type+                 | Map Type Type+                 | IntMap Type  instance Show ComplexType where-  show (List  t ) = "[" ++ show t ++ "]"-  show (Tuple ts) = "(" ++ showList [ show n ++ ": " ++ show t | (n,t) <- ts ] "" ++ ")"-  show (Maybe t ) = "Maybe " ++ show t+  show (List  t )     = "[" ++ show t ++ "]"+  show (Tuple ts)     = "(" ++ showList [ show n ++ ": " ++ show t | (n,t) <- ts ] "" ++ ")"+  show (Maybe t )     = "Maybe " ++ show t+  show (Either t1 t2) = "Either " ++ show t1 ++ " " ++ show t2+  show (Map t1 t2)    = "Map " ++ show t1 ++ " " ++ show t2+  show (IntMap t1)    = "IntMap " ++ show t1  instance Show Type where   show = typeToHaskellString Nothing []@@ -46,6 +58,7 @@ type UseMap      = Map NontermIdent (Map Identifier (String,String,String)) type PragmaMap   = Map NontermIdent (Map ConstructorIdent (Set Identifier)) type AttrMap     = Map NontermIdent (Map ConstructorIdent (Set (Identifier,Identifier)))+type UniqueMap   = Map NontermIdent (Map ConstructorIdent (Map Identifier Identifier)) type Fields      = [(Identifier,Type)] type Derivings   = Map NontermIdent (Set Identifier) type ClassContext = [(Identifier, [String])]@@ -68,8 +81,8 @@ _INST  = identifier "inst" _INST' = identifier "inst'" _FIELD = identifier "field"-_FIRST = identifier "first"-_LAST  = identifier "last"+_FIRST = identifier "first__"+_LAST  = identifier "last__"  sdtype :: NontermIdent -> String sdtype nt = "T_"++getName nt
src/Options.hs view
@@ -52,6 +52,7 @@                , Option []        ["genvisage"] (NoArg genVisageOpt)  "Generate output for the AG visualizer Visage"                , Option []        ["genattrlist"] (NoArg genAttrListOpt) "Generate a list of all explicitly defined attributes (outside irrefutable patterns)"                , Option []        ["forceirrefutable"] (OptArg forceIrrefutableOpt "file") "Force a set of explicitly defined attributes to be irrefutable, specify file containing the attribute set"+               , Option []        ["uniquedispenser"] (ReqArg uniqueDispenserOpt "name") "The Haskell function to call in the generated code"                ]  allc = "dcfsprm"@@ -102,6 +103,7 @@                       , genvisage :: Bool                       , genAttributeList :: Bool                       , forceIrrefutables :: Maybe String+                      , uniqueDispenser :: String                       } deriving Show noOptions = Options { moduleName    = NoName                     , dataTypes     = False@@ -149,6 +151,7 @@                     , genvisage      = False                     , genAttributeList = False                     , forceIrrefutables = Nothing+                    , uniqueDispenser = "nextUnique"                     }  @@ -196,6 +199,7 @@ genVisageOpt opts = opts{genvisage = True } genAttrListOpt opts = opts { genAttributeList = True } forceIrrefutableOpt mbNm opts = opts { forceIrrefutables = mbNm }+uniqueDispenserOpt nm opts = opts { uniqueDispenser = nm }  outputOpt  file  opts = opts{outputFiles  = file : outputFiles opts}             searchPathOpt  path  opts = opts{searchPath  = extract path ++ searchPath opts}            
src/Parser.hs view
@@ -139,9 +139,12 @@ pElems :: AGParser Elems
 pElems = pList_ng pElem
 
-pComplexType =  List <$> pBracks pTypeEncapsulated 
-            <|> Maybe <$ pMAYBE <*> pType
-            <|> tuple <$> pParens (pListSep pComma field)
+pComplexType =  List   <$> pBracks pTypeEncapsulated 
+            <|> Maybe  <$ pMAYBE <*> pType+            <|> Either <$ pEITHER <*> pType <*> pType+            <|> Map    <$ pMAP <*> pTypePrimitive <*> pType+            <|> IntMap <$ pINTMAP <*> pType
+            <|> tuple  <$> pParens (pListSep pComma field)
  where field = (,) <$> ((Just <$> pIdentifier <* pColon) `opt` Nothing) <*> pTypeEncapsulated
        tuple xs = Tuple [(fromMaybe (Ident ("x"++show n) noPos) f, t) 
                         | (n,(f,t)) <- zip [1..] xs
@@ -189,8 +192,8 @@               <*> pCodescrap'               <*> pCodescrap'               <*> pCodescrap'-     <|> codeBlock <$> (pIdentifier <|> pSucceed (Ident "" noPos)) <*> pCodeBlock <?> "a statement"
-           where codeBlock nm (txt,pos) = Txt pos nm (lines txt)+     <|> codeBlock <$> (pIdentifier <|> pSucceed (Ident "" noPos)) <*> ((Just <$ pATTACH <*> pIdentifierU) <|> pSucceed Nothing) <*> pCodeBlock <?> "a statement"
+           where codeBlock nm mbNt (txt,pos) = Txt pos nm mbNt (lines txt)   -- Insertion is expensive for pCodeBlock in order to prevent infinite inserts.
@@ -218,8 +221,8 @@  pTypeNt :: AGParser Type pTypeNt-  =   (\nt -> NT nt []) <$> pIdentifierU-  <|> pParens (NT <$> pIdentifierU <*> pList pTypeHaskellAnyAsString)+  =   ((\nt -> NT nt []) <$> pIdentifierU <?> "nonterminal name (no brackets)")+  <|> (pParens (NT <$> pIdentifierU <*> pList pTypeHaskellAnyAsString) <?> "nonterminal name with parameters (using parenthesis)")  pTypeHaskellAnyAsString :: AGParser String pTypeHaskellAnyAsString@@ -233,11 +236,15 @@   =   pParens pTypeEncapsulated   <|> NT <$> pIdentifierU <*> pList pTypeHaskellAnyAsString   <|> (Haskell . getName) <$> pIdentifier-  <|> Haskell <$> pCodescrap'  <?> "a type"
+  <|> pTypePrimitive++pTypePrimitive :: AGParser Type+pTypePrimitive+  = Haskell <$> pCodescrap'  <?> "a type"
 
 pType :: AGParser Type
 pType =  pTypeNt
-     <|> Haskell <$> pCodescrap'  <?> "a type"
+     <|> pTypePrimitive
 
 
 pInhAttrNames :: AGParser AttrNames
@@ -321,8 +328,8 @@ nl2sp x = x
 
 pLocDecl :: AGParser SemDef
-pLocDecl =   (\ident tp -> TypeDef ident tp)
-              <$ pDot <*> pIdentifier <* pColon <*> pLocType+pLocDecl = pDot <**> (pIdentifier <**> (pColon <**> (   (\tp _ ident _  -> TypeDef ident tp) <$> pLocType+                                                    <|> (\ref _ ident _ -> UniqueDef ident ref) <$ pUNIQUEREF <*> pIdentifier )))  pLocType = (Haskell . getName) <$> pIdentifierU
        <|> Haskell <$> pCodescrap'  <?> "a type"@@ -372,20 +379,25 @@ 
 pSEM, pATTR, pDATA, pUSE, pLOC,pINCLUDE, pTYPE, pEquals, pColonEquals, pTilde,
       pBar, pColon, pLHS,pINST,pSET,pDERIVING,pMinus,pIntersect,pDoubleArrow,pArrow,
-      pDot, pUScore, pEXT,pAt,pStar, pSmaller, pWRAPPER, pPRAGMA, pMAYBE, pMODULE
+      pDot, pUScore, pEXT,pAt,pStar, pSmaller, pWRAPPER, pPRAGMA, pMAYBE, pEITHER, pMAP, pINTMAP,+      pMODULE, pATTACH, pUNIQUEREF
       :: AGParser Pos
 pSET         = pCostReserved 90 "SET"     <?> "SET"
 pDERIVING    = pCostReserved 90 "DERIVING"<?> "DERIVING"
 pWRAPPER     = pCostReserved 90 "WRAPPER" <?> "WRAPPER"
 pPRAGMA      = pCostReserved 90 "PRAGMA"  <?> "PRAGMA"-pSEMPRAGMA   = pCostReserved 90 "SEMPRAGMA" <?> "SEMPRAGMA"
+pSEMPRAGMA   = pCostReserved 90 "SEMPRAGMA" <?> "SEMPRAGMA"+pATTACH      = pCostReserved 90 "ATTACH"  <?> "ATTACH"
 pDATA        = pCostReserved 90 "DATA"    <?> "DATA"
 pEXT         = pCostReserved 90 "EXT"     <?> "EXT"
 pATTR        = pCostReserved 90 "ATTR"    <?> "ATTR"
 pSEM         = pCostReserved 90 "SEM"     <?> "SEM"
 pINCLUDE     = pCostReserved 90 "INCLUDE" <?> "INCLUDE"
 pTYPE        = pCostReserved 90 "TYPE"    <?> "TYPE"
-pMAYBE       = pCostReserved 5  "MAYBE"   <?> "MAYBE"
+pMAYBE       = pCostReserved 5  "MAYBE"   <?> "MAYBE"+pEITHER      = pCostReserved 5  "EITHER"  <?> "EITHER"+pMAP         = pCostReserved 5  "MAP"     <?> "MAP"+pINTMAP      = pCostReserved 5  "INTMAP"  <?> "INTMAP"
 pUSE         = pCostReserved 5  "USE"     <?> "USE"
 pLOC         = pCostReserved 5  "loc"     <?> "loc"
 pLHS         = pCostReserved 5  "lhs"     <?> "loc"@@ -405,4 +417,5 @@ pStar        = pCostReserved 5  "*"       <?> "*" pSmaller     = pCostReserved 5  "<"       <?> "<" pMODULE      = pCostReserved 5  "MODULE"  <?> "MODULE"+pUNIQUEREF   = pCostReserved 5  "UNIQUEREF" <?> "UNIQUEREF" 
src/Pretty.hs view
@@ -1,120 +1,94 @@-{-# OPTIONS_GHC -fglasgow-exts #-}--- Layer on top of the original UU.Pretty class+-------------------------------------------------------------------------+-- Subset of UU.Pretty, based on very simple pretty printing+-- Extended with line-nr tracking+-------------------------------------------------------------------------+ module Pretty-  ( (>|<)-  , (>-<)+  ( PP_Doc, PP(..)+  , disp++  , (>|<), (>-<)   , (>#<)-  , text-  , empty+  , ppWithLineNr+  , hlist, vlist, hv+  , fill   , indent+   , pp_block-  , hlist-  , vlist   , vlist_sep-  , fill   , pp_parens   , hv_sp-  , ppWithLineNr-  , disp-  , PP_Doc-  , PP (..)-  ) where -import qualified UU.Pretty as U-import Data.List(intersperse)-------- Type classes and data types that mimic UU.Pretty-----class Show a => PP a where-  pp :: a -> PP_Doc-  pp = text . show--  ppList :: [a] -> PP_Doc-  ppList as = if null as-              then empty-              else foldr (>|<) empty . map pp $ as--instance PP PP_Doc where-  pp = id--instance Show PP_Doc where-  show (PP_Doc f) = let (doc, _, _) = f 1-                    in show doc--instance PP String where-  pp = text--instance PP Char where-  pp = text . (\c -> [c])-+  , empty, text+  )+  where -newtype PP_Doc = PP_Doc (Int -> (U.PP_Doc, Int, Bool))+import Data.List(intersperse)+  +-------------------------------------------------------------------------+-- Doc structure+------------------------------------------------------------------------- -fromInternal :: PP a => a -> Int -> (U.PP_Doc, Int, Bool)-fromInternal x l-  = let (PP_Doc f) = pp x-    in f l+data Doc+  = Emp+  | Str			!String					-- basic string+  | Hor			Doc  !Doc				-- horizontal positioning+  | Ver			Doc  !Doc				-- vertical positioning+  | Ind			!Int Doc				-- indent+  | Line        (Int -> Doc)            -- line nr +type PP_Doc = Doc ------ Layer on top of primitive combinators---+-------------------------------------------------------------------------+-- Basic combinators+------------------------------------------------------------------------- -infixr 3 >|<-infixr 2 >-<-infixr 3 >#<+infixr 3 >|<, >#<+infixr 2 >-<   (>|<) :: (PP a, PP b) => a -> b -> PP_Doc-x >|< y-  = PP_Doc $-      \l -> let (p, n, s) = fromInternal x l-                (q, m, t) = fromInternal y n-            in  (p U.>|< q, m, s && t)+l >|< r = pp l `Hor` pp r  (>-<) :: (PP a, PP b) => a -> b -> PP_Doc-x >-< y-  = PP_Doc $-      \l -> let (p, n, s) = fromInternal x l-                (q, m, t) = fromInternal y (if s then n else n+1)-             in (p U.>-< q, if t then m-1 else m, s && t)+l >-< r = pp l `Ver` pp r +(>#<) :: (PP a, PP b) => a -> b -> PP_Doc+l >#< r  =  l >|< " " >|< r++indent :: PP a => Int -> a -> PP_Doc+indent i d = Ind i $ pp d+ text :: String -> PP_Doc text s   = let ls = lines s         ls' | null ls   = [""]             | otherwise = ls-    in vlist (map ppLine ls')-  where-    ppLine txt-      = PP_Doc $-          \l -> (U.text txt, l, False)+    in vlist (map Str ls')  empty :: PP_Doc-empty-  = PP_Doc $-      \l -> (U.empty, l, True)+empty = Emp +ppWithLineNr :: PP a => (Int -> a) -> PP_Doc+ppWithLineNr f = Line (pp . f) ------ Layer on top of the higher-level combinators--- (shameless copy of their definition)---+-------------------------------------------------------------------------+-- Derived combinators+------------------------------------------------------------------------- -(>#<) :: (PP a, PP b) => a -> b -> PP_Doc-l >#< r = l >|< " " >|< r+hlist, vlist :: PP a => [a] -> PP_Doc+vlist [] = empty+vlist as = foldr  (>-<) empty as+hlist [] = empty+hlist as = foldr  (>|<) empty as -hlist :: PP a => [a] -> PP_Doc-hlist = foldr (>|<) empty+hv :: PP a => [a] -> PP_Doc+hv = vlist -vlist :: PP a => [a] -> PP_Doc-vlist = foldr (>-<) empty+hv_sp :: PP a => [a] -> PP_Doc+hv_sp = foldr (>#<) empty -vlist_sep :: (PP a, PP b) => a -> [b] -> PP_Doc-vlist_sep sep lst-  = vlist (intersperse (pp sep) (map pp lst))+fill :: PP a => [a] -> PP_Doc+fill = hlist  pp_block:: (PP a, PP b, PP c) => a -> b -> c -> [PP_Doc] -> PP_Doc pp_block o c s as = pp o >|< hlist (intersperse (pp s) as) >|< pp c@@ -122,30 +96,77 @@ pp_parens :: PP a => a -> PP_Doc pp_parens p = '(' >|< p >|< ')' +vlist_sep :: (PP a, PP b) => a -> [b] -> PP_Doc+vlist_sep sep lst+  = vlist (intersperse (pp sep) (map pp lst)) ------ Layer on top of the higher-level "smart" combinators--- (dump alternative implementation)---+-------------------------------------------------------------------------+-- PP class+------------------------------------------------------------------------- -indent :: PP a => Int -> a -> PP_Doc-indent n p = foldr (>#<) (pp p) (replicate n empty)+class Show a => PP a where+  pp     :: a   -> PP_Doc+  pp       = text . show -fill :: PP a => [a] -> PP_Doc-fill = foldr (>#<) empty+  ppList :: [a] -> PP_Doc+  ppList as = hlist as -hv_sp :: PP a => [a] -> PP_Doc-hv_sp = foldr (>#<) empty+instance PP Doc where+  pp     = id +instance PP Char where+  pp c   = text [c]+  ppList = text --- Special combinator that exposes the line number-ppWithLineNr :: (Int -> PP_Doc) -> PP_Doc-ppWithLineNr f-  = PP_Doc $-      \l -> fromInternal (f l) l+instance PP a => PP [a] where+  pp = ppList --- Render function-disp :: PP a => a -> Int -> String -> String-disp p n = let (doc, _, _) = fromInternal (pp p) 1-            in U.disp doc n+instance Show Doc where+  show p = disp p 200 ""++instance PP Int where+  pp = text . show++instance PP Float where+  pp = text . show++-------------------------------------------------------------------------+-- Observation+-------------------------------------------------------------------------++isEmpty :: PP_Doc -> Bool+isEmpty Emp         = True+isEmpty (Ver d1 d2) = isEmpty d1 && isEmpty d2+isEmpty (Hor d1 d2) = isEmpty d1 && isEmpty d2+isEmpty (Ind _  d ) = isEmpty d+isEmpty _           = False++-------------------------------------------------------------------------+-- Rendering+-------------------------------------------------------------------------++disp  ::  PP_Doc -> Int -> ShowS+disp d _ s+  = r+  where (r,_,_) = put 0 1 d s+        put p l d s+          = case d of+              Emp              -> (s,p,l)+              Str s'           -> (s' ++ s,p + length s',l)+              Ind i  d         -> (ind ++ r,p', l')+                               where (r,p',l') = put (p+i) l d s+                                     ind = replicate i ' '+              Hor d1 d2        -> (r1,p2,l2)+                               where (r1,p1,l1) = put p  l  d1 r2+                                     (r2,p2,l2) = put p1 l1 d2 s+              Ver d1 d2 | isEmpty d1+                               -> put p l d2 s+              Ver d1 d2 | isEmpty d2+                               -> put p l d1 s+              Ver d1 d2        -> (r1,p2,l2)+                               where (r1,p1,l1) = put p l d1 $ "\n" ++ ind ++ r2+                                     (r2,p2,l2) = put p (l1+1) d2 s+                                     ind = replicate p ' '+              Line f           -> (r,p',l')+                               where (r,p',l') = put p l (f l) s 
src/Scanner.hs view
@@ -1,4 +1,3 @@-
 module Scanner where
 import TokenDef
 import UU.Scanner.Position
@@ -114,8 +113,8 @@ ident = span isValid
  where isValid x = isAlphaNum x || x =='_' || x == '\''
 keywords = [ "DATA", "EXT", "ATTR", "SEM","TYPE", "USE", "loc","lhs", "inst", "INCLUDE"
-           , "SET","DERIVING","FOR", "WRAPPER", "MAYBE"
-           , "PRAGMA", "SEMPRAGMA", "MODULE"
+           , "SET","DERIVING","FOR", "WRAPPER", "MAYBE", "EITHER", "MAP", "INTMAP"
+           , "PRAGMA", "SEMPRAGMA", "MODULE", "ATTACH", "UNIQUEREF"
            ]
 
 ncomment c p ('-':'}':xs) = advc' 2 p c  xs
src/Version.hs view
@@ -1,4 +1,4 @@ module Version where
 
 banner :: String
-banner = "Attribute Grammar compiler / HUT project. Version 0.9.6"
+banner = "Attribute Grammar compiler / HUT project. Version 0.9.7"
uuagc.cabal view
@@ -1,7 +1,7 @@ cabal-version: >=1.2 build-type: Simple name: uuagc-version: 0.9.6+version: 0.9.7 license: GPL license-file: LICENSE maintainer: Arie Middelkoop <ariem@cs.uu.nl>
uuagc.cabal-for-ghc-6.6 view
@@ -1,5 +1,5 @@ name: uuagc-version: 0.9.6+version: 0.9.7 license: GPL license-file: LICENSE maintainer: Arie Middelkoop <ariem@cs.uu.nl>