{-# LANGUAGE Rank2Types, GADTs #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE ScopedTypeVariables #-}
module DefaultRules where
{-# LINE 2 "src-ag/Patterns.ag" #-}
import UU.Scanner.Position(Pos)
import CommonTypes (ConstructorIdent,Identifier)
{-# LINE 12 "src-generated/DefaultRules.hs" #-}
{-# LINE 2 "src-ag/AbstractSyntax.ag" #-}
import Data.Set(Set)
import Data.Map(Map)
import Patterns (Pattern(..),Patterns)
import Expression (Expression(..))
import Macro
import CommonTypes
import ErrorMessages
{-# LINE 24 "src-generated/DefaultRules.hs" #-}
{-# LINE 15 "src-ag/DefaultRules.ag" #-}
import qualified Data.List
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 Data.Maybe
import HsToken
import HsTokenScanner
import Data.List(intersperse)
import Data.Char
import AbstractSyntax
import ErrorMessages
import Options
{-# LINE 46 "src-generated/DefaultRules.hs" #-}
import Control.Monad.Identity (Identity)
import qualified Control.Monad.Identity
{-# LINE 80 "src-ag/DefaultRules.ag" #-}
fieldName n = '@' : getName n
locName n = "@loc." ++ getName n
attrName fld attr
| fld == _LOC = locName attr
| fld == _FIELD = fieldName attr
| otherwise = '@' : getName fld ++ "." ++ getName attr
_ACHILD = Ident "(" noPos
mkLocVar = AGField _LOC
isRecordConstructor :: NontermIdent -> Map NontermIdent ConstructorType -> Bool
isRecordConstructor nt ctm = Map.lookup nt ctm == Just RecordConstructor
buildConExpr ocaml clean conmap typeSyns rename nt con1 fs'
| nt `elem` map fst typeSyns = if ocaml then synonymMl
else if clean then synonymClean
else synonymHs
| otherwise = normalExpr
where fs = map fst fs'
con = getName con1
tup = " " ++ buildTuple fs
args = " " ++ unwords fs
normalExpr = if clean && isRecordConstructor nt conmap
then "{" ++ con ++ "|" ++
unwords (intersperse "," $ map (\(new, old) -> getName old ++ " = " ++ new) fs')
++ "}"
else conname' ++ args
conname' | rename = getName nt ++ "_" ++ getName con1
| otherwise = getName con1
synonymHs | con == "Tuple" = buildTuple fs
| con == "Cons" = "(:)" ++ args
| con == "Nil" = case lookup nt typeSyns of
Just (Map _ _) -> "Data.Map.empty"
Just (IntMap _) -> "Data.IntMap.empty"
Just (OrdSet _) -> "Data.Set.empty"
Just IntSet -> "Data.IntSet.empty"
_ -> "[]"
| con == "Just" = "Just" ++ args
| con == "Nothing" = "Nothing"
| con == "Entry" = ( case lookup nt typeSyns of
Just (Map _ _) -> "Data.Map.insert"
Just (IntMap _) -> "Data.IntMap.insert"
Just (OrdSet _) -> "Data.Set.insert"
Just IntSet -> "Data.IntSet.insert" ) ++ args
| otherwise = normalExpr
synonymMl | con == "Tuple" = buildTuple fs
| con == "Cons" = "(::)" ++ tup
| con == "Nil" = case lookup nt typeSyns of
Just (Map _ _) -> prefixMod nt "empty"
Just (IntMap _) -> prefixMod nt "empty"
Just (OrdSet _) -> prefixMod nt "empty"
Just IntSet -> prefixMod nt "empty"
_ -> "[]"
| con == "Just" = "Some" ++ tup
| con == "Nothing" = "None"
| con == "Entry" = ( case lookup nt typeSyns of
Just (Map _ _) -> prefixMod nt "add"
Just (IntMap _) -> prefixMod nt "add"
Just (OrdSet _) -> prefixMod nt "add"
Just IntSet -> prefixMod nt "add" ) ++ args
| otherwise = normalExpr
synonymClean | con == "Tuple" = buildTuple fs
| con == "Cons" = "(\\x xs -> [x:xs])" ++ args
| con == "Nil" = case lookup nt typeSyns of
Just (Map _ _) -> "Data.Map.empty"
Just (IntMap _) -> "Data.IntMap.empty"
Just (OrdSet _) -> "Data.Set.empty"
Just IntSet -> "Data.IntSet.empty"
_ -> "[]"
| con == "Just" = "Just" ++ args
| con == "Nothing" = "Nothing"
| con == "Entry" = ( case lookup nt typeSyns of
Just (Map _ _) -> "Data.Map.insert"
Just (IntMap _) -> "Data.IntMap.insert"
Just (OrdSet _) -> "Data.Set.insert"
Just IntSet -> "Data.IntSet.insert" ) ++ args
| otherwise = normalExpr
prefixMod nt nm = "M_" ++ getName nt ++ "." ++ nm
concatSeq = foldr (Seq.><) Seq.empty
splitAttrs :: Map Identifier a -> [Identifier] -> ([(Identifier,a)],[Identifier])
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 159 "src-generated/DefaultRules.hs" #-}
{-# LINE 255 "src-ag/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 clean nt con fld a
= (if clean then "abort" else "error")
++ " \"missing rule: "
++ show nt ++ "." ++ show con ++ "."
++ show fld ++ "." ++ show a ++ "\""
makeRule :: (Identifier,Identifier) -> Expression -> String -> Bool -> Maybe Error -> Rule
makeRule (f1,a1) expr origin identity mbDelayedError
= Rule Nothing
(Alias f1 a1 (Underscore noPos))
expr
False
origin
False
True
identity
mbDelayedError
False
useRule :: Options -> Set Identifier -> [(Identifier,Attributes)] -> (Identifier,(String,String,String)) -> Rule
useRule opts locals ch_outs (n,(op,e,pos))
= let elems = [ fld
| (fld,as) <- ch_outs
, Map.member n as
]
isOp [] = False
isOp (c:cs)
| isSpace c = isOp cs
| isAlpha c = case dropWhile isAlpha cs of
('.':cs2) -> isOp cs2
_ -> False
| c == '(' = False
| otherwise = True
tks | Set.member n locals = [mkLocVar n noPos Nothing]
| null elems = lexTokens opts noPos e
| otherwise = lexTokens opts noPos str
where
opExpr l r
| isOp op = l ++ " " ++ op ++ " " ++ r
| otherwise = "(" ++ op ++ " " ++ l ++ " " ++ r ++ ")"
str = foldr1 opExpr (map (flip attrName n) elems)
in makeRule (_LHS,n)
(Expression noPos tks)
("use rule " ++ pos)
False
Nothing
selfRule :: Bool -> Identifier -> [HsToken] -> Rule
selfRule lhsNecLoc attr tks
= makeRule (if lhsNecLoc then _LHS else _LOC,attr)
(Expression noPos tks)
"self rule"
False
Nothing
concatRE rsess = let (rss,ess) = unzip rsess
in (concat rss, concatSeq ess)
copyRule :: Options -> Set NontermIdent -> Identifier -> Identifier -> Bool -> Set Identifier -> (Map Identifier Identifier, (Identifier,[Identifier])) -> ([Rule], Seq Error)
copyRule options wrappers nt con modcopy locals (env,(fld,as))
= concatRE (map copyRu as)
where
copyRu a
= ( [ makeRule (fld,a)
(Expression noPos tks)
(cruletxt sel)
True
mbDelayedErr
]
, err
)
where
sel
| not modcopy
&& Set.member a locals = Just _LOC
| otherwise = Map.lookup a env
(tks,err,mbDelayedErr)
= case sel of
Nothing -> let tks = [HsToken (missingRuleErrorExpr (clean options) nt con fld a) noPos]
err = MissingRule nt con fld a
in if nt `Set.member` wrappers && kennedyWarren options
then (tks, Seq.empty, Just err)
else (tks, Seq.singleton err, Nothing)
Just f
| f == _ACHILD -> ( [AGLocal a noPos Nothing]
, Seq.singleton (deprecatedCopyRuleError nt con fld a)
, Nothing
)
| otherwise -> ( [AGField f a noPos Nothing]
, Seq.empty
, Nothing
)
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 311 "src-generated/DefaultRules.hs" #-}
{-# LINE 488 "src-ag/DefaultRules.ag" #-}
buildTuple fs = "(" ++ concat (intersperse "," fs) ++ ")"
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 True False Nothing False
rhs = Expression noPos tks
tks = [ HsToken "foldr ($) " noPos, mkLocVar substSyn noPos Nothing, HsToken " [" noPos] ++ funs ++ [HsToken "]" noPos]
funs = intersperse (HsToken ", " noPos) (map (\n -> mkLocVar 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 True False Nothing False) funNames exprs
modify (Rule mbNm pat rhs owrt origin expl pure identity mbErr eager)
| containsSyn pat = Rule mbNm (modifyPat pat) rhs owrt origin expl pure identity mbErr eager
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) = (field == _LHS && attr == syn) || containsSyn pat
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)
| field == _LHS && attr == syn = Alias _LOC substSyn (modifyPat pat)
| otherwise = Alias field attr (modifyPat pat)
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 True False Nothing False
rhs = Expression noPos tks
tks = [ HsToken "\\s -> foldr ($) s " noPos, HsToken " [" noPos] ++ funs ++ [HsToken "]" noPos]
funs = intersperse (HsToken ", " noPos) (map (\n -> mkLocVar 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 True False Nothing 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 True False Nothing False
childLoc = Ident (show target ++ "_merge") (getPos target)
{-# LINE 380 "src-generated/DefaultRules.hs" #-}
{-# LINE 606 "src-ag/DefaultRules.ag" #-}
elimSelfId :: NontermIdent -> [Identifier] -> Type -> Type
elimSelfId nt args Self = NT nt (map getName args) False
elimSelfId _ _ tp = tp
elimSelfStr :: NontermIdent -> [String] -> Type -> Type
elimSelfStr nt args Self = NT nt args False
elimSelfStr _ _ tp = tp
{-# LINE 391 "src-generated/DefaultRules.hs" #-}
{-# LINE 658 "src-ag/DefaultRules.ag" #-}
mkRuleAlias :: Rule -> (Rule, Maybe Rule)
mkRuleAlias r@(Rule Nothing _ _ _ _ _ _ _ _ _) = (r, Nothing)
mkRuleAlias (Rule (Just nm) pat expr owrt origin expl pure identity mbErr eager) = (r', Just alias) where
alias = Rule Nothing (Alias _LOC (Ident ("_rule_" ++ show nm) pos) (Underscore pos)) expr owrt origin expl pure identity mbErr eager
pos = getPos nm
expr' = Expression pos tks
tks = [mkLocVar (Ident ("_rule_" ++ show nm) pos) pos (Just ("Indirection to rule " ++ show nm))]
r' = Rule Nothing pat expr' owrt origin False True identity Nothing False
{-# LINE 406 "src-generated/DefaultRules.hs" #-}
{-# LINE 675 "src-ag/DefaultRules.ag" #-}
needsMultiRules :: Options -> Bool
needsMultiRules opts = (visit opts || withCycle opts) && not (kennedyWarren opts)
{-# LINE 412 "src-generated/DefaultRules.hs" #-}
{-# LINE 680 "src-ag/DefaultRules.ag" #-}
multiRule :: Rule -> Int -> ([Rule], Int)
multiRule (Rule _ pat expr owrt origin expl pure identity mbErr eager) 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)
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' True False mbErr eager : rs9
, n9
)
)
f expl' w e p n
= ( p
, ( [Rule Nothing (w p) e owrt origin expl' True False mbErr eager]
, n
)
)
in snd (f expl id expr pat uniq)
{-# LINE 462 "src-generated/DefaultRules.hs" #-}
data Inh_Child = Inh_Child { Inh_Child -> Identifier
con_Inh_Child :: !(ConstructorIdent), Inh_Child -> Bool
cr_Inh_Child :: !(Bool), Inh_Child -> Map Identifier Attributes
inhMap_Inh_Child :: !(Map Identifier Attributes), Inh_Child -> Set Identifier
merged_Inh_Child :: !(Set Identifier), Inh_Child -> Identifier
nt_Inh_Child :: !(NontermIdent), Inh_Child -> [Identifier]
params_Inh_Child :: !([Identifier]), Inh_Child -> Map Identifier Attributes
synMap_Inh_Child :: !(Map Identifier Attributes) }
data Syn_Child = Syn_Child { Syn_Child -> Seq Error
errors_Syn_Child :: !(Seq Error), Syn_Child -> (Identifier, Type, ChildKind)
field_Syn_Child :: !( (Identifier,Type,ChildKind) ), Syn_Child -> Attributes
inherited_Syn_Child :: !(Attributes), Syn_Child -> Identifier
name_Syn_Child :: !(Identifier), Syn_Child -> Child
output_Syn_Child :: !(Child), Syn_Child -> Attributes
synthesized_Syn_Child :: !(Attributes) }
{-# INLINABLE wrap_Child #-}
wrap_Child :: T_Child -> Inh_Child -> (Syn_Child )
wrap_Child :: T_Child -> Inh_Child -> Syn_Child
wrap_Child !(T_Child Identity T_Child_s0
act) !(Inh_Child Identifier
_lhsIcon Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap Set Identifier
_lhsImerged Identifier
_lhsInt [Identifier]
_lhsIparams Map Identifier Attributes
_lhsIsynMap) =
Identity Syn_Child -> Syn_Child
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_Child_s0
sem <- Identity T_Child_s0
act
let arg0 :: T_Child_vIn0
arg0 = Identifier
-> Bool
-> Map Identifier Attributes
-> Set Identifier
-> Identifier
-> [Identifier]
-> Map Identifier Attributes
-> T_Child_vIn0
T_Child_vIn0 Identifier
_lhsIcon Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap Set Identifier
_lhsImerged Identifier
_lhsInt [Identifier]
_lhsIparams Map Identifier Attributes
_lhsIsynMap
!(T_Child_vOut0 Seq Error
_lhsOerrors (Identifier, Type, ChildKind)
_lhsOfield Attributes
_lhsOinherited Identifier
_lhsOname Child
_lhsOoutput Attributes
_lhsOsynthesized) <- T_Child_vOut0 -> Identity T_Child_vOut0
forall (m :: * -> *) a. Monad m => a -> m a
return (T_Child_s0 -> K_Child_s0 T_Child_v0 -> T_Child_v0
T_Child_s0 -> forall t. K_Child_s0 t -> t
inv_Child_s0 T_Child_s0
sem K_Child_s0 T_Child_v0
K_Child_v0 T_Child_vIn0
arg0)
Syn_Child -> Identity Syn_Child
forall (m :: * -> *) a. Monad m => a -> m a
return (Seq Error
-> (Identifier, Type, ChildKind)
-> Attributes
-> Identifier
-> Child
-> Attributes
-> Syn_Child
Syn_Child Seq Error
_lhsOerrors (Identifier, Type, ChildKind)
_lhsOfield Attributes
_lhsOinherited Identifier
_lhsOname Child
_lhsOoutput Attributes
_lhsOsynthesized)
)
{-# INLINE sem_Child #-}
sem_Child :: Child -> T_Child
sem_Child :: Child -> T_Child
sem_Child ( Child !Identifier
name_ !Type
tp_ !ChildKind
kind_ ) = Identifier -> Type -> ChildKind -> T_Child
sem_Child_Child Identifier
name_ Type
tp_ ChildKind
kind_
newtype T_Child = T_Child {
T_Child -> Identity T_Child_s0
attach_T_Child :: Identity (T_Child_s0 )
}
data T_Child_s0 where C_Child_s0 :: {
T_Child_s0 -> forall t. K_Child_s0 t -> t
inv_Child_s0 :: !(forall t. K_Child_s0 t -> t)
} -> T_Child_s0
data T_Child_s1 = C_Child_s1
data T_Child_s26 = C_Child_s26
newtype T_Child_s56 = C_Child_s56 {
T_Child_s56 -> T_Child_v53
inv_Child_s56 :: (T_Child_v53 )
}
data K_Child_s0 k where
K_Child_v0 :: K_Child_s0 (T_Child_v0 )
K_Child_v13 :: K_Child_s0 (T_Child_v13 )
K_Child_v52 :: K_Child_s0 (T_Child_v52 )
type T_Child_v0 = (T_Child_vIn0 ) -> (T_Child_vOut0 )
data T_Child_vIn0 = T_Child_vIn0 !(ConstructorIdent) !(Bool) !(Map Identifier Attributes) !(Set Identifier) !(NontermIdent) !([Identifier]) !(Map Identifier Attributes)
data T_Child_vOut0 = T_Child_vOut0 !(Seq Error) !( (Identifier,Type,ChildKind) ) !(Attributes) !(Identifier) !(Child) !(Attributes)
type T_Child_v13 = (T_Child_vIn13 ) -> (T_Child_vOut13 )
data T_Child_vIn13 = T_Child_vIn13 !(Map Identifier Attributes) !(Set Identifier) !(Map Identifier Attributes)
data T_Child_vOut13 = T_Child_vOut13 !(Seq Error) !( (Identifier,Type,ChildKind) ) !(Attributes) !(Identifier) !(Child) !(Attributes)
type T_Child_v52 = (T_Child_vIn52 ) -> (T_Child_vOut52 )
data T_Child_vIn52 = T_Child_vIn52 !(Map Identifier Attributes) !(Set Identifier) !(Map Identifier Attributes)
data T_Child_vOut52 = T_Child_vOut52 !(Seq Error) !( (Identifier,Type,ChildKind) ) !(Attributes) !(Identifier) !(Attributes) !(T_Child_s56 )
type T_Child_v53 = (T_Child_vIn53 ) -> (T_Child_vOut53 )
data T_Child_vIn53 = T_Child_vIn53
data T_Child_vOut53 = T_Child_vOut53 !(Child)
{-# NOINLINE sem_Child_Child #-}
sem_Child_Child :: (Identifier) -> (Type) -> (ChildKind) -> T_Child
sem_Child_Child :: Identifier -> Type -> ChildKind -> T_Child
sem_Child_Child !Identifier
arg_name_ !Type
arg_tp_ !ChildKind
arg_kind_ = Identity T_Child_s0 -> T_Child
T_Child (T_Child_s0 -> Identity T_Child_s0
forall (m :: * -> *) a. Monad m => a -> m a
return T_Child_s0
st0) where
{-# NOINLINE st0 #-}
!st0 :: T_Child_s0
st0 = let
k0 :: K_Child_s0 t -> t
k0 :: K_Child_s0 t -> t
k0 K_Child_s0 t
K_Child_v0 = t
T_Child_v0
v0
k0 K_Child_s0 t
K_Child_v13 = t
T_Child_v13
v13
k0 K_Child_s0 t
K_Child_v52 = t
T_Child_v52
v52
v0 :: T_Child_v0
v0 :: T_Child_v0
v0 = \ !(T_Child_vIn0 Identifier
_lhsIcon Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap Set Identifier
_lhsImerged Identifier
_lhsInt [Identifier]
_lhsIparams Map Identifier Attributes
_lhsIsynMap) -> (
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule11 () in
let _lhsOfield :: (Identifier,Type,ChildKind)
!_lhsOfield :: (Identifier, Type, ChildKind)
_lhsOfield = ChildKind -> Identifier -> Type -> (Identifier, Type, ChildKind)
forall c a b. c -> a -> b -> (a, b, c)
rule6 ChildKind
arg_kind_ Identifier
arg_name_ Type
arg_tp_ in
let !_chnt :: Identifier
_chnt = Identifier -> Type -> Identifier
rule0 Identifier
arg_name_ Type
arg_tp_ in
let !_inh :: Attributes
_inh = Identifier -> Map Identifier Attributes -> Attributes
rule1 Identifier
_chnt Map Identifier Attributes
_lhsIinhMap in
let !(!Identifier
_nt,![[Char]]
_params) = Identifier -> Type -> (Identifier, [[Char]])
rule7 Identifier
arg_name_ Type
arg_tp_ in
let !_inh1 :: Attributes
_inh1 = Attributes -> Identifier -> [[Char]] -> Attributes
forall k. Map k Type -> Identifier -> [[Char]] -> Map k Type
rule8 Attributes
_inh Identifier
_nt [[Char]]
_params in
let _lhsOinherited :: Attributes
!_lhsOinherited :: Attributes
_lhsOinherited = Attributes -> Attributes
forall a. a -> a
rule4 Attributes
_inh1 in
let _lhsOname :: Identifier
!_lhsOname :: Identifier
_lhsOname = Identifier -> Identifier
forall a. a -> a
rule3 Identifier
arg_name_ in
let _lhsOoutput :: Child
!_lhsOoutput :: Child
_lhsOoutput = ChildKind -> Identifier -> Type -> Child
rule10 ChildKind
arg_kind_ Identifier
arg_name_ Type
arg_tp_ in
let !_syn :: Attributes
_syn = Identifier -> Map Identifier Attributes -> Attributes
rule2 Identifier
_chnt Map Identifier Attributes
_lhsIsynMap in
let !_syn1 :: Attributes
_syn1 = Identifier -> [[Char]] -> Attributes -> Attributes
forall k. Identifier -> [[Char]] -> Map k Type -> Map k Type
rule9 Identifier
_nt [[Char]]
_params Attributes
_syn in
let _lhsOsynthesized :: Attributes
!_lhsOsynthesized :: Attributes
_lhsOsynthesized = Set Identifier -> Attributes -> Identifier -> Attributes
forall k a. Set Identifier -> Map k a -> Identifier -> Map k a
rule5 Set Identifier
_lhsImerged Attributes
_syn1 Identifier
arg_name_ in
let !__result_ :: T_Child_vOut0
__result_ = Seq Error
-> (Identifier, Type, ChildKind)
-> Attributes
-> Identifier
-> Child
-> Attributes
-> T_Child_vOut0
T_Child_vOut0 Seq Error
_lhsOerrors (Identifier, Type, ChildKind)
_lhsOfield Attributes
_lhsOinherited Identifier
_lhsOname Child
_lhsOoutput Attributes
_lhsOsynthesized
in T_Child_vOut0
__result_ )
v13 :: T_Child_v13
v13 :: T_Child_v13
v13 = \ !(T_Child_vIn13 Map Identifier Attributes
_lhsIinhMap Set Identifier
_lhsImerged Map Identifier Attributes
_lhsIsynMap) -> (
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule11 () in
let _lhsOfield :: (Identifier,Type,ChildKind)
!_lhsOfield :: (Identifier, Type, ChildKind)
_lhsOfield = ChildKind -> Identifier -> Type -> (Identifier, Type, ChildKind)
forall c a b. c -> a -> b -> (a, b, c)
rule6 ChildKind
arg_kind_ Identifier
arg_name_ Type
arg_tp_ in
let !_chnt :: Identifier
_chnt = Identifier -> Type -> Identifier
rule0 Identifier
arg_name_ Type
arg_tp_ in
let !_inh :: Attributes
_inh = Identifier -> Map Identifier Attributes -> Attributes
rule1 Identifier
_chnt Map Identifier Attributes
_lhsIinhMap in
let !(!Identifier
_nt,![[Char]]
_params) = Identifier -> Type -> (Identifier, [[Char]])
rule7 Identifier
arg_name_ Type
arg_tp_ in
let !_inh1 :: Attributes
_inh1 = Attributes -> Identifier -> [[Char]] -> Attributes
forall k. Map k Type -> Identifier -> [[Char]] -> Map k Type
rule8 Attributes
_inh Identifier
_nt [[Char]]
_params in
let _lhsOinherited :: Attributes
!_lhsOinherited :: Attributes
_lhsOinherited = Attributes -> Attributes
forall a. a -> a
rule4 Attributes
_inh1 in
let _lhsOname :: Identifier
!_lhsOname :: Identifier
_lhsOname = Identifier -> Identifier
forall a. a -> a
rule3 Identifier
arg_name_ in
let _lhsOoutput :: Child
!_lhsOoutput :: Child
_lhsOoutput = ChildKind -> Identifier -> Type -> Child
rule10 ChildKind
arg_kind_ Identifier
arg_name_ Type
arg_tp_ in
let !_syn :: Attributes
_syn = Identifier -> Map Identifier Attributes -> Attributes
rule2 Identifier
_chnt Map Identifier Attributes
_lhsIsynMap in
let !_syn1 :: Attributes
_syn1 = Identifier -> [[Char]] -> Attributes -> Attributes
forall k. Identifier -> [[Char]] -> Map k Type -> Map k Type
rule9 Identifier
_nt [[Char]]
_params Attributes
_syn in
let _lhsOsynthesized :: Attributes
!_lhsOsynthesized :: Attributes
_lhsOsynthesized = Set Identifier -> Attributes -> Identifier -> Attributes
forall k a. Set Identifier -> Map k a -> Identifier -> Map k a
rule5 Set Identifier
_lhsImerged Attributes
_syn1 Identifier
arg_name_ in
let !__result_ :: T_Child_vOut13
__result_ = Seq Error
-> (Identifier, Type, ChildKind)
-> Attributes
-> Identifier
-> Child
-> Attributes
-> T_Child_vOut13
T_Child_vOut13 Seq Error
_lhsOerrors (Identifier, Type, ChildKind)
_lhsOfield Attributes
_lhsOinherited Identifier
_lhsOname Child
_lhsOoutput Attributes
_lhsOsynthesized
in T_Child_vOut13
__result_ )
v52 :: T_Child_v52
v52 :: T_Child_v52
v52 = \ !(T_Child_vIn52 Map Identifier Attributes
_lhsIinhMap Set Identifier
_lhsImerged Map Identifier Attributes
_lhsIsynMap) -> (
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule11 () in
let _lhsOfield :: (Identifier,Type,ChildKind)
!_lhsOfield :: (Identifier, Type, ChildKind)
_lhsOfield = ChildKind -> Identifier -> Type -> (Identifier, Type, ChildKind)
forall c a b. c -> a -> b -> (a, b, c)
rule6 ChildKind
arg_kind_ Identifier
arg_name_ Type
arg_tp_ in
let !_chnt :: Identifier
_chnt = Identifier -> Type -> Identifier
rule0 Identifier
arg_name_ Type
arg_tp_ in
let !_inh :: Attributes
_inh = Identifier -> Map Identifier Attributes -> Attributes
rule1 Identifier
_chnt Map Identifier Attributes
_lhsIinhMap in
let !(!Identifier
_nt,![[Char]]
_params) = Identifier -> Type -> (Identifier, [[Char]])
rule7 Identifier
arg_name_ Type
arg_tp_ in
let !_inh1 :: Attributes
_inh1 = Attributes -> Identifier -> [[Char]] -> Attributes
forall k. Map k Type -> Identifier -> [[Char]] -> Map k Type
rule8 Attributes
_inh Identifier
_nt [[Char]]
_params in
let _lhsOinherited :: Attributes
!_lhsOinherited :: Attributes
_lhsOinherited = Attributes -> Attributes
forall a. a -> a
rule4 Attributes
_inh1 in
let _lhsOname :: Identifier
!_lhsOname :: Identifier
_lhsOname = Identifier -> Identifier
forall a. a -> a
rule3 Identifier
arg_name_ in
let !_syn :: Attributes
_syn = Identifier -> Map Identifier Attributes -> Attributes
rule2 Identifier
_chnt Map Identifier Attributes
_lhsIsynMap in
let !_syn1 :: Attributes
_syn1 = Identifier -> [[Char]] -> Attributes -> Attributes
forall k. Identifier -> [[Char]] -> Map k Type -> Map k Type
rule9 Identifier
_nt [[Char]]
_params Attributes
_syn in
let _lhsOsynthesized :: Attributes
!_lhsOsynthesized :: Attributes
_lhsOsynthesized = Set Identifier -> Attributes -> Identifier -> Attributes
forall k a. Set Identifier -> Map k a -> Identifier -> Map k a
rule5 Set Identifier
_lhsImerged Attributes
_syn1 Identifier
arg_name_ in
let !__st_ :: T_Child_s56
__st_ = () -> T_Child_s56
st56 ()
!__result_ :: T_Child_vOut52
__result_ = Seq Error
-> (Identifier, Type, ChildKind)
-> Attributes
-> Identifier
-> Attributes
-> T_Child_s56
-> T_Child_vOut52
T_Child_vOut52 Seq Error
_lhsOerrors (Identifier, Type, ChildKind)
_lhsOfield Attributes
_lhsOinherited Identifier
_lhsOname Attributes
_lhsOsynthesized T_Child_s56
__st_
in T_Child_vOut52
__result_ )
in (forall t. K_Child_s0 t -> t) -> T_Child_s0
C_Child_s0 forall t. K_Child_s0 t -> t
k0
{-# NOINLINE st56 #-}
st56 :: () -> T_Child_s56
st56 = \ (()
_ :: ()) -> let
v53 :: T_Child_v53
v53 :: T_Child_v53
v53 = \ !(T_Child_vIn53
T_Child_vIn53 ) -> (
let _lhsOoutput :: Child
!_lhsOoutput :: Child
_lhsOoutput = ChildKind -> Identifier -> Type -> Child
rule10 ChildKind
arg_kind_ Identifier
arg_name_ Type
arg_tp_ in
let !__result_ :: T_Child_vOut53
__result_ = Child -> T_Child_vOut53
T_Child_vOut53 Child
_lhsOoutput
in T_Child_vOut53
__result_ )
in T_Child_v53 -> T_Child_s56
C_Child_s56 T_Child_v53
v53
{-# NOINLINE[1] rule0 #-}
{-# LINE 19 "src-ag/DistChildAttr.ag" #-}
rule0 = \ !name_ !tp_ ->
{-# LINE 19 "src-ag/DistChildAttr.ag" #-}
case tp_ of
NT nt _ _ -> nt
Self -> error ("The type of child " ++ show name_ ++ " should not be a Self type.")
Haskell t -> identifier ""
{-# LINE 602 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule1 #-}
{-# LINE 23 "src-ag/DistChildAttr.ag" #-}
rule1 = \ !_chnt ((!_lhsIinhMap) :: Map Identifier Attributes) ->
{-# LINE 23 "src-ag/DistChildAttr.ag" #-}
Map.findWithDefault Map.empty _chnt _lhsIinhMap
{-# LINE 608 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule2 #-}
{-# LINE 24 "src-ag/DistChildAttr.ag" #-}
rule2 = \ !_chnt ((!_lhsIsynMap) :: Map Identifier Attributes) ->
{-# LINE 24 "src-ag/DistChildAttr.ag" #-}
Map.findWithDefault Map.empty _chnt _lhsIsynMap
{-# LINE 614 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule3 #-}
{-# LINE 229 "src-ag/DefaultRules.ag" #-}
rule3 = \ !name_ ->
{-# LINE 229 "src-ag/DefaultRules.ag" #-}
name_
{-# LINE 620 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule4 #-}
{-# LINE 238 "src-ag/DefaultRules.ag" #-}
rule4 = \ !_inh1 ->
{-# LINE 238 "src-ag/DefaultRules.ag" #-}
_inh1
{-# LINE 626 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule5 #-}
{-# LINE 239 "src-ag/DefaultRules.ag" #-}
rule5 = \ ((!_lhsImerged) :: Set Identifier) !_syn1 !name_ ->
{-# LINE 239 "src-ag/DefaultRules.ag" #-}
if name_ `Set.member` _lhsImerged
then Map.empty
else _syn1
{-# LINE 634 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule6 #-}
{-# LINE 574 "src-ag/DefaultRules.ag" #-}
rule6 = \ !kind_ !name_ !tp_ ->
{-# LINE 574 "src-ag/DefaultRules.ag" #-}
(name_,tp_,kind_)
{-# LINE 640 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule7 #-}
{-# LINE 596 "src-ag/DefaultRules.ag" #-}
rule7 = \ !name_ !tp_ ->
{-# LINE 596 "src-ag/DefaultRules.ag" #-}
case tp_ of
NT nt params _ -> (nt, params)
Self -> error ("The type of child " ++ show name_ ++ " should not be a Self type.")
Haskell t -> (identifier t, [])
{-# LINE 649 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule8 #-}
{-# LINE 600 "src-ag/DefaultRules.ag" #-}
rule8 = \ !_inh !_nt !_params ->
{-# LINE 600 "src-ag/DefaultRules.ag" #-}
Map.map (elimSelfStr _nt _params ) _inh
{-# LINE 655 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule9 #-}
{-# LINE 601 "src-ag/DefaultRules.ag" #-}
rule9 = \ !_nt !_params !_syn ->
{-# LINE 601 "src-ag/DefaultRules.ag" #-}
Map.map (elimSelfStr _nt _params ) _syn
{-# LINE 661 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule10 #-}
{-# LINE 642 "src-ag/DefaultRules.ag" #-}
rule10 = \ !kind_ !name_ !tp_ ->
{-# LINE 642 "src-ag/DefaultRules.ag" #-}
Child name_ tp_ kind_
{-# LINE 667 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule11 #-}
rule11 = \ (_ :: ()) ->
Seq.empty
data Inh_Children = Inh_Children { Inh_Children -> Identifier
con_Inh_Children :: !(ConstructorIdent), Inh_Children -> Bool
cr_Inh_Children :: !(Bool), Inh_Children -> Map Identifier Attributes
inhMap_Inh_Children :: !(Map Identifier Attributes), Inh_Children -> Set Identifier
merged_Inh_Children :: !(Set Identifier), Inh_Children -> Identifier
nt_Inh_Children :: !(NontermIdent), Inh_Children -> [Identifier]
params_Inh_Children :: !([Identifier]), Inh_Children -> Map Identifier Attributes
synMap_Inh_Children :: !(Map Identifier Attributes) }
data Syn_Children = Syn_Children { Syn_Children -> Seq Error
errors_Syn_Children :: !(Seq Error), Syn_Children -> [(Identifier, Type, ChildKind)]
fields_Syn_Children :: !([(Identifier,Type,ChildKind)]), Syn_Children -> [(Identifier, Attributes)]
inputs_Syn_Children :: !([(Identifier, Attributes)]), Syn_Children -> Children
output_Syn_Children :: !(Children), Syn_Children -> [(Identifier, Attributes)]
outputs_Syn_Children :: !([(Identifier, Attributes)]) }
{-# INLINABLE wrap_Children #-}
wrap_Children :: T_Children -> Inh_Children -> (Syn_Children )
wrap_Children :: T_Children -> Inh_Children -> Syn_Children
wrap_Children !(T_Children Identity T_Children_s2
act) !(Inh_Children Identifier
_lhsIcon Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap Set Identifier
_lhsImerged Identifier
_lhsInt [Identifier]
_lhsIparams Map Identifier Attributes
_lhsIsynMap) =
Identity Syn_Children -> Syn_Children
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_Children_s2
sem <- Identity T_Children_s2
act
let arg1 :: T_Children_vIn1
arg1 = Identifier
-> Bool
-> Map Identifier Attributes
-> Set Identifier
-> Identifier
-> [Identifier]
-> Map Identifier Attributes
-> T_Children_vIn1
T_Children_vIn1 Identifier
_lhsIcon Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap Set Identifier
_lhsImerged Identifier
_lhsInt [Identifier]
_lhsIparams Map Identifier Attributes
_lhsIsynMap
!(T_Children_vOut1 Seq Error
_lhsOerrors [(Identifier, Type, ChildKind)]
_lhsOfields [(Identifier, Attributes)]
_lhsOinputs Children
_lhsOoutput [(Identifier, Attributes)]
_lhsOoutputs) <- T_Children_vOut1 -> Identity T_Children_vOut1
forall (m :: * -> *) a. Monad m => a -> m a
return (T_Children_s2 -> K_Children_s2 T_Children_v1 -> T_Children_v1
T_Children_s2 -> forall t. K_Children_s2 t -> t
inv_Children_s2 T_Children_s2
sem K_Children_s2 T_Children_v1
K_Children_v1 T_Children_vIn1
arg1)
Syn_Children -> Identity Syn_Children
forall (m :: * -> *) a. Monad m => a -> m a
return (Seq Error
-> [(Identifier, Type, ChildKind)]
-> [(Identifier, Attributes)]
-> Children
-> [(Identifier, Attributes)]
-> Syn_Children
Syn_Children Seq Error
_lhsOerrors [(Identifier, Type, ChildKind)]
_lhsOfields [(Identifier, Attributes)]
_lhsOinputs Children
_lhsOoutput [(Identifier, Attributes)]
_lhsOoutputs)
)
{-# NOINLINE sem_Children #-}
sem_Children :: Children -> T_Children
sem_Children :: Children -> T_Children
sem_Children Children
list = (T_Child -> T_Children -> T_Children)
-> T_Children -> [T_Child] -> T_Children
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
Prelude.foldr T_Child -> T_Children -> T_Children
sem_Children_Cons T_Children
sem_Children_Nil ((Child -> T_Child) -> Children -> [T_Child]
forall a b. (a -> b) -> [a] -> [b]
Prelude.map Child -> T_Child
sem_Child Children
list)
newtype T_Children = T_Children {
T_Children -> Identity T_Children_s2
attach_T_Children :: Identity (T_Children_s2 )
}
data T_Children_s2 where C_Children_s2 :: {
T_Children_s2 -> forall t. K_Children_s2 t -> t
inv_Children_s2 :: !(forall t. K_Children_s2 t -> t)
} -> T_Children_s2
data T_Children_s3 = C_Children_s3
data T_Children_s27 = C_Children_s27
newtype T_Children_s53 = C_Children_s53 {
T_Children_s53 -> T_Children_v48
inv_Children_s53 :: (T_Children_v48 )
}
data K_Children_s2 k where
K_Children_v1 :: K_Children_s2 (T_Children_v1 )
K_Children_v14 :: K_Children_s2 (T_Children_v14 )
K_Children_v47 :: K_Children_s2 (T_Children_v47 )
type T_Children_v1 = (T_Children_vIn1 ) -> (T_Children_vOut1 )
data T_Children_vIn1 = T_Children_vIn1 !(ConstructorIdent) !(Bool) !(Map Identifier Attributes) !(Set Identifier) !(NontermIdent) !([Identifier]) !(Map Identifier Attributes)
data T_Children_vOut1 = T_Children_vOut1 !(Seq Error) !([(Identifier,Type,ChildKind)]) !([(Identifier, Attributes)]) !(Children) !([(Identifier, Attributes)])
type T_Children_v14 = (T_Children_vIn14 ) -> (T_Children_vOut14 )
data T_Children_vIn14 = T_Children_vIn14 !(Map Identifier Attributes) !(Set Identifier) !(Map Identifier Attributes)
data T_Children_vOut14 = T_Children_vOut14 !(Seq Error) !([(Identifier,Type,ChildKind)]) !([(Identifier, Attributes)]) !(Children) !([(Identifier, Attributes)])
type T_Children_v47 = (T_Children_vIn47 ) -> (T_Children_vOut47 )
data T_Children_vIn47 = T_Children_vIn47 !(Map Identifier Attributes) !(Set Identifier) !(Map Identifier Attributes)
data T_Children_vOut47 = T_Children_vOut47 !(Seq Error) !([(Identifier,Type,ChildKind)]) !([(Identifier, Attributes)]) !([(Identifier, Attributes)]) !(T_Children_s53 )
type T_Children_v48 = (T_Children_vIn48 ) -> (T_Children_vOut48 )
data T_Children_vIn48 = T_Children_vIn48
data T_Children_vOut48 = T_Children_vOut48 !(Children)
{-# NOINLINE sem_Children_Cons #-}
sem_Children_Cons :: T_Child -> T_Children -> T_Children
sem_Children_Cons :: T_Child -> T_Children -> T_Children
sem_Children_Cons T_Child
arg_hd_ T_Children
arg_tl_ = Identity T_Children_s2 -> T_Children
T_Children (T_Children_s2 -> Identity T_Children_s2
forall (m :: * -> *) a. Monad m => a -> m a
return T_Children_s2
st2) where
{-# NOINLINE st2 #-}
!st2 :: T_Children_s2
st2 = let
k2 :: K_Children_s2 t -> t
k2 :: K_Children_s2 t -> t
k2 K_Children_s2 t
K_Children_v1 = t
T_Children_v1
v1
k2 K_Children_s2 t
K_Children_v14 = t
T_Children_v14
v14
k2 K_Children_s2 t
K_Children_v47 = t
T_Children_v47
v47
v1 :: T_Children_v1
v1 :: T_Children_v1
v1 = \ !(T_Children_vIn1 Identifier
_lhsIcon Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap Set Identifier
_lhsImerged Identifier
_lhsInt [Identifier]
_lhsIparams Map Identifier Attributes
_lhsIsynMap) -> (
let !_hdX0 :: T_Child_s0
_hdX0 = Identity T_Child_s0 -> T_Child_s0
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Child -> Identity T_Child_s0
attach_T_Child (T_Child
arg_hd_)) in
let !_tlX2 :: T_Children_s2
_tlX2 = Identity T_Children_s2 -> T_Children_s2
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Children -> Identity T_Children_s2
attach_T_Children (T_Children
arg_tl_)) in
let !_hdOinhMap :: Map Identifier Attributes
_hdOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule21 Map Identifier Attributes
_lhsIinhMap in
let !_tlOinhMap :: Map Identifier Attributes
_tlOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule28 Map Identifier Attributes
_lhsIinhMap in
let !_hdOmerged :: Set Identifier
_hdOmerged = Set Identifier -> Set Identifier
rule22 Set Identifier
_lhsImerged in
let !_hdOsynMap :: Map Identifier Attributes
_hdOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule25 Map Identifier Attributes
_lhsIsynMap in
let !_tlOmerged :: Set Identifier
_tlOmerged = Set Identifier -> Set Identifier
rule29 Set Identifier
_lhsImerged in
let !_tlOsynMap :: Map Identifier Attributes
_tlOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule32 Map Identifier Attributes
_lhsIsynMap in
let !(T_Child_vOut13 Seq Error
_hdIerrors (Identifier, Type, ChildKind)
_hdIfield Attributes
_hdIinherited Identifier
_hdIname Child
_hdIoutput Attributes
_hdIsynthesized) = T_Child_s0 -> K_Child_s0 T_Child_v13 -> T_Child_v13
T_Child_s0 -> forall t. K_Child_s0 t -> t
inv_Child_s0 T_Child_s0
_hdX0 K_Child_s0 T_Child_v13
K_Child_v13 (Map Identifier Attributes
-> Set Identifier -> Map Identifier Attributes -> T_Child_vIn13
T_Child_vIn13 Map Identifier Attributes
_hdOinhMap Set Identifier
_hdOmerged Map Identifier Attributes
_hdOsynMap) in
let !(T_Children_vOut14 Seq Error
_tlIerrors [(Identifier, Type, ChildKind)]
_tlIfields [(Identifier, Attributes)]
_tlIinputs Children
_tlIoutput [(Identifier, Attributes)]
_tlIoutputs) = T_Children_s2 -> K_Children_s2 T_Children_v14 -> T_Children_v14
T_Children_s2 -> forall t. K_Children_s2 t -> t
inv_Children_s2 T_Children_s2
_tlX2 K_Children_s2 T_Children_v14
K_Children_v14 (Map Identifier Attributes
-> Set Identifier -> Map Identifier Attributes -> T_Children_vIn14
T_Children_vIn14 Map Identifier Attributes
_tlOinhMap Set Identifier
_tlOmerged Map Identifier Attributes
_tlOsynMap) in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule16 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let _lhsOfields :: [(Identifier,Type,ChildKind)]
!_lhsOfields :: [(Identifier, Type, ChildKind)]
_lhsOfields = (Identifier, Type, ChildKind)
-> [(Identifier, Type, ChildKind)]
-> [(Identifier, Type, ChildKind)]
rule15 (Identifier, Type, ChildKind)
_hdIfield [(Identifier, Type, ChildKind)]
_tlIfields in
let _lhsOinputs :: [(Identifier, Attributes)]
!_lhsOinputs :: [(Identifier, Attributes)]
_lhsOinputs = Attributes
-> Identifier
-> [(Identifier, Attributes)]
-> [(Identifier, Attributes)]
rule13 Attributes
_hdIinherited Identifier
_hdIname [(Identifier, Attributes)]
_tlIinputs in
let !_output :: Children
_output = Child -> Children -> Children
rule17 Child
_hdIoutput Children
_tlIoutput in
let _lhsOoutput :: Children
!_lhsOoutput :: Children
_lhsOoutput = Children -> Children
forall a. a -> a
rule18 Children
_output in
let _lhsOoutputs :: [(Identifier, Attributes)]
!_lhsOoutputs :: [(Identifier, Attributes)]
_lhsOoutputs = Identifier
-> Attributes
-> [(Identifier, Attributes)]
-> [(Identifier, Attributes)]
rule14 Identifier
_hdIname Attributes
_hdIsynthesized [(Identifier, Attributes)]
_tlIoutputs in
let !__result_ :: T_Children_vOut1
__result_ = Seq Error
-> [(Identifier, Type, ChildKind)]
-> [(Identifier, Attributes)]
-> Children
-> [(Identifier, Attributes)]
-> T_Children_vOut1
T_Children_vOut1 Seq Error
_lhsOerrors [(Identifier, Type, ChildKind)]
_lhsOfields [(Identifier, Attributes)]
_lhsOinputs Children
_lhsOoutput [(Identifier, Attributes)]
_lhsOoutputs
in T_Children_vOut1
__result_ )
v14 :: T_Children_v14
v14 :: T_Children_v14
v14 = \ !(T_Children_vIn14 Map Identifier Attributes
_lhsIinhMap Set Identifier
_lhsImerged Map Identifier Attributes
_lhsIsynMap) -> (
let !_hdX0 :: T_Child_s0
_hdX0 = Identity T_Child_s0 -> T_Child_s0
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Child -> Identity T_Child_s0
attach_T_Child (T_Child
arg_hd_)) in
let !_tlX2 :: T_Children_s2
_tlX2 = Identity T_Children_s2 -> T_Children_s2
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Children -> Identity T_Children_s2
attach_T_Children (T_Children
arg_tl_)) in
let !_hdOinhMap :: Map Identifier Attributes
_hdOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule21 Map Identifier Attributes
_lhsIinhMap in
let !_tlOinhMap :: Map Identifier Attributes
_tlOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule28 Map Identifier Attributes
_lhsIinhMap in
let !_hdOmerged :: Set Identifier
_hdOmerged = Set Identifier -> Set Identifier
rule22 Set Identifier
_lhsImerged in
let !_hdOsynMap :: Map Identifier Attributes
_hdOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule25 Map Identifier Attributes
_lhsIsynMap in
let !_tlOmerged :: Set Identifier
_tlOmerged = Set Identifier -> Set Identifier
rule29 Set Identifier
_lhsImerged in
let !_tlOsynMap :: Map Identifier Attributes
_tlOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule32 Map Identifier Attributes
_lhsIsynMap in
let !(T_Child_vOut13 Seq Error
_hdIerrors (Identifier, Type, ChildKind)
_hdIfield Attributes
_hdIinherited Identifier
_hdIname Child
_hdIoutput Attributes
_hdIsynthesized) = T_Child_s0 -> K_Child_s0 T_Child_v13 -> T_Child_v13
T_Child_s0 -> forall t. K_Child_s0 t -> t
inv_Child_s0 T_Child_s0
_hdX0 K_Child_s0 T_Child_v13
K_Child_v13 (Map Identifier Attributes
-> Set Identifier -> Map Identifier Attributes -> T_Child_vIn13
T_Child_vIn13 Map Identifier Attributes
_hdOinhMap Set Identifier
_hdOmerged Map Identifier Attributes
_hdOsynMap) in
let !(T_Children_vOut14 Seq Error
_tlIerrors [(Identifier, Type, ChildKind)]
_tlIfields [(Identifier, Attributes)]
_tlIinputs Children
_tlIoutput [(Identifier, Attributes)]
_tlIoutputs) = T_Children_s2 -> K_Children_s2 T_Children_v14 -> T_Children_v14
T_Children_s2 -> forall t. K_Children_s2 t -> t
inv_Children_s2 T_Children_s2
_tlX2 K_Children_s2 T_Children_v14
K_Children_v14 (Map Identifier Attributes
-> Set Identifier -> Map Identifier Attributes -> T_Children_vIn14
T_Children_vIn14 Map Identifier Attributes
_tlOinhMap Set Identifier
_tlOmerged Map Identifier Attributes
_tlOsynMap) in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule16 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let _lhsOfields :: [(Identifier,Type,ChildKind)]
!_lhsOfields :: [(Identifier, Type, ChildKind)]
_lhsOfields = (Identifier, Type, ChildKind)
-> [(Identifier, Type, ChildKind)]
-> [(Identifier, Type, ChildKind)]
rule15 (Identifier, Type, ChildKind)
_hdIfield [(Identifier, Type, ChildKind)]
_tlIfields in
let _lhsOinputs :: [(Identifier, Attributes)]
!_lhsOinputs :: [(Identifier, Attributes)]
_lhsOinputs = Attributes
-> Identifier
-> [(Identifier, Attributes)]
-> [(Identifier, Attributes)]
rule13 Attributes
_hdIinherited Identifier
_hdIname [(Identifier, Attributes)]
_tlIinputs in
let !_output :: Children
_output = Child -> Children -> Children
rule17 Child
_hdIoutput Children
_tlIoutput in
let _lhsOoutput :: Children
!_lhsOoutput :: Children
_lhsOoutput = Children -> Children
forall a. a -> a
rule18 Children
_output in
let _lhsOoutputs :: [(Identifier, Attributes)]
!_lhsOoutputs :: [(Identifier, Attributes)]
_lhsOoutputs = Identifier
-> Attributes
-> [(Identifier, Attributes)]
-> [(Identifier, Attributes)]
rule14 Identifier
_hdIname Attributes
_hdIsynthesized [(Identifier, Attributes)]
_tlIoutputs in
let !__result_ :: T_Children_vOut14
__result_ = Seq Error
-> [(Identifier, Type, ChildKind)]
-> [(Identifier, Attributes)]
-> Children
-> [(Identifier, Attributes)]
-> T_Children_vOut14
T_Children_vOut14 Seq Error
_lhsOerrors [(Identifier, Type, ChildKind)]
_lhsOfields [(Identifier, Attributes)]
_lhsOinputs Children
_lhsOoutput [(Identifier, Attributes)]
_lhsOoutputs
in T_Children_vOut14
__result_ )
v47 :: T_Children_v47
v47 :: T_Children_v47
v47 = \ !(T_Children_vIn47 Map Identifier Attributes
_lhsIinhMap Set Identifier
_lhsImerged Map Identifier Attributes
_lhsIsynMap) -> (
let !_hdX0 :: T_Child_s0
_hdX0 = Identity T_Child_s0 -> T_Child_s0
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Child -> Identity T_Child_s0
attach_T_Child (T_Child
arg_hd_)) in
let !_tlX2 :: T_Children_s2
_tlX2 = Identity T_Children_s2 -> T_Children_s2
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Children -> Identity T_Children_s2
attach_T_Children (T_Children
arg_tl_)) in
let !_hdOinhMap :: Map Identifier Attributes
_hdOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule21 Map Identifier Attributes
_lhsIinhMap in
let !_tlOinhMap :: Map Identifier Attributes
_tlOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule28 Map Identifier Attributes
_lhsIinhMap in
let !_hdOmerged :: Set Identifier
_hdOmerged = Set Identifier -> Set Identifier
rule22 Set Identifier
_lhsImerged in
let !_hdOsynMap :: Map Identifier Attributes
_hdOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule25 Map Identifier Attributes
_lhsIsynMap in
let !_tlOmerged :: Set Identifier
_tlOmerged = Set Identifier -> Set Identifier
rule29 Set Identifier
_lhsImerged in
let !_tlOsynMap :: Map Identifier Attributes
_tlOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule32 Map Identifier Attributes
_lhsIsynMap in
let !(T_Child_vOut52 Seq Error
_hdIerrors (Identifier, Type, ChildKind)
_hdIfield Attributes
_hdIinherited Identifier
_hdIname Attributes
_hdIsynthesized T_Child_s56
_hdX56) = T_Child_s0 -> K_Child_s0 T_Child_v52 -> T_Child_v52
T_Child_s0 -> forall t. K_Child_s0 t -> t
inv_Child_s0 T_Child_s0
_hdX0 K_Child_s0 T_Child_v52
K_Child_v52 (Map Identifier Attributes
-> Set Identifier -> Map Identifier Attributes -> T_Child_vIn52
T_Child_vIn52 Map Identifier Attributes
_hdOinhMap Set Identifier
_hdOmerged Map Identifier Attributes
_hdOsynMap) in
let !(T_Children_vOut47 Seq Error
_tlIerrors [(Identifier, Type, ChildKind)]
_tlIfields [(Identifier, Attributes)]
_tlIinputs [(Identifier, Attributes)]
_tlIoutputs T_Children_s53
_tlX53) = T_Children_s2 -> K_Children_s2 T_Children_v47 -> T_Children_v47
T_Children_s2 -> forall t. K_Children_s2 t -> t
inv_Children_s2 T_Children_s2
_tlX2 K_Children_s2 T_Children_v47
K_Children_v47 (Map Identifier Attributes
-> Set Identifier -> Map Identifier Attributes -> T_Children_vIn47
T_Children_vIn47 Map Identifier Attributes
_tlOinhMap Set Identifier
_tlOmerged Map Identifier Attributes
_tlOsynMap) in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule16 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let _lhsOfields :: [(Identifier,Type,ChildKind)]
!_lhsOfields :: [(Identifier, Type, ChildKind)]
_lhsOfields = (Identifier, Type, ChildKind)
-> [(Identifier, Type, ChildKind)]
-> [(Identifier, Type, ChildKind)]
rule15 (Identifier, Type, ChildKind)
_hdIfield [(Identifier, Type, ChildKind)]
_tlIfields in
let _lhsOinputs :: [(Identifier, Attributes)]
!_lhsOinputs :: [(Identifier, Attributes)]
_lhsOinputs = Attributes
-> Identifier
-> [(Identifier, Attributes)]
-> [(Identifier, Attributes)]
rule13 Attributes
_hdIinherited Identifier
_hdIname [(Identifier, Attributes)]
_tlIinputs in
let _lhsOoutputs :: [(Identifier, Attributes)]
!_lhsOoutputs :: [(Identifier, Attributes)]
_lhsOoutputs = Identifier
-> Attributes
-> [(Identifier, Attributes)]
-> [(Identifier, Attributes)]
rule14 Identifier
_hdIname Attributes
_hdIsynthesized [(Identifier, Attributes)]
_tlIoutputs in
let !__st_ :: T_Children_s53
__st_ = T_Child_s56 -> T_Children_s53 -> T_Children_s53
st53 T_Child_s56
_hdX56 T_Children_s53
_tlX53
!__result_ :: T_Children_vOut47
__result_ = Seq Error
-> [(Identifier, Type, ChildKind)]
-> [(Identifier, Attributes)]
-> [(Identifier, Attributes)]
-> T_Children_s53
-> T_Children_vOut47
T_Children_vOut47 Seq Error
_lhsOerrors [(Identifier, Type, ChildKind)]
_lhsOfields [(Identifier, Attributes)]
_lhsOinputs [(Identifier, Attributes)]
_lhsOoutputs T_Children_s53
__st_
in T_Children_vOut47
__result_ )
in (forall t. K_Children_s2 t -> t) -> T_Children_s2
C_Children_s2 forall t. K_Children_s2 t -> t
k2
{-# NOINLINE st53 #-}
st53 :: T_Child_s56 -> T_Children_s53 -> T_Children_s53
st53 = \ !T_Child_s56
_hdX56 !T_Children_s53
_tlX53 -> let
v48 :: T_Children_v48
v48 :: T_Children_v48
v48 = \ !(T_Children_vIn48
T_Children_vIn48 ) -> (
let !(T_Child_vOut53 Child
_hdIoutput) = T_Child_s56 -> T_Child_v53
inv_Child_s56 T_Child_s56
_hdX56 (T_Child_vIn53
T_Child_vIn53 ) in
let !(T_Children_vOut48 Children
_tlIoutput) = T_Children_s53 -> T_Children_v48
inv_Children_s53 T_Children_s53
_tlX53 (T_Children_vIn48
T_Children_vIn48 ) in
let !_output :: Children
_output = Child -> Children -> Children
rule17 Child
_hdIoutput Children
_tlIoutput in
let _lhsOoutput :: Children
!_lhsOoutput :: Children
_lhsOoutput = Children -> Children
forall a. a -> a
rule18 Children
_output in
let !__result_ :: T_Children_vOut48
__result_ = Children -> T_Children_vOut48
T_Children_vOut48 Children
_lhsOoutput
in T_Children_vOut48
__result_ )
in T_Children_v48 -> T_Children_s53
C_Children_s53 T_Children_v48
v48
{-# NOINLINE[1] rule13 #-}
{-# LINE 244 "src-ag/DefaultRules.ag" #-}
rule13 = \ ((!_hdIinherited) :: Attributes) ((!_hdIname) :: Identifier) ((!_tlIinputs) :: [(Identifier, Attributes)]) ->
{-# LINE 244 "src-ag/DefaultRules.ag" #-}
(_hdIname, _hdIinherited) : _tlIinputs
{-# LINE 819 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule14 #-}
{-# LINE 245 "src-ag/DefaultRules.ag" #-}
rule14 = \ ((!_hdIname) :: Identifier) ((!_hdIsynthesized) :: Attributes) ((!_tlIoutputs) :: [(Identifier, Attributes)]) ->
{-# LINE 245 "src-ag/DefaultRules.ag" #-}
(_hdIname, _hdIsynthesized) : _tlIoutputs
{-# LINE 825 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule15 #-}
{-# LINE 570 "src-ag/DefaultRules.ag" #-}
rule15 = \ ((!_hdIfield) :: (Identifier,Type,ChildKind) ) ((!_tlIfields) :: [(Identifier,Type,ChildKind)]) ->
{-# LINE 570 "src-ag/DefaultRules.ag" #-}
_hdIfield : _tlIfields
{-# LINE 831 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule16 #-}
rule16 = \ ((!_hdIerrors) :: Seq Error) ((!_tlIerrors) :: Seq Error) ->
_hdIerrors Seq.>< _tlIerrors
{-# NOINLINE[1] rule17 #-}
rule17 = \ ((!_hdIoutput) :: Child) ((!_tlIoutput) :: Children) ->
(:) _hdIoutput _tlIoutput
{-# NOINLINE[1] rule18 #-}
rule18 = \ !_output ->
_output
{-# NOINLINE[1] rule21 #-}
rule21 = \ ((!_lhsIinhMap) :: Map Identifier Attributes) ->
_lhsIinhMap
{-# NOINLINE[1] rule22 #-}
rule22 = \ ((!_lhsImerged) :: Set Identifier) ->
_lhsImerged
{-# NOINLINE[1] rule25 #-}
rule25 = \ ((!_lhsIsynMap) :: Map Identifier Attributes) ->
_lhsIsynMap
{-# NOINLINE[1] rule28 #-}
rule28 = \ ((!_lhsIinhMap) :: Map Identifier Attributes) ->
_lhsIinhMap
{-# NOINLINE[1] rule29 #-}
rule29 = \ ((!_lhsImerged) :: Set Identifier) ->
_lhsImerged
{-# NOINLINE[1] rule32 #-}
rule32 = \ ((!_lhsIsynMap) :: Map Identifier Attributes) ->
_lhsIsynMap
{-# NOINLINE sem_Children_Nil #-}
sem_Children_Nil :: T_Children
sem_Children_Nil :: T_Children
sem_Children_Nil = Identity T_Children_s2 -> T_Children
T_Children (T_Children_s2 -> Identity T_Children_s2
forall (m :: * -> *) a. Monad m => a -> m a
return T_Children_s2
st2) where
{-# NOINLINE st2 #-}
!st2 :: T_Children_s2
st2 = let
k2 :: K_Children_s2 t -> t
k2 :: K_Children_s2 t -> t
k2 K_Children_s2 t
K_Children_v1 = t
T_Children_v1
v1
k2 K_Children_s2 t
K_Children_v14 = t
T_Children_v14
v14
k2 K_Children_s2 t
K_Children_v47 = t
T_Children_v47
v47
v1 :: T_Children_v1
v1 :: T_Children_v1
v1 = \ !(T_Children_vIn1 Identifier
_lhsIcon Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap Set Identifier
_lhsImerged Identifier
_lhsInt [Identifier]
_lhsIparams Map Identifier Attributes
_lhsIsynMap) -> (
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule36 () in
let _lhsOfields :: [(Identifier,Type,ChildKind)]
!_lhsOfields :: [(Identifier, Type, ChildKind)]
_lhsOfields = () -> [(Identifier, Type, ChildKind)]
forall a. () -> [a]
rule35 () in
let _lhsOinputs :: [(Identifier, Attributes)]
!_lhsOinputs :: [(Identifier, Attributes)]
_lhsOinputs = () -> [(Identifier, Attributes)]
forall a. () -> [a]
rule33 () in
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule37 () in
let _lhsOoutputs :: [(Identifier, Attributes)]
!_lhsOoutputs :: [(Identifier, Attributes)]
_lhsOoutputs = () -> [(Identifier, Attributes)]
forall a. () -> [a]
rule34 () in
let _lhsOoutput :: Children
!_lhsOoutput :: Children
_lhsOoutput = Children -> Children
forall a. a -> a
rule38 Children
forall a. [a]
_output in
let !__result_ :: T_Children_vOut1
__result_ = Seq Error
-> [(Identifier, Type, ChildKind)]
-> [(Identifier, Attributes)]
-> Children
-> [(Identifier, Attributes)]
-> T_Children_vOut1
T_Children_vOut1 Seq Error
_lhsOerrors [(Identifier, Type, ChildKind)]
_lhsOfields [(Identifier, Attributes)]
_lhsOinputs Children
_lhsOoutput [(Identifier, Attributes)]
_lhsOoutputs
in T_Children_vOut1
__result_ )
v14 :: T_Children_v14
v14 :: T_Children_v14
v14 = \ !(T_Children_vIn14 Map Identifier Attributes
_lhsIinhMap Set Identifier
_lhsImerged Map Identifier Attributes
_lhsIsynMap) -> (
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule36 () in
let _lhsOfields :: [(Identifier,Type,ChildKind)]
!_lhsOfields :: [(Identifier, Type, ChildKind)]
_lhsOfields = () -> [(Identifier, Type, ChildKind)]
forall a. () -> [a]
rule35 () in
let _lhsOinputs :: [(Identifier, Attributes)]
!_lhsOinputs :: [(Identifier, Attributes)]
_lhsOinputs = () -> [(Identifier, Attributes)]
forall a. () -> [a]
rule33 () in
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule37 () in
let _lhsOoutputs :: [(Identifier, Attributes)]
!_lhsOoutputs :: [(Identifier, Attributes)]
_lhsOoutputs = () -> [(Identifier, Attributes)]
forall a. () -> [a]
rule34 () in
let _lhsOoutput :: Children
!_lhsOoutput :: Children
_lhsOoutput = Children -> Children
forall a. a -> a
rule38 Children
forall a. [a]
_output in
let !__result_ :: T_Children_vOut14
__result_ = Seq Error
-> [(Identifier, Type, ChildKind)]
-> [(Identifier, Attributes)]
-> Children
-> [(Identifier, Attributes)]
-> T_Children_vOut14
T_Children_vOut14 Seq Error
_lhsOerrors [(Identifier, Type, ChildKind)]
_lhsOfields [(Identifier, Attributes)]
_lhsOinputs Children
_lhsOoutput [(Identifier, Attributes)]
_lhsOoutputs
in T_Children_vOut14
__result_ )
v47 :: T_Children_v47
v47 :: T_Children_v47
v47 = \ !(T_Children_vIn47 Map Identifier Attributes
_lhsIinhMap Set Identifier
_lhsImerged Map Identifier Attributes
_lhsIsynMap) -> (
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule36 () in
let _lhsOfields :: [(Identifier,Type,ChildKind)]
!_lhsOfields :: [(Identifier, Type, ChildKind)]
_lhsOfields = () -> [(Identifier, Type, ChildKind)]
forall a. () -> [a]
rule35 () in
let _lhsOinputs :: [(Identifier, Attributes)]
!_lhsOinputs :: [(Identifier, Attributes)]
_lhsOinputs = () -> [(Identifier, Attributes)]
forall a. () -> [a]
rule33 () in
let _lhsOoutputs :: [(Identifier, Attributes)]
!_lhsOoutputs :: [(Identifier, Attributes)]
_lhsOoutputs = () -> [(Identifier, Attributes)]
forall a. () -> [a]
rule34 () in
let !__st_ :: T_Children_s53
__st_ = () -> T_Children_s53
st53 ()
!__result_ :: T_Children_vOut47
__result_ = Seq Error
-> [(Identifier, Type, ChildKind)]
-> [(Identifier, Attributes)]
-> [(Identifier, Attributes)]
-> T_Children_s53
-> T_Children_vOut47
T_Children_vOut47 Seq Error
_lhsOerrors [(Identifier, Type, ChildKind)]
_lhsOfields [(Identifier, Attributes)]
_lhsOinputs [(Identifier, Attributes)]
_lhsOoutputs T_Children_s53
__st_
in T_Children_vOut47
__result_ )
in (forall t. K_Children_s2 t -> t) -> T_Children_s2
C_Children_s2 forall t. K_Children_s2 t -> t
k2
{-# NOINLINE st53 #-}
st53 :: () -> T_Children_s53
st53 = \ (()
_ :: ()) -> let
v48 :: T_Children_v48
v48 :: T_Children_v48
v48 = \ !(T_Children_vIn48
T_Children_vIn48 ) -> (
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule37 () in
let _lhsOoutput :: Children
!_lhsOoutput :: Children
_lhsOoutput = Children -> Children
forall a. a -> a
rule38 Children
forall a. [a]
_output in
let !__result_ :: T_Children_vOut48
__result_ = Children -> T_Children_vOut48
T_Children_vOut48 Children
_lhsOoutput
in T_Children_vOut48
__result_ )
in T_Children_v48 -> T_Children_s53
C_Children_s53 T_Children_v48
v48
{-# NOINLINE[1] rule33 #-}
{-# LINE 246 "src-ag/DefaultRules.ag" #-}
rule33 = \ (_ :: ()) ->
{-# LINE 246 "src-ag/DefaultRules.ag" #-}
[]
{-# LINE 927 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule34 #-}
{-# LINE 247 "src-ag/DefaultRules.ag" #-}
rule34 = \ (_ :: ()) ->
{-# LINE 247 "src-ag/DefaultRules.ag" #-}
[]
{-# LINE 933 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule35 #-}
{-# LINE 571 "src-ag/DefaultRules.ag" #-}
rule35 = \ (_ :: ()) ->
{-# LINE 571 "src-ag/DefaultRules.ag" #-}
[]
{-# LINE 939 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule36 #-}
rule36 = \ (_ :: ()) ->
Seq.empty
{-# NOINLINE[1] rule37 #-}
rule37 = \ (_ :: ()) ->
[]
{-# NOINLINE[1] rule38 #-}
rule38 = \ !_output ->
_output
data Inh_Grammar = Inh_Grammar { Inh_Grammar -> Map Identifier ConstructorType
constructorTypeMap_Inh_Grammar :: !(Map NontermIdent ConstructorType), Inh_Grammar -> Options
options_Inh_Grammar :: !(Options) }
data Syn_Grammar = Syn_Grammar { Syn_Grammar -> Seq Error
errors_Syn_Grammar :: !(Seq Error), Syn_Grammar -> Grammar
output_Syn_Grammar :: !(Grammar) }
{-# INLINABLE wrap_Grammar #-}
wrap_Grammar :: T_Grammar -> Inh_Grammar -> (Syn_Grammar )
wrap_Grammar :: T_Grammar -> Inh_Grammar -> Syn_Grammar
wrap_Grammar !(T_Grammar Identity T_Grammar_s4
act) !(Inh_Grammar Map Identifier ConstructorType
_lhsIconstructorTypeMap Options
_lhsIoptions) =
Identity Syn_Grammar -> Syn_Grammar
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_Grammar_s4
sem <- Identity T_Grammar_s4
act
let arg2 :: T_Grammar_vIn2
arg2 = Map Identifier ConstructorType -> Options -> T_Grammar_vIn2
T_Grammar_vIn2 Map Identifier ConstructorType
_lhsIconstructorTypeMap Options
_lhsIoptions
!(T_Grammar_vOut2 Seq Error
_lhsOerrors Grammar
_lhsOoutput) <- T_Grammar_vOut2 -> Identity T_Grammar_vOut2
forall (m :: * -> *) a. Monad m => a -> m a
return (T_Grammar_s4 -> T_Grammar_v2
inv_Grammar_s4 T_Grammar_s4
sem T_Grammar_vIn2
arg2)
Syn_Grammar -> Identity Syn_Grammar
forall (m :: * -> *) a. Monad m => a -> m a
return (Seq Error -> Grammar -> Syn_Grammar
Syn_Grammar Seq Error
_lhsOerrors Grammar
_lhsOoutput)
)
{-# INLINE sem_Grammar #-}
sem_Grammar :: Grammar -> T_Grammar
sem_Grammar :: Grammar -> T_Grammar
sem_Grammar ( Grammar ![(Identifier, ComplexType)]
typeSyns_ !UseMap
useMap_ !Map Identifier (Set Identifier)
derivings_ !Set Identifier
wrappers_ Nonterminals
nonts_ !PragmaMap
pragmas_ !AttrOrderMap
manualAttrOrderMap_ !ParamMap
paramMap_ !ContextMap
contextMap_ !QuantMap
quantMap_ !UniqueMap
uniqueMap_ !Map Identifier (Map Identifier (Map Identifier [Expression]))
augmentsMap_ !Map Identifier (Map Identifier (Map Identifier [Expression]))
aroundsMap_ !Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
mergeMap_ ) = [(Identifier, ComplexType)]
-> UseMap
-> Map Identifier (Set Identifier)
-> Set Identifier
-> T_Nonterminals
-> PragmaMap
-> AttrOrderMap
-> ParamMap
-> ContextMap
-> QuantMap
-> UniqueMap
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> T_Grammar
sem_Grammar_Grammar [(Identifier, ComplexType)]
typeSyns_ UseMap
useMap_ Map Identifier (Set Identifier)
derivings_ Set Identifier
wrappers_ ( Nonterminals -> T_Nonterminals
sem_Nonterminals Nonterminals
nonts_ ) PragmaMap
pragmas_ AttrOrderMap
manualAttrOrderMap_ ParamMap
paramMap_ ContextMap
contextMap_ QuantMap
quantMap_ UniqueMap
uniqueMap_ Map Identifier (Map Identifier (Map Identifier [Expression]))
augmentsMap_ Map Identifier (Map Identifier (Map Identifier [Expression]))
aroundsMap_ Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
mergeMap_
newtype T_Grammar = T_Grammar {
T_Grammar -> Identity T_Grammar_s4
attach_T_Grammar :: Identity (T_Grammar_s4 )
}
newtype T_Grammar_s4 = C_Grammar_s4 {
T_Grammar_s4 -> T_Grammar_v2
inv_Grammar_s4 :: (T_Grammar_v2 )
}
data T_Grammar_s5 = C_Grammar_s5
type T_Grammar_v2 = (T_Grammar_vIn2 ) -> (T_Grammar_vOut2 )
data T_Grammar_vIn2 = T_Grammar_vIn2 !(Map NontermIdent ConstructorType) !(Options)
data T_Grammar_vOut2 = T_Grammar_vOut2 !(Seq Error) !(Grammar)
{-# NOINLINE sem_Grammar_Grammar #-}
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 :: [(Identifier, ComplexType)]
-> UseMap
-> Map Identifier (Set Identifier)
-> Set Identifier
-> T_Nonterminals
-> PragmaMap
-> AttrOrderMap
-> ParamMap
-> ContextMap
-> QuantMap
-> UniqueMap
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> T_Grammar
sem_Grammar_Grammar ![(Identifier, ComplexType)]
arg_typeSyns_ !UseMap
arg_useMap_ !Map Identifier (Set Identifier)
arg_derivings_ !Set Identifier
arg_wrappers_ T_Nonterminals
arg_nonts_ !PragmaMap
arg_pragmas_ !AttrOrderMap
arg_manualAttrOrderMap_ !ParamMap
arg_paramMap_ !ContextMap
arg_contextMap_ !QuantMap
arg_quantMap_ !UniqueMap
arg_uniqueMap_ !Map Identifier (Map Identifier (Map Identifier [Expression]))
arg_augmentsMap_ !Map Identifier (Map Identifier (Map Identifier [Expression]))
arg_aroundsMap_ !Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
arg_mergeMap_ = Identity T_Grammar_s4 -> T_Grammar
T_Grammar (T_Grammar_s4 -> Identity T_Grammar_s4
forall (m :: * -> *) a. Monad m => a -> m a
return T_Grammar_s4
st4) where
{-# NOINLINE st4 #-}
!st4 :: T_Grammar_s4
st4 = let
v2 :: T_Grammar_v2
v2 :: T_Grammar_v2
v2 = \ !(T_Grammar_vIn2 Map Identifier ConstructorType
_lhsIconstructorTypeMap Options
_lhsIoptions) -> (
let !_nontsX8 :: T_Nonterminals_s8
_nontsX8 = Identity T_Nonterminals_s8 -> T_Nonterminals_s8
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Nonterminals -> Identity T_Nonterminals_s8
attach_T_Nonterminals (T_Nonterminals
arg_nonts_)) in
let !_nontsOuniq :: Int
_nontsOuniq = () -> Int
rule47 () in
let !_nontsOconstructorTypeMap :: Map Identifier ConstructorType
_nontsOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule55 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_nontsOcr :: Bool
_nontsOcr = Options -> Bool
rule42 Options
_lhsIoptions in
let !_nontsOmanualAttrOrderMap :: AttrOrderMap
_nontsOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
forall a. a -> a
rule48 AttrOrderMap
arg_manualAttrOrderMap_ in
let !_nontsOmergesIn :: Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_nontsOmergesIn = Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
forall a. a -> a
rule51 Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
arg_mergeMap_ in
let !_nontsOo_rename :: Bool
_nontsOo_rename = Options -> Bool
rule41 Options
_lhsIoptions in
let !_nontsOoptions :: Options
_nontsOoptions = Options -> Options
rule56 Options
_lhsIoptions in
let !_nontsOtypeSyns :: [(Identifier, ComplexType)]
_nontsOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
forall a. a -> a
rule46 [(Identifier, ComplexType)]
arg_typeSyns_ in
let !_nontsOuseMap :: UseMap
_nontsOuseMap = UseMap -> UseMap
forall a. a -> a
rule45 UseMap
arg_useMap_ in
let !_nontsOwrappers :: Set Identifier
_nontsOwrappers = Set Identifier -> Set Identifier
forall a. a -> a
rule43 Set Identifier
arg_wrappers_ in
let !_nontsOaroundsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_nontsOaroundsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
forall a. a -> a
rule50 Map Identifier (Map Identifier (Map Identifier [Expression]))
arg_aroundsMap_ in
let !_nontsOaugmentsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_nontsOaugmentsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
forall a. a -> a
rule49 Map Identifier (Map Identifier (Map Identifier [Expression]))
arg_augmentsMap_ in
let !(T_Nonterminals_vOut15 Map Identifier Attributes
_nontsIinhMap' Map Identifier Attributes
_nontsIsynMap' T_Nonterminals_s28
_nontsX28) = T_Nonterminals_s8
-> K_Nonterminals_s8 T_Nonterminals_v15 -> T_Nonterminals_v15
T_Nonterminals_s8 -> forall t. K_Nonterminals_s8 t -> t
inv_Nonterminals_s8 T_Nonterminals_s8
_nontsX8 K_Nonterminals_s8 T_Nonterminals_v15
K_Nonterminals_v15 (T_Nonterminals_vIn15
T_Nonterminals_vIn15 ) in
let !_nontsOinhMap :: Map Identifier Attributes
_nontsOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule39 Map Identifier Attributes
_nontsIinhMap' in
let !_nontsOsynMap :: Map Identifier Attributes
_nontsOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule40 Map Identifier Attributes
_nontsIsynMap' in
let !(T_Nonterminals_vOut16 Seq Error
_nontsIerrors Nonterminals
_nontsIoutput Int
_nontsIuniq) = T_Nonterminals_s28
-> K_Nonterminals_s28 T_Nonterminals_v16 -> T_Nonterminals_v16
T_Nonterminals_s28 -> forall t. K_Nonterminals_s28 t -> t
inv_Nonterminals_s28 T_Nonterminals_s28
_nontsX28 K_Nonterminals_s28 T_Nonterminals_v16
K_Nonterminals_v16 (Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier ConstructorType
-> Bool
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Bool
-> Options
-> Map Identifier Attributes
-> [(Identifier, ComplexType)]
-> Int
-> UseMap
-> Set Identifier
-> T_Nonterminals_vIn16
T_Nonterminals_vIn16 Map Identifier (Map Identifier (Map Identifier [Expression]))
_nontsOaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_nontsOaugmentsIn Map Identifier ConstructorType
_nontsOconstructorTypeMap Bool
_nontsOcr Map Identifier Attributes
_nontsOinhMap AttrOrderMap
_nontsOmanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_nontsOmergesIn Bool
_nontsOo_rename Options
_nontsOoptions Map Identifier Attributes
_nontsOsynMap [(Identifier, ComplexType)]
_nontsOtypeSyns Int
_nontsOuniq UseMap
_nontsOuseMap Set Identifier
_nontsOwrappers) in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule52 Seq Error
_nontsIerrors in
let !_output :: Grammar
_output = Nonterminals
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> ContextMap
-> Map Identifier (Set Identifier)
-> AttrOrderMap
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> ParamMap
-> PragmaMap
-> QuantMap
-> [(Identifier, ComplexType)]
-> UniqueMap
-> UseMap
-> Set Identifier
-> Grammar
rule53 Nonterminals
_nontsIoutput Map Identifier (Map Identifier (Map Identifier [Expression]))
arg_aroundsMap_ Map Identifier (Map Identifier (Map Identifier [Expression]))
arg_augmentsMap_ ContextMap
arg_contextMap_ Map Identifier (Set Identifier)
arg_derivings_ AttrOrderMap
arg_manualAttrOrderMap_ Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
arg_mergeMap_ ParamMap
arg_paramMap_ PragmaMap
arg_pragmas_ QuantMap
arg_quantMap_ [(Identifier, ComplexType)]
arg_typeSyns_ UniqueMap
arg_uniqueMap_ UseMap
arg_useMap_ Set Identifier
arg_wrappers_ in
let _lhsOoutput :: Grammar
!_lhsOoutput :: Grammar
_lhsOoutput = Grammar -> Grammar
forall a. a -> a
rule54 Grammar
_output in
let !__result_ :: T_Grammar_vOut2
__result_ = Seq Error -> Grammar -> T_Grammar_vOut2
T_Grammar_vOut2 Seq Error
_lhsOerrors Grammar
_lhsOoutput
in T_Grammar_vOut2
__result_ )
in T_Grammar_v2 -> T_Grammar_s4
C_Grammar_s4 T_Grammar_v2
v2
{-# INLINE rule39 #-}
{-# LINE 15 "src-ag/DistChildAttr.ag" #-}
rule39 = \ ((!_nontsIinhMap') :: Map Identifier Attributes) ->
{-# LINE 15 "src-ag/DistChildAttr.ag" #-}
_nontsIinhMap'
{-# LINE 1017 "src-generated/DefaultRules.hs" #-}
{-# INLINE rule40 #-}
{-# LINE 16 "src-ag/DistChildAttr.ag" #-}
rule40 = \ ((!_nontsIsynMap') :: Map Identifier Attributes) ->
{-# LINE 16 "src-ag/DistChildAttr.ag" #-}
_nontsIsynMap'
{-# LINE 1023 "src-generated/DefaultRules.hs" #-}
{-# INLINE rule41 #-}
{-# LINE 60 "src-ag/DefaultRules.ag" #-}
rule41 = \ ((!_lhsIoptions) :: Options) ->
{-# LINE 60 "src-ag/DefaultRules.ag" #-}
rename _lhsIoptions
{-# LINE 1029 "src-generated/DefaultRules.hs" #-}
{-# INLINE rule42 #-}
{-# LINE 61 "src-ag/DefaultRules.ag" #-}
rule42 = \ ((!_lhsIoptions) :: Options) ->
{-# LINE 61 "src-ag/DefaultRules.ag" #-}
modcopy _lhsIoptions
{-# LINE 1035 "src-generated/DefaultRules.hs" #-}
{-# INLINE rule43 #-}
{-# LINE 69 "src-ag/DefaultRules.ag" #-}
rule43 = \ !wrappers_ ->
{-# LINE 69 "src-ag/DefaultRules.ag" #-}
wrappers_
{-# LINE 1041 "src-generated/DefaultRules.hs" #-}
{-# INLINE rule45 #-}
{-# LINE 231 "src-ag/DefaultRules.ag" #-}
rule45 = \ !useMap_ ->
{-# LINE 231 "src-ag/DefaultRules.ag" #-}
useMap_
{-# LINE 1047 "src-generated/DefaultRules.hs" #-}
{-# INLINE rule46 #-}
{-# LINE 233 "src-ag/DefaultRules.ag" #-}
rule46 = \ !typeSyns_ ->
{-# LINE 233 "src-ag/DefaultRules.ag" #-}
typeSyns_
{-# LINE 1053 "src-generated/DefaultRules.hs" #-}
{-# INLINE rule47 #-}
{-# LINE 623 "src-ag/DefaultRules.ag" #-}
rule47 = \ (_ :: ()) ->
{-# LINE 623 "src-ag/DefaultRules.ag" #-}
1
{-# LINE 1059 "src-generated/DefaultRules.hs" #-}
{-# INLINE rule48 #-}
{-# LINE 737 "src-ag/DefaultRules.ag" #-}
rule48 = \ !manualAttrOrderMap_ ->
{-# LINE 737 "src-ag/DefaultRules.ag" #-}
manualAttrOrderMap_
{-# LINE 1065 "src-generated/DefaultRules.hs" #-}
{-# INLINE rule49 #-}
{-# LINE 803 "src-ag/DefaultRules.ag" #-}
rule49 = \ !augmentsMap_ ->
{-# LINE 803 "src-ag/DefaultRules.ag" #-}
augmentsMap_
{-# LINE 1071 "src-generated/DefaultRules.hs" #-}
{-# INLINE rule50 #-}
{-# LINE 810 "src-ag/DefaultRules.ag" #-}
rule50 = \ !aroundsMap_ ->
{-# LINE 810 "src-ag/DefaultRules.ag" #-}
aroundsMap_
{-# LINE 1077 "src-generated/DefaultRules.hs" #-}
{-# INLINE rule51 #-}
{-# LINE 818 "src-ag/DefaultRules.ag" #-}
rule51 = \ !mergeMap_ ->
{-# LINE 818 "src-ag/DefaultRules.ag" #-}
mergeMap_
{-# LINE 1083 "src-generated/DefaultRules.hs" #-}
{-# INLINE rule52 #-}
rule52 = \ ((!_nontsIerrors) :: Seq Error) ->
_nontsIerrors
{-# INLINE rule53 #-}
rule53 = \ ((!_nontsIoutput) :: Nonterminals) !aroundsMap_ !augmentsMap_ !contextMap_ !derivings_ !manualAttrOrderMap_ !mergeMap_ !paramMap_ !pragmas_ !quantMap_ !typeSyns_ !uniqueMap_ !useMap_ !wrappers_ ->
Grammar typeSyns_ useMap_ derivings_ wrappers_ _nontsIoutput pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ quantMap_ uniqueMap_ augmentsMap_ aroundsMap_ mergeMap_
{-# INLINE rule54 #-}
rule54 = \ !_output ->
_output
{-# INLINE rule55 #-}
rule55 = \ ((!_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->
_lhsIconstructorTypeMap
{-# INLINE rule56 #-}
rule56 = \ ((!_lhsIoptions) :: Options) ->
_lhsIoptions
data Inh_Nonterminal = Inh_Nonterminal { Inh_Nonterminal
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
aroundsIn_Inh_Nonterminal :: !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))), Inh_Nonterminal
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
augmentsIn_Inh_Nonterminal :: !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))), Inh_Nonterminal -> Map Identifier ConstructorType
constructorTypeMap_Inh_Nonterminal :: !(Map NontermIdent ConstructorType), Inh_Nonterminal -> Bool
cr_Inh_Nonterminal :: !(Bool), Inh_Nonterminal -> Map Identifier Attributes
inhMap_Inh_Nonterminal :: !(Map Identifier Attributes), Inh_Nonterminal -> AttrOrderMap
manualAttrOrderMap_Inh_Nonterminal :: !(AttrOrderMap), Inh_Nonterminal
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
mergesIn_Inh_Nonterminal :: !(Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))), Inh_Nonterminal -> Set Identifier
nonterminals_Inh_Nonterminal :: !(Set NontermIdent), Inh_Nonterminal -> Bool
o_rename_Inh_Nonterminal :: !(Bool), Inh_Nonterminal -> Options
options_Inh_Nonterminal :: !(Options), Inh_Nonterminal -> Map Identifier Attributes
synMap_Inh_Nonterminal :: !(Map Identifier Attributes), Inh_Nonterminal -> [(Identifier, ComplexType)]
typeSyns_Inh_Nonterminal :: !(TypeSyns), Inh_Nonterminal -> Int
uniq_Inh_Nonterminal :: !(Int), Inh_Nonterminal -> UseMap
useMap_Inh_Nonterminal :: !(UseMap), Inh_Nonterminal -> Set Identifier
wrappers_Inh_Nonterminal :: !(Set NontermIdent) }
data Syn_Nonterminal = Syn_Nonterminal { Syn_Nonterminal -> Set Identifier
collect_nts_Syn_Nonterminal :: !(Set NontermIdent), Syn_Nonterminal -> Seq Error
errors_Syn_Nonterminal :: !(Seq Error), Syn_Nonterminal -> Map Identifier Attributes
inhMap'_Syn_Nonterminal :: !(Map Identifier Attributes), Syn_Nonterminal -> Nonterminal
output_Syn_Nonterminal :: !(Nonterminal), Syn_Nonterminal -> Map Identifier Attributes
synMap'_Syn_Nonterminal :: !(Map Identifier Attributes), Syn_Nonterminal -> Int
uniq_Syn_Nonterminal :: !(Int) }
{-# INLINABLE wrap_Nonterminal #-}
wrap_Nonterminal :: T_Nonterminal -> Inh_Nonterminal -> (Syn_Nonterminal )
wrap_Nonterminal :: T_Nonterminal -> Inh_Nonterminal -> Syn_Nonterminal
wrap_Nonterminal !(T_Nonterminal Identity T_Nonterminal_s6
act) !(Inh_Nonterminal Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Set Identifier
_lhsInonterminals Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers) =
Identity Syn_Nonterminal -> Syn_Nonterminal
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_Nonterminal_s6
sem <- Identity T_Nonterminal_s6
act
let arg3 :: T_Nonterminal_vIn3
arg3 = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier ConstructorType
-> Bool
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Set Identifier
-> Bool
-> Options
-> Map Identifier Attributes
-> [(Identifier, ComplexType)]
-> Int
-> UseMap
-> Set Identifier
-> T_Nonterminal_vIn3
T_Nonterminal_vIn3 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Set Identifier
_lhsInonterminals Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers
!(T_Nonterminal_vOut3 Set Identifier
_lhsOcollect_nts Seq Error
_lhsOerrors Map Identifier Attributes
_lhsOinhMap' Nonterminal
_lhsOoutput Map Identifier Attributes
_lhsOsynMap' Int
_lhsOuniq) <- T_Nonterminal_vOut3 -> Identity T_Nonterminal_vOut3
forall (m :: * -> *) a. Monad m => a -> m a
return (T_Nonterminal_s6
-> K_Nonterminal_s6 T_Nonterminal_v3 -> T_Nonterminal_v3
T_Nonterminal_s6 -> forall t. K_Nonterminal_s6 t -> t
inv_Nonterminal_s6 T_Nonterminal_s6
sem K_Nonterminal_s6 T_Nonterminal_v3
K_Nonterminal_v3 T_Nonterminal_vIn3
arg3)
Syn_Nonterminal -> Identity Syn_Nonterminal
forall (m :: * -> *) a. Monad m => a -> m a
return (Set Identifier
-> Seq Error
-> Map Identifier Attributes
-> Nonterminal
-> Map Identifier Attributes
-> Int
-> Syn_Nonterminal
Syn_Nonterminal Set Identifier
_lhsOcollect_nts Seq Error
_lhsOerrors Map Identifier Attributes
_lhsOinhMap' Nonterminal
_lhsOoutput Map Identifier Attributes
_lhsOsynMap' Int
_lhsOuniq)
)
{-# INLINE sem_Nonterminal #-}
sem_Nonterminal :: Nonterminal -> T_Nonterminal
sem_Nonterminal :: Nonterminal -> T_Nonterminal
sem_Nonterminal ( Nonterminal !Identifier
nt_ ![Identifier]
params_ !Attributes
inh_ !Attributes
syn_ Productions
prods_ ) = Identifier
-> [Identifier]
-> Attributes
-> Attributes
-> T_Productions
-> T_Nonterminal
sem_Nonterminal_Nonterminal Identifier
nt_ [Identifier]
params_ Attributes
inh_ Attributes
syn_ ( Productions -> T_Productions
sem_Productions Productions
prods_ )
newtype T_Nonterminal = T_Nonterminal {
T_Nonterminal -> Identity T_Nonterminal_s6
attach_T_Nonterminal :: Identity (T_Nonterminal_s6 )
}
data T_Nonterminal_s6 where C_Nonterminal_s6 :: {
T_Nonterminal_s6 -> forall t. K_Nonterminal_s6 t -> t
inv_Nonterminal_s6 :: !(forall t. K_Nonterminal_s6 t -> t)
} -> T_Nonterminal_s6
data T_Nonterminal_s7 = C_Nonterminal_s7
data T_Nonterminal_s31 = C_Nonterminal_s31
data T_Nonterminal_s43 where C_Nonterminal_s43 :: {
T_Nonterminal_s43 -> forall t. K_Nonterminal_s43 t -> t
inv_Nonterminal_s43 :: !(forall t. K_Nonterminal_s43 t -> t)
} -> T_Nonterminal_s43
data T_Nonterminal_s44 = C_Nonterminal_s44
newtype T_Nonterminal_s46 = C_Nonterminal_s46 {
T_Nonterminal_s46 -> T_Nonterminal_v37
inv_Nonterminal_s46 :: (T_Nonterminal_v37 )
}
newtype T_Nonterminal_s52 = C_Nonterminal_s52 {
T_Nonterminal_s52 -> T_Nonterminal_v46
inv_Nonterminal_s52 :: (T_Nonterminal_v46 )
}
data K_Nonterminal_s6 k where
K_Nonterminal_v3 :: K_Nonterminal_s6 (T_Nonterminal_v3 )
K_Nonterminal_v18 :: K_Nonterminal_s6 (T_Nonterminal_v18 )
K_Nonterminal_v32 :: K_Nonterminal_s6 (T_Nonterminal_v32 )
K_Nonterminal_v36 :: K_Nonterminal_s6 (T_Nonterminal_v36 )
data K_Nonterminal_s43 k where
K_Nonterminal_v33 :: K_Nonterminal_s43 (T_Nonterminal_v33 )
K_Nonterminal_v45 :: K_Nonterminal_s43 (T_Nonterminal_v45 )
type T_Nonterminal_v3 = (T_Nonterminal_vIn3 ) -> (T_Nonterminal_vOut3 )
data T_Nonterminal_vIn3 = T_Nonterminal_vIn3 !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Map NontermIdent ConstructorType) !(Bool) !(Map Identifier Attributes) !(AttrOrderMap) !(Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) !(Set NontermIdent) !(Bool) !(Options) !(Map Identifier Attributes) !(TypeSyns) !(Int) !(UseMap) !(Set NontermIdent)
data T_Nonterminal_vOut3 = T_Nonterminal_vOut3 !(Set NontermIdent) !(Seq Error) !(Map Identifier Attributes) !(Nonterminal) !(Map Identifier Attributes) !(Int)
type T_Nonterminal_v18 = (T_Nonterminal_vIn18 ) -> (T_Nonterminal_vOut18 )
data T_Nonterminal_vIn18 = T_Nonterminal_vIn18 !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Map NontermIdent ConstructorType) !(Bool) !(Map Identifier Attributes) !(AttrOrderMap) !(Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) !(Bool) !(Options) !(Map Identifier Attributes) !(TypeSyns) !(Int) !(UseMap) !(Set NontermIdent)
data T_Nonterminal_vOut18 = T_Nonterminal_vOut18 !(Set NontermIdent) !(Seq Error) !(Map Identifier Attributes) !(Nonterminal) !(Map Identifier Attributes) !(Int)
type T_Nonterminal_v32 = (T_Nonterminal_vIn32 ) -> (T_Nonterminal_vOut32 )
data T_Nonterminal_vIn32 = T_Nonterminal_vIn32
data T_Nonterminal_vOut32 = T_Nonterminal_vOut32 !(Map Identifier Attributes) !(Map Identifier Attributes) !(T_Nonterminal_s43 )
type T_Nonterminal_v33 = (T_Nonterminal_vIn33 ) -> (T_Nonterminal_vOut33 )
data T_Nonterminal_vIn33 = T_Nonterminal_vIn33 !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Map NontermIdent ConstructorType) !(Bool) !(Map Identifier Attributes) !(AttrOrderMap) !(Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) !(Bool) !(Options) !(Map Identifier Attributes) !(TypeSyns) !(Int) !(UseMap) !(Set NontermIdent)
data T_Nonterminal_vOut33 = T_Nonterminal_vOut33 !(Seq Error) !(Nonterminal) !(Int)
type T_Nonterminal_v36 = (T_Nonterminal_vIn36 ) -> (T_Nonterminal_vOut36 )
data T_Nonterminal_vIn36 = T_Nonterminal_vIn36 !(Map NontermIdent ConstructorType) !(Bool) !(Map Identifier Attributes) !(AttrOrderMap) !(Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) !(Bool) !(Options) !(Map Identifier Attributes) !(TypeSyns) !(UseMap) !(Set NontermIdent)
data T_Nonterminal_vOut36 = T_Nonterminal_vOut36 !(Set NontermIdent) !(Seq Error) !(Map Identifier Attributes) !(Map Identifier Attributes) !(T_Nonterminal_s46 )
type T_Nonterminal_v37 = (T_Nonterminal_vIn37 ) -> (T_Nonterminal_vOut37 )
data T_Nonterminal_vIn37 = T_Nonterminal_vIn37 !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Int)
data T_Nonterminal_vOut37 = T_Nonterminal_vOut37 !(Nonterminal) !(Int)
type T_Nonterminal_v45 = (T_Nonterminal_vIn45 ) -> (T_Nonterminal_vOut45 )
data T_Nonterminal_vIn45 = T_Nonterminal_vIn45 !(Map NontermIdent ConstructorType) !(Bool) !(Map Identifier Attributes) !(AttrOrderMap) !(Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) !(Bool) !(Options) !(Map Identifier Attributes) !(TypeSyns) !(UseMap) !(Set NontermIdent)
data T_Nonterminal_vOut45 = T_Nonterminal_vOut45 !(Seq Error) !(T_Nonterminal_s52 )
type T_Nonterminal_v46 = (T_Nonterminal_vIn46 ) -> (T_Nonterminal_vOut46 )
data T_Nonterminal_vIn46 = T_Nonterminal_vIn46 !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Int)
data T_Nonterminal_vOut46 = T_Nonterminal_vOut46 !(Nonterminal) !(Int)
{-# NOINLINE sem_Nonterminal_Nonterminal #-}
sem_Nonterminal_Nonterminal :: (NontermIdent) -> ([Identifier]) -> (Attributes) -> (Attributes) -> T_Productions -> T_Nonterminal
sem_Nonterminal_Nonterminal :: Identifier
-> [Identifier]
-> Attributes
-> Attributes
-> T_Productions
-> T_Nonterminal
sem_Nonterminal_Nonterminal !Identifier
arg_nt_ ![Identifier]
arg_params_ !Attributes
arg_inh_ !Attributes
arg_syn_ T_Productions
arg_prods_ = Identity T_Nonterminal_s6 -> T_Nonterminal
T_Nonterminal (T_Nonterminal_s6 -> Identity T_Nonterminal_s6
forall (m :: * -> *) a. Monad m => a -> m a
return T_Nonterminal_s6
st6) where
{-# NOINLINE st6 #-}
!st6 :: T_Nonterminal_s6
st6 = let
k6 :: K_Nonterminal_s6 t -> t
k6 :: K_Nonterminal_s6 t -> t
k6 K_Nonterminal_s6 t
K_Nonterminal_v3 = t
T_Nonterminal_v3
v3
k6 K_Nonterminal_s6 t
K_Nonterminal_v18 = t
T_Nonterminal_v18
v18
k6 K_Nonterminal_s6 t
K_Nonterminal_v32 = t
T_Nonterminal_v32
v32
k6 K_Nonterminal_s6 t
K_Nonterminal_v36 = t
T_Nonterminal_v36
v36
v3 :: T_Nonterminal_v3
v3 :: T_Nonterminal_v3
v3 = \ !(T_Nonterminal_vIn3 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Set Identifier
_lhsInonterminals Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let !_prodsX16 :: T_Productions_s16
_prodsX16 = Identity T_Productions_s16 -> T_Productions_s16
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Productions -> Identity T_Productions_s16
attach_T_Productions (T_Productions
arg_prods_)) in
let _lhsOcollect_nts :: Set NontermIdent
!_lhsOcollect_nts :: Set Identifier
_lhsOcollect_nts = Identifier -> Set Identifier
forall a. a -> Set a
rule60 Identifier
arg_nt_ in
let !_prodsOconstructorTypeMap :: Map Identifier ConstructorType
_prodsOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule78 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_prodsOcr :: Bool
_prodsOcr = Bool -> Bool
rule79 Bool
_lhsIcr in
let !_inh1 :: Attributes
_inh1 = Attributes -> Identifier -> [Identifier] -> Attributes
forall k. Map k Type -> Identifier -> [Identifier] -> Map k Type
rule67 Attributes
arg_inh_ Identifier
arg_nt_ [Identifier]
arg_params_ in
let !_prodsOinh :: Attributes
_prodsOinh = Attributes -> Attributes
forall a. a -> a
rule61 Attributes
_inh1 in
let !_prodsOinhMap :: Map Identifier Attributes
_prodsOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule80 Map Identifier Attributes
_lhsIinhMap in
let !_prodsOmanualAttrOrderMap :: AttrOrderMap
_prodsOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule81 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_mergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_mergesIn = Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Identifier
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
rule72 Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Identifier
arg_nt_ in
let !_prodsOmergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_prodsOmergesIn = Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
forall a. a -> a
rule82 Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_mergesIn in
let !_prodsOnt :: Identifier
_prodsOnt = Identifier -> Identifier
forall a. a -> a
rule66 Identifier
arg_nt_ in
let !_prodsOo_rename :: Bool
_prodsOo_rename = Bool -> Bool
rule84 Bool
_lhsIo_rename in
let !_prodsOoptions :: Options
_prodsOoptions = Options -> Options
rule85 Options
_lhsIoptions in
let !_syn1 :: Attributes
_syn1 = Identifier -> [Identifier] -> Attributes -> Attributes
forall k. Identifier -> [Identifier] -> Map k Type -> Map k Type
rule68 Identifier
arg_nt_ [Identifier]
arg_params_ Attributes
arg_syn_ in
let !_prodsOsyn :: Attributes
_prodsOsyn = Attributes -> Attributes
forall a. a -> a
rule62 Attributes
_syn1 in
let !_prodsOsynMap :: Map Identifier Attributes
_prodsOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule86 Map Identifier Attributes
_lhsIsynMap in
let !_prodsOsynOrig :: Attributes
_prodsOsynOrig = Attributes -> Attributes
forall a. a -> a
rule64 Attributes
arg_syn_ in
let !_prodsOtypeSyns :: [(Identifier, ComplexType)]
_prodsOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule87 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_prodsOuseMap :: Map Identifier ([Char], [Char], [Char])
_prodsOuseMap = UseMap -> Identifier -> Map Identifier ([Char], [Char], [Char])
rule65 UseMap
_lhsIuseMap Identifier
arg_nt_ in
let !_prodsOwrappers :: Set Identifier
_prodsOwrappers = Set Identifier -> Set Identifier
rule89 Set Identifier
_lhsIwrappers in
let _lhsOinhMap' :: Map Identifier Attributes
!_lhsOinhMap' :: Map Identifier Attributes
_lhsOinhMap' = Attributes -> Identifier -> Map Identifier Attributes
forall a k. a -> k -> Map k a
rule57 Attributes
arg_inh_ Identifier
arg_nt_ in
let !_aroundsIn :: Map Identifier (Map Identifier [Expression])
_aroundsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Identifier -> Map Identifier (Map Identifier [Expression])
rule71 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Identifier
arg_nt_ in
let !_prodsOaroundsIn :: Map Identifier (Map Identifier [Expression])
_prodsOaroundsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
forall a. a -> a
rule76 Map Identifier (Map Identifier [Expression])
_aroundsIn in
let !_augmentsIn :: Map Identifier (Map Identifier [Expression])
_augmentsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Identifier -> Map Identifier (Map Identifier [Expression])
rule70 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Identifier
arg_nt_ in
let !_prodsOaugmentsIn :: Map Identifier (Map Identifier [Expression])
_prodsOaugmentsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
forall a. a -> a
rule77 Map Identifier (Map Identifier [Expression])
_augmentsIn in
let !_prodsOparams :: [Identifier]
_prodsOparams = [Identifier] -> [Identifier]
forall a. a -> a
rule59 [Identifier]
arg_params_ in
let !_prodsOuniq :: Int
_prodsOuniq = Int -> Int
rule88 Int
_lhsIuniq in
let _lhsOsynMap' :: Map Identifier Attributes
!_lhsOsynMap' :: Map Identifier Attributes
_lhsOsynMap' = Identifier -> Attributes -> Map Identifier Attributes
forall k a. k -> a -> Map k a
rule58 Identifier
arg_nt_ Attributes
arg_syn_ in
let !(T_Productions_vOut17 Seq Error
_prodsIerrors Productions
_prodsIoutput Int
_prodsIuniq) = T_Productions_s16
-> K_Productions_s16 T_Productions_v17 -> T_Productions_v17
T_Productions_s16 -> forall t. K_Productions_s16 t -> t
inv_Productions_s16 T_Productions_s16
_prodsX16 K_Productions_s16 T_Productions_v17
K_Productions_v17 (Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
-> Map Identifier ConstructorType
-> Bool
-> Attributes
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Identifier
-> Bool
-> Options
-> [Identifier]
-> Attributes
-> Map Identifier Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Int
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> T_Productions_vIn17
T_Productions_vIn17 Map Identifier (Map Identifier [Expression])
_prodsOaroundsIn Map Identifier (Map Identifier [Expression])
_prodsOaugmentsIn Map Identifier ConstructorType
_prodsOconstructorTypeMap Bool
_prodsOcr Attributes
_prodsOinh Map Identifier Attributes
_prodsOinhMap AttrOrderMap
_prodsOmanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_prodsOmergesIn Identifier
_prodsOnt Bool
_prodsOo_rename Options
_prodsOoptions [Identifier]
_prodsOparams Attributes
_prodsOsyn Map Identifier Attributes
_prodsOsynMap Attributes
_prodsOsynOrig [(Identifier, ComplexType)]
_prodsOtypeSyns Int
_prodsOuniq Map Identifier ([Char], [Char], [Char])
_prodsOuseMap Set Identifier
_prodsOwrappers) in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule73 Seq Error
_prodsIerrors in
let _lhsOoutput :: Nonterminal
!_lhsOoutput :: Nonterminal
_lhsOoutput = Attributes
-> Productions
-> Attributes
-> Identifier
-> [Identifier]
-> Nonterminal
rule69 Attributes
_inh1 Productions
_prodsIoutput Attributes
_syn1 Identifier
arg_nt_ [Identifier]
arg_params_ in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule75 Int
_prodsIuniq in
let !__result_ :: T_Nonterminal_vOut3
__result_ = Set Identifier
-> Seq Error
-> Map Identifier Attributes
-> Nonterminal
-> Map Identifier Attributes
-> Int
-> T_Nonterminal_vOut3
T_Nonterminal_vOut3 Set Identifier
_lhsOcollect_nts Seq Error
_lhsOerrors Map Identifier Attributes
_lhsOinhMap' Nonterminal
_lhsOoutput Map Identifier Attributes
_lhsOsynMap' Int
_lhsOuniq
in T_Nonterminal_vOut3
__result_ )
v18 :: T_Nonterminal_v18
v18 :: T_Nonterminal_v18
v18 = \ !(T_Nonterminal_vIn18 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let !_prodsX16 :: T_Productions_s16
_prodsX16 = Identity T_Productions_s16 -> T_Productions_s16
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Productions -> Identity T_Productions_s16
attach_T_Productions (T_Productions
arg_prods_)) in
let _lhsOcollect_nts :: Set NontermIdent
!_lhsOcollect_nts :: Set Identifier
_lhsOcollect_nts = Identifier -> Set Identifier
forall a. a -> Set a
rule60 Identifier
arg_nt_ in
let !_prodsOconstructorTypeMap :: Map Identifier ConstructorType
_prodsOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule78 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_prodsOcr :: Bool
_prodsOcr = Bool -> Bool
rule79 Bool
_lhsIcr in
let !_inh1 :: Attributes
_inh1 = Attributes -> Identifier -> [Identifier] -> Attributes
forall k. Map k Type -> Identifier -> [Identifier] -> Map k Type
rule67 Attributes
arg_inh_ Identifier
arg_nt_ [Identifier]
arg_params_ in
let !_prodsOinh :: Attributes
_prodsOinh = Attributes -> Attributes
forall a. a -> a
rule61 Attributes
_inh1 in
let !_prodsOinhMap :: Map Identifier Attributes
_prodsOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule80 Map Identifier Attributes
_lhsIinhMap in
let !_prodsOmanualAttrOrderMap :: AttrOrderMap
_prodsOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule81 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_mergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_mergesIn = Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Identifier
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
rule72 Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Identifier
arg_nt_ in
let !_prodsOmergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_prodsOmergesIn = Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
forall a. a -> a
rule82 Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_mergesIn in
let !_prodsOnt :: Identifier
_prodsOnt = Identifier -> Identifier
forall a. a -> a
rule66 Identifier
arg_nt_ in
let !_prodsOo_rename :: Bool
_prodsOo_rename = Bool -> Bool
rule84 Bool
_lhsIo_rename in
let !_prodsOoptions :: Options
_prodsOoptions = Options -> Options
rule85 Options
_lhsIoptions in
let !_syn1 :: Attributes
_syn1 = Identifier -> [Identifier] -> Attributes -> Attributes
forall k. Identifier -> [Identifier] -> Map k Type -> Map k Type
rule68 Identifier
arg_nt_ [Identifier]
arg_params_ Attributes
arg_syn_ in
let !_prodsOsyn :: Attributes
_prodsOsyn = Attributes -> Attributes
forall a. a -> a
rule62 Attributes
_syn1 in
let !_prodsOsynMap :: Map Identifier Attributes
_prodsOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule86 Map Identifier Attributes
_lhsIsynMap in
let !_prodsOsynOrig :: Attributes
_prodsOsynOrig = Attributes -> Attributes
forall a. a -> a
rule64 Attributes
arg_syn_ in
let !_prodsOtypeSyns :: [(Identifier, ComplexType)]
_prodsOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule87 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_prodsOuseMap :: Map Identifier ([Char], [Char], [Char])
_prodsOuseMap = UseMap -> Identifier -> Map Identifier ([Char], [Char], [Char])
rule65 UseMap
_lhsIuseMap Identifier
arg_nt_ in
let !_prodsOwrappers :: Set Identifier
_prodsOwrappers = Set Identifier -> Set Identifier
rule89 Set Identifier
_lhsIwrappers in
let _lhsOinhMap' :: Map Identifier Attributes
!_lhsOinhMap' :: Map Identifier Attributes
_lhsOinhMap' = Attributes -> Identifier -> Map Identifier Attributes
forall a k. a -> k -> Map k a
rule57 Attributes
arg_inh_ Identifier
arg_nt_ in
let !_aroundsIn :: Map Identifier (Map Identifier [Expression])
_aroundsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Identifier -> Map Identifier (Map Identifier [Expression])
rule71 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Identifier
arg_nt_ in
let !_prodsOaroundsIn :: Map Identifier (Map Identifier [Expression])
_prodsOaroundsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
forall a. a -> a
rule76 Map Identifier (Map Identifier [Expression])
_aroundsIn in
let !_augmentsIn :: Map Identifier (Map Identifier [Expression])
_augmentsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Identifier -> Map Identifier (Map Identifier [Expression])
rule70 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Identifier
arg_nt_ in
let !_prodsOaugmentsIn :: Map Identifier (Map Identifier [Expression])
_prodsOaugmentsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
forall a. a -> a
rule77 Map Identifier (Map Identifier [Expression])
_augmentsIn in
let !_prodsOparams :: [Identifier]
_prodsOparams = [Identifier] -> [Identifier]
forall a. a -> a
rule59 [Identifier]
arg_params_ in
let !_prodsOuniq :: Int
_prodsOuniq = Int -> Int
rule88 Int
_lhsIuniq in
let _lhsOsynMap' :: Map Identifier Attributes
!_lhsOsynMap' :: Map Identifier Attributes
_lhsOsynMap' = Identifier -> Attributes -> Map Identifier Attributes
forall k a. k -> a -> Map k a
rule58 Identifier
arg_nt_ Attributes
arg_syn_ in
let !(T_Productions_vOut17 Seq Error
_prodsIerrors Productions
_prodsIoutput Int
_prodsIuniq) = T_Productions_s16
-> K_Productions_s16 T_Productions_v17 -> T_Productions_v17
T_Productions_s16 -> forall t. K_Productions_s16 t -> t
inv_Productions_s16 T_Productions_s16
_prodsX16 K_Productions_s16 T_Productions_v17
K_Productions_v17 (Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
-> Map Identifier ConstructorType
-> Bool
-> Attributes
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Identifier
-> Bool
-> Options
-> [Identifier]
-> Attributes
-> Map Identifier Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Int
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> T_Productions_vIn17
T_Productions_vIn17 Map Identifier (Map Identifier [Expression])
_prodsOaroundsIn Map Identifier (Map Identifier [Expression])
_prodsOaugmentsIn Map Identifier ConstructorType
_prodsOconstructorTypeMap Bool
_prodsOcr Attributes
_prodsOinh Map Identifier Attributes
_prodsOinhMap AttrOrderMap
_prodsOmanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_prodsOmergesIn Identifier
_prodsOnt Bool
_prodsOo_rename Options
_prodsOoptions [Identifier]
_prodsOparams Attributes
_prodsOsyn Map Identifier Attributes
_prodsOsynMap Attributes
_prodsOsynOrig [(Identifier, ComplexType)]
_prodsOtypeSyns Int
_prodsOuniq Map Identifier ([Char], [Char], [Char])
_prodsOuseMap Set Identifier
_prodsOwrappers) in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule73 Seq Error
_prodsIerrors in
let _lhsOoutput :: Nonterminal
!_lhsOoutput :: Nonterminal
_lhsOoutput = Attributes
-> Productions
-> Attributes
-> Identifier
-> [Identifier]
-> Nonterminal
rule69 Attributes
_inh1 Productions
_prodsIoutput Attributes
_syn1 Identifier
arg_nt_ [Identifier]
arg_params_ in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule75 Int
_prodsIuniq in
let !__result_ :: T_Nonterminal_vOut18
__result_ = Set Identifier
-> Seq Error
-> Map Identifier Attributes
-> Nonterminal
-> Map Identifier Attributes
-> Int
-> T_Nonterminal_vOut18
T_Nonterminal_vOut18 Set Identifier
_lhsOcollect_nts Seq Error
_lhsOerrors Map Identifier Attributes
_lhsOinhMap' Nonterminal
_lhsOoutput Map Identifier Attributes
_lhsOsynMap' Int
_lhsOuniq
in T_Nonterminal_vOut18
__result_ )
v32 :: T_Nonterminal_v32
v32 :: T_Nonterminal_v32
v32 = \ !(T_Nonterminal_vIn32
T_Nonterminal_vIn32 ) -> (
let _lhsOinhMap' :: Map Identifier Attributes
!_lhsOinhMap' :: Map Identifier Attributes
_lhsOinhMap' = Attributes -> Identifier -> Map Identifier Attributes
forall a k. a -> k -> Map k a
rule57 Attributes
arg_inh_ Identifier
arg_nt_ in
let _lhsOsynMap' :: Map Identifier Attributes
!_lhsOsynMap' :: Map Identifier Attributes
_lhsOsynMap' = Identifier -> Attributes -> Map Identifier Attributes
forall k a. k -> a -> Map k a
rule58 Identifier
arg_nt_ Attributes
arg_syn_ in
let !__st_ :: T_Nonterminal_s43
__st_ = () -> T_Nonterminal_s43
st43 ()
!__result_ :: T_Nonterminal_vOut32
__result_ = Map Identifier Attributes
-> Map Identifier Attributes
-> T_Nonterminal_s43
-> T_Nonterminal_vOut32
T_Nonterminal_vOut32 Map Identifier Attributes
_lhsOinhMap' Map Identifier Attributes
_lhsOsynMap' T_Nonterminal_s43
__st_
in T_Nonterminal_vOut32
__result_ )
v36 :: T_Nonterminal_v36
v36 :: T_Nonterminal_v36
v36 = \ !(T_Nonterminal_vIn36 Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let !_prodsX16 :: T_Productions_s16
_prodsX16 = Identity T_Productions_s16 -> T_Productions_s16
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Productions -> Identity T_Productions_s16
attach_T_Productions (T_Productions
arg_prods_)) in
let _lhsOcollect_nts :: Set NontermIdent
!_lhsOcollect_nts :: Set Identifier
_lhsOcollect_nts = Identifier -> Set Identifier
forall a. a -> Set a
rule60 Identifier
arg_nt_ in
let !_prodsOconstructorTypeMap :: Map Identifier ConstructorType
_prodsOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule78 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_prodsOcr :: Bool
_prodsOcr = Bool -> Bool
rule79 Bool
_lhsIcr in
let !_inh1 :: Attributes
_inh1 = Attributes -> Identifier -> [Identifier] -> Attributes
forall k. Map k Type -> Identifier -> [Identifier] -> Map k Type
rule67 Attributes
arg_inh_ Identifier
arg_nt_ [Identifier]
arg_params_ in
let !_prodsOinh :: Attributes
_prodsOinh = Attributes -> Attributes
forall a. a -> a
rule61 Attributes
_inh1 in
let !_prodsOinhMap :: Map Identifier Attributes
_prodsOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule80 Map Identifier Attributes
_lhsIinhMap in
let !_prodsOmanualAttrOrderMap :: AttrOrderMap
_prodsOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule81 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_mergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_mergesIn = Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Identifier
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
rule72 Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Identifier
arg_nt_ in
let !_prodsOmergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_prodsOmergesIn = Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
forall a. a -> a
rule82 Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_mergesIn in
let !_prodsOnt :: Identifier
_prodsOnt = Identifier -> Identifier
forall a. a -> a
rule66 Identifier
arg_nt_ in
let !_prodsOo_rename :: Bool
_prodsOo_rename = Bool -> Bool
rule84 Bool
_lhsIo_rename in
let !_prodsOoptions :: Options
_prodsOoptions = Options -> Options
rule85 Options
_lhsIoptions in
let !_syn1 :: Attributes
_syn1 = Identifier -> [Identifier] -> Attributes -> Attributes
forall k. Identifier -> [Identifier] -> Map k Type -> Map k Type
rule68 Identifier
arg_nt_ [Identifier]
arg_params_ Attributes
arg_syn_ in
let !_prodsOsyn :: Attributes
_prodsOsyn = Attributes -> Attributes
forall a. a -> a
rule62 Attributes
_syn1 in
let !_prodsOsynMap :: Map Identifier Attributes
_prodsOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule86 Map Identifier Attributes
_lhsIsynMap in
let !_prodsOsynOrig :: Attributes
_prodsOsynOrig = Attributes -> Attributes
forall a. a -> a
rule64 Attributes
arg_syn_ in
let !_prodsOtypeSyns :: [(Identifier, ComplexType)]
_prodsOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule87 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_prodsOuseMap :: Map Identifier ([Char], [Char], [Char])
_prodsOuseMap = UseMap -> Identifier -> Map Identifier ([Char], [Char], [Char])
rule65 UseMap
_lhsIuseMap Identifier
arg_nt_ in
let !_prodsOwrappers :: Set Identifier
_prodsOwrappers = Set Identifier -> Set Identifier
rule89 Set Identifier
_lhsIwrappers in
let _lhsOinhMap' :: Map Identifier Attributes
!_lhsOinhMap' :: Map Identifier Attributes
_lhsOinhMap' = Attributes -> Identifier -> Map Identifier Attributes
forall a k. a -> k -> Map k a
rule57 Attributes
arg_inh_ Identifier
arg_nt_ in
let _lhsOsynMap' :: Map Identifier Attributes
!_lhsOsynMap' :: Map Identifier Attributes
_lhsOsynMap' = Identifier -> Attributes -> Map Identifier Attributes
forall k a. k -> a -> Map k a
rule58 Identifier
arg_nt_ Attributes
arg_syn_ in
let !(T_Productions_vOut26 Seq Error
_prodsIerrors T_Productions_s39
_prodsX39) = T_Productions_s16
-> K_Productions_s16 T_Productions_v26 -> T_Productions_v26
T_Productions_s16 -> forall t. K_Productions_s16 t -> t
inv_Productions_s16 T_Productions_s16
_prodsX16 K_Productions_s16 T_Productions_v26
K_Productions_v26 (Map Identifier ConstructorType
-> Bool
-> Attributes
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Identifier
-> Bool
-> Options
-> Attributes
-> Map Identifier Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> T_Productions_vIn26
T_Productions_vIn26 Map Identifier ConstructorType
_prodsOconstructorTypeMap Bool
_prodsOcr Attributes
_prodsOinh Map Identifier Attributes
_prodsOinhMap AttrOrderMap
_prodsOmanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_prodsOmergesIn Identifier
_prodsOnt Bool
_prodsOo_rename Options
_prodsOoptions Attributes
_prodsOsyn Map Identifier Attributes
_prodsOsynMap Attributes
_prodsOsynOrig [(Identifier, ComplexType)]
_prodsOtypeSyns Map Identifier ([Char], [Char], [Char])
_prodsOuseMap Set Identifier
_prodsOwrappers) in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule73 Seq Error
_prodsIerrors in
let !__st_ :: T_Nonterminal_s46
__st_ = Attributes -> T_Productions_s39 -> Attributes -> T_Nonterminal_s46
st46 Attributes
_inh1 T_Productions_s39
_prodsX39 Attributes
_syn1
!__result_ :: T_Nonterminal_vOut36
__result_ = Set Identifier
-> Seq Error
-> Map Identifier Attributes
-> Map Identifier Attributes
-> T_Nonterminal_s46
-> T_Nonterminal_vOut36
T_Nonterminal_vOut36 Set Identifier
_lhsOcollect_nts Seq Error
_lhsOerrors Map Identifier Attributes
_lhsOinhMap' Map Identifier Attributes
_lhsOsynMap' T_Nonterminal_s46
__st_
in T_Nonterminal_vOut36
__result_ )
in (forall t. K_Nonterminal_s6 t -> t) -> T_Nonterminal_s6
C_Nonterminal_s6 forall t. K_Nonterminal_s6 t -> t
k6
{-# NOINLINE st43 #-}
st43 :: () -> T_Nonterminal_s43
st43 = \ (()
_ :: ()) -> let
k43 :: K_Nonterminal_s43 t -> t
k43 :: K_Nonterminal_s43 t -> t
k43 K_Nonterminal_s43 t
K_Nonterminal_v33 = t
T_Nonterminal_v33
v33
k43 K_Nonterminal_s43 t
K_Nonterminal_v45 = t
T_Nonterminal_v45
v45
v33 :: T_Nonterminal_v33
v33 :: T_Nonterminal_v33
v33 = \ !(T_Nonterminal_vIn33 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let !_prodsOnt :: Identifier
_prodsOnt = Identifier -> Identifier
forall a. a -> a
rule66 Identifier
arg_nt_ in
let !_prodsOsynOrig :: Attributes
_prodsOsynOrig = Attributes -> Attributes
forall a. a -> a
rule64 Attributes
arg_syn_ in
let !_prodsX16 :: T_Productions_s16
_prodsX16 = Identity T_Productions_s16 -> T_Productions_s16
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Productions -> Identity T_Productions_s16
attach_T_Productions (T_Productions
arg_prods_)) in
let !_prodsOconstructorTypeMap :: Map Identifier ConstructorType
_prodsOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule78 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_prodsOcr :: Bool
_prodsOcr = Bool -> Bool
rule79 Bool
_lhsIcr in
let !_inh1 :: Attributes
_inh1 = Attributes -> Identifier -> [Identifier] -> Attributes
forall k. Map k Type -> Identifier -> [Identifier] -> Map k Type
rule67 Attributes
arg_inh_ Identifier
arg_nt_ [Identifier]
arg_params_ in
let !_prodsOinh :: Attributes
_prodsOinh = Attributes -> Attributes
forall a. a -> a
rule61 Attributes
_inh1 in
let !_prodsOinhMap :: Map Identifier Attributes
_prodsOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule80 Map Identifier Attributes
_lhsIinhMap in
let !_prodsOmanualAttrOrderMap :: AttrOrderMap
_prodsOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule81 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_mergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_mergesIn = Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Identifier
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
rule72 Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Identifier
arg_nt_ in
let !_prodsOmergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_prodsOmergesIn = Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
forall a. a -> a
rule82 Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_mergesIn in
let !_prodsOo_rename :: Bool
_prodsOo_rename = Bool -> Bool
rule84 Bool
_lhsIo_rename in
let !_prodsOoptions :: Options
_prodsOoptions = Options -> Options
rule85 Options
_lhsIoptions in
let !_syn1 :: Attributes
_syn1 = Identifier -> [Identifier] -> Attributes -> Attributes
forall k. Identifier -> [Identifier] -> Map k Type -> Map k Type
rule68 Identifier
arg_nt_ [Identifier]
arg_params_ Attributes
arg_syn_ in
let !_prodsOsyn :: Attributes
_prodsOsyn = Attributes -> Attributes
forall a. a -> a
rule62 Attributes
_syn1 in
let !_prodsOsynMap :: Map Identifier Attributes
_prodsOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule86 Map Identifier Attributes
_lhsIsynMap in
let !_prodsOtypeSyns :: [(Identifier, ComplexType)]
_prodsOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule87 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_prodsOuseMap :: Map Identifier ([Char], [Char], [Char])
_prodsOuseMap = UseMap -> Identifier -> Map Identifier ([Char], [Char], [Char])
rule65 UseMap
_lhsIuseMap Identifier
arg_nt_ in
let !_prodsOwrappers :: Set Identifier
_prodsOwrappers = Set Identifier -> Set Identifier
rule89 Set Identifier
_lhsIwrappers in
let !_aroundsIn :: Map Identifier (Map Identifier [Expression])
_aroundsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Identifier -> Map Identifier (Map Identifier [Expression])
rule71 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Identifier
arg_nt_ in
let !_prodsOaroundsIn :: Map Identifier (Map Identifier [Expression])
_prodsOaroundsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
forall a. a -> a
rule76 Map Identifier (Map Identifier [Expression])
_aroundsIn in
let !_augmentsIn :: Map Identifier (Map Identifier [Expression])
_augmentsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Identifier -> Map Identifier (Map Identifier [Expression])
rule70 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Identifier
arg_nt_ in
let !_prodsOaugmentsIn :: Map Identifier (Map Identifier [Expression])
_prodsOaugmentsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
forall a. a -> a
rule77 Map Identifier (Map Identifier [Expression])
_augmentsIn in
let !_prodsOparams :: [Identifier]
_prodsOparams = [Identifier] -> [Identifier]
forall a. a -> a
rule59 [Identifier]
arg_params_ in
let !_prodsOuniq :: Int
_prodsOuniq = Int -> Int
rule88 Int
_lhsIuniq in
let !(T_Productions_vOut17 Seq Error
_prodsIerrors Productions
_prodsIoutput Int
_prodsIuniq) = T_Productions_s16
-> K_Productions_s16 T_Productions_v17 -> T_Productions_v17
T_Productions_s16 -> forall t. K_Productions_s16 t -> t
inv_Productions_s16 T_Productions_s16
_prodsX16 K_Productions_s16 T_Productions_v17
K_Productions_v17 (Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
-> Map Identifier ConstructorType
-> Bool
-> Attributes
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Identifier
-> Bool
-> Options
-> [Identifier]
-> Attributes
-> Map Identifier Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Int
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> T_Productions_vIn17
T_Productions_vIn17 Map Identifier (Map Identifier [Expression])
_prodsOaroundsIn Map Identifier (Map Identifier [Expression])
_prodsOaugmentsIn Map Identifier ConstructorType
_prodsOconstructorTypeMap Bool
_prodsOcr Attributes
_prodsOinh Map Identifier Attributes
_prodsOinhMap AttrOrderMap
_prodsOmanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_prodsOmergesIn Identifier
_prodsOnt Bool
_prodsOo_rename Options
_prodsOoptions [Identifier]
_prodsOparams Attributes
_prodsOsyn Map Identifier Attributes
_prodsOsynMap Attributes
_prodsOsynOrig [(Identifier, ComplexType)]
_prodsOtypeSyns Int
_prodsOuniq Map Identifier ([Char], [Char], [Char])
_prodsOuseMap Set Identifier
_prodsOwrappers) in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule73 Seq Error
_prodsIerrors in
let _lhsOoutput :: Nonterminal
!_lhsOoutput :: Nonterminal
_lhsOoutput = Attributes
-> Productions
-> Attributes
-> Identifier
-> [Identifier]
-> Nonterminal
rule69 Attributes
_inh1 Productions
_prodsIoutput Attributes
_syn1 Identifier
arg_nt_ [Identifier]
arg_params_ in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule75 Int
_prodsIuniq in
let !__result_ :: T_Nonterminal_vOut33
__result_ = Seq Error -> Nonterminal -> Int -> T_Nonterminal_vOut33
T_Nonterminal_vOut33 Seq Error
_lhsOerrors Nonterminal
_lhsOoutput Int
_lhsOuniq
in T_Nonterminal_vOut33
__result_ )
v45 :: T_Nonterminal_v45
v45 :: T_Nonterminal_v45
v45 = \ !(T_Nonterminal_vIn45 Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let !_prodsOnt :: Identifier
_prodsOnt = Identifier -> Identifier
forall a. a -> a
rule66 Identifier
arg_nt_ in
let !_prodsOsynOrig :: Attributes
_prodsOsynOrig = Attributes -> Attributes
forall a. a -> a
rule64 Attributes
arg_syn_ in
let !_prodsX16 :: T_Productions_s16
_prodsX16 = Identity T_Productions_s16 -> T_Productions_s16
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Productions -> Identity T_Productions_s16
attach_T_Productions (T_Productions
arg_prods_)) in
let !_prodsOconstructorTypeMap :: Map Identifier ConstructorType
_prodsOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule78 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_prodsOcr :: Bool
_prodsOcr = Bool -> Bool
rule79 Bool
_lhsIcr in
let !_inh1 :: Attributes
_inh1 = Attributes -> Identifier -> [Identifier] -> Attributes
forall k. Map k Type -> Identifier -> [Identifier] -> Map k Type
rule67 Attributes
arg_inh_ Identifier
arg_nt_ [Identifier]
arg_params_ in
let !_prodsOinh :: Attributes
_prodsOinh = Attributes -> Attributes
forall a. a -> a
rule61 Attributes
_inh1 in
let !_prodsOinhMap :: Map Identifier Attributes
_prodsOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule80 Map Identifier Attributes
_lhsIinhMap in
let !_prodsOmanualAttrOrderMap :: AttrOrderMap
_prodsOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule81 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_mergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_mergesIn = Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Identifier
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
rule72 Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Identifier
arg_nt_ in
let !_prodsOmergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_prodsOmergesIn = Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
forall a. a -> a
rule82 Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_mergesIn in
let !_prodsOo_rename :: Bool
_prodsOo_rename = Bool -> Bool
rule84 Bool
_lhsIo_rename in
let !_prodsOoptions :: Options
_prodsOoptions = Options -> Options
rule85 Options
_lhsIoptions in
let !_syn1 :: Attributes
_syn1 = Identifier -> [Identifier] -> Attributes -> Attributes
forall k. Identifier -> [Identifier] -> Map k Type -> Map k Type
rule68 Identifier
arg_nt_ [Identifier]
arg_params_ Attributes
arg_syn_ in
let !_prodsOsyn :: Attributes
_prodsOsyn = Attributes -> Attributes
forall a. a -> a
rule62 Attributes
_syn1 in
let !_prodsOsynMap :: Map Identifier Attributes
_prodsOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule86 Map Identifier Attributes
_lhsIsynMap in
let !_prodsOtypeSyns :: [(Identifier, ComplexType)]
_prodsOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule87 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_prodsOuseMap :: Map Identifier ([Char], [Char], [Char])
_prodsOuseMap = UseMap -> Identifier -> Map Identifier ([Char], [Char], [Char])
rule65 UseMap
_lhsIuseMap Identifier
arg_nt_ in
let !_prodsOwrappers :: Set Identifier
_prodsOwrappers = Set Identifier -> Set Identifier
rule89 Set Identifier
_lhsIwrappers in
let !(T_Productions_vOut26 Seq Error
_prodsIerrors T_Productions_s39
_prodsX39) = T_Productions_s16
-> K_Productions_s16 T_Productions_v26 -> T_Productions_v26
T_Productions_s16 -> forall t. K_Productions_s16 t -> t
inv_Productions_s16 T_Productions_s16
_prodsX16 K_Productions_s16 T_Productions_v26
K_Productions_v26 (Map Identifier ConstructorType
-> Bool
-> Attributes
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Identifier
-> Bool
-> Options
-> Attributes
-> Map Identifier Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> T_Productions_vIn26
T_Productions_vIn26 Map Identifier ConstructorType
_prodsOconstructorTypeMap Bool
_prodsOcr Attributes
_prodsOinh Map Identifier Attributes
_prodsOinhMap AttrOrderMap
_prodsOmanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_prodsOmergesIn Identifier
_prodsOnt Bool
_prodsOo_rename Options
_prodsOoptions Attributes
_prodsOsyn Map Identifier Attributes
_prodsOsynMap Attributes
_prodsOsynOrig [(Identifier, ComplexType)]
_prodsOtypeSyns Map Identifier ([Char], [Char], [Char])
_prodsOuseMap Set Identifier
_prodsOwrappers) in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule73 Seq Error
_prodsIerrors in
let !__st_ :: T_Nonterminal_s52
__st_ = Attributes -> T_Productions_s39 -> Attributes -> T_Nonterminal_s52
st52 Attributes
_inh1 T_Productions_s39
_prodsX39 Attributes
_syn1
!__result_ :: T_Nonterminal_vOut45
__result_ = Seq Error -> T_Nonterminal_s52 -> T_Nonterminal_vOut45
T_Nonterminal_vOut45 Seq Error
_lhsOerrors T_Nonterminal_s52
__st_
in T_Nonterminal_vOut45
__result_ )
in (forall t. K_Nonterminal_s43 t -> t) -> T_Nonterminal_s43
C_Nonterminal_s43 forall t. K_Nonterminal_s43 t -> t
k43
{-# NOINLINE st46 #-}
st46 :: Attributes -> T_Productions_s39 -> Attributes -> T_Nonterminal_s46
st46 = \ !Attributes
_inh1 !T_Productions_s39
_prodsX39 !Attributes
_syn1 -> let
v37 :: T_Nonterminal_v37
v37 :: T_Nonterminal_v37
v37 = \ !(T_Nonterminal_vIn37 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Int
_lhsIuniq) -> (
let !_prodsOparams :: [Identifier]
_prodsOparams = [Identifier] -> [Identifier]
forall a. a -> a
rule59 [Identifier]
arg_params_ in
let !_aroundsIn :: Map Identifier (Map Identifier [Expression])
_aroundsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Identifier -> Map Identifier (Map Identifier [Expression])
rule71 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Identifier
arg_nt_ in
let !_prodsOaroundsIn :: Map Identifier (Map Identifier [Expression])
_prodsOaroundsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
forall a. a -> a
rule76 Map Identifier (Map Identifier [Expression])
_aroundsIn in
let !_augmentsIn :: Map Identifier (Map Identifier [Expression])
_augmentsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Identifier -> Map Identifier (Map Identifier [Expression])
rule70 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Identifier
arg_nt_ in
let !_prodsOaugmentsIn :: Map Identifier (Map Identifier [Expression])
_prodsOaugmentsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
forall a. a -> a
rule77 Map Identifier (Map Identifier [Expression])
_augmentsIn in
let !_prodsOuniq :: Int
_prodsOuniq = Int -> Int
rule88 Int
_lhsIuniq in
let !(T_Productions_vOut27 Productions
_prodsIoutput Int
_prodsIuniq) = T_Productions_s39 -> T_Productions_v27
inv_Productions_s39 T_Productions_s39
_prodsX39 (Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
-> [Identifier]
-> Int
-> T_Productions_vIn27
T_Productions_vIn27 Map Identifier (Map Identifier [Expression])
_prodsOaroundsIn Map Identifier (Map Identifier [Expression])
_prodsOaugmentsIn [Identifier]
_prodsOparams Int
_prodsOuniq) in
let _lhsOoutput :: Nonterminal
!_lhsOoutput :: Nonterminal
_lhsOoutput = Attributes
-> Productions
-> Attributes
-> Identifier
-> [Identifier]
-> Nonterminal
rule69 Attributes
_inh1 Productions
_prodsIoutput Attributes
_syn1 Identifier
arg_nt_ [Identifier]
arg_params_ in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule75 Int
_prodsIuniq in
let !__result_ :: T_Nonterminal_vOut37
__result_ = Nonterminal -> Int -> T_Nonterminal_vOut37
T_Nonterminal_vOut37 Nonterminal
_lhsOoutput Int
_lhsOuniq
in T_Nonterminal_vOut37
__result_ )
in T_Nonterminal_v37 -> T_Nonterminal_s46
C_Nonterminal_s46 T_Nonterminal_v37
v37
{-# NOINLINE st52 #-}
st52 :: Attributes -> T_Productions_s39 -> Attributes -> T_Nonterminal_s52
st52 = \ !Attributes
_inh1 !T_Productions_s39
_prodsX39 !Attributes
_syn1 -> let
v46 :: T_Nonterminal_v46
v46 :: T_Nonterminal_v46
v46 = \ !(T_Nonterminal_vIn46 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Int
_lhsIuniq) -> (
let !_prodsOparams :: [Identifier]
_prodsOparams = [Identifier] -> [Identifier]
forall a. a -> a
rule59 [Identifier]
arg_params_ in
let !_aroundsIn :: Map Identifier (Map Identifier [Expression])
_aroundsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Identifier -> Map Identifier (Map Identifier [Expression])
rule71 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Identifier
arg_nt_ in
let !_prodsOaroundsIn :: Map Identifier (Map Identifier [Expression])
_prodsOaroundsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
forall a. a -> a
rule76 Map Identifier (Map Identifier [Expression])
_aroundsIn in
let !_augmentsIn :: Map Identifier (Map Identifier [Expression])
_augmentsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Identifier -> Map Identifier (Map Identifier [Expression])
rule70 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Identifier
arg_nt_ in
let !_prodsOaugmentsIn :: Map Identifier (Map Identifier [Expression])
_prodsOaugmentsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
forall a. a -> a
rule77 Map Identifier (Map Identifier [Expression])
_augmentsIn in
let !_prodsOuniq :: Int
_prodsOuniq = Int -> Int
rule88 Int
_lhsIuniq in
let !(T_Productions_vOut27 Productions
_prodsIoutput Int
_prodsIuniq) = T_Productions_s39 -> T_Productions_v27
inv_Productions_s39 T_Productions_s39
_prodsX39 (Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
-> [Identifier]
-> Int
-> T_Productions_vIn27
T_Productions_vIn27 Map Identifier (Map Identifier [Expression])
_prodsOaroundsIn Map Identifier (Map Identifier [Expression])
_prodsOaugmentsIn [Identifier]
_prodsOparams Int
_prodsOuniq) in
let _lhsOoutput :: Nonterminal
!_lhsOoutput :: Nonterminal
_lhsOoutput = Attributes
-> Productions
-> Attributes
-> Identifier
-> [Identifier]
-> Nonterminal
rule69 Attributes
_inh1 Productions
_prodsIoutput Attributes
_syn1 Identifier
arg_nt_ [Identifier]
arg_params_ in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule75 Int
_prodsIuniq in
let !__result_ :: T_Nonterminal_vOut46
__result_ = Nonterminal -> Int -> T_Nonterminal_vOut46
T_Nonterminal_vOut46 Nonterminal
_lhsOoutput Int
_lhsOuniq
in T_Nonterminal_vOut46
__result_ )
in T_Nonterminal_v46 -> T_Nonterminal_s52
C_Nonterminal_s52 T_Nonterminal_v46
v46
{-# NOINLINE rule57 #-}
{-# LINE 7 "src-ag/DistChildAttr.ag" #-}
rule57 = \ !inh_ !nt_ ->
{-# LINE 7 "src-ag/DistChildAttr.ag" #-}
Map.singleton nt_ inh_
{-# LINE 1417 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE rule58 #-}
{-# LINE 8 "src-ag/DistChildAttr.ag" #-}
rule58 = \ !nt_ !syn_ ->
{-# LINE 8 "src-ag/DistChildAttr.ag" #-}
Map.singleton nt_ syn_
{-# LINE 1423 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE rule59 #-}
{-# LINE 44 "src-ag/DefaultRules.ag" #-}
rule59 = \ !params_ ->
{-# LINE 44 "src-ag/DefaultRules.ag" #-}
params_
{-# LINE 1429 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule60 #-}
{-# LINE 205 "src-ag/DefaultRules.ag" #-}
rule60 = \ !nt_ ->
{-# LINE 205 "src-ag/DefaultRules.ag" #-}
Set.singleton nt_
{-# LINE 1435 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE rule61 #-}
{-# LINE 219 "src-ag/DefaultRules.ag" #-}
rule61 = \ !_inh1 ->
{-# LINE 219 "src-ag/DefaultRules.ag" #-}
_inh1
{-# LINE 1441 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE rule62 #-}
{-# LINE 220 "src-ag/DefaultRules.ag" #-}
rule62 = \ !_syn1 ->
{-# LINE 220 "src-ag/DefaultRules.ag" #-}
_syn1
{-# LINE 1447 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE rule64 #-}
{-# LINE 222 "src-ag/DefaultRules.ag" #-}
rule64 = \ !syn_ ->
{-# LINE 222 "src-ag/DefaultRules.ag" #-}
syn_
{-# LINE 1453 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE rule65 #-}
{-# LINE 223 "src-ag/DefaultRules.ag" #-}
rule65 = \ ((!_lhsIuseMap) :: UseMap) !nt_ ->
{-# LINE 223 "src-ag/DefaultRules.ag" #-}
Map.findWithDefault Map.empty nt_ _lhsIuseMap
{-# LINE 1459 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE rule66 #-}
{-# LINE 235 "src-ag/DefaultRules.ag" #-}
rule66 = \ !nt_ ->
{-# LINE 235 "src-ag/DefaultRules.ag" #-}
nt_
{-# LINE 1465 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE rule67 #-}
{-# LINE 592 "src-ag/DefaultRules.ag" #-}
rule67 = \ !inh_ !nt_ !params_ ->
{-# LINE 592 "src-ag/DefaultRules.ag" #-}
Map.map (elimSelfId nt_ params_) inh_
{-# LINE 1471 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE rule68 #-}
{-# LINE 593 "src-ag/DefaultRules.ag" #-}
rule68 = \ !nt_ !params_ !syn_ ->
{-# LINE 593 "src-ag/DefaultRules.ag" #-}
Map.map (elimSelfId nt_ params_) syn_
{-# LINE 1477 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE rule69 #-}
{-# LINE 632 "src-ag/DefaultRules.ag" #-}
rule69 = \ !_inh1 ((!_prodsIoutput) :: Productions) !_syn1 !nt_ !params_ ->
{-# LINE 632 "src-ag/DefaultRules.ag" #-}
Nonterminal nt_ params_ _inh1 _syn1 _prodsIoutput
{-# LINE 1483 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE rule70 #-}
{-# LINE 804 "src-ag/DefaultRules.ag" #-}
rule70 = \ ((!_lhsIaugmentsIn) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !nt_ ->
{-# LINE 804 "src-ag/DefaultRules.ag" #-}
Map.findWithDefault Map.empty nt_ _lhsIaugmentsIn
{-# LINE 1489 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE rule71 #-}
{-# LINE 811 "src-ag/DefaultRules.ag" #-}
rule71 = \ ((!_lhsIaroundsIn) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !nt_ ->
{-# LINE 811 "src-ag/DefaultRules.ag" #-}
Map.findWithDefault Map.empty nt_ _lhsIaroundsIn
{-# LINE 1495 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE rule72 #-}
{-# LINE 819 "src-ag/DefaultRules.ag" #-}
rule72 = \ ((!_lhsImergesIn) :: Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) !nt_ ->
{-# LINE 819 "src-ag/DefaultRules.ag" #-}
Map.findWithDefault Map.empty nt_ _lhsImergesIn
{-# LINE 1501 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule73 #-}
rule73 = \ ((!_prodsIerrors) :: Seq Error) ->
_prodsIerrors
{-# NOINLINE[1] rule75 #-}
rule75 = \ ((!_prodsIuniq) :: Int) ->
_prodsIuniq
{-# NOINLINE[1] rule76 #-}
rule76 = \ !_aroundsIn ->
_aroundsIn
{-# NOINLINE[1] rule77 #-}
rule77 = \ !_augmentsIn ->
_augmentsIn
{-# NOINLINE[1] rule78 #-}
rule78 = \ ((!_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->
_lhsIconstructorTypeMap
{-# NOINLINE[1] rule79 #-}
rule79 = \ ((!_lhsIcr) :: Bool) ->
_lhsIcr
{-# NOINLINE[1] rule80 #-}
rule80 = \ ((!_lhsIinhMap) :: Map Identifier Attributes) ->
_lhsIinhMap
{-# NOINLINE[1] rule81 #-}
rule81 = \ ((!_lhsImanualAttrOrderMap) :: AttrOrderMap) ->
_lhsImanualAttrOrderMap
{-# NOINLINE[1] rule82 #-}
rule82 = \ !_mergesIn ->
_mergesIn
{-# NOINLINE[1] rule84 #-}
rule84 = \ ((!_lhsIo_rename) :: Bool) ->
_lhsIo_rename
{-# NOINLINE[1] rule85 #-}
rule85 = \ ((!_lhsIoptions) :: Options) ->
_lhsIoptions
{-# NOINLINE[1] rule86 #-}
rule86 = \ ((!_lhsIsynMap) :: Map Identifier Attributes) ->
_lhsIsynMap
{-# NOINLINE[1] rule87 #-}
rule87 = \ ((!_lhsItypeSyns) :: TypeSyns) ->
_lhsItypeSyns
{-# NOINLINE[1] rule88 #-}
rule88 = \ ((!_lhsIuniq) :: Int) ->
_lhsIuniq
{-# NOINLINE[1] rule89 #-}
rule89 = \ ((!_lhsIwrappers) :: Set NontermIdent) ->
_lhsIwrappers
data Inh_Nonterminals = Inh_Nonterminals { Inh_Nonterminals
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
aroundsIn_Inh_Nonterminals :: !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))), Inh_Nonterminals
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
augmentsIn_Inh_Nonterminals :: !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))), Inh_Nonterminals -> Map Identifier ConstructorType
constructorTypeMap_Inh_Nonterminals :: !(Map NontermIdent ConstructorType), Inh_Nonterminals -> Bool
cr_Inh_Nonterminals :: !(Bool), Inh_Nonterminals -> Map Identifier Attributes
inhMap_Inh_Nonterminals :: !(Map Identifier Attributes), Inh_Nonterminals -> AttrOrderMap
manualAttrOrderMap_Inh_Nonterminals :: !(AttrOrderMap), Inh_Nonterminals
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
mergesIn_Inh_Nonterminals :: !(Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))), Inh_Nonterminals -> Set Identifier
nonterminals_Inh_Nonterminals :: !(Set NontermIdent), Inh_Nonterminals -> Bool
o_rename_Inh_Nonterminals :: !(Bool), Inh_Nonterminals -> Options
options_Inh_Nonterminals :: !(Options), Inh_Nonterminals -> Map Identifier Attributes
synMap_Inh_Nonterminals :: !(Map Identifier Attributes), Inh_Nonterminals -> [(Identifier, ComplexType)]
typeSyns_Inh_Nonterminals :: !(TypeSyns), Inh_Nonterminals -> Int
uniq_Inh_Nonterminals :: !(Int), Inh_Nonterminals -> UseMap
useMap_Inh_Nonterminals :: !(UseMap), Inh_Nonterminals -> Set Identifier
wrappers_Inh_Nonterminals :: !(Set NontermIdent) }
data Syn_Nonterminals = Syn_Nonterminals { Syn_Nonterminals -> Set Identifier
collect_nts_Syn_Nonterminals :: !(Set NontermIdent), Syn_Nonterminals -> Seq Error
errors_Syn_Nonterminals :: !(Seq Error), Syn_Nonterminals -> Map Identifier Attributes
inhMap'_Syn_Nonterminals :: !(Map Identifier Attributes), Syn_Nonterminals -> Nonterminals
output_Syn_Nonterminals :: !(Nonterminals), Syn_Nonterminals -> Map Identifier Attributes
synMap'_Syn_Nonterminals :: !(Map Identifier Attributes), Syn_Nonterminals -> Int
uniq_Syn_Nonterminals :: !(Int) }
{-# INLINABLE wrap_Nonterminals #-}
wrap_Nonterminals :: T_Nonterminals -> Inh_Nonterminals -> (Syn_Nonterminals )
wrap_Nonterminals :: T_Nonterminals -> Inh_Nonterminals -> Syn_Nonterminals
wrap_Nonterminals !(T_Nonterminals Identity T_Nonterminals_s8
act) !(Inh_Nonterminals Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Set Identifier
_lhsInonterminals Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers) =
Identity Syn_Nonterminals -> Syn_Nonterminals
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_Nonterminals_s8
sem <- Identity T_Nonterminals_s8
act
let arg4 :: T_Nonterminals_vIn4
arg4 = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier ConstructorType
-> Bool
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Set Identifier
-> Bool
-> Options
-> Map Identifier Attributes
-> [(Identifier, ComplexType)]
-> Int
-> UseMap
-> Set Identifier
-> T_Nonterminals_vIn4
T_Nonterminals_vIn4 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Set Identifier
_lhsInonterminals Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers
!(T_Nonterminals_vOut4 Set Identifier
_lhsOcollect_nts Seq Error
_lhsOerrors Map Identifier Attributes
_lhsOinhMap' Nonterminals
_lhsOoutput Map Identifier Attributes
_lhsOsynMap' Int
_lhsOuniq) <- T_Nonterminals_vOut4 -> Identity T_Nonterminals_vOut4
forall (m :: * -> *) a. Monad m => a -> m a
return (T_Nonterminals_s8
-> K_Nonterminals_s8 T_Nonterminals_v4 -> T_Nonterminals_v4
T_Nonterminals_s8 -> forall t. K_Nonterminals_s8 t -> t
inv_Nonterminals_s8 T_Nonterminals_s8
sem K_Nonterminals_s8 T_Nonterminals_v4
K_Nonterminals_v4 T_Nonterminals_vIn4
arg4)
Syn_Nonterminals -> Identity Syn_Nonterminals
forall (m :: * -> *) a. Monad m => a -> m a
return (Set Identifier
-> Seq Error
-> Map Identifier Attributes
-> Nonterminals
-> Map Identifier Attributes
-> Int
-> Syn_Nonterminals
Syn_Nonterminals Set Identifier
_lhsOcollect_nts Seq Error
_lhsOerrors Map Identifier Attributes
_lhsOinhMap' Nonterminals
_lhsOoutput Map Identifier Attributes
_lhsOsynMap' Int
_lhsOuniq)
)
{-# NOINLINE sem_Nonterminals #-}
sem_Nonterminals :: Nonterminals -> T_Nonterminals
sem_Nonterminals :: Nonterminals -> T_Nonterminals
sem_Nonterminals Nonterminals
list = (T_Nonterminal -> T_Nonterminals -> T_Nonterminals)
-> T_Nonterminals -> [T_Nonterminal] -> T_Nonterminals
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
Prelude.foldr T_Nonterminal -> T_Nonterminals -> T_Nonterminals
sem_Nonterminals_Cons T_Nonterminals
sem_Nonterminals_Nil ((Nonterminal -> T_Nonterminal) -> Nonterminals -> [T_Nonterminal]
forall a b. (a -> b) -> [a] -> [b]
Prelude.map Nonterminal -> T_Nonterminal
sem_Nonterminal Nonterminals
list)
newtype T_Nonterminals = T_Nonterminals {
T_Nonterminals -> Identity T_Nonterminals_s8
attach_T_Nonterminals :: Identity (T_Nonterminals_s8 )
}
data T_Nonterminals_s8 where C_Nonterminals_s8 :: {
T_Nonterminals_s8 -> forall t. K_Nonterminals_s8 t -> t
inv_Nonterminals_s8 :: !(forall t. K_Nonterminals_s8 t -> t)
} -> T_Nonterminals_s8
data T_Nonterminals_s9 = C_Nonterminals_s9
data T_Nonterminals_s28 where C_Nonterminals_s28 :: {
T_Nonterminals_s28 -> forall t. K_Nonterminals_s28 t -> t
inv_Nonterminals_s28 :: !(forall t. K_Nonterminals_s28 t -> t)
} -> T_Nonterminals_s28
data T_Nonterminals_s29 = C_Nonterminals_s29
newtype T_Nonterminals_s32 = C_Nonterminals_s32 {
T_Nonterminals_s32 -> T_Nonterminals_v20
inv_Nonterminals_s32 :: (T_Nonterminals_v20 )
}
data T_Nonterminals_s33 = C_Nonterminals_s33
newtype T_Nonterminals_s45 = C_Nonterminals_s45 {
T_Nonterminals_s45 -> T_Nonterminals_v35
inv_Nonterminals_s45 :: (T_Nonterminals_v35 )
}
data K_Nonterminals_s8 k where
K_Nonterminals_v4 :: K_Nonterminals_s8 (T_Nonterminals_v4 )
K_Nonterminals_v15 :: K_Nonterminals_s8 (T_Nonterminals_v15 )
K_Nonterminals_v19 :: K_Nonterminals_s8 (T_Nonterminals_v19 )
data K_Nonterminals_s28 k where
K_Nonterminals_v16 :: K_Nonterminals_s28 (T_Nonterminals_v16 )
K_Nonterminals_v34 :: K_Nonterminals_s28 (T_Nonterminals_v34 )
type T_Nonterminals_v4 = (T_Nonterminals_vIn4 ) -> (T_Nonterminals_vOut4 )
data T_Nonterminals_vIn4 = T_Nonterminals_vIn4 !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Map NontermIdent ConstructorType) !(Bool) !(Map Identifier Attributes) !(AttrOrderMap) !(Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) !(Set NontermIdent) !(Bool) !(Options) !(Map Identifier Attributes) !(TypeSyns) !(Int) !(UseMap) !(Set NontermIdent)
data T_Nonterminals_vOut4 = T_Nonterminals_vOut4 !(Set NontermIdent) !(Seq Error) !(Map Identifier Attributes) !(Nonterminals) !(Map Identifier Attributes) !(Int)
type T_Nonterminals_v15 = (T_Nonterminals_vIn15 ) -> (T_Nonterminals_vOut15 )
data T_Nonterminals_vIn15 = T_Nonterminals_vIn15
data T_Nonterminals_vOut15 = T_Nonterminals_vOut15 !(Map Identifier Attributes) !(Map Identifier Attributes) !(T_Nonterminals_s28 )
type T_Nonterminals_v16 = (T_Nonterminals_vIn16 ) -> (T_Nonterminals_vOut16 )
data T_Nonterminals_vIn16 = T_Nonterminals_vIn16 !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Map NontermIdent ConstructorType) !(Bool) !(Map Identifier Attributes) !(AttrOrderMap) !(Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) !(Bool) !(Options) !(Map Identifier Attributes) !(TypeSyns) !(Int) !(UseMap) !(Set NontermIdent)
data T_Nonterminals_vOut16 = T_Nonterminals_vOut16 !(Seq Error) !(Nonterminals) !(Int)
type T_Nonterminals_v19 = (T_Nonterminals_vIn19 ) -> (T_Nonterminals_vOut19 )
data T_Nonterminals_vIn19 = T_Nonterminals_vIn19 !(Map NontermIdent ConstructorType) !(Bool) !(Map Identifier Attributes) !(AttrOrderMap) !(Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) !(Bool) !(Options) !(Map Identifier Attributes) !(TypeSyns) !(UseMap) !(Set NontermIdent)
data T_Nonterminals_vOut19 = T_Nonterminals_vOut19 !(Set NontermIdent) !(Seq Error) !(Map Identifier Attributes) !(Map Identifier Attributes) !(T_Nonterminals_s32 )
type T_Nonterminals_v20 = (T_Nonterminals_vIn20 ) -> (T_Nonterminals_vOut20 )
data T_Nonterminals_vIn20 = T_Nonterminals_vIn20 !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Int)
data T_Nonterminals_vOut20 = T_Nonterminals_vOut20 !(Nonterminals) !(Int)
type T_Nonterminals_v34 = (T_Nonterminals_vIn34 ) -> (T_Nonterminals_vOut34 )
data T_Nonterminals_vIn34 = T_Nonterminals_vIn34 !(Map NontermIdent ConstructorType) !(Bool) !(Map Identifier Attributes) !(AttrOrderMap) !(Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) !(Bool) !(Options) !(Map Identifier Attributes) !(TypeSyns) !(UseMap) !(Set NontermIdent)
data T_Nonterminals_vOut34 = T_Nonterminals_vOut34 !(Seq Error) !(T_Nonterminals_s45 )
type T_Nonterminals_v35 = (T_Nonterminals_vIn35 ) -> (T_Nonterminals_vOut35 )
data T_Nonterminals_vIn35 = T_Nonterminals_vIn35 !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) !(Int)
data T_Nonterminals_vOut35 = T_Nonterminals_vOut35 !(Nonterminals) !(Int)
{-# NOINLINE sem_Nonterminals_Cons #-}
sem_Nonterminals_Cons :: T_Nonterminal -> T_Nonterminals -> T_Nonterminals
sem_Nonterminals_Cons :: T_Nonterminal -> T_Nonterminals -> T_Nonterminals
sem_Nonterminals_Cons T_Nonterminal
arg_hd_ T_Nonterminals
arg_tl_ = Identity T_Nonterminals_s8 -> T_Nonterminals
T_Nonterminals (T_Nonterminals_s8 -> Identity T_Nonterminals_s8
forall (m :: * -> *) a. Monad m => a -> m a
return T_Nonterminals_s8
st8) where
{-# NOINLINE st8 #-}
!st8 :: T_Nonterminals_s8
st8 = let
k8 :: K_Nonterminals_s8 t -> t
k8 :: K_Nonterminals_s8 t -> t
k8 K_Nonterminals_s8 t
K_Nonterminals_v4 = t
T_Nonterminals_v4
v4
k8 K_Nonterminals_s8 t
K_Nonterminals_v15 = t
T_Nonterminals_v15
v15
k8 K_Nonterminals_s8 t
K_Nonterminals_v19 = t
T_Nonterminals_v19
v19
v4 :: T_Nonterminals_v4
v4 :: T_Nonterminals_v4
v4 = \ !(T_Nonterminals_vIn4 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Set Identifier
_lhsInonterminals Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let !_hdX6 :: T_Nonterminal_s6
_hdX6 = Identity T_Nonterminal_s6 -> T_Nonterminal_s6
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Nonterminal -> Identity T_Nonterminal_s6
attach_T_Nonterminal (T_Nonterminal
arg_hd_)) in
let !_tlX8 :: T_Nonterminals_s8
_tlX8 = Identity T_Nonterminals_s8 -> T_Nonterminals_s8
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Nonterminals -> Identity T_Nonterminals_s8
attach_T_Nonterminals (T_Nonterminals
arg_tl_)) in
let !_hdOconstructorTypeMap :: Map Identifier ConstructorType
_hdOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule99 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_hdOcr :: Bool
_hdOcr = Bool -> Bool
rule100 Bool
_lhsIcr in
let !_hdOinhMap :: Map Identifier Attributes
_hdOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule101 Map Identifier Attributes
_lhsIinhMap in
let !_hdOmanualAttrOrderMap :: AttrOrderMap
_hdOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule102 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_hdOmergesIn :: Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_hdOmergesIn = Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
rule103 Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn in
let !_hdOo_rename :: Bool
_hdOo_rename = Bool -> Bool
rule105 Bool
_lhsIo_rename in
let !_hdOoptions :: Options
_hdOoptions = Options -> Options
rule106 Options
_lhsIoptions in
let !_hdOsynMap :: Map Identifier Attributes
_hdOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule107 Map Identifier Attributes
_lhsIsynMap in
let !_hdOtypeSyns :: [(Identifier, ComplexType)]
_hdOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule108 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_hdOuseMap :: UseMap
_hdOuseMap = UseMap -> UseMap
rule110 UseMap
_lhsIuseMap in
let !_hdOwrappers :: Set Identifier
_hdOwrappers = Set Identifier -> Set Identifier
rule111 Set Identifier
_lhsIwrappers in
let !_tlOconstructorTypeMap :: Map Identifier ConstructorType
_tlOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule114 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_tlOcr :: Bool
_tlOcr = Bool -> Bool
rule115 Bool
_lhsIcr in
let !_tlOinhMap :: Map Identifier Attributes
_tlOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule116 Map Identifier Attributes
_lhsIinhMap in
let !_tlOmanualAttrOrderMap :: AttrOrderMap
_tlOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule117 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_tlOmergesIn :: Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_tlOmergesIn = Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
rule118 Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn in
let !_tlOo_rename :: Bool
_tlOo_rename = Bool -> Bool
rule120 Bool
_lhsIo_rename in
let !_tlOoptions :: Options
_tlOoptions = Options -> Options
rule121 Options
_lhsIoptions in
let !_tlOsynMap :: Map Identifier Attributes
_tlOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule122 Map Identifier Attributes
_lhsIsynMap in
let !_tlOtypeSyns :: [(Identifier, ComplexType)]
_tlOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule123 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_tlOuseMap :: UseMap
_tlOuseMap = UseMap -> UseMap
rule125 UseMap
_lhsIuseMap in
let !_tlOwrappers :: Set Identifier
_tlOwrappers = Set Identifier -> Set Identifier
rule126 Set Identifier
_lhsIwrappers in
let !_hdOaroundsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaroundsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule97 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn in
let !_hdOaugmentsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaugmentsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule98 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn in
let !_hdOuniq :: Int
_hdOuniq = Int -> Int
rule109 Int
_lhsIuniq in
let !_tlOaroundsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaroundsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule112 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn in
let !_tlOaugmentsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaugmentsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule113 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn in
let !(T_Nonterminal_vOut18 Set Identifier
_hdIcollect_nts Seq Error
_hdIerrors Map Identifier Attributes
_hdIinhMap' Nonterminal
_hdIoutput Map Identifier Attributes
_hdIsynMap' Int
_hdIuniq) = T_Nonterminal_s6
-> K_Nonterminal_s6 T_Nonterminal_v18 -> T_Nonterminal_v18
T_Nonterminal_s6 -> forall t. K_Nonterminal_s6 t -> t
inv_Nonterminal_s6 T_Nonterminal_s6
_hdX6 K_Nonterminal_s6 T_Nonterminal_v18
K_Nonterminal_v18 (Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier ConstructorType
-> Bool
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Bool
-> Options
-> Map Identifier Attributes
-> [(Identifier, ComplexType)]
-> Int
-> UseMap
-> Set Identifier
-> T_Nonterminal_vIn18
T_Nonterminal_vIn18 Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaugmentsIn Map Identifier ConstructorType
_hdOconstructorTypeMap Bool
_hdOcr Map Identifier Attributes
_hdOinhMap AttrOrderMap
_hdOmanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_hdOmergesIn Bool
_hdOo_rename Options
_hdOoptions Map Identifier Attributes
_hdOsynMap [(Identifier, ComplexType)]
_hdOtypeSyns Int
_hdOuniq UseMap
_hdOuseMap Set Identifier
_hdOwrappers) in
let !(T_Nonterminals_vOut19 Set Identifier
_tlIcollect_nts Seq Error
_tlIerrors Map Identifier Attributes
_tlIinhMap' Map Identifier Attributes
_tlIsynMap' T_Nonterminals_s32
_tlX32) = T_Nonterminals_s8
-> K_Nonterminals_s8 T_Nonterminals_v19 -> T_Nonterminals_v19
T_Nonterminals_s8 -> forall t. K_Nonterminals_s8 t -> t
inv_Nonterminals_s8 T_Nonterminals_s8
_tlX8 K_Nonterminals_s8 T_Nonterminals_v19
K_Nonterminals_v19 (Map Identifier ConstructorType
-> Bool
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Bool
-> Options
-> Map Identifier Attributes
-> [(Identifier, ComplexType)]
-> UseMap
-> Set Identifier
-> T_Nonterminals_vIn19
T_Nonterminals_vIn19 Map Identifier ConstructorType
_tlOconstructorTypeMap Bool
_tlOcr Map Identifier Attributes
_tlOinhMap AttrOrderMap
_tlOmanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_tlOmergesIn Bool
_tlOo_rename Options
_tlOoptions Map Identifier Attributes
_tlOsynMap [(Identifier, ComplexType)]
_tlOtypeSyns UseMap
_tlOuseMap Set Identifier
_tlOwrappers) in
let _lhsOcollect_nts :: Set NontermIdent
!_lhsOcollect_nts :: Set Identifier
_lhsOcollect_nts = Set Identifier -> Set Identifier -> Set Identifier
rule90 Set Identifier
_hdIcollect_nts Set Identifier
_tlIcollect_nts in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule91 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let _lhsOinhMap' :: Map Identifier Attributes
!_lhsOinhMap' :: Map Identifier Attributes
_lhsOinhMap' = Map Identifier Attributes
-> Map Identifier Attributes -> Map Identifier Attributes
rule92 Map Identifier Attributes
_hdIinhMap' Map Identifier Attributes
_tlIinhMap' in
let !_tlOuniq :: Int
_tlOuniq = Int -> Int
rule124 Int
_hdIuniq in
let _lhsOsynMap' :: Map Identifier Attributes
!_lhsOsynMap' :: Map Identifier Attributes
_lhsOsynMap' = Map Identifier Attributes
-> Map Identifier Attributes -> Map Identifier Attributes
rule93 Map Identifier Attributes
_hdIsynMap' Map Identifier Attributes
_tlIsynMap' in
let !(T_Nonterminals_vOut20 Nonterminals
_tlIoutput Int
_tlIuniq) = T_Nonterminals_s32 -> T_Nonterminals_v20
inv_Nonterminals_s32 T_Nonterminals_s32
_tlX32 (Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Int
-> T_Nonterminals_vIn20
T_Nonterminals_vIn20 Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaugmentsIn Int
_tlOuniq) in
let !_output :: Nonterminals
_output = Nonterminal -> Nonterminals -> Nonterminals
rule94 Nonterminal
_hdIoutput Nonterminals
_tlIoutput in
let _lhsOoutput :: Nonterminals
!_lhsOoutput :: Nonterminals
_lhsOoutput = Nonterminals -> Nonterminals
forall a. a -> a
rule95 Nonterminals
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule96 Int
_tlIuniq in
let !__result_ :: T_Nonterminals_vOut4
__result_ = Set Identifier
-> Seq Error
-> Map Identifier Attributes
-> Nonterminals
-> Map Identifier Attributes
-> Int
-> T_Nonterminals_vOut4
T_Nonterminals_vOut4 Set Identifier
_lhsOcollect_nts Seq Error
_lhsOerrors Map Identifier Attributes
_lhsOinhMap' Nonterminals
_lhsOoutput Map Identifier Attributes
_lhsOsynMap' Int
_lhsOuniq
in T_Nonterminals_vOut4
__result_ )
v15 :: T_Nonterminals_v15
v15 :: T_Nonterminals_v15
v15 = \ !(T_Nonterminals_vIn15
T_Nonterminals_vIn15 ) -> (
let !_hdX6 :: T_Nonterminal_s6
_hdX6 = Identity T_Nonterminal_s6 -> T_Nonterminal_s6
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Nonterminal -> Identity T_Nonterminal_s6
attach_T_Nonterminal (T_Nonterminal
arg_hd_)) in
let !_tlX8 :: T_Nonterminals_s8
_tlX8 = Identity T_Nonterminals_s8 -> T_Nonterminals_s8
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Nonterminals -> Identity T_Nonterminals_s8
attach_T_Nonterminals (T_Nonterminals
arg_tl_)) in
let !(T_Nonterminal_vOut32 Map Identifier Attributes
_hdIinhMap' Map Identifier Attributes
_hdIsynMap' T_Nonterminal_s43
_hdX43) = T_Nonterminal_s6
-> K_Nonterminal_s6 T_Nonterminal_v32 -> T_Nonterminal_v32
T_Nonterminal_s6 -> forall t. K_Nonterminal_s6 t -> t
inv_Nonterminal_s6 T_Nonterminal_s6
_hdX6 K_Nonterminal_s6 T_Nonterminal_v32
K_Nonterminal_v32 (T_Nonterminal_vIn32
T_Nonterminal_vIn32 ) in
let !(T_Nonterminals_vOut15 Map Identifier Attributes
_tlIinhMap' Map Identifier Attributes
_tlIsynMap' T_Nonterminals_s28
_tlX28) = T_Nonterminals_s8
-> K_Nonterminals_s8 T_Nonterminals_v15 -> T_Nonterminals_v15
T_Nonterminals_s8 -> forall t. K_Nonterminals_s8 t -> t
inv_Nonterminals_s8 T_Nonterminals_s8
_tlX8 K_Nonterminals_s8 T_Nonterminals_v15
K_Nonterminals_v15 (T_Nonterminals_vIn15
T_Nonterminals_vIn15 ) in
let _lhsOinhMap' :: Map Identifier Attributes
!_lhsOinhMap' :: Map Identifier Attributes
_lhsOinhMap' = Map Identifier Attributes
-> Map Identifier Attributes -> Map Identifier Attributes
rule92 Map Identifier Attributes
_hdIinhMap' Map Identifier Attributes
_tlIinhMap' in
let _lhsOsynMap' :: Map Identifier Attributes
!_lhsOsynMap' :: Map Identifier Attributes
_lhsOsynMap' = Map Identifier Attributes
-> Map Identifier Attributes -> Map Identifier Attributes
rule93 Map Identifier Attributes
_hdIsynMap' Map Identifier Attributes
_tlIsynMap' in
let !__st_ :: T_Nonterminals_s28
__st_ = T_Nonterminal_s43 -> T_Nonterminals_s28 -> T_Nonterminals_s28
st28 T_Nonterminal_s43
_hdX43 T_Nonterminals_s28
_tlX28
!__result_ :: T_Nonterminals_vOut15
__result_ = Map Identifier Attributes
-> Map Identifier Attributes
-> T_Nonterminals_s28
-> T_Nonterminals_vOut15
T_Nonterminals_vOut15 Map Identifier Attributes
_lhsOinhMap' Map Identifier Attributes
_lhsOsynMap' T_Nonterminals_s28
__st_
in T_Nonterminals_vOut15
__result_ )
v19 :: T_Nonterminals_v19
v19 :: T_Nonterminals_v19
v19 = \ !(T_Nonterminals_vIn19 Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let !_hdX6 :: T_Nonterminal_s6
_hdX6 = Identity T_Nonterminal_s6 -> T_Nonterminal_s6
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Nonterminal -> Identity T_Nonterminal_s6
attach_T_Nonterminal (T_Nonterminal
arg_hd_)) in
let !_tlX8 :: T_Nonterminals_s8
_tlX8 = Identity T_Nonterminals_s8 -> T_Nonterminals_s8
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Nonterminals -> Identity T_Nonterminals_s8
attach_T_Nonterminals (T_Nonterminals
arg_tl_)) in
let !_hdOconstructorTypeMap :: Map Identifier ConstructorType
_hdOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule99 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_hdOcr :: Bool
_hdOcr = Bool -> Bool
rule100 Bool
_lhsIcr in
let !_hdOinhMap :: Map Identifier Attributes
_hdOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule101 Map Identifier Attributes
_lhsIinhMap in
let !_hdOmanualAttrOrderMap :: AttrOrderMap
_hdOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule102 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_hdOmergesIn :: Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_hdOmergesIn = Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
rule103 Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn in
let !_hdOo_rename :: Bool
_hdOo_rename = Bool -> Bool
rule105 Bool
_lhsIo_rename in
let !_hdOoptions :: Options
_hdOoptions = Options -> Options
rule106 Options
_lhsIoptions in
let !_hdOsynMap :: Map Identifier Attributes
_hdOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule107 Map Identifier Attributes
_lhsIsynMap in
let !_hdOtypeSyns :: [(Identifier, ComplexType)]
_hdOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule108 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_hdOuseMap :: UseMap
_hdOuseMap = UseMap -> UseMap
rule110 UseMap
_lhsIuseMap in
let !_hdOwrappers :: Set Identifier
_hdOwrappers = Set Identifier -> Set Identifier
rule111 Set Identifier
_lhsIwrappers in
let !_tlOconstructorTypeMap :: Map Identifier ConstructorType
_tlOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule114 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_tlOcr :: Bool
_tlOcr = Bool -> Bool
rule115 Bool
_lhsIcr in
let !_tlOinhMap :: Map Identifier Attributes
_tlOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule116 Map Identifier Attributes
_lhsIinhMap in
let !_tlOmanualAttrOrderMap :: AttrOrderMap
_tlOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule117 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_tlOmergesIn :: Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_tlOmergesIn = Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
rule118 Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn in
let !_tlOo_rename :: Bool
_tlOo_rename = Bool -> Bool
rule120 Bool
_lhsIo_rename in
let !_tlOoptions :: Options
_tlOoptions = Options -> Options
rule121 Options
_lhsIoptions in
let !_tlOsynMap :: Map Identifier Attributes
_tlOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule122 Map Identifier Attributes
_lhsIsynMap in
let !_tlOtypeSyns :: [(Identifier, ComplexType)]
_tlOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule123 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_tlOuseMap :: UseMap
_tlOuseMap = UseMap -> UseMap
rule125 UseMap
_lhsIuseMap in
let !_tlOwrappers :: Set Identifier
_tlOwrappers = Set Identifier -> Set Identifier
rule126 Set Identifier
_lhsIwrappers in
let !(T_Nonterminal_vOut36 Set Identifier
_hdIcollect_nts Seq Error
_hdIerrors Map Identifier Attributes
_hdIinhMap' Map Identifier Attributes
_hdIsynMap' T_Nonterminal_s46
_hdX46) = T_Nonterminal_s6
-> K_Nonterminal_s6 T_Nonterminal_v36 -> T_Nonterminal_v36
T_Nonterminal_s6 -> forall t. K_Nonterminal_s6 t -> t
inv_Nonterminal_s6 T_Nonterminal_s6
_hdX6 K_Nonterminal_s6 T_Nonterminal_v36
K_Nonterminal_v36 (Map Identifier ConstructorType
-> Bool
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Bool
-> Options
-> Map Identifier Attributes
-> [(Identifier, ComplexType)]
-> UseMap
-> Set Identifier
-> T_Nonterminal_vIn36
T_Nonterminal_vIn36 Map Identifier ConstructorType
_hdOconstructorTypeMap Bool
_hdOcr Map Identifier Attributes
_hdOinhMap AttrOrderMap
_hdOmanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_hdOmergesIn Bool
_hdOo_rename Options
_hdOoptions Map Identifier Attributes
_hdOsynMap [(Identifier, ComplexType)]
_hdOtypeSyns UseMap
_hdOuseMap Set Identifier
_hdOwrappers) in
let !(T_Nonterminals_vOut19 Set Identifier
_tlIcollect_nts Seq Error
_tlIerrors Map Identifier Attributes
_tlIinhMap' Map Identifier Attributes
_tlIsynMap' T_Nonterminals_s32
_tlX32) = T_Nonterminals_s8
-> K_Nonterminals_s8 T_Nonterminals_v19 -> T_Nonterminals_v19
T_Nonterminals_s8 -> forall t. K_Nonterminals_s8 t -> t
inv_Nonterminals_s8 T_Nonterminals_s8
_tlX8 K_Nonterminals_s8 T_Nonterminals_v19
K_Nonterminals_v19 (Map Identifier ConstructorType
-> Bool
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Bool
-> Options
-> Map Identifier Attributes
-> [(Identifier, ComplexType)]
-> UseMap
-> Set Identifier
-> T_Nonterminals_vIn19
T_Nonterminals_vIn19 Map Identifier ConstructorType
_tlOconstructorTypeMap Bool
_tlOcr Map Identifier Attributes
_tlOinhMap AttrOrderMap
_tlOmanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_tlOmergesIn Bool
_tlOo_rename Options
_tlOoptions Map Identifier Attributes
_tlOsynMap [(Identifier, ComplexType)]
_tlOtypeSyns UseMap
_tlOuseMap Set Identifier
_tlOwrappers) in
let _lhsOcollect_nts :: Set NontermIdent
!_lhsOcollect_nts :: Set Identifier
_lhsOcollect_nts = Set Identifier -> Set Identifier -> Set Identifier
rule90 Set Identifier
_hdIcollect_nts Set Identifier
_tlIcollect_nts in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule91 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let _lhsOinhMap' :: Map Identifier Attributes
!_lhsOinhMap' :: Map Identifier Attributes
_lhsOinhMap' = Map Identifier Attributes
-> Map Identifier Attributes -> Map Identifier Attributes
rule92 Map Identifier Attributes
_hdIinhMap' Map Identifier Attributes
_tlIinhMap' in
let _lhsOsynMap' :: Map Identifier Attributes
!_lhsOsynMap' :: Map Identifier Attributes
_lhsOsynMap' = Map Identifier Attributes
-> Map Identifier Attributes -> Map Identifier Attributes
rule93 Map Identifier Attributes
_hdIsynMap' Map Identifier Attributes
_tlIsynMap' in
let !__st_ :: T_Nonterminals_s32
__st_ = T_Nonterminal_s46 -> T_Nonterminals_s32 -> T_Nonterminals_s32
st32 T_Nonterminal_s46
_hdX46 T_Nonterminals_s32
_tlX32
!__result_ :: T_Nonterminals_vOut19
__result_ = Set Identifier
-> Seq Error
-> Map Identifier Attributes
-> Map Identifier Attributes
-> T_Nonterminals_s32
-> T_Nonterminals_vOut19
T_Nonterminals_vOut19 Set Identifier
_lhsOcollect_nts Seq Error
_lhsOerrors Map Identifier Attributes
_lhsOinhMap' Map Identifier Attributes
_lhsOsynMap' T_Nonterminals_s32
__st_
in T_Nonterminals_vOut19
__result_ )
in (forall t. K_Nonterminals_s8 t -> t) -> T_Nonterminals_s8
C_Nonterminals_s8 forall t. K_Nonterminals_s8 t -> t
k8
{-# NOINLINE st28 #-}
st28 :: T_Nonterminal_s43 -> T_Nonterminals_s28 -> T_Nonterminals_s28
st28 = \ !T_Nonterminal_s43
_hdX43 !T_Nonterminals_s28
_tlX28 -> let
k28 :: K_Nonterminals_s28 t -> t
k28 :: K_Nonterminals_s28 t -> t
k28 K_Nonterminals_s28 t
K_Nonterminals_v16 = t
T_Nonterminals_v16
v16
k28 K_Nonterminals_s28 t
K_Nonterminals_v34 = t
T_Nonterminals_v34
v34
v16 :: T_Nonterminals_v16
v16 :: T_Nonterminals_v16
v16 = \ !(T_Nonterminals_vIn16 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let !_hdOconstructorTypeMap :: Map Identifier ConstructorType
_hdOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule99 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_hdOcr :: Bool
_hdOcr = Bool -> Bool
rule100 Bool
_lhsIcr in
let !_hdOinhMap :: Map Identifier Attributes
_hdOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule101 Map Identifier Attributes
_lhsIinhMap in
let !_hdOmanualAttrOrderMap :: AttrOrderMap
_hdOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule102 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_hdOmergesIn :: Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_hdOmergesIn = Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
rule103 Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn in
let !_hdOo_rename :: Bool
_hdOo_rename = Bool -> Bool
rule105 Bool
_lhsIo_rename in
let !_hdOoptions :: Options
_hdOoptions = Options -> Options
rule106 Options
_lhsIoptions in
let !_hdOsynMap :: Map Identifier Attributes
_hdOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule107 Map Identifier Attributes
_lhsIsynMap in
let !_hdOtypeSyns :: [(Identifier, ComplexType)]
_hdOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule108 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_hdOuseMap :: UseMap
_hdOuseMap = UseMap -> UseMap
rule110 UseMap
_lhsIuseMap in
let !_hdOwrappers :: Set Identifier
_hdOwrappers = Set Identifier -> Set Identifier
rule111 Set Identifier
_lhsIwrappers in
let !_tlOconstructorTypeMap :: Map Identifier ConstructorType
_tlOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule114 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_tlOcr :: Bool
_tlOcr = Bool -> Bool
rule115 Bool
_lhsIcr in
let !_tlOinhMap :: Map Identifier Attributes
_tlOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule116 Map Identifier Attributes
_lhsIinhMap in
let !_tlOmanualAttrOrderMap :: AttrOrderMap
_tlOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule117 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_tlOmergesIn :: Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_tlOmergesIn = Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
rule118 Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn in
let !_tlOo_rename :: Bool
_tlOo_rename = Bool -> Bool
rule120 Bool
_lhsIo_rename in
let !_tlOoptions :: Options
_tlOoptions = Options -> Options
rule121 Options
_lhsIoptions in
let !_tlOsynMap :: Map Identifier Attributes
_tlOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule122 Map Identifier Attributes
_lhsIsynMap in
let !_tlOtypeSyns :: [(Identifier, ComplexType)]
_tlOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule123 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_tlOuseMap :: UseMap
_tlOuseMap = UseMap -> UseMap
rule125 UseMap
_lhsIuseMap in
let !_tlOwrappers :: Set Identifier
_tlOwrappers = Set Identifier -> Set Identifier
rule126 Set Identifier
_lhsIwrappers in
let !_hdOaroundsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaroundsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule97 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn in
let !_hdOaugmentsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaugmentsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule98 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn in
let !_hdOuniq :: Int
_hdOuniq = Int -> Int
rule109 Int
_lhsIuniq in
let !_tlOaroundsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaroundsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule112 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn in
let !_tlOaugmentsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaugmentsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule113 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn in
let !(T_Nonterminal_vOut33 Seq Error
_hdIerrors Nonterminal
_hdIoutput Int
_hdIuniq) = T_Nonterminal_s43
-> K_Nonterminal_s43 T_Nonterminal_v33 -> T_Nonterminal_v33
T_Nonterminal_s43 -> forall t. K_Nonterminal_s43 t -> t
inv_Nonterminal_s43 T_Nonterminal_s43
_hdX43 K_Nonterminal_s43 T_Nonterminal_v33
K_Nonterminal_v33 (Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier ConstructorType
-> Bool
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Bool
-> Options
-> Map Identifier Attributes
-> [(Identifier, ComplexType)]
-> Int
-> UseMap
-> Set Identifier
-> T_Nonterminal_vIn33
T_Nonterminal_vIn33 Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaugmentsIn Map Identifier ConstructorType
_hdOconstructorTypeMap Bool
_hdOcr Map Identifier Attributes
_hdOinhMap AttrOrderMap
_hdOmanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_hdOmergesIn Bool
_hdOo_rename Options
_hdOoptions Map Identifier Attributes
_hdOsynMap [(Identifier, ComplexType)]
_hdOtypeSyns Int
_hdOuniq UseMap
_hdOuseMap Set Identifier
_hdOwrappers) in
let !(T_Nonterminals_vOut34 Seq Error
_tlIerrors T_Nonterminals_s45
_tlX45) = T_Nonterminals_s28
-> K_Nonterminals_s28 T_Nonterminals_v34 -> T_Nonterminals_v34
T_Nonterminals_s28 -> forall t. K_Nonterminals_s28 t -> t
inv_Nonterminals_s28 T_Nonterminals_s28
_tlX28 K_Nonterminals_s28 T_Nonterminals_v34
K_Nonterminals_v34 (Map Identifier ConstructorType
-> Bool
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Bool
-> Options
-> Map Identifier Attributes
-> [(Identifier, ComplexType)]
-> UseMap
-> Set Identifier
-> T_Nonterminals_vIn34
T_Nonterminals_vIn34 Map Identifier ConstructorType
_tlOconstructorTypeMap Bool
_tlOcr Map Identifier Attributes
_tlOinhMap AttrOrderMap
_tlOmanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_tlOmergesIn Bool
_tlOo_rename Options
_tlOoptions Map Identifier Attributes
_tlOsynMap [(Identifier, ComplexType)]
_tlOtypeSyns UseMap
_tlOuseMap Set Identifier
_tlOwrappers) in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule91 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let !_tlOuniq :: Int
_tlOuniq = Int -> Int
rule124 Int
_hdIuniq in
let !(T_Nonterminals_vOut35 Nonterminals
_tlIoutput Int
_tlIuniq) = T_Nonterminals_s45 -> T_Nonterminals_v35
inv_Nonterminals_s45 T_Nonterminals_s45
_tlX45 (Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Int
-> T_Nonterminals_vIn35
T_Nonterminals_vIn35 Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaugmentsIn Int
_tlOuniq) in
let !_output :: Nonterminals
_output = Nonterminal -> Nonterminals -> Nonterminals
rule94 Nonterminal
_hdIoutput Nonterminals
_tlIoutput in
let _lhsOoutput :: Nonterminals
!_lhsOoutput :: Nonterminals
_lhsOoutput = Nonterminals -> Nonterminals
forall a. a -> a
rule95 Nonterminals
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule96 Int
_tlIuniq in
let !__result_ :: T_Nonterminals_vOut16
__result_ = Seq Error -> Nonterminals -> Int -> T_Nonterminals_vOut16
T_Nonterminals_vOut16 Seq Error
_lhsOerrors Nonterminals
_lhsOoutput Int
_lhsOuniq
in T_Nonterminals_vOut16
__result_ )
v34 :: T_Nonterminals_v34
v34 :: T_Nonterminals_v34
v34 = \ !(T_Nonterminals_vIn34 Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let !_hdOconstructorTypeMap :: Map Identifier ConstructorType
_hdOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule99 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_hdOcr :: Bool
_hdOcr = Bool -> Bool
rule100 Bool
_lhsIcr in
let !_hdOinhMap :: Map Identifier Attributes
_hdOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule101 Map Identifier Attributes
_lhsIinhMap in
let !_hdOmanualAttrOrderMap :: AttrOrderMap
_hdOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule102 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_hdOmergesIn :: Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_hdOmergesIn = Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
rule103 Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn in
let !_hdOo_rename :: Bool
_hdOo_rename = Bool -> Bool
rule105 Bool
_lhsIo_rename in
let !_hdOoptions :: Options
_hdOoptions = Options -> Options
rule106 Options
_lhsIoptions in
let !_hdOsynMap :: Map Identifier Attributes
_hdOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule107 Map Identifier Attributes
_lhsIsynMap in
let !_hdOtypeSyns :: [(Identifier, ComplexType)]
_hdOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule108 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_hdOuseMap :: UseMap
_hdOuseMap = UseMap -> UseMap
rule110 UseMap
_lhsIuseMap in
let !_hdOwrappers :: Set Identifier
_hdOwrappers = Set Identifier -> Set Identifier
rule111 Set Identifier
_lhsIwrappers in
let !_tlOconstructorTypeMap :: Map Identifier ConstructorType
_tlOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule114 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_tlOcr :: Bool
_tlOcr = Bool -> Bool
rule115 Bool
_lhsIcr in
let !_tlOinhMap :: Map Identifier Attributes
_tlOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule116 Map Identifier Attributes
_lhsIinhMap in
let !_tlOmanualAttrOrderMap :: AttrOrderMap
_tlOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule117 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_tlOmergesIn :: Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_tlOmergesIn = Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
rule118 Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn in
let !_tlOo_rename :: Bool
_tlOo_rename = Bool -> Bool
rule120 Bool
_lhsIo_rename in
let !_tlOoptions :: Options
_tlOoptions = Options -> Options
rule121 Options
_lhsIoptions in
let !_tlOsynMap :: Map Identifier Attributes
_tlOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule122 Map Identifier Attributes
_lhsIsynMap in
let !_tlOtypeSyns :: [(Identifier, ComplexType)]
_tlOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule123 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_tlOuseMap :: UseMap
_tlOuseMap = UseMap -> UseMap
rule125 UseMap
_lhsIuseMap in
let !_tlOwrappers :: Set Identifier
_tlOwrappers = Set Identifier -> Set Identifier
rule126 Set Identifier
_lhsIwrappers in
let !(T_Nonterminal_vOut45 Seq Error
_hdIerrors T_Nonterminal_s52
_hdX52) = T_Nonterminal_s43
-> K_Nonterminal_s43 T_Nonterminal_v45 -> T_Nonterminal_v45
T_Nonterminal_s43 -> forall t. K_Nonterminal_s43 t -> t
inv_Nonterminal_s43 T_Nonterminal_s43
_hdX43 K_Nonterminal_s43 T_Nonterminal_v45
K_Nonterminal_v45 (Map Identifier ConstructorType
-> Bool
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Bool
-> Options
-> Map Identifier Attributes
-> [(Identifier, ComplexType)]
-> UseMap
-> Set Identifier
-> T_Nonterminal_vIn45
T_Nonterminal_vIn45 Map Identifier ConstructorType
_hdOconstructorTypeMap Bool
_hdOcr Map Identifier Attributes
_hdOinhMap AttrOrderMap
_hdOmanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_hdOmergesIn Bool
_hdOo_rename Options
_hdOoptions Map Identifier Attributes
_hdOsynMap [(Identifier, ComplexType)]
_hdOtypeSyns UseMap
_hdOuseMap Set Identifier
_hdOwrappers) in
let !(T_Nonterminals_vOut34 Seq Error
_tlIerrors T_Nonterminals_s45
_tlX45) = T_Nonterminals_s28
-> K_Nonterminals_s28 T_Nonterminals_v34 -> T_Nonterminals_v34
T_Nonterminals_s28 -> forall t. K_Nonterminals_s28 t -> t
inv_Nonterminals_s28 T_Nonterminals_s28
_tlX28 K_Nonterminals_s28 T_Nonterminals_v34
K_Nonterminals_v34 (Map Identifier ConstructorType
-> Bool
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Bool
-> Options
-> Map Identifier Attributes
-> [(Identifier, ComplexType)]
-> UseMap
-> Set Identifier
-> T_Nonterminals_vIn34
T_Nonterminals_vIn34 Map Identifier ConstructorType
_tlOconstructorTypeMap Bool
_tlOcr Map Identifier Attributes
_tlOinhMap AttrOrderMap
_tlOmanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_tlOmergesIn Bool
_tlOo_rename Options
_tlOoptions Map Identifier Attributes
_tlOsynMap [(Identifier, ComplexType)]
_tlOtypeSyns UseMap
_tlOuseMap Set Identifier
_tlOwrappers) in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule91 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let !__st_ :: T_Nonterminals_s45
__st_ = T_Nonterminal_s52 -> T_Nonterminals_s45 -> T_Nonterminals_s45
st45 T_Nonterminal_s52
_hdX52 T_Nonterminals_s45
_tlX45
!__result_ :: T_Nonterminals_vOut34
__result_ = Seq Error -> T_Nonterminals_s45 -> T_Nonterminals_vOut34
T_Nonterminals_vOut34 Seq Error
_lhsOerrors T_Nonterminals_s45
__st_
in T_Nonterminals_vOut34
__result_ )
in (forall t. K_Nonterminals_s28 t -> t) -> T_Nonterminals_s28
C_Nonterminals_s28 forall t. K_Nonterminals_s28 t -> t
k28
{-# NOINLINE st32 #-}
st32 :: T_Nonterminal_s46 -> T_Nonterminals_s32 -> T_Nonterminals_s32
st32 = \ !T_Nonterminal_s46
_hdX46 !T_Nonterminals_s32
_tlX32 -> let
v20 :: T_Nonterminals_v20
v20 :: T_Nonterminals_v20
v20 = \ !(T_Nonterminals_vIn20 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Int
_lhsIuniq) -> (
let !_hdOaroundsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaroundsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule97 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn in
let !_hdOaugmentsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaugmentsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule98 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn in
let !_hdOuniq :: Int
_hdOuniq = Int -> Int
rule109 Int
_lhsIuniq in
let !_tlOaroundsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaroundsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule112 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn in
let !_tlOaugmentsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaugmentsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule113 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn in
let !(T_Nonterminal_vOut37 Nonterminal
_hdIoutput Int
_hdIuniq) = T_Nonterminal_s46 -> T_Nonterminal_v37
inv_Nonterminal_s46 T_Nonterminal_s46
_hdX46 (Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Int
-> T_Nonterminal_vIn37
T_Nonterminal_vIn37 Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaugmentsIn Int
_hdOuniq) in
let !_tlOuniq :: Int
_tlOuniq = Int -> Int
rule124 Int
_hdIuniq in
let !(T_Nonterminals_vOut20 Nonterminals
_tlIoutput Int
_tlIuniq) = T_Nonterminals_s32 -> T_Nonterminals_v20
inv_Nonterminals_s32 T_Nonterminals_s32
_tlX32 (Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Int
-> T_Nonterminals_vIn20
T_Nonterminals_vIn20 Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaugmentsIn Int
_tlOuniq) in
let !_output :: Nonterminals
_output = Nonterminal -> Nonterminals -> Nonterminals
rule94 Nonterminal
_hdIoutput Nonterminals
_tlIoutput in
let _lhsOoutput :: Nonterminals
!_lhsOoutput :: Nonterminals
_lhsOoutput = Nonterminals -> Nonterminals
forall a. a -> a
rule95 Nonterminals
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule96 Int
_tlIuniq in
let !__result_ :: T_Nonterminals_vOut20
__result_ = Nonterminals -> Int -> T_Nonterminals_vOut20
T_Nonterminals_vOut20 Nonterminals
_lhsOoutput Int
_lhsOuniq
in T_Nonterminals_vOut20
__result_ )
in T_Nonterminals_v20 -> T_Nonterminals_s32
C_Nonterminals_s32 T_Nonterminals_v20
v20
{-# NOINLINE st45 #-}
st45 :: T_Nonterminal_s52 -> T_Nonterminals_s45 -> T_Nonterminals_s45
st45 = \ !T_Nonterminal_s52
_hdX52 !T_Nonterminals_s45
_tlX45 -> let
v35 :: T_Nonterminals_v35
v35 :: T_Nonterminals_v35
v35 = \ !(T_Nonterminals_vIn35 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Int
_lhsIuniq) -> (
let !_hdOaroundsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaroundsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule97 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn in
let !_hdOaugmentsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaugmentsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule98 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn in
let !_hdOuniq :: Int
_hdOuniq = Int -> Int
rule109 Int
_lhsIuniq in
let !_tlOaroundsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaroundsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule112 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn in
let !_tlOaugmentsIn :: Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaugmentsIn = Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule113 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn in
let !(T_Nonterminal_vOut46 Nonterminal
_hdIoutput Int
_hdIuniq) = T_Nonterminal_s52 -> T_Nonterminal_v46
inv_Nonterminal_s52 T_Nonterminal_s52
_hdX52 (Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Int
-> T_Nonterminal_vIn46
T_Nonterminal_vIn46 Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_hdOaugmentsIn Int
_hdOuniq) in
let !_tlOuniq :: Int
_tlOuniq = Int -> Int
rule124 Int
_hdIuniq in
let !(T_Nonterminals_vOut35 Nonterminals
_tlIoutput Int
_tlIuniq) = T_Nonterminals_s45 -> T_Nonterminals_v35
inv_Nonterminals_s45 T_Nonterminals_s45
_tlX45 (Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Int
-> T_Nonterminals_vIn35
T_Nonterminals_vIn35 Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_tlOaugmentsIn Int
_tlOuniq) in
let !_output :: Nonterminals
_output = Nonterminal -> Nonterminals -> Nonterminals
rule94 Nonterminal
_hdIoutput Nonterminals
_tlIoutput in
let _lhsOoutput :: Nonterminals
!_lhsOoutput :: Nonterminals
_lhsOoutput = Nonterminals -> Nonterminals
forall a. a -> a
rule95 Nonterminals
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule96 Int
_tlIuniq in
let !__result_ :: T_Nonterminals_vOut35
__result_ = Nonterminals -> Int -> T_Nonterminals_vOut35
T_Nonterminals_vOut35 Nonterminals
_lhsOoutput Int
_lhsOuniq
in T_Nonterminals_vOut35
__result_ )
in T_Nonterminals_v35 -> T_Nonterminals_s45
C_Nonterminals_s45 T_Nonterminals_v35
v35
{-# NOINLINE[1] rule90 #-}
rule90 :: Set Identifier -> Set Identifier -> Set Identifier
rule90 = \ ((!Set Identifier
_hdIcollect_nts) :: Set NontermIdent) ((!Set Identifier
_tlIcollect_nts) :: Set NontermIdent) ->
Set Identifier
_hdIcollect_nts Set Identifier -> Set Identifier -> Set Identifier
forall a. Ord a => Set a -> Set a -> Set a
`Set.union` Set Identifier
_tlIcollect_nts
{-# NOINLINE[1] rule91 #-}
rule91 :: Seq Error -> Seq Error -> Seq Error
rule91 = \ ((!Seq Error
_hdIerrors) :: Seq Error) ((!Seq Error
_tlIerrors) :: Seq Error) ->
Seq Error
_hdIerrors Seq Error -> Seq Error -> Seq Error
forall a. Seq a -> Seq a -> Seq a
Seq.>< Seq Error
_tlIerrors
{-# NOINLINE[1] rule92 #-}
rule92 :: Map Identifier Attributes
-> Map Identifier Attributes -> Map Identifier Attributes
rule92 = \ ((!Map Identifier Attributes
_hdIinhMap') :: Map Identifier Attributes) ((!Map Identifier Attributes
_tlIinhMap') :: Map Identifier Attributes) ->
Map Identifier Attributes
_hdIinhMap' Map Identifier Attributes
-> Map Identifier Attributes -> Map Identifier Attributes
forall k a. Ord k => Map k a -> Map k a -> Map k a
`Map.union` Map Identifier Attributes
_tlIinhMap'
{-# NOINLINE[1] rule93 #-}
rule93 :: Map Identifier Attributes
-> Map Identifier Attributes -> Map Identifier Attributes
rule93 = \ ((!Map Identifier Attributes
_hdIsynMap') :: Map Identifier Attributes) ((!Map Identifier Attributes
_tlIsynMap') :: Map Identifier Attributes) ->
Map Identifier Attributes
_hdIsynMap' Map Identifier Attributes
-> Map Identifier Attributes -> Map Identifier Attributes
forall k a. Ord k => Map k a -> Map k a -> Map k a
`Map.union` Map Identifier Attributes
_tlIsynMap'
{-# NOINLINE[1] rule94 #-}
rule94 :: Nonterminal -> Nonterminals -> Nonterminals
rule94 = \ ((!Nonterminal
_hdIoutput) :: Nonterminal) ((!Nonterminals
_tlIoutput) :: Nonterminals) ->
(:) Nonterminal
_hdIoutput Nonterminals
_tlIoutput
{-# NOINLINE[1] rule95 #-}
rule95 :: p -> p
rule95 = \ !p
_output ->
p
_output
{-# NOINLINE[1] rule96 #-}
rule96 :: Int -> Int
rule96 = \ ((!Int
_tlIuniq) :: Int) ->
Int
_tlIuniq
{-# NOINLINE[1] rule97 #-}
rule97 :: Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule97 = \ ((!Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->
Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn
{-# NOINLINE[1] rule98 #-}
rule98 :: Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule98 = \ ((!Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->
Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn
{-# NOINLINE[1] rule99 #-}
rule99 :: Map Identifier ConstructorType -> Map Identifier ConstructorType
rule99 = \ ((!Map Identifier ConstructorType
_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->
Map Identifier ConstructorType
_lhsIconstructorTypeMap
{-# NOINLINE[1] rule100 #-}
rule100 :: Bool -> Bool
rule100 = \ ((!Bool
_lhsIcr) :: Bool) ->
Bool
_lhsIcr
{-# NOINLINE[1] rule101 #-}
rule101 :: Map Identifier Attributes -> Map Identifier Attributes
rule101 = \ ((!Map Identifier Attributes
_lhsIinhMap) :: Map Identifier Attributes) ->
Map Identifier Attributes
_lhsIinhMap
{-# NOINLINE[1] rule102 #-}
rule102 :: AttrOrderMap -> AttrOrderMap
rule102 = \ ((!AttrOrderMap
_lhsImanualAttrOrderMap) :: AttrOrderMap) ->
AttrOrderMap
_lhsImanualAttrOrderMap
{-# NOINLINE[1] rule103 #-}
rule103 :: Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
rule103 = \ ((!Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn) :: Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) ->
Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn
{-# NOINLINE[1] rule105 #-}
rule105 :: Bool -> Bool
rule105 = \ ((!Bool
_lhsIo_rename) :: Bool) ->
Bool
_lhsIo_rename
{-# NOINLINE[1] rule106 #-}
rule106 :: Options -> Options
rule106 = \ ((!Options
_lhsIoptions) :: Options) ->
Options
_lhsIoptions
{-# NOINLINE[1] rule107 #-}
rule107 :: Map Identifier Attributes -> Map Identifier Attributes
rule107 = \ ((!Map Identifier Attributes
_lhsIsynMap) :: Map Identifier Attributes) ->
Map Identifier Attributes
_lhsIsynMap
{-# NOINLINE[1] rule108 #-}
rule108 :: [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule108 = \ ((![(Identifier, ComplexType)]
_lhsItypeSyns) :: TypeSyns) ->
[(Identifier, ComplexType)]
_lhsItypeSyns
{-# NOINLINE[1] rule109 #-}
rule109 :: Int -> Int
rule109 = \ ((!Int
_lhsIuniq) :: Int) ->
Int
_lhsIuniq
{-# NOINLINE[1] rule110 #-}
rule110 :: UseMap -> UseMap
rule110 = \ ((!UseMap
_lhsIuseMap) :: UseMap) ->
UseMap
_lhsIuseMap
{-# NOINLINE[1] rule111 #-}
rule111 :: Set Identifier -> Set Identifier
rule111 = \ ((!Set Identifier
_lhsIwrappers) :: Set NontermIdent) ->
Set Identifier
_lhsIwrappers
{-# NOINLINE[1] rule112 #-}
rule112 :: Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule112 = \ ((!Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->
Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn
{-# NOINLINE[1] rule113 #-}
rule113 :: Map Identifier (Map Identifier (Map Identifier [Expression]))
-> Map Identifier (Map Identifier (Map Identifier [Expression]))
rule113 = \ ((!Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn) :: Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->
Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn
{-# NOINLINE[1] rule114 #-}
rule114 :: Map Identifier ConstructorType -> Map Identifier ConstructorType
rule114 = \ ((!Map Identifier ConstructorType
_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->
Map Identifier ConstructorType
_lhsIconstructorTypeMap
{-# NOINLINE[1] rule115 #-}
rule115 :: Bool -> Bool
rule115 = \ ((!Bool
_lhsIcr) :: Bool) ->
Bool
_lhsIcr
{-# NOINLINE[1] rule116 #-}
rule116 :: Map Identifier Attributes -> Map Identifier Attributes
rule116 = \ ((!Map Identifier Attributes
_lhsIinhMap) :: Map Identifier Attributes) ->
Map Identifier Attributes
_lhsIinhMap
{-# NOINLINE[1] rule117 #-}
rule117 :: AttrOrderMap -> AttrOrderMap
rule117 = \ ((!AttrOrderMap
_lhsImanualAttrOrderMap) :: AttrOrderMap) ->
AttrOrderMap
_lhsImanualAttrOrderMap
{-# NOINLINE[1] rule118 #-}
rule118 :: Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
-> Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
rule118 = \ ((!Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn) :: Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))) ->
Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn
{-# NOINLINE[1] rule120 #-}
rule120 :: Bool -> Bool
rule120 = \ ((!Bool
_lhsIo_rename) :: Bool) ->
Bool
_lhsIo_rename
{-# NOINLINE[1] rule121 #-}
rule121 :: Options -> Options
rule121 = \ ((!Options
_lhsIoptions) :: Options) ->
Options
_lhsIoptions
{-# NOINLINE[1] rule122 #-}
rule122 :: Map Identifier Attributes -> Map Identifier Attributes
rule122 = \ ((!Map Identifier Attributes
_lhsIsynMap) :: Map Identifier Attributes) ->
Map Identifier Attributes
_lhsIsynMap
{-# NOINLINE[1] rule123 #-}
rule123 :: [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule123 = \ ((![(Identifier, ComplexType)]
_lhsItypeSyns) :: TypeSyns) ->
[(Identifier, ComplexType)]
_lhsItypeSyns
{-# NOINLINE[1] rule124 #-}
rule124 :: Int -> Int
rule124 = \ ((!Int
_hdIuniq) :: Int) ->
Int
_hdIuniq
{-# NOINLINE[1] rule125 #-}
rule125 :: UseMap -> UseMap
rule125 = \ ((!UseMap
_lhsIuseMap) :: UseMap) ->
UseMap
_lhsIuseMap
{-# NOINLINE[1] rule126 #-}
rule126 :: Set Identifier -> Set Identifier
rule126 = \ ((!Set Identifier
_lhsIwrappers) :: Set NontermIdent) ->
Set Identifier
_lhsIwrappers
{-# NOINLINE sem_Nonterminals_Nil #-}
sem_Nonterminals_Nil :: T_Nonterminals
sem_Nonterminals_Nil :: T_Nonterminals
sem_Nonterminals_Nil = Identity T_Nonterminals_s8 -> T_Nonterminals
T_Nonterminals (T_Nonterminals_s8 -> Identity T_Nonterminals_s8
forall (m :: * -> *) a. Monad m => a -> m a
return T_Nonterminals_s8
st8) where
{-# NOINLINE st8 #-}
!st8 :: T_Nonterminals_s8
st8 = let
k8 :: K_Nonterminals_s8 t -> t
k8 :: K_Nonterminals_s8 t -> t
k8 K_Nonterminals_s8 t
K_Nonterminals_v4 = t
T_Nonterminals_v4
v4
k8 K_Nonterminals_s8 t
K_Nonterminals_v15 = t
T_Nonterminals_v15
v15
k8 K_Nonterminals_s8 t
K_Nonterminals_v19 = t
T_Nonterminals_v19
v19
v4 :: T_Nonterminals_v4
v4 :: T_Nonterminals_v4
v4 = \ !(T_Nonterminals_vIn4 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Set Identifier
_lhsInonterminals Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let _lhsOcollect_nts :: Set NontermIdent
!_lhsOcollect_nts :: Set Identifier
_lhsOcollect_nts = () -> Set Identifier
forall a. () -> Set a
rule127 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule128 () in
let _lhsOinhMap' :: Map Identifier Attributes
!_lhsOinhMap' :: Map Identifier Attributes
_lhsOinhMap' = () -> Map Identifier Attributes
forall k a. () -> Map k a
rule129 () in
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule131 () in
let _lhsOsynMap' :: Map Identifier Attributes
!_lhsOsynMap' :: Map Identifier Attributes
_lhsOsynMap' = () -> Map Identifier Attributes
forall k a. () -> Map k a
rule130 () in
let _lhsOoutput :: Nonterminals
!_lhsOoutput :: Nonterminals
_lhsOoutput = Nonterminals -> Nonterminals
forall a. a -> a
rule132 Nonterminals
forall a. [a]
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule133 Int
_lhsIuniq in
let !__result_ :: T_Nonterminals_vOut4
__result_ = Set Identifier
-> Seq Error
-> Map Identifier Attributes
-> Nonterminals
-> Map Identifier Attributes
-> Int
-> T_Nonterminals_vOut4
T_Nonterminals_vOut4 Set Identifier
_lhsOcollect_nts Seq Error
_lhsOerrors Map Identifier Attributes
_lhsOinhMap' Nonterminals
_lhsOoutput Map Identifier Attributes
_lhsOsynMap' Int
_lhsOuniq
in T_Nonterminals_vOut4
__result_ )
v15 :: T_Nonterminals_v15
v15 :: T_Nonterminals_v15
v15 = \ !(T_Nonterminals_vIn15
T_Nonterminals_vIn15 ) -> (
let _lhsOinhMap' :: Map Identifier Attributes
!_lhsOinhMap' :: Map Identifier Attributes
_lhsOinhMap' = () -> Map Identifier Attributes
forall k a. () -> Map k a
rule129 () in
let _lhsOsynMap' :: Map Identifier Attributes
!_lhsOsynMap' :: Map Identifier Attributes
_lhsOsynMap' = () -> Map Identifier Attributes
forall k a. () -> Map k a
rule130 () in
let !__st_ :: T_Nonterminals_s28
__st_ = () -> T_Nonterminals_s28
st28 ()
!__result_ :: T_Nonterminals_vOut15
__result_ = Map Identifier Attributes
-> Map Identifier Attributes
-> T_Nonterminals_s28
-> T_Nonterminals_vOut15
T_Nonterminals_vOut15 Map Identifier Attributes
_lhsOinhMap' Map Identifier Attributes
_lhsOsynMap' T_Nonterminals_s28
__st_
in T_Nonterminals_vOut15
__result_ )
v19 :: T_Nonterminals_v19
v19 :: T_Nonterminals_v19
v19 = \ !(T_Nonterminals_vIn19 Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let _lhsOcollect_nts :: Set NontermIdent
!_lhsOcollect_nts :: Set Identifier
_lhsOcollect_nts = () -> Set Identifier
forall a. () -> Set a
rule127 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule128 () in
let _lhsOinhMap' :: Map Identifier Attributes
!_lhsOinhMap' :: Map Identifier Attributes
_lhsOinhMap' = () -> Map Identifier Attributes
forall k a. () -> Map k a
rule129 () in
let _lhsOsynMap' :: Map Identifier Attributes
!_lhsOsynMap' :: Map Identifier Attributes
_lhsOsynMap' = () -> Map Identifier Attributes
forall k a. () -> Map k a
rule130 () in
let !__st_ :: T_Nonterminals_s32
__st_ = () -> T_Nonterminals_s32
st32 ()
!__result_ :: T_Nonterminals_vOut19
__result_ = Set Identifier
-> Seq Error
-> Map Identifier Attributes
-> Map Identifier Attributes
-> T_Nonterminals_s32
-> T_Nonterminals_vOut19
T_Nonterminals_vOut19 Set Identifier
_lhsOcollect_nts Seq Error
_lhsOerrors Map Identifier Attributes
_lhsOinhMap' Map Identifier Attributes
_lhsOsynMap' T_Nonterminals_s32
__st_
in T_Nonterminals_vOut19
__result_ )
in (forall t. K_Nonterminals_s8 t -> t) -> T_Nonterminals_s8
C_Nonterminals_s8 forall t. K_Nonterminals_s8 t -> t
k8
{-# NOINLINE st28 #-}
st28 :: () -> T_Nonterminals_s28
st28 = \ (()
_ :: ()) -> let
k28 :: K_Nonterminals_s28 t -> t
k28 :: K_Nonterminals_s28 t -> t
k28 K_Nonterminals_s28 t
K_Nonterminals_v16 = t
T_Nonterminals_v16
v16
k28 K_Nonterminals_s28 t
K_Nonterminals_v34 = t
T_Nonterminals_v34
v34
v16 :: T_Nonterminals_v16
v16 :: T_Nonterminals_v16
v16 = \ !(T_Nonterminals_vIn16 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule128 () in
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule131 () in
let _lhsOoutput :: Nonterminals
!_lhsOoutput :: Nonterminals
_lhsOoutput = Nonterminals -> Nonterminals
forall a. a -> a
rule132 Nonterminals
forall a. [a]
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule133 Int
_lhsIuniq in
let !__result_ :: T_Nonterminals_vOut16
__result_ = Seq Error -> Nonterminals -> Int -> T_Nonterminals_vOut16
T_Nonterminals_vOut16 Seq Error
_lhsOerrors Nonterminals
_lhsOoutput Int
_lhsOuniq
in T_Nonterminals_vOut16
__result_ )
v34 :: T_Nonterminals_v34
v34 :: T_Nonterminals_v34
v34 = \ !(T_Nonterminals_vIn34 Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier
(Map
Identifier (Map Identifier (Identifier, [Identifier], Expression)))
_lhsImergesIn Bool
_lhsIo_rename Options
_lhsIoptions Map Identifier Attributes
_lhsIsynMap [(Identifier, ComplexType)]
_lhsItypeSyns UseMap
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule128 () in
let !__st_ :: T_Nonterminals_s45
__st_ = () -> T_Nonterminals_s45
st45 ()
!__result_ :: T_Nonterminals_vOut34
__result_ = Seq Error -> T_Nonterminals_s45 -> T_Nonterminals_vOut34
T_Nonterminals_vOut34 Seq Error
_lhsOerrors T_Nonterminals_s45
__st_
in T_Nonterminals_vOut34
__result_ )
in (forall t. K_Nonterminals_s28 t -> t) -> T_Nonterminals_s28
C_Nonterminals_s28 forall t. K_Nonterminals_s28 t -> t
k28
{-# NOINLINE st32 #-}
st32 :: () -> T_Nonterminals_s32
st32 = \ (()
_ :: ()) -> let
v20 :: T_Nonterminals_v20
v20 :: T_Nonterminals_v20
v20 = \ !(T_Nonterminals_vIn20 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Int
_lhsIuniq) -> (
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule131 () in
let _lhsOoutput :: Nonterminals
!_lhsOoutput :: Nonterminals
_lhsOoutput = Nonterminals -> Nonterminals
forall a. a -> a
rule132 Nonterminals
forall a. [a]
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule133 Int
_lhsIuniq in
let !__result_ :: T_Nonterminals_vOut20
__result_ = Nonterminals -> Int -> T_Nonterminals_vOut20
T_Nonterminals_vOut20 Nonterminals
_lhsOoutput Int
_lhsOuniq
in T_Nonterminals_vOut20
__result_ )
in T_Nonterminals_v20 -> T_Nonterminals_s32
C_Nonterminals_s32 T_Nonterminals_v20
v20
{-# NOINLINE st45 #-}
st45 :: () -> T_Nonterminals_s45
st45 = \ (()
_ :: ()) -> let
v35 :: T_Nonterminals_v35
v35 :: T_Nonterminals_v35
v35 = \ !(T_Nonterminals_vIn35 Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaroundsIn Map Identifier (Map Identifier (Map Identifier [Expression]))
_lhsIaugmentsIn Int
_lhsIuniq) -> (
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule131 () in
let _lhsOoutput :: Nonterminals
!_lhsOoutput :: Nonterminals
_lhsOoutput = Nonterminals -> Nonterminals
forall a. a -> a
rule132 Nonterminals
forall a. [a]
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule133 Int
_lhsIuniq in
let !__result_ :: T_Nonterminals_vOut35
__result_ = Nonterminals -> Int -> T_Nonterminals_vOut35
T_Nonterminals_vOut35 Nonterminals
_lhsOoutput Int
_lhsOuniq
in T_Nonterminals_vOut35
__result_ )
in T_Nonterminals_v35 -> T_Nonterminals_s45
C_Nonterminals_s45 T_Nonterminals_v35
v35
{-# NOINLINE[1] rule127 #-}
rule127 :: () -> Set a
rule127 = \ (()
_ :: ()) ->
Set a
forall a. Set a
Set.empty
{-# NOINLINE[1] rule128 #-}
rule128 :: () -> Seq a
rule128 = \ (()
_ :: ()) ->
Seq a
forall a. Seq a
Seq.empty
{-# NOINLINE[1] rule129 #-}
rule129 :: () -> Map k a
rule129 = \ (()
_ :: ()) ->
Map k a
forall k a. Map k a
Map.empty
{-# NOINLINE[1] rule130 #-}
rule130 :: () -> Map k a
rule130 = \ (()
_ :: ()) ->
Map k a
forall k a. Map k a
Map.empty
{-# NOINLINE[1] rule131 #-}
rule131 :: () -> [a]
rule131 = \ (()
_ :: ()) ->
[]
{-# NOINLINE[1] rule132 #-}
rule132 :: p -> p
rule132 = \ !p
_output ->
p
_output
{-# NOINLINE[1] rule133 #-}
rule133 :: Int -> Int
rule133 = \ ((!Int
_lhsIuniq) :: Int) ->
Int
_lhsIuniq
data Inh_Pattern = Inh_Pattern { Inh_Pattern -> Identifier
con_Inh_Pattern :: !(ConstructorIdent), Inh_Pattern -> Identifier
nt_Inh_Pattern :: !(NontermIdent) }
data Syn_Pattern = Syn_Pattern { Syn_Pattern -> Bool
containsVars_Syn_Pattern :: !(Bool), Syn_Pattern -> Pattern
copy_Syn_Pattern :: !(Pattern), Syn_Pattern -> Set (Identifier, Identifier)
definedAttrs_Syn_Pattern :: !(Set (Identifier,Identifier)), Syn_Pattern -> Seq Error
errors_Syn_Pattern :: !(Seq Error), Syn_Pattern -> Set Identifier
locals_Syn_Pattern :: !(Set Identifier), Syn_Pattern -> Pattern
output_Syn_Pattern :: !(Pattern) }
{-# INLINABLE wrap_Pattern #-}
wrap_Pattern :: T_Pattern -> Inh_Pattern -> (Syn_Pattern )
wrap_Pattern :: T_Pattern -> Inh_Pattern -> Syn_Pattern
wrap_Pattern !(T_Pattern Identity T_Pattern_s10
act) !(Inh_Pattern Identifier
_lhsIcon Identifier
_lhsInt) =
Identity Syn_Pattern -> Syn_Pattern
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_Pattern_s10
sem <- Identity T_Pattern_s10
act
let arg5 :: T_Pattern_vIn5
arg5 = Identifier -> Identifier -> T_Pattern_vIn5
T_Pattern_vIn5 Identifier
_lhsIcon Identifier
_lhsInt
!(T_Pattern_vOut5 Bool
_lhsOcontainsVars Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput) <- T_Pattern_vOut5 -> Identity T_Pattern_vOut5
forall (m :: * -> *) a. Monad m => a -> m a
return (T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v5 -> T_Pattern_v5
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
sem K_Pattern_s10 T_Pattern_v5
K_Pattern_v5 T_Pattern_vIn5
arg5)
Syn_Pattern -> Identity Syn_Pattern
forall (m :: * -> *) a. Monad m => a -> m a
return (Bool
-> Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> Syn_Pattern
Syn_Pattern Bool
_lhsOcontainsVars Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput)
)
{-# NOINLINE sem_Pattern #-}
sem_Pattern :: Pattern -> T_Pattern
sem_Pattern :: Pattern -> T_Pattern
sem_Pattern ( Constr !Identifier
name_ Patterns
pats_ ) = Identifier -> T_Patterns -> T_Pattern
sem_Pattern_Constr Identifier
name_ ( Patterns -> T_Patterns
sem_Patterns Patterns
pats_ )
sem_Pattern ( Product !Pos
pos_ Patterns
pats_ ) = Pos -> T_Patterns -> T_Pattern
sem_Pattern_Product Pos
pos_ ( Patterns -> T_Patterns
sem_Patterns Patterns
pats_ )
sem_Pattern ( Alias !Identifier
field_ !Identifier
attr_ Pattern
pat_ ) = Identifier -> Identifier -> T_Pattern -> T_Pattern
sem_Pattern_Alias Identifier
field_ Identifier
attr_ ( Pattern -> T_Pattern
sem_Pattern Pattern
pat_ )
sem_Pattern ( Irrefutable Pattern
pat_ ) = T_Pattern -> T_Pattern
sem_Pattern_Irrefutable ( Pattern -> T_Pattern
sem_Pattern Pattern
pat_ )
sem_Pattern ( Underscore !Pos
pos_ ) = Pos -> T_Pattern
sem_Pattern_Underscore Pos
pos_
newtype T_Pattern = T_Pattern {
T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern :: Identity (T_Pattern_s10 )
}
data T_Pattern_s10 where C_Pattern_s10 :: {
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 :: !(forall t. K_Pattern_s10 t -> t)
} -> T_Pattern_s10
data T_Pattern_s11 = C_Pattern_s11
data T_Pattern_s35 = C_Pattern_s35
data T_Pattern_s36 = C_Pattern_s36
data T_Pattern_s40 = C_Pattern_s40
data T_Pattern_s50 = C_Pattern_s50
data T_Pattern_s55 where C_Pattern_s55 :: {
T_Pattern_s55 -> forall t. K_Pattern_s55 t -> t
inv_Pattern_s55 :: !(forall t. K_Pattern_s55 t -> t)
} -> T_Pattern_s55
data K_Pattern_s10 k where
K_Pattern_v5 :: K_Pattern_s10 (T_Pattern_v5 )
K_Pattern_v22 :: K_Pattern_s10 (T_Pattern_v22 )
K_Pattern_v23 :: K_Pattern_s10 (T_Pattern_v23 )
K_Pattern_v28 :: K_Pattern_s10 (T_Pattern_v28 )
K_Pattern_v42 :: K_Pattern_s10 (T_Pattern_v42 )
K_Pattern_v50 :: K_Pattern_s10 (T_Pattern_v50 )
data K_Pattern_s55 k where
K_Pattern_v51 :: K_Pattern_s55 (T_Pattern_v51 )
K_Pattern_v56 :: K_Pattern_s55 (T_Pattern_v56 )
type T_Pattern_v5 = (T_Pattern_vIn5 ) -> (T_Pattern_vOut5 )
data T_Pattern_vIn5 = T_Pattern_vIn5 !(ConstructorIdent) !(NontermIdent)
data T_Pattern_vOut5 = T_Pattern_vOut5 !(Bool) !(Pattern) !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(Pattern)
type T_Pattern_v22 = (T_Pattern_vIn22 ) -> (T_Pattern_vOut22 )
data T_Pattern_vIn22 = T_Pattern_vIn22
data T_Pattern_vOut22 = T_Pattern_vOut22 !(Pattern) !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(Pattern)
type T_Pattern_v23 = (T_Pattern_vIn23 ) -> (T_Pattern_vOut23 )
data T_Pattern_vIn23 = T_Pattern_vIn23
data T_Pattern_vOut23 = T_Pattern_vOut23 !(Bool) !(Pattern) !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(Pattern)
type T_Pattern_v28 = (T_Pattern_vIn28 ) -> (T_Pattern_vOut28 )
data T_Pattern_vIn28 = T_Pattern_vIn28
data T_Pattern_vOut28 = T_Pattern_vOut28 !(Bool) !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(Pattern)
type T_Pattern_v42 = (T_Pattern_vIn42 ) -> (T_Pattern_vOut42 )
data T_Pattern_vIn42 = T_Pattern_vIn42
data T_Pattern_vOut42 = T_Pattern_vOut42 !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(Pattern)
type T_Pattern_v50 = (T_Pattern_vIn50 ) -> (T_Pattern_vOut50 )
data T_Pattern_vIn50 = T_Pattern_vIn50
data T_Pattern_vOut50 = T_Pattern_vOut50 !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(T_Pattern_s55 )
type T_Pattern_v51 = (T_Pattern_vIn51 ) -> (T_Pattern_vOut51 )
data T_Pattern_vIn51 = T_Pattern_vIn51
data T_Pattern_vOut51 = T_Pattern_vOut51 !(Bool) !(Pattern)
type T_Pattern_v56 = (T_Pattern_vIn56 ) -> (T_Pattern_vOut56 )
data T_Pattern_vIn56 = T_Pattern_vIn56
data T_Pattern_vOut56 = T_Pattern_vOut56 !(Pattern)
{-# NOINLINE sem_Pattern_Constr #-}
sem_Pattern_Constr :: (ConstructorIdent) -> T_Patterns -> T_Pattern
sem_Pattern_Constr :: Identifier -> T_Patterns -> T_Pattern
sem_Pattern_Constr !Identifier
arg_name_ T_Patterns
arg_pats_ = Identity T_Pattern_s10 -> T_Pattern
T_Pattern (T_Pattern_s10 -> Identity T_Pattern_s10
forall (m :: * -> *) a. Monad m => a -> m a
return T_Pattern_s10
st10) where
{-# NOINLINE st10 #-}
!st10 :: T_Pattern_s10
st10 = let
k10 :: K_Pattern_s10 t -> t
k10 :: K_Pattern_s10 t -> t
k10 K_Pattern_s10 t
K_Pattern_v5 = t
T_Pattern_v5
v5
k10 K_Pattern_s10 t
K_Pattern_v22 = t
T_Pattern_v22
v22
k10 K_Pattern_s10 t
K_Pattern_v23 = t
T_Pattern_v23
v23
k10 K_Pattern_s10 t
K_Pattern_v28 = t
T_Pattern_v28
v28
k10 K_Pattern_s10 t
K_Pattern_v42 = t
T_Pattern_v42
v42
k10 K_Pattern_s10 t
K_Pattern_v50 = t
T_Pattern_v50
v50
v5 :: T_Pattern_v5
v5 :: T_Pattern_v5
v5 = \ !(T_Pattern_vIn5 Identifier
_lhsIcon Identifier
_lhsInt) -> (
let !_patsX12 :: T_Patterns_s12
_patsX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_pats_)) in
let !(T_Patterns_vOut21 Bool
_patsIcontainsVars Patterns
_patsIcopy Set (Identifier, Identifier)
_patsIdefinedAttrs Seq Error
_patsIerrors Set Identifier
_patsIlocals Patterns
_patsIoutput) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v21 -> T_Patterns_v21
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_patsX12 K_Patterns_s12 T_Patterns_v21
K_Patterns_v21 (T_Patterns_vIn21
T_Patterns_vIn21 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool
rule134 Bool
_patsIcontainsVars in
let !_copy :: Pattern
_copy = Patterns -> Identifier -> Pattern
rule138 Patterns
_patsIcopy Identifier
arg_name_ in
let _lhsOcopy :: Pattern
!_lhsOcopy :: Pattern
_lhsOcopy = Pattern -> Pattern
forall a. a -> a
rule140 Pattern
_copy in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule135 Set (Identifier, Identifier)
_patsIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule136 Seq Error
_patsIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule137 Set Identifier
_patsIlocals in
let !_output :: Pattern
_output = Patterns -> Identifier -> Pattern
rule139 Patterns
_patsIoutput Identifier
arg_name_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule141 Pattern
_output in
let !__result_ :: T_Pattern_vOut5
__result_ = Bool
-> Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut5
T_Pattern_vOut5 Bool
_lhsOcontainsVars Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut5
__result_ )
v22 :: T_Pattern_v22
v22 :: T_Pattern_v22
v22 = \ !(T_Pattern_vIn22
T_Pattern_vIn22 ) -> (
let !_patsX12 :: T_Patterns_s12
_patsX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_pats_)) in
let !(T_Patterns_vOut38 Patterns
_patsIcopy Set (Identifier, Identifier)
_patsIdefinedAttrs Seq Error
_patsIerrors Set Identifier
_patsIlocals Patterns
_patsIoutput) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v38 -> T_Patterns_v38
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_patsX12 K_Patterns_s12 T_Patterns_v38
K_Patterns_v38 (T_Patterns_vIn38
T_Patterns_vIn38 ) in
let !_copy :: Pattern
_copy = Patterns -> Identifier -> Pattern
rule138 Patterns
_patsIcopy Identifier
arg_name_ in
let _lhsOcopy :: Pattern
!_lhsOcopy :: Pattern
_lhsOcopy = Pattern -> Pattern
forall a. a -> a
rule140 Pattern
_copy in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule135 Set (Identifier, Identifier)
_patsIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule136 Seq Error
_patsIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule137 Set Identifier
_patsIlocals in
let !_output :: Pattern
_output = Patterns -> Identifier -> Pattern
rule139 Patterns
_patsIoutput Identifier
arg_name_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule141 Pattern
_output in
let !__result_ :: T_Pattern_vOut22
__result_ = Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut22
T_Pattern_vOut22 Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut22
__result_ )
v23 :: T_Pattern_v23
v23 :: T_Pattern_v23
v23 = \ !(T_Pattern_vIn23
T_Pattern_vIn23 ) -> (
let !_patsX12 :: T_Patterns_s12
_patsX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_pats_)) in
let !(T_Patterns_vOut21 Bool
_patsIcontainsVars Patterns
_patsIcopy Set (Identifier, Identifier)
_patsIdefinedAttrs Seq Error
_patsIerrors Set Identifier
_patsIlocals Patterns
_patsIoutput) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v21 -> T_Patterns_v21
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_patsX12 K_Patterns_s12 T_Patterns_v21
K_Patterns_v21 (T_Patterns_vIn21
T_Patterns_vIn21 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool
rule134 Bool
_patsIcontainsVars in
let !_copy :: Pattern
_copy = Patterns -> Identifier -> Pattern
rule138 Patterns
_patsIcopy Identifier
arg_name_ in
let _lhsOcopy :: Pattern
!_lhsOcopy :: Pattern
_lhsOcopy = Pattern -> Pattern
forall a. a -> a
rule140 Pattern
_copy in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule135 Set (Identifier, Identifier)
_patsIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule136 Seq Error
_patsIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule137 Set Identifier
_patsIlocals in
let !_output :: Pattern
_output = Patterns -> Identifier -> Pattern
rule139 Patterns
_patsIoutput Identifier
arg_name_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule141 Pattern
_output in
let !__result_ :: T_Pattern_vOut23
__result_ = Bool
-> Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut23
T_Pattern_vOut23 Bool
_lhsOcontainsVars Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut23
__result_ )
v28 :: T_Pattern_v28
v28 :: T_Pattern_v28
v28 = \ !(T_Pattern_vIn28
T_Pattern_vIn28 ) -> (
let !_patsX12 :: T_Patterns_s12
_patsX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_pats_)) in
let !(T_Patterns_vOut41 Bool
_patsIcontainsVars Set (Identifier, Identifier)
_patsIdefinedAttrs Seq Error
_patsIerrors Set Identifier
_patsIlocals Patterns
_patsIoutput) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v41 -> T_Patterns_v41
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_patsX12 K_Patterns_s12 T_Patterns_v41
K_Patterns_v41 (T_Patterns_vIn41
T_Patterns_vIn41 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool
rule134 Bool
_patsIcontainsVars in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule135 Set (Identifier, Identifier)
_patsIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule136 Seq Error
_patsIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule137 Set Identifier
_patsIlocals in
let !_output :: Pattern
_output = Patterns -> Identifier -> Pattern
rule139 Patterns
_patsIoutput Identifier
arg_name_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule141 Pattern
_output in
let !__result_ :: T_Pattern_vOut28
__result_ = Bool
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut28
T_Pattern_vOut28 Bool
_lhsOcontainsVars Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut28
__result_ )
v42 :: T_Pattern_v42
v42 :: T_Pattern_v42
v42 = \ !(T_Pattern_vIn42
T_Pattern_vIn42 ) -> (
let !_patsX12 :: T_Patterns_s12
_patsX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_pats_)) in
let !(T_Patterns_vOut49 Set (Identifier, Identifier)
_patsIdefinedAttrs Seq Error
_patsIerrors Set Identifier
_patsIlocals Patterns
_patsIoutput) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v49 -> T_Patterns_v49
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_patsX12 K_Patterns_s12 T_Patterns_v49
K_Patterns_v49 (T_Patterns_vIn49
T_Patterns_vIn49 ) in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule135 Set (Identifier, Identifier)
_patsIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule136 Seq Error
_patsIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule137 Set Identifier
_patsIlocals in
let !_output :: Pattern
_output = Patterns -> Identifier -> Pattern
rule139 Patterns
_patsIoutput Identifier
arg_name_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule141 Pattern
_output in
let !__result_ :: T_Pattern_vOut42
__result_ = Set (Identifier, Identifier)
-> Seq Error -> Set Identifier -> Pattern -> T_Pattern_vOut42
T_Pattern_vOut42 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut42
__result_ )
v50 :: T_Pattern_v50
v50 :: T_Pattern_v50
v50 = \ !(T_Pattern_vIn50
T_Pattern_vIn50 ) -> (
let !_patsX12 :: T_Patterns_s12
_patsX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_pats_)) in
let !(T_Patterns_vOut54 Set (Identifier, Identifier)
_patsIdefinedAttrs Seq Error
_patsIerrors Set Identifier
_patsIlocals T_Patterns_s57
_patsX57) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v54 -> T_Patterns_v54
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_patsX12 K_Patterns_s12 T_Patterns_v54
K_Patterns_v54 (T_Patterns_vIn54
T_Patterns_vIn54 ) in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule135 Set (Identifier, Identifier)
_patsIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule136 Seq Error
_patsIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule137 Set Identifier
_patsIlocals in
let !__st_ :: T_Pattern_s55
__st_ = T_Patterns_s57 -> T_Pattern_s55
st55 T_Patterns_s57
_patsX57
!__result_ :: T_Pattern_vOut50
__result_ = Set (Identifier, Identifier)
-> Seq Error -> Set Identifier -> T_Pattern_s55 -> T_Pattern_vOut50
T_Pattern_vOut50 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals T_Pattern_s55
__st_
in T_Pattern_vOut50
__result_ )
in (forall t. K_Pattern_s10 t -> t) -> T_Pattern_s10
C_Pattern_s10 forall t. K_Pattern_s10 t -> t
k10
{-# NOINLINE st55 #-}
st55 :: T_Patterns_s57 -> T_Pattern_s55
st55 = \ !T_Patterns_s57
_patsX57 -> let
k55 :: K_Pattern_s55 t -> t
k55 :: K_Pattern_s55 t -> t
k55 K_Pattern_s55 t
K_Pattern_v51 = t
T_Pattern_v51
v51
k55 K_Pattern_s55 t
K_Pattern_v56 = t
T_Pattern_v56
v56
v51 :: T_Pattern_v51
v51 :: T_Pattern_v51
v51 = \ !(T_Pattern_vIn51
T_Pattern_vIn51 ) -> (
let !(T_Patterns_vOut55 Bool
_patsIcontainsVars Patterns
_patsIoutput) = T_Patterns_s57 -> K_Patterns_s57 T_Patterns_v55 -> T_Patterns_v55
T_Patterns_s57 -> forall t. K_Patterns_s57 t -> t
inv_Patterns_s57 T_Patterns_s57
_patsX57 K_Patterns_s57 T_Patterns_v55
K_Patterns_v55 (T_Patterns_vIn55
T_Patterns_vIn55 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool
rule134 Bool
_patsIcontainsVars in
let !_output :: Pattern
_output = Patterns -> Identifier -> Pattern
rule139 Patterns
_patsIoutput Identifier
arg_name_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule141 Pattern
_output in
let !__result_ :: T_Pattern_vOut51
__result_ = Bool -> Pattern -> T_Pattern_vOut51
T_Pattern_vOut51 Bool
_lhsOcontainsVars Pattern
_lhsOoutput
in T_Pattern_vOut51
__result_ )
v56 :: T_Pattern_v56
v56 :: T_Pattern_v56
v56 = \ !(T_Pattern_vIn56
T_Pattern_vIn56 ) -> (
let !(T_Patterns_vOut57 Patterns
_patsIoutput) = T_Patterns_s57 -> K_Patterns_s57 T_Patterns_v57 -> T_Patterns_v57
T_Patterns_s57 -> forall t. K_Patterns_s57 t -> t
inv_Patterns_s57 T_Patterns_s57
_patsX57 K_Patterns_s57 T_Patterns_v57
K_Patterns_v57 (T_Patterns_vIn57
T_Patterns_vIn57 ) in
let !_output :: Pattern
_output = Patterns -> Identifier -> Pattern
rule139 Patterns
_patsIoutput Identifier
arg_name_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule141 Pattern
_output in
let !__result_ :: T_Pattern_vOut56
__result_ = Pattern -> T_Pattern_vOut56
T_Pattern_vOut56 Pattern
_lhsOoutput
in T_Pattern_vOut56
__result_ )
in (forall t. K_Pattern_s55 t -> t) -> T_Pattern_s55
C_Pattern_s55 forall t. K_Pattern_s55 t -> t
k55
{-# NOINLINE[1] rule134 #-}
rule134 :: Bool -> Bool
rule134 = \ ((!Bool
_patsIcontainsVars) :: Bool) ->
Bool
_patsIcontainsVars
{-# NOINLINE[1] rule135 #-}
rule135 :: Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule135 = \ ((!Set (Identifier, Identifier)
_patsIdefinedAttrs) :: Set (Identifier,Identifier)) ->
Set (Identifier, Identifier)
_patsIdefinedAttrs
{-# NOINLINE[1] rule136 #-}
rule136 :: Seq Error -> Seq Error
rule136 = \ ((!Seq Error
_patsIerrors) :: Seq Error) ->
Seq Error
_patsIerrors
{-# NOINLINE[1] rule137 #-}
rule137 :: Set Identifier -> Set Identifier
rule137 = \ ((!Set Identifier
_patsIlocals) :: Set Identifier) ->
Set Identifier
_patsIlocals
{-# NOINLINE[1] rule138 #-}
rule138 :: Patterns -> Identifier -> Pattern
rule138 = \ ((!Patterns
_patsIcopy) :: Patterns) !Identifier
name_ ->
Identifier -> Patterns -> Pattern
Constr Identifier
name_ Patterns
_patsIcopy
{-# NOINLINE[1] rule139 #-}
rule139 :: Patterns -> Identifier -> Pattern
rule139 = \ ((!Patterns
_patsIoutput) :: Patterns) !Identifier
name_ ->
Identifier -> Patterns -> Pattern
Constr Identifier
name_ Patterns
_patsIoutput
{-# NOINLINE[1] rule140 #-}
rule140 :: p -> p
rule140 = \ !p
_copy ->
p
_copy
{-# NOINLINE[1] rule141 #-}
rule141 :: p -> p
rule141 = \ !p
_output ->
p
_output
{-# NOINLINE sem_Pattern_Product #-}
sem_Pattern_Product :: (Pos) -> T_Patterns -> T_Pattern
sem_Pattern_Product :: Pos -> T_Patterns -> T_Pattern
sem_Pattern_Product !Pos
arg_pos_ T_Patterns
arg_pats_ = Identity T_Pattern_s10 -> T_Pattern
T_Pattern (T_Pattern_s10 -> Identity T_Pattern_s10
forall (m :: * -> *) a. Monad m => a -> m a
return T_Pattern_s10
st10) where
{-# NOINLINE st10 #-}
!st10 :: T_Pattern_s10
st10 = let
k10 :: K_Pattern_s10 t -> t
k10 :: K_Pattern_s10 t -> t
k10 K_Pattern_s10 t
K_Pattern_v5 = t
T_Pattern_v5
v5
k10 K_Pattern_s10 t
K_Pattern_v22 = t
T_Pattern_v22
v22
k10 K_Pattern_s10 t
K_Pattern_v23 = t
T_Pattern_v23
v23
k10 K_Pattern_s10 t
K_Pattern_v28 = t
T_Pattern_v28
v28
k10 K_Pattern_s10 t
K_Pattern_v42 = t
T_Pattern_v42
v42
k10 K_Pattern_s10 t
K_Pattern_v50 = t
T_Pattern_v50
v50
v5 :: T_Pattern_v5
v5 :: T_Pattern_v5
v5 = \ !(T_Pattern_vIn5 Identifier
_lhsIcon Identifier
_lhsInt) -> (
let !_patsX12 :: T_Patterns_s12
_patsX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_pats_)) in
let !(T_Patterns_vOut21 Bool
_patsIcontainsVars Patterns
_patsIcopy Set (Identifier, Identifier)
_patsIdefinedAttrs Seq Error
_patsIerrors Set Identifier
_patsIlocals Patterns
_patsIoutput) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v21 -> T_Patterns_v21
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_patsX12 K_Patterns_s12 T_Patterns_v21
K_Patterns_v21 (T_Patterns_vIn21
T_Patterns_vIn21 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool
rule144 Bool
_patsIcontainsVars in
let !_copy :: Pattern
_copy = Patterns -> Pos -> Pattern
rule148 Patterns
_patsIcopy Pos
arg_pos_ in
let _lhsOcopy :: Pattern
!_lhsOcopy :: Pattern
_lhsOcopy = Pattern -> Pattern
forall a. a -> a
rule150 Pattern
_copy in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule145 Set (Identifier, Identifier)
_patsIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule146 Seq Error
_patsIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule147 Set Identifier
_patsIlocals in
let !_output :: Pattern
_output = Patterns -> Pos -> Pattern
rule149 Patterns
_patsIoutput Pos
arg_pos_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule151 Pattern
_output in
let !__result_ :: T_Pattern_vOut5
__result_ = Bool
-> Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut5
T_Pattern_vOut5 Bool
_lhsOcontainsVars Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut5
__result_ )
v22 :: T_Pattern_v22
v22 :: T_Pattern_v22
v22 = \ !(T_Pattern_vIn22
T_Pattern_vIn22 ) -> (
let !_patsX12 :: T_Patterns_s12
_patsX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_pats_)) in
let !(T_Patterns_vOut38 Patterns
_patsIcopy Set (Identifier, Identifier)
_patsIdefinedAttrs Seq Error
_patsIerrors Set Identifier
_patsIlocals Patterns
_patsIoutput) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v38 -> T_Patterns_v38
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_patsX12 K_Patterns_s12 T_Patterns_v38
K_Patterns_v38 (T_Patterns_vIn38
T_Patterns_vIn38 ) in
let !_copy :: Pattern
_copy = Patterns -> Pos -> Pattern
rule148 Patterns
_patsIcopy Pos
arg_pos_ in
let _lhsOcopy :: Pattern
!_lhsOcopy :: Pattern
_lhsOcopy = Pattern -> Pattern
forall a. a -> a
rule150 Pattern
_copy in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule145 Set (Identifier, Identifier)
_patsIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule146 Seq Error
_patsIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule147 Set Identifier
_patsIlocals in
let !_output :: Pattern
_output = Patterns -> Pos -> Pattern
rule149 Patterns
_patsIoutput Pos
arg_pos_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule151 Pattern
_output in
let !__result_ :: T_Pattern_vOut22
__result_ = Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut22
T_Pattern_vOut22 Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut22
__result_ )
v23 :: T_Pattern_v23
v23 :: T_Pattern_v23
v23 = \ !(T_Pattern_vIn23
T_Pattern_vIn23 ) -> (
let !_patsX12 :: T_Patterns_s12
_patsX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_pats_)) in
let !(T_Patterns_vOut21 Bool
_patsIcontainsVars Patterns
_patsIcopy Set (Identifier, Identifier)
_patsIdefinedAttrs Seq Error
_patsIerrors Set Identifier
_patsIlocals Patterns
_patsIoutput) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v21 -> T_Patterns_v21
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_patsX12 K_Patterns_s12 T_Patterns_v21
K_Patterns_v21 (T_Patterns_vIn21
T_Patterns_vIn21 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool
rule144 Bool
_patsIcontainsVars in
let !_copy :: Pattern
_copy = Patterns -> Pos -> Pattern
rule148 Patterns
_patsIcopy Pos
arg_pos_ in
let _lhsOcopy :: Pattern
!_lhsOcopy :: Pattern
_lhsOcopy = Pattern -> Pattern
forall a. a -> a
rule150 Pattern
_copy in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule145 Set (Identifier, Identifier)
_patsIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule146 Seq Error
_patsIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule147 Set Identifier
_patsIlocals in
let !_output :: Pattern
_output = Patterns -> Pos -> Pattern
rule149 Patterns
_patsIoutput Pos
arg_pos_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule151 Pattern
_output in
let !__result_ :: T_Pattern_vOut23
__result_ = Bool
-> Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut23
T_Pattern_vOut23 Bool
_lhsOcontainsVars Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut23
__result_ )
v28 :: T_Pattern_v28
v28 :: T_Pattern_v28
v28 = \ !(T_Pattern_vIn28
T_Pattern_vIn28 ) -> (
let !_patsX12 :: T_Patterns_s12
_patsX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_pats_)) in
let !(T_Patterns_vOut41 Bool
_patsIcontainsVars Set (Identifier, Identifier)
_patsIdefinedAttrs Seq Error
_patsIerrors Set Identifier
_patsIlocals Patterns
_patsIoutput) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v41 -> T_Patterns_v41
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_patsX12 K_Patterns_s12 T_Patterns_v41
K_Patterns_v41 (T_Patterns_vIn41
T_Patterns_vIn41 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool
rule144 Bool
_patsIcontainsVars in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule145 Set (Identifier, Identifier)
_patsIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule146 Seq Error
_patsIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule147 Set Identifier
_patsIlocals in
let !_output :: Pattern
_output = Patterns -> Pos -> Pattern
rule149 Patterns
_patsIoutput Pos
arg_pos_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule151 Pattern
_output in
let !__result_ :: T_Pattern_vOut28
__result_ = Bool
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut28
T_Pattern_vOut28 Bool
_lhsOcontainsVars Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut28
__result_ )
v42 :: T_Pattern_v42
v42 :: T_Pattern_v42
v42 = \ !(T_Pattern_vIn42
T_Pattern_vIn42 ) -> (
let !_patsX12 :: T_Patterns_s12
_patsX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_pats_)) in
let !(T_Patterns_vOut49 Set (Identifier, Identifier)
_patsIdefinedAttrs Seq Error
_patsIerrors Set Identifier
_patsIlocals Patterns
_patsIoutput) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v49 -> T_Patterns_v49
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_patsX12 K_Patterns_s12 T_Patterns_v49
K_Patterns_v49 (T_Patterns_vIn49
T_Patterns_vIn49 ) in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule145 Set (Identifier, Identifier)
_patsIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule146 Seq Error
_patsIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule147 Set Identifier
_patsIlocals in
let !_output :: Pattern
_output = Patterns -> Pos -> Pattern
rule149 Patterns
_patsIoutput Pos
arg_pos_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule151 Pattern
_output in
let !__result_ :: T_Pattern_vOut42
__result_ = Set (Identifier, Identifier)
-> Seq Error -> Set Identifier -> Pattern -> T_Pattern_vOut42
T_Pattern_vOut42 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut42
__result_ )
v50 :: T_Pattern_v50
v50 :: T_Pattern_v50
v50 = \ !(T_Pattern_vIn50
T_Pattern_vIn50 ) -> (
let !_patsX12 :: T_Patterns_s12
_patsX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_pats_)) in
let !(T_Patterns_vOut54 Set (Identifier, Identifier)
_patsIdefinedAttrs Seq Error
_patsIerrors Set Identifier
_patsIlocals T_Patterns_s57
_patsX57) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v54 -> T_Patterns_v54
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_patsX12 K_Patterns_s12 T_Patterns_v54
K_Patterns_v54 (T_Patterns_vIn54
T_Patterns_vIn54 ) in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule145 Set (Identifier, Identifier)
_patsIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule146 Seq Error
_patsIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule147 Set Identifier
_patsIlocals in
let !__st_ :: T_Pattern_s55
__st_ = T_Patterns_s57 -> T_Pattern_s55
st55 T_Patterns_s57
_patsX57
!__result_ :: T_Pattern_vOut50
__result_ = Set (Identifier, Identifier)
-> Seq Error -> Set Identifier -> T_Pattern_s55 -> T_Pattern_vOut50
T_Pattern_vOut50 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals T_Pattern_s55
__st_
in T_Pattern_vOut50
__result_ )
in (forall t. K_Pattern_s10 t -> t) -> T_Pattern_s10
C_Pattern_s10 forall t. K_Pattern_s10 t -> t
k10
{-# NOINLINE st55 #-}
st55 :: T_Patterns_s57 -> T_Pattern_s55
st55 = \ !T_Patterns_s57
_patsX57 -> let
k55 :: K_Pattern_s55 t -> t
k55 :: K_Pattern_s55 t -> t
k55 K_Pattern_s55 t
K_Pattern_v51 = t
T_Pattern_v51
v51
k55 K_Pattern_s55 t
K_Pattern_v56 = t
T_Pattern_v56
v56
v51 :: T_Pattern_v51
v51 :: T_Pattern_v51
v51 = \ !(T_Pattern_vIn51
T_Pattern_vIn51 ) -> (
let !(T_Patterns_vOut55 Bool
_patsIcontainsVars Patterns
_patsIoutput) = T_Patterns_s57 -> K_Patterns_s57 T_Patterns_v55 -> T_Patterns_v55
T_Patterns_s57 -> forall t. K_Patterns_s57 t -> t
inv_Patterns_s57 T_Patterns_s57
_patsX57 K_Patterns_s57 T_Patterns_v55
K_Patterns_v55 (T_Patterns_vIn55
T_Patterns_vIn55 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool
rule144 Bool
_patsIcontainsVars in
let !_output :: Pattern
_output = Patterns -> Pos -> Pattern
rule149 Patterns
_patsIoutput Pos
arg_pos_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule151 Pattern
_output in
let !__result_ :: T_Pattern_vOut51
__result_ = Bool -> Pattern -> T_Pattern_vOut51
T_Pattern_vOut51 Bool
_lhsOcontainsVars Pattern
_lhsOoutput
in T_Pattern_vOut51
__result_ )
v56 :: T_Pattern_v56
v56 :: T_Pattern_v56
v56 = \ !(T_Pattern_vIn56
T_Pattern_vIn56 ) -> (
let !(T_Patterns_vOut57 Patterns
_patsIoutput) = T_Patterns_s57 -> K_Patterns_s57 T_Patterns_v57 -> T_Patterns_v57
T_Patterns_s57 -> forall t. K_Patterns_s57 t -> t
inv_Patterns_s57 T_Patterns_s57
_patsX57 K_Patterns_s57 T_Patterns_v57
K_Patterns_v57 (T_Patterns_vIn57
T_Patterns_vIn57 ) in
let !_output :: Pattern
_output = Patterns -> Pos -> Pattern
rule149 Patterns
_patsIoutput Pos
arg_pos_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule151 Pattern
_output in
let !__result_ :: T_Pattern_vOut56
__result_ = Pattern -> T_Pattern_vOut56
T_Pattern_vOut56 Pattern
_lhsOoutput
in T_Pattern_vOut56
__result_ )
in (forall t. K_Pattern_s55 t -> t) -> T_Pattern_s55
C_Pattern_s55 forall t. K_Pattern_s55 t -> t
k55
{-# NOINLINE[1] rule144 #-}
rule144 :: Bool -> Bool
rule144 = \ ((!Bool
_patsIcontainsVars) :: Bool) ->
Bool
_patsIcontainsVars
{-# NOINLINE[1] rule145 #-}
rule145 :: Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule145 = \ ((!Set (Identifier, Identifier)
_patsIdefinedAttrs) :: Set (Identifier,Identifier)) ->
Set (Identifier, Identifier)
_patsIdefinedAttrs
{-# NOINLINE[1] rule146 #-}
rule146 :: Seq Error -> Seq Error
rule146 = \ ((!Seq Error
_patsIerrors) :: Seq Error) ->
Seq Error
_patsIerrors
{-# NOINLINE[1] rule147 #-}
rule147 :: Set Identifier -> Set Identifier
rule147 = \ ((!Set Identifier
_patsIlocals) :: Set Identifier) ->
Set Identifier
_patsIlocals
{-# NOINLINE[1] rule148 #-}
rule148 :: Patterns -> Pos -> Pattern
rule148 = \ ((!Patterns
_patsIcopy) :: Patterns) !Pos
pos_ ->
Pos -> Patterns -> Pattern
Product Pos
pos_ Patterns
_patsIcopy
{-# NOINLINE[1] rule149 #-}
rule149 :: Patterns -> Pos -> Pattern
rule149 = \ ((!Patterns
_patsIoutput) :: Patterns) !Pos
pos_ ->
Pos -> Patterns -> Pattern
Product Pos
pos_ Patterns
_patsIoutput
{-# NOINLINE[1] rule150 #-}
rule150 :: p -> p
rule150 = \ !p
_copy ->
p
_copy
{-# NOINLINE[1] rule151 #-}
rule151 :: p -> p
rule151 = \ !p
_output ->
p
_output
{-# NOINLINE sem_Pattern_Alias #-}
sem_Pattern_Alias :: (Identifier) -> (Identifier) -> T_Pattern -> T_Pattern
sem_Pattern_Alias :: Identifier -> Identifier -> T_Pattern -> T_Pattern
sem_Pattern_Alias !Identifier
arg_field_ !Identifier
arg_attr_ T_Pattern
arg_pat_ = Identity T_Pattern_s10 -> T_Pattern
T_Pattern (T_Pattern_s10 -> Identity T_Pattern_s10
forall (m :: * -> *) a. Monad m => a -> m a
return T_Pattern_s10
st10) where
{-# NOINLINE st10 #-}
!st10 :: T_Pattern_s10
st10 = let
k10 :: K_Pattern_s10 t -> t
k10 :: K_Pattern_s10 t -> t
k10 K_Pattern_s10 t
K_Pattern_v5 = t
T_Pattern_v5
v5
k10 K_Pattern_s10 t
K_Pattern_v22 = t
T_Pattern_v22
v22
k10 K_Pattern_s10 t
K_Pattern_v23 = t
T_Pattern_v23
v23
k10 K_Pattern_s10 t
K_Pattern_v28 = t
T_Pattern_v28
v28
k10 K_Pattern_s10 t
K_Pattern_v42 = t
T_Pattern_v42
v42
k10 K_Pattern_s10 t
K_Pattern_v50 = t
T_Pattern_v50
v50
v5 :: T_Pattern_v5
v5 :: T_Pattern_v5
v5 = \ !(T_Pattern_vIn5 Identifier
_lhsIcon Identifier
_lhsInt) -> (
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = () -> Bool
rule156 () in
let !_patX10 :: T_Pattern_s10
_patX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_pat_)) in
let !(T_Pattern_vOut22 Pattern
_patIcopy Set (Identifier, Identifier)
_patIdefinedAttrs Seq Error
_patIerrors Set Identifier
_patIlocals Pattern
_patIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v22 -> T_Pattern_v22
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_patX10 K_Pattern_s10 T_Pattern_v22
K_Pattern_v22 (T_Pattern_vIn22
T_Pattern_vIn22 ) in
let !_copy :: Pattern
_copy = Pattern -> Identifier -> Identifier -> Pattern
rule158 Pattern
_patIcopy Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOcopy :: Pattern
!_lhsOcopy :: Pattern
_lhsOcopy = Pattern -> Pattern
forall a. a -> a
rule160 Pattern
_copy in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier)
-> Identifier -> Identifier -> Set (Identifier, Identifier)
rule154 Set (Identifier, Identifier)
_patIdefinedAttrs Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule157 Seq Error
_patIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Identifier -> Identifier -> Set Identifier
rule155 Set Identifier
_patIlocals Identifier
arg_attr_ Identifier
arg_field_ in
let !_output :: Pattern
_output = Pattern -> Identifier -> Identifier -> Pattern
rule159 Pattern
_patIoutput Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule161 Pattern
_output in
let !__result_ :: T_Pattern_vOut5
__result_ = Bool
-> Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut5
T_Pattern_vOut5 Bool
_lhsOcontainsVars Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut5
__result_ )
v22 :: T_Pattern_v22
v22 :: T_Pattern_v22
v22 = \ !(T_Pattern_vIn22
T_Pattern_vIn22 ) -> (
let !_patX10 :: T_Pattern_s10
_patX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_pat_)) in
let !(T_Pattern_vOut22 Pattern
_patIcopy Set (Identifier, Identifier)
_patIdefinedAttrs Seq Error
_patIerrors Set Identifier
_patIlocals Pattern
_patIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v22 -> T_Pattern_v22
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_patX10 K_Pattern_s10 T_Pattern_v22
K_Pattern_v22 (T_Pattern_vIn22
T_Pattern_vIn22 ) in
let !_copy :: Pattern
_copy = Pattern -> Identifier -> Identifier -> Pattern
rule158 Pattern
_patIcopy Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOcopy :: Pattern
!_lhsOcopy :: Pattern
_lhsOcopy = Pattern -> Pattern
forall a. a -> a
rule160 Pattern
_copy in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier)
-> Identifier -> Identifier -> Set (Identifier, Identifier)
rule154 Set (Identifier, Identifier)
_patIdefinedAttrs Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule157 Seq Error
_patIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Identifier -> Identifier -> Set Identifier
rule155 Set Identifier
_patIlocals Identifier
arg_attr_ Identifier
arg_field_ in
let !_output :: Pattern
_output = Pattern -> Identifier -> Identifier -> Pattern
rule159 Pattern
_patIoutput Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule161 Pattern
_output in
let !__result_ :: T_Pattern_vOut22
__result_ = Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut22
T_Pattern_vOut22 Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut22
__result_ )
v23 :: T_Pattern_v23
v23 :: T_Pattern_v23
v23 = \ !(T_Pattern_vIn23
T_Pattern_vIn23 ) -> (
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = () -> Bool
rule156 () in
let !_patX10 :: T_Pattern_s10
_patX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_pat_)) in
let !(T_Pattern_vOut22 Pattern
_patIcopy Set (Identifier, Identifier)
_patIdefinedAttrs Seq Error
_patIerrors Set Identifier
_patIlocals Pattern
_patIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v22 -> T_Pattern_v22
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_patX10 K_Pattern_s10 T_Pattern_v22
K_Pattern_v22 (T_Pattern_vIn22
T_Pattern_vIn22 ) in
let !_copy :: Pattern
_copy = Pattern -> Identifier -> Identifier -> Pattern
rule158 Pattern
_patIcopy Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOcopy :: Pattern
!_lhsOcopy :: Pattern
_lhsOcopy = Pattern -> Pattern
forall a. a -> a
rule160 Pattern
_copy in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier)
-> Identifier -> Identifier -> Set (Identifier, Identifier)
rule154 Set (Identifier, Identifier)
_patIdefinedAttrs Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule157 Seq Error
_patIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Identifier -> Identifier -> Set Identifier
rule155 Set Identifier
_patIlocals Identifier
arg_attr_ Identifier
arg_field_ in
let !_output :: Pattern
_output = Pattern -> Identifier -> Identifier -> Pattern
rule159 Pattern
_patIoutput Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule161 Pattern
_output in
let !__result_ :: T_Pattern_vOut23
__result_ = Bool
-> Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut23
T_Pattern_vOut23 Bool
_lhsOcontainsVars Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut23
__result_ )
v28 :: T_Pattern_v28
v28 :: T_Pattern_v28
v28 = \ !(T_Pattern_vIn28
T_Pattern_vIn28 ) -> (
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = () -> Bool
rule156 () in
let !_patX10 :: T_Pattern_s10
_patX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_pat_)) in
let !(T_Pattern_vOut42 Set (Identifier, Identifier)
_patIdefinedAttrs Seq Error
_patIerrors Set Identifier
_patIlocals Pattern
_patIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v42 -> T_Pattern_v42
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_patX10 K_Pattern_s10 T_Pattern_v42
K_Pattern_v42 (T_Pattern_vIn42
T_Pattern_vIn42 ) in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier)
-> Identifier -> Identifier -> Set (Identifier, Identifier)
rule154 Set (Identifier, Identifier)
_patIdefinedAttrs Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule157 Seq Error
_patIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Identifier -> Identifier -> Set Identifier
rule155 Set Identifier
_patIlocals Identifier
arg_attr_ Identifier
arg_field_ in
let !_output :: Pattern
_output = Pattern -> Identifier -> Identifier -> Pattern
rule159 Pattern
_patIoutput Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule161 Pattern
_output in
let !__result_ :: T_Pattern_vOut28
__result_ = Bool
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut28
T_Pattern_vOut28 Bool
_lhsOcontainsVars Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut28
__result_ )
v42 :: T_Pattern_v42
v42 :: T_Pattern_v42
v42 = \ !(T_Pattern_vIn42
T_Pattern_vIn42 ) -> (
let !_patX10 :: T_Pattern_s10
_patX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_pat_)) in
let !(T_Pattern_vOut42 Set (Identifier, Identifier)
_patIdefinedAttrs Seq Error
_patIerrors Set Identifier
_patIlocals Pattern
_patIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v42 -> T_Pattern_v42
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_patX10 K_Pattern_s10 T_Pattern_v42
K_Pattern_v42 (T_Pattern_vIn42
T_Pattern_vIn42 ) in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier)
-> Identifier -> Identifier -> Set (Identifier, Identifier)
rule154 Set (Identifier, Identifier)
_patIdefinedAttrs Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule157 Seq Error
_patIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Identifier -> Identifier -> Set Identifier
rule155 Set Identifier
_patIlocals Identifier
arg_attr_ Identifier
arg_field_ in
let !_output :: Pattern
_output = Pattern -> Identifier -> Identifier -> Pattern
rule159 Pattern
_patIoutput Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule161 Pattern
_output in
let !__result_ :: T_Pattern_vOut42
__result_ = Set (Identifier, Identifier)
-> Seq Error -> Set Identifier -> Pattern -> T_Pattern_vOut42
T_Pattern_vOut42 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut42
__result_ )
v50 :: T_Pattern_v50
v50 :: T_Pattern_v50
v50 = \ !(T_Pattern_vIn50
T_Pattern_vIn50 ) -> (
let !_patX10 :: T_Pattern_s10
_patX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_pat_)) in
let !(T_Pattern_vOut50 Set (Identifier, Identifier)
_patIdefinedAttrs Seq Error
_patIerrors Set Identifier
_patIlocals T_Pattern_s55
_patX55) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v50 -> T_Pattern_v50
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_patX10 K_Pattern_s10 T_Pattern_v50
K_Pattern_v50 (T_Pattern_vIn50
T_Pattern_vIn50 ) in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier)
-> Identifier -> Identifier -> Set (Identifier, Identifier)
rule154 Set (Identifier, Identifier)
_patIdefinedAttrs Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule157 Seq Error
_patIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Identifier -> Identifier -> Set Identifier
rule155 Set Identifier
_patIlocals Identifier
arg_attr_ Identifier
arg_field_ in
let !__st_ :: T_Pattern_s55
__st_ = T_Pattern_s55 -> T_Pattern_s55
st55 T_Pattern_s55
_patX55
!__result_ :: T_Pattern_vOut50
__result_ = Set (Identifier, Identifier)
-> Seq Error -> Set Identifier -> T_Pattern_s55 -> T_Pattern_vOut50
T_Pattern_vOut50 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals T_Pattern_s55
__st_
in T_Pattern_vOut50
__result_ )
in (forall t. K_Pattern_s10 t -> t) -> T_Pattern_s10
C_Pattern_s10 forall t. K_Pattern_s10 t -> t
k10
{-# NOINLINE st55 #-}
st55 :: T_Pattern_s55 -> T_Pattern_s55
st55 = \ !T_Pattern_s55
_patX55 -> let
k55 :: K_Pattern_s55 t -> t
k55 :: K_Pattern_s55 t -> t
k55 K_Pattern_s55 t
K_Pattern_v51 = t
T_Pattern_v51
v51
k55 K_Pattern_s55 t
K_Pattern_v56 = t
T_Pattern_v56
v56
v51 :: T_Pattern_v51
v51 :: T_Pattern_v51
v51 = \ !(T_Pattern_vIn51
T_Pattern_vIn51 ) -> (
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = () -> Bool
rule156 () in
let !(T_Pattern_vOut56 Pattern
_patIoutput) = T_Pattern_s55 -> K_Pattern_s55 T_Pattern_v56 -> T_Pattern_v56
T_Pattern_s55 -> forall t. K_Pattern_s55 t -> t
inv_Pattern_s55 T_Pattern_s55
_patX55 K_Pattern_s55 T_Pattern_v56
K_Pattern_v56 (T_Pattern_vIn56
T_Pattern_vIn56 ) in
let !_output :: Pattern
_output = Pattern -> Identifier -> Identifier -> Pattern
rule159 Pattern
_patIoutput Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule161 Pattern
_output in
let !__result_ :: T_Pattern_vOut51
__result_ = Bool -> Pattern -> T_Pattern_vOut51
T_Pattern_vOut51 Bool
_lhsOcontainsVars Pattern
_lhsOoutput
in T_Pattern_vOut51
__result_ )
v56 :: T_Pattern_v56
v56 :: T_Pattern_v56
v56 = \ !(T_Pattern_vIn56
T_Pattern_vIn56 ) -> (
let !(T_Pattern_vOut56 Pattern
_patIoutput) = T_Pattern_s55 -> K_Pattern_s55 T_Pattern_v56 -> T_Pattern_v56
T_Pattern_s55 -> forall t. K_Pattern_s55 t -> t
inv_Pattern_s55 T_Pattern_s55
_patX55 K_Pattern_s55 T_Pattern_v56
K_Pattern_v56 (T_Pattern_vIn56
T_Pattern_vIn56 ) in
let !_output :: Pattern
_output = Pattern -> Identifier -> Identifier -> Pattern
rule159 Pattern
_patIoutput Identifier
arg_attr_ Identifier
arg_field_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule161 Pattern
_output in
let !__result_ :: T_Pattern_vOut56
__result_ = Pattern -> T_Pattern_vOut56
T_Pattern_vOut56 Pattern
_lhsOoutput
in T_Pattern_vOut56
__result_ )
in (forall t. K_Pattern_s55 t -> t) -> T_Pattern_s55
C_Pattern_s55 forall t. K_Pattern_s55 t -> t
k55
{-# NOINLINE rule154 #-}
{-# LINE 564 "src-ag/DefaultRules.ag" #-}
rule154 = \ ((!_patIdefinedAttrs) :: Set (Identifier,Identifier)) !attr_ !field_ ->
{-# LINE 564 "src-ag/DefaultRules.ag" #-}
Set.insert (field_,attr_) _patIdefinedAttrs
{-# LINE 2614 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE rule155 #-}
{-# LINE 565 "src-ag/DefaultRules.ag" #-}
rule155 = \ ((!_patIlocals) :: Set Identifier) !attr_ !field_ ->
{-# LINE 565 "src-ag/DefaultRules.ag" #-}
if field_ == _LOC
then Set.insert attr_ _patIlocals
else _patIlocals
{-# LINE 2622 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE rule156 #-}
{-# LINE 582 "src-ag/DefaultRules.ag" #-}
rule156 = \ (_ :: ()) ->
{-# LINE 582 "src-ag/DefaultRules.ag" #-}
True
{-# LINE 2628 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule157 #-}
rule157 = \ ((!_patIerrors) :: Seq Error) ->
_patIerrors
{-# NOINLINE[1] rule158 #-}
rule158 = \ ((!_patIcopy) :: Pattern) !attr_ !field_ ->
Alias field_ attr_ _patIcopy
{-# NOINLINE[1] rule159 #-}
rule159 = \ ((!_patIoutput) :: Pattern) !attr_ !field_ ->
Alias field_ attr_ _patIoutput
{-# NOINLINE[1] rule160 #-}
rule160 = \ !_copy ->
_copy
{-# NOINLINE[1] rule161 #-}
rule161 = \ !_output ->
_output
{-# NOINLINE sem_Pattern_Irrefutable #-}
sem_Pattern_Irrefutable :: T_Pattern -> T_Pattern
sem_Pattern_Irrefutable :: T_Pattern -> T_Pattern
sem_Pattern_Irrefutable T_Pattern
arg_pat_ = Identity T_Pattern_s10 -> T_Pattern
T_Pattern (T_Pattern_s10 -> Identity T_Pattern_s10
forall (m :: * -> *) a. Monad m => a -> m a
return T_Pattern_s10
st10) where
{-# NOINLINE st10 #-}
!st10 :: T_Pattern_s10
st10 = let
k10 :: K_Pattern_s10 t -> t
k10 :: K_Pattern_s10 t -> t
k10 K_Pattern_s10 t
K_Pattern_v5 = t
T_Pattern_v5
v5
k10 K_Pattern_s10 t
K_Pattern_v22 = t
T_Pattern_v22
v22
k10 K_Pattern_s10 t
K_Pattern_v23 = t
T_Pattern_v23
v23
k10 K_Pattern_s10 t
K_Pattern_v28 = t
T_Pattern_v28
v28
k10 K_Pattern_s10 t
K_Pattern_v42 = t
T_Pattern_v42
v42
k10 K_Pattern_s10 t
K_Pattern_v50 = t
T_Pattern_v50
v50
v5 :: T_Pattern_v5
v5 :: T_Pattern_v5
v5 = \ !(T_Pattern_vIn5 Identifier
_lhsIcon Identifier
_lhsInt) -> (
let !_patX10 :: T_Pattern_s10
_patX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_pat_)) in
let !(T_Pattern_vOut23 Bool
_patIcontainsVars Pattern
_patIcopy Set (Identifier, Identifier)
_patIdefinedAttrs Seq Error
_patIerrors Set Identifier
_patIlocals Pattern
_patIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v23 -> T_Pattern_v23
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_patX10 K_Pattern_s10 T_Pattern_v23
K_Pattern_v23 (T_Pattern_vIn23
T_Pattern_vIn23 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool
rule164 Bool
_patIcontainsVars in
let !_copy :: Pattern
_copy = Pattern -> Pattern
rule168 Pattern
_patIcopy in
let _lhsOcopy :: Pattern
!_lhsOcopy :: Pattern
_lhsOcopy = Pattern -> Pattern
forall a. a -> a
rule170 Pattern
_copy in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule165 Set (Identifier, Identifier)
_patIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule166 Seq Error
_patIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule167 Set Identifier
_patIlocals in
let !_output :: Pattern
_output = Pattern -> Pattern
rule169 Pattern
_patIoutput in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule171 Pattern
_output in
let !__result_ :: T_Pattern_vOut5
__result_ = Bool
-> Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut5
T_Pattern_vOut5 Bool
_lhsOcontainsVars Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut5
__result_ )
v22 :: T_Pattern_v22
v22 :: T_Pattern_v22
v22 = \ !(T_Pattern_vIn22
T_Pattern_vIn22 ) -> (
let !_patX10 :: T_Pattern_s10
_patX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_pat_)) in
let !(T_Pattern_vOut22 Pattern
_patIcopy Set (Identifier, Identifier)
_patIdefinedAttrs Seq Error
_patIerrors Set Identifier
_patIlocals Pattern
_patIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v22 -> T_Pattern_v22
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_patX10 K_Pattern_s10 T_Pattern_v22
K_Pattern_v22 (T_Pattern_vIn22
T_Pattern_vIn22 ) in
let !_copy :: Pattern
_copy = Pattern -> Pattern
rule168 Pattern
_patIcopy in
let _lhsOcopy :: Pattern
!_lhsOcopy :: Pattern
_lhsOcopy = Pattern -> Pattern
forall a. a -> a
rule170 Pattern
_copy in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule165 Set (Identifier, Identifier)
_patIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule166 Seq Error
_patIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule167 Set Identifier
_patIlocals in
let !_output :: Pattern
_output = Pattern -> Pattern
rule169 Pattern
_patIoutput in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule171 Pattern
_output in
let !__result_ :: T_Pattern_vOut22
__result_ = Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut22
T_Pattern_vOut22 Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut22
__result_ )
v23 :: T_Pattern_v23
v23 :: T_Pattern_v23
v23 = \ !(T_Pattern_vIn23
T_Pattern_vIn23 ) -> (
let !_patX10 :: T_Pattern_s10
_patX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_pat_)) in
let !(T_Pattern_vOut23 Bool
_patIcontainsVars Pattern
_patIcopy Set (Identifier, Identifier)
_patIdefinedAttrs Seq Error
_patIerrors Set Identifier
_patIlocals Pattern
_patIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v23 -> T_Pattern_v23
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_patX10 K_Pattern_s10 T_Pattern_v23
K_Pattern_v23 (T_Pattern_vIn23
T_Pattern_vIn23 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool
rule164 Bool
_patIcontainsVars in
let !_copy :: Pattern
_copy = Pattern -> Pattern
rule168 Pattern
_patIcopy in
let _lhsOcopy :: Pattern
!_lhsOcopy :: Pattern
_lhsOcopy = Pattern -> Pattern
forall a. a -> a
rule170 Pattern
_copy in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule165 Set (Identifier, Identifier)
_patIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule166 Seq Error
_patIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule167 Set Identifier
_patIlocals in
let !_output :: Pattern
_output = Pattern -> Pattern
rule169 Pattern
_patIoutput in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule171 Pattern
_output in
let !__result_ :: T_Pattern_vOut23
__result_ = Bool
-> Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut23
T_Pattern_vOut23 Bool
_lhsOcontainsVars Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut23
__result_ )
v28 :: T_Pattern_v28
v28 :: T_Pattern_v28
v28 = \ !(T_Pattern_vIn28
T_Pattern_vIn28 ) -> (
let !_patX10 :: T_Pattern_s10
_patX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_pat_)) in
let !(T_Pattern_vOut28 Bool
_patIcontainsVars Set (Identifier, Identifier)
_patIdefinedAttrs Seq Error
_patIerrors Set Identifier
_patIlocals Pattern
_patIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v28 -> T_Pattern_v28
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_patX10 K_Pattern_s10 T_Pattern_v28
K_Pattern_v28 (T_Pattern_vIn28
T_Pattern_vIn28 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool
rule164 Bool
_patIcontainsVars in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule165 Set (Identifier, Identifier)
_patIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule166 Seq Error
_patIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule167 Set Identifier
_patIlocals in
let !_output :: Pattern
_output = Pattern -> Pattern
rule169 Pattern
_patIoutput in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule171 Pattern
_output in
let !__result_ :: T_Pattern_vOut28
__result_ = Bool
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut28
T_Pattern_vOut28 Bool
_lhsOcontainsVars Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut28
__result_ )
v42 :: T_Pattern_v42
v42 :: T_Pattern_v42
v42 = \ !(T_Pattern_vIn42
T_Pattern_vIn42 ) -> (
let !_patX10 :: T_Pattern_s10
_patX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_pat_)) in
let !(T_Pattern_vOut42 Set (Identifier, Identifier)
_patIdefinedAttrs Seq Error
_patIerrors Set Identifier
_patIlocals Pattern
_patIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v42 -> T_Pattern_v42
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_patX10 K_Pattern_s10 T_Pattern_v42
K_Pattern_v42 (T_Pattern_vIn42
T_Pattern_vIn42 ) in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule165 Set (Identifier, Identifier)
_patIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule166 Seq Error
_patIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule167 Set Identifier
_patIlocals in
let !_output :: Pattern
_output = Pattern -> Pattern
rule169 Pattern
_patIoutput in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule171 Pattern
_output in
let !__result_ :: T_Pattern_vOut42
__result_ = Set (Identifier, Identifier)
-> Seq Error -> Set Identifier -> Pattern -> T_Pattern_vOut42
T_Pattern_vOut42 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut42
__result_ )
v50 :: T_Pattern_v50
v50 :: T_Pattern_v50
v50 = \ !(T_Pattern_vIn50
T_Pattern_vIn50 ) -> (
let !_patX10 :: T_Pattern_s10
_patX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_pat_)) in
let !(T_Pattern_vOut50 Set (Identifier, Identifier)
_patIdefinedAttrs Seq Error
_patIerrors Set Identifier
_patIlocals T_Pattern_s55
_patX55) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v50 -> T_Pattern_v50
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_patX10 K_Pattern_s10 T_Pattern_v50
K_Pattern_v50 (T_Pattern_vIn50
T_Pattern_vIn50 ) in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule165 Set (Identifier, Identifier)
_patIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule166 Seq Error
_patIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule167 Set Identifier
_patIlocals in
let !__st_ :: T_Pattern_s55
__st_ = T_Pattern_s55 -> T_Pattern_s55
st55 T_Pattern_s55
_patX55
!__result_ :: T_Pattern_vOut50
__result_ = Set (Identifier, Identifier)
-> Seq Error -> Set Identifier -> T_Pattern_s55 -> T_Pattern_vOut50
T_Pattern_vOut50 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals T_Pattern_s55
__st_
in T_Pattern_vOut50
__result_ )
in (forall t. K_Pattern_s10 t -> t) -> T_Pattern_s10
C_Pattern_s10 forall t. K_Pattern_s10 t -> t
k10
{-# NOINLINE st55 #-}
st55 :: T_Pattern_s55 -> T_Pattern_s55
st55 = \ !T_Pattern_s55
_patX55 -> let
k55 :: K_Pattern_s55 t -> t
k55 :: K_Pattern_s55 t -> t
k55 K_Pattern_s55 t
K_Pattern_v51 = t
T_Pattern_v51
v51
k55 K_Pattern_s55 t
K_Pattern_v56 = t
T_Pattern_v56
v56
v51 :: T_Pattern_v51
v51 :: T_Pattern_v51
v51 = \ !(T_Pattern_vIn51
T_Pattern_vIn51 ) -> (
let !(T_Pattern_vOut51 Bool
_patIcontainsVars Pattern
_patIoutput) = T_Pattern_s55 -> K_Pattern_s55 T_Pattern_v51 -> T_Pattern_v51
T_Pattern_s55 -> forall t. K_Pattern_s55 t -> t
inv_Pattern_s55 T_Pattern_s55
_patX55 K_Pattern_s55 T_Pattern_v51
K_Pattern_v51 (T_Pattern_vIn51
T_Pattern_vIn51 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool
rule164 Bool
_patIcontainsVars in
let !_output :: Pattern
_output = Pattern -> Pattern
rule169 Pattern
_patIoutput in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule171 Pattern
_output in
let !__result_ :: T_Pattern_vOut51
__result_ = Bool -> Pattern -> T_Pattern_vOut51
T_Pattern_vOut51 Bool
_lhsOcontainsVars Pattern
_lhsOoutput
in T_Pattern_vOut51
__result_ )
v56 :: T_Pattern_v56
v56 :: T_Pattern_v56
v56 = \ !(T_Pattern_vIn56
T_Pattern_vIn56 ) -> (
let !(T_Pattern_vOut56 Pattern
_patIoutput) = T_Pattern_s55 -> K_Pattern_s55 T_Pattern_v56 -> T_Pattern_v56
T_Pattern_s55 -> forall t. K_Pattern_s55 t -> t
inv_Pattern_s55 T_Pattern_s55
_patX55 K_Pattern_s55 T_Pattern_v56
K_Pattern_v56 (T_Pattern_vIn56
T_Pattern_vIn56 ) in
let !_output :: Pattern
_output = Pattern -> Pattern
rule169 Pattern
_patIoutput in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule171 Pattern
_output in
let !__result_ :: T_Pattern_vOut56
__result_ = Pattern -> T_Pattern_vOut56
T_Pattern_vOut56 Pattern
_lhsOoutput
in T_Pattern_vOut56
__result_ )
in (forall t. K_Pattern_s55 t -> t) -> T_Pattern_s55
C_Pattern_s55 forall t. K_Pattern_s55 t -> t
k55
{-# NOINLINE[1] rule164 #-}
rule164 :: Bool -> Bool
rule164 = \ ((!Bool
_patIcontainsVars) :: Bool) ->
Bool
_patIcontainsVars
{-# NOINLINE[1] rule165 #-}
rule165 :: Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule165 = \ ((!Set (Identifier, Identifier)
_patIdefinedAttrs) :: Set (Identifier,Identifier)) ->
Set (Identifier, Identifier)
_patIdefinedAttrs
{-# NOINLINE[1] rule166 #-}
rule166 :: Seq Error -> Seq Error
rule166 = \ ((!Seq Error
_patIerrors) :: Seq Error) ->
Seq Error
_patIerrors
{-# NOINLINE[1] rule167 #-}
rule167 :: Set Identifier -> Set Identifier
rule167 = \ ((!Set Identifier
_patIlocals) :: Set Identifier) ->
Set Identifier
_patIlocals
{-# NOINLINE[1] rule168 #-}
rule168 :: Pattern -> Pattern
rule168 = \ ((!Pattern
_patIcopy) :: Pattern) ->
Pattern -> Pattern
Irrefutable Pattern
_patIcopy
{-# NOINLINE[1] rule169 #-}
rule169 :: Pattern -> Pattern
rule169 = \ ((!Pattern
_patIoutput) :: Pattern) ->
Pattern -> Pattern
Irrefutable Pattern
_patIoutput
{-# NOINLINE[1] rule170 #-}
rule170 :: p -> p
rule170 = \ !p
_copy ->
p
_copy
{-# NOINLINE[1] rule171 #-}
rule171 :: p -> p
rule171 = \ !p
_output ->
p
_output
{-# NOINLINE sem_Pattern_Underscore #-}
sem_Pattern_Underscore :: (Pos) -> T_Pattern
sem_Pattern_Underscore :: Pos -> T_Pattern
sem_Pattern_Underscore !Pos
arg_pos_ = Identity T_Pattern_s10 -> T_Pattern
T_Pattern (T_Pattern_s10 -> Identity T_Pattern_s10
forall (m :: * -> *) a. Monad m => a -> m a
return T_Pattern_s10
st10) where
{-# NOINLINE st10 #-}
!st10 :: T_Pattern_s10
st10 = let
k10 :: K_Pattern_s10 t -> t
k10 :: K_Pattern_s10 t -> t
k10 K_Pattern_s10 t
K_Pattern_v5 = t
T_Pattern_v5
v5
k10 K_Pattern_s10 t
K_Pattern_v22 = t
T_Pattern_v22
v22
k10 K_Pattern_s10 t
K_Pattern_v23 = t
T_Pattern_v23
v23
k10 K_Pattern_s10 t
K_Pattern_v28 = t
T_Pattern_v28
v28
k10 K_Pattern_s10 t
K_Pattern_v42 = t
T_Pattern_v42
v42
k10 K_Pattern_s10 t
K_Pattern_v50 = t
T_Pattern_v50
v50
v5 :: T_Pattern_v5
v5 :: T_Pattern_v5
v5 = \ !(T_Pattern_vIn5 Identifier
_lhsIcon Identifier
_lhsInt) -> (
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = () -> Bool
rule174 () in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = () -> Set (Identifier, Identifier)
forall a. () -> Set a
rule175 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule176 () in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = () -> Set Identifier
forall a. () -> Set a
rule177 () in
let !_copy :: Pattern
_copy = Pos -> Pattern
rule178 Pos
arg_pos_ in
let _lhsOcopy :: Pattern
!_lhsOcopy :: Pattern
_lhsOcopy = Pattern -> Pattern
forall a. a -> a
rule180 Pattern
_copy in
let !_output :: Pattern
_output = Pos -> Pattern
rule179 Pos
arg_pos_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule181 Pattern
_output in
let !__result_ :: T_Pattern_vOut5
__result_ = Bool
-> Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut5
T_Pattern_vOut5 Bool
_lhsOcontainsVars Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut5
__result_ )
v22 :: T_Pattern_v22
v22 :: T_Pattern_v22
v22 = \ !(T_Pattern_vIn22
T_Pattern_vIn22 ) -> (
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = () -> Set (Identifier, Identifier)
forall a. () -> Set a
rule175 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule176 () in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = () -> Set Identifier
forall a. () -> Set a
rule177 () in
let !_copy :: Pattern
_copy = Pos -> Pattern
rule178 Pos
arg_pos_ in
let _lhsOcopy :: Pattern
!_lhsOcopy :: Pattern
_lhsOcopy = Pattern -> Pattern
forall a. a -> a
rule180 Pattern
_copy in
let !_output :: Pattern
_output = Pos -> Pattern
rule179 Pos
arg_pos_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule181 Pattern
_output in
let !__result_ :: T_Pattern_vOut22
__result_ = Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut22
T_Pattern_vOut22 Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut22
__result_ )
v23 :: T_Pattern_v23
v23 :: T_Pattern_v23
v23 = \ !(T_Pattern_vIn23
T_Pattern_vIn23 ) -> (
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = () -> Bool
rule174 () in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = () -> Set (Identifier, Identifier)
forall a. () -> Set a
rule175 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule176 () in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = () -> Set Identifier
forall a. () -> Set a
rule177 () in
let !_copy :: Pattern
_copy = Pos -> Pattern
rule178 Pos
arg_pos_ in
let _lhsOcopy :: Pattern
!_lhsOcopy :: Pattern
_lhsOcopy = Pattern -> Pattern
forall a. a -> a
rule180 Pattern
_copy in
let !_output :: Pattern
_output = Pos -> Pattern
rule179 Pos
arg_pos_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule181 Pattern
_output in
let !__result_ :: T_Pattern_vOut23
__result_ = Bool
-> Pattern
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut23
T_Pattern_vOut23 Bool
_lhsOcontainsVars Pattern
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut23
__result_ )
v28 :: T_Pattern_v28
v28 :: T_Pattern_v28
v28 = \ !(T_Pattern_vIn28
T_Pattern_vIn28 ) -> (
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = () -> Bool
rule174 () in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = () -> Set (Identifier, Identifier)
forall a. () -> Set a
rule175 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule176 () in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = () -> Set Identifier
forall a. () -> Set a
rule177 () in
let !_output :: Pattern
_output = Pos -> Pattern
rule179 Pos
arg_pos_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule181 Pattern
_output in
let !__result_ :: T_Pattern_vOut28
__result_ = Bool
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Pattern
-> T_Pattern_vOut28
T_Pattern_vOut28 Bool
_lhsOcontainsVars Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut28
__result_ )
v42 :: T_Pattern_v42
v42 :: T_Pattern_v42
v42 = \ !(T_Pattern_vIn42
T_Pattern_vIn42 ) -> (
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = () -> Set (Identifier, Identifier)
forall a. () -> Set a
rule175 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule176 () in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = () -> Set Identifier
forall a. () -> Set a
rule177 () in
let !_output :: Pattern
_output = Pos -> Pattern
rule179 Pos
arg_pos_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule181 Pattern
_output in
let !__result_ :: T_Pattern_vOut42
__result_ = Set (Identifier, Identifier)
-> Seq Error -> Set Identifier -> Pattern -> T_Pattern_vOut42
T_Pattern_vOut42 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Pattern
_lhsOoutput
in T_Pattern_vOut42
__result_ )
v50 :: T_Pattern_v50
v50 :: T_Pattern_v50
v50 = \ !(T_Pattern_vIn50
T_Pattern_vIn50 ) -> (
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = () -> Set (Identifier, Identifier)
forall a. () -> Set a
rule175 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule176 () in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = () -> Set Identifier
forall a. () -> Set a
rule177 () in
let !__st_ :: T_Pattern_s55
__st_ = () -> T_Pattern_s55
st55 ()
!__result_ :: T_Pattern_vOut50
__result_ = Set (Identifier, Identifier)
-> Seq Error -> Set Identifier -> T_Pattern_s55 -> T_Pattern_vOut50
T_Pattern_vOut50 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals T_Pattern_s55
__st_
in T_Pattern_vOut50
__result_ )
in (forall t. K_Pattern_s10 t -> t) -> T_Pattern_s10
C_Pattern_s10 forall t. K_Pattern_s10 t -> t
k10
{-# NOINLINE st55 #-}
st55 :: () -> T_Pattern_s55
st55 = \ (()
_ :: ()) -> let
k55 :: K_Pattern_s55 t -> t
k55 :: K_Pattern_s55 t -> t
k55 K_Pattern_s55 t
K_Pattern_v51 = t
T_Pattern_v51
v51
k55 K_Pattern_s55 t
K_Pattern_v56 = t
T_Pattern_v56
v56
v51 :: T_Pattern_v51
v51 :: T_Pattern_v51
v51 = \ !(T_Pattern_vIn51
T_Pattern_vIn51 ) -> (
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = () -> Bool
rule174 () in
let !_output :: Pattern
_output = Pos -> Pattern
rule179 Pos
arg_pos_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule181 Pattern
_output in
let !__result_ :: T_Pattern_vOut51
__result_ = Bool -> Pattern -> T_Pattern_vOut51
T_Pattern_vOut51 Bool
_lhsOcontainsVars Pattern
_lhsOoutput
in T_Pattern_vOut51
__result_ )
v56 :: T_Pattern_v56
v56 :: T_Pattern_v56
v56 = \ !(T_Pattern_vIn56
T_Pattern_vIn56 ) -> (
let !_output :: Pattern
_output = Pos -> Pattern
rule179 Pos
arg_pos_ in
let _lhsOoutput :: Pattern
!_lhsOoutput :: Pattern
_lhsOoutput = Pattern -> Pattern
forall a. a -> a
rule181 Pattern
_output in
let !__result_ :: T_Pattern_vOut56
__result_ = Pattern -> T_Pattern_vOut56
T_Pattern_vOut56 Pattern
_lhsOoutput
in T_Pattern_vOut56
__result_ )
in (forall t. K_Pattern_s55 t -> t) -> T_Pattern_s55
C_Pattern_s55 forall t. K_Pattern_s55 t -> t
k55
{-# NOINLINE[1] rule174 #-}
rule174 :: () -> Bool
rule174 = \ (()
_ :: ()) ->
Bool
False
{-# NOINLINE[1] rule175 #-}
rule175 :: () -> Set a
rule175 = \ (()
_ :: ()) ->
Set a
forall a. Set a
Set.empty
{-# NOINLINE[1] rule176 #-}
rule176 :: () -> Seq a
rule176 = \ (()
_ :: ()) ->
Seq a
forall a. Seq a
Seq.empty
{-# NOINLINE[1] rule177 #-}
rule177 :: () -> Set a
rule177 = \ (()
_ :: ()) ->
Set a
forall a. Set a
Set.empty
{-# NOINLINE[1] rule178 #-}
rule178 :: Pos -> Pattern
rule178 = \ !Pos
pos_ ->
Pos -> Pattern
Underscore Pos
pos_
{-# NOINLINE[1] rule179 #-}
rule179 :: Pos -> Pattern
rule179 = \ !Pos
pos_ ->
Pos -> Pattern
Underscore Pos
pos_
{-# NOINLINE[1] rule180 #-}
rule180 :: p -> p
rule180 = \ !p
_copy ->
p
_copy
{-# NOINLINE[1] rule181 #-}
rule181 :: p -> p
rule181 = \ !p
_output ->
p
_output
data Inh_Patterns = Inh_Patterns { Inh_Patterns -> Identifier
con_Inh_Patterns :: !(ConstructorIdent), Inh_Patterns -> Identifier
nt_Inh_Patterns :: !(NontermIdent) }
data Syn_Patterns = Syn_Patterns { Syn_Patterns -> Bool
containsVars_Syn_Patterns :: !(Bool), Syn_Patterns -> Patterns
copy_Syn_Patterns :: !(Patterns), Syn_Patterns -> Set (Identifier, Identifier)
definedAttrs_Syn_Patterns :: !(Set (Identifier,Identifier)), Syn_Patterns -> Seq Error
errors_Syn_Patterns :: !(Seq Error), Syn_Patterns -> Set Identifier
locals_Syn_Patterns :: !(Set Identifier), Syn_Patterns -> Patterns
output_Syn_Patterns :: !(Patterns) }
{-# INLINABLE wrap_Patterns #-}
wrap_Patterns :: T_Patterns -> Inh_Patterns -> (Syn_Patterns )
wrap_Patterns :: T_Patterns -> Inh_Patterns -> Syn_Patterns
wrap_Patterns !(T_Patterns Identity T_Patterns_s12
act) !(Inh_Patterns Identifier
_lhsIcon Identifier
_lhsInt) =
Identity Syn_Patterns -> Syn_Patterns
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_Patterns_s12
sem <- Identity T_Patterns_s12
act
let arg6 :: T_Patterns_vIn6
arg6 = Identifier -> Identifier -> T_Patterns_vIn6
T_Patterns_vIn6 Identifier
_lhsIcon Identifier
_lhsInt
!(T_Patterns_vOut6 Bool
_lhsOcontainsVars Patterns
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Patterns
_lhsOoutput) <- T_Patterns_vOut6 -> Identity T_Patterns_vOut6
forall (m :: * -> *) a. Monad m => a -> m a
return (T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v6 -> T_Patterns_v6
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
sem K_Patterns_s12 T_Patterns_v6
K_Patterns_v6 T_Patterns_vIn6
arg6)
Syn_Patterns -> Identity Syn_Patterns
forall (m :: * -> *) a. Monad m => a -> m a
return (Bool
-> Patterns
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Patterns
-> Syn_Patterns
Syn_Patterns Bool
_lhsOcontainsVars Patterns
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Patterns
_lhsOoutput)
)
{-# NOINLINE sem_Patterns #-}
sem_Patterns :: Patterns -> T_Patterns
sem_Patterns :: Patterns -> T_Patterns
sem_Patterns Patterns
list = (T_Pattern -> T_Patterns -> T_Patterns)
-> T_Patterns -> [T_Pattern] -> T_Patterns
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
Prelude.foldr T_Pattern -> T_Patterns -> T_Patterns
sem_Patterns_Cons T_Patterns
sem_Patterns_Nil ((Pattern -> T_Pattern) -> Patterns -> [T_Pattern]
forall a b. (a -> b) -> [a] -> [b]
Prelude.map Pattern -> T_Pattern
sem_Pattern Patterns
list)
newtype T_Patterns = T_Patterns {
T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns :: Identity (T_Patterns_s12 )
}
data T_Patterns_s12 where C_Patterns_s12 :: {
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 :: !(forall t. K_Patterns_s12 t -> t)
} -> T_Patterns_s12
data T_Patterns_s13 = C_Patterns_s13
data T_Patterns_s34 = C_Patterns_s34
data T_Patterns_s47 = C_Patterns_s47
data T_Patterns_s49 = C_Patterns_s49
data T_Patterns_s54 = C_Patterns_s54
data T_Patterns_s57 where C_Patterns_s57 :: {
T_Patterns_s57 -> forall t. K_Patterns_s57 t -> t
inv_Patterns_s57 :: !(forall t. K_Patterns_s57 t -> t)
} -> T_Patterns_s57
data K_Patterns_s12 k where
K_Patterns_v6 :: K_Patterns_s12 (T_Patterns_v6 )
K_Patterns_v21 :: K_Patterns_s12 (T_Patterns_v21 )
K_Patterns_v38 :: K_Patterns_s12 (T_Patterns_v38 )
K_Patterns_v41 :: K_Patterns_s12 (T_Patterns_v41 )
K_Patterns_v49 :: K_Patterns_s12 (T_Patterns_v49 )
K_Patterns_v54 :: K_Patterns_s12 (T_Patterns_v54 )
data K_Patterns_s57 k where
K_Patterns_v55 :: K_Patterns_s57 (T_Patterns_v55 )
K_Patterns_v57 :: K_Patterns_s57 (T_Patterns_v57 )
type T_Patterns_v6 = (T_Patterns_vIn6 ) -> (T_Patterns_vOut6 )
data T_Patterns_vIn6 = T_Patterns_vIn6 !(ConstructorIdent) !(NontermIdent)
data T_Patterns_vOut6 = T_Patterns_vOut6 !(Bool) !(Patterns) !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(Patterns)
type T_Patterns_v21 = (T_Patterns_vIn21 ) -> (T_Patterns_vOut21 )
data T_Patterns_vIn21 = T_Patterns_vIn21
data T_Patterns_vOut21 = T_Patterns_vOut21 !(Bool) !(Patterns) !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(Patterns)
type T_Patterns_v38 = (T_Patterns_vIn38 ) -> (T_Patterns_vOut38 )
data T_Patterns_vIn38 = T_Patterns_vIn38
data T_Patterns_vOut38 = T_Patterns_vOut38 !(Patterns) !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(Patterns)
type T_Patterns_v41 = (T_Patterns_vIn41 ) -> (T_Patterns_vOut41 )
data T_Patterns_vIn41 = T_Patterns_vIn41
data T_Patterns_vOut41 = T_Patterns_vOut41 !(Bool) !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(Patterns)
type T_Patterns_v49 = (T_Patterns_vIn49 ) -> (T_Patterns_vOut49 )
data T_Patterns_vIn49 = T_Patterns_vIn49
data T_Patterns_vOut49 = T_Patterns_vOut49 !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(Patterns)
type T_Patterns_v54 = (T_Patterns_vIn54 ) -> (T_Patterns_vOut54 )
data T_Patterns_vIn54 = T_Patterns_vIn54
data T_Patterns_vOut54 = T_Patterns_vOut54 !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(T_Patterns_s57 )
type T_Patterns_v55 = (T_Patterns_vIn55 ) -> (T_Patterns_vOut55 )
data T_Patterns_vIn55 = T_Patterns_vIn55
data T_Patterns_vOut55 = T_Patterns_vOut55 !(Bool) !(Patterns)
type T_Patterns_v57 = (T_Patterns_vIn57 ) -> (T_Patterns_vOut57 )
data T_Patterns_vIn57 = T_Patterns_vIn57
data T_Patterns_vOut57 = T_Patterns_vOut57 !(Patterns)
{-# NOINLINE sem_Patterns_Cons #-}
sem_Patterns_Cons :: T_Pattern -> T_Patterns -> T_Patterns
sem_Patterns_Cons :: T_Pattern -> T_Patterns -> T_Patterns
sem_Patterns_Cons T_Pattern
arg_hd_ T_Patterns
arg_tl_ = Identity T_Patterns_s12 -> T_Patterns
T_Patterns (T_Patterns_s12 -> Identity T_Patterns_s12
forall (m :: * -> *) a. Monad m => a -> m a
return T_Patterns_s12
st12) where
{-# NOINLINE st12 #-}
!st12 :: T_Patterns_s12
st12 = let
k12 :: K_Patterns_s12 t -> t
k12 :: K_Patterns_s12 t -> t
k12 K_Patterns_s12 t
K_Patterns_v6 = t
T_Patterns_v6
v6
k12 K_Patterns_s12 t
K_Patterns_v21 = t
T_Patterns_v21
v21
k12 K_Patterns_s12 t
K_Patterns_v38 = t
T_Patterns_v38
v38
k12 K_Patterns_s12 t
K_Patterns_v41 = t
T_Patterns_v41
v41
k12 K_Patterns_s12 t
K_Patterns_v49 = t
T_Patterns_v49
v49
k12 K_Patterns_s12 t
K_Patterns_v54 = t
T_Patterns_v54
v54
v6 :: T_Patterns_v6
v6 :: T_Patterns_v6
v6 = \ !(T_Patterns_vIn6 Identifier
_lhsIcon Identifier
_lhsInt) -> (
let !_hdX10 :: T_Pattern_s10
_hdX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_hd_)) in
let !_tlX12 :: T_Patterns_s12
_tlX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_tl_)) in
let !(T_Pattern_vOut23 Bool
_hdIcontainsVars Pattern
_hdIcopy Set (Identifier, Identifier)
_hdIdefinedAttrs Seq Error
_hdIerrors Set Identifier
_hdIlocals Pattern
_hdIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v23 -> T_Pattern_v23
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_hdX10 K_Pattern_s10 T_Pattern_v23
K_Pattern_v23 (T_Pattern_vIn23
T_Pattern_vIn23 ) in
let !(T_Patterns_vOut21 Bool
_tlIcontainsVars Patterns
_tlIcopy Set (Identifier, Identifier)
_tlIdefinedAttrs Seq Error
_tlIerrors Set Identifier
_tlIlocals Patterns
_tlIoutput) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v21 -> T_Patterns_v21
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_tlX12 K_Patterns_s12 T_Patterns_v21
K_Patterns_v21 (T_Patterns_vIn21
T_Patterns_vIn21 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool -> Bool
rule182 Bool
_hdIcontainsVars Bool
_tlIcontainsVars in
let !_copy :: Patterns
_copy = Pattern -> Patterns -> Patterns
rule186 Pattern
_hdIcopy Patterns
_tlIcopy in
let _lhsOcopy :: Patterns
!_lhsOcopy :: Patterns
_lhsOcopy = Patterns -> Patterns
forall a. a -> a
rule188 Patterns
_copy in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier)
-> Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule183 Set (Identifier, Identifier)
_hdIdefinedAttrs Set (Identifier, Identifier)
_tlIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule184 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier -> Set Identifier
rule185 Set Identifier
_hdIlocals Set Identifier
_tlIlocals in
let !_output :: Patterns
_output = Pattern -> Patterns -> Patterns
rule187 Pattern
_hdIoutput Patterns
_tlIoutput in
let _lhsOoutput :: Patterns
!_lhsOoutput :: Patterns
_lhsOoutput = Patterns -> Patterns
forall a. a -> a
rule189 Patterns
_output in
let !__result_ :: T_Patterns_vOut6
__result_ = Bool
-> Patterns
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Patterns
-> T_Patterns_vOut6
T_Patterns_vOut6 Bool
_lhsOcontainsVars Patterns
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Patterns
_lhsOoutput
in T_Patterns_vOut6
__result_ )
v21 :: T_Patterns_v21
v21 :: T_Patterns_v21
v21 = \ !(T_Patterns_vIn21
T_Patterns_vIn21 ) -> (
let !_hdX10 :: T_Pattern_s10
_hdX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_hd_)) in
let !_tlX12 :: T_Patterns_s12
_tlX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_tl_)) in
let !(T_Pattern_vOut23 Bool
_hdIcontainsVars Pattern
_hdIcopy Set (Identifier, Identifier)
_hdIdefinedAttrs Seq Error
_hdIerrors Set Identifier
_hdIlocals Pattern
_hdIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v23 -> T_Pattern_v23
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_hdX10 K_Pattern_s10 T_Pattern_v23
K_Pattern_v23 (T_Pattern_vIn23
T_Pattern_vIn23 ) in
let !(T_Patterns_vOut21 Bool
_tlIcontainsVars Patterns
_tlIcopy Set (Identifier, Identifier)
_tlIdefinedAttrs Seq Error
_tlIerrors Set Identifier
_tlIlocals Patterns
_tlIoutput) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v21 -> T_Patterns_v21
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_tlX12 K_Patterns_s12 T_Patterns_v21
K_Patterns_v21 (T_Patterns_vIn21
T_Patterns_vIn21 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool -> Bool
rule182 Bool
_hdIcontainsVars Bool
_tlIcontainsVars in
let !_copy :: Patterns
_copy = Pattern -> Patterns -> Patterns
rule186 Pattern
_hdIcopy Patterns
_tlIcopy in
let _lhsOcopy :: Patterns
!_lhsOcopy :: Patterns
_lhsOcopy = Patterns -> Patterns
forall a. a -> a
rule188 Patterns
_copy in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier)
-> Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule183 Set (Identifier, Identifier)
_hdIdefinedAttrs Set (Identifier, Identifier)
_tlIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule184 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier -> Set Identifier
rule185 Set Identifier
_hdIlocals Set Identifier
_tlIlocals in
let !_output :: Patterns
_output = Pattern -> Patterns -> Patterns
rule187 Pattern
_hdIoutput Patterns
_tlIoutput in
let _lhsOoutput :: Patterns
!_lhsOoutput :: Patterns
_lhsOoutput = Patterns -> Patterns
forall a. a -> a
rule189 Patterns
_output in
let !__result_ :: T_Patterns_vOut21
__result_ = Bool
-> Patterns
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Patterns
-> T_Patterns_vOut21
T_Patterns_vOut21 Bool
_lhsOcontainsVars Patterns
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Patterns
_lhsOoutput
in T_Patterns_vOut21
__result_ )
v38 :: T_Patterns_v38
v38 :: T_Patterns_v38
v38 = \ !(T_Patterns_vIn38
T_Patterns_vIn38 ) -> (
let !_hdX10 :: T_Pattern_s10
_hdX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_hd_)) in
let !_tlX12 :: T_Patterns_s12
_tlX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_tl_)) in
let !(T_Pattern_vOut22 Pattern
_hdIcopy Set (Identifier, Identifier)
_hdIdefinedAttrs Seq Error
_hdIerrors Set Identifier
_hdIlocals Pattern
_hdIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v22 -> T_Pattern_v22
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_hdX10 K_Pattern_s10 T_Pattern_v22
K_Pattern_v22 (T_Pattern_vIn22
T_Pattern_vIn22 ) in
let !(T_Patterns_vOut38 Patterns
_tlIcopy Set (Identifier, Identifier)
_tlIdefinedAttrs Seq Error
_tlIerrors Set Identifier
_tlIlocals Patterns
_tlIoutput) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v38 -> T_Patterns_v38
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_tlX12 K_Patterns_s12 T_Patterns_v38
K_Patterns_v38 (T_Patterns_vIn38
T_Patterns_vIn38 ) in
let !_copy :: Patterns
_copy = Pattern -> Patterns -> Patterns
rule186 Pattern
_hdIcopy Patterns
_tlIcopy in
let _lhsOcopy :: Patterns
!_lhsOcopy :: Patterns
_lhsOcopy = Patterns -> Patterns
forall a. a -> a
rule188 Patterns
_copy in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier)
-> Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule183 Set (Identifier, Identifier)
_hdIdefinedAttrs Set (Identifier, Identifier)
_tlIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule184 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier -> Set Identifier
rule185 Set Identifier
_hdIlocals Set Identifier
_tlIlocals in
let !_output :: Patterns
_output = Pattern -> Patterns -> Patterns
rule187 Pattern
_hdIoutput Patterns
_tlIoutput in
let _lhsOoutput :: Patterns
!_lhsOoutput :: Patterns
_lhsOoutput = Patterns -> Patterns
forall a. a -> a
rule189 Patterns
_output in
let !__result_ :: T_Patterns_vOut38
__result_ = Patterns
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Patterns
-> T_Patterns_vOut38
T_Patterns_vOut38 Patterns
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Patterns
_lhsOoutput
in T_Patterns_vOut38
__result_ )
v41 :: T_Patterns_v41
v41 :: T_Patterns_v41
v41 = \ !(T_Patterns_vIn41
T_Patterns_vIn41 ) -> (
let !_hdX10 :: T_Pattern_s10
_hdX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_hd_)) in
let !_tlX12 :: T_Patterns_s12
_tlX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_tl_)) in
let !(T_Pattern_vOut28 Bool
_hdIcontainsVars Set (Identifier, Identifier)
_hdIdefinedAttrs Seq Error
_hdIerrors Set Identifier
_hdIlocals Pattern
_hdIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v28 -> T_Pattern_v28
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_hdX10 K_Pattern_s10 T_Pattern_v28
K_Pattern_v28 (T_Pattern_vIn28
T_Pattern_vIn28 ) in
let !(T_Patterns_vOut41 Bool
_tlIcontainsVars Set (Identifier, Identifier)
_tlIdefinedAttrs Seq Error
_tlIerrors Set Identifier
_tlIlocals Patterns
_tlIoutput) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v41 -> T_Patterns_v41
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_tlX12 K_Patterns_s12 T_Patterns_v41
K_Patterns_v41 (T_Patterns_vIn41
T_Patterns_vIn41 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool -> Bool
rule182 Bool
_hdIcontainsVars Bool
_tlIcontainsVars in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier)
-> Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule183 Set (Identifier, Identifier)
_hdIdefinedAttrs Set (Identifier, Identifier)
_tlIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule184 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier -> Set Identifier
rule185 Set Identifier
_hdIlocals Set Identifier
_tlIlocals in
let !_output :: Patterns
_output = Pattern -> Patterns -> Patterns
rule187 Pattern
_hdIoutput Patterns
_tlIoutput in
let _lhsOoutput :: Patterns
!_lhsOoutput :: Patterns
_lhsOoutput = Patterns -> Patterns
forall a. a -> a
rule189 Patterns
_output in
let !__result_ :: T_Patterns_vOut41
__result_ = Bool
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Patterns
-> T_Patterns_vOut41
T_Patterns_vOut41 Bool
_lhsOcontainsVars Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Patterns
_lhsOoutput
in T_Patterns_vOut41
__result_ )
v49 :: T_Patterns_v49
v49 :: T_Patterns_v49
v49 = \ !(T_Patterns_vIn49
T_Patterns_vIn49 ) -> (
let !_hdX10 :: T_Pattern_s10
_hdX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_hd_)) in
let !_tlX12 :: T_Patterns_s12
_tlX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_tl_)) in
let !(T_Pattern_vOut42 Set (Identifier, Identifier)
_hdIdefinedAttrs Seq Error
_hdIerrors Set Identifier
_hdIlocals Pattern
_hdIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v42 -> T_Pattern_v42
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_hdX10 K_Pattern_s10 T_Pattern_v42
K_Pattern_v42 (T_Pattern_vIn42
T_Pattern_vIn42 ) in
let !(T_Patterns_vOut49 Set (Identifier, Identifier)
_tlIdefinedAttrs Seq Error
_tlIerrors Set Identifier
_tlIlocals Patterns
_tlIoutput) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v49 -> T_Patterns_v49
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_tlX12 K_Patterns_s12 T_Patterns_v49
K_Patterns_v49 (T_Patterns_vIn49
T_Patterns_vIn49 ) in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier)
-> Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule183 Set (Identifier, Identifier)
_hdIdefinedAttrs Set (Identifier, Identifier)
_tlIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule184 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier -> Set Identifier
rule185 Set Identifier
_hdIlocals Set Identifier
_tlIlocals in
let !_output :: Patterns
_output = Pattern -> Patterns -> Patterns
rule187 Pattern
_hdIoutput Patterns
_tlIoutput in
let _lhsOoutput :: Patterns
!_lhsOoutput :: Patterns
_lhsOoutput = Patterns -> Patterns
forall a. a -> a
rule189 Patterns
_output in
let !__result_ :: T_Patterns_vOut49
__result_ = Set (Identifier, Identifier)
-> Seq Error -> Set Identifier -> Patterns -> T_Patterns_vOut49
T_Patterns_vOut49 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Patterns
_lhsOoutput
in T_Patterns_vOut49
__result_ )
v54 :: T_Patterns_v54
v54 :: T_Patterns_v54
v54 = \ !(T_Patterns_vIn54
T_Patterns_vIn54 ) -> (
let !_hdX10 :: T_Pattern_s10
_hdX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_hd_)) in
let !_tlX12 :: T_Patterns_s12
_tlX12 = Identity T_Patterns_s12 -> T_Patterns_s12
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Patterns -> Identity T_Patterns_s12
attach_T_Patterns (T_Patterns
arg_tl_)) in
let !(T_Pattern_vOut50 Set (Identifier, Identifier)
_hdIdefinedAttrs Seq Error
_hdIerrors Set Identifier
_hdIlocals T_Pattern_s55
_hdX55) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v50 -> T_Pattern_v50
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_hdX10 K_Pattern_s10 T_Pattern_v50
K_Pattern_v50 (T_Pattern_vIn50
T_Pattern_vIn50 ) in
let !(T_Patterns_vOut54 Set (Identifier, Identifier)
_tlIdefinedAttrs Seq Error
_tlIerrors Set Identifier
_tlIlocals T_Patterns_s57
_tlX57) = T_Patterns_s12 -> K_Patterns_s12 T_Patterns_v54 -> T_Patterns_v54
T_Patterns_s12 -> forall t. K_Patterns_s12 t -> t
inv_Patterns_s12 T_Patterns_s12
_tlX12 K_Patterns_s12 T_Patterns_v54
K_Patterns_v54 (T_Patterns_vIn54
T_Patterns_vIn54 ) in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier)
-> Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule183 Set (Identifier, Identifier)
_hdIdefinedAttrs Set (Identifier, Identifier)
_tlIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule184 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier -> Set Identifier
rule185 Set Identifier
_hdIlocals Set Identifier
_tlIlocals in
let !__st_ :: T_Patterns_s57
__st_ = T_Pattern_s55 -> T_Patterns_s57 -> T_Patterns_s57
st57 T_Pattern_s55
_hdX55 T_Patterns_s57
_tlX57
!__result_ :: T_Patterns_vOut54
__result_ = Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> T_Patterns_s57
-> T_Patterns_vOut54
T_Patterns_vOut54 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals T_Patterns_s57
__st_
in T_Patterns_vOut54
__result_ )
in (forall t. K_Patterns_s12 t -> t) -> T_Patterns_s12
C_Patterns_s12 forall t. K_Patterns_s12 t -> t
k12
{-# NOINLINE st57 #-}
st57 :: T_Pattern_s55 -> T_Patterns_s57 -> T_Patterns_s57
st57 = \ !T_Pattern_s55
_hdX55 !T_Patterns_s57
_tlX57 -> let
k57 :: K_Patterns_s57 t -> t
k57 :: K_Patterns_s57 t -> t
k57 K_Patterns_s57 t
K_Patterns_v55 = t
T_Patterns_v55
v55
k57 K_Patterns_s57 t
K_Patterns_v57 = t
T_Patterns_v57
v57
v55 :: T_Patterns_v55
v55 :: T_Patterns_v55
v55 = \ !(T_Patterns_vIn55
T_Patterns_vIn55 ) -> (
let !(T_Pattern_vOut51 Bool
_hdIcontainsVars Pattern
_hdIoutput) = T_Pattern_s55 -> K_Pattern_s55 T_Pattern_v51 -> T_Pattern_v51
T_Pattern_s55 -> forall t. K_Pattern_s55 t -> t
inv_Pattern_s55 T_Pattern_s55
_hdX55 K_Pattern_s55 T_Pattern_v51
K_Pattern_v51 (T_Pattern_vIn51
T_Pattern_vIn51 ) in
let !(T_Patterns_vOut55 Bool
_tlIcontainsVars Patterns
_tlIoutput) = T_Patterns_s57 -> K_Patterns_s57 T_Patterns_v55 -> T_Patterns_v55
T_Patterns_s57 -> forall t. K_Patterns_s57 t -> t
inv_Patterns_s57 T_Patterns_s57
_tlX57 K_Patterns_s57 T_Patterns_v55
K_Patterns_v55 (T_Patterns_vIn55
T_Patterns_vIn55 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool -> Bool
rule182 Bool
_hdIcontainsVars Bool
_tlIcontainsVars in
let !_output :: Patterns
_output = Pattern -> Patterns -> Patterns
rule187 Pattern
_hdIoutput Patterns
_tlIoutput in
let _lhsOoutput :: Patterns
!_lhsOoutput :: Patterns
_lhsOoutput = Patterns -> Patterns
forall a. a -> a
rule189 Patterns
_output in
let !__result_ :: T_Patterns_vOut55
__result_ = Bool -> Patterns -> T_Patterns_vOut55
T_Patterns_vOut55 Bool
_lhsOcontainsVars Patterns
_lhsOoutput
in T_Patterns_vOut55
__result_ )
v57 :: T_Patterns_v57
v57 :: T_Patterns_v57
v57 = \ !(T_Patterns_vIn57
T_Patterns_vIn57 ) -> (
let !(T_Pattern_vOut56 Pattern
_hdIoutput) = T_Pattern_s55 -> K_Pattern_s55 T_Pattern_v56 -> T_Pattern_v56
T_Pattern_s55 -> forall t. K_Pattern_s55 t -> t
inv_Pattern_s55 T_Pattern_s55
_hdX55 K_Pattern_s55 T_Pattern_v56
K_Pattern_v56 (T_Pattern_vIn56
T_Pattern_vIn56 ) in
let !(T_Patterns_vOut57 Patterns
_tlIoutput) = T_Patterns_s57 -> K_Patterns_s57 T_Patterns_v57 -> T_Patterns_v57
T_Patterns_s57 -> forall t. K_Patterns_s57 t -> t
inv_Patterns_s57 T_Patterns_s57
_tlX57 K_Patterns_s57 T_Patterns_v57
K_Patterns_v57 (T_Patterns_vIn57
T_Patterns_vIn57 ) in
let !_output :: Patterns
_output = Pattern -> Patterns -> Patterns
rule187 Pattern
_hdIoutput Patterns
_tlIoutput in
let _lhsOoutput :: Patterns
!_lhsOoutput :: Patterns
_lhsOoutput = Patterns -> Patterns
forall a. a -> a
rule189 Patterns
_output in
let !__result_ :: T_Patterns_vOut57
__result_ = Patterns -> T_Patterns_vOut57
T_Patterns_vOut57 Patterns
_lhsOoutput
in T_Patterns_vOut57
__result_ )
in (forall t. K_Patterns_s57 t -> t) -> T_Patterns_s57
C_Patterns_s57 forall t. K_Patterns_s57 t -> t
k57
{-# NOINLINE[1] rule182 #-}
rule182 :: Bool -> Bool -> Bool
rule182 = \ ((!Bool
_hdIcontainsVars) :: Bool) ((!Bool
_tlIcontainsVars) :: Bool) ->
Bool
_hdIcontainsVars Bool -> Bool -> Bool
|| Bool
_tlIcontainsVars
{-# NOINLINE[1] rule183 #-}
rule183 :: Set (Identifier, Identifier)
-> Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule183 = \ ((!Set (Identifier, Identifier)
_hdIdefinedAttrs) :: Set (Identifier,Identifier)) ((!Set (Identifier, Identifier)
_tlIdefinedAttrs) :: Set (Identifier,Identifier)) ->
Set (Identifier, Identifier)
_hdIdefinedAttrs Set (Identifier, Identifier)
-> Set (Identifier, Identifier) -> Set (Identifier, Identifier)
forall a. Ord a => Set a -> Set a -> Set a
`Set.union` Set (Identifier, Identifier)
_tlIdefinedAttrs
{-# NOINLINE[1] rule184 #-}
rule184 :: Seq Error -> Seq Error -> Seq Error
rule184 = \ ((!Seq Error
_hdIerrors) :: Seq Error) ((!Seq Error
_tlIerrors) :: Seq Error) ->
Seq Error
_hdIerrors Seq Error -> Seq Error -> Seq Error
forall a. Seq a -> Seq a -> Seq a
Seq.>< Seq Error
_tlIerrors
{-# NOINLINE[1] rule185 #-}
rule185 :: Set Identifier -> Set Identifier -> Set Identifier
rule185 = \ ((!Set Identifier
_hdIlocals) :: Set Identifier) ((!Set Identifier
_tlIlocals) :: Set Identifier) ->
Set Identifier
_hdIlocals Set Identifier -> Set Identifier -> Set Identifier
forall a. Ord a => Set a -> Set a -> Set a
`Set.union` Set Identifier
_tlIlocals
{-# NOINLINE[1] rule186 #-}
rule186 :: Pattern -> Patterns -> Patterns
rule186 = \ ((!Pattern
_hdIcopy) :: Pattern) ((!Patterns
_tlIcopy) :: Patterns) ->
(:) Pattern
_hdIcopy Patterns
_tlIcopy
{-# NOINLINE[1] rule187 #-}
rule187 :: Pattern -> Patterns -> Patterns
rule187 = \ ((!Pattern
_hdIoutput) :: Pattern) ((!Patterns
_tlIoutput) :: Patterns) ->
(:) Pattern
_hdIoutput Patterns
_tlIoutput
{-# NOINLINE[1] rule188 #-}
rule188 :: p -> p
rule188 = \ !p
_copy ->
p
_copy
{-# NOINLINE[1] rule189 #-}
rule189 :: p -> p
rule189 = \ !p
_output ->
p
_output
{-# NOINLINE sem_Patterns_Nil #-}
sem_Patterns_Nil :: T_Patterns
sem_Patterns_Nil :: T_Patterns
sem_Patterns_Nil = Identity T_Patterns_s12 -> T_Patterns
T_Patterns (T_Patterns_s12 -> Identity T_Patterns_s12
forall (m :: * -> *) a. Monad m => a -> m a
return T_Patterns_s12
st12) where
{-# NOINLINE st12 #-}
!st12 :: T_Patterns_s12
st12 = let
k12 :: K_Patterns_s12 t -> t
k12 :: K_Patterns_s12 t -> t
k12 K_Patterns_s12 t
K_Patterns_v6 = t
T_Patterns_v6
v6
k12 K_Patterns_s12 t
K_Patterns_v21 = t
T_Patterns_v21
v21
k12 K_Patterns_s12 t
K_Patterns_v38 = t
T_Patterns_v38
v38
k12 K_Patterns_s12 t
K_Patterns_v41 = t
T_Patterns_v41
v41
k12 K_Patterns_s12 t
K_Patterns_v49 = t
T_Patterns_v49
v49
k12 K_Patterns_s12 t
K_Patterns_v54 = t
T_Patterns_v54
v54
v6 :: T_Patterns_v6
v6 :: T_Patterns_v6
v6 = \ !(T_Patterns_vIn6 Identifier
_lhsIcon Identifier
_lhsInt) -> (
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = () -> Bool
rule194 () in
let !_copy :: [a]
_copy = () -> [a]
forall a. () -> [a]
rule198 () in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = () -> Set (Identifier, Identifier)
forall a. () -> Set a
rule195 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule196 () in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = () -> Set Identifier
forall a. () -> Set a
rule197 () in
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule199 () in
let _lhsOcopy :: Patterns
!_lhsOcopy :: Patterns
_lhsOcopy = Patterns -> Patterns
forall a. a -> a
rule200 Patterns
forall a. [a]
_copy in
let _lhsOoutput :: Patterns
!_lhsOoutput :: Patterns
_lhsOoutput = Patterns -> Patterns
forall a. a -> a
rule201 Patterns
forall a. [a]
_output in
let !__result_ :: T_Patterns_vOut6
__result_ = Bool
-> Patterns
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Patterns
-> T_Patterns_vOut6
T_Patterns_vOut6 Bool
_lhsOcontainsVars Patterns
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Patterns
_lhsOoutput
in T_Patterns_vOut6
__result_ )
v21 :: T_Patterns_v21
v21 :: T_Patterns_v21
v21 = \ !(T_Patterns_vIn21
T_Patterns_vIn21 ) -> (
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = () -> Bool
rule194 () in
let !_copy :: [a]
_copy = () -> [a]
forall a. () -> [a]
rule198 () in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = () -> Set (Identifier, Identifier)
forall a. () -> Set a
rule195 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule196 () in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = () -> Set Identifier
forall a. () -> Set a
rule197 () in
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule199 () in
let _lhsOcopy :: Patterns
!_lhsOcopy :: Patterns
_lhsOcopy = Patterns -> Patterns
forall a. a -> a
rule200 Patterns
forall a. [a]
_copy in
let _lhsOoutput :: Patterns
!_lhsOoutput :: Patterns
_lhsOoutput = Patterns -> Patterns
forall a. a -> a
rule201 Patterns
forall a. [a]
_output in
let !__result_ :: T_Patterns_vOut21
__result_ = Bool
-> Patterns
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Patterns
-> T_Patterns_vOut21
T_Patterns_vOut21 Bool
_lhsOcontainsVars Patterns
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Patterns
_lhsOoutput
in T_Patterns_vOut21
__result_ )
v38 :: T_Patterns_v38
v38 :: T_Patterns_v38
v38 = \ !(T_Patterns_vIn38
T_Patterns_vIn38 ) -> (
let !_copy :: [a]
_copy = () -> [a]
forall a. () -> [a]
rule198 () in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = () -> Set (Identifier, Identifier)
forall a. () -> Set a
rule195 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule196 () in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = () -> Set Identifier
forall a. () -> Set a
rule197 () in
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule199 () in
let _lhsOcopy :: Patterns
!_lhsOcopy :: Patterns
_lhsOcopy = Patterns -> Patterns
forall a. a -> a
rule200 Patterns
forall a. [a]
_copy in
let _lhsOoutput :: Patterns
!_lhsOoutput :: Patterns
_lhsOoutput = Patterns -> Patterns
forall a. a -> a
rule201 Patterns
forall a. [a]
_output in
let !__result_ :: T_Patterns_vOut38
__result_ = Patterns
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Patterns
-> T_Patterns_vOut38
T_Patterns_vOut38 Patterns
_lhsOcopy Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Patterns
_lhsOoutput
in T_Patterns_vOut38
__result_ )
v41 :: T_Patterns_v41
v41 :: T_Patterns_v41
v41 = \ !(T_Patterns_vIn41
T_Patterns_vIn41 ) -> (
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = () -> Bool
rule194 () in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = () -> Set (Identifier, Identifier)
forall a. () -> Set a
rule195 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule196 () in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = () -> Set Identifier
forall a. () -> Set a
rule197 () in
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule199 () in
let _lhsOoutput :: Patterns
!_lhsOoutput :: Patterns
_lhsOoutput = Patterns -> Patterns
forall a. a -> a
rule201 Patterns
forall a. [a]
_output in
let !__result_ :: T_Patterns_vOut41
__result_ = Bool
-> Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Patterns
-> T_Patterns_vOut41
T_Patterns_vOut41 Bool
_lhsOcontainsVars Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Patterns
_lhsOoutput
in T_Patterns_vOut41
__result_ )
v49 :: T_Patterns_v49
v49 :: T_Patterns_v49
v49 = \ !(T_Patterns_vIn49
T_Patterns_vIn49 ) -> (
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = () -> Set (Identifier, Identifier)
forall a. () -> Set a
rule195 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule196 () in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = () -> Set Identifier
forall a. () -> Set a
rule197 () in
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule199 () in
let _lhsOoutput :: Patterns
!_lhsOoutput :: Patterns
_lhsOoutput = Patterns -> Patterns
forall a. a -> a
rule201 Patterns
forall a. [a]
_output in
let !__result_ :: T_Patterns_vOut49
__result_ = Set (Identifier, Identifier)
-> Seq Error -> Set Identifier -> Patterns -> T_Patterns_vOut49
T_Patterns_vOut49 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Patterns
_lhsOoutput
in T_Patterns_vOut49
__result_ )
v54 :: T_Patterns_v54
v54 :: T_Patterns_v54
v54 = \ !(T_Patterns_vIn54
T_Patterns_vIn54 ) -> (
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = () -> Set (Identifier, Identifier)
forall a. () -> Set a
rule195 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule196 () in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = () -> Set Identifier
forall a. () -> Set a
rule197 () in
let !__st_ :: T_Patterns_s57
__st_ = () -> T_Patterns_s57
st57 ()
!__result_ :: T_Patterns_vOut54
__result_ = Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> T_Patterns_s57
-> T_Patterns_vOut54
T_Patterns_vOut54 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals T_Patterns_s57
__st_
in T_Patterns_vOut54
__result_ )
in (forall t. K_Patterns_s12 t -> t) -> T_Patterns_s12
C_Patterns_s12 forall t. K_Patterns_s12 t -> t
k12
{-# NOINLINE st57 #-}
st57 :: () -> T_Patterns_s57
st57 = \ (()
_ :: ()) -> let
k57 :: K_Patterns_s57 t -> t
k57 :: K_Patterns_s57 t -> t
k57 K_Patterns_s57 t
K_Patterns_v55 = t
T_Patterns_v55
v55
k57 K_Patterns_s57 t
K_Patterns_v57 = t
T_Patterns_v57
v57
v55 :: T_Patterns_v55
v55 :: T_Patterns_v55
v55 = \ !(T_Patterns_vIn55
T_Patterns_vIn55 ) -> (
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = () -> Bool
rule194 () in
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule199 () in
let _lhsOoutput :: Patterns
!_lhsOoutput :: Patterns
_lhsOoutput = Patterns -> Patterns
forall a. a -> a
rule201 Patterns
forall a. [a]
_output in
let !__result_ :: T_Patterns_vOut55
__result_ = Bool -> Patterns -> T_Patterns_vOut55
T_Patterns_vOut55 Bool
_lhsOcontainsVars Patterns
_lhsOoutput
in T_Patterns_vOut55
__result_ )
v57 :: T_Patterns_v57
v57 :: T_Patterns_v57
v57 = \ !(T_Patterns_vIn57
T_Patterns_vIn57 ) -> (
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule199 () in
let _lhsOoutput :: Patterns
!_lhsOoutput :: Patterns
_lhsOoutput = Patterns -> Patterns
forall a. a -> a
rule201 Patterns
forall a. [a]
_output in
let !__result_ :: T_Patterns_vOut57
__result_ = Patterns -> T_Patterns_vOut57
T_Patterns_vOut57 Patterns
_lhsOoutput
in T_Patterns_vOut57
__result_ )
in (forall t. K_Patterns_s57 t -> t) -> T_Patterns_s57
C_Patterns_s57 forall t. K_Patterns_s57 t -> t
k57
{-# NOINLINE[1] rule194 #-}
rule194 :: () -> Bool
rule194 = \ (()
_ :: ()) ->
Bool
False
{-# NOINLINE[1] rule195 #-}
rule195 :: () -> Set a
rule195 = \ (()
_ :: ()) ->
Set a
forall a. Set a
Set.empty
{-# NOINLINE[1] rule196 #-}
rule196 :: () -> Seq a
rule196 = \ (()
_ :: ()) ->
Seq a
forall a. Seq a
Seq.empty
{-# NOINLINE[1] rule197 #-}
rule197 :: () -> Set a
rule197 = \ (()
_ :: ()) ->
Set a
forall a. Set a
Set.empty
{-# NOINLINE[1] rule198 #-}
rule198 :: () -> [a]
rule198 = \ (()
_ :: ()) ->
[]
{-# NOINLINE[1] rule199 #-}
rule199 :: () -> [a]
rule199 = \ (()
_ :: ()) ->
[]
{-# NOINLINE[1] rule200 #-}
rule200 :: p -> p
rule200 = \ !p
_copy ->
p
_copy
{-# NOINLINE[1] rule201 #-}
rule201 :: p -> p
rule201 = \ !p
_output ->
p
_output
data Inh_Production = Inh_Production { Inh_Production -> Map Identifier (Map Identifier [Expression])
aroundsIn_Inh_Production :: !(Map ConstructorIdent (Map Identifier [Expression])), Inh_Production -> Map Identifier (Map Identifier [Expression])
augmentsIn_Inh_Production :: !(Map ConstructorIdent (Map Identifier [Expression])), Inh_Production -> Map Identifier ConstructorType
constructorTypeMap_Inh_Production :: !(Map NontermIdent ConstructorType), Inh_Production -> Bool
cr_Inh_Production :: !(Bool), Inh_Production -> Attributes
inh_Inh_Production :: !(Attributes), Inh_Production -> Map Identifier Attributes
inhMap_Inh_Production :: !(Map Identifier Attributes), Inh_Production -> Attributes
inhOrig_Inh_Production :: !(Attributes), Inh_Production -> AttrOrderMap
manualAttrOrderMap_Inh_Production :: !(AttrOrderMap), Inh_Production
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
mergesIn_Inh_Production :: !(Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))), Inh_Production -> Set Identifier
nonterminals_Inh_Production :: !(Set NontermIdent), Inh_Production -> Identifier
nt_Inh_Production :: !(NontermIdent), Inh_Production -> Bool
o_rename_Inh_Production :: !(Bool), Inh_Production -> Options
options_Inh_Production :: !(Options), Inh_Production -> [Identifier]
params_Inh_Production :: !([Identifier]), Inh_Production -> Attributes
syn_Inh_Production :: !(Attributes), Inh_Production -> Map Identifier Attributes
synMap_Inh_Production :: !(Map Identifier Attributes), Inh_Production -> Attributes
synOrig_Inh_Production :: !(Attributes), Inh_Production -> [(Identifier, ComplexType)]
typeSyns_Inh_Production :: !(TypeSyns), Inh_Production -> Int
uniq_Inh_Production :: !(Int), Inh_Production -> Map Identifier ([Char], [Char], [Char])
useMap_Inh_Production :: !(Map Identifier (String,String,String)), Inh_Production -> Set Identifier
wrappers_Inh_Production :: !(Set NontermIdent) }
data Syn_Production = Syn_Production { Syn_Production -> Seq Error
errors_Syn_Production :: !(Seq Error), Syn_Production -> Production
output_Syn_Production :: !(Production), Syn_Production -> Int
uniq_Syn_Production :: !(Int) }
{-# INLINABLE wrap_Production #-}
wrap_Production :: T_Production -> Inh_Production -> (Syn_Production )
wrap_Production :: T_Production -> Inh_Production -> Syn_Production
wrap_Production !(T_Production Identity T_Production_s14
act) !(Inh_Production Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Map Identifier Attributes
_lhsIinhMap Attributes
_lhsIinhOrig AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Set Identifier
_lhsInonterminals Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions [Identifier]
_lhsIparams Attributes
_lhsIsyn Map Identifier Attributes
_lhsIsynMap Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers) =
Identity Syn_Production -> Syn_Production
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_Production_s14
sem <- Identity T_Production_s14
act
let arg7 :: T_Production_vIn7
arg7 = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
-> Map Identifier ConstructorType
-> Bool
-> Attributes
-> Map Identifier Attributes
-> Attributes
-> AttrOrderMap
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Set Identifier
-> Identifier
-> Bool
-> Options
-> [Identifier]
-> Attributes
-> Map Identifier Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Int
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> T_Production_vIn7
T_Production_vIn7 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Map Identifier Attributes
_lhsIinhMap Attributes
_lhsIinhOrig AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Set Identifier
_lhsInonterminals Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions [Identifier]
_lhsIparams Attributes
_lhsIsyn Map Identifier Attributes
_lhsIsynMap Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers
!(T_Production_vOut7 Seq Error
_lhsOerrors Production
_lhsOoutput Int
_lhsOuniq) <- T_Production_vOut7 -> Identity T_Production_vOut7
forall (m :: * -> *) a. Monad m => a -> m a
return (T_Production_s14
-> K_Production_s14 T_Production_v7 -> T_Production_v7
T_Production_s14 -> forall t. K_Production_s14 t -> t
inv_Production_s14 T_Production_s14
sem K_Production_s14 T_Production_v7
K_Production_v7 T_Production_vIn7
arg7)
Syn_Production -> Identity Syn_Production
forall (m :: * -> *) a. Monad m => a -> m a
return (Seq Error -> Production -> Int -> Syn_Production
Syn_Production Seq Error
_lhsOerrors Production
_lhsOoutput Int
_lhsOuniq)
)
{-# INLINE sem_Production #-}
sem_Production :: Production -> T_Production
sem_Production :: Production -> T_Production
sem_Production ( Production !Identifier
con_ ![Identifier]
params_ ![Type]
constraints_ Children
children_ [Rule]
rules_ TypeSigs
typeSigs_ !MaybeMacro
macro_ ) = Identifier
-> [Identifier]
-> [Type]
-> T_Children
-> T_Rules
-> T_TypeSigs
-> MaybeMacro
-> T_Production
sem_Production_Production Identifier
con_ [Identifier]
params_ [Type]
constraints_ ( Children -> T_Children
sem_Children Children
children_ ) ( [Rule] -> T_Rules
sem_Rules [Rule]
rules_ ) ( TypeSigs -> T_TypeSigs
sem_TypeSigs TypeSigs
typeSigs_ ) MaybeMacro
macro_
newtype T_Production = T_Production {
T_Production -> Identity T_Production_s14
attach_T_Production :: Identity (T_Production_s14 )
}
data T_Production_s14 where C_Production_s14 :: {
T_Production_s14 -> forall t. K_Production_s14 t -> t
inv_Production_s14 :: !(forall t. K_Production_s14 t -> t)
} -> T_Production_s14
data T_Production_s15 = C_Production_s15
data T_Production_s38 = C_Production_s38
newtype T_Production_s48 = C_Production_s48 {
T_Production_s48 -> T_Production_v40
inv_Production_s48 :: (T_Production_v40 )
}
data K_Production_s14 k where
K_Production_v7 :: K_Production_s14 (T_Production_v7 )
K_Production_v25 :: K_Production_s14 (T_Production_v25 )
K_Production_v39 :: K_Production_s14 (T_Production_v39 )
type T_Production_v7 = (T_Production_vIn7 ) -> (T_Production_vOut7 )
data T_Production_vIn7 = T_Production_vIn7 !(Map ConstructorIdent (Map Identifier [Expression])) !(Map ConstructorIdent (Map Identifier [Expression])) !(Map NontermIdent ConstructorType) !(Bool) !(Attributes) !(Map Identifier Attributes) !(Attributes) !(AttrOrderMap) !(Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))) !(Set NontermIdent) !(NontermIdent) !(Bool) !(Options) !([Identifier]) !(Attributes) !(Map Identifier Attributes) !(Attributes) !(TypeSyns) !(Int) !(Map Identifier (String,String,String)) !(Set NontermIdent)
data T_Production_vOut7 = T_Production_vOut7 !(Seq Error) !(Production) !(Int)
type T_Production_v25 = (T_Production_vIn25 ) -> (T_Production_vOut25 )
data T_Production_vIn25 = T_Production_vIn25 !(Map ConstructorIdent (Map Identifier [Expression])) !(Map ConstructorIdent (Map Identifier [Expression])) !(Map NontermIdent ConstructorType) !(Bool) !(Attributes) !(Map Identifier Attributes) !(AttrOrderMap) !(Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))) !(NontermIdent) !(Bool) !(Options) !([Identifier]) !(Attributes) !(Map Identifier Attributes) !(Attributes) !(TypeSyns) !(Int) !(Map Identifier (String,String,String)) !(Set NontermIdent)
data T_Production_vOut25 = T_Production_vOut25 !(Seq Error) !(Production) !(Int)
type T_Production_v39 = (T_Production_vIn39 ) -> (T_Production_vOut39 )
data T_Production_vIn39 = T_Production_vIn39 !(Map NontermIdent ConstructorType) !(Bool) !(Attributes) !(Map Identifier Attributes) !(AttrOrderMap) !(Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))) !(NontermIdent) !(Bool) !(Options) !(Attributes) !(Map Identifier Attributes) !(Attributes) !(TypeSyns) !(Map Identifier (String,String,String)) !(Set NontermIdent)
data T_Production_vOut39 = T_Production_vOut39 !(Seq Error) !(T_Production_s48 )
type T_Production_v40 = (T_Production_vIn40 ) -> (T_Production_vOut40 )
data T_Production_vIn40 = T_Production_vIn40 !(Map ConstructorIdent (Map Identifier [Expression])) !(Map ConstructorIdent (Map Identifier [Expression])) !([Identifier]) !(Int)
data T_Production_vOut40 = T_Production_vOut40 !(Production) !(Int)
{-# NOINLINE sem_Production_Production #-}
sem_Production_Production :: (ConstructorIdent) -> ([Identifier]) -> ([Type]) -> T_Children -> T_Rules -> T_TypeSigs -> (MaybeMacro) -> T_Production
sem_Production_Production :: Identifier
-> [Identifier]
-> [Type]
-> T_Children
-> T_Rules
-> T_TypeSigs
-> MaybeMacro
-> T_Production
sem_Production_Production !Identifier
arg_con_ ![Identifier]
arg_params_ ![Type]
arg_constraints_ T_Children
arg_children_ T_Rules
arg_rules_ T_TypeSigs
arg_typeSigs_ !MaybeMacro
arg_macro_ = Identity T_Production_s14 -> T_Production
T_Production (T_Production_s14 -> Identity T_Production_s14
forall (m :: * -> *) a. Monad m => a -> m a
return T_Production_s14
st14) where
{-# NOINLINE st14 #-}
!st14 :: T_Production_s14
st14 = let
k14 :: K_Production_s14 t -> t
k14 :: K_Production_s14 t -> t
k14 K_Production_s14 t
K_Production_v7 = t
T_Production_v7
v7
k14 K_Production_s14 t
K_Production_v25 = t
T_Production_v25
v25
k14 K_Production_s14 t
K_Production_v39 = t
T_Production_v39
v39
v7 :: T_Production_v7
v7 :: T_Production_v7
v7 = \ !(T_Production_vIn7 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Map Identifier Attributes
_lhsIinhMap Attributes
_lhsIinhOrig AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Set Identifier
_lhsInonterminals Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions [Identifier]
_lhsIparams Attributes
_lhsIsyn Map Identifier Attributes
_lhsIsynMap Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let !_childrenX2 :: T_Children_s2
_childrenX2 = Identity T_Children_s2 -> T_Children_s2
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Children -> Identity T_Children_s2
attach_T_Children (T_Children
arg_children_)) in
let !_rulesX20 :: T_Rules_s20
_rulesX20 = Identity T_Rules_s20 -> T_Rules_s20
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Rules -> Identity T_Rules_s20
attach_T_Rules (T_Rules
arg_rules_)) in
let !_typeSigsX24 :: T_TypeSigs_s24
_typeSigsX24 = Identity T_TypeSigs_s24 -> T_TypeSigs_s24
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_TypeSigs -> Identity T_TypeSigs_s24
attach_T_TypeSigs (T_TypeSigs
arg_typeSigs_)) in
let !_childrenOinhMap :: Map Identifier Attributes
_childrenOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule219 Map Identifier Attributes
_lhsIinhMap in
let !_mergesIn :: Map Identifier (Identifier, [Identifier], Expression)
_mergesIn = Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Identifier
-> Map Identifier (Identifier, [Identifier], Expression)
rule214 Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Identifier
arg_con_ in
let !_merged :: Set Identifier
_merged = Map Identifier (Identifier, [Identifier], Expression)
-> Set Identifier
forall k a c. Map k (a, [Identifier], c) -> Set Identifier
rule215 Map Identifier (Identifier, [Identifier], Expression)
_mergesIn in
let !_childrenOmerged :: Set Identifier
_childrenOmerged = Set Identifier -> Set Identifier
forall a. a -> a
rule220 Set Identifier
_merged in
let !_childrenOsynMap :: Map Identifier Attributes
_childrenOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule223 Map Identifier Attributes
_lhsIsynMap in
let !_orderDeps :: [Dependency]
_orderDeps = AttrOrderMap -> Identifier -> Identifier -> [Dependency]
rule210 AttrOrderMap
_lhsImanualAttrOrderMap Identifier
_lhsInt Identifier
arg_con_ in
let !_typeSigsOnt :: Identifier
_typeSigsOnt = Identifier -> Identifier
rule228 Identifier
_lhsInt in
let !_typeSigsOparams :: [Identifier]
_typeSigsOparams = [Identifier] -> [Identifier]
rule229 [Identifier]
_lhsIparams in
let !_aroundsIn :: Map Identifier [Expression]
_aroundsIn = Map Identifier (Map Identifier [Expression])
-> Identifier -> Map Identifier [Expression]
rule213 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Identifier
arg_con_ in
let !_rulesOoptions :: Options
_rulesOoptions = Options -> Options
rule226 Options
_lhsIoptions in
let !_rulesOuniq :: Int
_rulesOuniq = Int -> Int
rule227 Int
_lhsIuniq in
let !_augmentsIn :: Map Identifier [Expression]
_augmentsIn = Map Identifier (Map Identifier [Expression])
-> Identifier -> Map Identifier [Expression]
rule212 Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn Identifier
arg_con_ in
let !(T_Children_vOut14 Seq Error
_childrenIerrors [(Identifier, Type, ChildKind)]
_childrenIfields [(Identifier, Attributes)]
_childrenIinputs Children
_childrenIoutput [(Identifier, Attributes)]
_childrenIoutputs) = T_Children_s2 -> K_Children_s2 T_Children_v14 -> T_Children_v14
T_Children_s2 -> forall t. K_Children_s2 t -> t
inv_Children_s2 T_Children_s2
_childrenX2 K_Children_s2 T_Children_v14
K_Children_v14 (Map Identifier Attributes
-> Set Identifier -> Map Identifier Attributes -> T_Children_vIn14
T_Children_vIn14 Map Identifier Attributes
_childrenOinhMap Set Identifier
_childrenOmerged Map Identifier Attributes
_childrenOsynMap) in
let !(T_Rules_vOut24 Set (Identifier, Identifier)
_rulesIdefinedAttrs Seq Error
_rulesIerrors Set Identifier
_rulesIlocals [Rule]
_rulesIoutput Set Identifier
_rulesIruleNames Int
_rulesIuniq) = T_Rules_s20 -> K_Rules_s20 T_Rules_v24 -> T_Rules_v24
T_Rules_s20 -> forall t. K_Rules_s20 t -> t
inv_Rules_s20 T_Rules_s20
_rulesX20 K_Rules_s20 T_Rules_v24
K_Rules_v24 (Options -> Int -> T_Rules_vIn24
T_Rules_vIn24 Options
_rulesOoptions Int
_rulesOuniq) in
let !(T_TypeSigs_vOut12 TypeSigs
_typeSigsIoutput) = T_TypeSigs_s24 -> T_TypeSigs_v12
inv_TypeSigs_s24 T_TypeSigs_s24
_typeSigsX24 (Identifier -> [Identifier] -> T_TypeSigs_vIn12
T_TypeSigs_vIn12 Identifier
_typeSigsOnt [Identifier]
_typeSigsOparams) in
let !(![Rule]
_newRls,!Seq Error
_errs) = [(Identifier, Type, ChildKind)]
-> [(Identifier, Attributes)]
-> [(Identifier, Attributes)]
-> Map Identifier ConstructorType
-> Bool
-> Attributes
-> Identifier
-> Bool
-> Options
-> Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> Set (Identifier, Identifier)
-> Set Identifier
-> Identifier
-> ([Rule], Seq Error)
rule205 [(Identifier, Type, ChildKind)]
_childrenIfields [(Identifier, Attributes)]
_childrenIinputs [(Identifier, Attributes)]
_childrenIoutputs Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions Attributes
_lhsIsyn Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers Set (Identifier, Identifier)
_rulesIdefinedAttrs Set Identifier
_rulesIlocals Identifier
arg_con_ in
let !_orderErrs :: Seq Error
_orderErrs = [(Identifier, Attributes)]
-> [(Identifier, Attributes)]
-> Attributes
-> Identifier
-> Attributes
-> [Dependency]
-> Set Identifier
-> Set Identifier
-> Identifier
-> Seq Error
rule211 [(Identifier, Attributes)]
_childrenIinputs [(Identifier, Attributes)]
_childrenIoutputs Attributes
_lhsIinh Identifier
_lhsInt Attributes
_lhsIsyn [Dependency]
_orderDeps Set Identifier
_rulesIlocals Set Identifier
_rulesIruleNames Identifier
arg_con_ in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error -> Seq Error -> Seq Error
rule204 Seq Error
_childrenIerrors Seq Error
_errs Seq Error
_orderErrs Seq Error
_rulesIerrors in
let !_extra1 :: [Rule]
_extra1 = Map Identifier [Expression] -> [Rule] -> [Rule] -> [Rule]
rule206 Map Identifier [Expression]
_augmentsIn [Rule]
_newRls [Rule]
_rulesIoutput in
let !_extra2 :: [Rule]
_extra2 = Map Identifier [Expression] -> [Rule] -> [Rule]
rule207 Map Identifier [Expression]
_aroundsIn [Rule]
_extra1 in
let !_extra3 :: [Rule]
_extra3 = [Rule]
-> Map Identifier (Identifier, [Identifier], Expression) -> [Rule]
rule208 [Rule]
_extra2 Map Identifier (Identifier, [Identifier], Expression)
_mergesIn in
let _lhsOoutput :: Production
!_lhsOoutput :: Production
_lhsOoutput = Children
-> [Rule]
-> TypeSigs
-> Identifier
-> [Type]
-> MaybeMacro
-> [Identifier]
-> Production
rule209 Children
_childrenIoutput [Rule]
_extra3 TypeSigs
_typeSigsIoutput Identifier
arg_con_ [Type]
arg_constraints_ MaybeMacro
arg_macro_ [Identifier]
arg_params_ in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule217 Int
_rulesIuniq in
let !__result_ :: T_Production_vOut7
__result_ = Seq Error -> Production -> Int -> T_Production_vOut7
T_Production_vOut7 Seq Error
_lhsOerrors Production
_lhsOoutput Int
_lhsOuniq
in T_Production_vOut7
__result_ )
v25 :: T_Production_v25
v25 :: T_Production_v25
v25 = \ !(T_Production_vIn25 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions [Identifier]
_lhsIparams Attributes
_lhsIsyn Map Identifier Attributes
_lhsIsynMap Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let !_childrenX2 :: T_Children_s2
_childrenX2 = Identity T_Children_s2 -> T_Children_s2
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Children -> Identity T_Children_s2
attach_T_Children (T_Children
arg_children_)) in
let !_rulesX20 :: T_Rules_s20
_rulesX20 = Identity T_Rules_s20 -> T_Rules_s20
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Rules -> Identity T_Rules_s20
attach_T_Rules (T_Rules
arg_rules_)) in
let !_typeSigsX24 :: T_TypeSigs_s24
_typeSigsX24 = Identity T_TypeSigs_s24 -> T_TypeSigs_s24
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_TypeSigs -> Identity T_TypeSigs_s24
attach_T_TypeSigs (T_TypeSigs
arg_typeSigs_)) in
let !_childrenOinhMap :: Map Identifier Attributes
_childrenOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule219 Map Identifier Attributes
_lhsIinhMap in
let !_mergesIn :: Map Identifier (Identifier, [Identifier], Expression)
_mergesIn = Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Identifier
-> Map Identifier (Identifier, [Identifier], Expression)
rule214 Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Identifier
arg_con_ in
let !_merged :: Set Identifier
_merged = Map Identifier (Identifier, [Identifier], Expression)
-> Set Identifier
forall k a c. Map k (a, [Identifier], c) -> Set Identifier
rule215 Map Identifier (Identifier, [Identifier], Expression)
_mergesIn in
let !_childrenOmerged :: Set Identifier
_childrenOmerged = Set Identifier -> Set Identifier
forall a. a -> a
rule220 Set Identifier
_merged in
let !_childrenOsynMap :: Map Identifier Attributes
_childrenOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule223 Map Identifier Attributes
_lhsIsynMap in
let !_orderDeps :: [Dependency]
_orderDeps = AttrOrderMap -> Identifier -> Identifier -> [Dependency]
rule210 AttrOrderMap
_lhsImanualAttrOrderMap Identifier
_lhsInt Identifier
arg_con_ in
let !_typeSigsOnt :: Identifier
_typeSigsOnt = Identifier -> Identifier
rule228 Identifier
_lhsInt in
let !_typeSigsOparams :: [Identifier]
_typeSigsOparams = [Identifier] -> [Identifier]
rule229 [Identifier]
_lhsIparams in
let !_aroundsIn :: Map Identifier [Expression]
_aroundsIn = Map Identifier (Map Identifier [Expression])
-> Identifier -> Map Identifier [Expression]
rule213 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Identifier
arg_con_ in
let !_rulesOoptions :: Options
_rulesOoptions = Options -> Options
rule226 Options
_lhsIoptions in
let !_rulesOuniq :: Int
_rulesOuniq = Int -> Int
rule227 Int
_lhsIuniq in
let !_augmentsIn :: Map Identifier [Expression]
_augmentsIn = Map Identifier (Map Identifier [Expression])
-> Identifier -> Map Identifier [Expression]
rule212 Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn Identifier
arg_con_ in
let !(T_Children_vOut14 Seq Error
_childrenIerrors [(Identifier, Type, ChildKind)]
_childrenIfields [(Identifier, Attributes)]
_childrenIinputs Children
_childrenIoutput [(Identifier, Attributes)]
_childrenIoutputs) = T_Children_s2 -> K_Children_s2 T_Children_v14 -> T_Children_v14
T_Children_s2 -> forall t. K_Children_s2 t -> t
inv_Children_s2 T_Children_s2
_childrenX2 K_Children_s2 T_Children_v14
K_Children_v14 (Map Identifier Attributes
-> Set Identifier -> Map Identifier Attributes -> T_Children_vIn14
T_Children_vIn14 Map Identifier Attributes
_childrenOinhMap Set Identifier
_childrenOmerged Map Identifier Attributes
_childrenOsynMap) in
let !(T_Rules_vOut24 Set (Identifier, Identifier)
_rulesIdefinedAttrs Seq Error
_rulesIerrors Set Identifier
_rulesIlocals [Rule]
_rulesIoutput Set Identifier
_rulesIruleNames Int
_rulesIuniq) = T_Rules_s20 -> K_Rules_s20 T_Rules_v24 -> T_Rules_v24
T_Rules_s20 -> forall t. K_Rules_s20 t -> t
inv_Rules_s20 T_Rules_s20
_rulesX20 K_Rules_s20 T_Rules_v24
K_Rules_v24 (Options -> Int -> T_Rules_vIn24
T_Rules_vIn24 Options
_rulesOoptions Int
_rulesOuniq) in
let !(T_TypeSigs_vOut12 TypeSigs
_typeSigsIoutput) = T_TypeSigs_s24 -> T_TypeSigs_v12
inv_TypeSigs_s24 T_TypeSigs_s24
_typeSigsX24 (Identifier -> [Identifier] -> T_TypeSigs_vIn12
T_TypeSigs_vIn12 Identifier
_typeSigsOnt [Identifier]
_typeSigsOparams) in
let !(![Rule]
_newRls,!Seq Error
_errs) = [(Identifier, Type, ChildKind)]
-> [(Identifier, Attributes)]
-> [(Identifier, Attributes)]
-> Map Identifier ConstructorType
-> Bool
-> Attributes
-> Identifier
-> Bool
-> Options
-> Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> Set (Identifier, Identifier)
-> Set Identifier
-> Identifier
-> ([Rule], Seq Error)
rule205 [(Identifier, Type, ChildKind)]
_childrenIfields [(Identifier, Attributes)]
_childrenIinputs [(Identifier, Attributes)]
_childrenIoutputs Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions Attributes
_lhsIsyn Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers Set (Identifier, Identifier)
_rulesIdefinedAttrs Set Identifier
_rulesIlocals Identifier
arg_con_ in
let !_orderErrs :: Seq Error
_orderErrs = [(Identifier, Attributes)]
-> [(Identifier, Attributes)]
-> Attributes
-> Identifier
-> Attributes
-> [Dependency]
-> Set Identifier
-> Set Identifier
-> Identifier
-> Seq Error
rule211 [(Identifier, Attributes)]
_childrenIinputs [(Identifier, Attributes)]
_childrenIoutputs Attributes
_lhsIinh Identifier
_lhsInt Attributes
_lhsIsyn [Dependency]
_orderDeps Set Identifier
_rulesIlocals Set Identifier
_rulesIruleNames Identifier
arg_con_ in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error -> Seq Error -> Seq Error
rule204 Seq Error
_childrenIerrors Seq Error
_errs Seq Error
_orderErrs Seq Error
_rulesIerrors in
let !_extra1 :: [Rule]
_extra1 = Map Identifier [Expression] -> [Rule] -> [Rule] -> [Rule]
rule206 Map Identifier [Expression]
_augmentsIn [Rule]
_newRls [Rule]
_rulesIoutput in
let !_extra2 :: [Rule]
_extra2 = Map Identifier [Expression] -> [Rule] -> [Rule]
rule207 Map Identifier [Expression]
_aroundsIn [Rule]
_extra1 in
let !_extra3 :: [Rule]
_extra3 = [Rule]
-> Map Identifier (Identifier, [Identifier], Expression) -> [Rule]
rule208 [Rule]
_extra2 Map Identifier (Identifier, [Identifier], Expression)
_mergesIn in
let _lhsOoutput :: Production
!_lhsOoutput :: Production
_lhsOoutput = Children
-> [Rule]
-> TypeSigs
-> Identifier
-> [Type]
-> MaybeMacro
-> [Identifier]
-> Production
rule209 Children
_childrenIoutput [Rule]
_extra3 TypeSigs
_typeSigsIoutput Identifier
arg_con_ [Type]
arg_constraints_ MaybeMacro
arg_macro_ [Identifier]
arg_params_ in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule217 Int
_rulesIuniq in
let !__result_ :: T_Production_vOut25
__result_ = Seq Error -> Production -> Int -> T_Production_vOut25
T_Production_vOut25 Seq Error
_lhsOerrors Production
_lhsOoutput Int
_lhsOuniq
in T_Production_vOut25
__result_ )
v39 :: T_Production_v39
v39 :: T_Production_v39
v39 = \ !(T_Production_vIn39 Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions Attributes
_lhsIsyn Map Identifier Attributes
_lhsIsynMap Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let !_childrenX2 :: T_Children_s2
_childrenX2 = Identity T_Children_s2 -> T_Children_s2
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Children -> Identity T_Children_s2
attach_T_Children (T_Children
arg_children_)) in
let !_rulesX20 :: T_Rules_s20
_rulesX20 = Identity T_Rules_s20 -> T_Rules_s20
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Rules -> Identity T_Rules_s20
attach_T_Rules (T_Rules
arg_rules_)) in
let !_childrenOinhMap :: Map Identifier Attributes
_childrenOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule219 Map Identifier Attributes
_lhsIinhMap in
let !_mergesIn :: Map Identifier (Identifier, [Identifier], Expression)
_mergesIn = Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Identifier
-> Map Identifier (Identifier, [Identifier], Expression)
rule214 Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Identifier
arg_con_ in
let !_merged :: Set Identifier
_merged = Map Identifier (Identifier, [Identifier], Expression)
-> Set Identifier
forall k a c. Map k (a, [Identifier], c) -> Set Identifier
rule215 Map Identifier (Identifier, [Identifier], Expression)
_mergesIn in
let !_childrenOmerged :: Set Identifier
_childrenOmerged = Set Identifier -> Set Identifier
forall a. a -> a
rule220 Set Identifier
_merged in
let !_childrenOsynMap :: Map Identifier Attributes
_childrenOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule223 Map Identifier Attributes
_lhsIsynMap in
let !_orderDeps :: [Dependency]
_orderDeps = AttrOrderMap -> Identifier -> Identifier -> [Dependency]
rule210 AttrOrderMap
_lhsImanualAttrOrderMap Identifier
_lhsInt Identifier
arg_con_ in
let !(T_Children_vOut47 Seq Error
_childrenIerrors [(Identifier, Type, ChildKind)]
_childrenIfields [(Identifier, Attributes)]
_childrenIinputs [(Identifier, Attributes)]
_childrenIoutputs T_Children_s53
_childrenX53) = T_Children_s2 -> K_Children_s2 T_Children_v47 -> T_Children_v47
T_Children_s2 -> forall t. K_Children_s2 t -> t
inv_Children_s2 T_Children_s2
_childrenX2 K_Children_s2 T_Children_v47
K_Children_v47 (Map Identifier Attributes
-> Set Identifier -> Map Identifier Attributes -> T_Children_vIn47
T_Children_vIn47 Map Identifier Attributes
_childrenOinhMap Set Identifier
_childrenOmerged Map Identifier Attributes
_childrenOsynMap) in
let !(T_Rules_vOut30 Set (Identifier, Identifier)
_rulesIdefinedAttrs Seq Error
_rulesIerrors Set Identifier
_rulesIlocals Set Identifier
_rulesIruleNames T_Rules_s42
_rulesX42) = T_Rules_s20 -> K_Rules_s20 T_Rules_v30 -> T_Rules_v30
T_Rules_s20 -> forall t. K_Rules_s20 t -> t
inv_Rules_s20 T_Rules_s20
_rulesX20 K_Rules_s20 T_Rules_v30
K_Rules_v30 (T_Rules_vIn30
T_Rules_vIn30 ) in
let !(![Rule]
_newRls,!Seq Error
_errs) = [(Identifier, Type, ChildKind)]
-> [(Identifier, Attributes)]
-> [(Identifier, Attributes)]
-> Map Identifier ConstructorType
-> Bool
-> Attributes
-> Identifier
-> Bool
-> Options
-> Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> Set (Identifier, Identifier)
-> Set Identifier
-> Identifier
-> ([Rule], Seq Error)
rule205 [(Identifier, Type, ChildKind)]
_childrenIfields [(Identifier, Attributes)]
_childrenIinputs [(Identifier, Attributes)]
_childrenIoutputs Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions Attributes
_lhsIsyn Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers Set (Identifier, Identifier)
_rulesIdefinedAttrs Set Identifier
_rulesIlocals Identifier
arg_con_ in
let !_orderErrs :: Seq Error
_orderErrs = [(Identifier, Attributes)]
-> [(Identifier, Attributes)]
-> Attributes
-> Identifier
-> Attributes
-> [Dependency]
-> Set Identifier
-> Set Identifier
-> Identifier
-> Seq Error
rule211 [(Identifier, Attributes)]
_childrenIinputs [(Identifier, Attributes)]
_childrenIoutputs Attributes
_lhsIinh Identifier
_lhsInt Attributes
_lhsIsyn [Dependency]
_orderDeps Set Identifier
_rulesIlocals Set Identifier
_rulesIruleNames Identifier
arg_con_ in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error -> Seq Error -> Seq Error
rule204 Seq Error
_childrenIerrors Seq Error
_errs Seq Error
_orderErrs Seq Error
_rulesIerrors in
let !__st_ :: T_Production_s48
__st_ = T_Children_s53
-> Identifier
-> Options
-> Map Identifier (Identifier, [Identifier], Expression)
-> [Rule]
-> T_Rules_s42
-> T_Production_s48
st48 T_Children_s53
_childrenX53 Identifier
_lhsInt Options
_lhsIoptions Map Identifier (Identifier, [Identifier], Expression)
_mergesIn [Rule]
_newRls T_Rules_s42
_rulesX42
!__result_ :: T_Production_vOut39
__result_ = Seq Error -> T_Production_s48 -> T_Production_vOut39
T_Production_vOut39 Seq Error
_lhsOerrors T_Production_s48
__st_
in T_Production_vOut39
__result_ )
in (forall t. K_Production_s14 t -> t) -> T_Production_s14
C_Production_s14 forall t. K_Production_s14 t -> t
k14
{-# NOINLINE st48 #-}
st48 :: T_Children_s53
-> Identifier
-> Options
-> Map Identifier (Identifier, [Identifier], Expression)
-> [Rule]
-> T_Rules_s42
-> T_Production_s48
st48 = \ !T_Children_s53
_childrenX53 ((!Identifier
_lhsInt) :: NontermIdent) ((!Options
_lhsIoptions) :: Options) !Map Identifier (Identifier, [Identifier], Expression)
_mergesIn ![Rule]
_newRls !T_Rules_s42
_rulesX42 -> let
v40 :: T_Production_v40
v40 :: T_Production_v40
v40 = \ !(T_Production_vIn40 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn [Identifier]
_lhsIparams Int
_lhsIuniq) -> (
let !_typeSigsOnt :: Identifier
_typeSigsOnt = Identifier -> Identifier
rule228 Identifier
_lhsInt in
let !_typeSigsX24 :: T_TypeSigs_s24
_typeSigsX24 = Identity T_TypeSigs_s24 -> T_TypeSigs_s24
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_TypeSigs -> Identity T_TypeSigs_s24
attach_T_TypeSigs (T_TypeSigs
arg_typeSigs_)) in
let !_rulesOoptions :: Options
_rulesOoptions = Options -> Options
rule226 Options
_lhsIoptions in
let !_typeSigsOparams :: [Identifier]
_typeSigsOparams = [Identifier] -> [Identifier]
rule229 [Identifier]
_lhsIparams in
let !_aroundsIn :: Map Identifier [Expression]
_aroundsIn = Map Identifier (Map Identifier [Expression])
-> Identifier -> Map Identifier [Expression]
rule213 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Identifier
arg_con_ in
let !_rulesOuniq :: Int
_rulesOuniq = Int -> Int
rule227 Int
_lhsIuniq in
let !_augmentsIn :: Map Identifier [Expression]
_augmentsIn = Map Identifier (Map Identifier [Expression])
-> Identifier -> Map Identifier [Expression]
rule212 Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn Identifier
arg_con_ in
let !(T_Children_vOut48 Children
_childrenIoutput) = T_Children_s53 -> T_Children_v48
inv_Children_s53 T_Children_s53
_childrenX53 (T_Children_vIn48
T_Children_vIn48 ) in
let !(T_Rules_vOut31 [Rule]
_rulesIoutput Int
_rulesIuniq) = T_Rules_s42 -> T_Rules_v31
inv_Rules_s42 T_Rules_s42
_rulesX42 (Options -> Int -> T_Rules_vIn31
T_Rules_vIn31 Options
_rulesOoptions Int
_rulesOuniq) in
let !(T_TypeSigs_vOut12 TypeSigs
_typeSigsIoutput) = T_TypeSigs_s24 -> T_TypeSigs_v12
inv_TypeSigs_s24 T_TypeSigs_s24
_typeSigsX24 (Identifier -> [Identifier] -> T_TypeSigs_vIn12
T_TypeSigs_vIn12 Identifier
_typeSigsOnt [Identifier]
_typeSigsOparams) in
let !_extra1 :: [Rule]
_extra1 = Map Identifier [Expression] -> [Rule] -> [Rule] -> [Rule]
rule206 Map Identifier [Expression]
_augmentsIn [Rule]
_newRls [Rule]
_rulesIoutput in
let !_extra2 :: [Rule]
_extra2 = Map Identifier [Expression] -> [Rule] -> [Rule]
rule207 Map Identifier [Expression]
_aroundsIn [Rule]
_extra1 in
let !_extra3 :: [Rule]
_extra3 = [Rule]
-> Map Identifier (Identifier, [Identifier], Expression) -> [Rule]
rule208 [Rule]
_extra2 Map Identifier (Identifier, [Identifier], Expression)
_mergesIn in
let _lhsOoutput :: Production
!_lhsOoutput :: Production
_lhsOoutput = Children
-> [Rule]
-> TypeSigs
-> Identifier
-> [Type]
-> MaybeMacro
-> [Identifier]
-> Production
rule209 Children
_childrenIoutput [Rule]
_extra3 TypeSigs
_typeSigsIoutput Identifier
arg_con_ [Type]
arg_constraints_ MaybeMacro
arg_macro_ [Identifier]
arg_params_ in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule217 Int
_rulesIuniq in
let !__result_ :: T_Production_vOut40
__result_ = Production -> Int -> T_Production_vOut40
T_Production_vOut40 Production
_lhsOoutput Int
_lhsOuniq
in T_Production_vOut40
__result_ )
in T_Production_v40 -> T_Production_s48
C_Production_s48 T_Production_v40
v40
{-# NOINLINE[1] rule204 #-}
{-# LINE 412 "src-ag/DefaultRules.ag" #-}
rule204 = \ ((!_childrenIerrors) :: Seq Error) !_errs !_orderErrs ((!_rulesIerrors) :: Seq Error) ->
{-# LINE 412 "src-ag/DefaultRules.ag" #-}
_childrenIerrors >< _errs >< _rulesIerrors >< _orderErrs
{-# LINE 3527 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule205 #-}
{-# LINE 416 "src-ag/DefaultRules.ag" #-}
rule205 = \ ((!_childrenIfields) :: [(Identifier,Type,ChildKind)]) ((!_childrenIinputs) :: [(Identifier, Attributes)]) ((!_childrenIoutputs) :: [(Identifier, Attributes)]) ((!_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ((!_lhsIcr) :: Bool) ((!_lhsIinh) :: Attributes) ((!_lhsInt) :: NontermIdent) ((!_lhsIo_rename) :: Bool) ((!_lhsIoptions) :: Options) ((!_lhsIsyn) :: Attributes) ((!_lhsIsynOrig) :: Attributes) ((!_lhsItypeSyns) :: TypeSyns) ((!_lhsIuseMap) :: Map Identifier (String,String,String)) ((!_lhsIwrappers) :: Set NontermIdent) ((!_rulesIdefinedAttrs) :: Set (Identifier,Identifier)) ((!_rulesIlocals) :: Set Identifier) !con_ ->
{-# LINE 416 "src-ag/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.partitionWithKey (\k _ -> maybe False isSELFNonterminal $ Map.lookup k _lhsIsynOrig) _lhsIsyn
(_,undefAttrs)
= removeDefined _rulesIdefinedAttrs (_LHS, normalAttrs)
(useAttrs,others)
= splitAttrs _lhsIuseMap undefAttrs
(rules1, errors1)
= concatRE $ map (copyRule _lhsIoptions _lhsIwrappers _lhsInt con_ _lhsIcr locals)
(zip envs (map (removeDefined _rulesIdefinedAttrs) _childrenIinputs))
uRules
= map (useRule _lhsIoptions locals _childrenIoutputs) useAttrs
selfLocRules
= [ selfRule False attr $
lexTokens _lhsIoptions noPos $
constructor [(childSelf attr nm tp, nm) | (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
= buildConExpr (ocaml _lhsIoptions) (clean _lhsIoptions) _lhsIconstructorTypeMap _lhsItypeSyns _lhsIo_rename _lhsInt con_ fs
childExists ChildAttr = False
childExists _ = True
selfRules
= [ selfRule True attr [mkLocVar attr noPos Nothing]
| attr <- Map.keys selfAttrs
, not (Set.member (_LHS,attr) _rulesIdefinedAttrs)
]
(rules5, errs5)
= copyRule _lhsIoptions
_lhsIwrappers
_lhsInt
con_
_lhsIcr
locals
(lhs_env, (_LHS, others))
in (uRules++selfLocRules++selfRules++rules5++rules1, errors1><errs5)
{-# LINE 3588 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule206 #-}
{-# LINE 636 "src-ag/DefaultRules.ag" #-}
rule206 = \ !_augmentsIn !_newRls ((!_rulesIoutput) :: Rules) ->
{-# LINE 636 "src-ag/DefaultRules.ag" #-}
foldr addAugments (_rulesIoutput ++ _newRls) (Map.assocs _augmentsIn )
{-# LINE 3594 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule207 #-}
{-# LINE 637 "src-ag/DefaultRules.ag" #-}
rule207 = \ !_aroundsIn !_extra1 ->
{-# LINE 637 "src-ag/DefaultRules.ag" #-}
foldr addArounds _extra1 (Map.assocs _aroundsIn )
{-# LINE 3600 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule208 #-}
{-# LINE 638 "src-ag/DefaultRules.ag" #-}
rule208 = \ !_extra2 !_mergesIn ->
{-# LINE 638 "src-ag/DefaultRules.ag" #-}
foldr addMerges _extra2 (Map.assocs _mergesIn )
{-# LINE 3606 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule209 #-}
{-# LINE 639 "src-ag/DefaultRules.ag" #-}
rule209 = \ ((!_childrenIoutput) :: Children) !_extra3 ((!_typeSigsIoutput) :: TypeSigs) !con_ !constraints_ !macro_ !params_ ->
{-# LINE 639 "src-ag/DefaultRules.ag" #-}
Production con_ params_ constraints_ _childrenIoutput _extra3 _typeSigsIoutput macro_
{-# LINE 3612 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule210 #-}
{-# LINE 747 "src-ag/DefaultRules.ag" #-}
rule210 = \ ((!_lhsImanualAttrOrderMap) :: AttrOrderMap) ((!_lhsInt) :: NontermIdent) !con_ ->
{-# LINE 747 "src-ag/DefaultRules.ag" #-}
Set.toList $ Map.findWithDefault Set.empty con_ $ Map.findWithDefault Map.empty _lhsInt _lhsImanualAttrOrderMap
{-# LINE 3618 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule211 #-}
{-# LINE 750 "src-ag/DefaultRules.ag" #-}
rule211 = \ ((!_childrenIinputs) :: [(Identifier, Attributes)]) ((!_childrenIoutputs) :: [(Identifier, Attributes)]) ((!_lhsIinh) :: Attributes) ((!_lhsInt) :: NontermIdent) ((!_lhsIsyn) :: Attributes) !_orderDeps ((!_rulesIlocals) :: Set Identifier) ((!_rulesIruleNames) :: Set Identifier) !con_ ->
{-# LINE 750 "src-ag/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 3658 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule212 #-}
{-# LINE 805 "src-ag/DefaultRules.ag" #-}
rule212 = \ ((!_lhsIaugmentsIn) :: Map ConstructorIdent (Map Identifier [Expression])) !con_ ->
{-# LINE 805 "src-ag/DefaultRules.ag" #-}
Map.findWithDefault Map.empty con_ _lhsIaugmentsIn
{-# LINE 3664 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule213 #-}
{-# LINE 812 "src-ag/DefaultRules.ag" #-}
rule213 = \ ((!_lhsIaroundsIn) :: Map ConstructorIdent (Map Identifier [Expression])) !con_ ->
{-# LINE 812 "src-ag/DefaultRules.ag" #-}
Map.findWithDefault Map.empty con_ _lhsIaroundsIn
{-# LINE 3670 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule214 #-}
{-# LINE 820 "src-ag/DefaultRules.ag" #-}
rule214 = \ ((!_lhsImergesIn) :: Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))) !con_ ->
{-# LINE 820 "src-ag/DefaultRules.ag" #-}
Map.findWithDefault Map.empty con_ _lhsImergesIn
{-# LINE 3676 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule215 #-}
{-# LINE 821 "src-ag/DefaultRules.ag" #-}
rule215 = \ !_mergesIn ->
{-# LINE 821 "src-ag/DefaultRules.ag" #-}
Set.fromList [ c | (_,cs,_) <- Map.elems _mergesIn , c <- cs ]
{-# LINE 3682 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule217 #-}
rule217 = \ ((!_rulesIuniq) :: Int) ->
_rulesIuniq
{-# NOINLINE[1] rule219 #-}
rule219 = \ ((!_lhsIinhMap) :: Map Identifier Attributes) ->
_lhsIinhMap
{-# NOINLINE[1] rule220 #-}
rule220 = \ !_merged ->
_merged
{-# NOINLINE[1] rule223 #-}
rule223 = \ ((!_lhsIsynMap) :: Map Identifier Attributes) ->
_lhsIsynMap
{-# NOINLINE[1] rule226 #-}
rule226 = \ ((!_lhsIoptions) :: Options) ->
_lhsIoptions
{-# NOINLINE[1] rule227 #-}
rule227 = \ ((!_lhsIuniq) :: Int) ->
_lhsIuniq
{-# NOINLINE[1] rule228 #-}
rule228 = \ ((!_lhsInt) :: NontermIdent) ->
_lhsInt
{-# NOINLINE[1] rule229 #-}
rule229 = \ ((!_lhsIparams) :: [Identifier]) ->
_lhsIparams
data Inh_Productions = Inh_Productions { Inh_Productions -> Map Identifier (Map Identifier [Expression])
aroundsIn_Inh_Productions :: !(Map ConstructorIdent (Map Identifier [Expression])), Inh_Productions -> Map Identifier (Map Identifier [Expression])
augmentsIn_Inh_Productions :: !(Map ConstructorIdent (Map Identifier [Expression])), Inh_Productions -> Map Identifier ConstructorType
constructorTypeMap_Inh_Productions :: !(Map NontermIdent ConstructorType), Inh_Productions -> Bool
cr_Inh_Productions :: !(Bool), Inh_Productions -> Attributes
inh_Inh_Productions :: !(Attributes), Inh_Productions -> Map Identifier Attributes
inhMap_Inh_Productions :: !(Map Identifier Attributes), Inh_Productions -> Attributes
inhOrig_Inh_Productions :: !(Attributes), Inh_Productions -> AttrOrderMap
manualAttrOrderMap_Inh_Productions :: !(AttrOrderMap), Inh_Productions
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
mergesIn_Inh_Productions :: !(Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))), Inh_Productions -> Set Identifier
nonterminals_Inh_Productions :: !(Set NontermIdent), Inh_Productions -> Identifier
nt_Inh_Productions :: !(NontermIdent), Inh_Productions -> Bool
o_rename_Inh_Productions :: !(Bool), Inh_Productions -> Options
options_Inh_Productions :: !(Options), Inh_Productions -> [Identifier]
params_Inh_Productions :: !([Identifier]), Inh_Productions -> Attributes
syn_Inh_Productions :: !(Attributes), Inh_Productions -> Map Identifier Attributes
synMap_Inh_Productions :: !(Map Identifier Attributes), Inh_Productions -> Attributes
synOrig_Inh_Productions :: !(Attributes), Inh_Productions -> [(Identifier, ComplexType)]
typeSyns_Inh_Productions :: !(TypeSyns), Inh_Productions -> Int
uniq_Inh_Productions :: !(Int), Inh_Productions -> Map Identifier ([Char], [Char], [Char])
useMap_Inh_Productions :: !(Map Identifier (String,String,String)), Inh_Productions -> Set Identifier
wrappers_Inh_Productions :: !(Set NontermIdent) }
data Syn_Productions = Syn_Productions { Syn_Productions -> Seq Error
errors_Syn_Productions :: !(Seq Error), Syn_Productions -> Productions
output_Syn_Productions :: !(Productions), Syn_Productions -> Int
uniq_Syn_Productions :: !(Int) }
{-# INLINABLE wrap_Productions #-}
wrap_Productions :: T_Productions -> Inh_Productions -> (Syn_Productions )
wrap_Productions :: T_Productions -> Inh_Productions -> Syn_Productions
wrap_Productions !(T_Productions Identity T_Productions_s16
act) !(Inh_Productions Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Map Identifier Attributes
_lhsIinhMap Attributes
_lhsIinhOrig AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Set Identifier
_lhsInonterminals Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions [Identifier]
_lhsIparams Attributes
_lhsIsyn Map Identifier Attributes
_lhsIsynMap Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers) =
Identity Syn_Productions -> Syn_Productions
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_Productions_s16
sem <- Identity T_Productions_s16
act
let arg8 :: T_Productions_vIn8
arg8 = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
-> Map Identifier ConstructorType
-> Bool
-> Attributes
-> Map Identifier Attributes
-> Attributes
-> AttrOrderMap
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Set Identifier
-> Identifier
-> Bool
-> Options
-> [Identifier]
-> Attributes
-> Map Identifier Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Int
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> T_Productions_vIn8
T_Productions_vIn8 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Map Identifier Attributes
_lhsIinhMap Attributes
_lhsIinhOrig AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Set Identifier
_lhsInonterminals Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions [Identifier]
_lhsIparams Attributes
_lhsIsyn Map Identifier Attributes
_lhsIsynMap Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers
!(T_Productions_vOut8 Seq Error
_lhsOerrors Productions
_lhsOoutput Int
_lhsOuniq) <- T_Productions_vOut8 -> Identity T_Productions_vOut8
forall (m :: * -> *) a. Monad m => a -> m a
return (T_Productions_s16
-> K_Productions_s16 T_Productions_v8 -> T_Productions_v8
T_Productions_s16 -> forall t. K_Productions_s16 t -> t
inv_Productions_s16 T_Productions_s16
sem K_Productions_s16 T_Productions_v8
K_Productions_v8 T_Productions_vIn8
arg8)
Syn_Productions -> Identity Syn_Productions
forall (m :: * -> *) a. Monad m => a -> m a
return (Seq Error -> Productions -> Int -> Syn_Productions
Syn_Productions Seq Error
_lhsOerrors Productions
_lhsOoutput Int
_lhsOuniq)
)
{-# NOINLINE sem_Productions #-}
sem_Productions :: Productions -> T_Productions
sem_Productions :: Productions -> T_Productions
sem_Productions Productions
list = (T_Production -> T_Productions -> T_Productions)
-> T_Productions -> [T_Production] -> T_Productions
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
Prelude.foldr T_Production -> T_Productions -> T_Productions
sem_Productions_Cons T_Productions
sem_Productions_Nil ((Production -> T_Production) -> Productions -> [T_Production]
forall a b. (a -> b) -> [a] -> [b]
Prelude.map Production -> T_Production
sem_Production Productions
list)
newtype T_Productions = T_Productions {
T_Productions -> Identity T_Productions_s16
attach_T_Productions :: Identity (T_Productions_s16 )
}
data T_Productions_s16 where C_Productions_s16 :: {
T_Productions_s16 -> forall t. K_Productions_s16 t -> t
inv_Productions_s16 :: !(forall t. K_Productions_s16 t -> t)
} -> T_Productions_s16
data T_Productions_s17 = C_Productions_s17
data T_Productions_s30 = C_Productions_s30
newtype T_Productions_s39 = C_Productions_s39 {
T_Productions_s39 -> T_Productions_v27
inv_Productions_s39 :: (T_Productions_v27 )
}
data K_Productions_s16 k where
K_Productions_v8 :: K_Productions_s16 (T_Productions_v8 )
K_Productions_v17 :: K_Productions_s16 (T_Productions_v17 )
K_Productions_v26 :: K_Productions_s16 (T_Productions_v26 )
type T_Productions_v8 = (T_Productions_vIn8 ) -> (T_Productions_vOut8 )
data T_Productions_vIn8 = T_Productions_vIn8 !(Map ConstructorIdent (Map Identifier [Expression])) !(Map ConstructorIdent (Map Identifier [Expression])) !(Map NontermIdent ConstructorType) !(Bool) !(Attributes) !(Map Identifier Attributes) !(Attributes) !(AttrOrderMap) !(Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))) !(Set NontermIdent) !(NontermIdent) !(Bool) !(Options) !([Identifier]) !(Attributes) !(Map Identifier Attributes) !(Attributes) !(TypeSyns) !(Int) !(Map Identifier (String,String,String)) !(Set NontermIdent)
data T_Productions_vOut8 = T_Productions_vOut8 !(Seq Error) !(Productions) !(Int)
type T_Productions_v17 = (T_Productions_vIn17 ) -> (T_Productions_vOut17 )
data T_Productions_vIn17 = T_Productions_vIn17 !(Map ConstructorIdent (Map Identifier [Expression])) !(Map ConstructorIdent (Map Identifier [Expression])) !(Map NontermIdent ConstructorType) !(Bool) !(Attributes) !(Map Identifier Attributes) !(AttrOrderMap) !(Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))) !(NontermIdent) !(Bool) !(Options) !([Identifier]) !(Attributes) !(Map Identifier Attributes) !(Attributes) !(TypeSyns) !(Int) !(Map Identifier (String,String,String)) !(Set NontermIdent)
data T_Productions_vOut17 = T_Productions_vOut17 !(Seq Error) !(Productions) !(Int)
type T_Productions_v26 = (T_Productions_vIn26 ) -> (T_Productions_vOut26 )
data T_Productions_vIn26 = T_Productions_vIn26 !(Map NontermIdent ConstructorType) !(Bool) !(Attributes) !(Map Identifier Attributes) !(AttrOrderMap) !(Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))) !(NontermIdent) !(Bool) !(Options) !(Attributes) !(Map Identifier Attributes) !(Attributes) !(TypeSyns) !(Map Identifier (String,String,String)) !(Set NontermIdent)
data T_Productions_vOut26 = T_Productions_vOut26 !(Seq Error) !(T_Productions_s39 )
type T_Productions_v27 = (T_Productions_vIn27 ) -> (T_Productions_vOut27 )
data T_Productions_vIn27 = T_Productions_vIn27 !(Map ConstructorIdent (Map Identifier [Expression])) !(Map ConstructorIdent (Map Identifier [Expression])) !([Identifier]) !(Int)
data T_Productions_vOut27 = T_Productions_vOut27 !(Productions) !(Int)
{-# NOINLINE sem_Productions_Cons #-}
sem_Productions_Cons :: T_Production -> T_Productions -> T_Productions
sem_Productions_Cons :: T_Production -> T_Productions -> T_Productions
sem_Productions_Cons T_Production
arg_hd_ T_Productions
arg_tl_ = Identity T_Productions_s16 -> T_Productions
T_Productions (T_Productions_s16 -> Identity T_Productions_s16
forall (m :: * -> *) a. Monad m => a -> m a
return T_Productions_s16
st16) where
{-# NOINLINE st16 #-}
!st16 :: T_Productions_s16
st16 = let
k16 :: K_Productions_s16 t -> t
k16 :: K_Productions_s16 t -> t
k16 K_Productions_s16 t
K_Productions_v8 = t
T_Productions_v8
v8
k16 K_Productions_s16 t
K_Productions_v17 = t
T_Productions_v17
v17
k16 K_Productions_s16 t
K_Productions_v26 = t
T_Productions_v26
v26
v8 :: T_Productions_v8
v8 :: T_Productions_v8
v8 = \ !(T_Productions_vIn8 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Map Identifier Attributes
_lhsIinhMap Attributes
_lhsIinhOrig AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Set Identifier
_lhsInonterminals Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions [Identifier]
_lhsIparams Attributes
_lhsIsyn Map Identifier Attributes
_lhsIsynMap Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let !_hdX14 :: T_Production_s14
_hdX14 = Identity T_Production_s14 -> T_Production_s14
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Production -> Identity T_Production_s14
attach_T_Production (T_Production
arg_hd_)) in
let !_tlX16 :: T_Productions_s16
_tlX16 = Identity T_Productions_s16 -> T_Productions_s16
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Productions -> Identity T_Productions_s16
attach_T_Productions (T_Productions
arg_tl_)) in
let !_hdOconstructorTypeMap :: Map Identifier ConstructorType
_hdOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule236 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_hdOcr :: Bool
_hdOcr = Bool -> Bool
rule237 Bool
_lhsIcr in
let !_hdOinh :: Attributes
_hdOinh = Attributes -> Attributes
rule238 Attributes
_lhsIinh in
let !_hdOinhMap :: Map Identifier Attributes
_hdOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule239 Map Identifier Attributes
_lhsIinhMap in
let !_hdOmanualAttrOrderMap :: AttrOrderMap
_hdOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule241 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_hdOmergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_hdOmergesIn = Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
rule242 Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn in
let !_hdOnt :: Identifier
_hdOnt = Identifier -> Identifier
rule244 Identifier
_lhsInt in
let !_hdOo_rename :: Bool
_hdOo_rename = Bool -> Bool
rule245 Bool
_lhsIo_rename in
let !_hdOoptions :: Options
_hdOoptions = Options -> Options
rule246 Options
_lhsIoptions in
let !_hdOsyn :: Attributes
_hdOsyn = Attributes -> Attributes
rule248 Attributes
_lhsIsyn in
let !_hdOsynMap :: Map Identifier Attributes
_hdOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule249 Map Identifier Attributes
_lhsIsynMap in
let !_hdOsynOrig :: Attributes
_hdOsynOrig = Attributes -> Attributes
rule250 Attributes
_lhsIsynOrig in
let !_hdOtypeSyns :: [(Identifier, ComplexType)]
_hdOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule251 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_hdOuseMap :: Map Identifier ([Char], [Char], [Char])
_hdOuseMap = Map Identifier ([Char], [Char], [Char])
-> Map Identifier ([Char], [Char], [Char])
rule253 Map Identifier ([Char], [Char], [Char])
_lhsIuseMap in
let !_hdOwrappers :: Set Identifier
_hdOwrappers = Set Identifier -> Set Identifier
rule254 Set Identifier
_lhsIwrappers in
let !_tlOconstructorTypeMap :: Map Identifier ConstructorType
_tlOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule257 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_tlOcr :: Bool
_tlOcr = Bool -> Bool
rule258 Bool
_lhsIcr in
let !_tlOinh :: Attributes
_tlOinh = Attributes -> Attributes
rule259 Attributes
_lhsIinh in
let !_tlOinhMap :: Map Identifier Attributes
_tlOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule260 Map Identifier Attributes
_lhsIinhMap in
let !_tlOmanualAttrOrderMap :: AttrOrderMap
_tlOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule262 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_tlOmergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_tlOmergesIn = Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
rule263 Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn in
let !_tlOnt :: Identifier
_tlOnt = Identifier -> Identifier
rule265 Identifier
_lhsInt in
let !_tlOo_rename :: Bool
_tlOo_rename = Bool -> Bool
rule266 Bool
_lhsIo_rename in
let !_tlOoptions :: Options
_tlOoptions = Options -> Options
rule267 Options
_lhsIoptions in
let !_tlOsyn :: Attributes
_tlOsyn = Attributes -> Attributes
rule269 Attributes
_lhsIsyn in
let !_tlOsynMap :: Map Identifier Attributes
_tlOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule270 Map Identifier Attributes
_lhsIsynMap in
let !_tlOsynOrig :: Attributes
_tlOsynOrig = Attributes -> Attributes
rule271 Attributes
_lhsIsynOrig in
let !_tlOtypeSyns :: [(Identifier, ComplexType)]
_tlOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule272 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_tlOuseMap :: Map Identifier ([Char], [Char], [Char])
_tlOuseMap = Map Identifier ([Char], [Char], [Char])
-> Map Identifier ([Char], [Char], [Char])
rule274 Map Identifier ([Char], [Char], [Char])
_lhsIuseMap in
let !_tlOwrappers :: Set Identifier
_tlOwrappers = Set Identifier -> Set Identifier
rule275 Set Identifier
_lhsIwrappers in
let !_hdOaroundsIn :: Map Identifier (Map Identifier [Expression])
_hdOaroundsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule234 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn in
let !_hdOaugmentsIn :: Map Identifier (Map Identifier [Expression])
_hdOaugmentsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule235 Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn in
let !_hdOparams :: [Identifier]
_hdOparams = [Identifier] -> [Identifier]
rule247 [Identifier]
_lhsIparams in
let !_hdOuniq :: Int
_hdOuniq = Int -> Int
rule252 Int
_lhsIuniq in
let !_tlOaroundsIn :: Map Identifier (Map Identifier [Expression])
_tlOaroundsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule255 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn in
let !_tlOaugmentsIn :: Map Identifier (Map Identifier [Expression])
_tlOaugmentsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule256 Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn in
let !_tlOparams :: [Identifier]
_tlOparams = [Identifier] -> [Identifier]
rule268 [Identifier]
_lhsIparams in
let !(T_Production_vOut25 Seq Error
_hdIerrors Production
_hdIoutput Int
_hdIuniq) = T_Production_s14
-> K_Production_s14 T_Production_v25 -> T_Production_v25
T_Production_s14 -> forall t. K_Production_s14 t -> t
inv_Production_s14 T_Production_s14
_hdX14 K_Production_s14 T_Production_v25
K_Production_v25 (Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
-> Map Identifier ConstructorType
-> Bool
-> Attributes
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Identifier
-> Bool
-> Options
-> [Identifier]
-> Attributes
-> Map Identifier Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Int
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> T_Production_vIn25
T_Production_vIn25 Map Identifier (Map Identifier [Expression])
_hdOaroundsIn Map Identifier (Map Identifier [Expression])
_hdOaugmentsIn Map Identifier ConstructorType
_hdOconstructorTypeMap Bool
_hdOcr Attributes
_hdOinh Map Identifier Attributes
_hdOinhMap AttrOrderMap
_hdOmanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_hdOmergesIn Identifier
_hdOnt Bool
_hdOo_rename Options
_hdOoptions [Identifier]
_hdOparams Attributes
_hdOsyn Map Identifier Attributes
_hdOsynMap Attributes
_hdOsynOrig [(Identifier, ComplexType)]
_hdOtypeSyns Int
_hdOuniq Map Identifier ([Char], [Char], [Char])
_hdOuseMap Set Identifier
_hdOwrappers) in
let !(T_Productions_vOut26 Seq Error
_tlIerrors T_Productions_s39
_tlX39) = T_Productions_s16
-> K_Productions_s16 T_Productions_v26 -> T_Productions_v26
T_Productions_s16 -> forall t. K_Productions_s16 t -> t
inv_Productions_s16 T_Productions_s16
_tlX16 K_Productions_s16 T_Productions_v26
K_Productions_v26 (Map Identifier ConstructorType
-> Bool
-> Attributes
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Identifier
-> Bool
-> Options
-> Attributes
-> Map Identifier Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> T_Productions_vIn26
T_Productions_vIn26 Map Identifier ConstructorType
_tlOconstructorTypeMap Bool
_tlOcr Attributes
_tlOinh Map Identifier Attributes
_tlOinhMap AttrOrderMap
_tlOmanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_tlOmergesIn Identifier
_tlOnt Bool
_tlOo_rename Options
_tlOoptions Attributes
_tlOsyn Map Identifier Attributes
_tlOsynMap Attributes
_tlOsynOrig [(Identifier, ComplexType)]
_tlOtypeSyns Map Identifier ([Char], [Char], [Char])
_tlOuseMap Set Identifier
_tlOwrappers) in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule230 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let !_tlOuniq :: Int
_tlOuniq = Int -> Int
rule273 Int
_hdIuniq in
let !(T_Productions_vOut27 Productions
_tlIoutput Int
_tlIuniq) = T_Productions_s39 -> T_Productions_v27
inv_Productions_s39 T_Productions_s39
_tlX39 (Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
-> [Identifier]
-> Int
-> T_Productions_vIn27
T_Productions_vIn27 Map Identifier (Map Identifier [Expression])
_tlOaroundsIn Map Identifier (Map Identifier [Expression])
_tlOaugmentsIn [Identifier]
_tlOparams Int
_tlOuniq) in
let !_output :: Productions
_output = Production -> Productions -> Productions
rule231 Production
_hdIoutput Productions
_tlIoutput in
let _lhsOoutput :: Productions
!_lhsOoutput :: Productions
_lhsOoutput = Productions -> Productions
forall a. a -> a
rule232 Productions
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule233 Int
_tlIuniq in
let !__result_ :: T_Productions_vOut8
__result_ = Seq Error -> Productions -> Int -> T_Productions_vOut8
T_Productions_vOut8 Seq Error
_lhsOerrors Productions
_lhsOoutput Int
_lhsOuniq
in T_Productions_vOut8
__result_ )
v17 :: T_Productions_v17
v17 :: T_Productions_v17
v17 = \ !(T_Productions_vIn17 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions [Identifier]
_lhsIparams Attributes
_lhsIsyn Map Identifier Attributes
_lhsIsynMap Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let !_hdX14 :: T_Production_s14
_hdX14 = Identity T_Production_s14 -> T_Production_s14
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Production -> Identity T_Production_s14
attach_T_Production (T_Production
arg_hd_)) in
let !_tlX16 :: T_Productions_s16
_tlX16 = Identity T_Productions_s16 -> T_Productions_s16
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Productions -> Identity T_Productions_s16
attach_T_Productions (T_Productions
arg_tl_)) in
let !_hdOconstructorTypeMap :: Map Identifier ConstructorType
_hdOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule236 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_hdOcr :: Bool
_hdOcr = Bool -> Bool
rule237 Bool
_lhsIcr in
let !_hdOinh :: Attributes
_hdOinh = Attributes -> Attributes
rule238 Attributes
_lhsIinh in
let !_hdOinhMap :: Map Identifier Attributes
_hdOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule239 Map Identifier Attributes
_lhsIinhMap in
let !_hdOmanualAttrOrderMap :: AttrOrderMap
_hdOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule241 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_hdOmergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_hdOmergesIn = Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
rule242 Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn in
let !_hdOnt :: Identifier
_hdOnt = Identifier -> Identifier
rule244 Identifier
_lhsInt in
let !_hdOo_rename :: Bool
_hdOo_rename = Bool -> Bool
rule245 Bool
_lhsIo_rename in
let !_hdOoptions :: Options
_hdOoptions = Options -> Options
rule246 Options
_lhsIoptions in
let !_hdOsyn :: Attributes
_hdOsyn = Attributes -> Attributes
rule248 Attributes
_lhsIsyn in
let !_hdOsynMap :: Map Identifier Attributes
_hdOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule249 Map Identifier Attributes
_lhsIsynMap in
let !_hdOsynOrig :: Attributes
_hdOsynOrig = Attributes -> Attributes
rule250 Attributes
_lhsIsynOrig in
let !_hdOtypeSyns :: [(Identifier, ComplexType)]
_hdOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule251 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_hdOuseMap :: Map Identifier ([Char], [Char], [Char])
_hdOuseMap = Map Identifier ([Char], [Char], [Char])
-> Map Identifier ([Char], [Char], [Char])
rule253 Map Identifier ([Char], [Char], [Char])
_lhsIuseMap in
let !_hdOwrappers :: Set Identifier
_hdOwrappers = Set Identifier -> Set Identifier
rule254 Set Identifier
_lhsIwrappers in
let !_tlOconstructorTypeMap :: Map Identifier ConstructorType
_tlOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule257 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_tlOcr :: Bool
_tlOcr = Bool -> Bool
rule258 Bool
_lhsIcr in
let !_tlOinh :: Attributes
_tlOinh = Attributes -> Attributes
rule259 Attributes
_lhsIinh in
let !_tlOinhMap :: Map Identifier Attributes
_tlOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule260 Map Identifier Attributes
_lhsIinhMap in
let !_tlOmanualAttrOrderMap :: AttrOrderMap
_tlOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule262 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_tlOmergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_tlOmergesIn = Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
rule263 Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn in
let !_tlOnt :: Identifier
_tlOnt = Identifier -> Identifier
rule265 Identifier
_lhsInt in
let !_tlOo_rename :: Bool
_tlOo_rename = Bool -> Bool
rule266 Bool
_lhsIo_rename in
let !_tlOoptions :: Options
_tlOoptions = Options -> Options
rule267 Options
_lhsIoptions in
let !_tlOsyn :: Attributes
_tlOsyn = Attributes -> Attributes
rule269 Attributes
_lhsIsyn in
let !_tlOsynMap :: Map Identifier Attributes
_tlOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule270 Map Identifier Attributes
_lhsIsynMap in
let !_tlOsynOrig :: Attributes
_tlOsynOrig = Attributes -> Attributes
rule271 Attributes
_lhsIsynOrig in
let !_tlOtypeSyns :: [(Identifier, ComplexType)]
_tlOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule272 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_tlOuseMap :: Map Identifier ([Char], [Char], [Char])
_tlOuseMap = Map Identifier ([Char], [Char], [Char])
-> Map Identifier ([Char], [Char], [Char])
rule274 Map Identifier ([Char], [Char], [Char])
_lhsIuseMap in
let !_tlOwrappers :: Set Identifier
_tlOwrappers = Set Identifier -> Set Identifier
rule275 Set Identifier
_lhsIwrappers in
let !_hdOaroundsIn :: Map Identifier (Map Identifier [Expression])
_hdOaroundsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule234 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn in
let !_hdOaugmentsIn :: Map Identifier (Map Identifier [Expression])
_hdOaugmentsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule235 Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn in
let !_hdOparams :: [Identifier]
_hdOparams = [Identifier] -> [Identifier]
rule247 [Identifier]
_lhsIparams in
let !_hdOuniq :: Int
_hdOuniq = Int -> Int
rule252 Int
_lhsIuniq in
let !_tlOaroundsIn :: Map Identifier (Map Identifier [Expression])
_tlOaroundsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule255 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn in
let !_tlOaugmentsIn :: Map Identifier (Map Identifier [Expression])
_tlOaugmentsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule256 Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn in
let !_tlOparams :: [Identifier]
_tlOparams = [Identifier] -> [Identifier]
rule268 [Identifier]
_lhsIparams in
let !(T_Production_vOut25 Seq Error
_hdIerrors Production
_hdIoutput Int
_hdIuniq) = T_Production_s14
-> K_Production_s14 T_Production_v25 -> T_Production_v25
T_Production_s14 -> forall t. K_Production_s14 t -> t
inv_Production_s14 T_Production_s14
_hdX14 K_Production_s14 T_Production_v25
K_Production_v25 (Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
-> Map Identifier ConstructorType
-> Bool
-> Attributes
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Identifier
-> Bool
-> Options
-> [Identifier]
-> Attributes
-> Map Identifier Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Int
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> T_Production_vIn25
T_Production_vIn25 Map Identifier (Map Identifier [Expression])
_hdOaroundsIn Map Identifier (Map Identifier [Expression])
_hdOaugmentsIn Map Identifier ConstructorType
_hdOconstructorTypeMap Bool
_hdOcr Attributes
_hdOinh Map Identifier Attributes
_hdOinhMap AttrOrderMap
_hdOmanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_hdOmergesIn Identifier
_hdOnt Bool
_hdOo_rename Options
_hdOoptions [Identifier]
_hdOparams Attributes
_hdOsyn Map Identifier Attributes
_hdOsynMap Attributes
_hdOsynOrig [(Identifier, ComplexType)]
_hdOtypeSyns Int
_hdOuniq Map Identifier ([Char], [Char], [Char])
_hdOuseMap Set Identifier
_hdOwrappers) in
let !(T_Productions_vOut26 Seq Error
_tlIerrors T_Productions_s39
_tlX39) = T_Productions_s16
-> K_Productions_s16 T_Productions_v26 -> T_Productions_v26
T_Productions_s16 -> forall t. K_Productions_s16 t -> t
inv_Productions_s16 T_Productions_s16
_tlX16 K_Productions_s16 T_Productions_v26
K_Productions_v26 (Map Identifier ConstructorType
-> Bool
-> Attributes
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Identifier
-> Bool
-> Options
-> Attributes
-> Map Identifier Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> T_Productions_vIn26
T_Productions_vIn26 Map Identifier ConstructorType
_tlOconstructorTypeMap Bool
_tlOcr Attributes
_tlOinh Map Identifier Attributes
_tlOinhMap AttrOrderMap
_tlOmanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_tlOmergesIn Identifier
_tlOnt Bool
_tlOo_rename Options
_tlOoptions Attributes
_tlOsyn Map Identifier Attributes
_tlOsynMap Attributes
_tlOsynOrig [(Identifier, ComplexType)]
_tlOtypeSyns Map Identifier ([Char], [Char], [Char])
_tlOuseMap Set Identifier
_tlOwrappers) in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule230 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let !_tlOuniq :: Int
_tlOuniq = Int -> Int
rule273 Int
_hdIuniq in
let !(T_Productions_vOut27 Productions
_tlIoutput Int
_tlIuniq) = T_Productions_s39 -> T_Productions_v27
inv_Productions_s39 T_Productions_s39
_tlX39 (Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
-> [Identifier]
-> Int
-> T_Productions_vIn27
T_Productions_vIn27 Map Identifier (Map Identifier [Expression])
_tlOaroundsIn Map Identifier (Map Identifier [Expression])
_tlOaugmentsIn [Identifier]
_tlOparams Int
_tlOuniq) in
let !_output :: Productions
_output = Production -> Productions -> Productions
rule231 Production
_hdIoutput Productions
_tlIoutput in
let _lhsOoutput :: Productions
!_lhsOoutput :: Productions
_lhsOoutput = Productions -> Productions
forall a. a -> a
rule232 Productions
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule233 Int
_tlIuniq in
let !__result_ :: T_Productions_vOut17
__result_ = Seq Error -> Productions -> Int -> T_Productions_vOut17
T_Productions_vOut17 Seq Error
_lhsOerrors Productions
_lhsOoutput Int
_lhsOuniq
in T_Productions_vOut17
__result_ )
v26 :: T_Productions_v26
v26 :: T_Productions_v26
v26 = \ !(T_Productions_vIn26 Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions Attributes
_lhsIsyn Map Identifier Attributes
_lhsIsynMap Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let !_hdX14 :: T_Production_s14
_hdX14 = Identity T_Production_s14 -> T_Production_s14
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Production -> Identity T_Production_s14
attach_T_Production (T_Production
arg_hd_)) in
let !_tlX16 :: T_Productions_s16
_tlX16 = Identity T_Productions_s16 -> T_Productions_s16
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Productions -> Identity T_Productions_s16
attach_T_Productions (T_Productions
arg_tl_)) in
let !_hdOconstructorTypeMap :: Map Identifier ConstructorType
_hdOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule236 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_hdOcr :: Bool
_hdOcr = Bool -> Bool
rule237 Bool
_lhsIcr in
let !_hdOinh :: Attributes
_hdOinh = Attributes -> Attributes
rule238 Attributes
_lhsIinh in
let !_hdOinhMap :: Map Identifier Attributes
_hdOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule239 Map Identifier Attributes
_lhsIinhMap in
let !_hdOmanualAttrOrderMap :: AttrOrderMap
_hdOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule241 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_hdOmergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_hdOmergesIn = Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
rule242 Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn in
let !_hdOnt :: Identifier
_hdOnt = Identifier -> Identifier
rule244 Identifier
_lhsInt in
let !_hdOo_rename :: Bool
_hdOo_rename = Bool -> Bool
rule245 Bool
_lhsIo_rename in
let !_hdOoptions :: Options
_hdOoptions = Options -> Options
rule246 Options
_lhsIoptions in
let !_hdOsyn :: Attributes
_hdOsyn = Attributes -> Attributes
rule248 Attributes
_lhsIsyn in
let !_hdOsynMap :: Map Identifier Attributes
_hdOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule249 Map Identifier Attributes
_lhsIsynMap in
let !_hdOsynOrig :: Attributes
_hdOsynOrig = Attributes -> Attributes
rule250 Attributes
_lhsIsynOrig in
let !_hdOtypeSyns :: [(Identifier, ComplexType)]
_hdOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule251 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_hdOuseMap :: Map Identifier ([Char], [Char], [Char])
_hdOuseMap = Map Identifier ([Char], [Char], [Char])
-> Map Identifier ([Char], [Char], [Char])
rule253 Map Identifier ([Char], [Char], [Char])
_lhsIuseMap in
let !_hdOwrappers :: Set Identifier
_hdOwrappers = Set Identifier -> Set Identifier
rule254 Set Identifier
_lhsIwrappers in
let !_tlOconstructorTypeMap :: Map Identifier ConstructorType
_tlOconstructorTypeMap = Map Identifier ConstructorType -> Map Identifier ConstructorType
rule257 Map Identifier ConstructorType
_lhsIconstructorTypeMap in
let !_tlOcr :: Bool
_tlOcr = Bool -> Bool
rule258 Bool
_lhsIcr in
let !_tlOinh :: Attributes
_tlOinh = Attributes -> Attributes
rule259 Attributes
_lhsIinh in
let !_tlOinhMap :: Map Identifier Attributes
_tlOinhMap = Map Identifier Attributes -> Map Identifier Attributes
rule260 Map Identifier Attributes
_lhsIinhMap in
let !_tlOmanualAttrOrderMap :: AttrOrderMap
_tlOmanualAttrOrderMap = AttrOrderMap -> AttrOrderMap
rule262 AttrOrderMap
_lhsImanualAttrOrderMap in
let !_tlOmergesIn :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_tlOmergesIn = Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
rule263 Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn in
let !_tlOnt :: Identifier
_tlOnt = Identifier -> Identifier
rule265 Identifier
_lhsInt in
let !_tlOo_rename :: Bool
_tlOo_rename = Bool -> Bool
rule266 Bool
_lhsIo_rename in
let !_tlOoptions :: Options
_tlOoptions = Options -> Options
rule267 Options
_lhsIoptions in
let !_tlOsyn :: Attributes
_tlOsyn = Attributes -> Attributes
rule269 Attributes
_lhsIsyn in
let !_tlOsynMap :: Map Identifier Attributes
_tlOsynMap = Map Identifier Attributes -> Map Identifier Attributes
rule270 Map Identifier Attributes
_lhsIsynMap in
let !_tlOsynOrig :: Attributes
_tlOsynOrig = Attributes -> Attributes
rule271 Attributes
_lhsIsynOrig in
let !_tlOtypeSyns :: [(Identifier, ComplexType)]
_tlOtypeSyns = [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule272 [(Identifier, ComplexType)]
_lhsItypeSyns in
let !_tlOuseMap :: Map Identifier ([Char], [Char], [Char])
_tlOuseMap = Map Identifier ([Char], [Char], [Char])
-> Map Identifier ([Char], [Char], [Char])
rule274 Map Identifier ([Char], [Char], [Char])
_lhsIuseMap in
let !_tlOwrappers :: Set Identifier
_tlOwrappers = Set Identifier -> Set Identifier
rule275 Set Identifier
_lhsIwrappers in
let !(T_Production_vOut39 Seq Error
_hdIerrors T_Production_s48
_hdX48) = T_Production_s14
-> K_Production_s14 T_Production_v39 -> T_Production_v39
T_Production_s14 -> forall t. K_Production_s14 t -> t
inv_Production_s14 T_Production_s14
_hdX14 K_Production_s14 T_Production_v39
K_Production_v39 (Map Identifier ConstructorType
-> Bool
-> Attributes
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Identifier
-> Bool
-> Options
-> Attributes
-> Map Identifier Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> T_Production_vIn39
T_Production_vIn39 Map Identifier ConstructorType
_hdOconstructorTypeMap Bool
_hdOcr Attributes
_hdOinh Map Identifier Attributes
_hdOinhMap AttrOrderMap
_hdOmanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_hdOmergesIn Identifier
_hdOnt Bool
_hdOo_rename Options
_hdOoptions Attributes
_hdOsyn Map Identifier Attributes
_hdOsynMap Attributes
_hdOsynOrig [(Identifier, ComplexType)]
_hdOtypeSyns Map Identifier ([Char], [Char], [Char])
_hdOuseMap Set Identifier
_hdOwrappers) in
let !(T_Productions_vOut26 Seq Error
_tlIerrors T_Productions_s39
_tlX39) = T_Productions_s16
-> K_Productions_s16 T_Productions_v26 -> T_Productions_v26
T_Productions_s16 -> forall t. K_Productions_s16 t -> t
inv_Productions_s16 T_Productions_s16
_tlX16 K_Productions_s16 T_Productions_v26
K_Productions_v26 (Map Identifier ConstructorType
-> Bool
-> Attributes
-> Map Identifier Attributes
-> AttrOrderMap
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Identifier
-> Bool
-> Options
-> Attributes
-> Map Identifier Attributes
-> Attributes
-> [(Identifier, ComplexType)]
-> Map Identifier ([Char], [Char], [Char])
-> Set Identifier
-> T_Productions_vIn26
T_Productions_vIn26 Map Identifier ConstructorType
_tlOconstructorTypeMap Bool
_tlOcr Attributes
_tlOinh Map Identifier Attributes
_tlOinhMap AttrOrderMap
_tlOmanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_tlOmergesIn Identifier
_tlOnt Bool
_tlOo_rename Options
_tlOoptions Attributes
_tlOsyn Map Identifier Attributes
_tlOsynMap Attributes
_tlOsynOrig [(Identifier, ComplexType)]
_tlOtypeSyns Map Identifier ([Char], [Char], [Char])
_tlOuseMap Set Identifier
_tlOwrappers) in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule230 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let !__st_ :: T_Productions_s39
__st_ = T_Production_s48 -> T_Productions_s39 -> T_Productions_s39
st39 T_Production_s48
_hdX48 T_Productions_s39
_tlX39
!__result_ :: T_Productions_vOut26
__result_ = Seq Error -> T_Productions_s39 -> T_Productions_vOut26
T_Productions_vOut26 Seq Error
_lhsOerrors T_Productions_s39
__st_
in T_Productions_vOut26
__result_ )
in (forall t. K_Productions_s16 t -> t) -> T_Productions_s16
C_Productions_s16 forall t. K_Productions_s16 t -> t
k16
{-# NOINLINE st39 #-}
st39 :: T_Production_s48 -> T_Productions_s39 -> T_Productions_s39
st39 = \ !T_Production_s48
_hdX48 !T_Productions_s39
_tlX39 -> let
v27 :: T_Productions_v27
v27 :: T_Productions_v27
v27 = \ !(T_Productions_vIn27 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn [Identifier]
_lhsIparams Int
_lhsIuniq) -> (
let !_hdOaroundsIn :: Map Identifier (Map Identifier [Expression])
_hdOaroundsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule234 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn in
let !_hdOaugmentsIn :: Map Identifier (Map Identifier [Expression])
_hdOaugmentsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule235 Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn in
let !_hdOparams :: [Identifier]
_hdOparams = [Identifier] -> [Identifier]
rule247 [Identifier]
_lhsIparams in
let !_hdOuniq :: Int
_hdOuniq = Int -> Int
rule252 Int
_lhsIuniq in
let !_tlOaroundsIn :: Map Identifier (Map Identifier [Expression])
_tlOaroundsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule255 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn in
let !_tlOaugmentsIn :: Map Identifier (Map Identifier [Expression])
_tlOaugmentsIn = Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule256 Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn in
let !_tlOparams :: [Identifier]
_tlOparams = [Identifier] -> [Identifier]
rule268 [Identifier]
_lhsIparams in
let !(T_Production_vOut40 Production
_hdIoutput Int
_hdIuniq) = T_Production_s48 -> T_Production_v40
inv_Production_s48 T_Production_s48
_hdX48 (Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
-> [Identifier]
-> Int
-> T_Production_vIn40
T_Production_vIn40 Map Identifier (Map Identifier [Expression])
_hdOaroundsIn Map Identifier (Map Identifier [Expression])
_hdOaugmentsIn [Identifier]
_hdOparams Int
_hdOuniq) in
let !_tlOuniq :: Int
_tlOuniq = Int -> Int
rule273 Int
_hdIuniq in
let !(T_Productions_vOut27 Productions
_tlIoutput Int
_tlIuniq) = T_Productions_s39 -> T_Productions_v27
inv_Productions_s39 T_Productions_s39
_tlX39 (Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
-> [Identifier]
-> Int
-> T_Productions_vIn27
T_Productions_vIn27 Map Identifier (Map Identifier [Expression])
_tlOaroundsIn Map Identifier (Map Identifier [Expression])
_tlOaugmentsIn [Identifier]
_tlOparams Int
_tlOuniq) in
let !_output :: Productions
_output = Production -> Productions -> Productions
rule231 Production
_hdIoutput Productions
_tlIoutput in
let _lhsOoutput :: Productions
!_lhsOoutput :: Productions
_lhsOoutput = Productions -> Productions
forall a. a -> a
rule232 Productions
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule233 Int
_tlIuniq in
let !__result_ :: T_Productions_vOut27
__result_ = Productions -> Int -> T_Productions_vOut27
T_Productions_vOut27 Productions
_lhsOoutput Int
_lhsOuniq
in T_Productions_vOut27
__result_ )
in T_Productions_v27 -> T_Productions_s39
C_Productions_s39 T_Productions_v27
v27
{-# NOINLINE[1] rule230 #-}
rule230 :: Seq Error -> Seq Error -> Seq Error
rule230 = \ ((!Seq Error
_hdIerrors) :: Seq Error) ((!Seq Error
_tlIerrors) :: Seq Error) ->
Seq Error
_hdIerrors Seq Error -> Seq Error -> Seq Error
forall a. Seq a -> Seq a -> Seq a
Seq.>< Seq Error
_tlIerrors
{-# NOINLINE[1] rule231 #-}
rule231 :: Production -> Productions -> Productions
rule231 = \ ((!Production
_hdIoutput) :: Production) ((!Productions
_tlIoutput) :: Productions) ->
(:) Production
_hdIoutput Productions
_tlIoutput
{-# NOINLINE[1] rule232 #-}
rule232 :: p -> p
rule232 = \ !p
_output ->
p
_output
{-# NOINLINE[1] rule233 #-}
rule233 :: Int -> Int
rule233 = \ ((!Int
_tlIuniq) :: Int) ->
Int
_tlIuniq
{-# NOINLINE[1] rule234 #-}
rule234 :: Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule234 = \ ((!Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn) :: Map ConstructorIdent (Map Identifier [Expression])) ->
Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn
{-# NOINLINE[1] rule235 #-}
rule235 :: Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule235 = \ ((!Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn) :: Map ConstructorIdent (Map Identifier [Expression])) ->
Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn
{-# NOINLINE[1] rule236 #-}
rule236 :: Map Identifier ConstructorType -> Map Identifier ConstructorType
rule236 = \ ((!Map Identifier ConstructorType
_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->
Map Identifier ConstructorType
_lhsIconstructorTypeMap
{-# NOINLINE[1] rule237 #-}
rule237 :: Bool -> Bool
rule237 = \ ((!Bool
_lhsIcr) :: Bool) ->
Bool
_lhsIcr
{-# NOINLINE[1] rule238 #-}
rule238 :: Attributes -> Attributes
rule238 = \ ((!Attributes
_lhsIinh) :: Attributes) ->
Attributes
_lhsIinh
{-# NOINLINE[1] rule239 #-}
rule239 :: Map Identifier Attributes -> Map Identifier Attributes
rule239 = \ ((!Map Identifier Attributes
_lhsIinhMap) :: Map Identifier Attributes) ->
Map Identifier Attributes
_lhsIinhMap
{-# NOINLINE[1] rule241 #-}
rule241 :: AttrOrderMap -> AttrOrderMap
rule241 = \ ((!AttrOrderMap
_lhsImanualAttrOrderMap) :: AttrOrderMap) ->
AttrOrderMap
_lhsImanualAttrOrderMap
{-# NOINLINE[1] rule242 #-}
rule242 :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
rule242 = \ ((!Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn) :: Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))) ->
Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn
{-# NOINLINE[1] rule244 #-}
rule244 :: Identifier -> Identifier
rule244 = \ ((!Identifier
_lhsInt) :: NontermIdent) ->
Identifier
_lhsInt
{-# NOINLINE[1] rule245 #-}
rule245 :: Bool -> Bool
rule245 = \ ((!Bool
_lhsIo_rename) :: Bool) ->
Bool
_lhsIo_rename
{-# NOINLINE[1] rule246 #-}
rule246 :: Options -> Options
rule246 = \ ((!Options
_lhsIoptions) :: Options) ->
Options
_lhsIoptions
{-# NOINLINE[1] rule247 #-}
rule247 :: [Identifier] -> [Identifier]
rule247 = \ ((![Identifier]
_lhsIparams) :: [Identifier]) ->
[Identifier]
_lhsIparams
{-# NOINLINE[1] rule248 #-}
rule248 :: Attributes -> Attributes
rule248 = \ ((!Attributes
_lhsIsyn) :: Attributes) ->
Attributes
_lhsIsyn
{-# NOINLINE[1] rule249 #-}
rule249 :: Map Identifier Attributes -> Map Identifier Attributes
rule249 = \ ((!Map Identifier Attributes
_lhsIsynMap) :: Map Identifier Attributes) ->
Map Identifier Attributes
_lhsIsynMap
{-# NOINLINE[1] rule250 #-}
rule250 :: Attributes -> Attributes
rule250 = \ ((!Attributes
_lhsIsynOrig) :: Attributes) ->
Attributes
_lhsIsynOrig
{-# NOINLINE[1] rule251 #-}
rule251 :: [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule251 = \ ((![(Identifier, ComplexType)]
_lhsItypeSyns) :: TypeSyns) ->
[(Identifier, ComplexType)]
_lhsItypeSyns
{-# NOINLINE[1] rule252 #-}
rule252 :: Int -> Int
rule252 = \ ((!Int
_lhsIuniq) :: Int) ->
Int
_lhsIuniq
{-# NOINLINE[1] rule253 #-}
rule253 :: Map Identifier ([Char], [Char], [Char])
-> Map Identifier ([Char], [Char], [Char])
rule253 = \ ((!Map Identifier ([Char], [Char], [Char])
_lhsIuseMap) :: Map Identifier (String,String,String)) ->
Map Identifier ([Char], [Char], [Char])
_lhsIuseMap
{-# NOINLINE[1] rule254 #-}
rule254 :: Set Identifier -> Set Identifier
rule254 = \ ((!Set Identifier
_lhsIwrappers) :: Set NontermIdent) ->
Set Identifier
_lhsIwrappers
{-# NOINLINE[1] rule255 #-}
rule255 :: Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule255 = \ ((!Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn) :: Map ConstructorIdent (Map Identifier [Expression])) ->
Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn
{-# NOINLINE[1] rule256 #-}
rule256 :: Map Identifier (Map Identifier [Expression])
-> Map Identifier (Map Identifier [Expression])
rule256 = \ ((!Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn) :: Map ConstructorIdent (Map Identifier [Expression])) ->
Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn
{-# NOINLINE[1] rule257 #-}
rule257 :: Map Identifier ConstructorType -> Map Identifier ConstructorType
rule257 = \ ((!Map Identifier ConstructorType
_lhsIconstructorTypeMap) :: Map NontermIdent ConstructorType) ->
Map Identifier ConstructorType
_lhsIconstructorTypeMap
{-# NOINLINE[1] rule258 #-}
rule258 :: Bool -> Bool
rule258 = \ ((!Bool
_lhsIcr) :: Bool) ->
Bool
_lhsIcr
{-# NOINLINE[1] rule259 #-}
rule259 :: Attributes -> Attributes
rule259 = \ ((!Attributes
_lhsIinh) :: Attributes) ->
Attributes
_lhsIinh
{-# NOINLINE[1] rule260 #-}
rule260 :: Map Identifier Attributes -> Map Identifier Attributes
rule260 = \ ((!Map Identifier Attributes
_lhsIinhMap) :: Map Identifier Attributes) ->
Map Identifier Attributes
_lhsIinhMap
{-# NOINLINE[1] rule262 #-}
rule262 :: AttrOrderMap -> AttrOrderMap
rule262 = \ ((!AttrOrderMap
_lhsImanualAttrOrderMap) :: AttrOrderMap) ->
AttrOrderMap
_lhsImanualAttrOrderMap
{-# NOINLINE[1] rule263 #-}
rule263 :: Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
-> Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
rule263 = \ ((!Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn) :: Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))) ->
Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn
{-# NOINLINE[1] rule265 #-}
rule265 :: Identifier -> Identifier
rule265 = \ ((!Identifier
_lhsInt) :: NontermIdent) ->
Identifier
_lhsInt
{-# NOINLINE[1] rule266 #-}
rule266 :: Bool -> Bool
rule266 = \ ((!Bool
_lhsIo_rename) :: Bool) ->
Bool
_lhsIo_rename
{-# NOINLINE[1] rule267 #-}
rule267 :: Options -> Options
rule267 = \ ((!Options
_lhsIoptions) :: Options) ->
Options
_lhsIoptions
{-# NOINLINE[1] rule268 #-}
rule268 :: [Identifier] -> [Identifier]
rule268 = \ ((![Identifier]
_lhsIparams) :: [Identifier]) ->
[Identifier]
_lhsIparams
{-# NOINLINE[1] rule269 #-}
rule269 :: Attributes -> Attributes
rule269 = \ ((!Attributes
_lhsIsyn) :: Attributes) ->
Attributes
_lhsIsyn
{-# NOINLINE[1] rule270 #-}
rule270 :: Map Identifier Attributes -> Map Identifier Attributes
rule270 = \ ((!Map Identifier Attributes
_lhsIsynMap) :: Map Identifier Attributes) ->
Map Identifier Attributes
_lhsIsynMap
{-# NOINLINE[1] rule271 #-}
rule271 :: Attributes -> Attributes
rule271 = \ ((!Attributes
_lhsIsynOrig) :: Attributes) ->
Attributes
_lhsIsynOrig
{-# NOINLINE[1] rule272 #-}
rule272 :: [(Identifier, ComplexType)] -> [(Identifier, ComplexType)]
rule272 = \ ((![(Identifier, ComplexType)]
_lhsItypeSyns) :: TypeSyns) ->
[(Identifier, ComplexType)]
_lhsItypeSyns
{-# NOINLINE[1] rule273 #-}
rule273 :: Int -> Int
rule273 = \ ((!Int
_hdIuniq) :: Int) ->
Int
_hdIuniq
{-# NOINLINE[1] rule274 #-}
rule274 :: Map Identifier ([Char], [Char], [Char])
-> Map Identifier ([Char], [Char], [Char])
rule274 = \ ((!Map Identifier ([Char], [Char], [Char])
_lhsIuseMap) :: Map Identifier (String,String,String)) ->
Map Identifier ([Char], [Char], [Char])
_lhsIuseMap
{-# NOINLINE[1] rule275 #-}
rule275 :: Set Identifier -> Set Identifier
rule275 = \ ((!Set Identifier
_lhsIwrappers) :: Set NontermIdent) ->
Set Identifier
_lhsIwrappers
{-# NOINLINE sem_Productions_Nil #-}
sem_Productions_Nil :: T_Productions
sem_Productions_Nil :: T_Productions
sem_Productions_Nil = Identity T_Productions_s16 -> T_Productions
T_Productions (T_Productions_s16 -> Identity T_Productions_s16
forall (m :: * -> *) a. Monad m => a -> m a
return T_Productions_s16
st16) where
{-# NOINLINE st16 #-}
!st16 :: T_Productions_s16
st16 = let
k16 :: K_Productions_s16 t -> t
k16 :: K_Productions_s16 t -> t
k16 K_Productions_s16 t
K_Productions_v8 = t
T_Productions_v8
v8
k16 K_Productions_s16 t
K_Productions_v17 = t
T_Productions_v17
v17
k16 K_Productions_s16 t
K_Productions_v26 = t
T_Productions_v26
v26
v8 :: T_Productions_v8
v8 :: T_Productions_v8
v8 = \ !(T_Productions_vIn8 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Map Identifier Attributes
_lhsIinhMap Attributes
_lhsIinhOrig AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Set Identifier
_lhsInonterminals Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions [Identifier]
_lhsIparams Attributes
_lhsIsyn Map Identifier Attributes
_lhsIsynMap Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule276 () in
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule277 () in
let _lhsOoutput :: Productions
!_lhsOoutput :: Productions
_lhsOoutput = Productions -> Productions
forall a. a -> a
rule278 Productions
forall a. [a]
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule279 Int
_lhsIuniq in
let !__result_ :: T_Productions_vOut8
__result_ = Seq Error -> Productions -> Int -> T_Productions_vOut8
T_Productions_vOut8 Seq Error
_lhsOerrors Productions
_lhsOoutput Int
_lhsOuniq
in T_Productions_vOut8
__result_ )
v17 :: T_Productions_v17
v17 :: T_Productions_v17
v17 = \ !(T_Productions_vIn17 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions [Identifier]
_lhsIparams Attributes
_lhsIsyn Map Identifier Attributes
_lhsIsynMap Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Int
_lhsIuniq Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule276 () in
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule277 () in
let _lhsOoutput :: Productions
!_lhsOoutput :: Productions
_lhsOoutput = Productions -> Productions
forall a. a -> a
rule278 Productions
forall a. [a]
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule279 Int
_lhsIuniq in
let !__result_ :: T_Productions_vOut17
__result_ = Seq Error -> Productions -> Int -> T_Productions_vOut17
T_Productions_vOut17 Seq Error
_lhsOerrors Productions
_lhsOoutput Int
_lhsOuniq
in T_Productions_vOut17
__result_ )
v26 :: T_Productions_v26
v26 :: T_Productions_v26
v26 = \ !(T_Productions_vIn26 Map Identifier ConstructorType
_lhsIconstructorTypeMap Bool
_lhsIcr Attributes
_lhsIinh Map Identifier Attributes
_lhsIinhMap AttrOrderMap
_lhsImanualAttrOrderMap Map
Identifier (Map Identifier (Identifier, [Identifier], Expression))
_lhsImergesIn Identifier
_lhsInt Bool
_lhsIo_rename Options
_lhsIoptions Attributes
_lhsIsyn Map Identifier Attributes
_lhsIsynMap Attributes
_lhsIsynOrig [(Identifier, ComplexType)]
_lhsItypeSyns Map Identifier ([Char], [Char], [Char])
_lhsIuseMap Set Identifier
_lhsIwrappers) -> (
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule276 () in
let !__st_ :: T_Productions_s39
__st_ = () -> T_Productions_s39
st39 ()
!__result_ :: T_Productions_vOut26
__result_ = Seq Error -> T_Productions_s39 -> T_Productions_vOut26
T_Productions_vOut26 Seq Error
_lhsOerrors T_Productions_s39
__st_
in T_Productions_vOut26
__result_ )
in (forall t. K_Productions_s16 t -> t) -> T_Productions_s16
C_Productions_s16 forall t. K_Productions_s16 t -> t
k16
{-# NOINLINE st39 #-}
st39 :: () -> T_Productions_s39
st39 = \ (()
_ :: ()) -> let
v27 :: T_Productions_v27
v27 :: T_Productions_v27
v27 = \ !(T_Productions_vIn27 Map Identifier (Map Identifier [Expression])
_lhsIaroundsIn Map Identifier (Map Identifier [Expression])
_lhsIaugmentsIn [Identifier]
_lhsIparams Int
_lhsIuniq) -> (
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule277 () in
let _lhsOoutput :: Productions
!_lhsOoutput :: Productions
_lhsOoutput = Productions -> Productions
forall a. a -> a
rule278 Productions
forall a. [a]
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule279 Int
_lhsIuniq in
let !__result_ :: T_Productions_vOut27
__result_ = Productions -> Int -> T_Productions_vOut27
T_Productions_vOut27 Productions
_lhsOoutput Int
_lhsOuniq
in T_Productions_vOut27
__result_ )
in T_Productions_v27 -> T_Productions_s39
C_Productions_s39 T_Productions_v27
v27
{-# NOINLINE[1] rule276 #-}
rule276 :: () -> Seq a
rule276 = \ (()
_ :: ()) ->
Seq a
forall a. Seq a
Seq.empty
{-# NOINLINE[1] rule277 #-}
rule277 :: () -> [a]
rule277 = \ (()
_ :: ()) ->
[]
{-# NOINLINE[1] rule278 #-}
rule278 :: p -> p
rule278 = \ !p
_output ->
p
_output
{-# NOINLINE[1] rule279 #-}
rule279 :: Int -> Int
rule279 = \ ((!Int
_lhsIuniq) :: Int) ->
Int
_lhsIuniq
data Inh_Rule = Inh_Rule { Inh_Rule -> Identifier
con_Inh_Rule :: !(ConstructorIdent), Inh_Rule -> Map Identifier ConstructorType
constructorTypeMap_Inh_Rule :: !(Map NontermIdent ConstructorType), Inh_Rule -> Identifier
nt_Inh_Rule :: !(NontermIdent), Inh_Rule -> Options
options_Inh_Rule :: !(Options), Inh_Rule -> Int
uniq_Inh_Rule :: !(Int) }
data Syn_Rule = Syn_Rule { Syn_Rule -> Bool
containsVars_Syn_Rule :: !(Bool), Syn_Rule -> Set (Identifier, Identifier)
definedAttrs_Syn_Rule :: !(Set (Identifier,Identifier)), Syn_Rule -> Seq Error
errors_Syn_Rule :: !(Seq Error), Syn_Rule -> Bool
isPure_Syn_Rule :: !(Bool), Syn_Rule -> Set Identifier
locals_Syn_Rule :: !(Set Identifier), Syn_Rule -> Rule
output_Syn_Rule :: !(Rule), Syn_Rule -> [Rule]
outputs_Syn_Rule :: !(Rules), Syn_Rule -> Set Identifier
ruleNames_Syn_Rule :: !(Set Identifier), Syn_Rule -> Int
uniq_Syn_Rule :: !(Int) }
{-# INLINABLE wrap_Rule #-}
wrap_Rule :: T_Rule -> Inh_Rule -> (Syn_Rule )
wrap_Rule :: T_Rule -> Inh_Rule -> Syn_Rule
wrap_Rule !(T_Rule Identity T_Rule_s18
act) !(Inh_Rule Identifier
_lhsIcon Map Identifier ConstructorType
_lhsIconstructorTypeMap Identifier
_lhsInt Options
_lhsIoptions Int
_lhsIuniq) =
Identity Syn_Rule -> Syn_Rule
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_Rule_s18
sem <- Identity T_Rule_s18
act
let arg9 :: T_Rule_vIn9
arg9 = Identifier
-> Map Identifier ConstructorType
-> Identifier
-> Options
-> Int
-> T_Rule_vIn9
T_Rule_vIn9 Identifier
_lhsIcon Map Identifier ConstructorType
_lhsIconstructorTypeMap Identifier
_lhsInt Options
_lhsIoptions Int
_lhsIuniq
!(T_Rule_vOut9 Bool
_lhsOcontainsVars Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Bool
_lhsOisPure Set Identifier
_lhsOlocals Rule
_lhsOoutput [Rule]
_lhsOoutputs Set Identifier
_lhsOruleNames Int
_lhsOuniq) <- T_Rule_vOut9 -> Identity T_Rule_vOut9
forall (m :: * -> *) a. Monad m => a -> m a
return (T_Rule_s18 -> K_Rule_s18 T_Rule_v9 -> T_Rule_v9
T_Rule_s18 -> forall t. K_Rule_s18 t -> t
inv_Rule_s18 T_Rule_s18
sem K_Rule_s18 T_Rule_v9
K_Rule_v9 T_Rule_vIn9
arg9)
Syn_Rule -> Identity Syn_Rule
forall (m :: * -> *) a. Monad m => a -> m a
return (Bool
-> Set (Identifier, Identifier)
-> Seq Error
-> Bool
-> Set Identifier
-> Rule
-> [Rule]
-> Set Identifier
-> Int
-> Syn_Rule
Syn_Rule Bool
_lhsOcontainsVars Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Bool
_lhsOisPure Set Identifier
_lhsOlocals Rule
_lhsOoutput [Rule]
_lhsOoutputs Set Identifier
_lhsOruleNames Int
_lhsOuniq)
)
{-# INLINE sem_Rule #-}
sem_Rule :: Rule -> T_Rule
sem_Rule :: Rule -> T_Rule
sem_Rule ( Rule !Maybe Identifier
mbName_ Pattern
pattern_ !Expression
rhs_ !Bool
owrt_ ![Char]
origin_ !Bool
explicit_ !Bool
pure_ !Bool
identity_ !Maybe Error
mbError_ !Bool
eager_ ) = Maybe Identifier
-> T_Pattern
-> Expression
-> Bool
-> [Char]
-> Bool
-> Bool
-> Bool
-> Maybe Error
-> Bool
-> T_Rule
sem_Rule_Rule Maybe Identifier
mbName_ ( Pattern -> T_Pattern
sem_Pattern Pattern
pattern_ ) Expression
rhs_ Bool
owrt_ [Char]
origin_ Bool
explicit_ Bool
pure_ Bool
identity_ Maybe Error
mbError_ Bool
eager_
newtype T_Rule = T_Rule {
T_Rule -> Identity T_Rule_s18
attach_T_Rule :: Identity (T_Rule_s18 )
}
data T_Rule_s18 where C_Rule_s18 :: {
T_Rule_s18 -> forall t. K_Rule_s18 t -> t
inv_Rule_s18 :: !(forall t. K_Rule_s18 t -> t)
} -> T_Rule_s18
data T_Rule_s19 = C_Rule_s19
data T_Rule_s41 = C_Rule_s41
newtype T_Rule_s51 = C_Rule_s51 {
T_Rule_s51 -> T_Rule_v44
inv_Rule_s51 :: (T_Rule_v44 )
}
data K_Rule_s18 k where
K_Rule_v9 :: K_Rule_s18 (T_Rule_v9 )
K_Rule_v29 :: K_Rule_s18 (T_Rule_v29 )
K_Rule_v43 :: K_Rule_s18 (T_Rule_v43 )
type T_Rule_v9 = (T_Rule_vIn9 ) -> (T_Rule_vOut9 )
data T_Rule_vIn9 = T_Rule_vIn9 !(ConstructorIdent) !(Map NontermIdent ConstructorType) !(NontermIdent) !(Options) !(Int)
data T_Rule_vOut9 = T_Rule_vOut9 !(Bool) !(Set (Identifier,Identifier)) !(Seq Error) !(Bool) !(Set Identifier) !(Rule) !(Rules) !(Set Identifier) !(Int)
type T_Rule_v29 = (T_Rule_vIn29 ) -> (T_Rule_vOut29 )
data T_Rule_vIn29 = T_Rule_vIn29 !(Options) !(Int)
data T_Rule_vOut29 = T_Rule_vOut29 !(Bool) !(Set (Identifier,Identifier)) !(Seq Error) !(Bool) !(Set Identifier) !(Rules) !(Set Identifier) !(Int)
type T_Rule_v43 = (T_Rule_vIn43 ) -> (T_Rule_vOut43 )
data T_Rule_vIn43 = T_Rule_vIn43
data T_Rule_vOut43 = T_Rule_vOut43 !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(Set Identifier) !(T_Rule_s51 )
type T_Rule_v44 = (T_Rule_vIn44 ) -> (T_Rule_vOut44 )
data T_Rule_vIn44 = T_Rule_vIn44 !(Options) !(Int)
data T_Rule_vOut44 = T_Rule_vOut44 !(Bool) !(Bool) !(Rules) !(Int)
{-# NOINLINE sem_Rule_Rule #-}
sem_Rule_Rule :: (Maybe Identifier) -> T_Pattern -> (Expression) -> (Bool) -> (String) -> (Bool) -> (Bool) -> (Bool) -> (Maybe Error) -> (Bool) -> T_Rule
sem_Rule_Rule :: Maybe Identifier
-> T_Pattern
-> Expression
-> Bool
-> [Char]
-> Bool
-> Bool
-> Bool
-> Maybe Error
-> Bool
-> T_Rule
sem_Rule_Rule !Maybe Identifier
arg_mbName_ T_Pattern
arg_pattern_ !Expression
arg_rhs_ !Bool
arg_owrt_ ![Char]
arg_origin_ !Bool
arg_explicit_ !Bool
arg_pure_ !Bool
arg_identity_ !Maybe Error
arg_mbError_ !Bool
arg_eager_ = Identity T_Rule_s18 -> T_Rule
T_Rule (T_Rule_s18 -> Identity T_Rule_s18
forall (m :: * -> *) a. Monad m => a -> m a
return T_Rule_s18
st18) where
{-# NOINLINE st18 #-}
!st18 :: T_Rule_s18
st18 = let
k18 :: K_Rule_s18 t -> t
k18 :: K_Rule_s18 t -> t
k18 K_Rule_s18 t
K_Rule_v9 = t
T_Rule_v9
v9
k18 K_Rule_s18 t
K_Rule_v29 = t
T_Rule_v29
v29
k18 K_Rule_s18 t
K_Rule_v43 = t
T_Rule_v43
v43
v9 :: T_Rule_v9
v9 :: T_Rule_v9
v9 = \ !(T_Rule_vIn9 Identifier
_lhsIcon Map Identifier ConstructorType
_lhsIconstructorTypeMap Identifier
_lhsInt Options
_lhsIoptions Int
_lhsIuniq) -> (
let !_patternX10 :: T_Pattern_s10
_patternX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_pattern_)) in
let _lhsOisPure :: Bool
!_lhsOisPure :: Bool
_lhsOisPure = Bool -> Bool
forall a. a -> a
rule280 Bool
arg_pure_ in
let _lhsOruleNames :: Set Identifier
!_lhsOruleNames :: Set Identifier
_lhsOruleNames = Maybe Identifier -> Set Identifier
forall a. Maybe a -> Set a
rule284 Maybe Identifier
arg_mbName_ in
let !(T_Pattern_vOut28 Bool
_patternIcontainsVars Set (Identifier, Identifier)
_patternIdefinedAttrs Seq Error
_patternIerrors Set Identifier
_patternIlocals Pattern
_patternIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v28 -> T_Pattern_v28
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_patternX10 K_Pattern_s10 T_Pattern_v28
K_Pattern_v28 (T_Pattern_vIn28
T_Pattern_vIn28 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool
rule285 Bool
_patternIcontainsVars in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule286 Set (Identifier, Identifier)
_patternIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule287 Seq Error
_patternIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule288 Set Identifier
_patternIlocals in
let !_output :: Rule
_output = Pattern
-> Bool
-> Bool
-> Bool
-> Maybe Error
-> Maybe Identifier
-> [Char]
-> Bool
-> Bool
-> Expression
-> Rule
rule289 Pattern
_patternIoutput Bool
arg_eager_ Bool
arg_explicit_ Bool
arg_identity_ Maybe Error
arg_mbError_ Maybe Identifier
arg_mbName_ [Char]
arg_origin_ Bool
arg_owrt_ Bool
arg_pure_ Expression
arg_rhs_ in
let _lhsOoutput :: Rule
!_lhsOoutput :: Rule
_lhsOoutput = Rule -> Rule
forall a. a -> a
rule290 Rule
_output in
let !(!Rule
_output1,!Maybe Rule
_mbAlias) = Rule -> (Rule, Maybe Rule)
rule281 Rule
_output in
let _lhsOuniq :: Int
!(![Rule]
_outputs,!Int
_lhsOuniq) = Options -> Int -> Rule -> ([Rule], Int)
rule282 Options
_lhsIoptions Int
_lhsIuniq Rule
_output1 in
let _lhsOoutputs :: Rules
!_lhsOoutputs :: [Rule]
_lhsOoutputs = Maybe Rule -> [Rule] -> [Rule]
forall a. Maybe a -> [a] -> [a]
rule283 Maybe Rule
_mbAlias [Rule]
_outputs in
let !__result_ :: T_Rule_vOut9
__result_ = Bool
-> Set (Identifier, Identifier)
-> Seq Error
-> Bool
-> Set Identifier
-> Rule
-> [Rule]
-> Set Identifier
-> Int
-> T_Rule_vOut9
T_Rule_vOut9 Bool
_lhsOcontainsVars Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Bool
_lhsOisPure Set Identifier
_lhsOlocals Rule
_lhsOoutput [Rule]
_lhsOoutputs Set Identifier
_lhsOruleNames Int
_lhsOuniq
in T_Rule_vOut9
__result_ )
v29 :: T_Rule_v29
v29 :: T_Rule_v29
v29 = \ !(T_Rule_vIn29 Options
_lhsIoptions Int
_lhsIuniq) -> (
let !_patternX10 :: T_Pattern_s10
_patternX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_pattern_)) in
let _lhsOisPure :: Bool
!_lhsOisPure :: Bool
_lhsOisPure = Bool -> Bool
forall a. a -> a
rule280 Bool
arg_pure_ in
let _lhsOruleNames :: Set Identifier
!_lhsOruleNames :: Set Identifier
_lhsOruleNames = Maybe Identifier -> Set Identifier
forall a. Maybe a -> Set a
rule284 Maybe Identifier
arg_mbName_ in
let !(T_Pattern_vOut28 Bool
_patternIcontainsVars Set (Identifier, Identifier)
_patternIdefinedAttrs Seq Error
_patternIerrors Set Identifier
_patternIlocals Pattern
_patternIoutput) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v28 -> T_Pattern_v28
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_patternX10 K_Pattern_s10 T_Pattern_v28
K_Pattern_v28 (T_Pattern_vIn28
T_Pattern_vIn28 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool
rule285 Bool
_patternIcontainsVars in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule286 Set (Identifier, Identifier)
_patternIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule287 Seq Error
_patternIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule288 Set Identifier
_patternIlocals in
let !_output :: Rule
_output = Pattern
-> Bool
-> Bool
-> Bool
-> Maybe Error
-> Maybe Identifier
-> [Char]
-> Bool
-> Bool
-> Expression
-> Rule
rule289 Pattern
_patternIoutput Bool
arg_eager_ Bool
arg_explicit_ Bool
arg_identity_ Maybe Error
arg_mbError_ Maybe Identifier
arg_mbName_ [Char]
arg_origin_ Bool
arg_owrt_ Bool
arg_pure_ Expression
arg_rhs_ in
let !(!Rule
_output1,!Maybe Rule
_mbAlias) = Rule -> (Rule, Maybe Rule)
rule281 Rule
_output in
let _lhsOuniq :: Int
!(![Rule]
_outputs,!Int
_lhsOuniq) = Options -> Int -> Rule -> ([Rule], Int)
rule282 Options
_lhsIoptions Int
_lhsIuniq Rule
_output1 in
let _lhsOoutputs :: Rules
!_lhsOoutputs :: [Rule]
_lhsOoutputs = Maybe Rule -> [Rule] -> [Rule]
forall a. Maybe a -> [a] -> [a]
rule283 Maybe Rule
_mbAlias [Rule]
_outputs in
let !__result_ :: T_Rule_vOut29
__result_ = Bool
-> Set (Identifier, Identifier)
-> Seq Error
-> Bool
-> Set Identifier
-> [Rule]
-> Set Identifier
-> Int
-> T_Rule_vOut29
T_Rule_vOut29 Bool
_lhsOcontainsVars Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Bool
_lhsOisPure Set Identifier
_lhsOlocals [Rule]
_lhsOoutputs Set Identifier
_lhsOruleNames Int
_lhsOuniq
in T_Rule_vOut29
__result_ )
v43 :: T_Rule_v43
v43 :: T_Rule_v43
v43 = \ !(T_Rule_vIn43
T_Rule_vIn43 ) -> (
let !_patternX10 :: T_Pattern_s10
_patternX10 = Identity T_Pattern_s10 -> T_Pattern_s10
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Pattern -> Identity T_Pattern_s10
attach_T_Pattern (T_Pattern
arg_pattern_)) in
let _lhsOruleNames :: Set Identifier
!_lhsOruleNames :: Set Identifier
_lhsOruleNames = Maybe Identifier -> Set Identifier
forall a. Maybe a -> Set a
rule284 Maybe Identifier
arg_mbName_ in
let !(T_Pattern_vOut50 Set (Identifier, Identifier)
_patternIdefinedAttrs Seq Error
_patternIerrors Set Identifier
_patternIlocals T_Pattern_s55
_patternX55) = T_Pattern_s10 -> K_Pattern_s10 T_Pattern_v50 -> T_Pattern_v50
T_Pattern_s10 -> forall t. K_Pattern_s10 t -> t
inv_Pattern_s10 T_Pattern_s10
_patternX10 K_Pattern_s10 T_Pattern_v50
K_Pattern_v50 (T_Pattern_vIn50
T_Pattern_vIn50 ) in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule286 Set (Identifier, Identifier)
_patternIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error
rule287 Seq Error
_patternIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier
rule288 Set Identifier
_patternIlocals in
let !__st_ :: T_Rule_s51
__st_ = T_Pattern_s55 -> T_Rule_s51
st51 T_Pattern_s55
_patternX55
!__result_ :: T_Rule_vOut43
__result_ = Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Set Identifier
-> T_Rule_s51
-> T_Rule_vOut43
T_Rule_vOut43 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Set Identifier
_lhsOruleNames T_Rule_s51
__st_
in T_Rule_vOut43
__result_ )
in (forall t. K_Rule_s18 t -> t) -> T_Rule_s18
C_Rule_s18 forall t. K_Rule_s18 t -> t
k18
{-# NOINLINE st51 #-}
st51 :: T_Pattern_s55 -> T_Rule_s51
st51 = \ !T_Pattern_s55
_patternX55 -> let
v44 :: T_Rule_v44
v44 :: T_Rule_v44
v44 = \ !(T_Rule_vIn44 Options
_lhsIoptions Int
_lhsIuniq) -> (
let _lhsOisPure :: Bool
!_lhsOisPure :: Bool
_lhsOisPure = Bool -> Bool
forall a. a -> a
rule280 Bool
arg_pure_ in
let !(T_Pattern_vOut51 Bool
_patternIcontainsVars Pattern
_patternIoutput) = T_Pattern_s55 -> K_Pattern_s55 T_Pattern_v51 -> T_Pattern_v51
T_Pattern_s55 -> forall t. K_Pattern_s55 t -> t
inv_Pattern_s55 T_Pattern_s55
_patternX55 K_Pattern_s55 T_Pattern_v51
K_Pattern_v51 (T_Pattern_vIn51
T_Pattern_vIn51 ) in
let _lhsOcontainsVars :: Bool
!_lhsOcontainsVars :: Bool
_lhsOcontainsVars = Bool -> Bool
rule285 Bool
_patternIcontainsVars in
let !_output :: Rule
_output = Pattern
-> Bool
-> Bool
-> Bool
-> Maybe Error
-> Maybe Identifier
-> [Char]
-> Bool
-> Bool
-> Expression
-> Rule
rule289 Pattern
_patternIoutput Bool
arg_eager_ Bool
arg_explicit_ Bool
arg_identity_ Maybe Error
arg_mbError_ Maybe Identifier
arg_mbName_ [Char]
arg_origin_ Bool
arg_owrt_ Bool
arg_pure_ Expression
arg_rhs_ in
let !(!Rule
_output1,!Maybe Rule
_mbAlias) = Rule -> (Rule, Maybe Rule)
rule281 Rule
_output in
let _lhsOuniq :: Int
!(![Rule]
_outputs,!Int
_lhsOuniq) = Options -> Int -> Rule -> ([Rule], Int)
rule282 Options
_lhsIoptions Int
_lhsIuniq Rule
_output1 in
let _lhsOoutputs :: Rules
!_lhsOoutputs :: [Rule]
_lhsOoutputs = Maybe Rule -> [Rule] -> [Rule]
forall a. Maybe a -> [a] -> [a]
rule283 Maybe Rule
_mbAlias [Rule]
_outputs in
let !__result_ :: T_Rule_vOut44
__result_ = Bool -> Bool -> [Rule] -> Int -> T_Rule_vOut44
T_Rule_vOut44 Bool
_lhsOcontainsVars Bool
_lhsOisPure [Rule]
_lhsOoutputs Int
_lhsOuniq
in T_Rule_vOut44
__result_ )
in T_Rule_v44 -> T_Rule_s51
C_Rule_s51 T_Rule_v44
v44
{-# NOINLINE[1] rule280 #-}
{-# LINE 585 "src-ag/DefaultRules.ag" #-}
rule280 = \ !pure_ ->
{-# LINE 585 "src-ag/DefaultRules.ag" #-}
pure_
{-# LINE 4271 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule281 #-}
{-# LINE 652 "src-ag/DefaultRules.ag" #-}
rule281 = \ !_output ->
{-# LINE 652 "src-ag/DefaultRules.ag" #-}
mkRuleAlias _output
{-# LINE 4277 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule282 #-}
{-# LINE 653 "src-ag/DefaultRules.ag" #-}
rule282 = \ ((!_lhsIoptions) :: Options) ((!_lhsIuniq) :: Int) !_output1 ->
{-# LINE 653 "src-ag/DefaultRules.ag" #-}
if needsMultiRules _lhsIoptions
then multiRule _output1 _lhsIuniq
else ([_output1 ], _lhsIuniq)
{-# LINE 4285 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule283 #-}
{-# LINE 656 "src-ag/DefaultRules.ag" #-}
rule283 = \ !_mbAlias !_outputs ->
{-# LINE 656 "src-ag/DefaultRules.ag" #-}
maybe [] return _mbAlias ++ _outputs
{-# LINE 4291 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule284 #-}
{-# LINE 741 "src-ag/DefaultRules.ag" #-}
rule284 = \ !mbName_ ->
{-# LINE 741 "src-ag/DefaultRules.ag" #-}
case mbName_ of
Nothing -> Set.empty
Just nm -> Set.singleton nm
{-# LINE 4299 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule285 #-}
rule285 = \ ((!_patternIcontainsVars) :: Bool) ->
_patternIcontainsVars
{-# NOINLINE[1] rule286 #-}
rule286 = \ ((!_patternIdefinedAttrs) :: Set (Identifier,Identifier)) ->
_patternIdefinedAttrs
{-# NOINLINE[1] rule287 #-}
rule287 = \ ((!_patternIerrors) :: Seq Error) ->
_patternIerrors
{-# NOINLINE[1] rule288 #-}
rule288 = \ ((!_patternIlocals) :: Set Identifier) ->
_patternIlocals
{-# NOINLINE[1] rule289 #-}
rule289 = \ ((!_patternIoutput) :: Pattern) !eager_ !explicit_ !identity_ !mbError_ !mbName_ !origin_ !owrt_ !pure_ !rhs_ ->
Rule mbName_ _patternIoutput rhs_ owrt_ origin_ explicit_ pure_ identity_ mbError_ eager_
{-# INLINE rule290 #-}
rule290 = \ !_output ->
_output
data Inh_Rules = Inh_Rules { Inh_Rules -> Identifier
con_Inh_Rules :: !(ConstructorIdent), Inh_Rules -> Map Identifier ConstructorType
constructorTypeMap_Inh_Rules :: !(Map NontermIdent ConstructorType), Inh_Rules -> Identifier
nt_Inh_Rules :: !(NontermIdent), Inh_Rules -> Options
options_Inh_Rules :: !(Options), Inh_Rules -> Int
uniq_Inh_Rules :: !(Int) }
data Syn_Rules = Syn_Rules { Syn_Rules -> Set (Identifier, Identifier)
definedAttrs_Syn_Rules :: !(Set (Identifier,Identifier)), Syn_Rules -> Seq Error
errors_Syn_Rules :: !(Seq Error), Syn_Rules -> Set Identifier
locals_Syn_Rules :: !(Set Identifier), Syn_Rules -> [Rule]
output_Syn_Rules :: !(Rules), Syn_Rules -> Set Identifier
ruleNames_Syn_Rules :: !(Set Identifier), Syn_Rules -> Int
uniq_Syn_Rules :: !(Int) }
{-# INLINABLE wrap_Rules #-}
wrap_Rules :: T_Rules -> Inh_Rules -> (Syn_Rules )
wrap_Rules :: T_Rules -> Inh_Rules -> Syn_Rules
wrap_Rules !(T_Rules Identity T_Rules_s20
act) !(Inh_Rules Identifier
_lhsIcon Map Identifier ConstructorType
_lhsIconstructorTypeMap Identifier
_lhsInt Options
_lhsIoptions Int
_lhsIuniq) =
Identity Syn_Rules -> Syn_Rules
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_Rules_s20
sem <- Identity T_Rules_s20
act
let arg10 :: T_Rules_vIn10
arg10 = Identifier
-> Map Identifier ConstructorType
-> Identifier
-> Options
-> Int
-> T_Rules_vIn10
T_Rules_vIn10 Identifier
_lhsIcon Map Identifier ConstructorType
_lhsIconstructorTypeMap Identifier
_lhsInt Options
_lhsIoptions Int
_lhsIuniq
!(T_Rules_vOut10 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals [Rule]
_lhsOoutput Set Identifier
_lhsOruleNames Int
_lhsOuniq) <- T_Rules_vOut10 -> Identity T_Rules_vOut10
forall (m :: * -> *) a. Monad m => a -> m a
return (T_Rules_s20 -> K_Rules_s20 T_Rules_v10 -> T_Rules_v10
T_Rules_s20 -> forall t. K_Rules_s20 t -> t
inv_Rules_s20 T_Rules_s20
sem K_Rules_s20 T_Rules_v10
K_Rules_v10 T_Rules_vIn10
arg10)
Syn_Rules -> Identity Syn_Rules
forall (m :: * -> *) a. Monad m => a -> m a
return (Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> [Rule]
-> Set Identifier
-> Int
-> Syn_Rules
Syn_Rules Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals [Rule]
_lhsOoutput Set Identifier
_lhsOruleNames Int
_lhsOuniq)
)
{-# NOINLINE sem_Rules #-}
sem_Rules :: Rules -> T_Rules
sem_Rules :: [Rule] -> T_Rules
sem_Rules [Rule]
list = (T_Rule -> T_Rules -> T_Rules) -> T_Rules -> [T_Rule] -> T_Rules
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
Prelude.foldr T_Rule -> T_Rules -> T_Rules
sem_Rules_Cons T_Rules
sem_Rules_Nil ((Rule -> T_Rule) -> [Rule] -> [T_Rule]
forall a b. (a -> b) -> [a] -> [b]
Prelude.map Rule -> T_Rule
sem_Rule [Rule]
list)
newtype T_Rules = T_Rules {
T_Rules -> Identity T_Rules_s20
attach_T_Rules :: Identity (T_Rules_s20 )
}
data T_Rules_s20 where C_Rules_s20 :: {
T_Rules_s20 -> forall t. K_Rules_s20 t -> t
inv_Rules_s20 :: !(forall t. K_Rules_s20 t -> t)
} -> T_Rules_s20
data T_Rules_s21 = C_Rules_s21
data T_Rules_s37 = C_Rules_s37
newtype T_Rules_s42 = C_Rules_s42 {
T_Rules_s42 -> T_Rules_v31
inv_Rules_s42 :: (T_Rules_v31 )
}
data K_Rules_s20 k where
K_Rules_v10 :: K_Rules_s20 (T_Rules_v10 )
K_Rules_v24 :: K_Rules_s20 (T_Rules_v24 )
K_Rules_v30 :: K_Rules_s20 (T_Rules_v30 )
type T_Rules_v10 = (T_Rules_vIn10 ) -> (T_Rules_vOut10 )
data T_Rules_vIn10 = T_Rules_vIn10 !(ConstructorIdent) !(Map NontermIdent ConstructorType) !(NontermIdent) !(Options) !(Int)
data T_Rules_vOut10 = T_Rules_vOut10 !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(Rules) !(Set Identifier) !(Int)
type T_Rules_v24 = (T_Rules_vIn24 ) -> (T_Rules_vOut24 )
data T_Rules_vIn24 = T_Rules_vIn24 !(Options) !(Int)
data T_Rules_vOut24 = T_Rules_vOut24 !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(Rules) !(Set Identifier) !(Int)
type T_Rules_v30 = (T_Rules_vIn30 ) -> (T_Rules_vOut30 )
data T_Rules_vIn30 = T_Rules_vIn30
data T_Rules_vOut30 = T_Rules_vOut30 !(Set (Identifier,Identifier)) !(Seq Error) !(Set Identifier) !(Set Identifier) !(T_Rules_s42 )
type T_Rules_v31 = (T_Rules_vIn31 ) -> (T_Rules_vOut31 )
data T_Rules_vIn31 = T_Rules_vIn31 !(Options) !(Int)
data T_Rules_vOut31 = T_Rules_vOut31 !(Rules) !(Int)
{-# NOINLINE sem_Rules_Cons #-}
sem_Rules_Cons :: T_Rule -> T_Rules -> T_Rules
sem_Rules_Cons :: T_Rule -> T_Rules -> T_Rules
sem_Rules_Cons T_Rule
arg_hd_ T_Rules
arg_tl_ = Identity T_Rules_s20 -> T_Rules
T_Rules (T_Rules_s20 -> Identity T_Rules_s20
forall (m :: * -> *) a. Monad m => a -> m a
return T_Rules_s20
st20) where
{-# NOINLINE st20 #-}
!st20 :: T_Rules_s20
st20 = let
k20 :: K_Rules_s20 t -> t
k20 :: K_Rules_s20 t -> t
k20 K_Rules_s20 t
K_Rules_v10 = t
T_Rules_v10
v10
k20 K_Rules_s20 t
K_Rules_v24 = t
T_Rules_v24
v24
k20 K_Rules_s20 t
K_Rules_v30 = t
T_Rules_v30
v30
v10 :: T_Rules_v10
v10 :: T_Rules_v10
v10 = \ !(T_Rules_vIn10 Identifier
_lhsIcon Map Identifier ConstructorType
_lhsIconstructorTypeMap Identifier
_lhsInt Options
_lhsIoptions Int
_lhsIuniq) -> (
let !_hdX18 :: T_Rule_s18
_hdX18 = Identity T_Rule_s18 -> T_Rule_s18
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Rule -> Identity T_Rule_s18
attach_T_Rule (T_Rule
arg_hd_)) in
let !_tlX20 :: T_Rules_s20
_tlX20 = Identity T_Rules_s20 -> T_Rules_s20
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Rules -> Identity T_Rules_s20
attach_T_Rules (T_Rules
arg_tl_)) in
let !_hdOoptions :: Options
_hdOoptions = Options -> Options
rule303 Options
_lhsIoptions in
let !_hdOuniq :: Int
_hdOuniq = Int -> Int
rule304 Int
_lhsIuniq in
let !_tlOoptions :: Options
_tlOoptions = Options -> Options
rule308 Options
_lhsIoptions in
let !(T_Rule_vOut29 Bool
_hdIcontainsVars Set (Identifier, Identifier)
_hdIdefinedAttrs Seq Error
_hdIerrors Bool
_hdIisPure Set Identifier
_hdIlocals [Rule]
_hdIoutputs Set Identifier
_hdIruleNames Int
_hdIuniq) = T_Rule_s18 -> K_Rule_s18 T_Rule_v29 -> T_Rule_v29
T_Rule_s18 -> forall t. K_Rule_s18 t -> t
inv_Rule_s18 T_Rule_s18
_hdX18 K_Rule_s18 T_Rule_v29
K_Rule_v29 (Options -> Int -> T_Rule_vIn29
T_Rule_vIn29 Options
_hdOoptions Int
_hdOuniq) in
let !(T_Rules_vOut30 Set (Identifier, Identifier)
_tlIdefinedAttrs Seq Error
_tlIerrors Set Identifier
_tlIlocals Set Identifier
_tlIruleNames T_Rules_s42
_tlX42) = T_Rules_s20 -> K_Rules_s20 T_Rules_v30 -> T_Rules_v30
T_Rules_s20 -> forall t. K_Rules_s20 t -> t
inv_Rules_s20 T_Rules_s20
_tlX20 K_Rules_s20 T_Rules_v30
K_Rules_v30 (T_Rules_vIn30
T_Rules_vIn30 ) in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier)
-> Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule294 Set (Identifier, Identifier)
_hdIdefinedAttrs Set (Identifier, Identifier)
_tlIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule295 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier -> Set Identifier
rule296 Set Identifier
_hdIlocals Set Identifier
_tlIlocals in
let !_tlOuniq :: Int
_tlOuniq = Int -> Int
rule309 Int
_hdIuniq in
let _lhsOruleNames :: Set Identifier
!_lhsOruleNames :: Set Identifier
_lhsOruleNames = Set Identifier -> Set Identifier -> Set Identifier
rule297 Set Identifier
_hdIruleNames Set Identifier
_tlIruleNames in
let !(T_Rules_vOut31 [Rule]
_tlIoutput Int
_tlIuniq) = T_Rules_s42 -> T_Rules_v31
inv_Rules_s42 T_Rules_s42
_tlX42 (Options -> Int -> T_Rules_vIn31
T_Rules_vIn31 Options
_tlOoptions Int
_tlOuniq) in
let _lhsOoutput :: Rules
!_lhsOoutput :: [Rule]
_lhsOoutput = Bool -> Bool -> [Rule] -> [Rule] -> [Rule]
rule293 Bool
_hdIcontainsVars Bool
_hdIisPure [Rule]
_hdIoutputs [Rule]
_tlIoutput in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule299 Int
_tlIuniq in
let !__result_ :: T_Rules_vOut10
__result_ = Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> [Rule]
-> Set Identifier
-> Int
-> T_Rules_vOut10
T_Rules_vOut10 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals [Rule]
_lhsOoutput Set Identifier
_lhsOruleNames Int
_lhsOuniq
in T_Rules_vOut10
__result_ )
v24 :: T_Rules_v24
v24 :: T_Rules_v24
v24 = \ !(T_Rules_vIn24 Options
_lhsIoptions Int
_lhsIuniq) -> (
let !_hdX18 :: T_Rule_s18
_hdX18 = Identity T_Rule_s18 -> T_Rule_s18
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Rule -> Identity T_Rule_s18
attach_T_Rule (T_Rule
arg_hd_)) in
let !_tlX20 :: T_Rules_s20
_tlX20 = Identity T_Rules_s20 -> T_Rules_s20
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Rules -> Identity T_Rules_s20
attach_T_Rules (T_Rules
arg_tl_)) in
let !_hdOoptions :: Options
_hdOoptions = Options -> Options
rule303 Options
_lhsIoptions in
let !_hdOuniq :: Int
_hdOuniq = Int -> Int
rule304 Int
_lhsIuniq in
let !_tlOoptions :: Options
_tlOoptions = Options -> Options
rule308 Options
_lhsIoptions in
let !(T_Rule_vOut29 Bool
_hdIcontainsVars Set (Identifier, Identifier)
_hdIdefinedAttrs Seq Error
_hdIerrors Bool
_hdIisPure Set Identifier
_hdIlocals [Rule]
_hdIoutputs Set Identifier
_hdIruleNames Int
_hdIuniq) = T_Rule_s18 -> K_Rule_s18 T_Rule_v29 -> T_Rule_v29
T_Rule_s18 -> forall t. K_Rule_s18 t -> t
inv_Rule_s18 T_Rule_s18
_hdX18 K_Rule_s18 T_Rule_v29
K_Rule_v29 (Options -> Int -> T_Rule_vIn29
T_Rule_vIn29 Options
_hdOoptions Int
_hdOuniq) in
let !(T_Rules_vOut30 Set (Identifier, Identifier)
_tlIdefinedAttrs Seq Error
_tlIerrors Set Identifier
_tlIlocals Set Identifier
_tlIruleNames T_Rules_s42
_tlX42) = T_Rules_s20 -> K_Rules_s20 T_Rules_v30 -> T_Rules_v30
T_Rules_s20 -> forall t. K_Rules_s20 t -> t
inv_Rules_s20 T_Rules_s20
_tlX20 K_Rules_s20 T_Rules_v30
K_Rules_v30 (T_Rules_vIn30
T_Rules_vIn30 ) in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier)
-> Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule294 Set (Identifier, Identifier)
_hdIdefinedAttrs Set (Identifier, Identifier)
_tlIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule295 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier -> Set Identifier
rule296 Set Identifier
_hdIlocals Set Identifier
_tlIlocals in
let !_tlOuniq :: Int
_tlOuniq = Int -> Int
rule309 Int
_hdIuniq in
let _lhsOruleNames :: Set Identifier
!_lhsOruleNames :: Set Identifier
_lhsOruleNames = Set Identifier -> Set Identifier -> Set Identifier
rule297 Set Identifier
_hdIruleNames Set Identifier
_tlIruleNames in
let !(T_Rules_vOut31 [Rule]
_tlIoutput Int
_tlIuniq) = T_Rules_s42 -> T_Rules_v31
inv_Rules_s42 T_Rules_s42
_tlX42 (Options -> Int -> T_Rules_vIn31
T_Rules_vIn31 Options
_tlOoptions Int
_tlOuniq) in
let _lhsOoutput :: Rules
!_lhsOoutput :: [Rule]
_lhsOoutput = Bool -> Bool -> [Rule] -> [Rule] -> [Rule]
rule293 Bool
_hdIcontainsVars Bool
_hdIisPure [Rule]
_hdIoutputs [Rule]
_tlIoutput in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule299 Int
_tlIuniq in
let !__result_ :: T_Rules_vOut24
__result_ = Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> [Rule]
-> Set Identifier
-> Int
-> T_Rules_vOut24
T_Rules_vOut24 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals [Rule]
_lhsOoutput Set Identifier
_lhsOruleNames Int
_lhsOuniq
in T_Rules_vOut24
__result_ )
v30 :: T_Rules_v30
v30 :: T_Rules_v30
v30 = \ !(T_Rules_vIn30
T_Rules_vIn30 ) -> (
let !_hdX18 :: T_Rule_s18
_hdX18 = Identity T_Rule_s18 -> T_Rule_s18
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Rule -> Identity T_Rule_s18
attach_T_Rule (T_Rule
arg_hd_)) in
let !_tlX20 :: T_Rules_s20
_tlX20 = Identity T_Rules_s20 -> T_Rules_s20
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Rules -> Identity T_Rules_s20
attach_T_Rules (T_Rules
arg_tl_)) in
let !(T_Rule_vOut43 Set (Identifier, Identifier)
_hdIdefinedAttrs Seq Error
_hdIerrors Set Identifier
_hdIlocals Set Identifier
_hdIruleNames T_Rule_s51
_hdX51) = T_Rule_s18 -> K_Rule_s18 T_Rule_v43 -> T_Rule_v43
T_Rule_s18 -> forall t. K_Rule_s18 t -> t
inv_Rule_s18 T_Rule_s18
_hdX18 K_Rule_s18 T_Rule_v43
K_Rule_v43 (T_Rule_vIn43
T_Rule_vIn43 ) in
let !(T_Rules_vOut30 Set (Identifier, Identifier)
_tlIdefinedAttrs Seq Error
_tlIerrors Set Identifier
_tlIlocals Set Identifier
_tlIruleNames T_Rules_s42
_tlX42) = T_Rules_s20 -> K_Rules_s20 T_Rules_v30 -> T_Rules_v30
T_Rules_s20 -> forall t. K_Rules_s20 t -> t
inv_Rules_s20 T_Rules_s20
_tlX20 K_Rules_s20 T_Rules_v30
K_Rules_v30 (T_Rules_vIn30
T_Rules_vIn30 ) in
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = Set (Identifier, Identifier)
-> Set (Identifier, Identifier) -> Set (Identifier, Identifier)
rule294 Set (Identifier, Identifier)
_hdIdefinedAttrs Set (Identifier, Identifier)
_tlIdefinedAttrs in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = Seq Error -> Seq Error -> Seq Error
rule295 Seq Error
_hdIerrors Seq Error
_tlIerrors in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = Set Identifier -> Set Identifier -> Set Identifier
rule296 Set Identifier
_hdIlocals Set Identifier
_tlIlocals in
let _lhsOruleNames :: Set Identifier
!_lhsOruleNames :: Set Identifier
_lhsOruleNames = Set Identifier -> Set Identifier -> Set Identifier
rule297 Set Identifier
_hdIruleNames Set Identifier
_tlIruleNames in
let !__st_ :: T_Rules_s42
__st_ = T_Rule_s51 -> T_Rules_s42 -> T_Rules_s42
st42 T_Rule_s51
_hdX51 T_Rules_s42
_tlX42
!__result_ :: T_Rules_vOut30
__result_ = Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Set Identifier
-> T_Rules_s42
-> T_Rules_vOut30
T_Rules_vOut30 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Set Identifier
_lhsOruleNames T_Rules_s42
__st_
in T_Rules_vOut30
__result_ )
in (forall t. K_Rules_s20 t -> t) -> T_Rules_s20
C_Rules_s20 forall t. K_Rules_s20 t -> t
k20
{-# NOINLINE st42 #-}
st42 :: T_Rule_s51 -> T_Rules_s42 -> T_Rules_s42
st42 = \ !T_Rule_s51
_hdX51 !T_Rules_s42
_tlX42 -> let
v31 :: T_Rules_v31
v31 :: T_Rules_v31
v31 = \ !(T_Rules_vIn31 Options
_lhsIoptions Int
_lhsIuniq) -> (
let !_hdOoptions :: Options
_hdOoptions = Options -> Options
rule303 Options
_lhsIoptions in
let !_hdOuniq :: Int
_hdOuniq = Int -> Int
rule304 Int
_lhsIuniq in
let !_tlOoptions :: Options
_tlOoptions = Options -> Options
rule308 Options
_lhsIoptions in
let !(T_Rule_vOut44 Bool
_hdIcontainsVars Bool
_hdIisPure [Rule]
_hdIoutputs Int
_hdIuniq) = T_Rule_s51 -> T_Rule_v44
inv_Rule_s51 T_Rule_s51
_hdX51 (Options -> Int -> T_Rule_vIn44
T_Rule_vIn44 Options
_hdOoptions Int
_hdOuniq) in
let !_tlOuniq :: Int
_tlOuniq = Int -> Int
rule309 Int
_hdIuniq in
let !(T_Rules_vOut31 [Rule]
_tlIoutput Int
_tlIuniq) = T_Rules_s42 -> T_Rules_v31
inv_Rules_s42 T_Rules_s42
_tlX42 (Options -> Int -> T_Rules_vIn31
T_Rules_vIn31 Options
_tlOoptions Int
_tlOuniq) in
let _lhsOoutput :: Rules
!_lhsOoutput :: [Rule]
_lhsOoutput = Bool -> Bool -> [Rule] -> [Rule] -> [Rule]
rule293 Bool
_hdIcontainsVars Bool
_hdIisPure [Rule]
_hdIoutputs [Rule]
_tlIoutput in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule299 Int
_tlIuniq in
let !__result_ :: T_Rules_vOut31
__result_ = [Rule] -> Int -> T_Rules_vOut31
T_Rules_vOut31 [Rule]
_lhsOoutput Int
_lhsOuniq
in T_Rules_vOut31
__result_ )
in T_Rules_v31 -> T_Rules_s42
C_Rules_s42 T_Rules_v31
v31
{-# NOINLINE[1] rule293 #-}
{-# LINE 648 "src-ag/DefaultRules.ag" #-}
rule293 = \ ((!_hdIcontainsVars) :: Bool) ((!_hdIisPure) :: Bool) ((!_hdIoutputs) :: Rules) ((!_tlIoutput) :: Rules) ->
{-# LINE 648 "src-ag/DefaultRules.ag" #-}
if _hdIcontainsVars && _hdIisPure then _hdIoutputs ++ _tlIoutput else _tlIoutput
{-# LINE 4465 "src-generated/DefaultRules.hs" #-}
{-# NOINLINE[1] rule294 #-}
rule294 = \ ((!_hdIdefinedAttrs) :: Set (Identifier,Identifier)) ((!_tlIdefinedAttrs) :: Set (Identifier,Identifier)) ->
_hdIdefinedAttrs `Set.union` _tlIdefinedAttrs
{-# NOINLINE[1] rule295 #-}
rule295 = \ ((!_hdIerrors) :: Seq Error) ((!_tlIerrors) :: Seq Error) ->
_hdIerrors Seq.>< _tlIerrors
{-# NOINLINE[1] rule296 #-}
rule296 = \ ((!_hdIlocals) :: Set Identifier) ((!_tlIlocals) :: Set Identifier) ->
_hdIlocals `Set.union` _tlIlocals
{-# NOINLINE[1] rule297 #-}
rule297 = \ ((!_hdIruleNames) :: Set Identifier) ((!_tlIruleNames) :: Set Identifier) ->
_hdIruleNames `Set.union` _tlIruleNames
{-# NOINLINE[1] rule299 #-}
rule299 = \ ((!_tlIuniq) :: Int) ->
_tlIuniq
{-# NOINLINE[1] rule303 #-}
rule303 = \ ((!_lhsIoptions) :: Options) ->
_lhsIoptions
{-# NOINLINE[1] rule304 #-}
rule304 = \ ((!_lhsIuniq) :: Int) ->
_lhsIuniq
{-# NOINLINE[1] rule308 #-}
rule308 = \ ((!_lhsIoptions) :: Options) ->
_lhsIoptions
{-# NOINLINE[1] rule309 #-}
rule309 = \ ((!_hdIuniq) :: Int) ->
_hdIuniq
{-# NOINLINE sem_Rules_Nil #-}
sem_Rules_Nil :: T_Rules
sem_Rules_Nil :: T_Rules
sem_Rules_Nil = Identity T_Rules_s20 -> T_Rules
T_Rules (T_Rules_s20 -> Identity T_Rules_s20
forall (m :: * -> *) a. Monad m => a -> m a
return T_Rules_s20
st20) where
{-# NOINLINE st20 #-}
!st20 :: T_Rules_s20
st20 = let
k20 :: K_Rules_s20 t -> t
k20 :: K_Rules_s20 t -> t
k20 K_Rules_s20 t
K_Rules_v10 = t
T_Rules_v10
v10
k20 K_Rules_s20 t
K_Rules_v24 = t
T_Rules_v24
v24
k20 K_Rules_s20 t
K_Rules_v30 = t
T_Rules_v30
v30
v10 :: T_Rules_v10
v10 :: T_Rules_v10
v10 = \ !(T_Rules_vIn10 Identifier
_lhsIcon Map Identifier ConstructorType
_lhsIconstructorTypeMap Identifier
_lhsInt Options
_lhsIoptions Int
_lhsIuniq) -> (
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = () -> Set (Identifier, Identifier)
forall a. () -> Set a
rule310 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule311 () in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = () -> Set Identifier
forall a. () -> Set a
rule312 () in
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule314 () in
let _lhsOruleNames :: Set Identifier
!_lhsOruleNames :: Set Identifier
_lhsOruleNames = () -> Set Identifier
forall a. () -> Set a
rule313 () in
let _lhsOoutput :: Rules
!_lhsOoutput :: [Rule]
_lhsOoutput = [Rule] -> [Rule]
forall a. a -> a
rule315 [Rule]
forall a. [a]
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule316 Int
_lhsIuniq in
let !__result_ :: T_Rules_vOut10
__result_ = Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> [Rule]
-> Set Identifier
-> Int
-> T_Rules_vOut10
T_Rules_vOut10 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals [Rule]
_lhsOoutput Set Identifier
_lhsOruleNames Int
_lhsOuniq
in T_Rules_vOut10
__result_ )
v24 :: T_Rules_v24
v24 :: T_Rules_v24
v24 = \ !(T_Rules_vIn24 Options
_lhsIoptions Int
_lhsIuniq) -> (
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = () -> Set (Identifier, Identifier)
forall a. () -> Set a
rule310 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule311 () in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = () -> Set Identifier
forall a. () -> Set a
rule312 () in
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule314 () in
let _lhsOruleNames :: Set Identifier
!_lhsOruleNames :: Set Identifier
_lhsOruleNames = () -> Set Identifier
forall a. () -> Set a
rule313 () in
let _lhsOoutput :: Rules
!_lhsOoutput :: [Rule]
_lhsOoutput = [Rule] -> [Rule]
forall a. a -> a
rule315 [Rule]
forall a. [a]
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule316 Int
_lhsIuniq in
let !__result_ :: T_Rules_vOut24
__result_ = Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> [Rule]
-> Set Identifier
-> Int
-> T_Rules_vOut24
T_Rules_vOut24 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals [Rule]
_lhsOoutput Set Identifier
_lhsOruleNames Int
_lhsOuniq
in T_Rules_vOut24
__result_ )
v30 :: T_Rules_v30
v30 :: T_Rules_v30
v30 = \ !(T_Rules_vIn30
T_Rules_vIn30 ) -> (
let _lhsOdefinedAttrs :: Set (Identifier,Identifier)
!_lhsOdefinedAttrs :: Set (Identifier, Identifier)
_lhsOdefinedAttrs = () -> Set (Identifier, Identifier)
forall a. () -> Set a
rule310 () in
let _lhsOerrors :: Seq Error
!_lhsOerrors :: Seq Error
_lhsOerrors = () -> Seq Error
forall a. () -> Seq a
rule311 () in
let _lhsOlocals :: Set Identifier
!_lhsOlocals :: Set Identifier
_lhsOlocals = () -> Set Identifier
forall a. () -> Set a
rule312 () in
let _lhsOruleNames :: Set Identifier
!_lhsOruleNames :: Set Identifier
_lhsOruleNames = () -> Set Identifier
forall a. () -> Set a
rule313 () in
let !__st_ :: T_Rules_s42
__st_ = () -> T_Rules_s42
st42 ()
!__result_ :: T_Rules_vOut30
__result_ = Set (Identifier, Identifier)
-> Seq Error
-> Set Identifier
-> Set Identifier
-> T_Rules_s42
-> T_Rules_vOut30
T_Rules_vOut30 Set (Identifier, Identifier)
_lhsOdefinedAttrs Seq Error
_lhsOerrors Set Identifier
_lhsOlocals Set Identifier
_lhsOruleNames T_Rules_s42
__st_
in T_Rules_vOut30
__result_ )
in (forall t. K_Rules_s20 t -> t) -> T_Rules_s20
C_Rules_s20 forall t. K_Rules_s20 t -> t
k20
{-# NOINLINE st42 #-}
st42 :: () -> T_Rules_s42
st42 = \ (()
_ :: ()) -> let
v31 :: T_Rules_v31
v31 :: T_Rules_v31
v31 = \ !(T_Rules_vIn31 Options
_lhsIoptions Int
_lhsIuniq) -> (
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule314 () in
let _lhsOoutput :: Rules
!_lhsOoutput :: [Rule]
_lhsOoutput = [Rule] -> [Rule]
forall a. a -> a
rule315 [Rule]
forall a. [a]
_output in
let _lhsOuniq :: Int
!_lhsOuniq :: Int
_lhsOuniq = Int -> Int
rule316 Int
_lhsIuniq in
let !__result_ :: T_Rules_vOut31
__result_ = [Rule] -> Int -> T_Rules_vOut31
T_Rules_vOut31 [Rule]
_lhsOoutput Int
_lhsOuniq
in T_Rules_vOut31
__result_ )
in T_Rules_v31 -> T_Rules_s42
C_Rules_s42 T_Rules_v31
v31
{-# NOINLINE[1] rule310 #-}
rule310 :: () -> Set a
rule310 = \ (()
_ :: ()) ->
Set a
forall a. Set a
Set.empty
{-# NOINLINE[1] rule311 #-}
rule311 :: () -> Seq a
rule311 = \ (()
_ :: ()) ->
Seq a
forall a. Seq a
Seq.empty
{-# NOINLINE[1] rule312 #-}
rule312 :: () -> Set a
rule312 = \ (()
_ :: ()) ->
Set a
forall a. Set a
Set.empty
{-# NOINLINE[1] rule313 #-}
rule313 :: () -> Set a
rule313 = \ (()
_ :: ()) ->
Set a
forall a. Set a
Set.empty
{-# NOINLINE[1] rule314 #-}
rule314 :: () -> [a]
rule314 = \ (()
_ :: ()) ->
[]
{-# NOINLINE[1] rule315 #-}
rule315 :: p -> p
rule315 = \ !p
_output ->
p
_output
{-# NOINLINE[1] rule316 #-}
rule316 :: Int -> Int
rule316 = \ ((!Int
_lhsIuniq) :: Int) ->
Int
_lhsIuniq
data Inh_TypeSig = Inh_TypeSig { Inh_TypeSig -> Identifier
nt_Inh_TypeSig :: !(NontermIdent), Inh_TypeSig -> [Identifier]
params_Inh_TypeSig :: !([Identifier]) }
data Syn_TypeSig = Syn_TypeSig { Syn_TypeSig -> TypeSig
output_Syn_TypeSig :: !(TypeSig) }
{-# INLINABLE wrap_TypeSig #-}
wrap_TypeSig :: T_TypeSig -> Inh_TypeSig -> (Syn_TypeSig )
wrap_TypeSig :: T_TypeSig -> Inh_TypeSig -> Syn_TypeSig
wrap_TypeSig !(T_TypeSig Identity T_TypeSig_s22
act) !(Inh_TypeSig Identifier
_lhsInt [Identifier]
_lhsIparams) =
Identity Syn_TypeSig -> Syn_TypeSig
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_TypeSig_s22
sem <- Identity T_TypeSig_s22
act
let arg11 :: T_TypeSig_vIn11
arg11 = Identifier -> [Identifier] -> T_TypeSig_vIn11
T_TypeSig_vIn11 Identifier
_lhsInt [Identifier]
_lhsIparams
!(T_TypeSig_vOut11 TypeSig
_lhsOoutput) <- T_TypeSig_vOut11 -> Identity T_TypeSig_vOut11
forall (m :: * -> *) a. Monad m => a -> m a
return (T_TypeSig_s22 -> T_TypeSig_v11
inv_TypeSig_s22 T_TypeSig_s22
sem T_TypeSig_vIn11
arg11)
Syn_TypeSig -> Identity Syn_TypeSig
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeSig -> Syn_TypeSig
Syn_TypeSig TypeSig
_lhsOoutput)
)
{-# INLINE sem_TypeSig #-}
sem_TypeSig :: TypeSig -> T_TypeSig
sem_TypeSig :: TypeSig -> T_TypeSig
sem_TypeSig ( TypeSig !Identifier
name_ !Type
tp_ ) = Identifier -> Type -> T_TypeSig
sem_TypeSig_TypeSig Identifier
name_ Type
tp_
newtype T_TypeSig = T_TypeSig {
T_TypeSig -> Identity T_TypeSig_s22
attach_T_TypeSig :: Identity (T_TypeSig_s22 )
}
newtype T_TypeSig_s22 = C_TypeSig_s22 {
T_TypeSig_s22 -> T_TypeSig_v11
inv_TypeSig_s22 :: (T_TypeSig_v11 )
}
data T_TypeSig_s23 = C_TypeSig_s23
type T_TypeSig_v11 = (T_TypeSig_vIn11 ) -> (T_TypeSig_vOut11 )
data T_TypeSig_vIn11 = T_TypeSig_vIn11 !(NontermIdent) !([Identifier])
data T_TypeSig_vOut11 = T_TypeSig_vOut11 !(TypeSig)
{-# NOINLINE sem_TypeSig_TypeSig #-}
sem_TypeSig_TypeSig :: (Identifier) -> (Type) -> T_TypeSig
sem_TypeSig_TypeSig :: Identifier -> Type -> T_TypeSig
sem_TypeSig_TypeSig !Identifier
arg_name_ !Type
arg_tp_ = Identity T_TypeSig_s22 -> T_TypeSig
T_TypeSig (T_TypeSig_s22 -> Identity T_TypeSig_s22
forall (m :: * -> *) a. Monad m => a -> m a
return T_TypeSig_s22
st22) where
{-# NOINLINE st22 #-}
!st22 :: T_TypeSig_s22
st22 = let
v11 :: T_TypeSig_v11
v11 :: T_TypeSig_v11
v11 = \ !(T_TypeSig_vIn11 Identifier
_lhsInt [Identifier]
_lhsIparams) -> (
let !_tp1 :: Type
_tp1 = Identifier -> [Identifier] -> Type -> Type
rule317 Identifier
_lhsInt [Identifier]
_lhsIparams Type
arg_tp_ in
let _lhsOoutput :: TypeSig
!_lhsOoutput :: TypeSig
_lhsOoutput = Type -> Identifier -> TypeSig
rule318 Type
_tp1 Identifier
arg_name_ in
let !__result_ :: T_TypeSig_vOut11
__result_ = TypeSig -> T_TypeSig_vOut11
T_TypeSig_vOut11 TypeSig
_lhsOoutput
in T_TypeSig_vOut11
__result_ )
in T_TypeSig_v11 -> T_TypeSig_s22
C_TypeSig_s22 T_TypeSig_v11
v11
{-# INLINE rule317 #-}
{-# LINE 604 "src-ag/DefaultRules.ag" #-}
rule317 = \ ((!_lhsInt) :: NontermIdent) ((!_lhsIparams) :: [Identifier]) !tp_ ->
{-# LINE 604 "src-ag/DefaultRules.ag" #-}
elimSelfId _lhsInt _lhsIparams tp_
{-# LINE 4632 "src-generated/DefaultRules.hs" #-}
{-# INLINE rule318 #-}
{-# LINE 645 "src-ag/DefaultRules.ag" #-}
rule318 = \ !_tp1 !name_ ->
{-# LINE 645 "src-ag/DefaultRules.ag" #-}
TypeSig name_ _tp1
{-# LINE 4638 "src-generated/DefaultRules.hs" #-}
data Inh_TypeSigs = Inh_TypeSigs { Inh_TypeSigs -> Identifier
nt_Inh_TypeSigs :: !(NontermIdent), Inh_TypeSigs -> [Identifier]
params_Inh_TypeSigs :: !([Identifier]) }
data Syn_TypeSigs = Syn_TypeSigs { Syn_TypeSigs -> TypeSigs
output_Syn_TypeSigs :: !(TypeSigs) }
{-# INLINABLE wrap_TypeSigs #-}
wrap_TypeSigs :: T_TypeSigs -> Inh_TypeSigs -> (Syn_TypeSigs )
wrap_TypeSigs :: T_TypeSigs -> Inh_TypeSigs -> Syn_TypeSigs
wrap_TypeSigs !(T_TypeSigs Identity T_TypeSigs_s24
act) !(Inh_TypeSigs Identifier
_lhsInt [Identifier]
_lhsIparams) =
Identity Syn_TypeSigs -> Syn_TypeSigs
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_TypeSigs_s24
sem <- Identity T_TypeSigs_s24
act
let arg12 :: T_TypeSigs_vIn12
arg12 = Identifier -> [Identifier] -> T_TypeSigs_vIn12
T_TypeSigs_vIn12 Identifier
_lhsInt [Identifier]
_lhsIparams
!(T_TypeSigs_vOut12 TypeSigs
_lhsOoutput) <- T_TypeSigs_vOut12 -> Identity T_TypeSigs_vOut12
forall (m :: * -> *) a. Monad m => a -> m a
return (T_TypeSigs_s24 -> T_TypeSigs_v12
inv_TypeSigs_s24 T_TypeSigs_s24
sem T_TypeSigs_vIn12
arg12)
Syn_TypeSigs -> Identity Syn_TypeSigs
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeSigs -> Syn_TypeSigs
Syn_TypeSigs TypeSigs
_lhsOoutput)
)
{-# NOINLINE sem_TypeSigs #-}
sem_TypeSigs :: TypeSigs -> T_TypeSigs
sem_TypeSigs :: TypeSigs -> T_TypeSigs
sem_TypeSigs TypeSigs
list = (T_TypeSig -> T_TypeSigs -> T_TypeSigs)
-> T_TypeSigs -> [T_TypeSig] -> T_TypeSigs
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
Prelude.foldr T_TypeSig -> T_TypeSigs -> T_TypeSigs
sem_TypeSigs_Cons T_TypeSigs
sem_TypeSigs_Nil ((TypeSig -> T_TypeSig) -> TypeSigs -> [T_TypeSig]
forall a b. (a -> b) -> [a] -> [b]
Prelude.map TypeSig -> T_TypeSig
sem_TypeSig TypeSigs
list)
newtype T_TypeSigs = T_TypeSigs {
T_TypeSigs -> Identity T_TypeSigs_s24
attach_T_TypeSigs :: Identity (T_TypeSigs_s24 )
}
newtype T_TypeSigs_s24 = C_TypeSigs_s24 {
T_TypeSigs_s24 -> T_TypeSigs_v12
inv_TypeSigs_s24 :: (T_TypeSigs_v12 )
}
data T_TypeSigs_s25 = C_TypeSigs_s25
type T_TypeSigs_v12 = (T_TypeSigs_vIn12 ) -> (T_TypeSigs_vOut12 )
data T_TypeSigs_vIn12 = T_TypeSigs_vIn12 !(NontermIdent) !([Identifier])
data T_TypeSigs_vOut12 = T_TypeSigs_vOut12 !(TypeSigs)
{-# NOINLINE sem_TypeSigs_Cons #-}
sem_TypeSigs_Cons :: T_TypeSig -> T_TypeSigs -> T_TypeSigs
sem_TypeSigs_Cons :: T_TypeSig -> T_TypeSigs -> T_TypeSigs
sem_TypeSigs_Cons T_TypeSig
arg_hd_ T_TypeSigs
arg_tl_ = Identity T_TypeSigs_s24 -> T_TypeSigs
T_TypeSigs (T_TypeSigs_s24 -> Identity T_TypeSigs_s24
forall (m :: * -> *) a. Monad m => a -> m a
return T_TypeSigs_s24
st24) where
{-# NOINLINE st24 #-}
!st24 :: T_TypeSigs_s24
st24 = let
v12 :: T_TypeSigs_v12
v12 :: T_TypeSigs_v12
v12 = \ !(T_TypeSigs_vIn12 Identifier
_lhsInt [Identifier]
_lhsIparams) -> (
let !_hdX22 :: T_TypeSig_s22
_hdX22 = Identity T_TypeSig_s22 -> T_TypeSig_s22
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_TypeSig -> Identity T_TypeSig_s22
attach_T_TypeSig (T_TypeSig
arg_hd_)) in
let !_tlX24 :: T_TypeSigs_s24
_tlX24 = Identity T_TypeSigs_s24 -> T_TypeSigs_s24
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_TypeSigs -> Identity T_TypeSigs_s24
attach_T_TypeSigs (T_TypeSigs
arg_tl_)) in
let !_hdOnt :: Identifier
_hdOnt = Identifier -> Identifier
rule322 Identifier
_lhsInt in
let !_hdOparams :: [Identifier]
_hdOparams = [Identifier] -> [Identifier]
rule323 [Identifier]
_lhsIparams in
let !_tlOnt :: Identifier
_tlOnt = Identifier -> Identifier
rule324 Identifier
_lhsInt in
let !_tlOparams :: [Identifier]
_tlOparams = [Identifier] -> [Identifier]
rule325 [Identifier]
_lhsIparams in
let !(T_TypeSig_vOut11 TypeSig
_hdIoutput) = T_TypeSig_s22 -> T_TypeSig_v11
inv_TypeSig_s22 T_TypeSig_s22
_hdX22 (Identifier -> [Identifier] -> T_TypeSig_vIn11
T_TypeSig_vIn11 Identifier
_hdOnt [Identifier]
_hdOparams) in
let !(T_TypeSigs_vOut12 TypeSigs
_tlIoutput) = T_TypeSigs_s24 -> T_TypeSigs_v12
inv_TypeSigs_s24 T_TypeSigs_s24
_tlX24 (Identifier -> [Identifier] -> T_TypeSigs_vIn12
T_TypeSigs_vIn12 Identifier
_tlOnt [Identifier]
_tlOparams) in
let !_output :: TypeSigs
_output = TypeSig -> TypeSigs -> TypeSigs
rule320 TypeSig
_hdIoutput TypeSigs
_tlIoutput in
let _lhsOoutput :: TypeSigs
!_lhsOoutput :: TypeSigs
_lhsOoutput = TypeSigs -> TypeSigs
forall a. a -> a
rule321 TypeSigs
_output in
let !__result_ :: T_TypeSigs_vOut12
__result_ = TypeSigs -> T_TypeSigs_vOut12
T_TypeSigs_vOut12 TypeSigs
_lhsOoutput
in T_TypeSigs_vOut12
__result_ )
in T_TypeSigs_v12 -> T_TypeSigs_s24
C_TypeSigs_s24 T_TypeSigs_v12
v12
{-# INLINE rule320 #-}
rule320 :: TypeSig -> TypeSigs -> TypeSigs
rule320 = \ ((!TypeSig
_hdIoutput) :: TypeSig) ((!TypeSigs
_tlIoutput) :: TypeSigs) ->
(:) TypeSig
_hdIoutput TypeSigs
_tlIoutput
{-# INLINE rule321 #-}
rule321 :: p -> p
rule321 = \ !p
_output ->
p
_output
{-# INLINE rule322 #-}
rule322 :: Identifier -> Identifier
rule322 = \ ((!Identifier
_lhsInt) :: NontermIdent) ->
Identifier
_lhsInt
{-# INLINE rule323 #-}
rule323 :: [Identifier] -> [Identifier]
rule323 = \ ((![Identifier]
_lhsIparams) :: [Identifier]) ->
[Identifier]
_lhsIparams
{-# INLINE rule324 #-}
rule324 :: Identifier -> Identifier
rule324 = \ ((!Identifier
_lhsInt) :: NontermIdent) ->
Identifier
_lhsInt
{-# INLINE rule325 #-}
rule325 :: [Identifier] -> [Identifier]
rule325 = \ ((![Identifier]
_lhsIparams) :: [Identifier]) ->
[Identifier]
_lhsIparams
{-# NOINLINE sem_TypeSigs_Nil #-}
sem_TypeSigs_Nil :: T_TypeSigs
sem_TypeSigs_Nil :: T_TypeSigs
sem_TypeSigs_Nil = Identity T_TypeSigs_s24 -> T_TypeSigs
T_TypeSigs (T_TypeSigs_s24 -> Identity T_TypeSigs_s24
forall (m :: * -> *) a. Monad m => a -> m a
return T_TypeSigs_s24
st24) where
{-# NOINLINE st24 #-}
!st24 :: T_TypeSigs_s24
st24 = let
v12 :: T_TypeSigs_v12
v12 :: T_TypeSigs_v12
v12 = \ !(T_TypeSigs_vIn12 Identifier
_lhsInt [Identifier]
_lhsIparams) -> (
let !_output :: [a]
_output = () -> [a]
forall a. () -> [a]
rule326 () in
let _lhsOoutput :: TypeSigs
!_lhsOoutput :: TypeSigs
_lhsOoutput = TypeSigs -> TypeSigs
forall a. a -> a
rule327 TypeSigs
forall a. [a]
_output in
let !__result_ :: T_TypeSigs_vOut12
__result_ = TypeSigs -> T_TypeSigs_vOut12
T_TypeSigs_vOut12 TypeSigs
_lhsOoutput
in T_TypeSigs_vOut12
__result_ )
in T_TypeSigs_v12 -> T_TypeSigs_s24
C_TypeSigs_s24 T_TypeSigs_v12
v12
{-# INLINE rule326 #-}
rule326 :: () -> [a]
rule326 = \ (()
_ :: ()) ->
[]
{-# INLINE rule327 #-}
rule327 :: p -> p
rule327 = \ !p
_output ->
p
_output