uuagc-0.9.42.1: src-generated/DefaultRules.hs
{-# OPTIONS_GHC -XBangPatterns #-}
-- UUAGC 0.9.42.0 (src-ag/DefaultRules.ag)
module DefaultRules where
{-# 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 26 "dist/build/DefaultRules.hs" #-}
{-# LINE 2 "./src-ag/AbstractSyntax.ag" #-}
-- AbstractSyntax.ag imports
import Data.Set(Set)
import Data.Map(Map)
import Patterns (Pattern(..),Patterns)
import Expression (Expression(..))
import Macro --marcos
import CommonTypes
import ErrorMessages
{-# LINE 38 "dist/build/DefaultRules.hs" #-}
{-# LINE 2 "./src-ag/Patterns.ag" #-}
-- Patterns.ag imports
import UU.Scanner.Position(Pos)
import CommonTypes (ConstructorIdent,Identifier)
{-# LINE 45 "dist/build/DefaultRules.hs" #-}
{-# LINE 78 "./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 -- hack
mkLocVar = AGField _LOC
buildConExpr ocaml typeSyns rename nt con1 fs
| nt `elem` map fst typeSyns = if ocaml then synonymMl else synonymHs
| otherwise = normalExpr
where con = getName con1
tup = " " ++ buildTuple fs
args = " " ++ unwords fs
normalExpr = 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
prefixMod nt nm = "M_" ++ getName nt ++ "." ++ nm
concatSeq = foldr (Seq.><) Seq.empty
splitAttrs :: Map Identifier a -> [Identifier] -> ([(Identifier,a)],[Identifier]) -- a used as (String,String)
splitAttrs _ []
= ([],[])
splitAttrs useMap (n:rest)
= let (uses,normals) = splitAttrs useMap rest
in case Map.lookup n useMap of
Just x -> ((n,x):uses , normals )
Nothing -> ( uses , n:normals )
removeDefined :: Set (Identifier,Identifier) -> (Identifier,Attributes) -> (Identifier,[Identifier])
removeDefined defined (fld,as)
= ( fld
, [ a
| a <- Map.keys as
, not (Set.member (fld,a) defined)
]
)
{-# LINE 129 "dist/build/DefaultRules.hs" #-}
{-# LINE 226 "./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 nt con fld a
= "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 :: Set Identifier -> [(Identifier,Attributes)] -> (Identifier,(String,String,String)) -> Rule
useRule locals ch_outs (n,(op,e,pos))
= let elems = [ fld
| (fld,as) <- ch_outs
, Map.member n as
]
isOp [] = False
isOp (c:cs)
| isSpace c = isOp cs
| isAlpha c = case dropWhile isAlpha cs of
('.':cs2) -> isOp cs2 -- fully qualified name, drop prefix
_ -> False
| c == '(' = False
| otherwise = True
tks | Set.member n locals = [mkLocVar n noPos Nothing]
| null elems = lexTokens noPos e
| otherwise = lexTokens noPos str
where
opExpr l r
| isOp op = l ++ " " ++ op ++ " " ++ r -- takes the associativity of the operator
| otherwise = "(" ++ op ++ " " ++ l ++ " " ++ r ++ ")" -- associates to the right
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 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) -- yield error only if the rule is actually scheduled; for kennedyWarren code gen only
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 282 "dist/build/DefaultRules.hs" #-}
{-# LINE 460 "./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
-- adds the additional rules needed for around, which creates a sequence of
-- rules that form a function that each transforms the semantics of a child
-- before attaching the child.
-- The rule defines a local attribute "<child>_around" and <child> is dependent
-- on this attribute.
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
-- adds the additional rules needed for merging.
-- It produces for each merging child a rule with local attribute: "<child>_merged".
-- this rules takes the semantics of the first children and feeds it to the function
-- represented by this attribute. This attribute then defines the semantics for
-- the merging child.
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 351 "dist/build/DefaultRules.hs" #-}
{-# LINE 578 "./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 362 "dist/build/DefaultRules.hs" #-}
{-# LINE 630 "./src-ag/DefaultRules.ag" #-}
-- When a rule has a name, create an alias for a rule
-- and a modified rule that refers to the alias
-- Thus it removes rule names from rules
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 377 "dist/build/DefaultRules.hs" #-}
{-# LINE 647 "./src-ag/DefaultRules.ag" #-}
needsMultiRules :: Options -> Bool
needsMultiRules opts = (visit opts || withCycle opts) && not (kennedyWarren opts)
{-# LINE 383 "dist/build/DefaultRules.hs" #-}
{-# LINE 652 "./src-ag/DefaultRules.ag" #-}
{-
multiRule replaces
loc.(a,b) = e
by
loc.tup1 = e
loc.(a,_) = @loc.tup1
loc.(_,b) = @loc.tup1
It needs to thread a unique number for inventing names for the tuples.
It also works for nested tuples:
loc.(a,(b,c)) = e
becomes
loc.tup1 = e
loc.(a,_) = @loc.tup1
loc.(_,tup2) = @loc.tup1
loc.(b,_) = @loc.tup2
loc.(_,c) = @loc.tup2
-}
multiRule :: Rule -> Int -> ([Rule], Int)
multiRule (Rule _ 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 433 "dist/build/DefaultRules.hs" #-}
-- Child -------------------------------------------------------
{-
visit 0:
inherited attributes:
con : ConstructorIdent
cr : Bool
inhMap : Map Identifier Attributes
merged : Set Identifier
nt : NontermIdent
params : [Identifier]
synMap : Map Identifier Attributes
synthesized attributes:
errors : Seq Error
field : (Identifier,Type,ChildKind)
inherited : Attributes
name : Identifier
output : Child
synthesized : Attributes
alternatives:
alternative Child:
child name : {Identifier}
child tp : {Type}
child kind : {ChildKind}
visit 0:
local chnt : _
local inh : _
local _tup1 : _
local params : _
local nt : _
local inh1 : _
local syn : _
local syn1 : _
-}
-- cata
sem_Child :: Child ->
T_Child
sem_Child !(Child _name _tp _kind) =
(sem_Child_Child _name _tp _kind)
-- semantic domain
newtype T_Child = T_Child (ConstructorIdent ->
Bool ->
(Map Identifier Attributes) ->
(Set Identifier) ->
NontermIdent ->
([Identifier]) ->
(Map Identifier Attributes) ->
( (Seq Error),( (Identifier,Type,ChildKind) ),Attributes,Identifier,Child,Attributes))
data Inh_Child = Inh_Child {con_Inh_Child :: !(ConstructorIdent),cr_Inh_Child :: !(Bool),inhMap_Inh_Child :: !((Map Identifier Attributes)),merged_Inh_Child :: !((Set Identifier)),nt_Inh_Child :: !(NontermIdent),params_Inh_Child :: !(([Identifier])),synMap_Inh_Child :: !((Map Identifier Attributes))}
data Syn_Child = Syn_Child {errors_Syn_Child :: !((Seq Error)),field_Syn_Child :: !(( (Identifier,Type,ChildKind) )),inherited_Syn_Child :: !(Attributes),name_Syn_Child :: !(Identifier),output_Syn_Child :: !(Child),synthesized_Syn_Child :: !(Attributes)}
wrap_Child :: T_Child ->
Inh_Child ->
Syn_Child
wrap_Child !(T_Child sem) !(Inh_Child _lhsIcon _lhsIcr _lhsIinhMap _lhsImerged _lhsInt _lhsIparams _lhsIsynMap) =
(let ( !_lhsOerrors,!_lhsOfield,!_lhsOinherited,!_lhsOname,!_lhsOoutput,!_lhsOsynthesized) = sem _lhsIcon _lhsIcr _lhsIinhMap _lhsImerged _lhsInt _lhsIparams _lhsIsynMap
in (Syn_Child _lhsOerrors _lhsOfield _lhsOinherited _lhsOname _lhsOoutput _lhsOsynthesized))
sem_Child_Child :: Identifier ->
Type ->
ChildKind ->
T_Child
sem_Child_Child !name_ !tp_ !kind_ =
(T_Child (\ (!_lhsIcon)
(!_lhsIcr)
(!_lhsIinhMap)
(!_lhsImerged)
(!_lhsInt)
(!_lhsIparams)
(!_lhsIsynMap) ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
Seq.empty
{-# LINE 503 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 546 "./src-ag/DefaultRules.ag" #-}
(name_,tp_,kind_)
{-# LINE 508 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOfield ->
(case (({-# 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 516 "dist/build/DefaultRules.hs" #-}
)) of
{ !_chnt ->
(case (({-# LINE 23 "./src-ag/DistChildAttr.ag" #-}
Map.findWithDefault Map.empty _chnt _lhsIinhMap
{-# LINE 521 "dist/build/DefaultRules.hs" #-}
)) of
{ !_inh ->
(case (({-# LINE 568 "./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 529 "dist/build/DefaultRules.hs" #-}
)) of
{ !__tup1 ->
(case (({-# LINE 568 "./src-ag/DefaultRules.ag" #-}
__tup1
{-# LINE 534 "dist/build/DefaultRules.hs" #-}
)) of
{ !(_,!_params) ->
(case (({-# LINE 568 "./src-ag/DefaultRules.ag" #-}
__tup1
{-# LINE 539 "dist/build/DefaultRules.hs" #-}
)) of
{ !(!_nt,_) ->
(case (({-# LINE 572 "./src-ag/DefaultRules.ag" #-}
Map.map (elimSelfStr _nt _params ) _inh
{-# LINE 544 "dist/build/DefaultRules.hs" #-}
)) of
{ !_inh1 ->
(case (({-# LINE 209 "./src-ag/DefaultRules.ag" #-}
_inh1
{-# LINE 549 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOinherited ->
(case (({-# LINE 200 "./src-ag/DefaultRules.ag" #-}
name_
{-# LINE 554 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOname ->
(case (({-# LINE 614 "./src-ag/DefaultRules.ag" #-}
Child name_ tp_ kind_
{-# LINE 559 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
(case (({-# LINE 24 "./src-ag/DistChildAttr.ag" #-}
Map.findWithDefault Map.empty _chnt _lhsIsynMap
{-# LINE 564 "dist/build/DefaultRules.hs" #-}
)) of
{ !_syn ->
(case (({-# LINE 573 "./src-ag/DefaultRules.ag" #-}
Map.map (elimSelfStr _nt _params ) _syn
{-# LINE 569 "dist/build/DefaultRules.hs" #-}
)) of
{ !_syn1 ->
(case (({-# LINE 210 "./src-ag/DefaultRules.ag" #-}
if name_ `Set.member` _lhsImerged
then Map.empty
else _syn1
{-# LINE 576 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOsynthesized ->
( _lhsOerrors,_lhsOfield,_lhsOinherited,_lhsOname,_lhsOoutput,_lhsOsynthesized) }) }) }) }) }) }) }) }) }) }) }) }) }) })))
-- Children ----------------------------------------------------
{-
visit 0:
inherited attributes:
con : ConstructorIdent
cr : Bool
inhMap : Map Identifier Attributes
merged : Set Identifier
nt : NontermIdent
params : [Identifier]
synMap : Map Identifier Attributes
synthesized attributes:
errors : Seq Error
fields : [(Identifier,Type,ChildKind)]
inputs : [(Identifier, Attributes)]
output : Children
outputs : [(Identifier, Attributes)]
alternatives:
alternative Cons:
child hd : Child
child tl : Children
visit 0:
local output : _
alternative Nil:
visit 0:
local output : _
-}
-- cata
sem_Children :: Children ->
T_Children
sem_Children !list =
(Prelude.foldr sem_Children_Cons sem_Children_Nil (Prelude.map sem_Child list))
-- semantic domain
newtype T_Children = T_Children (ConstructorIdent ->
Bool ->
(Map Identifier Attributes) ->
(Set Identifier) ->
NontermIdent ->
([Identifier]) ->
(Map Identifier Attributes) ->
( (Seq Error),([(Identifier,Type,ChildKind)]),([(Identifier, Attributes)]),Children,([(Identifier, Attributes)])))
data Inh_Children = Inh_Children {con_Inh_Children :: !(ConstructorIdent),cr_Inh_Children :: !(Bool),inhMap_Inh_Children :: !((Map Identifier Attributes)),merged_Inh_Children :: !((Set Identifier)),nt_Inh_Children :: !(NontermIdent),params_Inh_Children :: !(([Identifier])),synMap_Inh_Children :: !((Map Identifier Attributes))}
data Syn_Children = Syn_Children {errors_Syn_Children :: !((Seq Error)),fields_Syn_Children :: !(([(Identifier,Type,ChildKind)])),inputs_Syn_Children :: !(([(Identifier, Attributes)])),output_Syn_Children :: !(Children),outputs_Syn_Children :: !(([(Identifier, Attributes)]))}
wrap_Children :: T_Children ->
Inh_Children ->
Syn_Children
wrap_Children !(T_Children sem) !(Inh_Children _lhsIcon _lhsIcr _lhsIinhMap _lhsImerged _lhsInt _lhsIparams _lhsIsynMap) =
(let ( !_lhsOerrors,!_lhsOfields,!_lhsOinputs,!_lhsOoutput,!_lhsOoutputs) = sem _lhsIcon _lhsIcr _lhsIinhMap _lhsImerged _lhsInt _lhsIparams _lhsIsynMap
in (Syn_Children _lhsOerrors _lhsOfields _lhsOinputs _lhsOoutput _lhsOoutputs))
sem_Children_Cons :: T_Child ->
T_Children ->
T_Children
sem_Children_Cons !(T_Child hd_) !(T_Children tl_) =
(T_Children (\ (!_lhsIcon)
(!_lhsIcr)
(!_lhsIinhMap)
(!_lhsImerged)
(!_lhsInt)
(!_lhsIparams)
(!_lhsIsynMap) ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIsynMap
{-# LINE 642 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOsynMap ->
(case (({-# LINE 42 "./src-ag/DefaultRules.ag" #-}
_lhsIparams
{-# LINE 647 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOparams ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 652 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOnt ->
(case (({-# LINE 788 "./src-ag/DefaultRules.ag" #-}
_lhsImerged
{-# LINE 657 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOmerged ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIinhMap
{-# LINE 662 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOinhMap ->
(case (({-# LINE 56 "./src-ag/DefaultRules.ag" #-}
_lhsIcr
{-# LINE 667 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOcr ->
(case (({-# LINE 40 "./src-ag/DefaultRules.ag" #-}
_lhsIcon
{-# LINE 672 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOcon ->
(case (tl_ _tlOcon _tlOcr _tlOinhMap _tlOmerged _tlOnt _tlOparams _tlOsynMap) of
{ ( !_tlIerrors,!_tlIfields,!_tlIinputs,!_tlIoutput,!_tlIoutputs) ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIsynMap
{-# LINE 679 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOsynMap ->
(case (({-# LINE 42 "./src-ag/DefaultRules.ag" #-}
_lhsIparams
{-# LINE 684 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOparams ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 689 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOnt ->
(case (({-# LINE 788 "./src-ag/DefaultRules.ag" #-}
_lhsImerged
{-# LINE 694 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOmerged ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIinhMap
{-# LINE 699 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOinhMap ->
(case (({-# LINE 56 "./src-ag/DefaultRules.ag" #-}
_lhsIcr
{-# LINE 704 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOcr ->
(case (({-# LINE 40 "./src-ag/DefaultRules.ag" #-}
_lhsIcon
{-# LINE 709 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOcon ->
(case (hd_ _hdOcon _hdOcr _hdOinhMap _hdOmerged _hdOnt _hdOparams _hdOsynMap) of
{ ( !_hdIerrors,!_hdIfield,!_hdIinherited,!_hdIname,!_hdIoutput,!_hdIsynthesized) ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
_hdIerrors Seq.>< _tlIerrors
{-# LINE 716 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 542 "./src-ag/DefaultRules.ag" #-}
_hdIfield : _tlIfields
{-# LINE 721 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOfields ->
(case (({-# LINE 215 "./src-ag/DefaultRules.ag" #-}
(_hdIname, _hdIinherited) : _tlIinputs
{-# LINE 726 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOinputs ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
(:) _hdIoutput _tlIoutput
{-# LINE 731 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 736 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
(case (({-# LINE 216 "./src-ag/DefaultRules.ag" #-}
(_hdIname, _hdIsynthesized) : _tlIoutputs
{-# LINE 741 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutputs ->
( _lhsOerrors,_lhsOfields,_lhsOinputs,_lhsOoutput,_lhsOoutputs) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))
sem_Children_Nil :: T_Children
sem_Children_Nil =
(T_Children (\ (!_lhsIcon)
(!_lhsIcr)
(!_lhsIinhMap)
(!_lhsImerged)
(!_lhsInt)
(!_lhsIparams)
(!_lhsIsynMap) ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
Seq.empty
{-# LINE 756 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 543 "./src-ag/DefaultRules.ag" #-}
[]
{-# LINE 761 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOfields ->
(case (({-# LINE 217 "./src-ag/DefaultRules.ag" #-}
[]
{-# LINE 766 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOinputs ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
[]
{-# LINE 771 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 776 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
(case (({-# LINE 218 "./src-ag/DefaultRules.ag" #-}
[]
{-# LINE 781 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutputs ->
( _lhsOerrors,_lhsOfields,_lhsOinputs,_lhsOoutput,_lhsOoutputs) }) }) }) }) }) })))
-- Grammar -----------------------------------------------------
{-
visit 0:
inherited attribute:
options : Options
synthesized attributes:
errors : Seq Error
output : Grammar
alternatives:
alternative Grammar:
child typeSyns : {TypeSyns}
child useMap : {UseMap}
child derivings : {Derivings}
child wrappers : {Set NontermIdent}
child nonts : Nonterminals
child pragmas : {PragmaMap}
child manualAttrOrderMap : {AttrOrderMap}
child paramMap : {ParamMap}
child contextMap : {ContextMap}
child quantMap : {QuantMap}
child uniqueMap : {UniqueMap}
child augmentsMap : {Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))}
child aroundsMap : {Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))}
child mergeMap : {Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))}
visit 0:
local output : _
-}
-- cata
sem_Grammar :: Grammar ->
T_Grammar
sem_Grammar !(Grammar _typeSyns _useMap _derivings _wrappers _nonts _pragmas _manualAttrOrderMap _paramMap _contextMap _quantMap _uniqueMap _augmentsMap _aroundsMap _mergeMap) =
(sem_Grammar_Grammar _typeSyns _useMap _derivings _wrappers (sem_Nonterminals _nonts) _pragmas _manualAttrOrderMap _paramMap _contextMap _quantMap _uniqueMap _augmentsMap _aroundsMap _mergeMap)
-- semantic domain
newtype T_Grammar = T_Grammar (Options ->
( (Seq Error),Grammar))
data Inh_Grammar = Inh_Grammar {options_Inh_Grammar :: !(Options)}
data Syn_Grammar = Syn_Grammar {errors_Syn_Grammar :: !((Seq Error)),output_Syn_Grammar :: !(Grammar)}
wrap_Grammar :: T_Grammar ->
Inh_Grammar ->
Syn_Grammar
wrap_Grammar !(T_Grammar sem) !(Inh_Grammar _lhsIoptions) =
(let ( !_lhsOerrors,!_lhsOoutput) = sem _lhsIoptions
in (Syn_Grammar _lhsOerrors _lhsOoutput))
sem_Grammar_Grammar :: TypeSyns ->
UseMap ->
Derivings ->
(Set NontermIdent) ->
T_Nonterminals ->
PragmaMap ->
AttrOrderMap ->
ParamMap ->
ContextMap ->
QuantMap ->
UniqueMap ->
(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->
(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->
(Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier, [Identifier], Expression)))) ->
T_Grammar
sem_Grammar_Grammar !typeSyns_ !useMap_ !derivings_ !wrappers_ !(T_Nonterminals nonts_) !pragmas_ !manualAttrOrderMap_ !paramMap_ !contextMap_ !quantMap_ !uniqueMap_ !augmentsMap_ !aroundsMap_ !mergeMap_ =
(T_Grammar (\ (!_lhsIoptions) ->
(case (({-# LINE 51 "./src-ag/DefaultRules.ag" #-}
_lhsIoptions
{-# LINE 847 "dist/build/DefaultRules.hs" #-}
)) of
{ !_nontsOoptions ->
(case (nonts_) of
{ ( !_nontsIcollect_nts,!_nontsIinhMap',!_nontsIsynMap',!T_Nonterminals_1 nonts_1) ->
(case (({-# LINE 16 "./src-ag/DistChildAttr.ag" #-}
_nontsIsynMap'
{-# LINE 854 "dist/build/DefaultRules.hs" #-}
)) of
{ !_nontsOsynMap ->
(case (({-# LINE 15 "./src-ag/DistChildAttr.ag" #-}
_nontsIinhMap'
{-# LINE 859 "dist/build/DefaultRules.hs" #-}
)) of
{ !_nontsOinhMap ->
(case (({-# LINE 790 "./src-ag/DefaultRules.ag" #-}
mergeMap_
{-# LINE 864 "dist/build/DefaultRules.hs" #-}
)) of
{ !_nontsOmergesIn ->
(case (({-# LINE 709 "./src-ag/DefaultRules.ag" #-}
manualAttrOrderMap_
{-# LINE 869 "dist/build/DefaultRules.hs" #-}
)) of
{ !_nontsOmanualAttrOrderMap ->
(case (({-# LINE 204 "./src-ag/DefaultRules.ag" #-}
typeSyns_
{-# LINE 874 "dist/build/DefaultRules.hs" #-}
)) of
{ !_nontsOtypeSyns ->
(case (({-# LINE 202 "./src-ag/DefaultRules.ag" #-}
useMap_
{-# LINE 879 "dist/build/DefaultRules.hs" #-}
)) of
{ !_nontsOuseMap ->
(case (({-# LINE 67 "./src-ag/DefaultRules.ag" #-}
wrappers_
{-# LINE 884 "dist/build/DefaultRules.hs" #-}
)) of
{ !_nontsOwrappers ->
(case (({-# LINE 59 "./src-ag/DefaultRules.ag" #-}
modcopy _lhsIoptions
{-# LINE 889 "dist/build/DefaultRules.hs" #-}
)) of
{ !_nontsOcr ->
(case (({-# LINE 58 "./src-ag/DefaultRules.ag" #-}
rename _lhsIoptions
{-# LINE 894 "dist/build/DefaultRules.hs" #-}
)) of
{ !_nontsOo_rename ->
(case (({-# LINE 782 "./src-ag/DefaultRules.ag" #-}
aroundsMap_
{-# LINE 899 "dist/build/DefaultRules.hs" #-}
)) of
{ !_nontsOaroundsIn ->
(case (({-# LINE 775 "./src-ag/DefaultRules.ag" #-}
augmentsMap_
{-# LINE 904 "dist/build/DefaultRules.hs" #-}
)) of
{ !_nontsOaugmentsIn ->
(case (({-# LINE 595 "./src-ag/DefaultRules.ag" #-}
1
{-# LINE 909 "dist/build/DefaultRules.hs" #-}
)) of
{ !_nontsOuniq ->
(case (({-# LINE 180 "./src-ag/DefaultRules.ag" #-}
_nontsIcollect_nts
{-# LINE 914 "dist/build/DefaultRules.hs" #-}
)) of
{ !_nontsOnonterminals ->
(case (nonts_1 _nontsOaroundsIn _nontsOaugmentsIn _nontsOcr _nontsOinhMap _nontsOmanualAttrOrderMap _nontsOmergesIn _nontsOnonterminals _nontsOo_rename _nontsOoptions _nontsOsynMap _nontsOtypeSyns _nontsOuniq _nontsOuseMap _nontsOwrappers) of
{ ( !_nontsIerrors,!_nontsIoutput,!_nontsIuniq) ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
_nontsIerrors
{-# LINE 921 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
Grammar typeSyns_ useMap_ derivings_ wrappers_ _nontsIoutput pragmas_ manualAttrOrderMap_ paramMap_ contextMap_ quantMap_ uniqueMap_ augmentsMap_ aroundsMap_ mergeMap_
{-# LINE 926 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 931 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
( _lhsOerrors,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))
-- Nonterminal -------------------------------------------------
{-
visit 0:
synthesized attributes:
collect_nts : Set NontermIdent
inhMap' : Map Identifier Attributes
synMap' : Map Identifier Attributes
visit 1:
inherited attributes:
aroundsIn : Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))
augmentsIn : Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))
cr : Bool
inhMap : Map Identifier Attributes
manualAttrOrderMap : AttrOrderMap
mergesIn : Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))
nonterminals : Set NontermIdent
o_rename : Bool
options : Options
synMap : Map Identifier Attributes
typeSyns : TypeSyns
useMap : UseMap
wrappers : Set NontermIdent
chained attribute:
uniq : Int
synthesized attributes:
errors : Seq Error
output : Nonterminal
alternatives:
alternative Nonterminal:
child nt : {NontermIdent}
child params : {[Identifier]}
child inh : {Attributes}
child syn : {Attributes}
child prods : Productions
visit 1:
local mergesIn : _
local syn1 : _
local inh1 : _
local augmentsIn : _
local aroundsIn : _
-}
-- cata
sem_Nonterminal :: Nonterminal ->
T_Nonterminal
sem_Nonterminal !(Nonterminal _nt _params _inh _syn _prods) =
(sem_Nonterminal_Nonterminal _nt _params _inh _syn (sem_Productions _prods))
-- semantic domain
newtype T_Nonterminal = T_Nonterminal (( (Set NontermIdent),(Map Identifier Attributes),(Map Identifier Attributes),T_Nonterminal_1))
newtype T_Nonterminal_1 = T_Nonterminal_1 ((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->
(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->
Bool ->
(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) ->
( (Seq Error),Nonterminal,Int))
data Inh_Nonterminal = Inh_Nonterminal {aroundsIn_Inh_Nonterminal :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression])))),augmentsIn_Inh_Nonterminal :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression])))),cr_Inh_Nonterminal :: !(Bool),inhMap_Inh_Nonterminal :: !((Map Identifier Attributes)),manualAttrOrderMap_Inh_Nonterminal :: !(AttrOrderMap),mergesIn_Inh_Nonterminal :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))))),nonterminals_Inh_Nonterminal :: !((Set NontermIdent)),o_rename_Inh_Nonterminal :: !(Bool),options_Inh_Nonterminal :: !(Options),synMap_Inh_Nonterminal :: !((Map Identifier Attributes)),typeSyns_Inh_Nonterminal :: !(TypeSyns),uniq_Inh_Nonterminal :: !(Int),useMap_Inh_Nonterminal :: !(UseMap),wrappers_Inh_Nonterminal :: !((Set NontermIdent))}
data Syn_Nonterminal = Syn_Nonterminal {collect_nts_Syn_Nonterminal :: !((Set NontermIdent)),errors_Syn_Nonterminal :: !((Seq Error)),inhMap'_Syn_Nonterminal :: !((Map Identifier Attributes)),output_Syn_Nonterminal :: !(Nonterminal),synMap'_Syn_Nonterminal :: !((Map Identifier Attributes)),uniq_Syn_Nonterminal :: !(Int)}
wrap_Nonterminal :: T_Nonterminal ->
Inh_Nonterminal ->
Syn_Nonterminal
wrap_Nonterminal !(T_Nonterminal sem) !(Inh_Nonterminal _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinhMap _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsIo_rename _lhsIoptions _lhsIsynMap _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers) =
(let ( !_lhsOcollect_nts,!_lhsOinhMap',!_lhsOsynMap',!T_Nonterminal_1 sem_1) = sem
( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) = sem_1 _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinhMap _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsIo_rename _lhsIoptions _lhsIsynMap _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers
in (Syn_Nonterminal _lhsOcollect_nts _lhsOerrors _lhsOinhMap' _lhsOoutput _lhsOsynMap' _lhsOuniq))
sem_Nonterminal_Nonterminal :: NontermIdent ->
([Identifier]) ->
Attributes ->
Attributes ->
T_Productions ->
T_Nonterminal
sem_Nonterminal_Nonterminal !nt_ !params_ !inh_ !syn_ !(T_Productions prods_) =
(T_Nonterminal (case (({-# LINE 176 "./src-ag/DefaultRules.ag" #-}
Set.singleton nt_
{-# LINE 1016 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcollect_nts ->
(case (({-# LINE 7 "./src-ag/DistChildAttr.ag" #-}
Map.singleton nt_ inh_
{-# LINE 1021 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOinhMap' ->
(case (({-# LINE 8 "./src-ag/DistChildAttr.ag" #-}
Map.singleton nt_ syn_
{-# LINE 1026 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOsynMap' ->
(case ((let sem_Nonterminal_Nonterminal_1 :: T_Nonterminal_1
sem_Nonterminal_Nonterminal_1 =
(T_Nonterminal_1 (\ (!_lhsIaroundsIn)
(!_lhsIaugmentsIn)
(!_lhsIcr)
(!_lhsIinhMap)
(!_lhsImanualAttrOrderMap)
(!_lhsImergesIn)
(!_lhsInonterminals)
(!_lhsIo_rename)
(!_lhsIoptions)
(!_lhsIsynMap)
(!_lhsItypeSyns)
(!_lhsIuniq)
(!_lhsIuseMap)
(!_lhsIwrappers) ->
(case (({-# LINE 65 "./src-ag/DefaultRules.ag" #-}
_lhsIwrappers
{-# LINE 1047 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOwrappers ->
(case (({-# LINE 72 "./src-ag/DefaultRules.ag" #-}
_lhsItypeSyns
{-# LINE 1052 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOtypeSyns ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIsynMap
{-# LINE 1057 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOsynMap ->
(case (({-# LINE 51 "./src-ag/DefaultRules.ag" #-}
_lhsIoptions
{-# LINE 1062 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOoptions ->
(case (({-# LINE 52 "./src-ag/DefaultRules.ag" #-}
_lhsIo_rename
{-# LINE 1067 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOo_rename ->
(case (({-# LINE 791 "./src-ag/DefaultRules.ag" #-}
Map.findWithDefault Map.empty nt_ _lhsImergesIn
{-# LINE 1072 "dist/build/DefaultRules.hs" #-}
)) of
{ !_mergesIn ->
(case (({-# LINE 787 "./src-ag/DefaultRules.ag" #-}
_mergesIn
{-# LINE 1077 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOmergesIn ->
(case (({-# LINE 705 "./src-ag/DefaultRules.ag" #-}
_lhsImanualAttrOrderMap
{-# LINE 1082 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOmanualAttrOrderMap ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIinhMap
{-# LINE 1087 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOinhMap ->
(case (({-# LINE 53 "./src-ag/DefaultRules.ag" #-}
_lhsIcr
{-# LINE 1092 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOcr ->
(case (({-# LINE 565 "./src-ag/DefaultRules.ag" #-}
Map.map (elimSelfId nt_ params_) syn_
{-# LINE 1097 "dist/build/DefaultRules.hs" #-}
)) of
{ !_syn1 ->
(case (({-# LINE 564 "./src-ag/DefaultRules.ag" #-}
Map.map (elimSelfId nt_ params_) inh_
{-# LINE 1102 "dist/build/DefaultRules.hs" #-}
)) of
{ !_inh1 ->
(case (({-# LINE 206 "./src-ag/DefaultRules.ag" #-}
nt_
{-# LINE 1107 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOnt ->
(case (({-# LINE 194 "./src-ag/DefaultRules.ag" #-}
Map.findWithDefault Map.empty nt_ _lhsIuseMap
{-# LINE 1112 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOuseMap ->
(case (({-# LINE 193 "./src-ag/DefaultRules.ag" #-}
syn_
{-# LINE 1117 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOsynOrig ->
(case (({-# LINE 191 "./src-ag/DefaultRules.ag" #-}
_syn1
{-# LINE 1122 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOsyn ->
(case (({-# LINE 190 "./src-ag/DefaultRules.ag" #-}
_inh1
{-# LINE 1127 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOinh ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_lhsIuniq
{-# LINE 1132 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOuniq ->
(case (({-# LINE 178 "./src-ag/DefaultRules.ag" #-}
_lhsInonterminals
{-# LINE 1137 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOnonterminals ->
(case (({-# LINE 776 "./src-ag/DefaultRules.ag" #-}
Map.findWithDefault Map.empty nt_ _lhsIaugmentsIn
{-# LINE 1142 "dist/build/DefaultRules.hs" #-}
)) of
{ !_augmentsIn ->
(case (({-# LINE 773 "./src-ag/DefaultRules.ag" #-}
_augmentsIn
{-# LINE 1147 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOaugmentsIn ->
(case (({-# LINE 783 "./src-ag/DefaultRules.ag" #-}
Map.findWithDefault Map.empty nt_ _lhsIaroundsIn
{-# LINE 1152 "dist/build/DefaultRules.hs" #-}
)) of
{ !_aroundsIn ->
(case (({-# LINE 780 "./src-ag/DefaultRules.ag" #-}
_aroundsIn
{-# LINE 1157 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOaroundsIn ->
(case (({-# LINE 192 "./src-ag/DefaultRules.ag" #-}
inh_
{-# LINE 1162 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOinhOrig ->
(case (({-# LINE 44 "./src-ag/DefaultRules.ag" #-}
params_
{-# LINE 1167 "dist/build/DefaultRules.hs" #-}
)) of
{ !_prodsOparams ->
(case (prods_ _prodsOaroundsIn _prodsOaugmentsIn _prodsOcr _prodsOinh _prodsOinhMap _prodsOinhOrig _prodsOmanualAttrOrderMap _prodsOmergesIn _prodsOnonterminals _prodsOnt _prodsOo_rename _prodsOoptions _prodsOparams _prodsOsyn _prodsOsynMap _prodsOsynOrig _prodsOtypeSyns _prodsOuniq _prodsOuseMap _prodsOwrappers) of
{ ( !_prodsIerrors,!_prodsIoutput,!_prodsIuniq) ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
_prodsIerrors
{-# LINE 1174 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 604 "./src-ag/DefaultRules.ag" #-}
Nonterminal nt_ params_ _inh1 _syn1 _prodsIoutput
{-# LINE 1179 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_prodsIuniq
{-# LINE 1184 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOuniq ->
( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))
in sem_Nonterminal_Nonterminal_1)) of
{ ( !sem_Nonterminal_1) ->
( _lhsOcollect_nts,_lhsOinhMap',_lhsOsynMap',sem_Nonterminal_1) }) }) }) }))
-- Nonterminals ------------------------------------------------
{-
visit 0:
synthesized attributes:
collect_nts : Set NontermIdent
inhMap' : Map Identifier Attributes
synMap' : Map Identifier Attributes
visit 1:
inherited attributes:
aroundsIn : Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))
augmentsIn : Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))
cr : Bool
inhMap : Map Identifier Attributes
manualAttrOrderMap : AttrOrderMap
mergesIn : Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))
nonterminals : Set NontermIdent
o_rename : Bool
options : Options
synMap : Map Identifier Attributes
typeSyns : TypeSyns
useMap : UseMap
wrappers : Set NontermIdent
chained attribute:
uniq : Int
synthesized attributes:
errors : Seq Error
output : Nonterminals
alternatives:
alternative Cons:
child hd : Nonterminal
child tl : Nonterminals
visit 1:
local output : _
alternative Nil:
visit 1:
local output : _
-}
-- cata
sem_Nonterminals :: Nonterminals ->
T_Nonterminals
sem_Nonterminals !list =
(Prelude.foldr sem_Nonterminals_Cons sem_Nonterminals_Nil (Prelude.map sem_Nonterminal list))
-- semantic domain
newtype T_Nonterminals = T_Nonterminals (( (Set NontermIdent),(Map Identifier Attributes),(Map Identifier Attributes),T_Nonterminals_1))
newtype T_Nonterminals_1 = T_Nonterminals_1 ((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->
(Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression]))) ->
Bool ->
(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) ->
( (Seq Error),Nonterminals,Int))
data Inh_Nonterminals = Inh_Nonterminals {aroundsIn_Inh_Nonterminals :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression])))),augmentsIn_Inh_Nonterminals :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier [Expression])))),cr_Inh_Nonterminals :: !(Bool),inhMap_Inh_Nonterminals :: !((Map Identifier Attributes)),manualAttrOrderMap_Inh_Nonterminals :: !(AttrOrderMap),mergesIn_Inh_Nonterminals :: !((Map NontermIdent (Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))))),nonterminals_Inh_Nonterminals :: !((Set NontermIdent)),o_rename_Inh_Nonterminals :: !(Bool),options_Inh_Nonterminals :: !(Options),synMap_Inh_Nonterminals :: !((Map Identifier Attributes)),typeSyns_Inh_Nonterminals :: !(TypeSyns),uniq_Inh_Nonterminals :: !(Int),useMap_Inh_Nonterminals :: !(UseMap),wrappers_Inh_Nonterminals :: !((Set NontermIdent))}
data Syn_Nonterminals = Syn_Nonterminals {collect_nts_Syn_Nonterminals :: !((Set NontermIdent)),errors_Syn_Nonterminals :: !((Seq Error)),inhMap'_Syn_Nonterminals :: !((Map Identifier Attributes)),output_Syn_Nonterminals :: !(Nonterminals),synMap'_Syn_Nonterminals :: !((Map Identifier Attributes)),uniq_Syn_Nonterminals :: !(Int)}
wrap_Nonterminals :: T_Nonterminals ->
Inh_Nonterminals ->
Syn_Nonterminals
wrap_Nonterminals !(T_Nonterminals sem) !(Inh_Nonterminals _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinhMap _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsIo_rename _lhsIoptions _lhsIsynMap _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers) =
(let ( !_lhsOcollect_nts,!_lhsOinhMap',!_lhsOsynMap',!T_Nonterminals_1 sem_1) = sem
( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) = sem_1 _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinhMap _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsIo_rename _lhsIoptions _lhsIsynMap _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers
in (Syn_Nonterminals _lhsOcollect_nts _lhsOerrors _lhsOinhMap' _lhsOoutput _lhsOsynMap' _lhsOuniq))
sem_Nonterminals_Cons :: T_Nonterminal ->
T_Nonterminals ->
T_Nonterminals
sem_Nonterminals_Cons !(T_Nonterminal hd_) !(T_Nonterminals tl_) =
(T_Nonterminals (case (tl_) of
{ ( !_tlIcollect_nts,!_tlIinhMap',!_tlIsynMap',!T_Nonterminals_1 tl_1) ->
(case (hd_) of
{ ( !_hdIcollect_nts,!_hdIinhMap',!_hdIsynMap',!T_Nonterminal_1 hd_1) ->
(case (({-# LINE 174 "./src-ag/DefaultRules.ag" #-}
_hdIcollect_nts `Set.union` _tlIcollect_nts
{-# LINE 1269 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcollect_nts ->
(case (({-# LINE 4 "./src-ag/DistChildAttr.ag" #-}
_hdIinhMap' `Map.union` _tlIinhMap'
{-# LINE 1274 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOinhMap' ->
(case (({-# LINE 4 "./src-ag/DistChildAttr.ag" #-}
_hdIsynMap' `Map.union` _tlIsynMap'
{-# LINE 1279 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOsynMap' ->
(case ((let sem_Nonterminals_Cons_1 :: T_Nonterminals_1
sem_Nonterminals_Cons_1 =
(T_Nonterminals_1 (\ (!_lhsIaroundsIn)
(!_lhsIaugmentsIn)
(!_lhsIcr)
(!_lhsIinhMap)
(!_lhsImanualAttrOrderMap)
(!_lhsImergesIn)
(!_lhsInonterminals)
(!_lhsIo_rename)
(!_lhsIoptions)
(!_lhsIsynMap)
(!_lhsItypeSyns)
(!_lhsIuniq)
(!_lhsIuseMap)
(!_lhsIwrappers) ->
(case (({-# LINE 65 "./src-ag/DefaultRules.ag" #-}
_lhsIwrappers
{-# LINE 1300 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOwrappers ->
(case (({-# LINE 186 "./src-ag/DefaultRules.ag" #-}
_lhsIuseMap
{-# LINE 1305 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOuseMap ->
(case (({-# LINE 72 "./src-ag/DefaultRules.ag" #-}
_lhsItypeSyns
{-# LINE 1310 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOtypeSyns ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIsynMap
{-# LINE 1315 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOsynMap ->
(case (({-# LINE 51 "./src-ag/DefaultRules.ag" #-}
_lhsIoptions
{-# LINE 1320 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOoptions ->
(case (({-# LINE 52 "./src-ag/DefaultRules.ag" #-}
_lhsIo_rename
{-# LINE 1325 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOo_rename ->
(case (({-# LINE 786 "./src-ag/DefaultRules.ag" #-}
_lhsImergesIn
{-# LINE 1330 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOmergesIn ->
(case (({-# LINE 705 "./src-ag/DefaultRules.ag" #-}
_lhsImanualAttrOrderMap
{-# LINE 1335 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOmanualAttrOrderMap ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIinhMap
{-# LINE 1340 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOinhMap ->
(case (({-# LINE 53 "./src-ag/DefaultRules.ag" #-}
_lhsIcr
{-# LINE 1345 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOcr ->
(case (({-# LINE 65 "./src-ag/DefaultRules.ag" #-}
_lhsIwrappers
{-# LINE 1350 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOwrappers ->
(case (({-# LINE 186 "./src-ag/DefaultRules.ag" #-}
_lhsIuseMap
{-# LINE 1355 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOuseMap ->
(case (({-# LINE 72 "./src-ag/DefaultRules.ag" #-}
_lhsItypeSyns
{-# LINE 1360 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOtypeSyns ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIsynMap
{-# LINE 1365 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOsynMap ->
(case (({-# LINE 51 "./src-ag/DefaultRules.ag" #-}
_lhsIoptions
{-# LINE 1370 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOoptions ->
(case (({-# LINE 52 "./src-ag/DefaultRules.ag" #-}
_lhsIo_rename
{-# LINE 1375 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOo_rename ->
(case (({-# LINE 786 "./src-ag/DefaultRules.ag" #-}
_lhsImergesIn
{-# LINE 1380 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOmergesIn ->
(case (({-# LINE 705 "./src-ag/DefaultRules.ag" #-}
_lhsImanualAttrOrderMap
{-# LINE 1385 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOmanualAttrOrderMap ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIinhMap
{-# LINE 1390 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOinhMap ->
(case (({-# LINE 53 "./src-ag/DefaultRules.ag" #-}
_lhsIcr
{-# LINE 1395 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOcr ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_lhsIuniq
{-# LINE 1400 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOuniq ->
(case (({-# LINE 178 "./src-ag/DefaultRules.ag" #-}
_lhsInonterminals
{-# LINE 1405 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOnonterminals ->
(case (({-# LINE 772 "./src-ag/DefaultRules.ag" #-}
_lhsIaugmentsIn
{-# LINE 1410 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOaugmentsIn ->
(case (({-# LINE 779 "./src-ag/DefaultRules.ag" #-}
_lhsIaroundsIn
{-# LINE 1415 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOaroundsIn ->
(case (hd_1 _hdOaroundsIn _hdOaugmentsIn _hdOcr _hdOinhMap _hdOmanualAttrOrderMap _hdOmergesIn _hdOnonterminals _hdOo_rename _hdOoptions _hdOsynMap _hdOtypeSyns _hdOuniq _hdOuseMap _hdOwrappers) of
{ ( !_hdIerrors,!_hdIoutput,!_hdIuniq) ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_hdIuniq
{-# LINE 1422 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOuniq ->
(case (({-# LINE 178 "./src-ag/DefaultRules.ag" #-}
_lhsInonterminals
{-# LINE 1427 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOnonterminals ->
(case (({-# LINE 772 "./src-ag/DefaultRules.ag" #-}
_lhsIaugmentsIn
{-# LINE 1432 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOaugmentsIn ->
(case (({-# LINE 779 "./src-ag/DefaultRules.ag" #-}
_lhsIaroundsIn
{-# LINE 1437 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOaroundsIn ->
(case (tl_1 _tlOaroundsIn _tlOaugmentsIn _tlOcr _tlOinhMap _tlOmanualAttrOrderMap _tlOmergesIn _tlOnonterminals _tlOo_rename _tlOoptions _tlOsynMap _tlOtypeSyns _tlOuniq _tlOuseMap _tlOwrappers) of
{ ( !_tlIerrors,!_tlIoutput,!_tlIuniq) ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
_hdIerrors Seq.>< _tlIerrors
{-# LINE 1444 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
(:) _hdIoutput _tlIoutput
{-# LINE 1449 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 1454 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_tlIuniq
{-# LINE 1459 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOuniq ->
( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))
in sem_Nonterminals_Cons_1)) of
{ ( !sem_Nonterminals_1) ->
( _lhsOcollect_nts,_lhsOinhMap',_lhsOsynMap',sem_Nonterminals_1) }) }) }) }) }) }))
sem_Nonterminals_Nil :: T_Nonterminals
sem_Nonterminals_Nil =
(T_Nonterminals (case (({-# LINE 174 "./src-ag/DefaultRules.ag" #-}
Set.empty
{-# LINE 1470 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcollect_nts ->
(case (({-# LINE 4 "./src-ag/DistChildAttr.ag" #-}
Map.empty
{-# LINE 1475 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOinhMap' ->
(case (({-# LINE 4 "./src-ag/DistChildAttr.ag" #-}
Map.empty
{-# LINE 1480 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOsynMap' ->
(case ((let sem_Nonterminals_Nil_1 :: T_Nonterminals_1
sem_Nonterminals_Nil_1 =
(T_Nonterminals_1 (\ (!_lhsIaroundsIn)
(!_lhsIaugmentsIn)
(!_lhsIcr)
(!_lhsIinhMap)
(!_lhsImanualAttrOrderMap)
(!_lhsImergesIn)
(!_lhsInonterminals)
(!_lhsIo_rename)
(!_lhsIoptions)
(!_lhsIsynMap)
(!_lhsItypeSyns)
(!_lhsIuniq)
(!_lhsIuseMap)
(!_lhsIwrappers) ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
Seq.empty
{-# LINE 1501 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
[]
{-# LINE 1506 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 1511 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_lhsIuniq
{-# LINE 1516 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOuniq ->
( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) })))
in sem_Nonterminals_Nil_1)) of
{ ( !sem_Nonterminals_1) ->
( _lhsOcollect_nts,_lhsOinhMap',_lhsOsynMap',sem_Nonterminals_1) }) }) }) }))
-- Pattern -----------------------------------------------------
{-
visit 0:
inherited attributes:
con : ConstructorIdent
nt : NontermIdent
synthesized attributes:
containsVars : Bool
copy : Pattern
definedAttrs : Set (Identifier,Identifier)
errors : Seq Error
locals : Set Identifier
output : Pattern
alternatives:
alternative Constr:
child name : {ConstructorIdent}
child pats : Patterns
visit 0:
local copy : _
local output : _
alternative Product:
child pos : {Pos}
child pats : Patterns
visit 0:
local copy : _
local output : _
alternative Alias:
child field : {Identifier}
child attr : {Identifier}
child pat : Pattern
visit 0:
local copy : _
local output : _
alternative Irrefutable:
child pat : Pattern
visit 0:
local copy : _
local output : _
alternative Underscore:
child pos : {Pos}
visit 0:
local copy : _
local output : _
-}
-- cata
sem_Pattern :: Pattern ->
T_Pattern
sem_Pattern !(Constr _name _pats) =
(sem_Pattern_Constr _name (sem_Patterns _pats))
sem_Pattern !(Product _pos _pats) =
(sem_Pattern_Product _pos (sem_Patterns _pats))
sem_Pattern !(Alias _field _attr _pat) =
(sem_Pattern_Alias _field _attr (sem_Pattern _pat))
sem_Pattern !(Irrefutable _pat) =
(sem_Pattern_Irrefutable (sem_Pattern _pat))
sem_Pattern !(Underscore _pos) =
(sem_Pattern_Underscore _pos)
-- semantic domain
newtype T_Pattern = T_Pattern (ConstructorIdent ->
NontermIdent ->
( Bool,Pattern,(Set (Identifier,Identifier)),(Seq Error),(Set Identifier),Pattern))
data Inh_Pattern = Inh_Pattern {con_Inh_Pattern :: !(ConstructorIdent),nt_Inh_Pattern :: !(NontermIdent)}
data Syn_Pattern = Syn_Pattern {containsVars_Syn_Pattern :: !(Bool),copy_Syn_Pattern :: !(Pattern),definedAttrs_Syn_Pattern :: !((Set (Identifier,Identifier))),errors_Syn_Pattern :: !((Seq Error)),locals_Syn_Pattern :: !((Set Identifier)),output_Syn_Pattern :: !(Pattern)}
wrap_Pattern :: T_Pattern ->
Inh_Pattern ->
Syn_Pattern
wrap_Pattern !(T_Pattern sem) !(Inh_Pattern _lhsIcon _lhsInt) =
(let ( !_lhsOcontainsVars,!_lhsOcopy,!_lhsOdefinedAttrs,!_lhsOerrors,!_lhsOlocals,!_lhsOoutput) = sem _lhsIcon _lhsInt
in (Syn_Pattern _lhsOcontainsVars _lhsOcopy _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput))
sem_Pattern_Constr :: ConstructorIdent ->
T_Patterns ->
T_Pattern
sem_Pattern_Constr !name_ !(T_Patterns pats_) =
(T_Pattern (\ (!_lhsIcon)
(!_lhsInt) ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 1600 "dist/build/DefaultRules.hs" #-}
)) of
{ !_patsOnt ->
(case (({-# LINE 40 "./src-ag/DefaultRules.ag" #-}
_lhsIcon
{-# LINE 1605 "dist/build/DefaultRules.hs" #-}
)) of
{ !_patsOcon ->
(case (pats_ _patsOcon _patsOnt) of
{ ( !_patsIcontainsVars,!_patsIcopy,!_patsIdefinedAttrs,!_patsIerrors,!_patsIlocals,!_patsIoutput) ->
(case (({-# LINE 551 "./src-ag/DefaultRules.ag" #-}
_patsIcontainsVars
{-# LINE 1612 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcontainsVars ->
(case (({-# LINE 22 "./src-ag/Patterns.ag" #-}
Constr name_ _patsIcopy
{-# LINE 1617 "dist/build/DefaultRules.hs" #-}
)) of
{ !_copy ->
(case (({-# LINE 22 "./src-ag/Patterns.ag" #-}
_copy
{-# LINE 1622 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcopy ->
(case (({-# LINE 531 "./src-ag/DefaultRules.ag" #-}
_patsIdefinedAttrs
{-# LINE 1627 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOdefinedAttrs ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
_patsIerrors
{-# LINE 1632 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 530 "./src-ag/DefaultRules.ag" #-}
_patsIlocals
{-# LINE 1637 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOlocals ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
Constr name_ _patsIoutput
{-# LINE 1642 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 1647 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) })))
sem_Pattern_Product :: Pos ->
T_Patterns ->
T_Pattern
sem_Pattern_Product !pos_ !(T_Patterns pats_) =
(T_Pattern (\ (!_lhsIcon)
(!_lhsInt) ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 1659 "dist/build/DefaultRules.hs" #-}
)) of
{ !_patsOnt ->
(case (({-# LINE 40 "./src-ag/DefaultRules.ag" #-}
_lhsIcon
{-# LINE 1664 "dist/build/DefaultRules.hs" #-}
)) of
{ !_patsOcon ->
(case (pats_ _patsOcon _patsOnt) of
{ ( !_patsIcontainsVars,!_patsIcopy,!_patsIdefinedAttrs,!_patsIerrors,!_patsIlocals,!_patsIoutput) ->
(case (({-# LINE 551 "./src-ag/DefaultRules.ag" #-}
_patsIcontainsVars
{-# LINE 1671 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcontainsVars ->
(case (({-# LINE 22 "./src-ag/Patterns.ag" #-}
Product pos_ _patsIcopy
{-# LINE 1676 "dist/build/DefaultRules.hs" #-}
)) of
{ !_copy ->
(case (({-# LINE 22 "./src-ag/Patterns.ag" #-}
_copy
{-# LINE 1681 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcopy ->
(case (({-# LINE 531 "./src-ag/DefaultRules.ag" #-}
_patsIdefinedAttrs
{-# LINE 1686 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOdefinedAttrs ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
_patsIerrors
{-# LINE 1691 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 530 "./src-ag/DefaultRules.ag" #-}
_patsIlocals
{-# LINE 1696 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOlocals ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
Product pos_ _patsIoutput
{-# LINE 1701 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 1706 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) })))
sem_Pattern_Alias :: Identifier ->
Identifier ->
T_Pattern ->
T_Pattern
sem_Pattern_Alias !field_ !attr_ !(T_Pattern pat_) =
(T_Pattern (\ (!_lhsIcon)
(!_lhsInt) ->
(case (({-# LINE 554 "./src-ag/DefaultRules.ag" #-}
True
{-# LINE 1719 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcontainsVars ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 1724 "dist/build/DefaultRules.hs" #-}
)) of
{ !_patOnt ->
(case (({-# LINE 40 "./src-ag/DefaultRules.ag" #-}
_lhsIcon
{-# LINE 1729 "dist/build/DefaultRules.hs" #-}
)) of
{ !_patOcon ->
(case (pat_ _patOcon _patOnt) of
{ ( !_patIcontainsVars,!_patIcopy,!_patIdefinedAttrs,!_patIerrors,!_patIlocals,!_patIoutput) ->
(case (({-# LINE 22 "./src-ag/Patterns.ag" #-}
Alias field_ attr_ _patIcopy
{-# LINE 1736 "dist/build/DefaultRules.hs" #-}
)) of
{ !_copy ->
(case (({-# LINE 22 "./src-ag/Patterns.ag" #-}
_copy
{-# LINE 1741 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcopy ->
(case (({-# LINE 536 "./src-ag/DefaultRules.ag" #-}
Set.insert (field_,attr_) _patIdefinedAttrs
{-# LINE 1746 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOdefinedAttrs ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
_patIerrors
{-# LINE 1751 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 537 "./src-ag/DefaultRules.ag" #-}
if field_ == _LOC
then Set.insert attr_ _patIlocals
else _patIlocals
{-# LINE 1758 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOlocals ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
Alias field_ attr_ _patIoutput
{-# LINE 1763 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 1768 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) })))
sem_Pattern_Irrefutable :: T_Pattern ->
T_Pattern
sem_Pattern_Irrefutable !(T_Pattern pat_) =
(T_Pattern (\ (!_lhsIcon)
(!_lhsInt) ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 1779 "dist/build/DefaultRules.hs" #-}
)) of
{ !_patOnt ->
(case (({-# LINE 40 "./src-ag/DefaultRules.ag" #-}
_lhsIcon
{-# LINE 1784 "dist/build/DefaultRules.hs" #-}
)) of
{ !_patOcon ->
(case (pat_ _patOcon _patOnt) of
{ ( !_patIcontainsVars,!_patIcopy,!_patIdefinedAttrs,!_patIerrors,!_patIlocals,!_patIoutput) ->
(case (({-# LINE 551 "./src-ag/DefaultRules.ag" #-}
_patIcontainsVars
{-# LINE 1791 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcontainsVars ->
(case (({-# LINE 22 "./src-ag/Patterns.ag" #-}
Irrefutable _patIcopy
{-# LINE 1796 "dist/build/DefaultRules.hs" #-}
)) of
{ !_copy ->
(case (({-# LINE 22 "./src-ag/Patterns.ag" #-}
_copy
{-# LINE 1801 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcopy ->
(case (({-# LINE 531 "./src-ag/DefaultRules.ag" #-}
_patIdefinedAttrs
{-# LINE 1806 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOdefinedAttrs ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
_patIerrors
{-# LINE 1811 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 530 "./src-ag/DefaultRules.ag" #-}
_patIlocals
{-# LINE 1816 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOlocals ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
Irrefutable _patIoutput
{-# LINE 1821 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 1826 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) })))
sem_Pattern_Underscore :: Pos ->
T_Pattern
sem_Pattern_Underscore !pos_ =
(T_Pattern (\ (!_lhsIcon)
(!_lhsInt) ->
(case (({-# LINE 551 "./src-ag/DefaultRules.ag" #-}
False
{-# LINE 1837 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcontainsVars ->
(case (({-# LINE 22 "./src-ag/Patterns.ag" #-}
Underscore pos_
{-# LINE 1842 "dist/build/DefaultRules.hs" #-}
)) of
{ !_copy ->
(case (({-# LINE 22 "./src-ag/Patterns.ag" #-}
_copy
{-# LINE 1847 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcopy ->
(case (({-# LINE 531 "./src-ag/DefaultRules.ag" #-}
Set.empty
{-# LINE 1852 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOdefinedAttrs ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
Seq.empty
{-# LINE 1857 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 530 "./src-ag/DefaultRules.ag" #-}
Set.empty
{-# LINE 1862 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOlocals ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
Underscore pos_
{-# LINE 1867 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 1872 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) })))
-- Patterns ----------------------------------------------------
{-
visit 0:
inherited attributes:
con : ConstructorIdent
nt : NontermIdent
synthesized attributes:
containsVars : Bool
copy : Patterns
definedAttrs : Set (Identifier,Identifier)
errors : Seq Error
locals : Set Identifier
output : Patterns
alternatives:
alternative Cons:
child hd : Pattern
child tl : Patterns
visit 0:
local copy : _
local output : _
alternative Nil:
visit 0:
local copy : _
local output : _
-}
-- cata
sem_Patterns :: Patterns ->
T_Patterns
sem_Patterns !list =
(Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list))
-- semantic domain
newtype T_Patterns = T_Patterns (ConstructorIdent ->
NontermIdent ->
( Bool,Patterns,(Set (Identifier,Identifier)),(Seq Error),(Set Identifier),Patterns))
data Inh_Patterns = Inh_Patterns {con_Inh_Patterns :: !(ConstructorIdent),nt_Inh_Patterns :: !(NontermIdent)}
data Syn_Patterns = Syn_Patterns {containsVars_Syn_Patterns :: !(Bool),copy_Syn_Patterns :: !(Patterns),definedAttrs_Syn_Patterns :: !((Set (Identifier,Identifier))),errors_Syn_Patterns :: !((Seq Error)),locals_Syn_Patterns :: !((Set Identifier)),output_Syn_Patterns :: !(Patterns)}
wrap_Patterns :: T_Patterns ->
Inh_Patterns ->
Syn_Patterns
wrap_Patterns !(T_Patterns sem) !(Inh_Patterns _lhsIcon _lhsInt) =
(let ( !_lhsOcontainsVars,!_lhsOcopy,!_lhsOdefinedAttrs,!_lhsOerrors,!_lhsOlocals,!_lhsOoutput) = sem _lhsIcon _lhsInt
in (Syn_Patterns _lhsOcontainsVars _lhsOcopy _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput))
sem_Patterns_Cons :: T_Pattern ->
T_Patterns ->
T_Patterns
sem_Patterns_Cons !(T_Pattern hd_) !(T_Patterns tl_) =
(T_Patterns (\ (!_lhsIcon)
(!_lhsInt) ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 1926 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOnt ->
(case (({-# LINE 40 "./src-ag/DefaultRules.ag" #-}
_lhsIcon
{-# LINE 1931 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOcon ->
(case (tl_ _tlOcon _tlOnt) of
{ ( !_tlIcontainsVars,!_tlIcopy,!_tlIdefinedAttrs,!_tlIerrors,!_tlIlocals,!_tlIoutput) ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 1938 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOnt ->
(case (({-# LINE 40 "./src-ag/DefaultRules.ag" #-}
_lhsIcon
{-# LINE 1943 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOcon ->
(case (hd_ _hdOcon _hdOnt) of
{ ( !_hdIcontainsVars,!_hdIcopy,!_hdIdefinedAttrs,!_hdIerrors,!_hdIlocals,!_hdIoutput) ->
(case (({-# LINE 551 "./src-ag/DefaultRules.ag" #-}
_hdIcontainsVars || _tlIcontainsVars
{-# LINE 1950 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcontainsVars ->
(case (({-# LINE 22 "./src-ag/Patterns.ag" #-}
(:) _hdIcopy _tlIcopy
{-# LINE 1955 "dist/build/DefaultRules.hs" #-}
)) of
{ !_copy ->
(case (({-# LINE 22 "./src-ag/Patterns.ag" #-}
_copy
{-# LINE 1960 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcopy ->
(case (({-# LINE 531 "./src-ag/DefaultRules.ag" #-}
_hdIdefinedAttrs `Set.union` _tlIdefinedAttrs
{-# LINE 1965 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOdefinedAttrs ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
_hdIerrors Seq.>< _tlIerrors
{-# LINE 1970 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 530 "./src-ag/DefaultRules.ag" #-}
_hdIlocals `Set.union` _tlIlocals
{-# LINE 1975 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOlocals ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
(:) _hdIoutput _tlIoutput
{-# LINE 1980 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 1985 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) }) }) }) }) }) }) })))
sem_Patterns_Nil :: T_Patterns
sem_Patterns_Nil =
(T_Patterns (\ (!_lhsIcon)
(!_lhsInt) ->
(case (({-# LINE 551 "./src-ag/DefaultRules.ag" #-}
False
{-# LINE 1995 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcontainsVars ->
(case (({-# LINE 22 "./src-ag/Patterns.ag" #-}
[]
{-# LINE 2000 "dist/build/DefaultRules.hs" #-}
)) of
{ !_copy ->
(case (({-# LINE 22 "./src-ag/Patterns.ag" #-}
_copy
{-# LINE 2005 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcopy ->
(case (({-# LINE 531 "./src-ag/DefaultRules.ag" #-}
Set.empty
{-# LINE 2010 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOdefinedAttrs ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
Seq.empty
{-# LINE 2015 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 530 "./src-ag/DefaultRules.ag" #-}
Set.empty
{-# LINE 2020 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOlocals ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
[]
{-# LINE 2025 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 2030 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
( _lhsOcontainsVars,_lhsOcopy,_lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput) }) }) }) }) }) }) }) })))
-- Production --------------------------------------------------
{-
visit 0:
inherited attributes:
aroundsIn : Map ConstructorIdent (Map Identifier [Expression])
augmentsIn : Map ConstructorIdent (Map Identifier [Expression])
cr : Bool
inh : Attributes
inhMap : Map Identifier Attributes
inhOrig : Attributes
manualAttrOrderMap : AttrOrderMap
mergesIn : Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))
nonterminals : Set NontermIdent
nt : NontermIdent
o_rename : Bool
options : Options
params : [Identifier]
syn : Attributes
synMap : Map Identifier Attributes
synOrig : Attributes
typeSyns : TypeSyns
useMap : Map Identifier (String,String,String)
wrappers : Set NontermIdent
chained attribute:
uniq : Int
synthesized attributes:
errors : Seq Error
output : Production
alternatives:
alternative Production:
child con : {ConstructorIdent}
child params : {[Identifier]}
child constraints : {[Type]}
child children : Children
child rules : Rules
child typeSigs : TypeSigs
child macro : {MaybeMacro}
visit 0:
local mergesIn : _
local merged : _
local orderDeps : _
local orderErrs : _
local _tup2 : _
local errs : _
local aroundsIn : _
local augmentsIn : _
local newRls : _
local extra1 : _
local extra2 : _
local extra3 : _
-}
-- cata
sem_Production :: Production ->
T_Production
sem_Production !(Production _con _params _constraints _children _rules _typeSigs _macro) =
(sem_Production_Production _con _params _constraints (sem_Children _children) (sem_Rules _rules) (sem_TypeSigs _typeSigs) _macro)
-- semantic domain
newtype T_Production = T_Production ((Map ConstructorIdent (Map Identifier [Expression])) ->
(Map ConstructorIdent (Map Identifier [Expression])) ->
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) ->
( (Seq Error),Production,Int))
data Inh_Production = Inh_Production {aroundsIn_Inh_Production :: !((Map ConstructorIdent (Map Identifier [Expression]))),augmentsIn_Inh_Production :: !((Map ConstructorIdent (Map Identifier [Expression]))),cr_Inh_Production :: !(Bool),inh_Inh_Production :: !(Attributes),inhMap_Inh_Production :: !((Map Identifier Attributes)),inhOrig_Inh_Production :: !(Attributes),manualAttrOrderMap_Inh_Production :: !(AttrOrderMap),mergesIn_Inh_Production :: !((Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))),nonterminals_Inh_Production :: !((Set NontermIdent)),nt_Inh_Production :: !(NontermIdent),o_rename_Inh_Production :: !(Bool),options_Inh_Production :: !(Options),params_Inh_Production :: !(([Identifier])),syn_Inh_Production :: !(Attributes),synMap_Inh_Production :: !((Map Identifier Attributes)),synOrig_Inh_Production :: !(Attributes),typeSyns_Inh_Production :: !(TypeSyns),uniq_Inh_Production :: !(Int),useMap_Inh_Production :: !((Map Identifier (String,String,String))),wrappers_Inh_Production :: !((Set NontermIdent))}
data Syn_Production = Syn_Production {errors_Syn_Production :: !((Seq Error)),output_Syn_Production :: !(Production),uniq_Syn_Production :: !(Int)}
wrap_Production :: T_Production ->
Inh_Production ->
Syn_Production
wrap_Production !(T_Production sem) !(Inh_Production _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinh _lhsIinhMap _lhsIinhOrig _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsInt _lhsIo_rename _lhsIoptions _lhsIparams _lhsIsyn _lhsIsynMap _lhsIsynOrig _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers) =
(let ( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) = sem _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinh _lhsIinhMap _lhsIinhOrig _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsInt _lhsIo_rename _lhsIoptions _lhsIparams _lhsIsyn _lhsIsynMap _lhsIsynOrig _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers
in (Syn_Production _lhsOerrors _lhsOoutput _lhsOuniq))
sem_Production_Production :: ConstructorIdent ->
([Identifier]) ->
([Type]) ->
T_Children ->
T_Rules ->
T_TypeSigs ->
MaybeMacro ->
T_Production
sem_Production_Production !con_ !params_ !constraints_ !(T_Children children_) !(T_Rules rules_) !(T_TypeSigs typeSigs_) !macro_ =
(T_Production (\ (!_lhsIaroundsIn)
(!_lhsIaugmentsIn)
(!_lhsIcr)
(!_lhsIinh)
(!_lhsIinhMap)
(!_lhsIinhOrig)
(!_lhsImanualAttrOrderMap)
(!_lhsImergesIn)
(!_lhsInonterminals)
(!_lhsInt)
(!_lhsIo_rename)
(!_lhsIoptions)
(!_lhsIparams)
(!_lhsIsyn)
(!_lhsIsynMap)
(!_lhsIsynOrig)
(!_lhsItypeSyns)
(!_lhsIuniq)
(!_lhsIuseMap)
(!_lhsIwrappers) ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIsynMap
{-# LINE 2151 "dist/build/DefaultRules.hs" #-}
)) of
{ !_childrenOsynMap ->
(case (({-# LINE 792 "./src-ag/DefaultRules.ag" #-}
Map.findWithDefault Map.empty con_ _lhsImergesIn
{-# LINE 2156 "dist/build/DefaultRules.hs" #-}
)) of
{ !_mergesIn ->
(case (({-# LINE 793 "./src-ag/DefaultRules.ag" #-}
Set.fromList [ c | (_,cs,_) <- Map.elems _mergesIn , c <- cs ]
{-# LINE 2161 "dist/build/DefaultRules.hs" #-}
)) of
{ !_merged ->
(case (({-# LINE 788 "./src-ag/DefaultRules.ag" #-}
_merged
{-# LINE 2166 "dist/build/DefaultRules.hs" #-}
)) of
{ !_childrenOmerged ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIinhMap
{-# LINE 2171 "dist/build/DefaultRules.hs" #-}
)) of
{ !_childrenOinhMap ->
(case (({-# LINE 719 "./src-ag/DefaultRules.ag" #-}
Set.toList $ Map.findWithDefault Set.empty con_ $ Map.findWithDefault Map.empty _lhsInt _lhsImanualAttrOrderMap
{-# LINE 2176 "dist/build/DefaultRules.hs" #-}
)) of
{ !_orderDeps ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_lhsIuniq
{-# LINE 2181 "dist/build/DefaultRules.hs" #-}
)) of
{ !_rulesOuniq ->
(case (({-# LINE 51 "./src-ag/DefaultRules.ag" #-}
_lhsIoptions
{-# LINE 2186 "dist/build/DefaultRules.hs" #-}
)) of
{ !_rulesOoptions ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 2191 "dist/build/DefaultRules.hs" #-}
)) of
{ !_rulesOnt ->
(case (({-# LINE 197 "./src-ag/DefaultRules.ag" #-}
con_
{-# LINE 2196 "dist/build/DefaultRules.hs" #-}
)) of
{ !_rulesOcon ->
(case (rules_ _rulesOcon _rulesOnt _rulesOoptions _rulesOuniq) of
{ ( !_rulesIdefinedAttrs,!_rulesIerrors,!_rulesIlocals,!_rulesIoutput,!_rulesIruleNames,!_rulesIuniq) ->
(case (({-# LINE 42 "./src-ag/DefaultRules.ag" #-}
_lhsIparams
{-# LINE 2203 "dist/build/DefaultRules.hs" #-}
)) of
{ !_childrenOparams ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 2208 "dist/build/DefaultRules.hs" #-}
)) of
{ !_childrenOnt ->
(case (({-# LINE 56 "./src-ag/DefaultRules.ag" #-}
_lhsIcr
{-# LINE 2213 "dist/build/DefaultRules.hs" #-}
)) of
{ !_childrenOcr ->
(case (({-# LINE 198 "./src-ag/DefaultRules.ag" #-}
con_
{-# LINE 2218 "dist/build/DefaultRules.hs" #-}
)) of
{ !_childrenOcon ->
(case (children_ _childrenOcon _childrenOcr _childrenOinhMap _childrenOmerged _childrenOnt _childrenOparams _childrenOsynMap) of
{ ( !_childrenIerrors,!_childrenIfields,!_childrenIinputs,!_childrenIoutput,!_childrenIoutputs) ->
(case (({-# LINE 721 "./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 2259 "dist/build/DefaultRules.hs" #-}
)) of
{ !_orderErrs ->
(case (({-# LINE 386 "./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 locals _childrenIoutputs) useAttrs
selfLocRules
= [ selfRule False attr $
lexTokens noPos $
constructor [childSelf attr nm tp | (nm,tp,virt) <- _childrenIfields, childExists virt]
| attr <- Map.keys selfAttrs
, not (Set.member attr locals)
]
where
childSelf self nm tp
= case tp of NT nt _ _ -> attrName nm self
_ | nm `Set.member` locals -> locName nm
| otherwise -> fieldName nm
constructor fs
= buildConExpr (ocaml _lhsIoptions) _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 2319 "dist/build/DefaultRules.hs" #-}
)) of
{ !__tup2 ->
(case (({-# LINE 386 "./src-ag/DefaultRules.ag" #-}
__tup2
{-# LINE 2324 "dist/build/DefaultRules.hs" #-}
)) of
{ !(_,!_errs) ->
(case (({-# LINE 384 "./src-ag/DefaultRules.ag" #-}
_childrenIerrors >< _errs >< _rulesIerrors >< _orderErrs
{-# LINE 2329 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 42 "./src-ag/DefaultRules.ag" #-}
_lhsIparams
{-# LINE 2334 "dist/build/DefaultRules.hs" #-}
)) of
{ !_typeSigsOparams ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 2339 "dist/build/DefaultRules.hs" #-}
)) of
{ !_typeSigsOnt ->
(case (({-# LINE 784 "./src-ag/DefaultRules.ag" #-}
Map.findWithDefault Map.empty con_ _lhsIaroundsIn
{-# LINE 2344 "dist/build/DefaultRules.hs" #-}
)) of
{ !_aroundsIn ->
(case (({-# LINE 777 "./src-ag/DefaultRules.ag" #-}
Map.findWithDefault Map.empty con_ _lhsIaugmentsIn
{-# LINE 2349 "dist/build/DefaultRules.hs" #-}
)) of
{ !_augmentsIn ->
(case (({-# LINE 386 "./src-ag/DefaultRules.ag" #-}
__tup2
{-# LINE 2354 "dist/build/DefaultRules.hs" #-}
)) of
{ !(!_newRls,_) ->
(case (({-# LINE 608 "./src-ag/DefaultRules.ag" #-}
foldr addAugments (_rulesIoutput ++ _newRls) (Map.assocs _augmentsIn )
{-# LINE 2359 "dist/build/DefaultRules.hs" #-}
)) of
{ !_extra1 ->
(case (({-# LINE 609 "./src-ag/DefaultRules.ag" #-}
foldr addArounds _extra1 (Map.assocs _aroundsIn )
{-# LINE 2364 "dist/build/DefaultRules.hs" #-}
)) of
{ !_extra2 ->
(case (({-# LINE 610 "./src-ag/DefaultRules.ag" #-}
foldr addMerges _extra2 (Map.assocs _mergesIn )
{-# LINE 2369 "dist/build/DefaultRules.hs" #-}
)) of
{ !_extra3 ->
(case (typeSigs_ _typeSigsOnt _typeSigsOparams) of
{ ( !_typeSigsIoutput) ->
(case (({-# LINE 611 "./src-ag/DefaultRules.ag" #-}
Production con_ params_ constraints_ _childrenIoutput _extra3 _typeSigsIoutput macro_
{-# LINE 2376 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_rulesIuniq
{-# LINE 2381 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOuniq ->
( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))
-- Productions -------------------------------------------------
{-
visit 0:
inherited attributes:
aroundsIn : Map ConstructorIdent (Map Identifier [Expression])
augmentsIn : Map ConstructorIdent (Map Identifier [Expression])
cr : Bool
inh : Attributes
inhMap : Map Identifier Attributes
inhOrig : Attributes
manualAttrOrderMap : AttrOrderMap
mergesIn : Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression))
nonterminals : Set NontermIdent
nt : NontermIdent
o_rename : Bool
options : Options
params : [Identifier]
syn : Attributes
synMap : Map Identifier Attributes
synOrig : Attributes
typeSyns : TypeSyns
useMap : Map Identifier (String,String,String)
wrappers : Set NontermIdent
chained attribute:
uniq : Int
synthesized attributes:
errors : Seq Error
output : Productions
alternatives:
alternative Cons:
child hd : Production
child tl : Productions
visit 0:
local output : _
alternative Nil:
visit 0:
local output : _
-}
-- cata
sem_Productions :: Productions ->
T_Productions
sem_Productions !list =
(Prelude.foldr sem_Productions_Cons sem_Productions_Nil (Prelude.map sem_Production list))
-- semantic domain
newtype T_Productions = T_Productions ((Map ConstructorIdent (Map Identifier [Expression])) ->
(Map ConstructorIdent (Map Identifier [Expression])) ->
Bool ->
Attributes ->
(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) ->
( (Seq Error),Productions,Int))
data Inh_Productions = Inh_Productions {aroundsIn_Inh_Productions :: !((Map ConstructorIdent (Map Identifier [Expression]))),augmentsIn_Inh_Productions :: !((Map ConstructorIdent (Map Identifier [Expression]))),cr_Inh_Productions :: !(Bool),inh_Inh_Productions :: !(Attributes),inhMap_Inh_Productions :: !((Map Identifier Attributes)),inhOrig_Inh_Productions :: !(Attributes),manualAttrOrderMap_Inh_Productions :: !(AttrOrderMap),mergesIn_Inh_Productions :: !((Map ConstructorIdent (Map Identifier (Identifier,[Identifier],Expression)))),nonterminals_Inh_Productions :: !((Set NontermIdent)),nt_Inh_Productions :: !(NontermIdent),o_rename_Inh_Productions :: !(Bool),options_Inh_Productions :: !(Options),params_Inh_Productions :: !(([Identifier])),syn_Inh_Productions :: !(Attributes),synMap_Inh_Productions :: !((Map Identifier Attributes)),synOrig_Inh_Productions :: !(Attributes),typeSyns_Inh_Productions :: !(TypeSyns),uniq_Inh_Productions :: !(Int),useMap_Inh_Productions :: !((Map Identifier (String,String,String))),wrappers_Inh_Productions :: !((Set NontermIdent))}
data Syn_Productions = Syn_Productions {errors_Syn_Productions :: !((Seq Error)),output_Syn_Productions :: !(Productions),uniq_Syn_Productions :: !(Int)}
wrap_Productions :: T_Productions ->
Inh_Productions ->
Syn_Productions
wrap_Productions !(T_Productions sem) !(Inh_Productions _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinh _lhsIinhMap _lhsIinhOrig _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsInt _lhsIo_rename _lhsIoptions _lhsIparams _lhsIsyn _lhsIsynMap _lhsIsynOrig _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers) =
(let ( !_lhsOerrors,!_lhsOoutput,!_lhsOuniq) = sem _lhsIaroundsIn _lhsIaugmentsIn _lhsIcr _lhsIinh _lhsIinhMap _lhsIinhOrig _lhsImanualAttrOrderMap _lhsImergesIn _lhsInonterminals _lhsInt _lhsIo_rename _lhsIoptions _lhsIparams _lhsIsyn _lhsIsynMap _lhsIsynOrig _lhsItypeSyns _lhsIuniq _lhsIuseMap _lhsIwrappers
in (Syn_Productions _lhsOerrors _lhsOoutput _lhsOuniq))
sem_Productions_Cons :: T_Production ->
T_Productions ->
T_Productions
sem_Productions_Cons !(T_Production hd_) !(T_Productions tl_) =
(T_Productions (\ (!_lhsIaroundsIn)
(!_lhsIaugmentsIn)
(!_lhsIcr)
(!_lhsIinh)
(!_lhsIinhMap)
(!_lhsIinhOrig)
(!_lhsImanualAttrOrderMap)
(!_lhsImergesIn)
(!_lhsInonterminals)
(!_lhsInt)
(!_lhsIo_rename)
(!_lhsIoptions)
(!_lhsIparams)
(!_lhsIsyn)
(!_lhsIsynMap)
(!_lhsIsynOrig)
(!_lhsItypeSyns)
(!_lhsIuniq)
(!_lhsIuseMap)
(!_lhsIwrappers) ->
(case (({-# LINE 65 "./src-ag/DefaultRules.ag" #-}
_lhsIwrappers
{-# LINE 2484 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOwrappers ->
(case (({-# LINE 187 "./src-ag/DefaultRules.ag" #-}
_lhsIuseMap
{-# LINE 2489 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOuseMap ->
(case (({-# LINE 72 "./src-ag/DefaultRules.ag" #-}
_lhsItypeSyns
{-# LINE 2494 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOtypeSyns ->
(case (({-# LINE 187 "./src-ag/DefaultRules.ag" #-}
_lhsIsynOrig
{-# LINE 2499 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOsynOrig ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIsynMap
{-# LINE 2504 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOsynMap ->
(case (({-# LINE 187 "./src-ag/DefaultRules.ag" #-}
_lhsIsyn
{-# LINE 2509 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOsyn ->
(case (({-# LINE 51 "./src-ag/DefaultRules.ag" #-}
_lhsIoptions
{-# LINE 2514 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOoptions ->
(case (({-# LINE 52 "./src-ag/DefaultRules.ag" #-}
_lhsIo_rename
{-# LINE 2519 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOo_rename ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 2524 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOnt ->
(case (({-# LINE 787 "./src-ag/DefaultRules.ag" #-}
_lhsImergesIn
{-# LINE 2529 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOmergesIn ->
(case (({-# LINE 705 "./src-ag/DefaultRules.ag" #-}
_lhsImanualAttrOrderMap
{-# LINE 2534 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOmanualAttrOrderMap ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIinhMap
{-# LINE 2539 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOinhMap ->
(case (({-# LINE 187 "./src-ag/DefaultRules.ag" #-}
_lhsIinh
{-# LINE 2544 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOinh ->
(case (({-# LINE 53 "./src-ag/DefaultRules.ag" #-}
_lhsIcr
{-# LINE 2549 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOcr ->
(case (({-# LINE 65 "./src-ag/DefaultRules.ag" #-}
_lhsIwrappers
{-# LINE 2554 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOwrappers ->
(case (({-# LINE 187 "./src-ag/DefaultRules.ag" #-}
_lhsIuseMap
{-# LINE 2559 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOuseMap ->
(case (({-# LINE 72 "./src-ag/DefaultRules.ag" #-}
_lhsItypeSyns
{-# LINE 2564 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOtypeSyns ->
(case (({-# LINE 187 "./src-ag/DefaultRules.ag" #-}
_lhsIsynOrig
{-# LINE 2569 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOsynOrig ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIsynMap
{-# LINE 2574 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOsynMap ->
(case (({-# LINE 187 "./src-ag/DefaultRules.ag" #-}
_lhsIsyn
{-# LINE 2579 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOsyn ->
(case (({-# LINE 51 "./src-ag/DefaultRules.ag" #-}
_lhsIoptions
{-# LINE 2584 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOoptions ->
(case (({-# LINE 52 "./src-ag/DefaultRules.ag" #-}
_lhsIo_rename
{-# LINE 2589 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOo_rename ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 2594 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOnt ->
(case (({-# LINE 787 "./src-ag/DefaultRules.ag" #-}
_lhsImergesIn
{-# LINE 2599 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOmergesIn ->
(case (({-# LINE 705 "./src-ag/DefaultRules.ag" #-}
_lhsImanualAttrOrderMap
{-# LINE 2604 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOmanualAttrOrderMap ->
(case (({-# LINE 12 "./src-ag/DistChildAttr.ag" #-}
_lhsIinhMap
{-# LINE 2609 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOinhMap ->
(case (({-# LINE 187 "./src-ag/DefaultRules.ag" #-}
_lhsIinh
{-# LINE 2614 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOinh ->
(case (({-# LINE 53 "./src-ag/DefaultRules.ag" #-}
_lhsIcr
{-# LINE 2619 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOcr ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_lhsIuniq
{-# LINE 2624 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOuniq ->
(case (({-# LINE 42 "./src-ag/DefaultRules.ag" #-}
_lhsIparams
{-# LINE 2629 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOparams ->
(case (({-# LINE 178 "./src-ag/DefaultRules.ag" #-}
_lhsInonterminals
{-# LINE 2634 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOnonterminals ->
(case (({-# LINE 187 "./src-ag/DefaultRules.ag" #-}
_lhsIinhOrig
{-# LINE 2639 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOinhOrig ->
(case (({-# LINE 773 "./src-ag/DefaultRules.ag" #-}
_lhsIaugmentsIn
{-# LINE 2644 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOaugmentsIn ->
(case (({-# LINE 780 "./src-ag/DefaultRules.ag" #-}
_lhsIaroundsIn
{-# LINE 2649 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOaroundsIn ->
(case (hd_ _hdOaroundsIn _hdOaugmentsIn _hdOcr _hdOinh _hdOinhMap _hdOinhOrig _hdOmanualAttrOrderMap _hdOmergesIn _hdOnonterminals _hdOnt _hdOo_rename _hdOoptions _hdOparams _hdOsyn _hdOsynMap _hdOsynOrig _hdOtypeSyns _hdOuniq _hdOuseMap _hdOwrappers) of
{ ( !_hdIerrors,!_hdIoutput,!_hdIuniq) ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_hdIuniq
{-# LINE 2656 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOuniq ->
(case (({-# LINE 42 "./src-ag/DefaultRules.ag" #-}
_lhsIparams
{-# LINE 2661 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOparams ->
(case (({-# LINE 178 "./src-ag/DefaultRules.ag" #-}
_lhsInonterminals
{-# LINE 2666 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOnonterminals ->
(case (({-# LINE 187 "./src-ag/DefaultRules.ag" #-}
_lhsIinhOrig
{-# LINE 2671 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOinhOrig ->
(case (({-# LINE 773 "./src-ag/DefaultRules.ag" #-}
_lhsIaugmentsIn
{-# LINE 2676 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOaugmentsIn ->
(case (({-# LINE 780 "./src-ag/DefaultRules.ag" #-}
_lhsIaroundsIn
{-# LINE 2681 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOaroundsIn ->
(case (tl_ _tlOaroundsIn _tlOaugmentsIn _tlOcr _tlOinh _tlOinhMap _tlOinhOrig _tlOmanualAttrOrderMap _tlOmergesIn _tlOnonterminals _tlOnt _tlOo_rename _tlOoptions _tlOparams _tlOsyn _tlOsynMap _tlOsynOrig _tlOtypeSyns _tlOuniq _tlOuseMap _tlOwrappers) of
{ ( !_tlIerrors,!_tlIoutput,!_tlIuniq) ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
_hdIerrors Seq.>< _tlIerrors
{-# LINE 2688 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
(:) _hdIoutput _tlIoutput
{-# LINE 2693 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 2698 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_tlIuniq
{-# LINE 2703 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOuniq ->
( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))
sem_Productions_Nil :: T_Productions
sem_Productions_Nil =
(T_Productions (\ (!_lhsIaroundsIn)
(!_lhsIaugmentsIn)
(!_lhsIcr)
(!_lhsIinh)
(!_lhsIinhMap)
(!_lhsIinhOrig)
(!_lhsImanualAttrOrderMap)
(!_lhsImergesIn)
(!_lhsInonterminals)
(!_lhsInt)
(!_lhsIo_rename)
(!_lhsIoptions)
(!_lhsIparams)
(!_lhsIsyn)
(!_lhsIsynMap)
(!_lhsIsynOrig)
(!_lhsItypeSyns)
(!_lhsIuniq)
(!_lhsIuseMap)
(!_lhsIwrappers) ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
Seq.empty
{-# LINE 2731 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
[]
{-# LINE 2736 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 2741 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_lhsIuniq
{-# LINE 2746 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOuniq ->
( _lhsOerrors,_lhsOoutput,_lhsOuniq) }) }) }) })))
-- Rule --------------------------------------------------------
{-
visit 0:
inherited attributes:
con : ConstructorIdent
nt : NontermIdent
options : Options
chained attribute:
uniq : Int
synthesized attributes:
containsVars : Bool
definedAttrs : Set (Identifier,Identifier)
errors : Seq Error
isPure : Bool
locals : Set Identifier
output : Rule
outputs : Rules
ruleNames : Set Identifier
alternatives:
alternative Rule:
child mbName : {Maybe Identifier}
child pattern : Pattern
child rhs : {Expression}
child owrt : {Bool}
child origin : {String}
child explicit : {Bool}
child pure : {Bool}
child identity : {Bool}
child mbError : {Maybe Error}
child eager : {Bool}
visit 0:
local output : _
local _tup3 : _
local output1 : _
local _tup4 : _
local outputs : _
local mbAlias : _
-}
-- cata
sem_Rule :: Rule ->
T_Rule
sem_Rule !(Rule _mbName _pattern _rhs _owrt _origin _explicit _pure _identity _mbError _eager) =
(sem_Rule_Rule _mbName (sem_Pattern _pattern) _rhs _owrt _origin _explicit _pure _identity _mbError _eager)
-- semantic domain
newtype T_Rule = T_Rule (ConstructorIdent ->
NontermIdent ->
Options ->
Int ->
( Bool,(Set (Identifier,Identifier)),(Seq Error),Bool,(Set Identifier),Rule,Rules,(Set Identifier),Int))
data Inh_Rule = Inh_Rule {con_Inh_Rule :: !(ConstructorIdent),nt_Inh_Rule :: !(NontermIdent),options_Inh_Rule :: !(Options),uniq_Inh_Rule :: !(Int)}
data Syn_Rule = Syn_Rule {containsVars_Syn_Rule :: !(Bool),definedAttrs_Syn_Rule :: !((Set (Identifier,Identifier))),errors_Syn_Rule :: !((Seq Error)),isPure_Syn_Rule :: !(Bool),locals_Syn_Rule :: !((Set Identifier)),output_Syn_Rule :: !(Rule),outputs_Syn_Rule :: !(Rules),ruleNames_Syn_Rule :: !((Set Identifier)),uniq_Syn_Rule :: !(Int)}
wrap_Rule :: T_Rule ->
Inh_Rule ->
Syn_Rule
wrap_Rule !(T_Rule sem) !(Inh_Rule _lhsIcon _lhsInt _lhsIoptions _lhsIuniq) =
(let ( !_lhsOcontainsVars,!_lhsOdefinedAttrs,!_lhsOerrors,!_lhsOisPure,!_lhsOlocals,!_lhsOoutput,!_lhsOoutputs,!_lhsOruleNames,!_lhsOuniq) = sem _lhsIcon _lhsInt _lhsIoptions _lhsIuniq
in (Syn_Rule _lhsOcontainsVars _lhsOdefinedAttrs _lhsOerrors _lhsOisPure _lhsOlocals _lhsOoutput _lhsOoutputs _lhsOruleNames _lhsOuniq))
sem_Rule_Rule :: (Maybe Identifier) ->
T_Pattern ->
Expression ->
Bool ->
String ->
Bool ->
Bool ->
Bool ->
(Maybe Error) ->
Bool ->
T_Rule
sem_Rule_Rule !mbName_ !(T_Pattern pattern_) !rhs_ !owrt_ !origin_ !explicit_ !pure_ !identity_ !mbError_ !eager_ =
(T_Rule (\ (!_lhsIcon)
(!_lhsInt)
(!_lhsIoptions)
(!_lhsIuniq) ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 2825 "dist/build/DefaultRules.hs" #-}
)) of
{ !_patternOnt ->
(case (({-# LINE 40 "./src-ag/DefaultRules.ag" #-}
_lhsIcon
{-# LINE 2830 "dist/build/DefaultRules.hs" #-}
)) of
{ !_patternOcon ->
(case (pattern_ _patternOcon _patternOnt) of
{ ( !_patternIcontainsVars,!_patternIcopy,!_patternIdefinedAttrs,!_patternIerrors,!_patternIlocals,!_patternIoutput) ->
(case (({-# LINE 551 "./src-ag/DefaultRules.ag" #-}
_patternIcontainsVars
{-# LINE 2837 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOcontainsVars ->
(case (({-# LINE 531 "./src-ag/DefaultRules.ag" #-}
_patternIdefinedAttrs
{-# LINE 2842 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOdefinedAttrs ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
_patternIerrors
{-# LINE 2847 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 557 "./src-ag/DefaultRules.ag" #-}
pure_
{-# LINE 2852 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOisPure ->
(case (({-# LINE 530 "./src-ag/DefaultRules.ag" #-}
_patternIlocals
{-# LINE 2857 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOlocals ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
Rule mbName_ _patternIoutput rhs_ owrt_ origin_ explicit_ pure_ identity_ mbError_ eager_
{-# LINE 2862 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 2867 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
(case (({-# LINE 624 "./src-ag/DefaultRules.ag" #-}
mkRuleAlias _output
{-# LINE 2872 "dist/build/DefaultRules.hs" #-}
)) of
{ !__tup3 ->
(case (({-# LINE 624 "./src-ag/DefaultRules.ag" #-}
__tup3
{-# LINE 2877 "dist/build/DefaultRules.hs" #-}
)) of
{ !(!_output1,_) ->
(case (({-# LINE 625 "./src-ag/DefaultRules.ag" #-}
if needsMultiRules _lhsIoptions
then multiRule _output1 _lhsIuniq
else ([_output1 ], _lhsIuniq)
{-# LINE 2884 "dist/build/DefaultRules.hs" #-}
)) of
{ !__tup4 ->
(case (({-# LINE 625 "./src-ag/DefaultRules.ag" #-}
__tup4
{-# LINE 2889 "dist/build/DefaultRules.hs" #-}
)) of
{ !(!_outputs,_) ->
(case (({-# LINE 624 "./src-ag/DefaultRules.ag" #-}
__tup3
{-# LINE 2894 "dist/build/DefaultRules.hs" #-}
)) of
{ !(_,!_mbAlias) ->
(case (({-# LINE 628 "./src-ag/DefaultRules.ag" #-}
maybe [] return _mbAlias ++ _outputs
{-# LINE 2899 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutputs ->
(case (({-# LINE 713 "./src-ag/DefaultRules.ag" #-}
case mbName_ of
Nothing -> Set.empty
Just nm -> Set.singleton nm
{-# LINE 2906 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOruleNames ->
(case (({-# LINE 625 "./src-ag/DefaultRules.ag" #-}
__tup4
{-# LINE 2911 "dist/build/DefaultRules.hs" #-}
)) of
{ !(_,!_lhsOuniq) ->
( _lhsOcontainsVars,_lhsOdefinedAttrs,_lhsOerrors,_lhsOisPure,_lhsOlocals,_lhsOoutput,_lhsOoutputs,_lhsOruleNames,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))
-- Rules -------------------------------------------------------
{-
visit 0:
inherited attributes:
con : ConstructorIdent
nt : NontermIdent
options : Options
chained attribute:
uniq : Int
synthesized attributes:
definedAttrs : Set (Identifier,Identifier)
errors : Seq Error
locals : Set Identifier
output : Rules
ruleNames : Set Identifier
alternatives:
alternative Cons:
child hd : Rule
child tl : Rules
alternative Nil:
visit 0:
local output : _
-}
-- cata
sem_Rules :: Rules ->
T_Rules
sem_Rules !list =
(Prelude.foldr sem_Rules_Cons sem_Rules_Nil (Prelude.map sem_Rule list))
-- semantic domain
newtype T_Rules = T_Rules (ConstructorIdent ->
NontermIdent ->
Options ->
Int ->
( (Set (Identifier,Identifier)),(Seq Error),(Set Identifier),Rules,(Set Identifier),Int))
data Inh_Rules = Inh_Rules {con_Inh_Rules :: !(ConstructorIdent),nt_Inh_Rules :: !(NontermIdent),options_Inh_Rules :: !(Options),uniq_Inh_Rules :: !(Int)}
data Syn_Rules = Syn_Rules {definedAttrs_Syn_Rules :: !((Set (Identifier,Identifier))),errors_Syn_Rules :: !((Seq Error)),locals_Syn_Rules :: !((Set Identifier)),output_Syn_Rules :: !(Rules),ruleNames_Syn_Rules :: !((Set Identifier)),uniq_Syn_Rules :: !(Int)}
wrap_Rules :: T_Rules ->
Inh_Rules ->
Syn_Rules
wrap_Rules !(T_Rules sem) !(Inh_Rules _lhsIcon _lhsInt _lhsIoptions _lhsIuniq) =
(let ( !_lhsOdefinedAttrs,!_lhsOerrors,!_lhsOlocals,!_lhsOoutput,!_lhsOruleNames,!_lhsOuniq) = sem _lhsIcon _lhsInt _lhsIoptions _lhsIuniq
in (Syn_Rules _lhsOdefinedAttrs _lhsOerrors _lhsOlocals _lhsOoutput _lhsOruleNames _lhsOuniq))
sem_Rules_Cons :: T_Rule ->
T_Rules ->
T_Rules
sem_Rules_Cons !(T_Rule hd_) !(T_Rules tl_) =
(T_Rules (\ (!_lhsIcon)
(!_lhsInt)
(!_lhsIoptions)
(!_lhsIuniq) ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_lhsIuniq
{-# LINE 2967 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOuniq ->
(case (({-# LINE 51 "./src-ag/DefaultRules.ag" #-}
_lhsIoptions
{-# LINE 2972 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOoptions ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 2977 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOnt ->
(case (({-# LINE 40 "./src-ag/DefaultRules.ag" #-}
_lhsIcon
{-# LINE 2982 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOcon ->
(case (hd_ _hdOcon _hdOnt _hdOoptions _hdOuniq) of
{ ( !_hdIcontainsVars,!_hdIdefinedAttrs,!_hdIerrors,!_hdIisPure,!_hdIlocals,!_hdIoutput,!_hdIoutputs,!_hdIruleNames,!_hdIuniq) ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_hdIuniq
{-# LINE 2989 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOuniq ->
(case (({-# LINE 51 "./src-ag/DefaultRules.ag" #-}
_lhsIoptions
{-# LINE 2994 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOoptions ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 2999 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOnt ->
(case (({-# LINE 40 "./src-ag/DefaultRules.ag" #-}
_lhsIcon
{-# LINE 3004 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOcon ->
(case (tl_ _tlOcon _tlOnt _tlOoptions _tlOuniq) of
{ ( !_tlIdefinedAttrs,!_tlIerrors,!_tlIlocals,!_tlIoutput,!_tlIruleNames,!_tlIuniq) ->
(case (({-# LINE 531 "./src-ag/DefaultRules.ag" #-}
_hdIdefinedAttrs `Set.union` _tlIdefinedAttrs
{-# LINE 3011 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOdefinedAttrs ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
_hdIerrors Seq.>< _tlIerrors
{-# LINE 3016 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 530 "./src-ag/DefaultRules.ag" #-}
_hdIlocals `Set.union` _tlIlocals
{-# LINE 3021 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOlocals ->
(case (({-# LINE 620 "./src-ag/DefaultRules.ag" #-}
if _hdIcontainsVars && _hdIisPure then _hdIoutputs ++ _tlIoutput else _tlIoutput
{-# LINE 3026 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
(case (({-# LINE 711 "./src-ag/DefaultRules.ag" #-}
_hdIruleNames `Set.union` _tlIruleNames
{-# LINE 3031 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOruleNames ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_tlIuniq
{-# LINE 3036 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOuniq ->
( _lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOruleNames,_lhsOuniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })))
sem_Rules_Nil :: T_Rules
sem_Rules_Nil =
(T_Rules (\ (!_lhsIcon)
(!_lhsInt)
(!_lhsIoptions)
(!_lhsIuniq) ->
(case (({-# LINE 531 "./src-ag/DefaultRules.ag" #-}
Set.empty
{-# LINE 3048 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOdefinedAttrs ->
(case (({-# LINE 168 "./src-ag/DefaultRules.ag" #-}
Seq.empty
{-# LINE 3053 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOerrors ->
(case (({-# LINE 530 "./src-ag/DefaultRules.ag" #-}
Set.empty
{-# LINE 3058 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOlocals ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
[]
{-# LINE 3063 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 3068 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
(case (({-# LINE 711 "./src-ag/DefaultRules.ag" #-}
Set.empty
{-# LINE 3073 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOruleNames ->
(case (({-# LINE 592 "./src-ag/DefaultRules.ag" #-}
_lhsIuniq
{-# LINE 3078 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOuniq ->
( _lhsOdefinedAttrs,_lhsOerrors,_lhsOlocals,_lhsOoutput,_lhsOruleNames,_lhsOuniq) }) }) }) }) }) }) })))
-- TypeSig -----------------------------------------------------
{-
visit 0:
inherited attributes:
nt : NontermIdent
params : [Identifier]
synthesized attribute:
output : TypeSig
alternatives:
alternative TypeSig:
child name : {Identifier}
child tp : {Type}
visit 0:
local tp1 : _
-}
-- cata
sem_TypeSig :: TypeSig ->
T_TypeSig
sem_TypeSig !(TypeSig _name _tp) =
(sem_TypeSig_TypeSig _name _tp)
-- semantic domain
newtype T_TypeSig = T_TypeSig (NontermIdent ->
([Identifier]) ->
( TypeSig))
data Inh_TypeSig = Inh_TypeSig {nt_Inh_TypeSig :: !(NontermIdent),params_Inh_TypeSig :: !(([Identifier]))}
data Syn_TypeSig = Syn_TypeSig {output_Syn_TypeSig :: !(TypeSig)}
wrap_TypeSig :: T_TypeSig ->
Inh_TypeSig ->
Syn_TypeSig
wrap_TypeSig !(T_TypeSig sem) !(Inh_TypeSig _lhsInt _lhsIparams) =
(let ( !_lhsOoutput) = sem _lhsInt _lhsIparams
in (Syn_TypeSig _lhsOoutput))
sem_TypeSig_TypeSig :: Identifier ->
Type ->
T_TypeSig
sem_TypeSig_TypeSig !name_ !tp_ =
(T_TypeSig (\ (!_lhsInt)
(!_lhsIparams) ->
(case (({-# LINE 576 "./src-ag/DefaultRules.ag" #-}
elimSelfId _lhsInt _lhsIparams tp_
{-# LINE 3122 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tp1 ->
(case (({-# LINE 617 "./src-ag/DefaultRules.ag" #-}
TypeSig name_ _tp1
{-# LINE 3127 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
( _lhsOoutput) }) })))
-- TypeSigs ----------------------------------------------------
{-
visit 0:
inherited attributes:
nt : NontermIdent
params : [Identifier]
synthesized attribute:
output : TypeSigs
alternatives:
alternative Cons:
child hd : TypeSig
child tl : TypeSigs
visit 0:
local output : _
alternative Nil:
visit 0:
local output : _
-}
-- cata
sem_TypeSigs :: TypeSigs ->
T_TypeSigs
sem_TypeSigs !list =
(Prelude.foldr sem_TypeSigs_Cons sem_TypeSigs_Nil (Prelude.map sem_TypeSig list))
-- semantic domain
newtype T_TypeSigs = T_TypeSigs (NontermIdent ->
([Identifier]) ->
( TypeSigs))
data Inh_TypeSigs = Inh_TypeSigs {nt_Inh_TypeSigs :: !(NontermIdent),params_Inh_TypeSigs :: !(([Identifier]))}
data Syn_TypeSigs = Syn_TypeSigs {output_Syn_TypeSigs :: !(TypeSigs)}
wrap_TypeSigs :: T_TypeSigs ->
Inh_TypeSigs ->
Syn_TypeSigs
wrap_TypeSigs !(T_TypeSigs sem) !(Inh_TypeSigs _lhsInt _lhsIparams) =
(let ( !_lhsOoutput) = sem _lhsInt _lhsIparams
in (Syn_TypeSigs _lhsOoutput))
sem_TypeSigs_Cons :: T_TypeSig ->
T_TypeSigs ->
T_TypeSigs
sem_TypeSigs_Cons !(T_TypeSig hd_) !(T_TypeSigs tl_) =
(T_TypeSigs (\ (!_lhsInt)
(!_lhsIparams) ->
(case (({-# LINE 42 "./src-ag/DefaultRules.ag" #-}
_lhsIparams
{-# LINE 3174 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOparams ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 3179 "dist/build/DefaultRules.hs" #-}
)) of
{ !_tlOnt ->
(case (({-# LINE 42 "./src-ag/DefaultRules.ag" #-}
_lhsIparams
{-# LINE 3184 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOparams ->
(case (({-# LINE 39 "./src-ag/DefaultRules.ag" #-}
_lhsInt
{-# LINE 3189 "dist/build/DefaultRules.hs" #-}
)) of
{ !_hdOnt ->
(case (tl_ _tlOnt _tlOparams) of
{ ( !_tlIoutput) ->
(case (hd_ _hdOnt _hdOparams) of
{ ( !_hdIoutput) ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
(:) _hdIoutput _tlIoutput
{-# LINE 3198 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 3203 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
( _lhsOoutput) }) }) }) }) }) }) }) })))
sem_TypeSigs_Nil :: T_TypeSigs
sem_TypeSigs_Nil =
(T_TypeSigs (\ (!_lhsInt)
(!_lhsIparams) ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
[]
{-# LINE 3213 "dist/build/DefaultRules.hs" #-}
)) of
{ !_output ->
(case (({-# LINE 599 "./src-ag/DefaultRules.ag" #-}
_output
{-# LINE 3218 "dist/build/DefaultRules.hs" #-}
)) of
{ !_lhsOoutput ->
( _lhsOoutput) }) })))