-- UUAGC 0.9.38.1 (KWOrder.ag) module KWOrder where {-# LINE 6 "KWOrder.ag" #-} import AbstractSyntax import HsToken import Expression import Patterns import Options import PPUtil import Pretty import Knuth1 import KennedyWarren import Maybe import qualified Data.Set as Set import qualified Data.Map as Map {-# LINE 20 "../src-derived/KWOrder.hs" #-} {-# LINE 2 "./AbstractSyntax.ag" #-} -- AbstractSyntax.ag imports import Data.Set(Set) import Data.Map(Map) import Patterns (Pattern(..),Patterns) import Expression (Expression(..)) import CommonTypes {-# LINE 30 "../src-derived/KWOrder.hs" #-} {-# LINE 2 "./HsToken.ag" #-} import CommonTypes import UU.Scanner.Position(Pos) {-# LINE 36 "../src-derived/KWOrder.hs" #-} {-# LINE 2 "./Expression.ag" #-} import UU.Scanner.Position(Pos) import HsToken {-# LINE 42 "../src-derived/KWOrder.hs" #-} {-# LINE 2 "./Patterns.ag" #-} -- Patterns.ag imports import UU.Scanner.Position(Pos) import CommonTypes (ConstructorIdent,Identifier) {-# LINE 49 "../src-derived/KWOrder.hs" #-} -- Child ------------------------------------------------------- {- visit 0: synthesized attributes: edges : Set.Set Edge nontnames : [(Identifier, Identifier)] vertices : Set.Set Vertex alternatives: alternative Child: child name : {Identifier} child tp : {Type} child inh : {Attributes} child syn : {Attributes} child virtual : {Maybe (Maybe Type)} visit 0: local vertex : _ local synvertices : _ local inhvertices : _ local edgesout : _ local edgesin : _ -} -- cata sem_Child :: Child -> T_Child sem_Child (Child _name _tp _inh _syn _virtual ) = (sem_Child_Child _name _tp _inh _syn _virtual ) -- semantic domain newtype T_Child = T_Child (( (Set.Set Edge),([(Identifier, Identifier)]),(Set.Set Vertex))) data Inh_Child = Inh_Child {} data Syn_Child = Syn_Child {edges_Syn_Child :: (Set.Set Edge),nontnames_Syn_Child :: ([(Identifier, Identifier)]),vertices_Syn_Child :: (Set.Set Vertex)} wrap_Child :: T_Child -> Inh_Child -> Syn_Child wrap_Child (T_Child sem ) (Inh_Child ) = (let ( _lhsOedges,_lhsOnontnames,_lhsOvertices) = sem in (Syn_Child _lhsOedges _lhsOnontnames _lhsOvertices )) sem_Child_Child :: Identifier -> Type -> Attributes -> Attributes -> (Maybe (Maybe Type)) -> T_Child sem_Child_Child name_ tp_ inh_ syn_ virtual_ = (T_Child (let _lhsOvertices :: (Set.Set Vertex) _lhsOedges :: (Set.Set Edge) _lhsOnontnames :: ([(Identifier, Identifier)]) -- "KWOrder.ag"(line 76, column 12) _vertex = ({-# LINE 76 "KWOrder.ag" #-} VChild name_ {-# LINE 100 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 77, column 12) _synvertices = ({-# LINE 77 "KWOrder.ag" #-} map (VAttr Syn name_) . Map.keys $ syn_ {-# LINE 106 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 78, column 12) _inhvertices = ({-# LINE 78 "KWOrder.ag" #-} map (VAttr Inh name_) . Map.keys $ inh_ {-# LINE 112 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 79, column 12) _lhsOvertices = ({-# LINE 79 "KWOrder.ag" #-} case tp_ of NT _ _ -> Set.insert _vertex (Set.fromList $ _synvertices ++ _inhvertices ) _ -> Set.empty {-# LINE 120 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 104, column 12) _edgesout = ({-# LINE 104 "KWOrder.ag" #-} [] {-# LINE 126 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 105, column 12) _edgesin = ({-# LINE 105 "KWOrder.ag" #-} map (flip (,) _vertex ) _synvertices {-# LINE 132 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 106, column 12) _lhsOedges = ({-# LINE 106 "KWOrder.ag" #-} Set.fromList $ _edgesout ++ _edgesin {-# LINE 138 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 116, column 12) _lhsOnontnames = ({-# LINE 116 "KWOrder.ag" #-} case tp_ of NT nont _ -> [(name_, nont)] _ -> [] {-# LINE 146 "KWOrder.hs" #-} ) in ( _lhsOedges,_lhsOnontnames,_lhsOvertices)) ) -- Children ---------------------------------------------------- {- visit 0: synthesized attributes: edges : Set.Set Edge nontnames : [(Identifier, Identifier)] vertices : Set.Set Vertex alternatives: alternative Cons: child hd : Child child tl : Children alternative Nil: -} -- 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 (( (Set.Set Edge),([(Identifier, Identifier)]),(Set.Set Vertex))) data Inh_Children = Inh_Children {} data Syn_Children = Syn_Children {edges_Syn_Children :: (Set.Set Edge),nontnames_Syn_Children :: ([(Identifier, Identifier)]),vertices_Syn_Children :: (Set.Set Vertex)} wrap_Children :: T_Children -> Inh_Children -> Syn_Children wrap_Children (T_Children sem ) (Inh_Children ) = (let ( _lhsOedges,_lhsOnontnames,_lhsOvertices) = sem in (Syn_Children _lhsOedges _lhsOnontnames _lhsOvertices )) sem_Children_Cons :: T_Child -> T_Children -> T_Children sem_Children_Cons (T_Child hd_ ) (T_Children tl_ ) = (T_Children (let _lhsOedges :: (Set.Set Edge) _lhsOnontnames :: ([(Identifier, Identifier)]) _lhsOvertices :: (Set.Set Vertex) _hdIedges :: (Set.Set Edge) _hdInontnames :: ([(Identifier, Identifier)]) _hdIvertices :: (Set.Set Vertex) _tlIedges :: (Set.Set Edge) _tlInontnames :: ([(Identifier, Identifier)]) _tlIvertices :: (Set.Set Vertex) -- use rule "KWOrder.ag"(line 94, column 33) _lhsOedges = ({-# LINE 94 "KWOrder.ag" #-} _hdIedges `Set.union` _tlIedges {-# LINE 194 "KWOrder.hs" #-} ) -- use rule "KWOrder.ag"(line 113, column 37) _lhsOnontnames = ({-# LINE 113 "KWOrder.ag" #-} _hdInontnames ++ _tlInontnames {-# LINE 200 "KWOrder.hs" #-} ) -- use rule "KWOrder.ag"(line 52, column 36) _lhsOvertices = ({-# LINE 52 "KWOrder.ag" #-} _hdIvertices `Set.union` _tlIvertices {-# LINE 206 "KWOrder.hs" #-} ) ( _hdIedges,_hdInontnames,_hdIvertices) = hd_ ( _tlIedges,_tlInontnames,_tlIvertices) = tl_ in ( _lhsOedges,_lhsOnontnames,_lhsOvertices)) ) sem_Children_Nil :: T_Children sem_Children_Nil = (T_Children (let _lhsOedges :: (Set.Set Edge) _lhsOnontnames :: ([(Identifier, Identifier)]) _lhsOvertices :: (Set.Set Vertex) -- use rule "KWOrder.ag"(line 94, column 33) _lhsOedges = ({-# LINE 94 "KWOrder.ag" #-} Set.empty {-# LINE 222 "KWOrder.hs" #-} ) -- use rule "KWOrder.ag"(line 113, column 37) _lhsOnontnames = ({-# LINE 113 "KWOrder.ag" #-} [] {-# LINE 228 "KWOrder.hs" #-} ) -- use rule "KWOrder.ag"(line 52, column 36) _lhsOvertices = ({-# LINE 52 "KWOrder.ag" #-} Set.empty {-# LINE 234 "KWOrder.hs" #-} ) in ( _lhsOedges,_lhsOnontnames,_lhsOvertices)) ) -- Expression -------------------------------------------------- {- visit 0: synthesized attribute: vertices : Set.Set Vertex alternatives: alternative Expression: child pos : {Pos} child tks : {[HsToken]} -} -- cata sem_Expression :: Expression -> T_Expression sem_Expression (Expression _pos _tks ) = (sem_Expression_Expression _pos _tks ) -- semantic domain newtype T_Expression = T_Expression (( (Set.Set Vertex))) data Inh_Expression = Inh_Expression {} data Syn_Expression = Syn_Expression {vertices_Syn_Expression :: (Set.Set Vertex)} wrap_Expression :: T_Expression -> Inh_Expression -> Syn_Expression wrap_Expression (T_Expression sem ) (Inh_Expression ) = (let ( _lhsOvertices) = sem in (Syn_Expression _lhsOvertices )) sem_Expression_Expression :: Pos -> ([HsToken]) -> T_Expression sem_Expression_Expression pos_ tks_ = (T_Expression (let _lhsOvertices :: (Set.Set Vertex) -- "KWOrder.ag"(line 63, column 17) _lhsOvertices = ({-# LINE 63 "KWOrder.ag" #-} Set.unions $ map (\tok -> vertices_Syn_HsToken (wrap_HsToken (sem_HsToken tok) Inh_HsToken)) tks_ {-# LINE 272 "KWOrder.hs" #-} ) in ( _lhsOvertices)) ) -- Grammar ----------------------------------------------------- {- visit 0: inherited attribute: options : Options synthesized attribute: debugoutput : PP_Doc 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)))} -} -- 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 -> ( PP_Doc)) data Inh_Grammar = Inh_Grammar {options_Inh_Grammar :: Options} data Syn_Grammar = Syn_Grammar {debugoutput_Syn_Grammar :: PP_Doc} wrap_Grammar :: T_Grammar -> Inh_Grammar -> Syn_Grammar wrap_Grammar (T_Grammar sem ) (Inh_Grammar _lhsIoptions ) = (let ( _lhsOdebugoutput) = sem _lhsIoptions in (Syn_Grammar _lhsOdebugoutput )) 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 -> (let _nontsOrulenumber :: Int _lhsOdebugoutput :: PP_Doc _nontsIdepinfo :: ([NontDependencyInformation]) _nontsIrulenumber :: Int -- "KWOrder.ag"(line 39, column 14) _nontsOrulenumber = ({-# LINE 39 "KWOrder.ag" #-} 0 {-# LINE 340 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 160, column 14) _lhsOdebugoutput = ({-# LINE 160 "KWOrder.ag" #-} kennedyWarrenIO _nontsIdepinfo {-# LINE 346 "KWOrder.hs" #-} ) ( _nontsIdepinfo,_nontsIrulenumber) = nonts_ _nontsOrulenumber in ( _lhsOdebugoutput))) ) -- HsToken ----------------------------------------------------- {- visit 0: synthesized attribute: vertices : Set.Set Vertex alternatives: alternative AGField: child field : {Identifier} child attr : {Identifier} child pos : {Pos} child rdesc : {Maybe String} alternative AGLocal: child var : {Identifier} child pos : {Pos} child rdesc : {Maybe String} alternative CharToken: child value : {String} child pos : {Pos} alternative Err: child mesg : {String} child pos : {Pos} alternative HsToken: child value : {String} child pos : {Pos} alternative StrToken: child value : {String} child pos : {Pos} -} -- cata sem_HsToken :: HsToken -> T_HsToken sem_HsToken (AGField _field _attr _pos _rdesc ) = (sem_HsToken_AGField _field _attr _pos _rdesc ) sem_HsToken (AGLocal _var _pos _rdesc ) = (sem_HsToken_AGLocal _var _pos _rdesc ) sem_HsToken (CharToken _value _pos ) = (sem_HsToken_CharToken _value _pos ) sem_HsToken (Err _mesg _pos ) = (sem_HsToken_Err _mesg _pos ) sem_HsToken (HsToken _value _pos ) = (sem_HsToken_HsToken _value _pos ) sem_HsToken (StrToken _value _pos ) = (sem_HsToken_StrToken _value _pos ) -- semantic domain newtype T_HsToken = T_HsToken (( (Set.Set Vertex))) data Inh_HsToken = Inh_HsToken {} data Syn_HsToken = Syn_HsToken {vertices_Syn_HsToken :: (Set.Set Vertex)} wrap_HsToken :: T_HsToken -> Inh_HsToken -> Syn_HsToken wrap_HsToken (T_HsToken sem ) (Inh_HsToken ) = (let ( _lhsOvertices) = sem in (Syn_HsToken _lhsOvertices )) sem_HsToken_AGField :: Identifier -> Identifier -> Pos -> (Maybe String) -> T_HsToken sem_HsToken_AGField field_ attr_ pos_ rdesc_ = (T_HsToken (let _lhsOvertices :: (Set.Set Vertex) -- "KWOrder.ag"(line 57, column 14) _lhsOvertices = ({-# LINE 57 "KWOrder.ag" #-} Set.singleton $ VAttr (if field_ == _LHS then Inh else if field_ == _LOC then Loc else Syn) field_ attr_ {-# LINE 417 "KWOrder.hs" #-} ) in ( _lhsOvertices)) ) sem_HsToken_AGLocal :: Identifier -> Pos -> (Maybe String) -> T_HsToken sem_HsToken_AGLocal var_ pos_ rdesc_ = (T_HsToken (let _lhsOvertices :: (Set.Set Vertex) -- "KWOrder.ag"(line 56, column 14) _lhsOvertices = ({-# LINE 56 "KWOrder.ag" #-} Set.singleton $ VAttr Loc _LOC var_ {-# LINE 430 "KWOrder.hs" #-} ) in ( _lhsOvertices)) ) sem_HsToken_CharToken :: String -> Pos -> T_HsToken sem_HsToken_CharToken value_ pos_ = (T_HsToken (let _lhsOvertices :: (Set.Set Vertex) -- use rule "KWOrder.ag"(line 52, column 36) _lhsOvertices = ({-# LINE 52 "KWOrder.ag" #-} Set.empty {-# LINE 442 "KWOrder.hs" #-} ) in ( _lhsOvertices)) ) sem_HsToken_Err :: String -> Pos -> T_HsToken sem_HsToken_Err mesg_ pos_ = (T_HsToken (let _lhsOvertices :: (Set.Set Vertex) -- use rule "KWOrder.ag"(line 52, column 36) _lhsOvertices = ({-# LINE 52 "KWOrder.ag" #-} Set.empty {-# LINE 454 "KWOrder.hs" #-} ) in ( _lhsOvertices)) ) sem_HsToken_HsToken :: String -> Pos -> T_HsToken sem_HsToken_HsToken value_ pos_ = (T_HsToken (let _lhsOvertices :: (Set.Set Vertex) -- use rule "KWOrder.ag"(line 52, column 36) _lhsOvertices = ({-# LINE 52 "KWOrder.ag" #-} Set.empty {-# LINE 466 "KWOrder.hs" #-} ) in ( _lhsOvertices)) ) sem_HsToken_StrToken :: String -> Pos -> T_HsToken sem_HsToken_StrToken value_ pos_ = (T_HsToken (let _lhsOvertices :: (Set.Set Vertex) -- use rule "KWOrder.ag"(line 52, column 36) _lhsOvertices = ({-# LINE 52 "KWOrder.ag" #-} Set.empty {-# LINE 478 "KWOrder.hs" #-} ) in ( _lhsOvertices)) ) -- HsTokens ---------------------------------------------------- {- alternatives: alternative Cons: child hd : HsToken child tl : HsTokens alternative Nil: -} -- cata sem_HsTokens :: HsTokens -> T_HsTokens sem_HsTokens list = (Prelude.foldr sem_HsTokens_Cons sem_HsTokens_Nil (Prelude.map sem_HsToken list) ) -- semantic domain newtype T_HsTokens = T_HsTokens (( )) data Inh_HsTokens = Inh_HsTokens {} data Syn_HsTokens = Syn_HsTokens {} wrap_HsTokens :: T_HsTokens -> Inh_HsTokens -> Syn_HsTokens wrap_HsTokens (T_HsTokens sem ) (Inh_HsTokens ) = (let ( ) = sem in (Syn_HsTokens )) sem_HsTokens_Cons :: T_HsToken -> T_HsTokens -> T_HsTokens sem_HsTokens_Cons (T_HsToken hd_ ) (T_HsTokens tl_ ) = (T_HsTokens (let _hdIvertices :: (Set.Set Vertex) ( _hdIvertices) = hd_ in ( )) ) sem_HsTokens_Nil :: T_HsTokens sem_HsTokens_Nil = (T_HsTokens (let in ( )) ) -- HsTokensRoot ------------------------------------------------ {- alternatives: alternative HsTokensRoot: child tokens : HsTokens -} -- cata sem_HsTokensRoot :: HsTokensRoot -> T_HsTokensRoot sem_HsTokensRoot (HsTokensRoot _tokens ) = (sem_HsTokensRoot_HsTokensRoot (sem_HsTokens _tokens ) ) -- semantic domain newtype T_HsTokensRoot = T_HsTokensRoot (( )) data Inh_HsTokensRoot = Inh_HsTokensRoot {} data Syn_HsTokensRoot = Syn_HsTokensRoot {} wrap_HsTokensRoot :: T_HsTokensRoot -> Inh_HsTokensRoot -> Syn_HsTokensRoot wrap_HsTokensRoot (T_HsTokensRoot sem ) (Inh_HsTokensRoot ) = (let ( ) = sem in (Syn_HsTokensRoot )) sem_HsTokensRoot_HsTokensRoot :: T_HsTokens -> T_HsTokensRoot sem_HsTokensRoot_HsTokensRoot (T_HsTokens tokens_ ) = (T_HsTokensRoot (let in ( )) ) -- Nonterminal ------------------------------------------------- {- visit 0: chained attribute: rulenumber : Int synthesized attribute: depinfo : NontDependencyInformation alternatives: alternative Nonterminal: child nt : {NontermIdent} child params : {[Identifier]} child inh : {Attributes} child syn : {Attributes} child prods : Productions visit 0: local synvertices : _ local inhvertices : _ local vertices : _ local nontgraph : _ -} -- 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 (Int -> ( NontDependencyInformation,Int)) data Inh_Nonterminal = Inh_Nonterminal {rulenumber_Inh_Nonterminal :: Int} data Syn_Nonterminal = Syn_Nonterminal {depinfo_Syn_Nonterminal :: NontDependencyInformation,rulenumber_Syn_Nonterminal :: Int} wrap_Nonterminal :: T_Nonterminal -> Inh_Nonterminal -> Syn_Nonterminal wrap_Nonterminal (T_Nonterminal sem ) (Inh_Nonterminal _lhsIrulenumber ) = (let ( _lhsOdepinfo,_lhsOrulenumber) = sem _lhsIrulenumber in (Syn_Nonterminal _lhsOdepinfo _lhsOrulenumber )) sem_Nonterminal_Nonterminal :: NontermIdent -> ([Identifier]) -> Attributes -> Attributes -> T_Productions -> T_Nonterminal sem_Nonterminal_Nonterminal nt_ params_ inh_ syn_ (T_Productions prods_ ) = (T_Nonterminal (\ _lhsIrulenumber -> (let _lhsOdepinfo :: NontDependencyInformation _lhsOrulenumber :: Int _prodsOrulenumber :: Int _prodsIdepgraph :: ([ProdDependencyGraph]) _prodsIrulenumber :: Int -- "KWOrder.ag"(line 136, column 18) _synvertices = ({-# LINE 136 "KWOrder.ag" #-} map (VAttr Syn nt_) . Map.keys $ syn_ {-# LINE 595 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 137, column 18) _inhvertices = ({-# LINE 137 "KWOrder.ag" #-} map (VAttr Inh nt_) . Map.keys $ inh_ {-# LINE 601 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 138, column 18) _vertices = ({-# LINE 138 "KWOrder.ag" #-} _synvertices ++ _inhvertices {-# LINE 607 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 142, column 18) _nontgraph = ({-# LINE 142 "KWOrder.ag" #-} NontDependencyGraph { ndgVertices = _vertices , ndgEdges = [] } {-# LINE 614 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 150, column 18) _lhsOdepinfo = ({-# LINE 150 "KWOrder.ag" #-} NontDependencyInformation { ndiNonterminal = nt_ , ndiInh = Map.keys inh_ , ndiSyn = Map.keys syn_ , ndiDepGraph = _nontgraph , ndiProds = _prodsIdepgraph } {-# LINE 624 "KWOrder.hs" #-} ) -- copy rule (up) _lhsOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _prodsIrulenumber {-# LINE 630 "KWOrder.hs" #-} ) -- copy rule (down) _prodsOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _lhsIrulenumber {-# LINE 636 "KWOrder.hs" #-} ) ( _prodsIdepgraph,_prodsIrulenumber) = prods_ _prodsOrulenumber in ( _lhsOdepinfo,_lhsOrulenumber))) ) -- Nonterminals ------------------------------------------------ {- visit 0: chained attribute: rulenumber : Int synthesized attribute: depinfo : [NontDependencyInformation] alternatives: alternative Cons: child hd : Nonterminal child tl : Nonterminals alternative Nil: -} -- 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 (Int -> ( ([NontDependencyInformation]),Int)) data Inh_Nonterminals = Inh_Nonterminals {rulenumber_Inh_Nonterminals :: Int} data Syn_Nonterminals = Syn_Nonterminals {depinfo_Syn_Nonterminals :: ([NontDependencyInformation]),rulenumber_Syn_Nonterminals :: Int} wrap_Nonterminals :: T_Nonterminals -> Inh_Nonterminals -> Syn_Nonterminals wrap_Nonterminals (T_Nonterminals sem ) (Inh_Nonterminals _lhsIrulenumber ) = (let ( _lhsOdepinfo,_lhsOrulenumber) = sem _lhsIrulenumber in (Syn_Nonterminals _lhsOdepinfo _lhsOrulenumber )) sem_Nonterminals_Cons :: T_Nonterminal -> T_Nonterminals -> T_Nonterminals sem_Nonterminals_Cons (T_Nonterminal hd_ ) (T_Nonterminals tl_ ) = (T_Nonterminals (\ _lhsIrulenumber -> (let _lhsOdepinfo :: ([NontDependencyInformation]) _lhsOrulenumber :: Int _hdOrulenumber :: Int _tlOrulenumber :: Int _hdIdepinfo :: NontDependencyInformation _hdIrulenumber :: Int _tlIdepinfo :: ([NontDependencyInformation]) _tlIrulenumber :: Int -- use rule "KWOrder.ag"(line 147, column 33) _lhsOdepinfo = ({-# LINE 147 "KWOrder.ag" #-} _hdIdepinfo : _tlIdepinfo {-# LINE 687 "KWOrder.hs" #-} ) -- copy rule (up) _lhsOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _tlIrulenumber {-# LINE 693 "KWOrder.hs" #-} ) -- copy rule (down) _hdOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _lhsIrulenumber {-# LINE 699 "KWOrder.hs" #-} ) -- copy rule (chain) _tlOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _hdIrulenumber {-# LINE 705 "KWOrder.hs" #-} ) ( _hdIdepinfo,_hdIrulenumber) = hd_ _hdOrulenumber ( _tlIdepinfo,_tlIrulenumber) = tl_ _tlOrulenumber in ( _lhsOdepinfo,_lhsOrulenumber))) ) sem_Nonterminals_Nil :: T_Nonterminals sem_Nonterminals_Nil = (T_Nonterminals (\ _lhsIrulenumber -> (let _lhsOdepinfo :: ([NontDependencyInformation]) _lhsOrulenumber :: Int -- use rule "KWOrder.ag"(line 147, column 33) _lhsOdepinfo = ({-# LINE 147 "KWOrder.ag" #-} [] {-# LINE 721 "KWOrder.hs" #-} ) -- copy rule (chain) _lhsOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _lhsIrulenumber {-# LINE 727 "KWOrder.hs" #-} ) in ( _lhsOdepinfo,_lhsOrulenumber))) ) -- Pattern ----------------------------------------------------- {- visit 0: synthesized attributes: copy : SELF vertices : Set.Set Vertex alternatives: alternative Alias: child field : {Identifier} child attr : {Identifier} child pat : Pattern child parts : Patterns visit 0: local vertex : _ local copy : _ alternative Constr: child name : {ConstructorIdent} child pats : Patterns visit 0: local copy : _ alternative Irrefutable: child pat : Pattern visit 0: local copy : _ alternative Product: child pos : {Pos} child pats : Patterns visit 0: local copy : _ alternative Underscore: child pos : {Pos} visit 0: local copy : _ -} -- cata sem_Pattern :: Pattern -> T_Pattern sem_Pattern (Alias _field _attr _pat _parts ) = (sem_Pattern_Alias _field _attr (sem_Pattern _pat ) (sem_Patterns _parts ) ) sem_Pattern (Constr _name _pats ) = (sem_Pattern_Constr _name (sem_Patterns _pats ) ) sem_Pattern (Irrefutable _pat ) = (sem_Pattern_Irrefutable (sem_Pattern _pat ) ) sem_Pattern (Product _pos _pats ) = (sem_Pattern_Product _pos (sem_Patterns _pats ) ) sem_Pattern (Underscore _pos ) = (sem_Pattern_Underscore _pos ) -- semantic domain newtype T_Pattern = T_Pattern (( Pattern ,(Set.Set Vertex))) data Inh_Pattern = Inh_Pattern {} data Syn_Pattern = Syn_Pattern {copy_Syn_Pattern :: Pattern ,vertices_Syn_Pattern :: (Set.Set Vertex)} wrap_Pattern :: T_Pattern -> Inh_Pattern -> Syn_Pattern wrap_Pattern (T_Pattern sem ) (Inh_Pattern ) = (let ( _lhsOcopy,_lhsOvertices) = sem in (Syn_Pattern _lhsOcopy _lhsOvertices )) sem_Pattern_Alias :: Identifier -> Identifier -> T_Pattern -> T_Patterns -> T_Pattern sem_Pattern_Alias field_ attr_ (T_Pattern pat_ ) (T_Patterns parts_ ) = (T_Pattern (let _lhsOvertices :: (Set.Set Vertex) _lhsOcopy :: Pattern _patIcopy :: Pattern _patIvertices :: (Set.Set Vertex) _partsIcopy :: Patterns _partsIvertices :: (Set.Set Vertex) -- "KWOrder.ag"(line 68, column 12) _vertex = ({-# LINE 68 "KWOrder.ag" #-} if field_ == _INST then VChild attr_ else VAttr (if field_ == _LHS then Syn else if field_ == _LOC then Loc else Inh) field_ attr_ {-# LINE 806 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 72, column 12) _lhsOvertices = ({-# LINE 72 "KWOrder.ag" #-} Set.insert _vertex $ _partsIvertices `Set.union` _patIvertices {-# LINE 812 "KWOrder.hs" #-} ) -- self rule _copy = ({-# LINE 23 "./Patterns.ag" #-} Alias field_ attr_ _patIcopy _partsIcopy {-# LINE 818 "KWOrder.hs" #-} ) -- self rule _lhsOcopy = ({-# LINE 23 "./Patterns.ag" #-} _copy {-# LINE 824 "KWOrder.hs" #-} ) ( _patIcopy,_patIvertices) = pat_ ( _partsIcopy,_partsIvertices) = parts_ in ( _lhsOcopy,_lhsOvertices)) ) sem_Pattern_Constr :: ConstructorIdent -> T_Patterns -> T_Pattern sem_Pattern_Constr name_ (T_Patterns pats_ ) = (T_Pattern (let _lhsOvertices :: (Set.Set Vertex) _lhsOcopy :: Pattern _patsIcopy :: Patterns _patsIvertices :: (Set.Set Vertex) -- use rule "KWOrder.ag"(line 52, column 36) _lhsOvertices = ({-# LINE 52 "KWOrder.ag" #-} _patsIvertices {-# LINE 843 "KWOrder.hs" #-} ) -- self rule _copy = ({-# LINE 23 "./Patterns.ag" #-} Constr name_ _patsIcopy {-# LINE 849 "KWOrder.hs" #-} ) -- self rule _lhsOcopy = ({-# LINE 23 "./Patterns.ag" #-} _copy {-# LINE 855 "KWOrder.hs" #-} ) ( _patsIcopy,_patsIvertices) = pats_ in ( _lhsOcopy,_lhsOvertices)) ) sem_Pattern_Irrefutable :: T_Pattern -> T_Pattern sem_Pattern_Irrefutable (T_Pattern pat_ ) = (T_Pattern (let _lhsOvertices :: (Set.Set Vertex) _lhsOcopy :: Pattern _patIcopy :: Pattern _patIvertices :: (Set.Set Vertex) -- use rule "KWOrder.ag"(line 52, column 36) _lhsOvertices = ({-# LINE 52 "KWOrder.ag" #-} _patIvertices {-# LINE 871 "KWOrder.hs" #-} ) -- self rule _copy = ({-# LINE 23 "./Patterns.ag" #-} Irrefutable _patIcopy {-# LINE 877 "KWOrder.hs" #-} ) -- self rule _lhsOcopy = ({-# LINE 23 "./Patterns.ag" #-} _copy {-# LINE 883 "KWOrder.hs" #-} ) ( _patIcopy,_patIvertices) = pat_ in ( _lhsOcopy,_lhsOvertices)) ) sem_Pattern_Product :: Pos -> T_Patterns -> T_Pattern sem_Pattern_Product pos_ (T_Patterns pats_ ) = (T_Pattern (let _lhsOvertices :: (Set.Set Vertex) _lhsOcopy :: Pattern _patsIcopy :: Patterns _patsIvertices :: (Set.Set Vertex) -- use rule "KWOrder.ag"(line 52, column 36) _lhsOvertices = ({-# LINE 52 "KWOrder.ag" #-} _patsIvertices {-# LINE 900 "KWOrder.hs" #-} ) -- self rule _copy = ({-# LINE 23 "./Patterns.ag" #-} Product pos_ _patsIcopy {-# LINE 906 "KWOrder.hs" #-} ) -- self rule _lhsOcopy = ({-# LINE 23 "./Patterns.ag" #-} _copy {-# LINE 912 "KWOrder.hs" #-} ) ( _patsIcopy,_patsIvertices) = pats_ in ( _lhsOcopy,_lhsOvertices)) ) sem_Pattern_Underscore :: Pos -> T_Pattern sem_Pattern_Underscore pos_ = (T_Pattern (let _lhsOvertices :: (Set.Set Vertex) _lhsOcopy :: Pattern -- use rule "KWOrder.ag"(line 52, column 36) _lhsOvertices = ({-# LINE 52 "KWOrder.ag" #-} Set.empty {-# LINE 926 "KWOrder.hs" #-} ) -- self rule _copy = ({-# LINE 23 "./Patterns.ag" #-} Underscore pos_ {-# LINE 932 "KWOrder.hs" #-} ) -- self rule _lhsOcopy = ({-# LINE 23 "./Patterns.ag" #-} _copy {-# LINE 938 "KWOrder.hs" #-} ) in ( _lhsOcopy,_lhsOvertices)) ) -- Patterns ---------------------------------------------------- {- visit 0: synthesized attributes: copy : SELF vertices : Set.Set Vertex alternatives: alternative Cons: child hd : Pattern child tl : Patterns visit 0: local copy : _ alternative Nil: visit 0: local copy : _ -} -- cata sem_Patterns :: Patterns -> T_Patterns sem_Patterns list = (Prelude.foldr sem_Patterns_Cons sem_Patterns_Nil (Prelude.map sem_Pattern list) ) -- semantic domain newtype T_Patterns = T_Patterns (( Patterns ,(Set.Set Vertex))) data Inh_Patterns = Inh_Patterns {} data Syn_Patterns = Syn_Patterns {copy_Syn_Patterns :: Patterns ,vertices_Syn_Patterns :: (Set.Set Vertex)} wrap_Patterns :: T_Patterns -> Inh_Patterns -> Syn_Patterns wrap_Patterns (T_Patterns sem ) (Inh_Patterns ) = (let ( _lhsOcopy,_lhsOvertices) = sem in (Syn_Patterns _lhsOcopy _lhsOvertices )) sem_Patterns_Cons :: T_Pattern -> T_Patterns -> T_Patterns sem_Patterns_Cons (T_Pattern hd_ ) (T_Patterns tl_ ) = (T_Patterns (let _lhsOvertices :: (Set.Set Vertex) _lhsOcopy :: Patterns _hdIcopy :: Pattern _hdIvertices :: (Set.Set Vertex) _tlIcopy :: Patterns _tlIvertices :: (Set.Set Vertex) -- use rule "KWOrder.ag"(line 52, column 36) _lhsOvertices = ({-# LINE 52 "KWOrder.ag" #-} _hdIvertices `Set.union` _tlIvertices {-# LINE 986 "KWOrder.hs" #-} ) -- self rule _copy = ({-# LINE 23 "./Patterns.ag" #-} (:) _hdIcopy _tlIcopy {-# LINE 992 "KWOrder.hs" #-} ) -- self rule _lhsOcopy = ({-# LINE 23 "./Patterns.ag" #-} _copy {-# LINE 998 "KWOrder.hs" #-} ) ( _hdIcopy,_hdIvertices) = hd_ ( _tlIcopy,_tlIvertices) = tl_ in ( _lhsOcopy,_lhsOvertices)) ) sem_Patterns_Nil :: T_Patterns sem_Patterns_Nil = (T_Patterns (let _lhsOvertices :: (Set.Set Vertex) _lhsOcopy :: Patterns -- use rule "KWOrder.ag"(line 52, column 36) _lhsOvertices = ({-# LINE 52 "KWOrder.ag" #-} Set.empty {-# LINE 1013 "KWOrder.hs" #-} ) -- self rule _copy = ({-# LINE 23 "./Patterns.ag" #-} [] {-# LINE 1019 "KWOrder.hs" #-} ) -- self rule _lhsOcopy = ({-# LINE 23 "./Patterns.ag" #-} _copy {-# LINE 1025 "KWOrder.hs" #-} ) in ( _lhsOcopy,_lhsOvertices)) ) -- Production -------------------------------------------------- {- visit 0: chained attribute: rulenumber : Int synthesized attribute: depgraph : ProdDependencyGraph alternatives: alternative Production: child con : {ConstructorIdent} child children : Children child rules : Rules child typeSigs : TypeSigs visit 0: local vertices : _ local edges : _ -} -- cata sem_Production :: Production -> T_Production sem_Production (Production _con _children _rules _typeSigs ) = (sem_Production_Production _con (sem_Children _children ) (sem_Rules _rules ) (sem_TypeSigs _typeSigs ) ) -- semantic domain newtype T_Production = T_Production (Int -> ( ProdDependencyGraph,Int)) data Inh_Production = Inh_Production {rulenumber_Inh_Production :: Int} data Syn_Production = Syn_Production {depgraph_Syn_Production :: ProdDependencyGraph,rulenumber_Syn_Production :: Int} wrap_Production :: T_Production -> Inh_Production -> Syn_Production wrap_Production (T_Production sem ) (Inh_Production _lhsIrulenumber ) = (let ( _lhsOdepgraph,_lhsOrulenumber) = sem _lhsIrulenumber in (Syn_Production _lhsOdepgraph _lhsOrulenumber )) sem_Production_Production :: ConstructorIdent -> T_Children -> T_Rules -> T_TypeSigs -> T_Production sem_Production_Production con_ (T_Children children_ ) (T_Rules rules_ ) (T_TypeSigs typeSigs_ ) = (T_Production (\ _lhsIrulenumber -> (let _lhsOdepgraph :: ProdDependencyGraph _lhsOrulenumber :: Int _rulesOrulenumber :: Int _childrenIedges :: (Set.Set Edge) _childrenInontnames :: ([(Identifier, Identifier)]) _childrenIvertices :: (Set.Set Vertex) _rulesIedges :: (Set.Set Edge) _rulesIrulenumber :: Int _rulesIvertices :: (Set.Set Vertex) -- "KWOrder.ag"(line 90, column 17) _vertices = ({-# LINE 90 "KWOrder.ag" #-} _rulesIvertices `Set.union` _childrenIvertices {-# LINE 1081 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 110, column 17) _edges = ({-# LINE 110 "KWOrder.ag" #-} _rulesIedges `Set.union` _childrenIedges {-# LINE 1087 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 125, column 17) _lhsOdepgraph = ({-# LINE 125 "KWOrder.ag" #-} ProdDependencyGraph { pdgVertices = Set.toList _vertices , pdgEdges = Set.toList _edges , pdgProduction = con_ , pdgChildMap = _childrenInontnames } {-# LINE 1096 "KWOrder.hs" #-} ) -- copy rule (up) _lhsOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _rulesIrulenumber {-# LINE 1102 "KWOrder.hs" #-} ) -- copy rule (down) _rulesOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _lhsIrulenumber {-# LINE 1108 "KWOrder.hs" #-} ) ( _childrenIedges,_childrenInontnames,_childrenIvertices) = children_ ( _rulesIedges,_rulesIrulenumber,_rulesIvertices) = rules_ _rulesOrulenumber in ( _lhsOdepgraph,_lhsOrulenumber))) ) -- Productions ------------------------------------------------- {- visit 0: chained attribute: rulenumber : Int synthesized attribute: depgraph : [ProdDependencyGraph] alternatives: alternative Cons: child hd : Production child tl : Productions alternative Nil: -} -- 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 (Int -> ( ([ProdDependencyGraph]),Int)) data Inh_Productions = Inh_Productions {rulenumber_Inh_Productions :: Int} data Syn_Productions = Syn_Productions {depgraph_Syn_Productions :: ([ProdDependencyGraph]),rulenumber_Syn_Productions :: Int} wrap_Productions :: T_Productions -> Inh_Productions -> Syn_Productions wrap_Productions (T_Productions sem ) (Inh_Productions _lhsIrulenumber ) = (let ( _lhsOdepgraph,_lhsOrulenumber) = sem _lhsIrulenumber in (Syn_Productions _lhsOdepgraph _lhsOrulenumber )) sem_Productions_Cons :: T_Production -> T_Productions -> T_Productions sem_Productions_Cons (T_Production hd_ ) (T_Productions tl_ ) = (T_Productions (\ _lhsIrulenumber -> (let _lhsOdepgraph :: ([ProdDependencyGraph]) _lhsOrulenumber :: Int _hdOrulenumber :: Int _tlOrulenumber :: Int _hdIdepgraph :: ProdDependencyGraph _hdIrulenumber :: Int _tlIdepgraph :: ([ProdDependencyGraph]) _tlIrulenumber :: Int -- use rule "KWOrder.ag"(line 122, column 33) _lhsOdepgraph = ({-# LINE 122 "KWOrder.ag" #-} _hdIdepgraph : _tlIdepgraph {-# LINE 1161 "KWOrder.hs" #-} ) -- copy rule (up) _lhsOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _tlIrulenumber {-# LINE 1167 "KWOrder.hs" #-} ) -- copy rule (down) _hdOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _lhsIrulenumber {-# LINE 1173 "KWOrder.hs" #-} ) -- copy rule (chain) _tlOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _hdIrulenumber {-# LINE 1179 "KWOrder.hs" #-} ) ( _hdIdepgraph,_hdIrulenumber) = hd_ _hdOrulenumber ( _tlIdepgraph,_tlIrulenumber) = tl_ _tlOrulenumber in ( _lhsOdepgraph,_lhsOrulenumber))) ) sem_Productions_Nil :: T_Productions sem_Productions_Nil = (T_Productions (\ _lhsIrulenumber -> (let _lhsOdepgraph :: ([ProdDependencyGraph]) _lhsOrulenumber :: Int -- use rule "KWOrder.ag"(line 122, column 33) _lhsOdepgraph = ({-# LINE 122 "KWOrder.ag" #-} [] {-# LINE 1195 "KWOrder.hs" #-} ) -- copy rule (chain) _lhsOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _lhsIrulenumber {-# LINE 1201 "KWOrder.hs" #-} ) in ( _lhsOdepgraph,_lhsOrulenumber))) ) -- Rule -------------------------------------------------------- {- visit 0: chained attribute: rulenumber : Int synthesized attributes: edges : Set.Set Edge vertices : Set.Set Vertex alternatives: alternative Rule: child mbName : {Maybe Identifier} child pattern : Pattern child rhs : Expression child owrt : {Bool} child origin : {String} child explicit : {Bool} visit 0: local rulename : _ local vertex : _ local edgesout : _ local edgesin : _ -} -- cata sem_Rule :: Rule -> T_Rule sem_Rule (Rule _mbName _pattern _rhs _owrt _origin _explicit ) = (sem_Rule_Rule _mbName (sem_Pattern _pattern ) (sem_Expression _rhs ) _owrt _origin _explicit ) -- semantic domain newtype T_Rule = T_Rule (Int -> ( (Set.Set Edge),Int,(Set.Set Vertex))) data Inh_Rule = Inh_Rule {rulenumber_Inh_Rule :: Int} data Syn_Rule = Syn_Rule {edges_Syn_Rule :: (Set.Set Edge),rulenumber_Syn_Rule :: Int,vertices_Syn_Rule :: (Set.Set Vertex)} wrap_Rule :: T_Rule -> Inh_Rule -> Syn_Rule wrap_Rule (T_Rule sem ) (Inh_Rule _lhsIrulenumber ) = (let ( _lhsOedges,_lhsOrulenumber,_lhsOvertices) = sem _lhsIrulenumber in (Syn_Rule _lhsOedges _lhsOrulenumber _lhsOvertices )) sem_Rule_Rule :: (Maybe Identifier) -> T_Pattern -> T_Expression -> Bool -> String -> Bool -> T_Rule sem_Rule_Rule mbName_ (T_Pattern pattern_ ) (T_Expression rhs_ ) owrt_ origin_ explicit_ = (T_Rule (\ _lhsIrulenumber -> (let _lhsOrulenumber :: Int _lhsOvertices :: (Set.Set Vertex) _lhsOedges :: (Set.Set Edge) _patternIcopy :: Pattern _patternIvertices :: (Set.Set Vertex) _rhsIvertices :: (Set.Set Vertex) -- "KWOrder.ag"(line 42, column 11) _lhsOrulenumber = ({-# LINE 42 "KWOrder.ag" #-} _lhsIrulenumber + 1 {-# LINE 1261 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 43, column 11) _rulename = ({-# LINE 43 "KWOrder.ag" #-} maybe (identifier $ "rule" ++ show _lhsIrulenumber) id mbName_ {-# LINE 1267 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 85, column 11) _vertex = ({-# LINE 85 "KWOrder.ag" #-} VRule _rulename {-# LINE 1273 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 86, column 11) _lhsOvertices = ({-# LINE 86 "KWOrder.ag" #-} Set.insert _vertex $ _patternIvertices `Set.union` _rhsIvertices {-# LINE 1279 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 98, column 11) _edgesout = ({-# LINE 98 "KWOrder.ag" #-} map ((,) _vertex ) (Set.toList _rhsIvertices) {-# LINE 1285 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 99, column 11) _edgesin = ({-# LINE 99 "KWOrder.ag" #-} map (flip (,) _vertex ) (Set.toList _patternIvertices) {-# LINE 1291 "KWOrder.hs" #-} ) -- "KWOrder.ag"(line 100, column 11) _lhsOedges = ({-# LINE 100 "KWOrder.ag" #-} Set.fromList $ _edgesout ++ _edgesin {-# LINE 1297 "KWOrder.hs" #-} ) ( _patternIcopy,_patternIvertices) = pattern_ ( _rhsIvertices) = rhs_ in ( _lhsOedges,_lhsOrulenumber,_lhsOvertices))) ) -- Rules ------------------------------------------------------- {- visit 0: chained attribute: rulenumber : Int synthesized attributes: edges : Set.Set Edge vertices : Set.Set Vertex alternatives: alternative Cons: child hd : Rule child tl : Rules alternative Nil: -} -- 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 (Int -> ( (Set.Set Edge),Int,(Set.Set Vertex))) data Inh_Rules = Inh_Rules {rulenumber_Inh_Rules :: Int} data Syn_Rules = Syn_Rules {edges_Syn_Rules :: (Set.Set Edge),rulenumber_Syn_Rules :: Int,vertices_Syn_Rules :: (Set.Set Vertex)} wrap_Rules :: T_Rules -> Inh_Rules -> Syn_Rules wrap_Rules (T_Rules sem ) (Inh_Rules _lhsIrulenumber ) = (let ( _lhsOedges,_lhsOrulenumber,_lhsOvertices) = sem _lhsIrulenumber in (Syn_Rules _lhsOedges _lhsOrulenumber _lhsOvertices )) sem_Rules_Cons :: T_Rule -> T_Rules -> T_Rules sem_Rules_Cons (T_Rule hd_ ) (T_Rules tl_ ) = (T_Rules (\ _lhsIrulenumber -> (let _lhsOedges :: (Set.Set Edge) _lhsOvertices :: (Set.Set Vertex) _lhsOrulenumber :: Int _hdOrulenumber :: Int _tlOrulenumber :: Int _hdIedges :: (Set.Set Edge) _hdIrulenumber :: Int _hdIvertices :: (Set.Set Vertex) _tlIedges :: (Set.Set Edge) _tlIrulenumber :: Int _tlIvertices :: (Set.Set Vertex) -- use rule "KWOrder.ag"(line 94, column 33) _lhsOedges = ({-# LINE 94 "KWOrder.ag" #-} _hdIedges `Set.union` _tlIedges {-# LINE 1354 "KWOrder.hs" #-} ) -- use rule "KWOrder.ag"(line 52, column 36) _lhsOvertices = ({-# LINE 52 "KWOrder.ag" #-} _hdIvertices `Set.union` _tlIvertices {-# LINE 1360 "KWOrder.hs" #-} ) -- copy rule (up) _lhsOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _tlIrulenumber {-# LINE 1366 "KWOrder.hs" #-} ) -- copy rule (down) _hdOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _lhsIrulenumber {-# LINE 1372 "KWOrder.hs" #-} ) -- copy rule (chain) _tlOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _hdIrulenumber {-# LINE 1378 "KWOrder.hs" #-} ) ( _hdIedges,_hdIrulenumber,_hdIvertices) = hd_ _hdOrulenumber ( _tlIedges,_tlIrulenumber,_tlIvertices) = tl_ _tlOrulenumber in ( _lhsOedges,_lhsOrulenumber,_lhsOvertices))) ) sem_Rules_Nil :: T_Rules sem_Rules_Nil = (T_Rules (\ _lhsIrulenumber -> (let _lhsOedges :: (Set.Set Edge) _lhsOvertices :: (Set.Set Vertex) _lhsOrulenumber :: Int -- use rule "KWOrder.ag"(line 94, column 33) _lhsOedges = ({-# LINE 94 "KWOrder.ag" #-} Set.empty {-# LINE 1395 "KWOrder.hs" #-} ) -- use rule "KWOrder.ag"(line 52, column 36) _lhsOvertices = ({-# LINE 52 "KWOrder.ag" #-} Set.empty {-# LINE 1401 "KWOrder.hs" #-} ) -- copy rule (chain) _lhsOrulenumber = ({-# LINE 36 "KWOrder.ag" #-} _lhsIrulenumber {-# LINE 1407 "KWOrder.hs" #-} ) in ( _lhsOedges,_lhsOrulenumber,_lhsOvertices))) ) -- TypeSig ----------------------------------------------------- {- alternatives: alternative TypeSig: child name : {Identifier} child tp : {Type} -} -- cata sem_TypeSig :: TypeSig -> T_TypeSig sem_TypeSig (TypeSig _name _tp ) = (sem_TypeSig_TypeSig _name _tp ) -- semantic domain newtype T_TypeSig = T_TypeSig (( )) data Inh_TypeSig = Inh_TypeSig {} data Syn_TypeSig = Syn_TypeSig {} wrap_TypeSig :: T_TypeSig -> Inh_TypeSig -> Syn_TypeSig wrap_TypeSig (T_TypeSig sem ) (Inh_TypeSig ) = (let ( ) = sem in (Syn_TypeSig )) sem_TypeSig_TypeSig :: Identifier -> Type -> T_TypeSig sem_TypeSig_TypeSig name_ tp_ = (T_TypeSig (let in ( )) ) -- TypeSigs ---------------------------------------------------- {- alternatives: alternative Cons: child hd : TypeSig child tl : TypeSigs alternative Nil: -} -- 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 (( )) data Inh_TypeSigs = Inh_TypeSigs {} data Syn_TypeSigs = Syn_TypeSigs {} wrap_TypeSigs :: T_TypeSigs -> Inh_TypeSigs -> Syn_TypeSigs wrap_TypeSigs (T_TypeSigs sem ) (Inh_TypeSigs ) = (let ( ) = sem in (Syn_TypeSigs )) sem_TypeSigs_Cons :: T_TypeSig -> T_TypeSigs -> T_TypeSigs sem_TypeSigs_Cons (T_TypeSig hd_ ) (T_TypeSigs tl_ ) = (T_TypeSigs (let in ( )) ) sem_TypeSigs_Nil :: T_TypeSigs sem_TypeSigs_Nil = (T_TypeSigs (let in ( )) )