packages feed

uuagc 0.9.38.4 → 0.9.38.5

raw patch · 4 files changed

+2656/−2652 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

src-derived/DefaultRules.hs view
@@ -1,2654 +1,2658 @@ {-# OPTIONS_GHC -XBangPatterns #-} --- UUAGC 0.9.38.1 (DefaultRules.ag)-module DefaultRules where-{-# LINE 10 "DefaultRules.ag" #-}--import qualified List (delete,intersperse)--import qualified Data.Set as Set-import qualified Data.Map as Map-import Data.Map(Map)-import qualified Data.Sequence as Seq-import Data.Sequence(Seq,(><))-import UU.Scanner.Position(noPos)-import Pretty-import Maybe-import HsToken-import HsTokenScanner-import Data.List(intersperse)--import AbstractSyntax-import ErrorMessages--import Options(Options,modcopy,rename)-{-# LINE 26 "../src-derived/DefaultRules.hs" #-}--{-# LINE 2 "./AbstractSyntax.ag" #-}---- AbstractSyntax.ag imports-import Data.Set(Set)-import Data.Map(Map)-import Patterns    (Pattern(..),Patterns)-import Expression  (Expression(..))-import CommonTypes-{-# LINE 36 "../src-derived/DefaultRules.hs" #-}--{-# LINE 2 "./Patterns.ag" #-}---- Patterns.ag imports-import UU.Scanner.Position(Pos)-import CommonTypes (ConstructorIdent,Identifier)-{-# LINE 43 "../src-derived/DefaultRules.hs" #-}-{-# LINE 61 "DefaultRules.ag" #-}--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.><) 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) -      ]-    )--{-# LINE 91 "../src-derived/DefaultRules.hs" #-}--{-# LINE 172 "DefaultRules.ag" #-}--	-	-	-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 Nothing-        (Alias f1 a1 (Underscore noPos) []) -        expr -        False -        origin-        False---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.singleton (MissingRule nt con fld a)-                                     )-                  Just f -                   | f == _ACHILD -> ( fieldName a-                                     , Seq.singleton (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.singleton (MissingRule nt con fld a)-                                     )-                  Just f -                   | f == _ACHILD -> ( [AGLocal a noPos Nothing]-                                     , Seq.singleton (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-{-# LINE 244 "../src-derived/DefaultRules.hs" #-}--{-# LINE 403 "DefaultRules.ag" #-}--addAugments :: (Identifier, [Expression]) -> [Rule] -> [Rule]-addAugments (_, exprs) rules-  | null exprs = rules-addAugments (syn, exprs) rules-  = [rule] ++ funRules ++ map modify rules-  where-    rule = Rule Nothing (Alias _LHS syn (Underscore noPos) []) rhs False "augmented rule" False-    rhs  = Expression noPos tks-    tks  = [ HsToken "foldr ($) " noPos, AGLocal substSyn noPos Nothing, HsToken " [" noPos] ++ funs ++ [HsToken "]" noPos]-    funs = intersperse (HsToken ", " noPos) (map (\n -> AGLocal n noPos Nothing) funNames)--    substSyn = Ident (show syn ++ "_augmented_syn") (getPos syn)-    funNames = zipWith (\i _ -> Ident (show syn ++ "_augmented_f" ++ show i) (getPos syn)) [1..] exprs-    funRules = zipWith (\name expr -> Rule Nothing (Alias _LOC name (Underscore noPos) []) expr False "augment function" False) funNames exprs--    modify (Rule mbNm pat rhs owrt origin expl)-      | containsSyn pat = Rule mbNm (modifyPat pat) rhs owrt origin expl-    modify r = r--    containsSyn (Constr _ pats)   = any containsSyn pats-    containsSyn (Product _ pats)  = any containsSyn pats-    containsSyn (Irrefutable pat) = containsSyn pat-    containsSyn (Alias field attr pat parts) = (field == _LHS && attr == syn) || containsSyn pat || any containsSyn parts-    containsSyn _ = False--    modifyPat (Constr name pats) = Constr name (map modifyPat pats)-    modifyPat (Product pos pats) = Product pos (map modifyPat pats)-    modifyPat (Irrefutable pat)  = Irrefutable (modifyPat pat)-    modifyPat (Alias field attr pat parts)-      | field == _LHS && attr == syn = Alias _LOC substSyn (modifyPat pat) (map modifyPat parts)-      | otherwise                    = Alias field attr (modifyPat pat) (map modifyPat parts)-    modifyPat p = p--addArounds :: (Identifier, [Expression]) -> [Rule] -> [Rule]-addArounds (_, exprs) rules | null exprs = rules-addArounds (child, exprs) rules-  = [rule] ++ funRules ++ rules-  where-    rule = Rule Nothing (Alias _LOC childLoc (Underscore noPos) []) rhs False "around rule" False-    rhs  = Expression noPos tks-    tks  = [ HsToken "\\s -> foldr ($) s " noPos, HsToken " [" noPos] ++ funs ++ [HsToken "]" noPos]-    funs = intersperse (HsToken ", " noPos) (map (\n -> AGLocal n noPos Nothing) funNames)--    childLoc = Ident (show child ++ "_around") (getPos child)-    funNames = zipWith (\i _ -> Ident (show child ++ "_around_f" ++ show i) (getPos child)) [1..] exprs-    funRules = zipWith (\name expr -> Rule Nothing (Alias _LOC name (Underscore noPos) []) expr False "around function" False) funNames exprs--addMerges :: (Identifier, (Identifier,[Identifier],Expression)) -> [Rule] -> [Rule]-addMerges (target,(_,_,expr)) rules-  = rule : rules-  where-    rule = Rule Nothing (Alias _LOC childLoc (Underscore noPos) []) expr False "merge rule" False-    childLoc = Ident (show target ++ "_merge") (getPos target)-{-# LINE 301 "../src-derived/DefaultRules.hs" #-}--{-# LINE 518 "DefaultRules.ag" #-}--{- -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 (Just nm) pat expr owrt origin expl) uniq-  = let pos = getPos nm-        r = Rule Nothing (Alias _LOC (Ident ("_rule_" ++ show nm) pos) (Underscore pos) []) expr owrt origin expl-        expr' = Expression pos tks-        tks = [AGLocal (Ident ("_rule_" ++ show nm) pos) pos (Just ("Indirection to rule " ++ show nm))]-        (rs,uniq') = multiRule (Rule Nothing pat expr' owrt origin False) uniq-    in (r:rs, uniq')--multiRule (Rule Nothing pat expr owrt origin expl) uniq-  =  let f :: Bool -> (Pattern->Pattern) -> Expression -> Pattern -> Int -> (Pattern, ([Rule], Int))-         f expl' 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 False (us (length xs1)) freshExpr p n1-                                      in  (x2:xs1, rs2++rs1, n2)-                 (xs9,rs9,n9) = foldr g ([], [], n+1) pats-             in  ( freshPat-                 , ( Rule Nothing (w freshPat) e owrt origin expl' : rs9-                   , n9-                   )-                 )-         f expl' w e p n -           = ( p-             , ( [Rule Nothing (w p) e owrt origin expl']-               , n-               )-             )-     in snd (f expl id expr pat uniq)--{-# LINE 359 "../src-derived/DefaultRules.hs" #-}--- Child --------------------------------------------------------{--   visit 0:-      inherited attributes:-         con                  : ConstructorIdent-         cr                   : Bool-         merged               : Set Identifier-         nt                   : NontermIdent-      synthesized attributes:-         errors               : Seq Error-         field                :  (Identifier,Type,Maybe (Maybe Type)) -         inherited            : Attributes-         name                 : Identifier-         output               : SELF -         synthesized          : Attributes-   alternatives:-      alternative Child:-         child name           : {Identifier}-         child tp             : {Type}-         child inh            : {Attributes}-         child syn            : {Attributes}-         child virtual        : {Maybe (Maybe Type)}-         visit 0:-            local output      : _--}--- cata-sem_Child :: Child  ->-             T_Child -sem_Child !(Child _name _tp _inh _syn _virtual )  =-    (sem_Child_Child _name _tp _inh _syn _virtual )--- semantic domain-newtype T_Child  = T_Child (ConstructorIdent ->-                            Bool ->-                            (Set Identifier) ->-                            NontermIdent ->-                            ( (Seq Error),( (Identifier,Type,Maybe (Maybe Type)) ),Attributes,Identifier,Child ,Attributes))-data Inh_Child  = Inh_Child {con_Inh_Child :: !(ConstructorIdent),cr_Inh_Child :: !(Bool),merged_Inh_Child :: !((Set Identifier)),nt_Inh_Child :: !(NontermIdent)}-data Syn_Child  = Syn_Child {errors_Syn_Child :: !((Seq Error)),field_Syn_Child :: !(( (Identifier,Type,Maybe (Maybe Type)) )),inherited_Syn_Child :: !(Attributes),name_Syn_Child :: !(Identifier),output_Syn_Child :: !(Child ),synthesized_Syn_Child :: !(Attributes)}-wrap_Child :: T_Child  ->-              Inh_Child  ->-              Syn_Child -wrap_Child !(T_Child sem ) !(Inh_Child _lhsIcon _lhsIcr _lhsImerged _lhsInt )  =-    (let ( !_lhsOerrors,!_lhsOfield,!_lhsOinherited,!_lhsOname,!_lhsOoutput,!_lhsOsynthesized) = sem _lhsIcon _lhsIcr _lhsImerged _lhsInt -     in  (Syn_Child _lhsOerrors _lhsOfield _lhsOinherited _lhsOname _lhsOoutput _lhsOsynthesized ))-sem_Child_Child :: Identifier ->-                   Type ->-                   Attributes ->-                   Attributes ->-                   (Maybe (Maybe Type)) ->-                   T_Child -sem_Child_Child !name_ !tp_ !inh_ !syn_ !virtual_  =-    (T_Child (\ (!_lhsIcon)-                (!_lhsIcr)-                (!_lhsImerged)-                (!_lhsInt) ->-                  (case (({-# LINE 115 "DefaultRules.ag" #-}-                          Seq.empty-                          {-# LINE 417 "DefaultRules.hs" #-}-                          )) of-                   { !_lhsOerrors ->-                   (case (({-# LINE 477 "DefaultRules.ag" #-}-                           (name_,tp_,virtual_)-                           {-# LINE 422 "DefaultRules.hs" #-}-                           )) of-                    { !_lhsOfield ->-                    (case (({-# LINE 155 "DefaultRules.ag" #-}-                            inh_-                            {-# LINE 427 "DefaultRules.hs" #-}-                            )) of-                     { !_lhsOinherited ->-                     (case (({-# LINE 146 "DefaultRules.ag" #-}-                             name_-                             {-# LINE 432 "DefaultRules.hs" #-}-                             )) of-                      { !_lhsOname ->-                      (case (({-# LINE 498 "DefaultRules.ag" #-}-                              Child name_ tp_ inh_ syn_ virtual_-                              {-# LINE 437 "DefaultRules.hs" #-}-                              )) of-                       { !_output ->-                       (case (({-# LINE 498 "DefaultRules.ag" #-}-                               _output-                               {-# LINE 442 "DefaultRules.hs" #-}-                               )) of-                        { !_lhsOoutput ->-                        (case (({-# LINE 156 "DefaultRules.ag" #-}-                                if name_ `Set.member` _lhsImerged-                                then Map.empty-                                else syn_-                                {-# LINE 449 "DefaultRules.hs" #-}-                                )) of-                         { !_lhsOsynthesized ->-                         ( _lhsOerrors,_lhsOfield,_lhsOinherited,_lhsOname,_lhsOoutput,_lhsOsynthesized) }) }) }) }) }) }) })) )--- Children -----------------------------------------------------{--   visit 0:-      inherited attributes:-         con                  : ConstructorIdent-         cr                   : Bool-         merged               : Set Identifier-         nt                   : NontermIdent-      synthesized attributes:-         errors               : Seq Error-         fields               : [(Identifier,Type,Maybe (Maybe Type))]-         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 ->-                                  (Set Identifier) ->-                                  NontermIdent ->-                                  ( (Seq Error),([(Identifier,Type,Maybe (Maybe Type))]),([(Identifier, Attributes)]),Children ,([(Identifier, Attributes)])))-data Inh_Children  = Inh_Children {con_Inh_Children :: !(ConstructorIdent),cr_Inh_Children :: !(Bool),merged_Inh_Children :: !((Set Identifier)),nt_Inh_Children :: !(NontermIdent)}-data Syn_Children  = Syn_Children {errors_Syn_Children :: !((Seq Error)),fields_Syn_Children :: !(([(Identifier,Type,Maybe (Maybe Type))])),inputs_Syn_Children :: !(([(Identifier, Attributes)])),output_Syn_Children :: !(Children ),outputs_Syn_Children :: !(([(Identifier, Attributes)]))}-wrap_Children :: T_Children  ->-                 Inh_Children  ->-                 Syn_Children -wrap_Children !(T_Children sem ) !(Inh_Children _lhsIcon _lhsIcr _lhsImerged _lhsInt )  =-    (let ( !_lhsOerrors,!_lhsOfields,!_lhsOinputs,!_lhsOoutput,!_lhsOoutputs) = sem _lhsIcon _lhsIcr _lhsImerged _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)-                   (!_lhsImerged)-                   (!_lhsInt) ->-                     (case (({-# LINE 34 "DefaultRules.ag" #-}-                             _lhsInt-                             {-# LINE 506 "DefaultRules.hs" #-}-                             )) of-                      { !_tlOnt ->-                      (case (({-# LINE 662 "DefaultRules.ag" #-}-                              _lhsImerged-                              {-# LINE 511 "DefaultRules.hs" #-}-                              )) of-                       { !_tlOmerged ->-                       (case (({-# LINE 47 "DefaultRules.ag" #-}-                               _lhsIcr-                               {-# LINE 516 "DefaultRules.hs" #-}-                               )) of-                        { !_tlOcr ->-                        (case (({-# LINE 35 "DefaultRules.ag" #-}-                                _lhsIcon-                                {-# LINE 521 "DefaultRules.hs" #-}-                                )) of-                         { !_tlOcon ->-                         (case (tl_ _tlOcon _tlOcr _tlOmerged _tlOnt ) of-                          { ( !_tlIerrors,!_tlIfields,!_tlIinputs,!_tlIoutput,!_tlIoutputs) ->-                              (case (({-# LINE 34 "DefaultRules.ag" #-}-                                      _lhsInt-                                      {-# LINE 528 "DefaultRules.hs" #-}-                                      )) of-                               { !_hdOnt ->-                               (case (({-# LINE 662 "DefaultRules.ag" #-}-                                       _lhsImerged-                                       {-# LINE 533 "DefaultRules.hs" #-}-                                       )) of-                                { !_hdOmerged ->-                                (case (({-# LINE 47 "DefaultRules.ag" #-}-                                        _lhsIcr-                                        {-# LINE 538 "DefaultRules.hs" #-}-                                        )) of-                                 { !_hdOcr ->-                                 (case (({-# LINE 35 "DefaultRules.ag" #-}-                                         _lhsIcon-                                         {-# LINE 543 "DefaultRules.hs" #-}-                                         )) of-                                  { !_hdOcon ->-                                  (case (hd_ _hdOcon _hdOcr _hdOmerged _hdOnt ) of-                                   { ( !_hdIerrors,!_hdIfield,!_hdIinherited,!_hdIname,!_hdIoutput,!_hdIsynthesized) ->-                                       (case (({-# LINE 115 "DefaultRules.ag" #-}-                                               _hdIerrors Seq.>< _tlIerrors-                                               {-# LINE 550 "DefaultRules.hs" #-}-                                               )) of-                                        { !_lhsOerrors ->-                                        (case (({-# LINE 473 "DefaultRules.ag" #-}-                                                _hdIfield : _tlIfields-                                                {-# LINE 555 "DefaultRules.hs" #-}-                                                )) of-                                         { !_lhsOfields ->-                                         (case (({-# LINE 161 "DefaultRules.ag" #-}-                                                 (_hdIname, _hdIinherited) : _tlIinputs-                                                 {-# LINE 560 "DefaultRules.hs" #-}-                                                 )) of-                                          { !_lhsOinputs ->-                                          (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                  (:) _hdIoutput _tlIoutput-                                                  {-# LINE 565 "DefaultRules.hs" #-}-                                                  )) of-                                           { !_output ->-                                           (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                   _output-                                                   {-# LINE 570 "DefaultRules.hs" #-}-                                                   )) of-                                            { !_lhsOoutput ->-                                            (case (({-# LINE 162 "DefaultRules.ag" #-}-                                                    (_hdIname, _hdIsynthesized) : _tlIoutputs-                                                    {-# LINE 575 "DefaultRules.hs" #-}-                                                    )) of-                                             { !_lhsOoutputs ->-                                             ( _lhsOerrors,_lhsOfields,_lhsOinputs,_lhsOoutput,_lhsOoutputs) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )-sem_Children_Nil :: T_Children -sem_Children_Nil  =-    (T_Children (\ (!_lhsIcon)-                   (!_lhsIcr)-                   (!_lhsImerged)-                   (!_lhsInt) ->-                     (case (({-# LINE 115 "DefaultRules.ag" #-}-                             Seq.empty-                             {-# LINE 587 "DefaultRules.hs" #-}-                             )) of-                      { !_lhsOerrors ->-                      (case (({-# LINE 474 "DefaultRules.ag" #-}-                              []-                              {-# LINE 592 "DefaultRules.hs" #-}-                              )) of-                       { !_lhsOfields ->-                       (case (({-# LINE 163 "DefaultRules.ag" #-}-                               []-                               {-# LINE 597 "DefaultRules.hs" #-}-                               )) of-                        { !_lhsOinputs ->-                        (case (({-# LINE 498 "DefaultRules.ag" #-}-                                []-                                {-# LINE 602 "DefaultRules.hs" #-}-                                )) of-                         { !_output ->-                         (case (({-# LINE 498 "DefaultRules.ag" #-}-                                 _output-                                 {-# LINE 607 "DefaultRules.hs" #-}-                                 )) of-                          { !_lhsOoutput ->-                          (case (({-# LINE 164 "DefaultRules.ag" #-}-                                  []-                                  {-# LINE 612 "DefaultRules.hs" #-}-                                  )) 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 quantMap       : {QuantMap}-         child uniqueMap      : {UniqueMap}-         child augmentsMap    : {Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))}-         child aroundsMap     : {Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))}-         child mergeMap       : {Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))}-         visit 0:-            local output      : _--}--- cata-sem_Grammar :: Grammar  ->-               T_Grammar -sem_Grammar !(Grammar _typeSyns _useMap _derivings _wrappers _nonts _pragmas _manualAttrOrderMap _paramMap _contextMap _quantMap _uniqueMap _augmentsMap _aroundsMap _mergeMap )  =-    (sem_Grammar_Grammar _typeSyns _useMap _derivings _wrappers (sem_Nonterminals _nonts ) _pragmas _manualAttrOrderMap _paramMap _contextMap _quantMap _uniqueMap _augmentsMap _aroundsMap _mergeMap )--- 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  ->-                Inh_Grammar  ->-                Syn_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 ->-                       QuantMap ->-                       UniqueMap ->-                       (Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->-                       (Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->-                       (Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))) ->-                       T_Grammar -sem_Grammar_Grammar !typeSyns_ !useMap_ !derivings_ !wrappers_ !(T_Nonterminals nonts_ ) !pragmas_ !manualAttrOrderMap_ !paramMap_ !contextMap_ !quantMap_ !uniqueMap_ !augmentsMap_ !aroundsMap_ !mergeMap_  =-    (T_Grammar (\ (!_lhsIoptions) ->-                    (case (({-# LINE 664 "DefaultRules.ag" #-}-                            mergeMap_-                            {-# LINE 678 "DefaultRules.hs" #-}-                            )) of-                     { !_nontsOmergesIn ->-                     (case (({-# LINE 583 "DefaultRules.ag" #-}-                             manualAttrOrderMap_-                             {-# LINE 683 "DefaultRules.hs" #-}-                             )) of-                      { !_nontsOmanualAttrOrderMap ->-                      (case (({-# LINE 150 "DefaultRules.ag" #-}-                              typeSyns_-                              {-# LINE 688 "DefaultRules.hs" #-}-                              )) of-                       { !_nontsOtypeSyns ->-                       (case (({-# LINE 148 "DefaultRules.ag" #-}-                               useMap_-                               {-# LINE 693 "DefaultRules.hs" #-}-                               )) of-                        { !_nontsOuseMap ->-                        (case (({-# LINE 50 "DefaultRules.ag" #-}-                                modcopy   _lhsIoptions-                                {-# LINE 698 "DefaultRules.hs" #-}-                                )) of-                         { !_nontsOcr ->-                         (case (({-# LINE 49 "DefaultRules.ag" #-}-                                 rename    _lhsIoptions-                                 {-# LINE 703 "DefaultRules.hs" #-}-                                 )) of-                          { !_nontsOo_rename ->-                          (case (nonts_ ) of-                           { ( !_nontsIcollect_nts,!T_Nonterminals_1 nonts_1) ->-                               (case (({-# LINE 656 "DefaultRules.ag" #-}-                                       aroundsMap_-                                       {-# LINE 710 "DefaultRules.hs" #-}-                                       )) of-                                { !_nontsOaroundsIn ->-                                (case (({-# LINE 649 "DefaultRules.ag" #-}-                                        augmentsMap_-                                        {-# LINE 715 "DefaultRules.hs" #-}-                                        )) of-                                 { !_nontsOaugmentsIn ->-                                 (case (({-# LINE 494 "DefaultRules.ag" #-}-                                         1-                                         {-# LINE 720 "DefaultRules.hs" #-}-                                         )) of-                                  { !_nontsOuniq ->-                                  (case (({-# LINE 127 "DefaultRules.ag" #-}-                                          _nontsIcollect_nts-                                          {-# LINE 725 "DefaultRules.hs" #-}-                                          )) of-                                   { !_nontsOnonterminals ->-                                   (case (nonts_1 _nontsOaroundsIn _nontsOaugmentsIn _nontsOcr _nontsOmanualAttrOrderMap _nontsOmergesIn _nontsOnonterminals _nontsOo_rename _nontsOtypeSyns _nontsOuniq _nontsOuseMap ) of-                                    { ( !_nontsIerrors,!_nontsIoutput,!_nontsIuniq) ->-                                        (case (({-# LINE 115 "DefaultRules.ag" #-}-                                                _nontsIerrors-                                                {-# LINE 732 "DefaultRules.hs" #-}-                                                )) of-                                         { !_lhsOerrors ->-                                         (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                 Grammar typeSyns_ useMap_ derivings_ wrappers_ _nontsIoutput pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ quantMap_ uniqueMap_ augmentsMap_ aroundsMap_ mergeMap_-                                                 {-# LINE 737 "DefaultRules.hs" #-}-                                                 )) of-                                          { !_output ->-                                          (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                  _output-                                                  {-# LINE 742 "DefaultRules.hs" #-}-                                                  )) of-                                           { !_lhsOoutput ->-                                           ( _lhsOerrors,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )--- Nonterminal --------------------------------------------------{--   visit 0:-      synthesized attribute:-         collect_nts          : Set NontermIdent-   visit 1:-      inherited attributes:-         aroundsIn            : Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))-         augmentsIn           : Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))-         cr                   : Bool-         manualAttrOrderMap   : AttrOrderMap-         mergesIn             : Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))-         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 mergesIn    : _-            local augmentsIn  : _-            local aroundsIn   : _-            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 ((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->-                                            (Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->-                                            Bool ->-                                            AttrOrderMap ->-                                            (Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) ->-                                            (Set NontermIdent) ->-                                            Bool ->-                                            TypeSyns ->-                                            Int ->-                                            UseMap ->-                                            ( (Seq Error),Nonterminal ,Int))-data Inh_Nonterminal  = Inh_Nonterminal {aroundsIn_Inh_Nonterminal :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression])))),augmentsIn_Inh_Nonterminal :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression])))),cr_Inh_Nonterminal :: !(Bool),manualAttrOrderMap_Inh_Nonterminal :: !(AttrOrderMap),mergesIn_Inh_Nonterminal :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))))),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  ->-                    Inh_Nonterminal  ->-                    Syn_Nonterminal -wrap_Nonterminal !(T_Nonterminal sem ) !(Inh_Nonterminal _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsIo_rename _lhsItypeSyns _lhsIuniq _lhsIuseMap )  =-    (let ( !_lhsOcollect_nts,!T_Nonterminal_1 sem_1) = sem -         ( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) = sem_1 _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsImanualAttrOrderMap _lhsImergesIn _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 (({-# LINE 123 "DefaultRules.ag" #-}-                           Set.singleton nt_-                           {-# LINE 816 "DefaultRules.hs" #-}-                           )) of-                    { !_lhsOcollect_nts ->-                    (case ((let sem_Nonterminal_Nonterminal_1 :: T_Nonterminal_1 -                                sem_Nonterminal_Nonterminal_1  =-                                    (T_Nonterminal_1 (\ (!_lhsIaroundsIn)-                                                        (!_lhsIaugmentsIn)-                                                        (!_lhsIcr)-                                                        (!_lhsImanualAttrOrderMap)-                                                        (!_lhsImergesIn)-                                                        (!_lhsInonterminals)-                                                        (!_lhsIo_rename)-                                                        (!_lhsItypeSyns)-                                                        (!_lhsIuniq)-                                                        (!_lhsIuseMap) ->-                                                          (case (({-# LINE 55 "DefaultRules.ag" #-}-                                                                  _lhsItypeSyns-                                                                  {-# LINE 833 "DefaultRules.hs" #-}-                                                                  )) of-                                                           { !_prodsOtypeSyns ->-                                                           (case (({-# LINE 43 "DefaultRules.ag" #-}-                                                                   _lhsIo_rename-                                                                   {-# LINE 838 "DefaultRules.hs" #-}-                                                                   )) of-                                                            { !_prodsOo_rename ->-                                                            (case (({-# LINE 665 "DefaultRules.ag" #-}-                                                                    Map.findWithDefault Map.empty nt_ _lhsImergesIn-                                                                    {-# LINE 843 "DefaultRules.hs" #-}-                                                                    )) of-                                                             { !_mergesIn ->-                                                             (case (({-# LINE 661 "DefaultRules.ag" #-}-                                                                     _mergesIn-                                                                     {-# LINE 848 "DefaultRules.hs" #-}-                                                                     )) of-                                                              { !_prodsOmergesIn ->-                                                              (case (({-# LINE 579 "DefaultRules.ag" #-}-                                                                      _lhsImanualAttrOrderMap-                                                                      {-# LINE 853 "DefaultRules.hs" #-}-                                                                      )) of-                                                               { !_prodsOmanualAttrOrderMap ->-                                                               (case (({-# LINE 44 "DefaultRules.ag" #-}-                                                                       _lhsIcr-                                                                       {-# LINE 858 "DefaultRules.hs" #-}-                                                                       )) of-                                                                { !_prodsOcr ->-                                                                (case (({-# LINE 152 "DefaultRules.ag" #-}-                                                                        nt_-                                                                        {-# LINE 863 "DefaultRules.hs" #-}-                                                                        )) of-                                                                 { !_prodsOnt ->-                                                                 (case (({-# LINE 140 "DefaultRules.ag" #-}-                                                                         Map.findWithDefault Map.empty nt_ _lhsIuseMap-                                                                         {-# LINE 868 "DefaultRules.hs" #-}-                                                                         )) of-                                                                  { !_prodsOuseMap ->-                                                                  (case (({-# LINE 139 "DefaultRules.ag" #-}-                                                                          syn_-                                                                          {-# LINE 873 "DefaultRules.hs" #-}-                                                                          )) of-                                                                   { !_prodsOsyn ->-                                                                   (case (({-# LINE 138 "DefaultRules.ag" #-}-                                                                           inh_-                                                                           {-# LINE 878 "DefaultRules.hs" #-}-                                                                           )) of-                                                                    { !_prodsOinh ->-                                                                    (case (({-# LINE 491 "DefaultRules.ag" #-}-                                                                            _lhsIuniq-                                                                            {-# LINE 883 "DefaultRules.hs" #-}-                                                                            )) of-                                                                     { !_prodsOuniq ->-                                                                     (case (({-# LINE 125 "DefaultRules.ag" #-}-                                                                             _lhsInonterminals-                                                                             {-# LINE 888 "DefaultRules.hs" #-}-                                                                             )) of-                                                                      { !_prodsOnonterminals ->-                                                                      (case (({-# LINE 650 "DefaultRules.ag" #-}-                                                                              Map.findWithDefault Map.empty nt_ _lhsIaugmentsIn-                                                                              {-# LINE 893 "DefaultRules.hs" #-}-                                                                              )) of-                                                                       { !_augmentsIn ->-                                                                       (case (({-# LINE 647 "DefaultRules.ag" #-}-                                                                               _augmentsIn-                                                                               {-# LINE 898 "DefaultRules.hs" #-}-                                                                               )) of-                                                                        { !_prodsOaugmentsIn ->-                                                                        (case (({-# LINE 657 "DefaultRules.ag" #-}-                                                                                Map.findWithDefault Map.empty nt_ _lhsIaroundsIn-                                                                                {-# LINE 903 "DefaultRules.hs" #-}-                                                                                )) of-                                                                         { !_aroundsIn ->-                                                                         (case (({-# LINE 654 "DefaultRules.ag" #-}-                                                                                 _aroundsIn-                                                                                 {-# LINE 908 "DefaultRules.hs" #-}-                                                                                 )) of-                                                                          { !_prodsOaroundsIn ->-                                                                          (case (prods_ _prodsOaroundsIn _prodsOaugmentsIn _prodsOcr _prodsOinh _prodsOmanualAttrOrderMap _prodsOmergesIn _prodsOnonterminals _prodsOnt _prodsOo_rename _prodsOsyn _prodsOtypeSyns _prodsOuniq _prodsOuseMap ) of-                                                                           { ( !_prodsIerrors,!_prodsIoutput,!_prodsIuniq) ->-                                                                               (case (({-# LINE 115 "DefaultRules.ag" #-}-                                                                                       _prodsIerrors-                                                                                       {-# LINE 915 "DefaultRules.hs" #-}-                                                                                       )) of-                                                                                { !_lhsOerrors ->-                                                                                (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                                                        Nonterminal nt_ params_ inh_ syn_ _prodsIoutput-                                                                                        {-# LINE 920 "DefaultRules.hs" #-}-                                                                                        )) of-                                                                                 { !_output ->-                                                                                 (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                                                         _output-                                                                                         {-# LINE 925 "DefaultRules.hs" #-}-                                                                                         )) of-                                                                                  { !_lhsOoutput ->-                                                                                  (case (({-# LINE 491 "DefaultRules.ag" #-}-                                                                                          _prodsIuniq-                                                                                          {-# LINE 930 "DefaultRules.hs" #-}-                                                                                          )) of-                                                                                   { !_lhsOuniq ->-                                                                                   ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )-                            in  sem_Nonterminal_Nonterminal_1)) of-                     { ( !sem_Nonterminal_1) ->-                     ( _lhsOcollect_nts,sem_Nonterminal_1) }) }) )--- Nonterminals -------------------------------------------------{--   visit 0:-      synthesized attribute:-         collect_nts          : Set NontermIdent-   visit 1:-      inherited attributes:-         aroundsIn            : Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))-         augmentsIn           : Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))-         cr                   : Bool-         manualAttrOrderMap   : AttrOrderMap-         mergesIn             : Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))-         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 ((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->-                                              (Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->-                                              Bool ->-                                              AttrOrderMap ->-                                              (Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) ->-                                              (Set NontermIdent) ->-                                              Bool ->-                                              TypeSyns ->-                                              Int ->-                                              UseMap ->-                                              ( (Seq Error),Nonterminals ,Int))-data Inh_Nonterminals  = Inh_Nonterminals {aroundsIn_Inh_Nonterminals :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression])))),augmentsIn_Inh_Nonterminals :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression])))),cr_Inh_Nonterminals :: !(Bool),manualAttrOrderMap_Inh_Nonterminals :: !(AttrOrderMap),mergesIn_Inh_Nonterminals :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))))),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  ->-                     Inh_Nonterminals  ->-                     Syn_Nonterminals -wrap_Nonterminals !(T_Nonterminals sem ) !(Inh_Nonterminals _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsIo_rename _lhsItypeSyns _lhsIuniq _lhsIuseMap )  =-    (let ( !_lhsOcollect_nts,!T_Nonterminals_1 sem_1) = sem -         ( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) = sem_1 _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsImanualAttrOrderMap _lhsImergesIn _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 (({-# LINE 121 "DefaultRules.ag" #-}-                                      _hdIcollect_nts `Set.union` _tlIcollect_nts-                                      {-# LINE 1005 "DefaultRules.hs" #-}-                                      )) of-                               { !_lhsOcollect_nts ->-                               (case ((let sem_Nonterminals_Cons_1 :: T_Nonterminals_1 -                                           sem_Nonterminals_Cons_1  =-                                               (T_Nonterminals_1 (\ (!_lhsIaroundsIn)-                                                                    (!_lhsIaugmentsIn)-                                                                    (!_lhsIcr)-                                                                    (!_lhsImanualAttrOrderMap)-                                                                    (!_lhsImergesIn)-                                                                    (!_lhsInonterminals)-                                                                    (!_lhsIo_rename)-                                                                    (!_lhsItypeSyns)-                                                                    (!_lhsIuniq)-                                                                    (!_lhsIuseMap) ->-                                                                      (case (({-# LINE 134 "DefaultRules.ag" #-}-                                                                              _lhsIuseMap-                                                                              {-# LINE 1022 "DefaultRules.hs" #-}-                                                                              )) of-                                                                       { !_tlOuseMap ->-                                                                       (case (({-# LINE 55 "DefaultRules.ag" #-}-                                                                               _lhsItypeSyns-                                                                               {-# LINE 1027 "DefaultRules.hs" #-}-                                                                               )) of-                                                                        { !_tlOtypeSyns ->-                                                                        (case (({-# LINE 43 "DefaultRules.ag" #-}-                                                                                _lhsIo_rename-                                                                                {-# LINE 1032 "DefaultRules.hs" #-}-                                                                                )) of-                                                                         { !_tlOo_rename ->-                                                                         (case (({-# LINE 660 "DefaultRules.ag" #-}-                                                                                 _lhsImergesIn-                                                                                 {-# LINE 1037 "DefaultRules.hs" #-}-                                                                                 )) of-                                                                          { !_tlOmergesIn ->-                                                                          (case (({-# LINE 579 "DefaultRules.ag" #-}-                                                                                  _lhsImanualAttrOrderMap-                                                                                  {-# LINE 1042 "DefaultRules.hs" #-}-                                                                                  )) of-                                                                           { !_tlOmanualAttrOrderMap ->-                                                                           (case (({-# LINE 44 "DefaultRules.ag" #-}-                                                                                   _lhsIcr-                                                                                   {-# LINE 1047 "DefaultRules.hs" #-}-                                                                                   )) of-                                                                            { !_tlOcr ->-                                                                            (case (({-# LINE 134 "DefaultRules.ag" #-}-                                                                                    _lhsIuseMap-                                                                                    {-# LINE 1052 "DefaultRules.hs" #-}-                                                                                    )) of-                                                                             { !_hdOuseMap ->-                                                                             (case (({-# LINE 55 "DefaultRules.ag" #-}-                                                                                     _lhsItypeSyns-                                                                                     {-# LINE 1057 "DefaultRules.hs" #-}-                                                                                     )) of-                                                                              { !_hdOtypeSyns ->-                                                                              (case (({-# LINE 43 "DefaultRules.ag" #-}-                                                                                      _lhsIo_rename-                                                                                      {-# LINE 1062 "DefaultRules.hs" #-}-                                                                                      )) of-                                                                               { !_hdOo_rename ->-                                                                               (case (({-# LINE 660 "DefaultRules.ag" #-}-                                                                                       _lhsImergesIn-                                                                                       {-# LINE 1067 "DefaultRules.hs" #-}-                                                                                       )) of-                                                                                { !_hdOmergesIn ->-                                                                                (case (({-# LINE 579 "DefaultRules.ag" #-}-                                                                                        _lhsImanualAttrOrderMap-                                                                                        {-# LINE 1072 "DefaultRules.hs" #-}-                                                                                        )) of-                                                                                 { !_hdOmanualAttrOrderMap ->-                                                                                 (case (({-# LINE 44 "DefaultRules.ag" #-}-                                                                                         _lhsIcr-                                                                                         {-# LINE 1077 "DefaultRules.hs" #-}-                                                                                         )) of-                                                                                  { !_hdOcr ->-                                                                                  (case (({-# LINE 491 "DefaultRules.ag" #-}-                                                                                          _lhsIuniq-                                                                                          {-# LINE 1082 "DefaultRules.hs" #-}-                                                                                          )) of-                                                                                   { !_hdOuniq ->-                                                                                   (case (({-# LINE 125 "DefaultRules.ag" #-}-                                                                                           _lhsInonterminals-                                                                                           {-# LINE 1087 "DefaultRules.hs" #-}-                                                                                           )) of-                                                                                    { !_hdOnonterminals ->-                                                                                    (case (({-# LINE 646 "DefaultRules.ag" #-}-                                                                                            _lhsIaugmentsIn-                                                                                            {-# LINE 1092 "DefaultRules.hs" #-}-                                                                                            )) of-                                                                                     { !_hdOaugmentsIn ->-                                                                                     (case (({-# LINE 653 "DefaultRules.ag" #-}-                                                                                             _lhsIaroundsIn-                                                                                             {-# LINE 1097 "DefaultRules.hs" #-}-                                                                                             )) of-                                                                                      { !_hdOaroundsIn ->-                                                                                      (case (hd_1 _hdOaroundsIn _hdOaugmentsIn _hdOcr _hdOmanualAttrOrderMap _hdOmergesIn _hdOnonterminals _hdOo_rename _hdOtypeSyns _hdOuniq _hdOuseMap ) of-                                                                                       { ( !_hdIerrors,!_hdIoutput,!_hdIuniq) ->-                                                                                           (case (({-# LINE 491 "DefaultRules.ag" #-}-                                                                                                   _hdIuniq-                                                                                                   {-# LINE 1104 "DefaultRules.hs" #-}-                                                                                                   )) of-                                                                                            { !_tlOuniq ->-                                                                                            (case (({-# LINE 125 "DefaultRules.ag" #-}-                                                                                                    _lhsInonterminals-                                                                                                    {-# LINE 1109 "DefaultRules.hs" #-}-                                                                                                    )) of-                                                                                             { !_tlOnonterminals ->-                                                                                             (case (({-# LINE 646 "DefaultRules.ag" #-}-                                                                                                     _lhsIaugmentsIn-                                                                                                     {-# LINE 1114 "DefaultRules.hs" #-}-                                                                                                     )) of-                                                                                              { !_tlOaugmentsIn ->-                                                                                              (case (({-# LINE 653 "DefaultRules.ag" #-}-                                                                                                      _lhsIaroundsIn-                                                                                                      {-# LINE 1119 "DefaultRules.hs" #-}-                                                                                                      )) of-                                                                                               { !_tlOaroundsIn ->-                                                                                               (case (tl_1 _tlOaroundsIn _tlOaugmentsIn _tlOcr _tlOmanualAttrOrderMap _tlOmergesIn _tlOnonterminals _tlOo_rename _tlOtypeSyns _tlOuniq _tlOuseMap ) of-                                                                                                { ( !_tlIerrors,!_tlIoutput,!_tlIuniq) ->-                                                                                                    (case (({-# LINE 115 "DefaultRules.ag" #-}-                                                                                                            _hdIerrors Seq.>< _tlIerrors-                                                                                                            {-# LINE 1126 "DefaultRules.hs" #-}-                                                                                                            )) of-                                                                                                     { !_lhsOerrors ->-                                                                                                     (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                                                                             (:) _hdIoutput _tlIoutput-                                                                                                             {-# LINE 1131 "DefaultRules.hs" #-}-                                                                                                             )) of-                                                                                                      { !_output ->-                                                                                                      (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                                                                              _output-                                                                                                              {-# LINE 1136 "DefaultRules.hs" #-}-                                                                                                              )) of-                                                                                                       { !_lhsOoutput ->-                                                                                                       (case (({-# LINE 491 "DefaultRules.ag" #-}-                                                                                                               _tlIuniq-                                                                                                               {-# LINE 1141 "DefaultRules.hs" #-}-                                                                                                               )) of-                                                                                                        { !_lhsOuniq ->-                                                                                                        ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )-                                       in  sem_Nonterminals_Cons_1)) of-                                { ( !sem_Nonterminals_1) ->-                                ( _lhsOcollect_nts,sem_Nonterminals_1) }) }) }) }) )-sem_Nonterminals_Nil :: T_Nonterminals -sem_Nonterminals_Nil  =-    (T_Nonterminals (case (({-# LINE 121 "DefaultRules.ag" #-}-                            Set.empty-                            {-# LINE 1152 "DefaultRules.hs" #-}-                            )) of-                     { !_lhsOcollect_nts ->-                     (case ((let sem_Nonterminals_Nil_1 :: T_Nonterminals_1 -                                 sem_Nonterminals_Nil_1  =-                                     (T_Nonterminals_1 (\ (!_lhsIaroundsIn)-                                                          (!_lhsIaugmentsIn)-                                                          (!_lhsIcr)-                                                          (!_lhsImanualAttrOrderMap)-                                                          (!_lhsImergesIn)-                                                          (!_lhsInonterminals)-                                                          (!_lhsIo_rename)-                                                          (!_lhsItypeSyns)-                                                          (!_lhsIuniq)-                                                          (!_lhsIuseMap) ->-                                                            (case (({-# LINE 115 "DefaultRules.ag" #-}-                                                                    Seq.empty-                                                                    {-# LINE 1169 "DefaultRules.hs" #-}-                                                                    )) of-                                                             { !_lhsOerrors ->-                                                             (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                                     []-                                                                     {-# LINE 1174 "DefaultRules.hs" #-}-                                                                     )) of-                                                              { !_output ->-                                                              (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                                      _output-                                                                      {-# LINE 1179 "DefaultRules.hs" #-}-                                                                      )) of-                                                               { !_lhsOoutput ->-                                                               (case (({-# LINE 491 "DefaultRules.ag" #-}-                                                                       _lhsIuniq-                                                                       {-# LINE 1184 "DefaultRules.hs" #-}-                                                                       )) of-                                                                { !_lhsOuniq ->-                                                                ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) })) )-                             in  sem_Nonterminals_Nil_1)) of-                      { ( !sem_Nonterminals_1) ->-                      ( _lhsOcollect_nts,sem_Nonterminals_1) }) }) )--- 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  ->-                Inh_Pattern  ->-                Syn_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 (({-# LINE 485 "DefaultRules.ag" #-}-                            True-                            {-# LINE 1271 "DefaultRules.hs" #-}-                            )) of-                     { !_lhsOcontainsVars ->-                     (case (({-# LINE 34 "DefaultRules.ag" #-}-                             _lhsInt-                             {-# LINE 1276 "DefaultRules.hs" #-}-                             )) of-                      { !_partsOnt ->-                      (case (({-# LINE 35 "DefaultRules.ag" #-}-                              _lhsIcon-                              {-# LINE 1281 "DefaultRules.hs" #-}-                              )) of-                       { !_partsOcon ->-                       (case (parts_ _partsOcon _partsOnt ) of-                        { ( !_partsIcontainsVars,!_partsIcopy,!_partsIdefinedAttrs,!_partsIerrors,!_partsIlocals,!_partsIoutput) ->-                            (case (({-# LINE 34 "DefaultRules.ag" #-}-                                    _lhsInt-                                    {-# LINE 1288 "DefaultRules.hs" #-}-                                    )) of-                             { !_patOnt ->-                             (case (({-# LINE 35 "DefaultRules.ag" #-}-                                     _lhsIcon-                                     {-# LINE 1293 "DefaultRules.hs" #-}-                                     )) of-                              { !_patOcon ->-                              (case (pat_ _patOcon _patOnt ) of-                               { ( !_patIcontainsVars,!_patIcopy,!_patIdefinedAttrs,!_patIerrors,!_patIlocals,!_patIoutput) ->-                                   (case (({-# LINE 23 "./Patterns.ag" #-}-                                           Alias field_ attr_ _patIcopy _partsIcopy-                                           {-# LINE 1300 "DefaultRules.hs" #-}-                                           )) of-                                    { !_copy ->-                                    (case (({-# LINE 23 "./Patterns.ag" #-}-                                            _copy-                                            {-# LINE 1305 "DefaultRules.hs" #-}-                                            )) of-                                     { !_lhsOcopy ->-                                     (case (({-# LINE 467 "DefaultRules.ag" #-}-                                             Set.insert (field_,attr_) _patIdefinedAttrs-                                             {-# LINE 1310 "DefaultRules.hs" #-}-                                             )) of-                                      { !_lhsOdefinedAttrs ->-                                      (case (({-# LINE 115 "DefaultRules.ag" #-}-                                              _patIerrors Seq.>< _partsIerrors-                                              {-# LINE 1315 "DefaultRules.hs" #-}-                                              )) of-                                       { !_lhsOerrors ->-                                       (case (({-# LINE 468 "DefaultRules.ag" #-}-                                               if field_ == _LOC-                                                  then Set.insert attr_ _patIlocals-                                                  else _patIlocals-                                               {-# LINE 1322 "DefaultRules.hs" #-}-                                               )) of-                                        { !_lhsOlocals ->-                                        (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                Alias field_ attr_ _patIoutput _partsIoutput-                                                {-# LINE 1327 "DefaultRules.hs" #-}-                                                )) of-                                         { !_output ->-                                         (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                 _output-                                                 {-# LINE 1332 "DefaultRules.hs" #-}-                                                 )) 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 (({-# LINE 34 "DefaultRules.ag" #-}-                            _lhsInt-                            {-# LINE 1344 "DefaultRules.hs" #-}-                            )) of-                     { !_patsOnt ->-                     (case (({-# LINE 35 "DefaultRules.ag" #-}-                             _lhsIcon-                             {-# LINE 1349 "DefaultRules.hs" #-}-                             )) of-                      { !_patsOcon ->-                      (case (pats_ _patsOcon _patsOnt ) of-                       { ( !_patsIcontainsVars,!_patsIcopy,!_patsIdefinedAttrs,!_patsIerrors,!_patsIlocals,!_patsIoutput) ->-                           (case (({-# LINE 482 "DefaultRules.ag" #-}-                                   _patsIcontainsVars-                                   {-# LINE 1356 "DefaultRules.hs" #-}-                                   )) of-                            { !_lhsOcontainsVars ->-                            (case (({-# LINE 23 "./Patterns.ag" #-}-                                    Constr name_ _patsIcopy-                                    {-# LINE 1361 "DefaultRules.hs" #-}-                                    )) of-                             { !_copy ->-                             (case (({-# LINE 23 "./Patterns.ag" #-}-                                     _copy-                                     {-# LINE 1366 "DefaultRules.hs" #-}-                                     )) of-                              { !_lhsOcopy ->-                              (case (({-# LINE 462 "DefaultRules.ag" #-}-                                      _patsIdefinedAttrs-                                      {-# LINE 1371 "DefaultRules.hs" #-}-                                      )) of-                               { !_lhsOdefinedAttrs ->-                               (case (({-# LINE 115 "DefaultRules.ag" #-}-                                       _patsIerrors-                                       {-# LINE 1376 "DefaultRules.hs" #-}-                                       )) of-                                { !_lhsOerrors ->-                                (case (({-# LINE 461 "DefaultRules.ag" #-}-                                        _patsIlocals-                                        {-# LINE 1381 "DefaultRules.hs" #-}-                                        )) of-                                 { !_lhsOlocals ->-                                 (case (({-# LINE 498 "DefaultRules.ag" #-}-                                         Constr name_ _patsIoutput-                                         {-# LINE 1386 "DefaultRules.hs" #-}-                                         )) of-                                  { !_output ->-                                  (case (({-# LINE 498 "DefaultRules.ag" #-}-                                          _output-                                          {-# LINE 1391 "DefaultRules.hs" #-}-                                          )) 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 (({-# LINE 34 "DefaultRules.ag" #-}-                            _lhsInt-                            {-# LINE 1402 "DefaultRules.hs" #-}-                            )) of-                     { !_patOnt ->-                     (case (({-# LINE 35 "DefaultRules.ag" #-}-                             _lhsIcon-                             {-# LINE 1407 "DefaultRules.hs" #-}-                             )) of-                      { !_patOcon ->-                      (case (pat_ _patOcon _patOnt ) of-                       { ( !_patIcontainsVars,!_patIcopy,!_patIdefinedAttrs,!_patIerrors,!_patIlocals,!_patIoutput) ->-                           (case (({-# LINE 482 "DefaultRules.ag" #-}-                                   _patIcontainsVars-                                   {-# LINE 1414 "DefaultRules.hs" #-}-                                   )) of-                            { !_lhsOcontainsVars ->-                            (case (({-# LINE 23 "./Patterns.ag" #-}-                                    Irrefutable _patIcopy-                                    {-# LINE 1419 "DefaultRules.hs" #-}-                                    )) of-                             { !_copy ->-                             (case (({-# LINE 23 "./Patterns.ag" #-}-                                     _copy-                                     {-# LINE 1424 "DefaultRules.hs" #-}-                                     )) of-                              { !_lhsOcopy ->-                              (case (({-# LINE 462 "DefaultRules.ag" #-}-                                      _patIdefinedAttrs-                                      {-# LINE 1429 "DefaultRules.hs" #-}-                                      )) of-                               { !_lhsOdefinedAttrs ->-                               (case (({-# LINE 115 "DefaultRules.ag" #-}-                                       _patIerrors-                                       {-# LINE 1434 "DefaultRules.hs" #-}-                                       )) of-                                { !_lhsOerrors ->-                                (case (({-# LINE 461 "DefaultRules.ag" #-}-                                        _patIlocals-                                        {-# LINE 1439 "DefaultRules.hs" #-}-                                        )) of-                                 { !_lhsOlocals ->-                                 (case (({-# LINE 498 "DefaultRules.ag" #-}-                                         Irrefutable _patIoutput-                                         {-# LINE 1444 "DefaultRules.hs" #-}-                                         )) of-                                  { !_output ->-                                  (case (({-# LINE 498 "DefaultRules.ag" #-}-                                          _output-                                          {-# LINE 1449 "DefaultRules.hs" #-}-                                          )) 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 (({-# LINE 34 "DefaultRules.ag" #-}-                            _lhsInt-                            {-# LINE 1461 "DefaultRules.hs" #-}-                            )) of-                     { !_patsOnt ->-                     (case (({-# LINE 35 "DefaultRules.ag" #-}-                             _lhsIcon-                             {-# LINE 1466 "DefaultRules.hs" #-}-                             )) of-                      { !_patsOcon ->-                      (case (pats_ _patsOcon _patsOnt ) of-                       { ( !_patsIcontainsVars,!_patsIcopy,!_patsIdefinedAttrs,!_patsIerrors,!_patsIlocals,!_patsIoutput) ->-                           (case (({-# LINE 482 "DefaultRules.ag" #-}-                                   _patsIcontainsVars-                                   {-# LINE 1473 "DefaultRules.hs" #-}-                                   )) of-                            { !_lhsOcontainsVars ->-                            (case (({-# LINE 23 "./Patterns.ag" #-}-                                    Product pos_ _patsIcopy-                                    {-# LINE 1478 "DefaultRules.hs" #-}-                                    )) of-                             { !_copy ->-                             (case (({-# LINE 23 "./Patterns.ag" #-}-                                     _copy-                                     {-# LINE 1483 "DefaultRules.hs" #-}-                                     )) of-                              { !_lhsOcopy ->-                              (case (({-# LINE 462 "DefaultRules.ag" #-}-                                      _patsIdefinedAttrs-                                      {-# LINE 1488 "DefaultRules.hs" #-}-                                      )) of-                               { !_lhsOdefinedAttrs ->-                               (case (({-# LINE 115 "DefaultRules.ag" #-}-                                       _patsIerrors-                                       {-# LINE 1493 "DefaultRules.hs" #-}-                                       )) of-                                { !_lhsOerrors ->-                                (case (({-# LINE 461 "DefaultRules.ag" #-}-                                        _patsIlocals-                                        {-# LINE 1498 "DefaultRules.hs" #-}-                                        )) of-                                 { !_lhsOlocals ->-                                 (case (({-# LINE 498 "DefaultRules.ag" #-}-                                         Product pos_ _patsIoutput-                                         {-# LINE 1503 "DefaultRules.hs" #-}-                                         )) of-                                  { !_output ->-                                  (case (({-# LINE 498 "DefaultRules.ag" #-}-                                          _output-                                          {-# LINE 1508 "DefaultRules.hs" #-}-                                          )) of-                                   { !_lhsOoutput ->-                                   ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) })) )-sem_Pattern_Underscore :: Pos ->-                          T_Pattern -sem_Pattern_Underscore !pos_  =-    (T_Pattern (\ (!_lhsIcon)-                  (!_lhsInt) ->-                    (case (({-# LINE 482 "DefaultRules.ag" #-}-                            False-                            {-# LINE 1519 "DefaultRules.hs" #-}-                            )) of-                     { !_lhsOcontainsVars ->-                     (case (({-# LINE 23 "./Patterns.ag" #-}-                             Underscore pos_-                             {-# LINE 1524 "DefaultRules.hs" #-}-                             )) of-                      { !_copy ->-                      (case (({-# LINE 23 "./Patterns.ag" #-}-                              _copy-                              {-# LINE 1529 "DefaultRules.hs" #-}-                              )) of-                       { !_lhsOcopy ->-                       (case (({-# LINE 462 "DefaultRules.ag" #-}-                               Set.empty-                               {-# LINE 1534 "DefaultRules.hs" #-}-                               )) of-                        { !_lhsOdefinedAttrs ->-                        (case (({-# LINE 115 "DefaultRules.ag" #-}-                                Seq.empty-                                {-# LINE 1539 "DefaultRules.hs" #-}-                                )) of-                         { !_lhsOerrors ->-                         (case (({-# LINE 461 "DefaultRules.ag" #-}-                                 Set.empty-                                 {-# LINE 1544 "DefaultRules.hs" #-}-                                 )) of-                          { !_lhsOlocals ->-                          (case (({-# LINE 498 "DefaultRules.ag" #-}-                                  Underscore pos_-                                  {-# LINE 1549 "DefaultRules.hs" #-}-                                  )) of-                           { !_output ->-                           (case (({-# LINE 498 "DefaultRules.ag" #-}-                                   _output-                                   {-# LINE 1554 "DefaultRules.hs" #-}-                                   )) 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  ->-                 Inh_Patterns  ->-                 Syn_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 (({-# LINE 34 "DefaultRules.ag" #-}-                             _lhsInt-                             {-# LINE 1608 "DefaultRules.hs" #-}-                             )) of-                      { !_tlOnt ->-                      (case (({-# LINE 35 "DefaultRules.ag" #-}-                              _lhsIcon-                              {-# LINE 1613 "DefaultRules.hs" #-}-                              )) of-                       { !_tlOcon ->-                       (case (tl_ _tlOcon _tlOnt ) of-                        { ( !_tlIcontainsVars,!_tlIcopy,!_tlIdefinedAttrs,!_tlIerrors,!_tlIlocals,!_tlIoutput) ->-                            (case (({-# LINE 34 "DefaultRules.ag" #-}-                                    _lhsInt-                                    {-# LINE 1620 "DefaultRules.hs" #-}-                                    )) of-                             { !_hdOnt ->-                             (case (({-# LINE 35 "DefaultRules.ag" #-}-                                     _lhsIcon-                                     {-# LINE 1625 "DefaultRules.hs" #-}-                                     )) of-                              { !_hdOcon ->-                              (case (hd_ _hdOcon _hdOnt ) of-                               { ( !_hdIcontainsVars,!_hdIcopy,!_hdIdefinedAttrs,!_hdIerrors,!_hdIlocals,!_hdIoutput) ->-                                   (case (({-# LINE 482 "DefaultRules.ag" #-}-                                           _hdIcontainsVars || _tlIcontainsVars-                                           {-# LINE 1632 "DefaultRules.hs" #-}-                                           )) of-                                    { !_lhsOcontainsVars ->-                                    (case (({-# LINE 23 "./Patterns.ag" #-}-                                            (:) _hdIcopy _tlIcopy-                                            {-# LINE 1637 "DefaultRules.hs" #-}-                                            )) of-                                     { !_copy ->-                                     (case (({-# LINE 23 "./Patterns.ag" #-}-                                             _copy-                                             {-# LINE 1642 "DefaultRules.hs" #-}-                                             )) of-                                      { !_lhsOcopy ->-                                      (case (({-# LINE 462 "DefaultRules.ag" #-}-                                              _hdIdefinedAttrs `Set.union` _tlIdefinedAttrs-                                              {-# LINE 1647 "DefaultRules.hs" #-}-                                              )) of-                                       { !_lhsOdefinedAttrs ->-                                       (case (({-# LINE 115 "DefaultRules.ag" #-}-                                               _hdIerrors Seq.>< _tlIerrors-                                               {-# LINE 1652 "DefaultRules.hs" #-}-                                               )) of-                                        { !_lhsOerrors ->-                                        (case (({-# LINE 461 "DefaultRules.ag" #-}-                                                _hdIlocals `Set.union` _tlIlocals-                                                {-# LINE 1657 "DefaultRules.hs" #-}-                                                )) of-                                         { !_lhsOlocals ->-                                         (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                 (:) _hdIoutput _tlIoutput-                                                 {-# LINE 1662 "DefaultRules.hs" #-}-                                                 )) of-                                          { !_output ->-                                          (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                  _output-                                                  {-# LINE 1667 "DefaultRules.hs" #-}-                                                  )) of-                                           { !_lhsOoutput ->-                                           ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )-sem_Patterns_Nil :: T_Patterns -sem_Patterns_Nil  =-    (T_Patterns (\ (!_lhsIcon)-                   (!_lhsInt) ->-                     (case (({-# LINE 482 "DefaultRules.ag" #-}-                             False-                             {-# LINE 1677 "DefaultRules.hs" #-}-                             )) of-                      { !_lhsOcontainsVars ->-                      (case (({-# LINE 23 "./Patterns.ag" #-}-                              []-                              {-# LINE 1682 "DefaultRules.hs" #-}-                              )) of-                       { !_copy ->-                       (case (({-# LINE 23 "./Patterns.ag" #-}-                               _copy-                               {-# LINE 1687 "DefaultRules.hs" #-}-                               )) of-                        { !_lhsOcopy ->-                        (case (({-# LINE 462 "DefaultRules.ag" #-}-                                Set.empty-                                {-# LINE 1692 "DefaultRules.hs" #-}-                                )) of-                         { !_lhsOdefinedAttrs ->-                         (case (({-# LINE 115 "DefaultRules.ag" #-}-                                 Seq.empty-                                 {-# LINE 1697 "DefaultRules.hs" #-}-                                 )) of-                          { !_lhsOerrors ->-                          (case (({-# LINE 461 "DefaultRules.ag" #-}-                                  Set.empty-                                  {-# LINE 1702 "DefaultRules.hs" #-}-                                  )) of-                           { !_lhsOlocals ->-                           (case (({-# LINE 498 "DefaultRules.ag" #-}-                                   []-                                   {-# LINE 1707 "DefaultRules.hs" #-}-                                   )) of-                            { !_output ->-                            (case (({-# LINE 498 "DefaultRules.ag" #-}-                                    _output-                                    {-# LINE 1712 "DefaultRules.hs" #-}-                                    )) of-                             { !_lhsOoutput ->-                             ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) })) )--- Production ---------------------------------------------------{--   visit 0:-      inherited attributes:-         aroundsIn            : Map ConstructorIdent (Map Identifier [Expression])-         augmentsIn           : Map ConstructorIdent (Map Identifier [Expression])-         cr                   : Bool-         inh                  : Attributes-         manualAttrOrderMap   : AttrOrderMap-         mergesIn             : Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))-         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 mergesIn    : _-            local merged      : _-            local orderDeps   : _-            local orderErrs   : _-            local _tup1       : _-            local errs        : _-            local aroundsIn   : _-            local augmentsIn  : _-            local newRls      : _-            local extra1      : _-            local extra2      : _-            local extra3      : _--}--- 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 ((Map ConstructorIdent (Map Identifier [Expression])) ->-                                      (Map ConstructorIdent (Map Identifier [Expression])) ->-                                      Bool ->-                                      Attributes ->-                                      AttrOrderMap ->-                                      (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))) ->-                                      (Set NontermIdent) ->-                                      NontermIdent ->-                                      Bool ->-                                      Attributes ->-                                      TypeSyns ->-                                      Int ->-                                      (Map Identifier (String,String,String)) ->-                                      ( (Seq Error),Production ,Int))-data Inh_Production  = Inh_Production {aroundsIn_Inh_Production :: !((Map ConstructorIdent (Map Identifier [Expression]))),augmentsIn_Inh_Production :: !((Map ConstructorIdent (Map Identifier [Expression]))),cr_Inh_Production :: !(Bool),inh_Inh_Production :: !(Attributes),manualAttrOrderMap_Inh_Production :: !(AttrOrderMap),mergesIn_Inh_Production :: !((Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))),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  ->-                   Inh_Production  ->-                   Syn_Production -wrap_Production !(T_Production sem ) !(Inh_Production _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsInt _lhsIo_rename _lhsIsyn _lhsItypeSyns _lhsIuniq _lhsIuseMap )  =-    (let ( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) = sem _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsImergesIn _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 (\ (!_lhsIaroundsIn)-                     (!_lhsIaugmentsIn)-                     (!_lhsIcr)-                     (!_lhsIinh)-                     (!_lhsImanualAttrOrderMap)-                     (!_lhsImergesIn)-                     (!_lhsInonterminals)-                     (!_lhsInt)-                     (!_lhsIo_rename)-                     (!_lhsIsyn)-                     (!_lhsItypeSyns)-                     (!_lhsIuniq)-                     (!_lhsIuseMap) ->-                       (case (({-# LINE 666 "DefaultRules.ag" #-}-                               Map.findWithDefault Map.empty con_ _lhsImergesIn-                               {-# LINE 1806 "DefaultRules.hs" #-}-                               )) of-                        { !_mergesIn ->-                        (case (({-# LINE 667 "DefaultRules.ag" #-}-                                Set.fromList [ c | (_,cs,_) <- Map.elems _mergesIn    , c <- cs ]-                                {-# LINE 1811 "DefaultRules.hs" #-}-                                )) of-                         { !_merged ->-                         (case (({-# LINE 662 "DefaultRules.ag" #-}-                                 _merged-                                 {-# LINE 1816 "DefaultRules.hs" #-}-                                 )) of-                          { !_childrenOmerged ->-                          (case (({-# LINE 593 "DefaultRules.ag" #-}-                                  Set.toList $ Map.findWithDefault Set.empty con_ $ Map.findWithDefault Map.empty _lhsInt _lhsImanualAttrOrderMap-                                  {-# LINE 1821 "DefaultRules.hs" #-}-                                  )) of-                           { !_orderDeps ->-                           (case (({-# LINE 491 "DefaultRules.ag" #-}-                                   _lhsIuniq-                                   {-# LINE 1826 "DefaultRules.hs" #-}-                                   )) of-                            { !_rulesOuniq ->-                            (case (({-# LINE 34 "DefaultRules.ag" #-}-                                    _lhsInt-                                    {-# LINE 1831 "DefaultRules.hs" #-}-                                    )) of-                             { !_rulesOnt ->-                             (case (({-# LINE 143 "DefaultRules.ag" #-}-                                     con_-                                     {-# LINE 1836 "DefaultRules.hs" #-}-                                     )) of-                              { !_rulesOcon ->-                              (case (rules_ _rulesOcon _rulesOnt _rulesOuniq ) of-                               { ( !_rulesIdefinedAttrs,!_rulesIerrors,!_rulesIlocals,!_rulesIoutput,!_rulesIruleNames,!_rulesIuniq) ->-                                   (case (({-# LINE 34 "DefaultRules.ag" #-}-                                           _lhsInt-                                           {-# LINE 1843 "DefaultRules.hs" #-}-                                           )) of-                                    { !_childrenOnt ->-                                    (case (({-# LINE 47 "DefaultRules.ag" #-}-                                            _lhsIcr-                                            {-# LINE 1848 "DefaultRules.hs" #-}-                                            )) of-                                     { !_childrenOcr ->-                                     (case (({-# LINE 144 "DefaultRules.ag" #-}-                                             con_-                                             {-# LINE 1853 "DefaultRules.hs" #-}-                                             )) of-                                      { !_childrenOcon ->-                                      (case (children_ _childrenOcon _childrenOcr _childrenOmerged _childrenOnt ) of-                                       { ( !_childrenIerrors,!_childrenIfields,!_childrenIinputs,!_childrenIoutput,!_childrenIoutputs) ->-                                           (case (({-# LINE 595 "DefaultRules.ag" #-}-                                                   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]-                                                       existsRule nm = if nm `Set.member` _rulesIruleNames-                                                                       then []-                                                                       else [MissingNamedRule _lhsInt con_ nm]-                                                       checkIn (OccAttr fld nm)  = isInAttribute fld nm-                                                       checkIn (OccRule nm)      = existsRule nm-                                                       checkOut (OccAttr fld nm) = isOutAttribute fld nm-                                                       checkOut (OccRule nm)     = existsRule nm-                                                   in Seq.fromList . concat $-                                                      [ checkIn occA ++ checkOut occB-                                                      | (Dependency occA occB) <- _orderDeps-                                                      ]-                                                   {-# LINE 1894 "DefaultRules.hs" #-}-                                                   )) of-                                            { !_orderErrs ->-                                            (case (({-# LINE 332 "DefaultRules.ag" #-}-                                                    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,virt) <- _childrenIfields, childExists virt])-                                                             | 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-                                                               childExists Nothing         = True-                                                               childExists (Just (Just _)) = True-                                                               childExists (Just Nothing)  = False-                                                        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)-                                                    {-# LINE 1954 "DefaultRules.hs" #-}-                                                    )) of-                                             { !__tup1 ->-                                             (case (({-# LINE 332 "DefaultRules.ag" #-}-                                                     __tup1-                                                     {-# LINE 1959 "DefaultRules.hs" #-}-                                                     )) of-                                              { !(_,!_errs) ->-                                              (case (({-# LINE 330 "DefaultRules.ag" #-}-                                                      _childrenIerrors >< _errs >< _rulesIerrors >< _orderErrs-                                                      {-# LINE 1964 "DefaultRules.hs" #-}-                                                      )) of-                                               { !_lhsOerrors ->-                                               (case (({-# LINE 658 "DefaultRules.ag" #-}-                                                       Map.findWithDefault Map.empty con_ _lhsIaroundsIn-                                                       {-# LINE 1969 "DefaultRules.hs" #-}-                                                       )) of-                                                { !_aroundsIn ->-                                                (case (({-# LINE 651 "DefaultRules.ag" #-}-                                                        Map.findWithDefault Map.empty con_ _lhsIaugmentsIn-                                                        {-# LINE 1974 "DefaultRules.hs" #-}-                                                        )) of-                                                 { !_augmentsIn ->-                                                 (case (({-# LINE 332 "DefaultRules.ag" #-}-                                                         __tup1-                                                         {-# LINE 1979 "DefaultRules.hs" #-}-                                                         )) of-                                                  { !(!_newRls,_) ->-                                                  (case (({-# LINE 505 "DefaultRules.ag" #-}-                                                          foldr addAugments (_rulesIoutput ++ _newRls) (Map.assocs _augmentsIn    )-                                                          {-# LINE 1984 "DefaultRules.hs" #-}-                                                          )) of-                                                   { !_extra1 ->-                                                   (case (({-# LINE 506 "DefaultRules.ag" #-}-                                                           foldr addArounds _extra1     (Map.assocs _aroundsIn    )-                                                           {-# LINE 1989 "DefaultRules.hs" #-}-                                                           )) of-                                                    { !_extra2 ->-                                                    (case (({-# LINE 507 "DefaultRules.ag" #-}-                                                            foldr addMerges _extra2     (Map.assocs _mergesIn    )-                                                            {-# LINE 1994 "DefaultRules.hs" #-}-                                                            )) of-                                                     { !_extra3 ->-                                                     (case (typeSigs_ ) of-                                                      { ( !_typeSigsIoutput) ->-                                                          (case (({-# LINE 508 "DefaultRules.ag" #-}-                                                                  Production con_ _childrenIoutput _extra3     _typeSigsIoutput-                                                                  {-# LINE 2001 "DefaultRules.hs" #-}-                                                                  )) of-                                                           { !_lhsOoutput ->-                                                           (case (({-# LINE 491 "DefaultRules.ag" #-}-                                                                   _rulesIuniq-                                                                   {-# LINE 2006 "DefaultRules.hs" #-}-                                                                   )) of-                                                            { !_lhsOuniq ->-                                                            ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )--- Productions --------------------------------------------------{--   visit 0:-      inherited attributes:-         aroundsIn            : Map ConstructorIdent (Map Identifier [Expression])-         augmentsIn           : Map ConstructorIdent (Map Identifier [Expression])-         cr                   : Bool-         inh                  : Attributes-         manualAttrOrderMap   : AttrOrderMap-         mergesIn             : Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))-         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 ((Map ConstructorIdent (Map Identifier [Expression])) ->-                                        (Map ConstructorIdent (Map Identifier [Expression])) ->-                                        Bool ->-                                        Attributes ->-                                        AttrOrderMap ->-                                        (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))) ->-                                        (Set NontermIdent) ->-                                        NontermIdent ->-                                        Bool ->-                                        Attributes ->-                                        TypeSyns ->-                                        Int ->-                                        (Map Identifier (String,String,String)) ->-                                        ( (Seq Error),Productions ,Int))-data Inh_Productions  = Inh_Productions {aroundsIn_Inh_Productions :: !((Map ConstructorIdent (Map Identifier [Expression]))),augmentsIn_Inh_Productions :: !((Map ConstructorIdent (Map Identifier [Expression]))),cr_Inh_Productions :: !(Bool),inh_Inh_Productions :: !(Attributes),manualAttrOrderMap_Inh_Productions :: !(AttrOrderMap),mergesIn_Inh_Productions :: !((Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))),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  ->-                    Inh_Productions  ->-                    Syn_Productions -wrap_Productions !(T_Productions sem ) !(Inh_Productions _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsInt _lhsIo_rename _lhsIsyn _lhsItypeSyns _lhsIuniq _lhsIuseMap )  =-    (let ( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) = sem _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsImergesIn _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 (\ (!_lhsIaroundsIn)-                      (!_lhsIaugmentsIn)-                      (!_lhsIcr)-                      (!_lhsIinh)-                      (!_lhsImanualAttrOrderMap)-                      (!_lhsImergesIn)-                      (!_lhsInonterminals)-                      (!_lhsInt)-                      (!_lhsIo_rename)-                      (!_lhsIsyn)-                      (!_lhsItypeSyns)-                      (!_lhsIuniq)-                      (!_lhsIuseMap) ->-                        (case (({-# LINE 135 "DefaultRules.ag" #-}-                                _lhsIuseMap-                                {-# LINE 2088 "DefaultRules.hs" #-}-                                )) of-                         { !_tlOuseMap ->-                         (case (({-# LINE 55 "DefaultRules.ag" #-}-                                 _lhsItypeSyns-                                 {-# LINE 2093 "DefaultRules.hs" #-}-                                 )) of-                          { !_tlOtypeSyns ->-                          (case (({-# LINE 135 "DefaultRules.ag" #-}-                                  _lhsIsyn-                                  {-# LINE 2098 "DefaultRules.hs" #-}-                                  )) of-                           { !_tlOsyn ->-                           (case (({-# LINE 43 "DefaultRules.ag" #-}-                                   _lhsIo_rename-                                   {-# LINE 2103 "DefaultRules.hs" #-}-                                   )) of-                            { !_tlOo_rename ->-                            (case (({-# LINE 34 "DefaultRules.ag" #-}-                                    _lhsInt-                                    {-# LINE 2108 "DefaultRules.hs" #-}-                                    )) of-                             { !_tlOnt ->-                             (case (({-# LINE 661 "DefaultRules.ag" #-}-                                     _lhsImergesIn-                                     {-# LINE 2113 "DefaultRules.hs" #-}-                                     )) of-                              { !_tlOmergesIn ->-                              (case (({-# LINE 579 "DefaultRules.ag" #-}-                                      _lhsImanualAttrOrderMap-                                      {-# LINE 2118 "DefaultRules.hs" #-}-                                      )) of-                               { !_tlOmanualAttrOrderMap ->-                               (case (({-# LINE 135 "DefaultRules.ag" #-}-                                       _lhsIinh-                                       {-# LINE 2123 "DefaultRules.hs" #-}-                                       )) of-                                { !_tlOinh ->-                                (case (({-# LINE 44 "DefaultRules.ag" #-}-                                        _lhsIcr-                                        {-# LINE 2128 "DefaultRules.hs" #-}-                                        )) of-                                 { !_tlOcr ->-                                 (case (({-# LINE 135 "DefaultRules.ag" #-}-                                         _lhsIuseMap-                                         {-# LINE 2133 "DefaultRules.hs" #-}-                                         )) of-                                  { !_hdOuseMap ->-                                  (case (({-# LINE 55 "DefaultRules.ag" #-}-                                          _lhsItypeSyns-                                          {-# LINE 2138 "DefaultRules.hs" #-}-                                          )) of-                                   { !_hdOtypeSyns ->-                                   (case (({-# LINE 135 "DefaultRules.ag" #-}-                                           _lhsIsyn-                                           {-# LINE 2143 "DefaultRules.hs" #-}-                                           )) of-                                    { !_hdOsyn ->-                                    (case (({-# LINE 43 "DefaultRules.ag" #-}-                                            _lhsIo_rename-                                            {-# LINE 2148 "DefaultRules.hs" #-}-                                            )) of-                                     { !_hdOo_rename ->-                                     (case (({-# LINE 34 "DefaultRules.ag" #-}-                                             _lhsInt-                                             {-# LINE 2153 "DefaultRules.hs" #-}-                                             )) of-                                      { !_hdOnt ->-                                      (case (({-# LINE 661 "DefaultRules.ag" #-}-                                              _lhsImergesIn-                                              {-# LINE 2158 "DefaultRules.hs" #-}-                                              )) of-                                       { !_hdOmergesIn ->-                                       (case (({-# LINE 579 "DefaultRules.ag" #-}-                                               _lhsImanualAttrOrderMap-                                               {-# LINE 2163 "DefaultRules.hs" #-}-                                               )) of-                                        { !_hdOmanualAttrOrderMap ->-                                        (case (({-# LINE 135 "DefaultRules.ag" #-}-                                                _lhsIinh-                                                {-# LINE 2168 "DefaultRules.hs" #-}-                                                )) of-                                         { !_hdOinh ->-                                         (case (({-# LINE 44 "DefaultRules.ag" #-}-                                                 _lhsIcr-                                                 {-# LINE 2173 "DefaultRules.hs" #-}-                                                 )) of-                                          { !_hdOcr ->-                                          (case (({-# LINE 491 "DefaultRules.ag" #-}-                                                  _lhsIuniq-                                                  {-# LINE 2178 "DefaultRules.hs" #-}-                                                  )) of-                                           { !_hdOuniq ->-                                           (case (({-# LINE 125 "DefaultRules.ag" #-}-                                                   _lhsInonterminals-                                                   {-# LINE 2183 "DefaultRules.hs" #-}-                                                   )) of-                                            { !_hdOnonterminals ->-                                            (case (({-# LINE 647 "DefaultRules.ag" #-}-                                                    _lhsIaugmentsIn-                                                    {-# LINE 2188 "DefaultRules.hs" #-}-                                                    )) of-                                             { !_hdOaugmentsIn ->-                                             (case (({-# LINE 654 "DefaultRules.ag" #-}-                                                     _lhsIaroundsIn-                                                     {-# LINE 2193 "DefaultRules.hs" #-}-                                                     )) of-                                              { !_hdOaroundsIn ->-                                              (case (hd_ _hdOaroundsIn _hdOaugmentsIn _hdOcr _hdOinh _hdOmanualAttrOrderMap _hdOmergesIn _hdOnonterminals _hdOnt _hdOo_rename _hdOsyn _hdOtypeSyns _hdOuniq _hdOuseMap ) of-                                               { ( !_hdIerrors,!_hdIoutput,!_hdIuniq) ->-                                                   (case (({-# LINE 491 "DefaultRules.ag" #-}-                                                           _hdIuniq-                                                           {-# LINE 2200 "DefaultRules.hs" #-}-                                                           )) of-                                                    { !_tlOuniq ->-                                                    (case (({-# LINE 125 "DefaultRules.ag" #-}-                                                            _lhsInonterminals-                                                            {-# LINE 2205 "DefaultRules.hs" #-}-                                                            )) of-                                                     { !_tlOnonterminals ->-                                                     (case (({-# LINE 647 "DefaultRules.ag" #-}-                                                             _lhsIaugmentsIn-                                                             {-# LINE 2210 "DefaultRules.hs" #-}-                                                             )) of-                                                      { !_tlOaugmentsIn ->-                                                      (case (({-# LINE 654 "DefaultRules.ag" #-}-                                                              _lhsIaroundsIn-                                                              {-# LINE 2215 "DefaultRules.hs" #-}-                                                              )) of-                                                       { !_tlOaroundsIn ->-                                                       (case (tl_ _tlOaroundsIn _tlOaugmentsIn _tlOcr _tlOinh _tlOmanualAttrOrderMap _tlOmergesIn _tlOnonterminals _tlOnt _tlOo_rename _tlOsyn _tlOtypeSyns _tlOuniq _tlOuseMap ) of-                                                        { ( !_tlIerrors,!_tlIoutput,!_tlIuniq) ->-                                                            (case (({-# LINE 115 "DefaultRules.ag" #-}-                                                                    _hdIerrors Seq.>< _tlIerrors-                                                                    {-# LINE 2222 "DefaultRules.hs" #-}-                                                                    )) of-                                                             { !_lhsOerrors ->-                                                             (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                                     (:) _hdIoutput _tlIoutput-                                                                     {-# LINE 2227 "DefaultRules.hs" #-}-                                                                     )) of-                                                              { !_output ->-                                                              (case (({-# LINE 498 "DefaultRules.ag" #-}-                                                                      _output-                                                                      {-# LINE 2232 "DefaultRules.hs" #-}-                                                                      )) of-                                                               { !_lhsOoutput ->-                                                               (case (({-# LINE 491 "DefaultRules.ag" #-}-                                                                       _tlIuniq-                                                                       {-# LINE 2237 "DefaultRules.hs" #-}-                                                                       )) of-                                                                { !_lhsOuniq ->-                                                                ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )-sem_Productions_Nil :: T_Productions -sem_Productions_Nil  =-    (T_Productions (\ (!_lhsIaroundsIn)-                      (!_lhsIaugmentsIn)-                      (!_lhsIcr)-                      (!_lhsIinh)-                      (!_lhsImanualAttrOrderMap)-                      (!_lhsImergesIn)-                      (!_lhsInonterminals)-                      (!_lhsInt)-                      (!_lhsIo_rename)-                      (!_lhsIsyn)-                      (!_lhsItypeSyns)-                      (!_lhsIuniq)-                      (!_lhsIuseMap) ->-                        (case (({-# LINE 115 "DefaultRules.ag" #-}-                                Seq.empty-                                {-# LINE 2258 "DefaultRules.hs" #-}-                                )) of-                         { !_lhsOerrors ->-                         (case (({-# LINE 498 "DefaultRules.ag" #-}-                                 []-                                 {-# LINE 2263 "DefaultRules.hs" #-}-                                 )) of-                          { !_output ->-                          (case (({-# LINE 498 "DefaultRules.ag" #-}-                                  _output-                                  {-# LINE 2268 "DefaultRules.hs" #-}-                                  )) of-                           { !_lhsOoutput ->-                           (case (({-# LINE 491 "DefaultRules.ag" #-}-                                   _lhsIuniq-                                   {-# LINE 2273 "DefaultRules.hs" #-}-                                   )) 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 -         ruleNames            : Set Identifier-   alternatives:-      alternative Rule:-         child mbName         : {Maybe Identifier}-         child pattern        : Pattern -         child rhs            : {Expression}-         child owrt           : {Bool}-         child origin         : {String}-         child explicit       : {Bool}-         visit 0:-            local output      : _-            local _tup2       : {(Rules,Int)}--}--- cata-sem_Rule :: Rule  ->-            T_Rule -sem_Rule !(Rule _mbName _pattern _rhs _owrt _origin _explicit )  =-    (sem_Rule_Rule _mbName (sem_Pattern _pattern ) _rhs _owrt _origin _explicit )--- semantic domain-newtype T_Rule  = T_Rule (ConstructorIdent ->-                          NontermIdent ->-                          Int ->-                          ( Bool,(Set (Identifier,Identifier)),(Seq Error),(Set Identifier),Rule ,Rules ,(Set Identifier),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 ),ruleNames_Syn_Rule :: !((Set Identifier)),uniq_Syn_Rule :: !(Int)}-wrap_Rule :: T_Rule  ->-             Inh_Rule  ->-             Syn_Rule -wrap_Rule !(T_Rule sem ) !(Inh_Rule _lhsIcon _lhsInt _lhsIuniq )  =-    (let ( !_lhsOcontainsVars,!_lhsOdefinedAttrs,!_lhsOerrors,!_lhsOlocals,!_lhsOoutput,!_lhsOoutputs,!_lhsOruleNames,!_lhsOuniq) = sem _lhsIcon _lhsInt _lhsIuniq -     in  (Syn_Rule _lhsOcontainsVars _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput _lhsOoutputs _lhsOruleNames _lhsOuniq ))-sem_Rule_Rule :: (Maybe Identifier) ->-                 T_Pattern  ->-                 Expression ->-                 Bool ->-                 String ->-                 Bool ->-                 T_Rule -sem_Rule_Rule !mbName_ !(T_Pattern pattern_ ) !rhs_ !owrt_ !origin_ !explicit_  =-    (T_Rule (\ (!_lhsIcon)-               (!_lhsInt)-               (!_lhsIuniq) ->-                 (case (({-# LINE 34 "DefaultRules.ag" #-}-                         _lhsInt-                         {-# LINE 2336 "DefaultRules.hs" #-}-                         )) of-                  { !_patternOnt ->-                  (case (({-# LINE 35 "DefaultRules.ag" #-}-                          _lhsIcon-                          {-# LINE 2341 "DefaultRules.hs" #-}-                          )) of-                   { !_patternOcon ->-                   (case (pattern_ _patternOcon _patternOnt ) of-                    { ( !_patternIcontainsVars,!_patternIcopy,!_patternIdefinedAttrs,!_patternIerrors,!_patternIlocals,!_patternIoutput) ->-                        (case (({-# LINE 482 "DefaultRules.ag" #-}-                                _patternIcontainsVars-                                {-# LINE 2348 "DefaultRules.hs" #-}-                                )) of-                         { !_lhsOcontainsVars ->-                         (case (({-# LINE 462 "DefaultRules.ag" #-}-                                 _patternIdefinedAttrs-                                 {-# LINE 2353 "DefaultRules.hs" #-}-                                 )) of-                          { !_lhsOdefinedAttrs ->-                          (case (({-# LINE 115 "DefaultRules.ag" #-}-                                  _patternIerrors-                                  {-# LINE 2358 "DefaultRules.hs" #-}-                                  )) of-                           { !_lhsOerrors ->-                           (case (({-# LINE 461 "DefaultRules.ag" #-}-                                   _patternIlocals-                                   {-# LINE 2363 "DefaultRules.hs" #-}-                                   )) of-                            { !_lhsOlocals ->-                            (case (({-# LINE 498 "DefaultRules.ag" #-}-                                    Rule mbName_ _patternIoutput rhs_ owrt_ origin_ explicit_-                                    {-# LINE 2368 "DefaultRules.hs" #-}-                                    )) of-                             { !_output ->-                             (case (({-# LINE 498 "DefaultRules.ag" #-}-                                     _output-                                     {-# LINE 2373 "DefaultRules.hs" #-}-                                     )) of-                              { !_lhsOoutput ->-                              (case (({-# LINE 515 "DefaultRules.ag" #-}-                                      multiRule _output     _lhsIuniq-                                      {-# LINE 2378 "DefaultRules.hs" #-}-                                      )) of-                               { !__tup2 ->-                               (case (({-# LINE 515 "DefaultRules.ag" #-}-                                       __tup2-                                       {-# LINE 2383 "DefaultRules.hs" #-}-                                       )) of-                                { !(!_lhsOoutputs,_) ->-                                (case (({-# LINE 587 "DefaultRules.ag" #-}-                                        case mbName_ of-                                          Nothing -> Set.empty-                                          Just nm -> Set.singleton nm-                                        {-# LINE 2390 "DefaultRules.hs" #-}-                                        )) of-                                 { !_lhsOruleNames ->-                                 (case (({-# LINE 515 "DefaultRules.ag" #-}-                                         __tup2-                                         {-# LINE 2395 "DefaultRules.hs" #-}-                                         )) of-                                  { !(_,!_lhsOuniq) ->-                                  ( _lhsOcontainsVars,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOoutputs,_lhsOruleNames,_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 -         ruleNames            : Set Identifier-   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 ,(Set Identifier),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 ),ruleNames_Syn_Rules :: !((Set Identifier)),uniq_Syn_Rules :: !(Int)}-wrap_Rules :: T_Rules  ->-              Inh_Rules  ->-              Syn_Rules -wrap_Rules !(T_Rules sem ) !(Inh_Rules _lhsIcon _lhsInt _lhsIuniq )  =-    (let ( !_lhsOdefinedAttrs,!_lhsOerrors,!_lhsOlocals,!_lhsOoutput,!_lhsOruleNames,!_lhsOuniq) = sem _lhsIcon _lhsInt _lhsIuniq -     in  (Syn_Rules _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput _lhsOruleNames _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 (({-# LINE 491 "DefaultRules.ag" #-}-                          _lhsIuniq-                          {-# LINE 2448 "DefaultRules.hs" #-}-                          )) of-                   { !_hdOuniq ->-                   (case (({-# LINE 34 "DefaultRules.ag" #-}-                           _lhsInt-                           {-# LINE 2453 "DefaultRules.hs" #-}-                           )) of-                    { !_hdOnt ->-                    (case (({-# LINE 35 "DefaultRules.ag" #-}-                            _lhsIcon-                            {-# LINE 2458 "DefaultRules.hs" #-}-                            )) of-                     { !_hdOcon ->-                     (case (hd_ _hdOcon _hdOnt _hdOuniq ) of-                      { ( !_hdIcontainsVars,!_hdIdefinedAttrs,!_hdIerrors,!_hdIlocals,!_hdIoutput,!_hdIoutputs,!_hdIruleNames,!_hdIuniq) ->-                          (case (({-# LINE 491 "DefaultRules.ag" #-}-                                  _hdIuniq-                                  {-# LINE 2465 "DefaultRules.hs" #-}-                                  )) of-                           { !_tlOuniq ->-                           (case (({-# LINE 34 "DefaultRules.ag" #-}-                                   _lhsInt-                                   {-# LINE 2470 "DefaultRules.hs" #-}-                                   )) of-                            { !_tlOnt ->-                            (case (({-# LINE 35 "DefaultRules.ag" #-}-                                    _lhsIcon-                                    {-# LINE 2475 "DefaultRules.hs" #-}-                                    )) of-                             { !_tlOcon ->-                             (case (tl_ _tlOcon _tlOnt _tlOuniq ) of-                              { ( !_tlIdefinedAttrs,!_tlIerrors,!_tlIlocals,!_tlIoutput,!_tlIruleNames,!_tlIuniq) ->-                                  (case (({-# LINE 462 "DefaultRules.ag" #-}-                                          _hdIdefinedAttrs `Set.union` _tlIdefinedAttrs-                                          {-# LINE 2482 "DefaultRules.hs" #-}-                                          )) of-                                   { !_lhsOdefinedAttrs ->-                                   (case (({-# LINE 115 "DefaultRules.ag" #-}-                                           _hdIerrors Seq.>< _tlIerrors-                                           {-# LINE 2487 "DefaultRules.hs" #-}-                                           )) of-                                    { !_lhsOerrors ->-                                    (case (({-# LINE 461 "DefaultRules.ag" #-}-                                            _hdIlocals `Set.union` _tlIlocals-                                            {-# LINE 2492 "DefaultRules.hs" #-}-                                            )) of-                                     { !_lhsOlocals ->-                                     (case (({-# LINE 511 "DefaultRules.ag" #-}-                                             if _hdIcontainsVars then _hdIoutputs ++ _tlIoutput else _tlIoutput-                                             {-# LINE 2497 "DefaultRules.hs" #-}-                                             )) of-                                      { !_lhsOoutput ->-                                      (case (({-# LINE 585 "DefaultRules.ag" #-}-                                              _hdIruleNames `Set.union` _tlIruleNames-                                              {-# LINE 2502 "DefaultRules.hs" #-}-                                              )) of-                                       { !_lhsOruleNames ->-                                       (case (({-# LINE 491 "DefaultRules.ag" #-}-                                               _tlIuniq-                                               {-# LINE 2507 "DefaultRules.hs" #-}-                                               )) of-                                        { !_lhsOuniq ->-                                        ( _lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOruleNames,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )-sem_Rules_Nil :: T_Rules -sem_Rules_Nil  =-    (T_Rules (\ (!_lhsIcon)-                (!_lhsInt)-                (!_lhsIuniq) ->-                  (case (({-# LINE 462 "DefaultRules.ag" #-}-                          Set.empty-                          {-# LINE 2518 "DefaultRules.hs" #-}-                          )) of-                   { !_lhsOdefinedAttrs ->-                   (case (({-# LINE 115 "DefaultRules.ag" #-}-                           Seq.empty-                           {-# LINE 2523 "DefaultRules.hs" #-}-                           )) of-                    { !_lhsOerrors ->-                    (case (({-# LINE 461 "DefaultRules.ag" #-}-                            Set.empty-                            {-# LINE 2528 "DefaultRules.hs" #-}-                            )) of-                     { !_lhsOlocals ->-                     (case (({-# LINE 498 "DefaultRules.ag" #-}-                             []-                             {-# LINE 2533 "DefaultRules.hs" #-}-                             )) of-                      { !_output ->-                      (case (({-# LINE 498 "DefaultRules.ag" #-}-                              _output-                              {-# LINE 2538 "DefaultRules.hs" #-}-                              )) of-                       { !_lhsOoutput ->-                       (case (({-# LINE 585 "DefaultRules.ag" #-}-                               Set.empty-                               {-# LINE 2543 "DefaultRules.hs" #-}-                               )) of-                        { !_lhsOruleNames ->-                        (case (({-# LINE 491 "DefaultRules.ag" #-}-                                _lhsIuniq-                                {-# LINE 2548 "DefaultRules.hs" #-}-                                )) of-                         { !_lhsOuniq ->-                         ( _lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOruleNames,_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  ->-                Inh_TypeSig  ->-                Syn_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 (({-# LINE 498 "DefaultRules.ag" #-}-                       TypeSig name_ tp_-                       {-# LINE 2585 "DefaultRules.hs" #-}-                       )) of-                { !_output ->-                (case (({-# LINE 498 "DefaultRules.ag" #-}-                        _output-                        {-# LINE 2590 "DefaultRules.hs" #-}-                        )) 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  ->-                 Inh_TypeSigs  ->-                 Syn_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 (({-# LINE 498 "DefaultRules.ag" #-}-                                  (:) _hdIoutput _tlIoutput-                                  {-# LINE 2634 "DefaultRules.hs" #-}-                                  )) of-                           { !_output ->-                           (case (({-# LINE 498 "DefaultRules.ag" #-}-                                   _output-                                   {-# LINE 2639 "DefaultRules.hs" #-}-                                   )) of-                            { !_lhsOoutput ->-                            ( _lhsOoutput) }) }) }) }) )-sem_TypeSigs_Nil :: T_TypeSigs -sem_TypeSigs_Nil  =-    (T_TypeSigs (case (({-# LINE 498 "DefaultRules.ag" #-}-                        []-                        {-# LINE 2647 "DefaultRules.hs" #-}-                        )) of-                 { !_output ->-                 (case (({-# LINE 498 "DefaultRules.ag" #-}-                         _output-                         {-# LINE 2652 "DefaultRules.hs" #-}+-- UUAGC 0.9.38.2 (DefaultRules.ag)+module DefaultRules where+{-# LINE 10 "DefaultRules.ag" #-}++import qualified List (delete,intersperse)++import qualified Data.Set as Set+import qualified Data.Map as Map+import Data.Map(Map)+import qualified Data.Sequence as Seq+import Data.Sequence(Seq,(><))+import UU.Scanner.Position(noPos)+import Pretty+import Maybe+import HsToken+import HsTokenScanner+import Data.List(intersperse)++import AbstractSyntax+import ErrorMessages++import Options(Options,modcopy,rename)+{-# LINE 26 "../src-derived/DefaultRules.hs" #-}++{-# LINE 2 "./AbstractSyntax.ag" #-}++-- AbstractSyntax.ag imports+import Data.Set(Set)+import Data.Map(Map)+import Patterns    (Pattern(..),Patterns)+import Expression  (Expression(..))+import CommonTypes+{-# LINE 36 "../src-derived/DefaultRules.hs" #-}++{-# LINE 2 "./Patterns.ag" #-}++-- Patterns.ag imports+import UU.Scanner.Position(Pos)+import CommonTypes (ConstructorIdent,Identifier)+{-# LINE 43 "../src-derived/DefaultRules.hs" #-}+{-# LINE 61 "DefaultRules.ag" #-}++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"      = case lookup nt typeSyns of+                                          Just (Map _ _)  -> "Map.empty"+                                          Just (IntMap _) -> "IntMap.empty"+                                          _               -> "[]"+                  | con == "Just"     = "Just"+                  | con == "Nothing"  = "Nothing"+                  | con == "Entry"    = case lookup nt typeSyns of+                                          Just (Map _ _)  -> "Map.insert"+                                          Just (IntMap _) -> "IntMap.insert"+                  | otherwise         = normalName++concatSeq = foldr (Seq.><) 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)+      ]+    )++{-# LINE 95 "../src-derived/DefaultRules.hs" #-}++{-# LINE 176 "DefaultRules.ag" #-}+++++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 Nothing+        (Alias f1 a1 (Underscore noPos) [])+        expr+        False+        origin+        False+++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.singleton (MissingRule nt con fld a)+                                     )+                  Just f+                   | f == _ACHILD -> ( fieldName a+                                     , Seq.singleton (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.singleton (MissingRule nt con fld a)+                                     )+                  Just f+                   | f == _ACHILD -> ( [AGLocal a noPos Nothing]+                                     , Seq.singleton (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+{-# LINE 248 "../src-derived/DefaultRules.hs" #-}++{-# LINE 407 "DefaultRules.ag" #-}++addAugments :: (Identifier, [Expression]) -> [Rule] -> [Rule]+addAugments (_, exprs) rules+  | null exprs = rules+addAugments (syn, exprs) rules+  = [rule] ++ funRules ++ map modify rules+  where+    rule = Rule Nothing (Alias _LHS syn (Underscore noPos) []) rhs False "augmented rule" False+    rhs  = Expression noPos tks+    tks  = [ HsToken "foldr ($) " noPos, AGLocal substSyn noPos Nothing, HsToken " [" noPos] ++ funs ++ [HsToken "]" noPos]+    funs = intersperse (HsToken ", " noPos) (map (\n -> AGLocal n noPos Nothing) funNames)++    substSyn = Ident (show syn ++ "_augmented_syn") (getPos syn)+    funNames = zipWith (\i _ -> Ident (show syn ++ "_augmented_f" ++ show i) (getPos syn)) [1..] exprs+    funRules = zipWith (\name expr -> Rule Nothing (Alias _LOC name (Underscore noPos) []) expr False "augment function" False) funNames exprs++    modify (Rule mbNm pat rhs owrt origin expl)+      | containsSyn pat = Rule mbNm (modifyPat pat) rhs owrt origin expl+    modify r = r++    containsSyn (Constr _ pats)   = any containsSyn pats+    containsSyn (Product _ pats)  = any containsSyn pats+    containsSyn (Irrefutable pat) = containsSyn pat+    containsSyn (Alias field attr pat parts) = (field == _LHS && attr == syn) || containsSyn pat || any containsSyn parts+    containsSyn _ = False++    modifyPat (Constr name pats) = Constr name (map modifyPat pats)+    modifyPat (Product pos pats) = Product pos (map modifyPat pats)+    modifyPat (Irrefutable pat)  = Irrefutable (modifyPat pat)+    modifyPat (Alias field attr pat parts)+      | field == _LHS && attr == syn = Alias _LOC substSyn (modifyPat pat) (map modifyPat parts)+      | otherwise                    = Alias field attr (modifyPat pat) (map modifyPat parts)+    modifyPat p = p++addArounds :: (Identifier, [Expression]) -> [Rule] -> [Rule]+addArounds (_, exprs) rules | null exprs = rules+addArounds (child, exprs) rules+  = [rule] ++ funRules ++ rules+  where+    rule = Rule Nothing (Alias _LOC childLoc (Underscore noPos) []) rhs False "around rule" False+    rhs  = Expression noPos tks+    tks  = [ HsToken "\\s -> foldr ($) s " noPos, HsToken " [" noPos] ++ funs ++ [HsToken "]" noPos]+    funs = intersperse (HsToken ", " noPos) (map (\n -> AGLocal n noPos Nothing) funNames)++    childLoc = Ident (show child ++ "_around") (getPos child)+    funNames = zipWith (\i _ -> Ident (show child ++ "_around_f" ++ show i) (getPos child)) [1..] exprs+    funRules = zipWith (\name expr -> Rule Nothing (Alias _LOC name (Underscore noPos) []) expr False "around function" False) funNames exprs++addMerges :: (Identifier, (Identifier,[Identifier],Expression)) -> [Rule] -> [Rule]+addMerges (target,(_,_,expr)) rules+  = rule : rules+  where+    rule = Rule Nothing (Alias _LOC childLoc (Underscore noPos) []) expr False "merge rule" False+    childLoc = Ident (show target ++ "_merge") (getPos target)+{-# LINE 305 "../src-derived/DefaultRules.hs" #-}++{-# LINE 522 "DefaultRules.ag" #-}++{-+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 (Just nm) pat expr owrt origin expl) uniq+  = let pos = getPos nm+        r = Rule Nothing (Alias _LOC (Ident ("_rule_" ++ show nm) pos) (Underscore pos) []) expr owrt origin expl+        expr' = Expression pos tks+        tks = [AGLocal (Ident ("_rule_" ++ show nm) pos) pos (Just ("Indirection to rule " ++ show nm))]+        (rs,uniq') = multiRule (Rule Nothing pat expr' owrt origin False) uniq+    in (r:rs, uniq')++multiRule (Rule Nothing pat expr owrt origin expl) uniq+  =  let f :: Bool -> (Pattern->Pattern) -> Expression -> Pattern -> Int -> (Pattern, ([Rule], Int))+         f expl' 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 False (us (length xs1)) freshExpr p n1+                                      in  (x2:xs1, rs2++rs1, n2)+                 (xs9,rs9,n9) = foldr g ([], [], n+1) pats+             in  ( freshPat+                 , ( Rule Nothing (w freshPat) e owrt origin expl' : rs9+                   , n9+                   )+                 )+         f expl' w e p n+           = ( p+             , ( [Rule Nothing (w p) e owrt origin expl']+               , n+               )+             )+     in snd (f expl id expr pat uniq)++{-# LINE 363 "../src-derived/DefaultRules.hs" #-}+-- Child -------------------------------------------------------+{-+   visit 0:+      inherited attributes:+         con                  : ConstructorIdent+         cr                   : Bool+         merged               : Set Identifier+         nt                   : NontermIdent+      synthesized attributes:+         errors               : Seq Error+         field                :  (Identifier,Type,Maybe (Maybe Type)) +         inherited            : Attributes+         name                 : Identifier+         output               : SELF +         synthesized          : Attributes+   alternatives:+      alternative Child:+         child name           : {Identifier}+         child tp             : {Type}+         child inh            : {Attributes}+         child syn            : {Attributes}+         child virtual        : {Maybe (Maybe Type)}+         visit 0:+            local output      : _+-}+-- cata+sem_Child :: Child  ->+             T_Child +sem_Child !(Child _name _tp _inh _syn _virtual )  =+    (sem_Child_Child _name _tp _inh _syn _virtual )+-- semantic domain+newtype T_Child  = T_Child (ConstructorIdent ->+                            Bool ->+                            (Set Identifier) ->+                            NontermIdent ->+                            ( (Seq Error),( (Identifier,Type,Maybe (Maybe Type)) ),Attributes,Identifier,Child ,Attributes))+data Inh_Child  = Inh_Child {con_Inh_Child :: !(ConstructorIdent),cr_Inh_Child :: !(Bool),merged_Inh_Child :: !((Set Identifier)),nt_Inh_Child :: !(NontermIdent)}+data Syn_Child  = Syn_Child {errors_Syn_Child :: !((Seq Error)),field_Syn_Child :: !(( (Identifier,Type,Maybe (Maybe Type)) )),inherited_Syn_Child :: !(Attributes),name_Syn_Child :: !(Identifier),output_Syn_Child :: !(Child ),synthesized_Syn_Child :: !(Attributes)}+wrap_Child :: T_Child  ->+              Inh_Child  ->+              Syn_Child +wrap_Child !(T_Child sem ) !(Inh_Child _lhsIcon _lhsIcr _lhsImerged _lhsInt )  =+    (let ( !_lhsOerrors,!_lhsOfield,!_lhsOinherited,!_lhsOname,!_lhsOoutput,!_lhsOsynthesized) = sem _lhsIcon _lhsIcr _lhsImerged _lhsInt +     in  (Syn_Child _lhsOerrors _lhsOfield _lhsOinherited _lhsOname _lhsOoutput _lhsOsynthesized ))+sem_Child_Child :: Identifier ->+                   Type ->+                   Attributes ->+                   Attributes ->+                   (Maybe (Maybe Type)) ->+                   T_Child +sem_Child_Child !name_ !tp_ !inh_ !syn_ !virtual_  =+    (T_Child (\ (!_lhsIcon)+                (!_lhsIcr)+                (!_lhsImerged)+                (!_lhsInt) ->+                  (case (({-# LINE 119 "DefaultRules.ag" #-}+                          Seq.empty+                          {-# LINE 421 "DefaultRules.hs" #-}+                          )) of+                   { !_lhsOerrors ->+                   (case (({-# LINE 481 "DefaultRules.ag" #-}+                           (name_,tp_,virtual_)+                           {-# LINE 426 "DefaultRules.hs" #-}+                           )) of+                    { !_lhsOfield ->+                    (case (({-# LINE 159 "DefaultRules.ag" #-}+                            inh_+                            {-# LINE 431 "DefaultRules.hs" #-}+                            )) of+                     { !_lhsOinherited ->+                     (case (({-# LINE 150 "DefaultRules.ag" #-}+                             name_+                             {-# LINE 436 "DefaultRules.hs" #-}+                             )) of+                      { !_lhsOname ->+                      (case (({-# LINE 502 "DefaultRules.ag" #-}+                              Child name_ tp_ inh_ syn_ virtual_+                              {-# LINE 441 "DefaultRules.hs" #-}+                              )) of+                       { !_output ->+                       (case (({-# LINE 502 "DefaultRules.ag" #-}+                               _output+                               {-# LINE 446 "DefaultRules.hs" #-}+                               )) of+                        { !_lhsOoutput ->+                        (case (({-# LINE 160 "DefaultRules.ag" #-}+                                if name_ `Set.member` _lhsImerged+                                then Map.empty+                                else syn_+                                {-# LINE 453 "DefaultRules.hs" #-}+                                )) of+                         { !_lhsOsynthesized ->+                         ( _lhsOerrors,_lhsOfield,_lhsOinherited,_lhsOname,_lhsOoutput,_lhsOsynthesized) }) }) }) }) }) }) })) )+-- Children ----------------------------------------------------+{-+   visit 0:+      inherited attributes:+         con                  : ConstructorIdent+         cr                   : Bool+         merged               : Set Identifier+         nt                   : NontermIdent+      synthesized attributes:+         errors               : Seq Error+         fields               : [(Identifier,Type,Maybe (Maybe Type))]+         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 ->+                                  (Set Identifier) ->+                                  NontermIdent ->+                                  ( (Seq Error),([(Identifier,Type,Maybe (Maybe Type))]),([(Identifier, Attributes)]),Children ,([(Identifier, Attributes)])))+data Inh_Children  = Inh_Children {con_Inh_Children :: !(ConstructorIdent),cr_Inh_Children :: !(Bool),merged_Inh_Children :: !((Set Identifier)),nt_Inh_Children :: !(NontermIdent)}+data Syn_Children  = Syn_Children {errors_Syn_Children :: !((Seq Error)),fields_Syn_Children :: !(([(Identifier,Type,Maybe (Maybe Type))])),inputs_Syn_Children :: !(([(Identifier, Attributes)])),output_Syn_Children :: !(Children ),outputs_Syn_Children :: !(([(Identifier, Attributes)]))}+wrap_Children :: T_Children  ->+                 Inh_Children  ->+                 Syn_Children +wrap_Children !(T_Children sem ) !(Inh_Children _lhsIcon _lhsIcr _lhsImerged _lhsInt )  =+    (let ( !_lhsOerrors,!_lhsOfields,!_lhsOinputs,!_lhsOoutput,!_lhsOoutputs) = sem _lhsIcon _lhsIcr _lhsImerged _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)+                   (!_lhsImerged)+                   (!_lhsInt) ->+                     (case (({-# LINE 34 "DefaultRules.ag" #-}+                             _lhsInt+                             {-# LINE 510 "DefaultRules.hs" #-}+                             )) of+                      { !_tlOnt ->+                      (case (({-# LINE 666 "DefaultRules.ag" #-}+                              _lhsImerged+                              {-# LINE 515 "DefaultRules.hs" #-}+                              )) of+                       { !_tlOmerged ->+                       (case (({-# LINE 47 "DefaultRules.ag" #-}+                               _lhsIcr+                               {-# LINE 520 "DefaultRules.hs" #-}+                               )) of+                        { !_tlOcr ->+                        (case (({-# LINE 35 "DefaultRules.ag" #-}+                                _lhsIcon+                                {-# LINE 525 "DefaultRules.hs" #-}+                                )) of+                         { !_tlOcon ->+                         (case (tl_ _tlOcon _tlOcr _tlOmerged _tlOnt ) of+                          { ( !_tlIerrors,!_tlIfields,!_tlIinputs,!_tlIoutput,!_tlIoutputs) ->+                              (case (({-# LINE 34 "DefaultRules.ag" #-}+                                      _lhsInt+                                      {-# LINE 532 "DefaultRules.hs" #-}+                                      )) of+                               { !_hdOnt ->+                               (case (({-# LINE 666 "DefaultRules.ag" #-}+                                       _lhsImerged+                                       {-# LINE 537 "DefaultRules.hs" #-}+                                       )) of+                                { !_hdOmerged ->+                                (case (({-# LINE 47 "DefaultRules.ag" #-}+                                        _lhsIcr+                                        {-# LINE 542 "DefaultRules.hs" #-}+                                        )) of+                                 { !_hdOcr ->+                                 (case (({-# LINE 35 "DefaultRules.ag" #-}+                                         _lhsIcon+                                         {-# LINE 547 "DefaultRules.hs" #-}+                                         )) of+                                  { !_hdOcon ->+                                  (case (hd_ _hdOcon _hdOcr _hdOmerged _hdOnt ) of+                                   { ( !_hdIerrors,!_hdIfield,!_hdIinherited,!_hdIname,!_hdIoutput,!_hdIsynthesized) ->+                                       (case (({-# LINE 119 "DefaultRules.ag" #-}+                                               _hdIerrors Seq.>< _tlIerrors+                                               {-# LINE 554 "DefaultRules.hs" #-}+                                               )) of+                                        { !_lhsOerrors ->+                                        (case (({-# LINE 477 "DefaultRules.ag" #-}+                                                _hdIfield : _tlIfields+                                                {-# LINE 559 "DefaultRules.hs" #-}+                                                )) of+                                         { !_lhsOfields ->+                                         (case (({-# LINE 165 "DefaultRules.ag" #-}+                                                 (_hdIname, _hdIinherited) : _tlIinputs+                                                 {-# LINE 564 "DefaultRules.hs" #-}+                                                 )) of+                                          { !_lhsOinputs ->+                                          (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                  (:) _hdIoutput _tlIoutput+                                                  {-# LINE 569 "DefaultRules.hs" #-}+                                                  )) of+                                           { !_output ->+                                           (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                   _output+                                                   {-# LINE 574 "DefaultRules.hs" #-}+                                                   )) of+                                            { !_lhsOoutput ->+                                            (case (({-# LINE 166 "DefaultRules.ag" #-}+                                                    (_hdIname, _hdIsynthesized) : _tlIoutputs+                                                    {-# LINE 579 "DefaultRules.hs" #-}+                                                    )) of+                                             { !_lhsOoutputs ->+                                             ( _lhsOerrors,_lhsOfields,_lhsOinputs,_lhsOoutput,_lhsOoutputs) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )+sem_Children_Nil :: T_Children +sem_Children_Nil  =+    (T_Children (\ (!_lhsIcon)+                   (!_lhsIcr)+                   (!_lhsImerged)+                   (!_lhsInt) ->+                     (case (({-# LINE 119 "DefaultRules.ag" #-}+                             Seq.empty+                             {-# LINE 591 "DefaultRules.hs" #-}+                             )) of+                      { !_lhsOerrors ->+                      (case (({-# LINE 478 "DefaultRules.ag" #-}+                              []+                              {-# LINE 596 "DefaultRules.hs" #-}+                              )) of+                       { !_lhsOfields ->+                       (case (({-# LINE 167 "DefaultRules.ag" #-}+                               []+                               {-# LINE 601 "DefaultRules.hs" #-}+                               )) of+                        { !_lhsOinputs ->+                        (case (({-# LINE 502 "DefaultRules.ag" #-}+                                []+                                {-# LINE 606 "DefaultRules.hs" #-}+                                )) of+                         { !_output ->+                         (case (({-# LINE 502 "DefaultRules.ag" #-}+                                 _output+                                 {-# LINE 611 "DefaultRules.hs" #-}+                                 )) of+                          { !_lhsOoutput ->+                          (case (({-# LINE 168 "DefaultRules.ag" #-}+                                  []+                                  {-# LINE 616 "DefaultRules.hs" #-}+                                  )) 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 quantMap       : {QuantMap}+         child uniqueMap      : {UniqueMap}+         child augmentsMap    : {Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))}+         child aroundsMap     : {Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))}+         child mergeMap       : {Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))}+         visit 0:+            local output      : _+-}+-- cata+sem_Grammar :: Grammar  ->+               T_Grammar +sem_Grammar !(Grammar _typeSyns _useMap _derivings _wrappers _nonts _pragmas _manualAttrOrderMap _paramMap _contextMap _quantMap _uniqueMap _augmentsMap _aroundsMap _mergeMap )  =+    (sem_Grammar_Grammar _typeSyns _useMap _derivings _wrappers (sem_Nonterminals _nonts ) _pragmas _manualAttrOrderMap _paramMap _contextMap _quantMap _uniqueMap _augmentsMap _aroundsMap _mergeMap )+-- 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  ->+                Inh_Grammar  ->+                Syn_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 ->+                       QuantMap ->+                       UniqueMap ->+                       (Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->+                       (Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->+                       (Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))) ->+                       T_Grammar +sem_Grammar_Grammar !typeSyns_ !useMap_ !derivings_ !wrappers_ !(T_Nonterminals nonts_ ) !pragmas_ !manualAttrOrderMap_ !paramMap_ !contextMap_ !quantMap_ !uniqueMap_ !augmentsMap_ !aroundsMap_ !mergeMap_  =+    (T_Grammar (\ (!_lhsIoptions) ->+                    (case (({-# LINE 668 "DefaultRules.ag" #-}+                            mergeMap_+                            {-# LINE 682 "DefaultRules.hs" #-}+                            )) of+                     { !_nontsOmergesIn ->+                     (case (({-# LINE 587 "DefaultRules.ag" #-}+                             manualAttrOrderMap_+                             {-# LINE 687 "DefaultRules.hs" #-}+                             )) of+                      { !_nontsOmanualAttrOrderMap ->+                      (case (({-# LINE 154 "DefaultRules.ag" #-}+                              typeSyns_+                              {-# LINE 692 "DefaultRules.hs" #-}+                              )) of+                       { !_nontsOtypeSyns ->+                       (case (({-# LINE 152 "DefaultRules.ag" #-}+                               useMap_+                               {-# LINE 697 "DefaultRules.hs" #-}+                               )) of+                        { !_nontsOuseMap ->+                        (case (({-# LINE 50 "DefaultRules.ag" #-}+                                modcopy   _lhsIoptions+                                {-# LINE 702 "DefaultRules.hs" #-}+                                )) of+                         { !_nontsOcr ->+                         (case (({-# LINE 49 "DefaultRules.ag" #-}+                                 rename    _lhsIoptions+                                 {-# LINE 707 "DefaultRules.hs" #-}+                                 )) of+                          { !_nontsOo_rename ->+                          (case (nonts_ ) of+                           { ( !_nontsIcollect_nts,!T_Nonterminals_1 nonts_1) ->+                               (case (({-# LINE 660 "DefaultRules.ag" #-}+                                       aroundsMap_+                                       {-# LINE 714 "DefaultRules.hs" #-}+                                       )) of+                                { !_nontsOaroundsIn ->+                                (case (({-# LINE 653 "DefaultRules.ag" #-}+                                        augmentsMap_+                                        {-# LINE 719 "DefaultRules.hs" #-}+                                        )) of+                                 { !_nontsOaugmentsIn ->+                                 (case (({-# LINE 498 "DefaultRules.ag" #-}+                                         1+                                         {-# LINE 724 "DefaultRules.hs" #-}+                                         )) of+                                  { !_nontsOuniq ->+                                  (case (({-# LINE 131 "DefaultRules.ag" #-}+                                          _nontsIcollect_nts+                                          {-# LINE 729 "DefaultRules.hs" #-}+                                          )) of+                                   { !_nontsOnonterminals ->+                                   (case (nonts_1 _nontsOaroundsIn _nontsOaugmentsIn _nontsOcr _nontsOmanualAttrOrderMap _nontsOmergesIn _nontsOnonterminals _nontsOo_rename _nontsOtypeSyns _nontsOuniq _nontsOuseMap ) of+                                    { ( !_nontsIerrors,!_nontsIoutput,!_nontsIuniq) ->+                                        (case (({-# LINE 119 "DefaultRules.ag" #-}+                                                _nontsIerrors+                                                {-# LINE 736 "DefaultRules.hs" #-}+                                                )) of+                                         { !_lhsOerrors ->+                                         (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                 Grammar typeSyns_ useMap_ derivings_ wrappers_ _nontsIoutput pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ quantMap_ uniqueMap_ augmentsMap_ aroundsMap_ mergeMap_+                                                 {-# LINE 741 "DefaultRules.hs" #-}+                                                 )) of+                                          { !_output ->+                                          (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                  _output+                                                  {-# LINE 746 "DefaultRules.hs" #-}+                                                  )) of+                                           { !_lhsOoutput ->+                                           ( _lhsOerrors,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )+-- Nonterminal -------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         collect_nts          : Set NontermIdent+   visit 1:+      inherited attributes:+         aroundsIn            : Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))+         augmentsIn           : Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))+         cr                   : Bool+         manualAttrOrderMap   : AttrOrderMap+         mergesIn             : Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))+         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 mergesIn    : _+            local augmentsIn  : _+            local aroundsIn   : _+            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 ((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->+                                            (Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->+                                            Bool ->+                                            AttrOrderMap ->+                                            (Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) ->+                                            (Set NontermIdent) ->+                                            Bool ->+                                            TypeSyns ->+                                            Int ->+                                            UseMap ->+                                            ( (Seq Error),Nonterminal ,Int))+data Inh_Nonterminal  = Inh_Nonterminal {aroundsIn_Inh_Nonterminal :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression])))),augmentsIn_Inh_Nonterminal :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression])))),cr_Inh_Nonterminal :: !(Bool),manualAttrOrderMap_Inh_Nonterminal :: !(AttrOrderMap),mergesIn_Inh_Nonterminal :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))))),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  ->+                    Inh_Nonterminal  ->+                    Syn_Nonterminal +wrap_Nonterminal !(T_Nonterminal sem ) !(Inh_Nonterminal _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsIo_rename _lhsItypeSyns _lhsIuniq _lhsIuseMap )  =+    (let ( !_lhsOcollect_nts,!T_Nonterminal_1 sem_1) = sem +         ( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) = sem_1 _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsImanualAttrOrderMap _lhsImergesIn _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 (({-# LINE 127 "DefaultRules.ag" #-}+                           Set.singleton nt_+                           {-# LINE 820 "DefaultRules.hs" #-}+                           )) of+                    { !_lhsOcollect_nts ->+                    (case ((let sem_Nonterminal_Nonterminal_1 :: T_Nonterminal_1 +                                sem_Nonterminal_Nonterminal_1  =+                                    (T_Nonterminal_1 (\ (!_lhsIaroundsIn)+                                                        (!_lhsIaugmentsIn)+                                                        (!_lhsIcr)+                                                        (!_lhsImanualAttrOrderMap)+                                                        (!_lhsImergesIn)+                                                        (!_lhsInonterminals)+                                                        (!_lhsIo_rename)+                                                        (!_lhsItypeSyns)+                                                        (!_lhsIuniq)+                                                        (!_lhsIuseMap) ->+                                                          (case (({-# LINE 55 "DefaultRules.ag" #-}+                                                                  _lhsItypeSyns+                                                                  {-# LINE 837 "DefaultRules.hs" #-}+                                                                  )) of+                                                           { !_prodsOtypeSyns ->+                                                           (case (({-# LINE 43 "DefaultRules.ag" #-}+                                                                   _lhsIo_rename+                                                                   {-# LINE 842 "DefaultRules.hs" #-}+                                                                   )) of+                                                            { !_prodsOo_rename ->+                                                            (case (({-# LINE 669 "DefaultRules.ag" #-}+                                                                    Map.findWithDefault Map.empty nt_ _lhsImergesIn+                                                                    {-# LINE 847 "DefaultRules.hs" #-}+                                                                    )) of+                                                             { !_mergesIn ->+                                                             (case (({-# LINE 665 "DefaultRules.ag" #-}+                                                                     _mergesIn+                                                                     {-# LINE 852 "DefaultRules.hs" #-}+                                                                     )) of+                                                              { !_prodsOmergesIn ->+                                                              (case (({-# LINE 583 "DefaultRules.ag" #-}+                                                                      _lhsImanualAttrOrderMap+                                                                      {-# LINE 857 "DefaultRules.hs" #-}+                                                                      )) of+                                                               { !_prodsOmanualAttrOrderMap ->+                                                               (case (({-# LINE 44 "DefaultRules.ag" #-}+                                                                       _lhsIcr+                                                                       {-# LINE 862 "DefaultRules.hs" #-}+                                                                       )) of+                                                                { !_prodsOcr ->+                                                                (case (({-# LINE 156 "DefaultRules.ag" #-}+                                                                        nt_+                                                                        {-# LINE 867 "DefaultRules.hs" #-}+                                                                        )) of+                                                                 { !_prodsOnt ->+                                                                 (case (({-# LINE 144 "DefaultRules.ag" #-}+                                                                         Map.findWithDefault Map.empty nt_ _lhsIuseMap+                                                                         {-# LINE 872 "DefaultRules.hs" #-}+                                                                         )) of+                                                                  { !_prodsOuseMap ->+                                                                  (case (({-# LINE 143 "DefaultRules.ag" #-}+                                                                          syn_+                                                                          {-# LINE 877 "DefaultRules.hs" #-}+                                                                          )) of+                                                                   { !_prodsOsyn ->+                                                                   (case (({-# LINE 142 "DefaultRules.ag" #-}+                                                                           inh_+                                                                           {-# LINE 882 "DefaultRules.hs" #-}+                                                                           )) of+                                                                    { !_prodsOinh ->+                                                                    (case (({-# LINE 495 "DefaultRules.ag" #-}+                                                                            _lhsIuniq+                                                                            {-# LINE 887 "DefaultRules.hs" #-}+                                                                            )) of+                                                                     { !_prodsOuniq ->+                                                                     (case (({-# LINE 129 "DefaultRules.ag" #-}+                                                                             _lhsInonterminals+                                                                             {-# LINE 892 "DefaultRules.hs" #-}+                                                                             )) of+                                                                      { !_prodsOnonterminals ->+                                                                      (case (({-# LINE 654 "DefaultRules.ag" #-}+                                                                              Map.findWithDefault Map.empty nt_ _lhsIaugmentsIn+                                                                              {-# LINE 897 "DefaultRules.hs" #-}+                                                                              )) of+                                                                       { !_augmentsIn ->+                                                                       (case (({-# LINE 651 "DefaultRules.ag" #-}+                                                                               _augmentsIn+                                                                               {-# LINE 902 "DefaultRules.hs" #-}+                                                                               )) of+                                                                        { !_prodsOaugmentsIn ->+                                                                        (case (({-# LINE 661 "DefaultRules.ag" #-}+                                                                                Map.findWithDefault Map.empty nt_ _lhsIaroundsIn+                                                                                {-# LINE 907 "DefaultRules.hs" #-}+                                                                                )) of+                                                                         { !_aroundsIn ->+                                                                         (case (({-# LINE 658 "DefaultRules.ag" #-}+                                                                                 _aroundsIn+                                                                                 {-# LINE 912 "DefaultRules.hs" #-}+                                                                                 )) of+                                                                          { !_prodsOaroundsIn ->+                                                                          (case (prods_ _prodsOaroundsIn _prodsOaugmentsIn _prodsOcr _prodsOinh _prodsOmanualAttrOrderMap _prodsOmergesIn _prodsOnonterminals _prodsOnt _prodsOo_rename _prodsOsyn _prodsOtypeSyns _prodsOuniq _prodsOuseMap ) of+                                                                           { ( !_prodsIerrors,!_prodsIoutput,!_prodsIuniq) ->+                                                                               (case (({-# LINE 119 "DefaultRules.ag" #-}+                                                                                       _prodsIerrors+                                                                                       {-# LINE 919 "DefaultRules.hs" #-}+                                                                                       )) of+                                                                                { !_lhsOerrors ->+                                                                                (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                                                        Nonterminal nt_ params_ inh_ syn_ _prodsIoutput+                                                                                        {-# LINE 924 "DefaultRules.hs" #-}+                                                                                        )) of+                                                                                 { !_output ->+                                                                                 (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                                                         _output+                                                                                         {-# LINE 929 "DefaultRules.hs" #-}+                                                                                         )) of+                                                                                  { !_lhsOoutput ->+                                                                                  (case (({-# LINE 495 "DefaultRules.ag" #-}+                                                                                          _prodsIuniq+                                                                                          {-# LINE 934 "DefaultRules.hs" #-}+                                                                                          )) of+                                                                                   { !_lhsOuniq ->+                                                                                   ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )+                            in  sem_Nonterminal_Nonterminal_1)) of+                     { ( !sem_Nonterminal_1) ->+                     ( _lhsOcollect_nts,sem_Nonterminal_1) }) }) )+-- Nonterminals ------------------------------------------------+{-+   visit 0:+      synthesized attribute:+         collect_nts          : Set NontermIdent+   visit 1:+      inherited attributes:+         aroundsIn            : Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))+         augmentsIn           : Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))+         cr                   : Bool+         manualAttrOrderMap   : AttrOrderMap+         mergesIn             : Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))+         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 ((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->+                                              (Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->+                                              Bool ->+                                              AttrOrderMap ->+                                              (Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) ->+                                              (Set NontermIdent) ->+                                              Bool ->+                                              TypeSyns ->+                                              Int ->+                                              UseMap ->+                                              ( (Seq Error),Nonterminals ,Int))+data Inh_Nonterminals  = Inh_Nonterminals {aroundsIn_Inh_Nonterminals :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression])))),augmentsIn_Inh_Nonterminals :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression])))),cr_Inh_Nonterminals :: !(Bool),manualAttrOrderMap_Inh_Nonterminals :: !(AttrOrderMap),mergesIn_Inh_Nonterminals :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))))),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  ->+                     Inh_Nonterminals  ->+                     Syn_Nonterminals +wrap_Nonterminals !(T_Nonterminals sem ) !(Inh_Nonterminals _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsIo_rename _lhsItypeSyns _lhsIuniq _lhsIuseMap )  =+    (let ( !_lhsOcollect_nts,!T_Nonterminals_1 sem_1) = sem +         ( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) = sem_1 _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsImanualAttrOrderMap _lhsImergesIn _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 (({-# LINE 125 "DefaultRules.ag" #-}+                                      _hdIcollect_nts `Set.union` _tlIcollect_nts+                                      {-# LINE 1009 "DefaultRules.hs" #-}+                                      )) of+                               { !_lhsOcollect_nts ->+                               (case ((let sem_Nonterminals_Cons_1 :: T_Nonterminals_1 +                                           sem_Nonterminals_Cons_1  =+                                               (T_Nonterminals_1 (\ (!_lhsIaroundsIn)+                                                                    (!_lhsIaugmentsIn)+                                                                    (!_lhsIcr)+                                                                    (!_lhsImanualAttrOrderMap)+                                                                    (!_lhsImergesIn)+                                                                    (!_lhsInonterminals)+                                                                    (!_lhsIo_rename)+                                                                    (!_lhsItypeSyns)+                                                                    (!_lhsIuniq)+                                                                    (!_lhsIuseMap) ->+                                                                      (case (({-# LINE 138 "DefaultRules.ag" #-}+                                                                              _lhsIuseMap+                                                                              {-# LINE 1026 "DefaultRules.hs" #-}+                                                                              )) of+                                                                       { !_tlOuseMap ->+                                                                       (case (({-# LINE 55 "DefaultRules.ag" #-}+                                                                               _lhsItypeSyns+                                                                               {-# LINE 1031 "DefaultRules.hs" #-}+                                                                               )) of+                                                                        { !_tlOtypeSyns ->+                                                                        (case (({-# LINE 43 "DefaultRules.ag" #-}+                                                                                _lhsIo_rename+                                                                                {-# LINE 1036 "DefaultRules.hs" #-}+                                                                                )) of+                                                                         { !_tlOo_rename ->+                                                                         (case (({-# LINE 664 "DefaultRules.ag" #-}+                                                                                 _lhsImergesIn+                                                                                 {-# LINE 1041 "DefaultRules.hs" #-}+                                                                                 )) of+                                                                          { !_tlOmergesIn ->+                                                                          (case (({-# LINE 583 "DefaultRules.ag" #-}+                                                                                  _lhsImanualAttrOrderMap+                                                                                  {-# LINE 1046 "DefaultRules.hs" #-}+                                                                                  )) of+                                                                           { !_tlOmanualAttrOrderMap ->+                                                                           (case (({-# LINE 44 "DefaultRules.ag" #-}+                                                                                   _lhsIcr+                                                                                   {-# LINE 1051 "DefaultRules.hs" #-}+                                                                                   )) of+                                                                            { !_tlOcr ->+                                                                            (case (({-# LINE 138 "DefaultRules.ag" #-}+                                                                                    _lhsIuseMap+                                                                                    {-# LINE 1056 "DefaultRules.hs" #-}+                                                                                    )) of+                                                                             { !_hdOuseMap ->+                                                                             (case (({-# LINE 55 "DefaultRules.ag" #-}+                                                                                     _lhsItypeSyns+                                                                                     {-# LINE 1061 "DefaultRules.hs" #-}+                                                                                     )) of+                                                                              { !_hdOtypeSyns ->+                                                                              (case (({-# LINE 43 "DefaultRules.ag" #-}+                                                                                      _lhsIo_rename+                                                                                      {-# LINE 1066 "DefaultRules.hs" #-}+                                                                                      )) of+                                                                               { !_hdOo_rename ->+                                                                               (case (({-# LINE 664 "DefaultRules.ag" #-}+                                                                                       _lhsImergesIn+                                                                                       {-# LINE 1071 "DefaultRules.hs" #-}+                                                                                       )) of+                                                                                { !_hdOmergesIn ->+                                                                                (case (({-# LINE 583 "DefaultRules.ag" #-}+                                                                                        _lhsImanualAttrOrderMap+                                                                                        {-# LINE 1076 "DefaultRules.hs" #-}+                                                                                        )) of+                                                                                 { !_hdOmanualAttrOrderMap ->+                                                                                 (case (({-# LINE 44 "DefaultRules.ag" #-}+                                                                                         _lhsIcr+                                                                                         {-# LINE 1081 "DefaultRules.hs" #-}+                                                                                         )) of+                                                                                  { !_hdOcr ->+                                                                                  (case (({-# LINE 495 "DefaultRules.ag" #-}+                                                                                          _lhsIuniq+                                                                                          {-# LINE 1086 "DefaultRules.hs" #-}+                                                                                          )) of+                                                                                   { !_hdOuniq ->+                                                                                   (case (({-# LINE 129 "DefaultRules.ag" #-}+                                                                                           _lhsInonterminals+                                                                                           {-# LINE 1091 "DefaultRules.hs" #-}+                                                                                           )) of+                                                                                    { !_hdOnonterminals ->+                                                                                    (case (({-# LINE 650 "DefaultRules.ag" #-}+                                                                                            _lhsIaugmentsIn+                                                                                            {-# LINE 1096 "DefaultRules.hs" #-}+                                                                                            )) of+                                                                                     { !_hdOaugmentsIn ->+                                                                                     (case (({-# LINE 657 "DefaultRules.ag" #-}+                                                                                             _lhsIaroundsIn+                                                                                             {-# LINE 1101 "DefaultRules.hs" #-}+                                                                                             )) of+                                                                                      { !_hdOaroundsIn ->+                                                                                      (case (hd_1 _hdOaroundsIn _hdOaugmentsIn _hdOcr _hdOmanualAttrOrderMap _hdOmergesIn _hdOnonterminals _hdOo_rename _hdOtypeSyns _hdOuniq _hdOuseMap ) of+                                                                                       { ( !_hdIerrors,!_hdIoutput,!_hdIuniq) ->+                                                                                           (case (({-# LINE 495 "DefaultRules.ag" #-}+                                                                                                   _hdIuniq+                                                                                                   {-# LINE 1108 "DefaultRules.hs" #-}+                                                                                                   )) of+                                                                                            { !_tlOuniq ->+                                                                                            (case (({-# LINE 129 "DefaultRules.ag" #-}+                                                                                                    _lhsInonterminals+                                                                                                    {-# LINE 1113 "DefaultRules.hs" #-}+                                                                                                    )) of+                                                                                             { !_tlOnonterminals ->+                                                                                             (case (({-# LINE 650 "DefaultRules.ag" #-}+                                                                                                     _lhsIaugmentsIn+                                                                                                     {-# LINE 1118 "DefaultRules.hs" #-}+                                                                                                     )) of+                                                                                              { !_tlOaugmentsIn ->+                                                                                              (case (({-# LINE 657 "DefaultRules.ag" #-}+                                                                                                      _lhsIaroundsIn+                                                                                                      {-# LINE 1123 "DefaultRules.hs" #-}+                                                                                                      )) of+                                                                                               { !_tlOaroundsIn ->+                                                                                               (case (tl_1 _tlOaroundsIn _tlOaugmentsIn _tlOcr _tlOmanualAttrOrderMap _tlOmergesIn _tlOnonterminals _tlOo_rename _tlOtypeSyns _tlOuniq _tlOuseMap ) of+                                                                                                { ( !_tlIerrors,!_tlIoutput,!_tlIuniq) ->+                                                                                                    (case (({-# LINE 119 "DefaultRules.ag" #-}+                                                                                                            _hdIerrors Seq.>< _tlIerrors+                                                                                                            {-# LINE 1130 "DefaultRules.hs" #-}+                                                                                                            )) of+                                                                                                     { !_lhsOerrors ->+                                                                                                     (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                                                                             (:) _hdIoutput _tlIoutput+                                                                                                             {-# LINE 1135 "DefaultRules.hs" #-}+                                                                                                             )) of+                                                                                                      { !_output ->+                                                                                                      (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                                                                              _output+                                                                                                              {-# LINE 1140 "DefaultRules.hs" #-}+                                                                                                              )) of+                                                                                                       { !_lhsOoutput ->+                                                                                                       (case (({-# LINE 495 "DefaultRules.ag" #-}+                                                                                                               _tlIuniq+                                                                                                               {-# LINE 1145 "DefaultRules.hs" #-}+                                                                                                               )) of+                                                                                                        { !_lhsOuniq ->+                                                                                                        ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )+                                       in  sem_Nonterminals_Cons_1)) of+                                { ( !sem_Nonterminals_1) ->+                                ( _lhsOcollect_nts,sem_Nonterminals_1) }) }) }) }) )+sem_Nonterminals_Nil :: T_Nonterminals +sem_Nonterminals_Nil  =+    (T_Nonterminals (case (({-# LINE 125 "DefaultRules.ag" #-}+                            Set.empty+                            {-# LINE 1156 "DefaultRules.hs" #-}+                            )) of+                     { !_lhsOcollect_nts ->+                     (case ((let sem_Nonterminals_Nil_1 :: T_Nonterminals_1 +                                 sem_Nonterminals_Nil_1  =+                                     (T_Nonterminals_1 (\ (!_lhsIaroundsIn)+                                                          (!_lhsIaugmentsIn)+                                                          (!_lhsIcr)+                                                          (!_lhsImanualAttrOrderMap)+                                                          (!_lhsImergesIn)+                                                          (!_lhsInonterminals)+                                                          (!_lhsIo_rename)+                                                          (!_lhsItypeSyns)+                                                          (!_lhsIuniq)+                                                          (!_lhsIuseMap) ->+                                                            (case (({-# LINE 119 "DefaultRules.ag" #-}+                                                                    Seq.empty+                                                                    {-# LINE 1173 "DefaultRules.hs" #-}+                                                                    )) of+                                                             { !_lhsOerrors ->+                                                             (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                                     []+                                                                     {-# LINE 1178 "DefaultRules.hs" #-}+                                                                     )) of+                                                              { !_output ->+                                                              (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                                      _output+                                                                      {-# LINE 1183 "DefaultRules.hs" #-}+                                                                      )) of+                                                               { !_lhsOoutput ->+                                                               (case (({-# LINE 495 "DefaultRules.ag" #-}+                                                                       _lhsIuniq+                                                                       {-# LINE 1188 "DefaultRules.hs" #-}+                                                                       )) of+                                                                { !_lhsOuniq ->+                                                                ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) })) )+                             in  sem_Nonterminals_Nil_1)) of+                      { ( !sem_Nonterminals_1) ->+                      ( _lhsOcollect_nts,sem_Nonterminals_1) }) }) )+-- 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  ->+                Inh_Pattern  ->+                Syn_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 (({-# LINE 489 "DefaultRules.ag" #-}+                            True+                            {-# LINE 1275 "DefaultRules.hs" #-}+                            )) of+                     { !_lhsOcontainsVars ->+                     (case (({-# LINE 34 "DefaultRules.ag" #-}+                             _lhsInt+                             {-# LINE 1280 "DefaultRules.hs" #-}+                             )) of+                      { !_partsOnt ->+                      (case (({-# LINE 35 "DefaultRules.ag" #-}+                              _lhsIcon+                              {-# LINE 1285 "DefaultRules.hs" #-}+                              )) of+                       { !_partsOcon ->+                       (case (parts_ _partsOcon _partsOnt ) of+                        { ( !_partsIcontainsVars,!_partsIcopy,!_partsIdefinedAttrs,!_partsIerrors,!_partsIlocals,!_partsIoutput) ->+                            (case (({-# LINE 34 "DefaultRules.ag" #-}+                                    _lhsInt+                                    {-# LINE 1292 "DefaultRules.hs" #-}+                                    )) of+                             { !_patOnt ->+                             (case (({-# LINE 35 "DefaultRules.ag" #-}+                                     _lhsIcon+                                     {-# LINE 1297 "DefaultRules.hs" #-}+                                     )) of+                              { !_patOcon ->+                              (case (pat_ _patOcon _patOnt ) of+                               { ( !_patIcontainsVars,!_patIcopy,!_patIdefinedAttrs,!_patIerrors,!_patIlocals,!_patIoutput) ->+                                   (case (({-# LINE 23 "./Patterns.ag" #-}+                                           Alias field_ attr_ _patIcopy _partsIcopy+                                           {-# LINE 1304 "DefaultRules.hs" #-}+                                           )) of+                                    { !_copy ->+                                    (case (({-# LINE 23 "./Patterns.ag" #-}+                                            _copy+                                            {-# LINE 1309 "DefaultRules.hs" #-}+                                            )) of+                                     { !_lhsOcopy ->+                                     (case (({-# LINE 471 "DefaultRules.ag" #-}+                                             Set.insert (field_,attr_) _patIdefinedAttrs+                                             {-# LINE 1314 "DefaultRules.hs" #-}+                                             )) of+                                      { !_lhsOdefinedAttrs ->+                                      (case (({-# LINE 119 "DefaultRules.ag" #-}+                                              _patIerrors Seq.>< _partsIerrors+                                              {-# LINE 1319 "DefaultRules.hs" #-}+                                              )) of+                                       { !_lhsOerrors ->+                                       (case (({-# LINE 472 "DefaultRules.ag" #-}+                                               if field_ == _LOC+                                                  then Set.insert attr_ _patIlocals+                                                  else _patIlocals+                                               {-# LINE 1326 "DefaultRules.hs" #-}+                                               )) of+                                        { !_lhsOlocals ->+                                        (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                Alias field_ attr_ _patIoutput _partsIoutput+                                                {-# LINE 1331 "DefaultRules.hs" #-}+                                                )) of+                                         { !_output ->+                                         (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                 _output+                                                 {-# LINE 1336 "DefaultRules.hs" #-}+                                                 )) 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 (({-# LINE 34 "DefaultRules.ag" #-}+                            _lhsInt+                            {-# LINE 1348 "DefaultRules.hs" #-}+                            )) of+                     { !_patsOnt ->+                     (case (({-# LINE 35 "DefaultRules.ag" #-}+                             _lhsIcon+                             {-# LINE 1353 "DefaultRules.hs" #-}+                             )) of+                      { !_patsOcon ->+                      (case (pats_ _patsOcon _patsOnt ) of+                       { ( !_patsIcontainsVars,!_patsIcopy,!_patsIdefinedAttrs,!_patsIerrors,!_patsIlocals,!_patsIoutput) ->+                           (case (({-# LINE 486 "DefaultRules.ag" #-}+                                   _patsIcontainsVars+                                   {-# LINE 1360 "DefaultRules.hs" #-}+                                   )) of+                            { !_lhsOcontainsVars ->+                            (case (({-# LINE 23 "./Patterns.ag" #-}+                                    Constr name_ _patsIcopy+                                    {-# LINE 1365 "DefaultRules.hs" #-}+                                    )) of+                             { !_copy ->+                             (case (({-# LINE 23 "./Patterns.ag" #-}+                                     _copy+                                     {-# LINE 1370 "DefaultRules.hs" #-}+                                     )) of+                              { !_lhsOcopy ->+                              (case (({-# LINE 466 "DefaultRules.ag" #-}+                                      _patsIdefinedAttrs+                                      {-# LINE 1375 "DefaultRules.hs" #-}+                                      )) of+                               { !_lhsOdefinedAttrs ->+                               (case (({-# LINE 119 "DefaultRules.ag" #-}+                                       _patsIerrors+                                       {-# LINE 1380 "DefaultRules.hs" #-}+                                       )) of+                                { !_lhsOerrors ->+                                (case (({-# LINE 465 "DefaultRules.ag" #-}+                                        _patsIlocals+                                        {-# LINE 1385 "DefaultRules.hs" #-}+                                        )) of+                                 { !_lhsOlocals ->+                                 (case (({-# LINE 502 "DefaultRules.ag" #-}+                                         Constr name_ _patsIoutput+                                         {-# LINE 1390 "DefaultRules.hs" #-}+                                         )) of+                                  { !_output ->+                                  (case (({-# LINE 502 "DefaultRules.ag" #-}+                                          _output+                                          {-# LINE 1395 "DefaultRules.hs" #-}+                                          )) 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 (({-# LINE 34 "DefaultRules.ag" #-}+                            _lhsInt+                            {-# LINE 1406 "DefaultRules.hs" #-}+                            )) of+                     { !_patOnt ->+                     (case (({-# LINE 35 "DefaultRules.ag" #-}+                             _lhsIcon+                             {-# LINE 1411 "DefaultRules.hs" #-}+                             )) of+                      { !_patOcon ->+                      (case (pat_ _patOcon _patOnt ) of+                       { ( !_patIcontainsVars,!_patIcopy,!_patIdefinedAttrs,!_patIerrors,!_patIlocals,!_patIoutput) ->+                           (case (({-# LINE 486 "DefaultRules.ag" #-}+                                   _patIcontainsVars+                                   {-# LINE 1418 "DefaultRules.hs" #-}+                                   )) of+                            { !_lhsOcontainsVars ->+                            (case (({-# LINE 23 "./Patterns.ag" #-}+                                    Irrefutable _patIcopy+                                    {-# LINE 1423 "DefaultRules.hs" #-}+                                    )) of+                             { !_copy ->+                             (case (({-# LINE 23 "./Patterns.ag" #-}+                                     _copy+                                     {-# LINE 1428 "DefaultRules.hs" #-}+                                     )) of+                              { !_lhsOcopy ->+                              (case (({-# LINE 466 "DefaultRules.ag" #-}+                                      _patIdefinedAttrs+                                      {-# LINE 1433 "DefaultRules.hs" #-}+                                      )) of+                               { !_lhsOdefinedAttrs ->+                               (case (({-# LINE 119 "DefaultRules.ag" #-}+                                       _patIerrors+                                       {-# LINE 1438 "DefaultRules.hs" #-}+                                       )) of+                                { !_lhsOerrors ->+                                (case (({-# LINE 465 "DefaultRules.ag" #-}+                                        _patIlocals+                                        {-# LINE 1443 "DefaultRules.hs" #-}+                                        )) of+                                 { !_lhsOlocals ->+                                 (case (({-# LINE 502 "DefaultRules.ag" #-}+                                         Irrefutable _patIoutput+                                         {-# LINE 1448 "DefaultRules.hs" #-}+                                         )) of+                                  { !_output ->+                                  (case (({-# LINE 502 "DefaultRules.ag" #-}+                                          _output+                                          {-# LINE 1453 "DefaultRules.hs" #-}+                                          )) 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 (({-# LINE 34 "DefaultRules.ag" #-}+                            _lhsInt+                            {-# LINE 1465 "DefaultRules.hs" #-}+                            )) of+                     { !_patsOnt ->+                     (case (({-# LINE 35 "DefaultRules.ag" #-}+                             _lhsIcon+                             {-# LINE 1470 "DefaultRules.hs" #-}+                             )) of+                      { !_patsOcon ->+                      (case (pats_ _patsOcon _patsOnt ) of+                       { ( !_patsIcontainsVars,!_patsIcopy,!_patsIdefinedAttrs,!_patsIerrors,!_patsIlocals,!_patsIoutput) ->+                           (case (({-# LINE 486 "DefaultRules.ag" #-}+                                   _patsIcontainsVars+                                   {-# LINE 1477 "DefaultRules.hs" #-}+                                   )) of+                            { !_lhsOcontainsVars ->+                            (case (({-# LINE 23 "./Patterns.ag" #-}+                                    Product pos_ _patsIcopy+                                    {-# LINE 1482 "DefaultRules.hs" #-}+                                    )) of+                             { !_copy ->+                             (case (({-# LINE 23 "./Patterns.ag" #-}+                                     _copy+                                     {-# LINE 1487 "DefaultRules.hs" #-}+                                     )) of+                              { !_lhsOcopy ->+                              (case (({-# LINE 466 "DefaultRules.ag" #-}+                                      _patsIdefinedAttrs+                                      {-# LINE 1492 "DefaultRules.hs" #-}+                                      )) of+                               { !_lhsOdefinedAttrs ->+                               (case (({-# LINE 119 "DefaultRules.ag" #-}+                                       _patsIerrors+                                       {-# LINE 1497 "DefaultRules.hs" #-}+                                       )) of+                                { !_lhsOerrors ->+                                (case (({-# LINE 465 "DefaultRules.ag" #-}+                                        _patsIlocals+                                        {-# LINE 1502 "DefaultRules.hs" #-}+                                        )) of+                                 { !_lhsOlocals ->+                                 (case (({-# LINE 502 "DefaultRules.ag" #-}+                                         Product pos_ _patsIoutput+                                         {-# LINE 1507 "DefaultRules.hs" #-}+                                         )) of+                                  { !_output ->+                                  (case (({-# LINE 502 "DefaultRules.ag" #-}+                                          _output+                                          {-# LINE 1512 "DefaultRules.hs" #-}+                                          )) of+                                   { !_lhsOoutput ->+                                   ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) })) )+sem_Pattern_Underscore :: Pos ->+                          T_Pattern +sem_Pattern_Underscore !pos_  =+    (T_Pattern (\ (!_lhsIcon)+                  (!_lhsInt) ->+                    (case (({-# LINE 486 "DefaultRules.ag" #-}+                            False+                            {-# LINE 1523 "DefaultRules.hs" #-}+                            )) of+                     { !_lhsOcontainsVars ->+                     (case (({-# LINE 23 "./Patterns.ag" #-}+                             Underscore pos_+                             {-# LINE 1528 "DefaultRules.hs" #-}+                             )) of+                      { !_copy ->+                      (case (({-# LINE 23 "./Patterns.ag" #-}+                              _copy+                              {-# LINE 1533 "DefaultRules.hs" #-}+                              )) of+                       { !_lhsOcopy ->+                       (case (({-# LINE 466 "DefaultRules.ag" #-}+                               Set.empty+                               {-# LINE 1538 "DefaultRules.hs" #-}+                               )) of+                        { !_lhsOdefinedAttrs ->+                        (case (({-# LINE 119 "DefaultRules.ag" #-}+                                Seq.empty+                                {-# LINE 1543 "DefaultRules.hs" #-}+                                )) of+                         { !_lhsOerrors ->+                         (case (({-# LINE 465 "DefaultRules.ag" #-}+                                 Set.empty+                                 {-# LINE 1548 "DefaultRules.hs" #-}+                                 )) of+                          { !_lhsOlocals ->+                          (case (({-# LINE 502 "DefaultRules.ag" #-}+                                  Underscore pos_+                                  {-# LINE 1553 "DefaultRules.hs" #-}+                                  )) of+                           { !_output ->+                           (case (({-# LINE 502 "DefaultRules.ag" #-}+                                   _output+                                   {-# LINE 1558 "DefaultRules.hs" #-}+                                   )) 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  ->+                 Inh_Patterns  ->+                 Syn_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 (({-# LINE 34 "DefaultRules.ag" #-}+                             _lhsInt+                             {-# LINE 1612 "DefaultRules.hs" #-}+                             )) of+                      { !_tlOnt ->+                      (case (({-# LINE 35 "DefaultRules.ag" #-}+                              _lhsIcon+                              {-# LINE 1617 "DefaultRules.hs" #-}+                              )) of+                       { !_tlOcon ->+                       (case (tl_ _tlOcon _tlOnt ) of+                        { ( !_tlIcontainsVars,!_tlIcopy,!_tlIdefinedAttrs,!_tlIerrors,!_tlIlocals,!_tlIoutput) ->+                            (case (({-# LINE 34 "DefaultRules.ag" #-}+                                    _lhsInt+                                    {-# LINE 1624 "DefaultRules.hs" #-}+                                    )) of+                             { !_hdOnt ->+                             (case (({-# LINE 35 "DefaultRules.ag" #-}+                                     _lhsIcon+                                     {-# LINE 1629 "DefaultRules.hs" #-}+                                     )) of+                              { !_hdOcon ->+                              (case (hd_ _hdOcon _hdOnt ) of+                               { ( !_hdIcontainsVars,!_hdIcopy,!_hdIdefinedAttrs,!_hdIerrors,!_hdIlocals,!_hdIoutput) ->+                                   (case (({-# LINE 486 "DefaultRules.ag" #-}+                                           _hdIcontainsVars || _tlIcontainsVars+                                           {-# LINE 1636 "DefaultRules.hs" #-}+                                           )) of+                                    { !_lhsOcontainsVars ->+                                    (case (({-# LINE 23 "./Patterns.ag" #-}+                                            (:) _hdIcopy _tlIcopy+                                            {-# LINE 1641 "DefaultRules.hs" #-}+                                            )) of+                                     { !_copy ->+                                     (case (({-# LINE 23 "./Patterns.ag" #-}+                                             _copy+                                             {-# LINE 1646 "DefaultRules.hs" #-}+                                             )) of+                                      { !_lhsOcopy ->+                                      (case (({-# LINE 466 "DefaultRules.ag" #-}+                                              _hdIdefinedAttrs `Set.union` _tlIdefinedAttrs+                                              {-# LINE 1651 "DefaultRules.hs" #-}+                                              )) of+                                       { !_lhsOdefinedAttrs ->+                                       (case (({-# LINE 119 "DefaultRules.ag" #-}+                                               _hdIerrors Seq.>< _tlIerrors+                                               {-# LINE 1656 "DefaultRules.hs" #-}+                                               )) of+                                        { !_lhsOerrors ->+                                        (case (({-# LINE 465 "DefaultRules.ag" #-}+                                                _hdIlocals `Set.union` _tlIlocals+                                                {-# LINE 1661 "DefaultRules.hs" #-}+                                                )) of+                                         { !_lhsOlocals ->+                                         (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                 (:) _hdIoutput _tlIoutput+                                                 {-# LINE 1666 "DefaultRules.hs" #-}+                                                 )) of+                                          { !_output ->+                                          (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                  _output+                                                  {-# LINE 1671 "DefaultRules.hs" #-}+                                                  )) of+                                           { !_lhsOoutput ->+                                           ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )+sem_Patterns_Nil :: T_Patterns +sem_Patterns_Nil  =+    (T_Patterns (\ (!_lhsIcon)+                   (!_lhsInt) ->+                     (case (({-# LINE 486 "DefaultRules.ag" #-}+                             False+                             {-# LINE 1681 "DefaultRules.hs" #-}+                             )) of+                      { !_lhsOcontainsVars ->+                      (case (({-# LINE 23 "./Patterns.ag" #-}+                              []+                              {-# LINE 1686 "DefaultRules.hs" #-}+                              )) of+                       { !_copy ->+                       (case (({-# LINE 23 "./Patterns.ag" #-}+                               _copy+                               {-# LINE 1691 "DefaultRules.hs" #-}+                               )) of+                        { !_lhsOcopy ->+                        (case (({-# LINE 466 "DefaultRules.ag" #-}+                                Set.empty+                                {-# LINE 1696 "DefaultRules.hs" #-}+                                )) of+                         { !_lhsOdefinedAttrs ->+                         (case (({-# LINE 119 "DefaultRules.ag" #-}+                                 Seq.empty+                                 {-# LINE 1701 "DefaultRules.hs" #-}+                                 )) of+                          { !_lhsOerrors ->+                          (case (({-# LINE 465 "DefaultRules.ag" #-}+                                  Set.empty+                                  {-# LINE 1706 "DefaultRules.hs" #-}+                                  )) of+                           { !_lhsOlocals ->+                           (case (({-# LINE 502 "DefaultRules.ag" #-}+                                   []+                                   {-# LINE 1711 "DefaultRules.hs" #-}+                                   )) of+                            { !_output ->+                            (case (({-# LINE 502 "DefaultRules.ag" #-}+                                    _output+                                    {-# LINE 1716 "DefaultRules.hs" #-}+                                    )) of+                             { !_lhsOoutput ->+                             ( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) })) )+-- Production --------------------------------------------------+{-+   visit 0:+      inherited attributes:+         aroundsIn            : Map ConstructorIdent (Map Identifier [Expression])+         augmentsIn           : Map ConstructorIdent (Map Identifier [Expression])+         cr                   : Bool+         inh                  : Attributes+         manualAttrOrderMap   : AttrOrderMap+         mergesIn             : Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))+         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 mergesIn    : _+            local merged      : _+            local orderDeps   : _+            local orderErrs   : _+            local _tup1       : _+            local errs        : _+            local aroundsIn   : _+            local augmentsIn  : _+            local newRls      : _+            local extra1      : _+            local extra2      : _+            local extra3      : _+-}+-- 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 ((Map ConstructorIdent (Map Identifier [Expression])) ->+                                      (Map ConstructorIdent (Map Identifier [Expression])) ->+                                      Bool ->+                                      Attributes ->+                                      AttrOrderMap ->+                                      (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))) ->+                                      (Set NontermIdent) ->+                                      NontermIdent ->+                                      Bool ->+                                      Attributes ->+                                      TypeSyns ->+                                      Int ->+                                      (Map Identifier (String,String,String)) ->+                                      ( (Seq Error),Production ,Int))+data Inh_Production  = Inh_Production {aroundsIn_Inh_Production :: !((Map ConstructorIdent (Map Identifier [Expression]))),augmentsIn_Inh_Production :: !((Map ConstructorIdent (Map Identifier [Expression]))),cr_Inh_Production :: !(Bool),inh_Inh_Production :: !(Attributes),manualAttrOrderMap_Inh_Production :: !(AttrOrderMap),mergesIn_Inh_Production :: !((Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))),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  ->+                   Inh_Production  ->+                   Syn_Production +wrap_Production !(T_Production sem ) !(Inh_Production _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsInt _lhsIo_rename _lhsIsyn _lhsItypeSyns _lhsIuniq _lhsIuseMap )  =+    (let ( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) = sem _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsImergesIn _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 (\ (!_lhsIaroundsIn)+                     (!_lhsIaugmentsIn)+                     (!_lhsIcr)+                     (!_lhsIinh)+                     (!_lhsImanualAttrOrderMap)+                     (!_lhsImergesIn)+                     (!_lhsInonterminals)+                     (!_lhsInt)+                     (!_lhsIo_rename)+                     (!_lhsIsyn)+                     (!_lhsItypeSyns)+                     (!_lhsIuniq)+                     (!_lhsIuseMap) ->+                       (case (({-# LINE 670 "DefaultRules.ag" #-}+                               Map.findWithDefault Map.empty con_ _lhsImergesIn+                               {-# LINE 1810 "DefaultRules.hs" #-}+                               )) of+                        { !_mergesIn ->+                        (case (({-# LINE 671 "DefaultRules.ag" #-}+                                Set.fromList [ c | (_,cs,_) <- Map.elems _mergesIn    , c <- cs ]+                                {-# LINE 1815 "DefaultRules.hs" #-}+                                )) of+                         { !_merged ->+                         (case (({-# LINE 666 "DefaultRules.ag" #-}+                                 _merged+                                 {-# LINE 1820 "DefaultRules.hs" #-}+                                 )) of+                          { !_childrenOmerged ->+                          (case (({-# LINE 597 "DefaultRules.ag" #-}+                                  Set.toList $ Map.findWithDefault Set.empty con_ $ Map.findWithDefault Map.empty _lhsInt _lhsImanualAttrOrderMap+                                  {-# LINE 1825 "DefaultRules.hs" #-}+                                  )) of+                           { !_orderDeps ->+                           (case (({-# LINE 495 "DefaultRules.ag" #-}+                                   _lhsIuniq+                                   {-# LINE 1830 "DefaultRules.hs" #-}+                                   )) of+                            { !_rulesOuniq ->+                            (case (({-# LINE 34 "DefaultRules.ag" #-}+                                    _lhsInt+                                    {-# LINE 1835 "DefaultRules.hs" #-}+                                    )) of+                             { !_rulesOnt ->+                             (case (({-# LINE 147 "DefaultRules.ag" #-}+                                     con_+                                     {-# LINE 1840 "DefaultRules.hs" #-}+                                     )) of+                              { !_rulesOcon ->+                              (case (rules_ _rulesOcon _rulesOnt _rulesOuniq ) of+                               { ( !_rulesIdefinedAttrs,!_rulesIerrors,!_rulesIlocals,!_rulesIoutput,!_rulesIruleNames,!_rulesIuniq) ->+                                   (case (({-# LINE 34 "DefaultRules.ag" #-}+                                           _lhsInt+                                           {-# LINE 1847 "DefaultRules.hs" #-}+                                           )) of+                                    { !_childrenOnt ->+                                    (case (({-# LINE 47 "DefaultRules.ag" #-}+                                            _lhsIcr+                                            {-# LINE 1852 "DefaultRules.hs" #-}+                                            )) of+                                     { !_childrenOcr ->+                                     (case (({-# LINE 148 "DefaultRules.ag" #-}+                                             con_+                                             {-# LINE 1857 "DefaultRules.hs" #-}+                                             )) of+                                      { !_childrenOcon ->+                                      (case (children_ _childrenOcon _childrenOcr _childrenOmerged _childrenOnt ) of+                                       { ( !_childrenIerrors,!_childrenIfields,!_childrenIinputs,!_childrenIoutput,!_childrenIoutputs) ->+                                           (case (({-# LINE 599 "DefaultRules.ag" #-}+                                                   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]+                                                       existsRule nm = if nm `Set.member` _rulesIruleNames+                                                                       then []+                                                                       else [MissingNamedRule _lhsInt con_ nm]+                                                       checkIn (OccAttr fld nm)  = isInAttribute fld nm+                                                       checkIn (OccRule nm)      = existsRule nm+                                                       checkOut (OccAttr fld nm) = isOutAttribute fld nm+                                                       checkOut (OccRule nm)     = existsRule nm+                                                   in Seq.fromList . concat $+                                                      [ checkIn occA ++ checkOut occB+                                                      | (Dependency occA occB) <- _orderDeps+                                                      ]+                                                   {-# LINE 1898 "DefaultRules.hs" #-}+                                                   )) of+                                            { !_orderErrs ->+                                            (case (({-# LINE 336 "DefaultRules.ag" #-}+                                                    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,virt) <- _childrenIfields, childExists virt])+                                                             | 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+                                                               childExists Nothing         = True+                                                               childExists (Just (Just _)) = True+                                                               childExists (Just Nothing)  = False+                                                        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)+                                                    {-# LINE 1958 "DefaultRules.hs" #-}+                                                    )) of+                                             { !__tup1 ->+                                             (case (({-# LINE 336 "DefaultRules.ag" #-}+                                                     __tup1+                                                     {-# LINE 1963 "DefaultRules.hs" #-}+                                                     )) of+                                              { !(_,!_errs) ->+                                              (case (({-# LINE 334 "DefaultRules.ag" #-}+                                                      _childrenIerrors >< _errs >< _rulesIerrors >< _orderErrs+                                                      {-# LINE 1968 "DefaultRules.hs" #-}+                                                      )) of+                                               { !_lhsOerrors ->+                                               (case (({-# LINE 662 "DefaultRules.ag" #-}+                                                       Map.findWithDefault Map.empty con_ _lhsIaroundsIn+                                                       {-# LINE 1973 "DefaultRules.hs" #-}+                                                       )) of+                                                { !_aroundsIn ->+                                                (case (({-# LINE 655 "DefaultRules.ag" #-}+                                                        Map.findWithDefault Map.empty con_ _lhsIaugmentsIn+                                                        {-# LINE 1978 "DefaultRules.hs" #-}+                                                        )) of+                                                 { !_augmentsIn ->+                                                 (case (({-# LINE 336 "DefaultRules.ag" #-}+                                                         __tup1+                                                         {-# LINE 1983 "DefaultRules.hs" #-}+                                                         )) of+                                                  { !(!_newRls,_) ->+                                                  (case (({-# LINE 509 "DefaultRules.ag" #-}+                                                          foldr addAugments (_rulesIoutput ++ _newRls) (Map.assocs _augmentsIn    )+                                                          {-# LINE 1988 "DefaultRules.hs" #-}+                                                          )) of+                                                   { !_extra1 ->+                                                   (case (({-# LINE 510 "DefaultRules.ag" #-}+                                                           foldr addArounds _extra1     (Map.assocs _aroundsIn    )+                                                           {-# LINE 1993 "DefaultRules.hs" #-}+                                                           )) of+                                                    { !_extra2 ->+                                                    (case (({-# LINE 511 "DefaultRules.ag" #-}+                                                            foldr addMerges _extra2     (Map.assocs _mergesIn    )+                                                            {-# LINE 1998 "DefaultRules.hs" #-}+                                                            )) of+                                                     { !_extra3 ->+                                                     (case (typeSigs_ ) of+                                                      { ( !_typeSigsIoutput) ->+                                                          (case (({-# LINE 512 "DefaultRules.ag" #-}+                                                                  Production con_ _childrenIoutput _extra3     _typeSigsIoutput+                                                                  {-# LINE 2005 "DefaultRules.hs" #-}+                                                                  )) of+                                                           { !_lhsOoutput ->+                                                           (case (({-# LINE 495 "DefaultRules.ag" #-}+                                                                   _rulesIuniq+                                                                   {-# LINE 2010 "DefaultRules.hs" #-}+                                                                   )) of+                                                            { !_lhsOuniq ->+                                                            ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )+-- Productions -------------------------------------------------+{-+   visit 0:+      inherited attributes:+         aroundsIn            : Map ConstructorIdent (Map Identifier [Expression])+         augmentsIn           : Map ConstructorIdent (Map Identifier [Expression])+         cr                   : Bool+         inh                  : Attributes+         manualAttrOrderMap   : AttrOrderMap+         mergesIn             : Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))+         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 ((Map ConstructorIdent (Map Identifier [Expression])) ->+                                        (Map ConstructorIdent (Map Identifier [Expression])) ->+                                        Bool ->+                                        Attributes ->+                                        AttrOrderMap ->+                                        (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))) ->+                                        (Set NontermIdent) ->+                                        NontermIdent ->+                                        Bool ->+                                        Attributes ->+                                        TypeSyns ->+                                        Int ->+                                        (Map Identifier (String,String,String)) ->+                                        ( (Seq Error),Productions ,Int))+data Inh_Productions  = Inh_Productions {aroundsIn_Inh_Productions :: !((Map ConstructorIdent (Map Identifier [Expression]))),augmentsIn_Inh_Productions :: !((Map ConstructorIdent (Map Identifier [Expression]))),cr_Inh_Productions :: !(Bool),inh_Inh_Productions :: !(Attributes),manualAttrOrderMap_Inh_Productions :: !(AttrOrderMap),mergesIn_Inh_Productions :: !((Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))),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  ->+                    Inh_Productions  ->+                    Syn_Productions +wrap_Productions !(T_Productions sem ) !(Inh_Productions _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsInt _lhsIo_rename _lhsIsyn _lhsItypeSyns _lhsIuniq _lhsIuseMap )  =+    (let ( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) = sem _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinh _lhsImanualAttrOrderMap _lhsImergesIn _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 (\ (!_lhsIaroundsIn)+                      (!_lhsIaugmentsIn)+                      (!_lhsIcr)+                      (!_lhsIinh)+                      (!_lhsImanualAttrOrderMap)+                      (!_lhsImergesIn)+                      (!_lhsInonterminals)+                      (!_lhsInt)+                      (!_lhsIo_rename)+                      (!_lhsIsyn)+                      (!_lhsItypeSyns)+                      (!_lhsIuniq)+                      (!_lhsIuseMap) ->+                        (case (({-# LINE 139 "DefaultRules.ag" #-}+                                _lhsIuseMap+                                {-# LINE 2092 "DefaultRules.hs" #-}+                                )) of+                         { !_tlOuseMap ->+                         (case (({-# LINE 55 "DefaultRules.ag" #-}+                                 _lhsItypeSyns+                                 {-# LINE 2097 "DefaultRules.hs" #-}+                                 )) of+                          { !_tlOtypeSyns ->+                          (case (({-# LINE 139 "DefaultRules.ag" #-}+                                  _lhsIsyn+                                  {-# LINE 2102 "DefaultRules.hs" #-}+                                  )) of+                           { !_tlOsyn ->+                           (case (({-# LINE 43 "DefaultRules.ag" #-}+                                   _lhsIo_rename+                                   {-# LINE 2107 "DefaultRules.hs" #-}+                                   )) of+                            { !_tlOo_rename ->+                            (case (({-# LINE 34 "DefaultRules.ag" #-}+                                    _lhsInt+                                    {-# LINE 2112 "DefaultRules.hs" #-}+                                    )) of+                             { !_tlOnt ->+                             (case (({-# LINE 665 "DefaultRules.ag" #-}+                                     _lhsImergesIn+                                     {-# LINE 2117 "DefaultRules.hs" #-}+                                     )) of+                              { !_tlOmergesIn ->+                              (case (({-# LINE 583 "DefaultRules.ag" #-}+                                      _lhsImanualAttrOrderMap+                                      {-# LINE 2122 "DefaultRules.hs" #-}+                                      )) of+                               { !_tlOmanualAttrOrderMap ->+                               (case (({-# LINE 139 "DefaultRules.ag" #-}+                                       _lhsIinh+                                       {-# LINE 2127 "DefaultRules.hs" #-}+                                       )) of+                                { !_tlOinh ->+                                (case (({-# LINE 44 "DefaultRules.ag" #-}+                                        _lhsIcr+                                        {-# LINE 2132 "DefaultRules.hs" #-}+                                        )) of+                                 { !_tlOcr ->+                                 (case (({-# LINE 139 "DefaultRules.ag" #-}+                                         _lhsIuseMap+                                         {-# LINE 2137 "DefaultRules.hs" #-}+                                         )) of+                                  { !_hdOuseMap ->+                                  (case (({-# LINE 55 "DefaultRules.ag" #-}+                                          _lhsItypeSyns+                                          {-# LINE 2142 "DefaultRules.hs" #-}+                                          )) of+                                   { !_hdOtypeSyns ->+                                   (case (({-# LINE 139 "DefaultRules.ag" #-}+                                           _lhsIsyn+                                           {-# LINE 2147 "DefaultRules.hs" #-}+                                           )) of+                                    { !_hdOsyn ->+                                    (case (({-# LINE 43 "DefaultRules.ag" #-}+                                            _lhsIo_rename+                                            {-# LINE 2152 "DefaultRules.hs" #-}+                                            )) of+                                     { !_hdOo_rename ->+                                     (case (({-# LINE 34 "DefaultRules.ag" #-}+                                             _lhsInt+                                             {-# LINE 2157 "DefaultRules.hs" #-}+                                             )) of+                                      { !_hdOnt ->+                                      (case (({-# LINE 665 "DefaultRules.ag" #-}+                                              _lhsImergesIn+                                              {-# LINE 2162 "DefaultRules.hs" #-}+                                              )) of+                                       { !_hdOmergesIn ->+                                       (case (({-# LINE 583 "DefaultRules.ag" #-}+                                               _lhsImanualAttrOrderMap+                                               {-# LINE 2167 "DefaultRules.hs" #-}+                                               )) of+                                        { !_hdOmanualAttrOrderMap ->+                                        (case (({-# LINE 139 "DefaultRules.ag" #-}+                                                _lhsIinh+                                                {-# LINE 2172 "DefaultRules.hs" #-}+                                                )) of+                                         { !_hdOinh ->+                                         (case (({-# LINE 44 "DefaultRules.ag" #-}+                                                 _lhsIcr+                                                 {-# LINE 2177 "DefaultRules.hs" #-}+                                                 )) of+                                          { !_hdOcr ->+                                          (case (({-# LINE 495 "DefaultRules.ag" #-}+                                                  _lhsIuniq+                                                  {-# LINE 2182 "DefaultRules.hs" #-}+                                                  )) of+                                           { !_hdOuniq ->+                                           (case (({-# LINE 129 "DefaultRules.ag" #-}+                                                   _lhsInonterminals+                                                   {-# LINE 2187 "DefaultRules.hs" #-}+                                                   )) of+                                            { !_hdOnonterminals ->+                                            (case (({-# LINE 651 "DefaultRules.ag" #-}+                                                    _lhsIaugmentsIn+                                                    {-# LINE 2192 "DefaultRules.hs" #-}+                                                    )) of+                                             { !_hdOaugmentsIn ->+                                             (case (({-# LINE 658 "DefaultRules.ag" #-}+                                                     _lhsIaroundsIn+                                                     {-# LINE 2197 "DefaultRules.hs" #-}+                                                     )) of+                                              { !_hdOaroundsIn ->+                                              (case (hd_ _hdOaroundsIn _hdOaugmentsIn _hdOcr _hdOinh _hdOmanualAttrOrderMap _hdOmergesIn _hdOnonterminals _hdOnt _hdOo_rename _hdOsyn _hdOtypeSyns _hdOuniq _hdOuseMap ) of+                                               { ( !_hdIerrors,!_hdIoutput,!_hdIuniq) ->+                                                   (case (({-# LINE 495 "DefaultRules.ag" #-}+                                                           _hdIuniq+                                                           {-# LINE 2204 "DefaultRules.hs" #-}+                                                           )) of+                                                    { !_tlOuniq ->+                                                    (case (({-# LINE 129 "DefaultRules.ag" #-}+                                                            _lhsInonterminals+                                                            {-# LINE 2209 "DefaultRules.hs" #-}+                                                            )) of+                                                     { !_tlOnonterminals ->+                                                     (case (({-# LINE 651 "DefaultRules.ag" #-}+                                                             _lhsIaugmentsIn+                                                             {-# LINE 2214 "DefaultRules.hs" #-}+                                                             )) of+                                                      { !_tlOaugmentsIn ->+                                                      (case (({-# LINE 658 "DefaultRules.ag" #-}+                                                              _lhsIaroundsIn+                                                              {-# LINE 2219 "DefaultRules.hs" #-}+                                                              )) of+                                                       { !_tlOaroundsIn ->+                                                       (case (tl_ _tlOaroundsIn _tlOaugmentsIn _tlOcr _tlOinh _tlOmanualAttrOrderMap _tlOmergesIn _tlOnonterminals _tlOnt _tlOo_rename _tlOsyn _tlOtypeSyns _tlOuniq _tlOuseMap ) of+                                                        { ( !_tlIerrors,!_tlIoutput,!_tlIuniq) ->+                                                            (case (({-# LINE 119 "DefaultRules.ag" #-}+                                                                    _hdIerrors Seq.>< _tlIerrors+                                                                    {-# LINE 2226 "DefaultRules.hs" #-}+                                                                    )) of+                                                             { !_lhsOerrors ->+                                                             (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                                     (:) _hdIoutput _tlIoutput+                                                                     {-# LINE 2231 "DefaultRules.hs" #-}+                                                                     )) of+                                                              { !_output ->+                                                              (case (({-# LINE 502 "DefaultRules.ag" #-}+                                                                      _output+                                                                      {-# LINE 2236 "DefaultRules.hs" #-}+                                                                      )) of+                                                               { !_lhsOoutput ->+                                                               (case (({-# LINE 495 "DefaultRules.ag" #-}+                                                                       _tlIuniq+                                                                       {-# LINE 2241 "DefaultRules.hs" #-}+                                                                       )) of+                                                                { !_lhsOuniq ->+                                                                ( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )+sem_Productions_Nil :: T_Productions +sem_Productions_Nil  =+    (T_Productions (\ (!_lhsIaroundsIn)+                      (!_lhsIaugmentsIn)+                      (!_lhsIcr)+                      (!_lhsIinh)+                      (!_lhsImanualAttrOrderMap)+                      (!_lhsImergesIn)+                      (!_lhsInonterminals)+                      (!_lhsInt)+                      (!_lhsIo_rename)+                      (!_lhsIsyn)+                      (!_lhsItypeSyns)+                      (!_lhsIuniq)+                      (!_lhsIuseMap) ->+                        (case (({-# LINE 119 "DefaultRules.ag" #-}+                                Seq.empty+                                {-# LINE 2262 "DefaultRules.hs" #-}+                                )) of+                         { !_lhsOerrors ->+                         (case (({-# LINE 502 "DefaultRules.ag" #-}+                                 []+                                 {-# LINE 2267 "DefaultRules.hs" #-}+                                 )) of+                          { !_output ->+                          (case (({-# LINE 502 "DefaultRules.ag" #-}+                                  _output+                                  {-# LINE 2272 "DefaultRules.hs" #-}+                                  )) of+                           { !_lhsOoutput ->+                           (case (({-# LINE 495 "DefaultRules.ag" #-}+                                   _lhsIuniq+                                   {-# LINE 2277 "DefaultRules.hs" #-}+                                   )) 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 +         ruleNames            : Set Identifier+   alternatives:+      alternative Rule:+         child mbName         : {Maybe Identifier}+         child pattern        : Pattern +         child rhs            : {Expression}+         child owrt           : {Bool}+         child origin         : {String}+         child explicit       : {Bool}+         visit 0:+            local output      : _+            local _tup2       : {(Rules,Int)}+-}+-- cata+sem_Rule :: Rule  ->+            T_Rule +sem_Rule !(Rule _mbName _pattern _rhs _owrt _origin _explicit )  =+    (sem_Rule_Rule _mbName (sem_Pattern _pattern ) _rhs _owrt _origin _explicit )+-- semantic domain+newtype T_Rule  = T_Rule (ConstructorIdent ->+                          NontermIdent ->+                          Int ->+                          ( Bool,(Set (Identifier,Identifier)),(Seq Error),(Set Identifier),Rule ,Rules ,(Set Identifier),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 ),ruleNames_Syn_Rule :: !((Set Identifier)),uniq_Syn_Rule :: !(Int)}+wrap_Rule :: T_Rule  ->+             Inh_Rule  ->+             Syn_Rule +wrap_Rule !(T_Rule sem ) !(Inh_Rule _lhsIcon _lhsInt _lhsIuniq )  =+    (let ( !_lhsOcontainsVars,!_lhsOdefinedAttrs,!_lhsOerrors,!_lhsOlocals,!_lhsOoutput,!_lhsOoutputs,!_lhsOruleNames,!_lhsOuniq) = sem _lhsIcon _lhsInt _lhsIuniq +     in  (Syn_Rule _lhsOcontainsVars _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput _lhsOoutputs _lhsOruleNames _lhsOuniq ))+sem_Rule_Rule :: (Maybe Identifier) ->+                 T_Pattern  ->+                 Expression ->+                 Bool ->+                 String ->+                 Bool ->+                 T_Rule +sem_Rule_Rule !mbName_ !(T_Pattern pattern_ ) !rhs_ !owrt_ !origin_ !explicit_  =+    (T_Rule (\ (!_lhsIcon)+               (!_lhsInt)+               (!_lhsIuniq) ->+                 (case (({-# LINE 34 "DefaultRules.ag" #-}+                         _lhsInt+                         {-# LINE 2340 "DefaultRules.hs" #-}+                         )) of+                  { !_patternOnt ->+                  (case (({-# LINE 35 "DefaultRules.ag" #-}+                          _lhsIcon+                          {-# LINE 2345 "DefaultRules.hs" #-}+                          )) of+                   { !_patternOcon ->+                   (case (pattern_ _patternOcon _patternOnt ) of+                    { ( !_patternIcontainsVars,!_patternIcopy,!_patternIdefinedAttrs,!_patternIerrors,!_patternIlocals,!_patternIoutput) ->+                        (case (({-# LINE 486 "DefaultRules.ag" #-}+                                _patternIcontainsVars+                                {-# LINE 2352 "DefaultRules.hs" #-}+                                )) of+                         { !_lhsOcontainsVars ->+                         (case (({-# LINE 466 "DefaultRules.ag" #-}+                                 _patternIdefinedAttrs+                                 {-# LINE 2357 "DefaultRules.hs" #-}+                                 )) of+                          { !_lhsOdefinedAttrs ->+                          (case (({-# LINE 119 "DefaultRules.ag" #-}+                                  _patternIerrors+                                  {-# LINE 2362 "DefaultRules.hs" #-}+                                  )) of+                           { !_lhsOerrors ->+                           (case (({-# LINE 465 "DefaultRules.ag" #-}+                                   _patternIlocals+                                   {-# LINE 2367 "DefaultRules.hs" #-}+                                   )) of+                            { !_lhsOlocals ->+                            (case (({-# LINE 502 "DefaultRules.ag" #-}+                                    Rule mbName_ _patternIoutput rhs_ owrt_ origin_ explicit_+                                    {-# LINE 2372 "DefaultRules.hs" #-}+                                    )) of+                             { !_output ->+                             (case (({-# LINE 502 "DefaultRules.ag" #-}+                                     _output+                                     {-# LINE 2377 "DefaultRules.hs" #-}+                                     )) of+                              { !_lhsOoutput ->+                              (case (({-# LINE 519 "DefaultRules.ag" #-}+                                      multiRule _output     _lhsIuniq+                                      {-# LINE 2382 "DefaultRules.hs" #-}+                                      )) of+                               { !__tup2 ->+                               (case (({-# LINE 519 "DefaultRules.ag" #-}+                                       __tup2+                                       {-# LINE 2387 "DefaultRules.hs" #-}+                                       )) of+                                { !(!_lhsOoutputs,_) ->+                                (case (({-# LINE 591 "DefaultRules.ag" #-}+                                        case mbName_ of+                                          Nothing -> Set.empty+                                          Just nm -> Set.singleton nm+                                        {-# LINE 2394 "DefaultRules.hs" #-}+                                        )) of+                                 { !_lhsOruleNames ->+                                 (case (({-# LINE 519 "DefaultRules.ag" #-}+                                         __tup2+                                         {-# LINE 2399 "DefaultRules.hs" #-}+                                         )) of+                                  { !(_,!_lhsOuniq) ->+                                  ( _lhsOcontainsVars,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOoutputs,_lhsOruleNames,_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 +         ruleNames            : Set Identifier+   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 ,(Set Identifier),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 ),ruleNames_Syn_Rules :: !((Set Identifier)),uniq_Syn_Rules :: !(Int)}+wrap_Rules :: T_Rules  ->+              Inh_Rules  ->+              Syn_Rules +wrap_Rules !(T_Rules sem ) !(Inh_Rules _lhsIcon _lhsInt _lhsIuniq )  =+    (let ( !_lhsOdefinedAttrs,!_lhsOerrors,!_lhsOlocals,!_lhsOoutput,!_lhsOruleNames,!_lhsOuniq) = sem _lhsIcon _lhsInt _lhsIuniq +     in  (Syn_Rules _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput _lhsOruleNames _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 (({-# LINE 495 "DefaultRules.ag" #-}+                          _lhsIuniq+                          {-# LINE 2452 "DefaultRules.hs" #-}+                          )) of+                   { !_hdOuniq ->+                   (case (({-# LINE 34 "DefaultRules.ag" #-}+                           _lhsInt+                           {-# LINE 2457 "DefaultRules.hs" #-}+                           )) of+                    { !_hdOnt ->+                    (case (({-# LINE 35 "DefaultRules.ag" #-}+                            _lhsIcon+                            {-# LINE 2462 "DefaultRules.hs" #-}+                            )) of+                     { !_hdOcon ->+                     (case (hd_ _hdOcon _hdOnt _hdOuniq ) of+                      { ( !_hdIcontainsVars,!_hdIdefinedAttrs,!_hdIerrors,!_hdIlocals,!_hdIoutput,!_hdIoutputs,!_hdIruleNames,!_hdIuniq) ->+                          (case (({-# LINE 495 "DefaultRules.ag" #-}+                                  _hdIuniq+                                  {-# LINE 2469 "DefaultRules.hs" #-}+                                  )) of+                           { !_tlOuniq ->+                           (case (({-# LINE 34 "DefaultRules.ag" #-}+                                   _lhsInt+                                   {-# LINE 2474 "DefaultRules.hs" #-}+                                   )) of+                            { !_tlOnt ->+                            (case (({-# LINE 35 "DefaultRules.ag" #-}+                                    _lhsIcon+                                    {-# LINE 2479 "DefaultRules.hs" #-}+                                    )) of+                             { !_tlOcon ->+                             (case (tl_ _tlOcon _tlOnt _tlOuniq ) of+                              { ( !_tlIdefinedAttrs,!_tlIerrors,!_tlIlocals,!_tlIoutput,!_tlIruleNames,!_tlIuniq) ->+                                  (case (({-# LINE 466 "DefaultRules.ag" #-}+                                          _hdIdefinedAttrs `Set.union` _tlIdefinedAttrs+                                          {-# LINE 2486 "DefaultRules.hs" #-}+                                          )) of+                                   { !_lhsOdefinedAttrs ->+                                   (case (({-# LINE 119 "DefaultRules.ag" #-}+                                           _hdIerrors Seq.>< _tlIerrors+                                           {-# LINE 2491 "DefaultRules.hs" #-}+                                           )) of+                                    { !_lhsOerrors ->+                                    (case (({-# LINE 465 "DefaultRules.ag" #-}+                                            _hdIlocals `Set.union` _tlIlocals+                                            {-# LINE 2496 "DefaultRules.hs" #-}+                                            )) of+                                     { !_lhsOlocals ->+                                     (case (({-# LINE 515 "DefaultRules.ag" #-}+                                             if _hdIcontainsVars then _hdIoutputs ++ _tlIoutput else _tlIoutput+                                             {-# LINE 2501 "DefaultRules.hs" #-}+                                             )) of+                                      { !_lhsOoutput ->+                                      (case (({-# LINE 589 "DefaultRules.ag" #-}+                                              _hdIruleNames `Set.union` _tlIruleNames+                                              {-# LINE 2506 "DefaultRules.hs" #-}+                                              )) of+                                       { !_lhsOruleNames ->+                                       (case (({-# LINE 495 "DefaultRules.ag" #-}+                                               _tlIuniq+                                               {-# LINE 2511 "DefaultRules.hs" #-}+                                               )) of+                                        { !_lhsOuniq ->+                                        ( _lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOruleNames,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) })) )+sem_Rules_Nil :: T_Rules +sem_Rules_Nil  =+    (T_Rules (\ (!_lhsIcon)+                (!_lhsInt)+                (!_lhsIuniq) ->+                  (case (({-# LINE 466 "DefaultRules.ag" #-}+                          Set.empty+                          {-# LINE 2522 "DefaultRules.hs" #-}+                          )) of+                   { !_lhsOdefinedAttrs ->+                   (case (({-# LINE 119 "DefaultRules.ag" #-}+                           Seq.empty+                           {-# LINE 2527 "DefaultRules.hs" #-}+                           )) of+                    { !_lhsOerrors ->+                    (case (({-# LINE 465 "DefaultRules.ag" #-}+                            Set.empty+                            {-# LINE 2532 "DefaultRules.hs" #-}+                            )) of+                     { !_lhsOlocals ->+                     (case (({-# LINE 502 "DefaultRules.ag" #-}+                             []+                             {-# LINE 2537 "DefaultRules.hs" #-}+                             )) of+                      { !_output ->+                      (case (({-# LINE 502 "DefaultRules.ag" #-}+                              _output+                              {-# LINE 2542 "DefaultRules.hs" #-}+                              )) of+                       { !_lhsOoutput ->+                       (case (({-# LINE 589 "DefaultRules.ag" #-}+                               Set.empty+                               {-# LINE 2547 "DefaultRules.hs" #-}+                               )) of+                        { !_lhsOruleNames ->+                        (case (({-# LINE 495 "DefaultRules.ag" #-}+                                _lhsIuniq+                                {-# LINE 2552 "DefaultRules.hs" #-}+                                )) of+                         { !_lhsOuniq ->+                         ( _lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOruleNames,_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  ->+                Inh_TypeSig  ->+                Syn_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 (({-# LINE 502 "DefaultRules.ag" #-}+                       TypeSig name_ tp_+                       {-# LINE 2589 "DefaultRules.hs" #-}+                       )) of+                { !_output ->+                (case (({-# LINE 502 "DefaultRules.ag" #-}+                        _output+                        {-# LINE 2594 "DefaultRules.hs" #-}+                        )) 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  ->+                 Inh_TypeSigs  ->+                 Syn_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 (({-# LINE 502 "DefaultRules.ag" #-}+                                  (:) _hdIoutput _tlIoutput+                                  {-# LINE 2638 "DefaultRules.hs" #-}+                                  )) of+                           { !_output ->+                           (case (({-# LINE 502 "DefaultRules.ag" #-}+                                   _output+                                   {-# LINE 2643 "DefaultRules.hs" #-}+                                   )) of+                            { !_lhsOoutput ->+                            ( _lhsOoutput) }) }) }) }) )+sem_TypeSigs_Nil :: T_TypeSigs +sem_TypeSigs_Nil  =+    (T_TypeSigs (case (({-# LINE 502 "DefaultRules.ag" #-}+                        []+                        {-# LINE 2651 "DefaultRules.hs" #-}+                        )) of+                 { !_output ->+                 (case (({-# LINE 502 "DefaultRules.ag" #-}+                         _output+                         {-# LINE 2656 "DefaultRules.hs" #-}                          )) of                   { !_lhsOoutput ->                   ( _lhsOoutput) }) }) )
src/Version.hs view
@@ -1,4 +1,4 @@ module Version where
 
 banner :: String
-banner = "Attribute Grammar compiler / HUT project. Version 0.9.38.4"
+banner = "Attribute Grammar compiler / HUT project. Version 0.9.38.5"
uuagc.cabal view
@@ -1,7 +1,7 @@ cabal-version: >=1.2 build-type: Simple name: uuagc-version: 0.9.38.4+version: 0.9.38.5 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.38.4+version: 0.9.38.5 license: GPL license-file: LICENSE maintainer: Arie Middelkoop <ariem@cs.uu.nl>