{-# LANGUAGE Rank2Types, GADTs #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE ScopedTypeVariables #-}
module InterfacesRules where
{-# LINE 2 "src-ag/Interfaces.ag" #-}
import CommonTypes
import SequentialTypes
{-# LINE 11 "src-generated/InterfacesRules.hs" #-}
{-# LINE 10 "src-ag/InterfacesRules.lag" #-}
import Interfaces
import CodeSyntax
import GrammarInfo
import qualified Data.Sequence as Seq
import Data.Sequence(Seq)
import qualified Data.Map as Map
import Data.Map(Map)
import Data.Tree(Tree(Node), Forest)
import Data.Graph(Graph, dfs, edges, buildG, transposeG)
import Data.Maybe (fromJust)
import Data.List (partition,transpose,(\\),nub,findIndex)
import Data.Array ((!),inRange,bounds,assocs)
import Data.Foldable(toList)
{-# LINE 29 "src-generated/InterfacesRules.hs" #-}
import Control.Monad.Identity (Identity)
import qualified Control.Monad.Identity
{-# LINE 53 "src-ag/InterfacesRules.lag" #-}
type VisitSS = [Vertex]
{-# LINE 35 "src-generated/InterfacesRules.hs" #-}
{-# LINE 88 "src-ag/InterfacesRules.lag" #-}
gather :: Info -> [Vertex] -> [[Vertex]]
gather info = eqClasses comp
where comp a b = isEqualField (ruleTable info ! a) (ruleTable info ! b)
{-# LINE 42 "src-generated/InterfacesRules.hs" #-}
{-# LINE 129 "src-ag/InterfacesRules.lag" #-}
cv :: (Vertex -> CRule) -> Int -> Vertex -> ([Vertex],[Vertex]) -> (Vertex,ChildVisit)
cv look n v (inh,syn) = let fld = getField (look (head syn))
rnt = fromJust (getRhsNt (look (head syn)))
d = ChildVisit fld rnt n inh syn
in (v,d)
{-# LINE 53 "src-generated/InterfacesRules.hs" #-}
{-# LINE 152 "src-ag/InterfacesRules.lag" #-}
ed :: Vertex -> ([Vertex], [Vertex]) -> [(Vertex, Vertex)]
ed v (inh,syn) = map (\i -> (i,v)) inh ++ map (\s -> (v,s)) syn
{-# LINE 59 "src-generated/InterfacesRules.hs" #-}
{-# LINE 240 "src-ag/InterfacesRules.lag" #-}
postorder :: Tree a -> [a]
postorder (Node a ts) = postorderF ts ++ [a]
postorderF :: Forest a -> [a]
postorderF = concatMap postorder
postOrd :: Graph -> [Vertex] -> [Vertex]
postOrd g = postorderF . dfs g
topSort' :: Graph -> [Vertex] -> [Vertex]
topSort' g = postOrd g
{-# LINE 71 "src-generated/InterfacesRules.hs" #-}
{-# LINE 323 "src-ag/InterfacesRules.lag" #-}
type IntraVisit = [Vertex]
{-# LINE 76 "src-generated/InterfacesRules.hs" #-}
{-# LINE 345 "src-ag/InterfacesRules.lag" #-}
swap :: (a,b) -> (b,a)
swap (a,b) = (b,a)
{-# LINE 82 "src-generated/InterfacesRules.hs" #-}
{-# LINE 420 "src-ag/InterfacesRules.lag" #-}
ccv :: Identifier -> NontermIdent -> Int -> CInterfaceMap -> CRule
ccv name nt n table
= CChildVisit name nt n inh syn lst
where CInterface segs = Map.findWithDefault (error ("InterfacesRules::ccv::interfaces not in table for nt: " ++ show nt)) nt table
(seg:remain) = drop n segs
CSegment inh syn = seg
lst = null remain
{-# LINE 93 "src-generated/InterfacesRules.hs" #-}
data Inh_IRoot = Inh_IRoot { Inh_IRoot -> [Edge]
dpr_Inh_IRoot :: !([Edge]), Inh_IRoot -> Info
info_Inh_IRoot :: !(Info), Inh_IRoot -> Graph
tdp_Inh_IRoot :: !(Graph) }
data Syn_IRoot = Syn_IRoot { Syn_IRoot -> [Edge]
edp_Syn_IRoot :: !([Edge]), Syn_IRoot -> CInterfaceMap
inters_Syn_IRoot :: !(CInterfaceMap), Syn_IRoot -> CVisitsMap
visits_Syn_IRoot :: !(CVisitsMap) }
{-# INLINABLE wrap_IRoot #-}
wrap_IRoot :: T_IRoot -> Inh_IRoot -> (Syn_IRoot )
wrap_IRoot :: T_IRoot -> Inh_IRoot -> Syn_IRoot
wrap_IRoot !(T_IRoot Identity T_IRoot_s2
act) !(Inh_IRoot [Edge]
_lhsIdpr Info
_lhsIinfo Graph
_lhsItdp) =
Identity Syn_IRoot -> Syn_IRoot
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_IRoot_s2
sem <- Identity T_IRoot_s2
act
let arg1 :: T_IRoot_vIn1
arg1 = [Edge] -> Info -> Graph -> T_IRoot_vIn1
T_IRoot_vIn1 [Edge]
_lhsIdpr Info
_lhsIinfo Graph
_lhsItdp
!(T_IRoot_vOut1 [Edge]
_lhsOedp CInterfaceMap
_lhsOinters CVisitsMap
_lhsOvisits) <- T_IRoot_vOut1 -> Identity T_IRoot_vOut1
forall (m :: * -> *) a. Monad m => a -> m a
return (T_IRoot_s2 -> T_IRoot_v1
inv_IRoot_s2 T_IRoot_s2
sem T_IRoot_vIn1
arg1)
Syn_IRoot -> Identity Syn_IRoot
forall (m :: * -> *) a. Monad m => a -> m a
return ([Edge] -> CInterfaceMap -> CVisitsMap -> Syn_IRoot
Syn_IRoot [Edge]
_lhsOedp CInterfaceMap
_lhsOinters CVisitsMap
_lhsOvisits)
)
{-# INLINE sem_IRoot #-}
sem_IRoot :: IRoot -> T_IRoot
sem_IRoot :: IRoot -> T_IRoot
sem_IRoot ( IRoot Interfaces
inters_ ) = T_Interfaces -> T_IRoot
sem_IRoot_IRoot ( Interfaces -> T_Interfaces
sem_Interfaces Interfaces
inters_ )
newtype T_IRoot = T_IRoot {
T_IRoot -> Identity T_IRoot_s2
attach_T_IRoot :: Identity (T_IRoot_s2 )
}
newtype T_IRoot_s2 = C_IRoot_s2 {
T_IRoot_s2 -> T_IRoot_v1
inv_IRoot_s2 :: (T_IRoot_v1 )
}
data T_IRoot_s3 = C_IRoot_s3
type T_IRoot_v1 = (T_IRoot_vIn1 ) -> (T_IRoot_vOut1 )
data T_IRoot_vIn1 = T_IRoot_vIn1 ([Edge]) (Info) (Graph)
data T_IRoot_vOut1 = T_IRoot_vOut1 ([Edge]) (CInterfaceMap) (CVisitsMap)
{-# NOINLINE sem_IRoot_IRoot #-}
sem_IRoot_IRoot :: T_Interfaces -> T_IRoot
sem_IRoot_IRoot :: T_Interfaces -> T_IRoot
sem_IRoot_IRoot T_Interfaces
arg_inters_ = Identity T_IRoot_s2 -> T_IRoot
T_IRoot (T_IRoot_s2 -> Identity T_IRoot_s2
forall (m :: * -> *) a. Monad m => a -> m a
return T_IRoot_s2
st2) where
{-# NOINLINE st2 #-}
!st2 :: T_IRoot_s2
st2 = let
v1 :: T_IRoot_v1
v1 :: T_IRoot_v1
v1 = \ !(T_IRoot_vIn1 [Edge]
_lhsIdpr Info
_lhsIinfo Graph
_lhsItdp) -> ( let
_intersX8 :: T_Interfaces_s8
_intersX8 = Identity T_Interfaces_s8 -> T_Interfaces_s8
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Interfaces -> Identity T_Interfaces_s8
attach_T_Interfaces (T_Interfaces
arg_inters_))
(T_Interfaces_vOut7 Seq (Vertex, ChildVisit)
_intersIdescr Seq Edge
_intersIedp [Vertex]
_intersIfirstvisitvertices CInterfaceMap
_intersIinters Seq Edge
_intersInewedges Vertex
_intersIv CVisitsMap
_intersIvisits) = T_Interfaces_s8 -> T_Interfaces_v7
inv_Interfaces_s8 T_Interfaces_s8
_intersX8 (CInterfaceMap
-> Graph
-> Info
-> [Vertex]
-> Vertex
-> Map Vertex ChildVisit
-> Graph
-> T_Interfaces_vIn7
T_Interfaces_vIn7 CInterfaceMap
_intersOallInters Graph
_intersOddp Info
_intersOinfo [Vertex]
_intersOprev Vertex
_intersOv Map Vertex ChildVisit
_intersOvisitDescr Graph
_intersOvssGraph)
_newedges :: [Edge]
_newedges = Seq Edge -> [Edge]
rule0 Seq Edge
_intersInewedges
_visitssGraph :: Graph
_visitssGraph = Vertex -> Graph -> [Edge] -> Graph
rule1 Vertex
_intersIv Graph
_lhsItdp [Edge]
_newedges
_intersOv :: Vertex
_intersOv = Graph -> Vertex
rule2 Graph
_lhsItdp
_intersOvisitDescr :: Map Vertex ChildVisit
_intersOvisitDescr = [(Vertex, ChildVisit)] -> Map Vertex ChildVisit
forall a. [(Vertex, a)] -> Map Vertex a
rule3 [(Vertex, ChildVisit)]
_descr
_descr :: [(Vertex, ChildVisit)]
_descr = Seq (Vertex, ChildVisit) -> [(Vertex, ChildVisit)]
rule4 Seq (Vertex, ChildVisit)
_intersIdescr
_intersOvssGraph :: Graph
_intersOvssGraph = Graph -> Graph
forall a. a -> a
rule5 Graph
_visitssGraph
_intersOprev :: [Vertex]
_intersOprev = [Vertex] -> Info -> [Vertex]
rule6 [Vertex]
_intersIfirstvisitvertices Info
_lhsIinfo
_intersOddp :: Graph
_intersOddp = Vertex -> [Edge] -> [Edge] -> Graph
rule7 Vertex
_intersIv [Edge]
_lhsIdpr [Edge]
_newedges
_intersOallInters :: CInterfaceMap
_intersOallInters = CInterfaceMap -> CInterfaceMap
rule8 CInterfaceMap
_intersIinters
_lhsOedp :: [Edge]
_lhsOedp :: [Edge]
_lhsOedp = Seq Edge -> [Edge]
rule9 Seq Edge
_intersIedp
_lhsOinters :: CInterfaceMap
_lhsOinters :: CInterfaceMap
_lhsOinters = CInterfaceMap -> CInterfaceMap
rule10 CInterfaceMap
_intersIinters
_lhsOvisits :: CVisitsMap
_lhsOvisits :: CVisitsMap
_lhsOvisits = CVisitsMap -> CVisitsMap
rule11 CVisitsMap
_intersIvisits
_intersOinfo :: Info
_intersOinfo = Info -> Info
rule12 Info
_lhsIinfo
!__result_ :: T_IRoot_vOut1
__result_ = [Edge] -> CInterfaceMap -> CVisitsMap -> T_IRoot_vOut1
T_IRoot_vOut1 [Edge]
_lhsOedp CInterfaceMap
_lhsOinters CVisitsMap
_lhsOvisits
in T_IRoot_vOut1
__result_ )
in T_IRoot_v1 -> T_IRoot_s2
C_IRoot_s2 T_IRoot_v1
v1
{-# INLINE rule0 #-}
{-# LINE 66 "src-ag/InterfacesRules.lag" #-}
rule0 = \ ((_intersInewedges) :: Seq Edge ) ->
{-# LINE 66 "src-ag/InterfacesRules.lag" #-}
toList _intersInewedges
{-# LINE 157 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule1 #-}
{-# LINE 67 "src-ag/InterfacesRules.lag" #-}
rule1 = \ ((_intersIv) :: Vertex) ((_lhsItdp) :: Graph) _newedges ->
{-# LINE 67 "src-ag/InterfacesRules.lag" #-}
let graph = buildG (0,_intersIv-1) es
es = _newedges ++ edges _lhsItdp
in transposeG graph
{-# LINE 165 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule2 #-}
{-# LINE 80 "src-ag/InterfacesRules.lag" #-}
rule2 = \ ((_lhsItdp) :: Graph) ->
{-# LINE 80 "src-ag/InterfacesRules.lag" #-}
snd (bounds _lhsItdp) + 1
{-# LINE 171 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule3 #-}
{-# LINE 122 "src-ag/InterfacesRules.lag" #-}
rule3 = \ _descr ->
{-# LINE 122 "src-ag/InterfacesRules.lag" #-}
Map.fromList _descr
{-# LINE 177 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule4 #-}
{-# LINE 142 "src-ag/InterfacesRules.lag" #-}
rule4 = \ ((_intersIdescr) :: Seq (Vertex,ChildVisit)) ->
{-# LINE 142 "src-ag/InterfacesRules.lag" #-}
toList _intersIdescr
{-# LINE 183 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule5 #-}
{-# LINE 214 "src-ag/InterfacesRules.lag" #-}
rule5 = \ _visitssGraph ->
{-# LINE 214 "src-ag/InterfacesRules.lag" #-}
_visitssGraph
{-# LINE 189 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule6 #-}
{-# LINE 260 "src-ag/InterfacesRules.lag" #-}
rule6 = \ ((_intersIfirstvisitvertices) :: [Vertex]) ((_lhsIinfo) :: Info) ->
{-# LINE 260 "src-ag/InterfacesRules.lag" #-}
let terminals = [ v | (v,cr) <- assocs (ruleTable _lhsIinfo), not (getHasCode cr), isLocal cr ]
in _intersIfirstvisitvertices ++ terminals
{-# LINE 196 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule7 #-}
{-# LINE 343 "src-ag/InterfacesRules.lag" #-}
rule7 = \ ((_intersIv) :: Vertex) ((_lhsIdpr) :: [Edge]) _newedges ->
{-# LINE 343 "src-ag/InterfacesRules.lag" #-}
buildG (0,_intersIv-1) (map swap (_lhsIdpr ++ _newedges))
{-# LINE 202 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule8 #-}
{-# LINE 381 "src-ag/InterfacesRules.lag" #-}
rule8 = \ ((_intersIinters) :: CInterfaceMap) ->
{-# LINE 381 "src-ag/InterfacesRules.lag" #-}
_intersIinters
{-# LINE 208 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule9 #-}
{-# LINE 443 "src-ag/InterfacesRules.lag" #-}
rule9 = \ ((_intersIedp) :: Seq Edge) ->
{-# LINE 443 "src-ag/InterfacesRules.lag" #-}
toList _intersIedp
{-# LINE 214 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule10 #-}
rule10 = \ ((_intersIinters) :: CInterfaceMap) ->
_intersIinters
{-# INLINE rule11 #-}
rule11 = \ ((_intersIvisits) :: CVisitsMap) ->
_intersIvisits
{-# INLINE rule12 #-}
rule12 = \ ((_lhsIinfo) :: Info) ->
_lhsIinfo
data Inh_Interface = Inh_Interface { Inh_Interface -> CInterfaceMap
allInters_Inh_Interface :: !(CInterfaceMap), Inh_Interface -> Graph
ddp_Inh_Interface :: !(Graph), Inh_Interface -> Info
info_Inh_Interface :: !(Info), Inh_Interface -> [Vertex]
prev_Inh_Interface :: !([Vertex]), Inh_Interface -> Vertex
v_Inh_Interface :: !(Vertex), Inh_Interface -> Map Vertex ChildVisit
visitDescr_Inh_Interface :: !(Map Vertex ChildVisit), Inh_Interface -> Graph
vssGraph_Inh_Interface :: !(Graph) }
data Syn_Interface = Syn_Interface { Syn_Interface -> Seq (Vertex, ChildVisit)
descr_Syn_Interface :: !(Seq (Vertex,ChildVisit)), Syn_Interface -> Seq Edge
edp_Syn_Interface :: !(Seq Edge), Syn_Interface -> [Vertex]
firstvisitvertices_Syn_Interface :: !([Vertex]), Syn_Interface -> CInterface
inter_Syn_Interface :: !(CInterface), Syn_Interface -> Seq Edge
newedges_Syn_Interface :: !(Seq Edge ), Syn_Interface -> Identifier
nt_Syn_Interface :: !(NontermIdent), Syn_Interface -> Vertex
v_Syn_Interface :: !(Vertex), Syn_Interface -> Map Identifier CVisits
visits_Syn_Interface :: !(Map ConstructorIdent CVisits) }
{-# INLINABLE wrap_Interface #-}
wrap_Interface :: T_Interface -> Inh_Interface -> (Syn_Interface )
wrap_Interface :: T_Interface -> Inh_Interface -> Syn_Interface
wrap_Interface !(T_Interface Identity T_Interface_s5
act) !(Inh_Interface CInterfaceMap
_lhsIallInters Graph
_lhsIddp Info
_lhsIinfo [Vertex]
_lhsIprev Vertex
_lhsIv Map Vertex ChildVisit
_lhsIvisitDescr Graph
_lhsIvssGraph) =
Identity Syn_Interface -> Syn_Interface
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_Interface_s5
sem <- Identity T_Interface_s5
act
let arg4 :: T_Interface_vIn4
arg4 = CInterfaceMap
-> Graph
-> Info
-> [Vertex]
-> Vertex
-> Map Vertex ChildVisit
-> Graph
-> T_Interface_vIn4
T_Interface_vIn4 CInterfaceMap
_lhsIallInters Graph
_lhsIddp Info
_lhsIinfo [Vertex]
_lhsIprev Vertex
_lhsIv Map Vertex ChildVisit
_lhsIvisitDescr Graph
_lhsIvssGraph
!(T_Interface_vOut4 Seq (Vertex, ChildVisit)
_lhsOdescr Seq Edge
_lhsOedp [Vertex]
_lhsOfirstvisitvertices CInterface
_lhsOinter Seq Edge
_lhsOnewedges Identifier
_lhsOnt Vertex
_lhsOv Map Identifier CVisits
_lhsOvisits) <- T_Interface_vOut4 -> Identity T_Interface_vOut4
forall (m :: * -> *) a. Monad m => a -> m a
return (T_Interface_s5 -> T_Interface_v4
inv_Interface_s5 T_Interface_s5
sem T_Interface_vIn4
arg4)
Syn_Interface -> Identity Syn_Interface
forall (m :: * -> *) a. Monad m => a -> m a
return (Seq (Vertex, ChildVisit)
-> Seq Edge
-> [Vertex]
-> CInterface
-> Seq Edge
-> Identifier
-> Vertex
-> Map Identifier CVisits
-> Syn_Interface
Syn_Interface Seq (Vertex, ChildVisit)
_lhsOdescr Seq Edge
_lhsOedp [Vertex]
_lhsOfirstvisitvertices CInterface
_lhsOinter Seq Edge
_lhsOnewedges Identifier
_lhsOnt Vertex
_lhsOv Map Identifier CVisits
_lhsOvisits)
)
{-# INLINE sem_Interface #-}
sem_Interface :: Interface -> T_Interface
sem_Interface :: Interface -> T_Interface
sem_Interface ( Interface !Identifier
nt_ ![Identifier]
cons_ Segments
seg_ ) = Identifier -> [Identifier] -> T_Segments -> T_Interface
sem_Interface_Interface Identifier
nt_ [Identifier]
cons_ ( Segments -> T_Segments
sem_Segments Segments
seg_ )
newtype T_Interface = T_Interface {
T_Interface -> Identity T_Interface_s5
attach_T_Interface :: Identity (T_Interface_s5 )
}
newtype T_Interface_s5 = C_Interface_s5 {
T_Interface_s5 -> T_Interface_v4
inv_Interface_s5 :: (T_Interface_v4 )
}
data T_Interface_s6 = C_Interface_s6
type T_Interface_v4 = (T_Interface_vIn4 ) -> (T_Interface_vOut4 )
data T_Interface_vIn4 = T_Interface_vIn4 (CInterfaceMap) (Graph) (Info) ([Vertex]) (Vertex) (Map Vertex ChildVisit) (Graph)
data T_Interface_vOut4 = T_Interface_vOut4 (Seq (Vertex,ChildVisit)) (Seq Edge) ([Vertex]) (CInterface) (Seq Edge ) (NontermIdent) (Vertex) (Map ConstructorIdent CVisits)
{-# NOINLINE sem_Interface_Interface #-}
sem_Interface_Interface :: (NontermIdent) -> ([ConstructorIdent]) -> T_Segments -> T_Interface
sem_Interface_Interface :: Identifier -> [Identifier] -> T_Segments -> T_Interface
sem_Interface_Interface !Identifier
arg_nt_ ![Identifier]
arg_cons_ T_Segments
arg_seg_ = Identity T_Interface_s5 -> T_Interface
T_Interface (T_Interface_s5 -> Identity T_Interface_s5
forall (m :: * -> *) a. Monad m => a -> m a
return T_Interface_s5
st5) where
{-# NOINLINE st5 #-}
!st5 :: T_Interface_s5
st5 = let
v4 :: T_Interface_v4
v4 :: T_Interface_v4
v4 = \ !(T_Interface_vIn4 CInterfaceMap
_lhsIallInters Graph
_lhsIddp Info
_lhsIinfo [Vertex]
_lhsIprev Vertex
_lhsIv Map Vertex ChildVisit
_lhsIvisitDescr Graph
_lhsIvssGraph) -> ( let
_segX14 :: T_Segments_s14
_segX14 = Identity T_Segments_s14 -> T_Segments_s14
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Segments -> Identity T_Segments_s14
attach_T_Segments (T_Segments
arg_seg_))
(T_Segments_vOut13 [CVisits]
_segIcvisits Seq (Vertex, ChildVisit)
_segIdescr Seq Edge
_segIedp [Vertex]
_segIfirstInh [([Vertex], [Vertex])]
_segIgroups [[Vertex]]
_segIhdIntravisits Seq Edge
_segInewedges [Vertex]
_segInewvertices [Vertex]
_segIprev CSegments
_segIsegs Vertex
_segIv) = T_Segments_s14 -> T_Segments_v13
inv_Segments_s14 T_Segments_s14
_segX14 (CInterfaceMap
-> [Identifier]
-> Graph
-> [Vertex]
-> Info
-> Bool
-> Vertex
-> [Vertex]
-> Vertex
-> Map Vertex ChildVisit
-> Graph
-> T_Segments_vIn13
T_Segments_vIn13 CInterfaceMap
_segOallInters [Identifier]
_segOcons Graph
_segOddp [Vertex]
_segOfromLhs Info
_segOinfo Bool
_segOisFirst Vertex
_segOn [Vertex]
_segOprev Vertex
_segOv Map Vertex ChildVisit
_segOvisitDescr Graph
_segOvssGraph)
_segOv :: Vertex
_segOv = Vertex -> Vertex
rule13 Vertex
_lhsIv
_v :: Vertex
_v = [Vertex] -> Vertex -> Vertex
rule14 [Vertex]
_segInewvertices Vertex
_segIv
_lhsOv :: Vertex
_lhsOv :: Vertex
_lhsOv = Vertex -> Vertex
forall a. a -> a
rule15 Vertex
_v
_firstvisitvertices :: [Vertex]
_firstvisitvertices = Vertex -> Vertex -> [Vertex]
rule16 Vertex
_segIv Vertex
_v
_newedges :: [Edge]
_newedges = [Vertex] -> [Vertex] -> [Edge]
forall a. [a] -> [Vertex] -> [(a, Vertex)]
rule17 [Vertex]
_firstvisitvertices [Vertex]
_segInewvertices
_lhsOnewedges :: Seq Edge
_lhsOnewedges :: Seq Edge
_lhsOnewedges = [Edge] -> Seq Edge -> Seq Edge
rule18 [Edge]
_newedges Seq Edge
_segInewedges
_look :: Vertex -> CRule
_look :: Vertex -> CRule
_look = Info -> Vertex -> CRule
rule19 Info
_lhsIinfo
_descr :: [(Vertex, ChildVisit)]
_descr = [Vertex]
-> (Vertex -> CRule)
-> [([Vertex], [Vertex])]
-> [(Vertex, ChildVisit)]
rule20 [Vertex]
_firstvisitvertices Vertex -> CRule
_look [([Vertex], [Vertex])]
_segIgroups
_lhsOdescr :: Seq (Vertex,ChildVisit)
_lhsOdescr :: Seq (Vertex, ChildVisit)
_lhsOdescr = [(Vertex, ChildVisit)]
-> Seq (Vertex, ChildVisit) -> Seq (Vertex, ChildVisit)
rule21 [(Vertex, ChildVisit)]
_descr Seq (Vertex, ChildVisit)
_segIdescr
_segOn :: Vertex
_segOn = () -> Vertex
rule22 ()
_segOcons :: [Identifier]
_segOcons = [Identifier] -> [Identifier]
forall a. a -> a
rule23 [Identifier]
arg_cons_
_segOisFirst :: Bool
_segOisFirst = () -> Bool
rule24 ()
_segOfromLhs :: [Vertex]
_segOfromLhs = [Vertex] -> [Vertex]
rule25 [Vertex]
_lhsIprev
_lhsOnt :: NontermIdent
_lhsOnt :: Identifier
_lhsOnt = Identifier -> Identifier
forall a. a -> a
rule26 Identifier
arg_nt_
_lhsOinter :: CInterface
_lhsOinter :: CInterface
_lhsOinter = CSegments -> CInterface
rule27 CSegments
_segIsegs
_lhsOvisits :: Map ConstructorIdent CVisits
_lhsOvisits :: Map Identifier CVisits
_lhsOvisits = [CVisits] -> [Identifier] -> Map Identifier CVisits
rule28 [CVisits]
_segIcvisits [Identifier]
arg_cons_
_lhsOedp :: Seq Edge
_lhsOedp :: Seq Edge
_lhsOedp = Seq Edge -> Seq Edge
rule29 Seq Edge
_segIedp
_lhsOfirstvisitvertices :: [Vertex]
_lhsOfirstvisitvertices :: [Vertex]
_lhsOfirstvisitvertices = [Vertex] -> [Vertex]
forall a. a -> a
rule30 [Vertex]
_firstvisitvertices
_segOallInters :: CInterfaceMap
_segOallInters = CInterfaceMap -> CInterfaceMap
rule31 CInterfaceMap
_lhsIallInters
_segOddp :: Graph
_segOddp = Graph -> Graph
rule32 Graph
_lhsIddp
_segOinfo :: Info
_segOinfo = Info -> Info
rule33 Info
_lhsIinfo
_segOprev :: [Vertex]
_segOprev = [Vertex] -> [Vertex]
rule34 [Vertex]
_lhsIprev
_segOvisitDescr :: Map Vertex ChildVisit
_segOvisitDescr = Map Vertex ChildVisit -> Map Vertex ChildVisit
rule35 Map Vertex ChildVisit
_lhsIvisitDescr
_segOvssGraph :: Graph
_segOvssGraph = Graph -> Graph
rule36 Graph
_lhsIvssGraph
!__result_ :: T_Interface_vOut4
__result_ = Seq (Vertex, ChildVisit)
-> Seq Edge
-> [Vertex]
-> CInterface
-> Seq Edge
-> Identifier
-> Vertex
-> Map Identifier CVisits
-> T_Interface_vOut4
T_Interface_vOut4 Seq (Vertex, ChildVisit)
_lhsOdescr Seq Edge
_lhsOedp [Vertex]
_lhsOfirstvisitvertices CInterface
_lhsOinter Seq Edge
_lhsOnewedges Identifier
_lhsOnt Vertex
_lhsOv Map Identifier CVisits
_lhsOvisits
in T_Interface_vOut4
__result_ )
in T_Interface_v4 -> T_Interface_s5
C_Interface_s5 T_Interface_v4
v4
{-# INLINE rule13 #-}
{-# LINE 183 "src-ag/InterfacesRules.lag" #-}
rule13 = \ ((_lhsIv) :: Vertex) ->
{-# LINE 183 "src-ag/InterfacesRules.lag" #-}
_lhsIv
{-# LINE 305 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule14 #-}
{-# LINE 184 "src-ag/InterfacesRules.lag" #-}
rule14 = \ ((_segInewvertices) :: [Vertex]) ((_segIv) :: Vertex) ->
{-# LINE 184 "src-ag/InterfacesRules.lag" #-}
_segIv + length _segInewvertices
{-# LINE 311 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule15 #-}
{-# LINE 185 "src-ag/InterfacesRules.lag" #-}
rule15 = \ _v ->
{-# LINE 185 "src-ag/InterfacesRules.lag" #-}
_v
{-# LINE 317 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule16 #-}
{-# LINE 186 "src-ag/InterfacesRules.lag" #-}
rule16 = \ ((_segIv) :: Vertex) _v ->
{-# LINE 186 "src-ag/InterfacesRules.lag" #-}
[_segIv .. _v-1]
{-# LINE 323 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule17 #-}
{-# LINE 187 "src-ag/InterfacesRules.lag" #-}
rule17 = \ _firstvisitvertices ((_segInewvertices) :: [Vertex]) ->
{-# LINE 187 "src-ag/InterfacesRules.lag" #-}
zip _firstvisitvertices _segInewvertices
{-# LINE 329 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule18 #-}
{-# LINE 188 "src-ag/InterfacesRules.lag" #-}
rule18 = \ _newedges ((_segInewedges) :: Seq Edge ) ->
{-# LINE 188 "src-ag/InterfacesRules.lag" #-}
_segInewedges Seq.>< Seq.fromList _newedges
{-# LINE 335 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule19 #-}
{-# LINE 191 "src-ag/InterfacesRules.lag" #-}
rule19 = \ ((_lhsIinfo) :: Info) ->
{-# LINE 191 "src-ag/InterfacesRules.lag" #-}
\a -> ruleTable _lhsIinfo ! a
{-# LINE 341 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule20 #-}
{-# LINE 192 "src-ag/InterfacesRules.lag" #-}
rule20 = \ _firstvisitvertices ((_look) :: Vertex -> CRule) ((_segIgroups) :: [([Vertex],[Vertex])]) ->
{-# LINE 192 "src-ag/InterfacesRules.lag" #-}
zipWith (cv _look (-1)) _firstvisitvertices _segIgroups
{-# LINE 347 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule21 #-}
{-# LINE 193 "src-ag/InterfacesRules.lag" #-}
rule21 = \ _descr ((_segIdescr) :: Seq (Vertex,ChildVisit)) ->
{-# LINE 193 "src-ag/InterfacesRules.lag" #-}
_segIdescr Seq.>< Seq.fromList _descr
{-# LINE 353 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule22 #-}
{-# LINE 201 "src-ag/InterfacesRules.lag" #-}
rule22 = \ (_ :: ()) ->
{-# LINE 201 "src-ag/InterfacesRules.lag" #-}
0
{-# LINE 359 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule23 #-}
{-# LINE 233 "src-ag/InterfacesRules.lag" #-}
rule23 = \ cons_ ->
{-# LINE 233 "src-ag/InterfacesRules.lag" #-}
cons_
{-# LINE 365 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule24 #-}
{-# LINE 314 "src-ag/InterfacesRules.lag" #-}
rule24 = \ (_ :: ()) ->
{-# LINE 314 "src-ag/InterfacesRules.lag" #-}
True
{-# LINE 371 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule25 #-}
{-# LINE 352 "src-ag/InterfacesRules.lag" #-}
rule25 = \ ((_lhsIprev) :: [Vertex]) ->
{-# LINE 352 "src-ag/InterfacesRules.lag" #-}
_lhsIprev
{-# LINE 377 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule26 #-}
{-# LINE 392 "src-ag/InterfacesRules.lag" #-}
rule26 = \ nt_ ->
{-# LINE 392 "src-ag/InterfacesRules.lag" #-}
nt_
{-# LINE 383 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule27 #-}
{-# LINE 396 "src-ag/InterfacesRules.lag" #-}
rule27 = \ ((_segIsegs) :: CSegments) ->
{-# LINE 396 "src-ag/InterfacesRules.lag" #-}
CInterface _segIsegs
{-# LINE 389 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule28 #-}
{-# LINE 397 "src-ag/InterfacesRules.lag" #-}
rule28 = \ ((_segIcvisits) :: [[CVisit]]) cons_ ->
{-# LINE 397 "src-ag/InterfacesRules.lag" #-}
Map.fromList (zip cons_ (transpose _segIcvisits))
{-# LINE 395 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule29 #-}
rule29 = \ ((_segIedp) :: Seq Edge) ->
_segIedp
{-# INLINE rule30 #-}
rule30 = \ _firstvisitvertices ->
_firstvisitvertices
{-# INLINE rule31 #-}
rule31 = \ ((_lhsIallInters) :: CInterfaceMap) ->
_lhsIallInters
{-# INLINE rule32 #-}
rule32 = \ ((_lhsIddp) :: Graph) ->
_lhsIddp
{-# INLINE rule33 #-}
rule33 = \ ((_lhsIinfo) :: Info) ->
_lhsIinfo
{-# INLINE rule34 #-}
rule34 = \ ((_lhsIprev) :: [Vertex]) ->
_lhsIprev
{-# INLINE rule35 #-}
rule35 = \ ((_lhsIvisitDescr) :: Map Vertex ChildVisit) ->
_lhsIvisitDescr
{-# INLINE rule36 #-}
rule36 = \ ((_lhsIvssGraph) :: Graph) ->
_lhsIvssGraph
data Inh_Interfaces = Inh_Interfaces { Inh_Interfaces -> CInterfaceMap
allInters_Inh_Interfaces :: !(CInterfaceMap), Inh_Interfaces -> Graph
ddp_Inh_Interfaces :: !(Graph), Inh_Interfaces -> Info
info_Inh_Interfaces :: !(Info), Inh_Interfaces -> [Vertex]
prev_Inh_Interfaces :: !([Vertex]), Inh_Interfaces -> Vertex
v_Inh_Interfaces :: !(Vertex), Inh_Interfaces -> Map Vertex ChildVisit
visitDescr_Inh_Interfaces :: !(Map Vertex ChildVisit), Inh_Interfaces -> Graph
vssGraph_Inh_Interfaces :: !(Graph) }
data Syn_Interfaces = Syn_Interfaces { Syn_Interfaces -> Seq (Vertex, ChildVisit)
descr_Syn_Interfaces :: !(Seq (Vertex,ChildVisit)), Syn_Interfaces -> Seq Edge
edp_Syn_Interfaces :: !(Seq Edge), Syn_Interfaces -> [Vertex]
firstvisitvertices_Syn_Interfaces :: !([Vertex]), Syn_Interfaces -> CInterfaceMap
inters_Syn_Interfaces :: !(CInterfaceMap), Syn_Interfaces -> Seq Edge
newedges_Syn_Interfaces :: !(Seq Edge ), Syn_Interfaces -> Vertex
v_Syn_Interfaces :: !(Vertex), Syn_Interfaces -> CVisitsMap
visits_Syn_Interfaces :: !(CVisitsMap) }
{-# INLINABLE wrap_Interfaces #-}
wrap_Interfaces :: T_Interfaces -> Inh_Interfaces -> (Syn_Interfaces )
wrap_Interfaces :: T_Interfaces -> Inh_Interfaces -> Syn_Interfaces
wrap_Interfaces !(T_Interfaces Identity T_Interfaces_s8
act) !(Inh_Interfaces CInterfaceMap
_lhsIallInters Graph
_lhsIddp Info
_lhsIinfo [Vertex]
_lhsIprev Vertex
_lhsIv Map Vertex ChildVisit
_lhsIvisitDescr Graph
_lhsIvssGraph) =
Identity Syn_Interfaces -> Syn_Interfaces
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_Interfaces_s8
sem <- Identity T_Interfaces_s8
act
let arg7 :: T_Interfaces_vIn7
arg7 = CInterfaceMap
-> Graph
-> Info
-> [Vertex]
-> Vertex
-> Map Vertex ChildVisit
-> Graph
-> T_Interfaces_vIn7
T_Interfaces_vIn7 CInterfaceMap
_lhsIallInters Graph
_lhsIddp Info
_lhsIinfo [Vertex]
_lhsIprev Vertex
_lhsIv Map Vertex ChildVisit
_lhsIvisitDescr Graph
_lhsIvssGraph
!(T_Interfaces_vOut7 Seq (Vertex, ChildVisit)
_lhsOdescr Seq Edge
_lhsOedp [Vertex]
_lhsOfirstvisitvertices CInterfaceMap
_lhsOinters Seq Edge
_lhsOnewedges Vertex
_lhsOv CVisitsMap
_lhsOvisits) <- T_Interfaces_vOut7 -> Identity T_Interfaces_vOut7
forall (m :: * -> *) a. Monad m => a -> m a
return (T_Interfaces_s8 -> T_Interfaces_v7
inv_Interfaces_s8 T_Interfaces_s8
sem T_Interfaces_vIn7
arg7)
Syn_Interfaces -> Identity Syn_Interfaces
forall (m :: * -> *) a. Monad m => a -> m a
return (Seq (Vertex, ChildVisit)
-> Seq Edge
-> [Vertex]
-> CInterfaceMap
-> Seq Edge
-> Vertex
-> CVisitsMap
-> Syn_Interfaces
Syn_Interfaces Seq (Vertex, ChildVisit)
_lhsOdescr Seq Edge
_lhsOedp [Vertex]
_lhsOfirstvisitvertices CInterfaceMap
_lhsOinters Seq Edge
_lhsOnewedges Vertex
_lhsOv CVisitsMap
_lhsOvisits)
)
{-# NOINLINE sem_Interfaces #-}
sem_Interfaces :: Interfaces -> T_Interfaces
sem_Interfaces :: Interfaces -> T_Interfaces
sem_Interfaces Interfaces
list = (T_Interface -> T_Interfaces -> T_Interfaces)
-> T_Interfaces -> [T_Interface] -> T_Interfaces
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
Prelude.foldr T_Interface -> T_Interfaces -> T_Interfaces
sem_Interfaces_Cons T_Interfaces
sem_Interfaces_Nil ((Interface -> T_Interface) -> Interfaces -> [T_Interface]
forall a b. (a -> b) -> [a] -> [b]
Prelude.map Interface -> T_Interface
sem_Interface Interfaces
list)
newtype T_Interfaces = T_Interfaces {
T_Interfaces -> Identity T_Interfaces_s8
attach_T_Interfaces :: Identity (T_Interfaces_s8 )
}
newtype T_Interfaces_s8 = C_Interfaces_s8 {
T_Interfaces_s8 -> T_Interfaces_v7
inv_Interfaces_s8 :: (T_Interfaces_v7 )
}
data T_Interfaces_s9 = C_Interfaces_s9
type T_Interfaces_v7 = (T_Interfaces_vIn7 ) -> (T_Interfaces_vOut7 )
data T_Interfaces_vIn7 = T_Interfaces_vIn7 (CInterfaceMap) (Graph) (Info) ([Vertex]) (Vertex) (Map Vertex ChildVisit) (Graph)
data T_Interfaces_vOut7 = T_Interfaces_vOut7 (Seq (Vertex,ChildVisit)) (Seq Edge) ([Vertex]) (CInterfaceMap) (Seq Edge ) (Vertex) (CVisitsMap)
{-# NOINLINE sem_Interfaces_Cons #-}
sem_Interfaces_Cons :: T_Interface -> T_Interfaces -> T_Interfaces
sem_Interfaces_Cons :: T_Interface -> T_Interfaces -> T_Interfaces
sem_Interfaces_Cons T_Interface
arg_hd_ T_Interfaces
arg_tl_ = Identity T_Interfaces_s8 -> T_Interfaces
T_Interfaces (T_Interfaces_s8 -> Identity T_Interfaces_s8
forall (m :: * -> *) a. Monad m => a -> m a
return T_Interfaces_s8
st8) where
{-# NOINLINE st8 #-}
!st8 :: T_Interfaces_s8
st8 = let
v7 :: T_Interfaces_v7
v7 :: T_Interfaces_v7
v7 = \ !(T_Interfaces_vIn7 CInterfaceMap
_lhsIallInters Graph
_lhsIddp Info
_lhsIinfo [Vertex]
_lhsIprev Vertex
_lhsIv Map Vertex ChildVisit
_lhsIvisitDescr Graph
_lhsIvssGraph) -> ( let
_hdX5 :: T_Interface_s5
_hdX5 = Identity T_Interface_s5 -> T_Interface_s5
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Interface -> Identity T_Interface_s5
attach_T_Interface (T_Interface
arg_hd_))
_tlX8 :: T_Interfaces_s8
_tlX8 = Identity T_Interfaces_s8 -> T_Interfaces_s8
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Interfaces -> Identity T_Interfaces_s8
attach_T_Interfaces (T_Interfaces
arg_tl_))
(T_Interface_vOut4 Seq (Vertex, ChildVisit)
_hdIdescr Seq Edge
_hdIedp [Vertex]
_hdIfirstvisitvertices CInterface
_hdIinter Seq Edge
_hdInewedges Identifier
_hdInt Vertex
_hdIv Map Identifier CVisits
_hdIvisits) = T_Interface_s5 -> T_Interface_v4
inv_Interface_s5 T_Interface_s5
_hdX5 (CInterfaceMap
-> Graph
-> Info
-> [Vertex]
-> Vertex
-> Map Vertex ChildVisit
-> Graph
-> T_Interface_vIn4
T_Interface_vIn4 CInterfaceMap
_hdOallInters Graph
_hdOddp Info
_hdOinfo [Vertex]
_hdOprev Vertex
_hdOv Map Vertex ChildVisit
_hdOvisitDescr Graph
_hdOvssGraph)
(T_Interfaces_vOut7 Seq (Vertex, ChildVisit)
_tlIdescr Seq Edge
_tlIedp [Vertex]
_tlIfirstvisitvertices CInterfaceMap
_tlIinters Seq Edge
_tlInewedges Vertex
_tlIv CVisitsMap
_tlIvisits) = T_Interfaces_s8 -> T_Interfaces_v7
inv_Interfaces_s8 T_Interfaces_s8
_tlX8 (CInterfaceMap
-> Graph
-> Info
-> [Vertex]
-> Vertex
-> Map Vertex ChildVisit
-> Graph
-> T_Interfaces_vIn7
T_Interfaces_vIn7 CInterfaceMap
_tlOallInters Graph
_tlOddp Info
_tlOinfo [Vertex]
_tlOprev Vertex
_tlOv Map Vertex ChildVisit
_tlOvisitDescr Graph
_tlOvssGraph)
_lhsOinters :: CInterfaceMap
_lhsOinters :: CInterfaceMap
_lhsOinters = CInterface -> Identifier -> CInterfaceMap -> CInterfaceMap
rule37 CInterface
_hdIinter Identifier
_hdInt CInterfaceMap
_tlIinters
_lhsOvisits :: CVisitsMap
_lhsOvisits :: CVisitsMap
_lhsOvisits = Identifier -> Map Identifier CVisits -> CVisitsMap -> CVisitsMap
rule38 Identifier
_hdInt Map Identifier CVisits
_hdIvisits CVisitsMap
_tlIvisits
_lhsOdescr :: Seq (Vertex,ChildVisit)
_lhsOdescr :: Seq (Vertex, ChildVisit)
_lhsOdescr = Seq (Vertex, ChildVisit)
-> Seq (Vertex, ChildVisit) -> Seq (Vertex, ChildVisit)
rule39 Seq (Vertex, ChildVisit)
_hdIdescr Seq (Vertex, ChildVisit)
_tlIdescr
_lhsOedp :: Seq Edge
_lhsOedp :: Seq Edge
_lhsOedp = Seq Edge -> Seq Edge -> Seq Edge
rule40 Seq Edge
_hdIedp Seq Edge
_tlIedp
_lhsOfirstvisitvertices :: [Vertex]
_lhsOfirstvisitvertices :: [Vertex]
_lhsOfirstvisitvertices = [Vertex] -> [Vertex] -> [Vertex]
rule41 [Vertex]
_hdIfirstvisitvertices [Vertex]
_tlIfirstvisitvertices
_lhsOnewedges :: Seq Edge
_lhsOnewedges :: Seq Edge
_lhsOnewedges = Seq Edge -> Seq Edge -> Seq Edge
rule42 Seq Edge
_hdInewedges Seq Edge
_tlInewedges
_lhsOv :: Vertex
_lhsOv :: Vertex
_lhsOv = Vertex -> Vertex
rule43 Vertex
_tlIv
_hdOallInters :: CInterfaceMap
_hdOallInters = CInterfaceMap -> CInterfaceMap
rule44 CInterfaceMap
_lhsIallInters
_hdOddp :: Graph
_hdOddp = Graph -> Graph
rule45 Graph
_lhsIddp
_hdOinfo :: Info
_hdOinfo = Info -> Info
rule46 Info
_lhsIinfo
_hdOprev :: [Vertex]
_hdOprev = [Vertex] -> [Vertex]
rule47 [Vertex]
_lhsIprev
_hdOv :: Vertex
_hdOv = Vertex -> Vertex
rule48 Vertex
_lhsIv
_hdOvisitDescr :: Map Vertex ChildVisit
_hdOvisitDescr = Map Vertex ChildVisit -> Map Vertex ChildVisit
rule49 Map Vertex ChildVisit
_lhsIvisitDescr
_hdOvssGraph :: Graph
_hdOvssGraph = Graph -> Graph
rule50 Graph
_lhsIvssGraph
_tlOallInters :: CInterfaceMap
_tlOallInters = CInterfaceMap -> CInterfaceMap
rule51 CInterfaceMap
_lhsIallInters
_tlOddp :: Graph
_tlOddp = Graph -> Graph
rule52 Graph
_lhsIddp
_tlOinfo :: Info
_tlOinfo = Info -> Info
rule53 Info
_lhsIinfo
_tlOprev :: [Vertex]
_tlOprev = [Vertex] -> [Vertex]
rule54 [Vertex]
_lhsIprev
_tlOv :: Vertex
_tlOv = Vertex -> Vertex
rule55 Vertex
_hdIv
_tlOvisitDescr :: Map Vertex ChildVisit
_tlOvisitDescr = Map Vertex ChildVisit -> Map Vertex ChildVisit
rule56 Map Vertex ChildVisit
_lhsIvisitDescr
_tlOvssGraph :: Graph
_tlOvssGraph = Graph -> Graph
rule57 Graph
_lhsIvssGraph
!__result_ :: T_Interfaces_vOut7
__result_ = Seq (Vertex, ChildVisit)
-> Seq Edge
-> [Vertex]
-> CInterfaceMap
-> Seq Edge
-> Vertex
-> CVisitsMap
-> T_Interfaces_vOut7
T_Interfaces_vOut7 Seq (Vertex, ChildVisit)
_lhsOdescr Seq Edge
_lhsOedp [Vertex]
_lhsOfirstvisitvertices CInterfaceMap
_lhsOinters Seq Edge
_lhsOnewedges Vertex
_lhsOv CVisitsMap
_lhsOvisits
in T_Interfaces_vOut7
__result_ )
in T_Interfaces_v7 -> T_Interfaces_s8
C_Interfaces_s8 T_Interfaces_v7
v7
{-# INLINE rule37 #-}
{-# LINE 386 "src-ag/InterfacesRules.lag" #-}
rule37 = \ ((_hdIinter) :: CInterface) ((_hdInt) :: NontermIdent) ((_tlIinters) :: CInterfaceMap) ->
{-# LINE 386 "src-ag/InterfacesRules.lag" #-}
Map.insert _hdInt _hdIinter _tlIinters
{-# LINE 498 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule38 #-}
{-# LINE 387 "src-ag/InterfacesRules.lag" #-}
rule38 = \ ((_hdInt) :: NontermIdent) ((_hdIvisits) :: Map ConstructorIdent CVisits) ((_tlIvisits) :: CVisitsMap) ->
{-# LINE 387 "src-ag/InterfacesRules.lag" #-}
Map.insert _hdInt _hdIvisits _tlIvisits
{-# LINE 504 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule39 #-}
rule39 = \ ((_hdIdescr) :: Seq (Vertex,ChildVisit)) ((_tlIdescr) :: Seq (Vertex,ChildVisit)) ->
_hdIdescr Seq.>< _tlIdescr
{-# INLINE rule40 #-}
rule40 = \ ((_hdIedp) :: Seq Edge) ((_tlIedp) :: Seq Edge) ->
_hdIedp Seq.>< _tlIedp
{-# INLINE rule41 #-}
rule41 = \ ((_hdIfirstvisitvertices) :: [Vertex]) ((_tlIfirstvisitvertices) :: [Vertex]) ->
_hdIfirstvisitvertices ++ _tlIfirstvisitvertices
{-# INLINE rule42 #-}
rule42 = \ ((_hdInewedges) :: Seq Edge ) ((_tlInewedges) :: Seq Edge ) ->
_hdInewedges Seq.>< _tlInewedges
{-# INLINE rule43 #-}
rule43 = \ ((_tlIv) :: Vertex) ->
_tlIv
{-# INLINE rule44 #-}
rule44 = \ ((_lhsIallInters) :: CInterfaceMap) ->
_lhsIallInters
{-# INLINE rule45 #-}
rule45 = \ ((_lhsIddp) :: Graph) ->
_lhsIddp
{-# INLINE rule46 #-}
rule46 = \ ((_lhsIinfo) :: Info) ->
_lhsIinfo
{-# INLINE rule47 #-}
rule47 = \ ((_lhsIprev) :: [Vertex]) ->
_lhsIprev
{-# INLINE rule48 #-}
rule48 = \ ((_lhsIv) :: Vertex) ->
_lhsIv
{-# INLINE rule49 #-}
rule49 = \ ((_lhsIvisitDescr) :: Map Vertex ChildVisit) ->
_lhsIvisitDescr
{-# INLINE rule50 #-}
rule50 = \ ((_lhsIvssGraph) :: Graph) ->
_lhsIvssGraph
{-# INLINE rule51 #-}
rule51 = \ ((_lhsIallInters) :: CInterfaceMap) ->
_lhsIallInters
{-# INLINE rule52 #-}
rule52 = \ ((_lhsIddp) :: Graph) ->
_lhsIddp
{-# INLINE rule53 #-}
rule53 = \ ((_lhsIinfo) :: Info) ->
_lhsIinfo
{-# INLINE rule54 #-}
rule54 = \ ((_lhsIprev) :: [Vertex]) ->
_lhsIprev
{-# INLINE rule55 #-}
rule55 = \ ((_hdIv) :: Vertex) ->
_hdIv
{-# INLINE rule56 #-}
rule56 = \ ((_lhsIvisitDescr) :: Map Vertex ChildVisit) ->
_lhsIvisitDescr
{-# INLINE rule57 #-}
rule57 = \ ((_lhsIvssGraph) :: Graph) ->
_lhsIvssGraph
{-# NOINLINE sem_Interfaces_Nil #-}
sem_Interfaces_Nil :: T_Interfaces
sem_Interfaces_Nil :: T_Interfaces
sem_Interfaces_Nil = Identity T_Interfaces_s8 -> T_Interfaces
T_Interfaces (T_Interfaces_s8 -> Identity T_Interfaces_s8
forall (m :: * -> *) a. Monad m => a -> m a
return T_Interfaces_s8
st8) where
{-# NOINLINE st8 #-}
!st8 :: T_Interfaces_s8
st8 = let
v7 :: T_Interfaces_v7
v7 :: T_Interfaces_v7
v7 = \ !(T_Interfaces_vIn7 CInterfaceMap
_lhsIallInters Graph
_lhsIddp Info
_lhsIinfo [Vertex]
_lhsIprev Vertex
_lhsIv Map Vertex ChildVisit
_lhsIvisitDescr Graph
_lhsIvssGraph) -> ( let
_lhsOinters :: CInterfaceMap
_lhsOinters :: CInterfaceMap
_lhsOinters = () -> CInterfaceMap
forall k a. () -> Map k a
rule58 ()
_lhsOvisits :: CVisitsMap
_lhsOvisits :: CVisitsMap
_lhsOvisits = () -> CVisitsMap
forall k a. () -> Map k a
rule59 ()
_lhsOdescr :: Seq (Vertex,ChildVisit)
_lhsOdescr :: Seq (Vertex, ChildVisit)
_lhsOdescr = () -> Seq (Vertex, ChildVisit)
forall a. () -> Seq a
rule60 ()
_lhsOedp :: Seq Edge
_lhsOedp :: Seq Edge
_lhsOedp = () -> Seq Edge
forall a. () -> Seq a
rule61 ()
_lhsOfirstvisitvertices :: [Vertex]
_lhsOfirstvisitvertices :: [Vertex]
_lhsOfirstvisitvertices = () -> [Vertex]
forall a. () -> [a]
rule62 ()
_lhsOnewedges :: Seq Edge
_lhsOnewedges :: Seq Edge
_lhsOnewedges = () -> Seq Edge
forall a. () -> Seq a
rule63 ()
_lhsOv :: Vertex
_lhsOv :: Vertex
_lhsOv = Vertex -> Vertex
rule64 Vertex
_lhsIv
!__result_ :: T_Interfaces_vOut7
__result_ = Seq (Vertex, ChildVisit)
-> Seq Edge
-> [Vertex]
-> CInterfaceMap
-> Seq Edge
-> Vertex
-> CVisitsMap
-> T_Interfaces_vOut7
T_Interfaces_vOut7 Seq (Vertex, ChildVisit)
_lhsOdescr Seq Edge
_lhsOedp [Vertex]
_lhsOfirstvisitvertices CInterfaceMap
_lhsOinters Seq Edge
_lhsOnewedges Vertex
_lhsOv CVisitsMap
_lhsOvisits
in T_Interfaces_vOut7
__result_ )
in T_Interfaces_v7 -> T_Interfaces_s8
C_Interfaces_s8 T_Interfaces_v7
v7
{-# INLINE rule58 #-}
{-# LINE 388 "src-ag/InterfacesRules.lag" #-}
rule58 = \ (_ :: ()) ->
{-# LINE 388 "src-ag/InterfacesRules.lag" #-}
Map.empty
{-# LINE 591 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule59 #-}
{-# LINE 389 "src-ag/InterfacesRules.lag" #-}
rule59 = \ (_ :: ()) ->
{-# LINE 389 "src-ag/InterfacesRules.lag" #-}
Map.empty
{-# LINE 597 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule60 #-}
rule60 = \ (_ :: ()) ->
Seq.empty
{-# INLINE rule61 #-}
rule61 = \ (_ :: ()) ->
Seq.empty
{-# INLINE rule62 #-}
rule62 = \ (_ :: ()) ->
[]
{-# INLINE rule63 #-}
rule63 = \ (_ :: ()) ->
Seq.empty
{-# INLINE rule64 #-}
rule64 = \ ((_lhsIv) :: Vertex) ->
_lhsIv
data Inh_Segment = Inh_Segment { Inh_Segment -> CInterfaceMap
allInters_Inh_Segment :: !(CInterfaceMap), Inh_Segment -> [Identifier]
cons_Inh_Segment :: !([ConstructorIdent]), Inh_Segment -> Graph
ddp_Inh_Segment :: !(Graph), Inh_Segment -> [Vertex]
fromLhs_Inh_Segment :: !([Vertex]), Inh_Segment -> Info
info_Inh_Segment :: !(Info), Inh_Segment -> Bool
isFirst_Inh_Segment :: !(Bool), Inh_Segment -> Vertex
n_Inh_Segment :: !(Int), Inh_Segment -> [Vertex]
nextInh_Inh_Segment :: !([Vertex]), Inh_Segment -> [[Vertex]]
nextIntravisits_Inh_Segment :: !([IntraVisit]), Inh_Segment -> [Vertex]
nextNewvertices_Inh_Segment :: !([Vertex]), Inh_Segment -> [Vertex]
prev_Inh_Segment :: !([Vertex]), Inh_Segment -> Vertex
v_Inh_Segment :: !(Vertex), Inh_Segment -> Map Vertex ChildVisit
visitDescr_Inh_Segment :: !(Map Vertex ChildVisit), Inh_Segment -> Graph
vssGraph_Inh_Segment :: !(Graph) }
data Syn_Segment = Syn_Segment { Syn_Segment -> CVisits
cvisits_Syn_Segment :: !([CVisit]), Syn_Segment -> Seq (Vertex, ChildVisit)
descr_Syn_Segment :: !(Seq (Vertex,ChildVisit)), Syn_Segment -> Seq Edge
edp_Syn_Segment :: !(Seq Edge), Syn_Segment -> [([Vertex], [Vertex])]
groups_Syn_Segment :: !([([Vertex],[Vertex])]), Syn_Segment -> [Vertex]
inh_Syn_Segment :: !([Vertex]), Syn_Segment -> [[Vertex]]
intravisits_Syn_Segment :: !([IntraVisit]), Syn_Segment -> Seq Edge
newedges_Syn_Segment :: !(Seq Edge ), Syn_Segment -> [Vertex]
newvertices_Syn_Segment :: !([Vertex]), Syn_Segment -> [Vertex]
prev_Syn_Segment :: !([Vertex]), Syn_Segment -> CSegment
seg_Syn_Segment :: !(CSegment), Syn_Segment -> Vertex
v_Syn_Segment :: !(Vertex), Syn_Segment -> [[Vertex]]
visitss_Syn_Segment :: !([VisitSS]) }
{-# INLINABLE wrap_Segment #-}
wrap_Segment :: T_Segment -> Inh_Segment -> (Syn_Segment )
wrap_Segment :: T_Segment -> Inh_Segment -> Syn_Segment
wrap_Segment !(T_Segment Identity T_Segment_s11
act) !(Inh_Segment CInterfaceMap
_lhsIallInters [Identifier]
_lhsIcons Graph
_lhsIddp [Vertex]
_lhsIfromLhs Info
_lhsIinfo Bool
_lhsIisFirst Vertex
_lhsIn [Vertex]
_lhsInextInh [[Vertex]]
_lhsInextIntravisits [Vertex]
_lhsInextNewvertices [Vertex]
_lhsIprev Vertex
_lhsIv Map Vertex ChildVisit
_lhsIvisitDescr Graph
_lhsIvssGraph) =
Identity Syn_Segment -> Syn_Segment
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_Segment_s11
sem <- Identity T_Segment_s11
act
let arg10 :: T_Segment_vIn10
arg10 = CInterfaceMap
-> [Identifier]
-> Graph
-> [Vertex]
-> Info
-> Bool
-> Vertex
-> [Vertex]
-> [[Vertex]]
-> [Vertex]
-> [Vertex]
-> Vertex
-> Map Vertex ChildVisit
-> Graph
-> T_Segment_vIn10
T_Segment_vIn10 CInterfaceMap
_lhsIallInters [Identifier]
_lhsIcons Graph
_lhsIddp [Vertex]
_lhsIfromLhs Info
_lhsIinfo Bool
_lhsIisFirst Vertex
_lhsIn [Vertex]
_lhsInextInh [[Vertex]]
_lhsInextIntravisits [Vertex]
_lhsInextNewvertices [Vertex]
_lhsIprev Vertex
_lhsIv Map Vertex ChildVisit
_lhsIvisitDescr Graph
_lhsIvssGraph
!(T_Segment_vOut10 CVisits
_lhsOcvisits Seq (Vertex, ChildVisit)
_lhsOdescr Seq Edge
_lhsOedp [([Vertex], [Vertex])]
_lhsOgroups [Vertex]
_lhsOinh [[Vertex]]
_lhsOintravisits Seq Edge
_lhsOnewedges [Vertex]
_lhsOnewvertices [Vertex]
_lhsOprev CSegment
_lhsOseg Vertex
_lhsOv [[Vertex]]
_lhsOvisitss) <- T_Segment_vOut10 -> Identity T_Segment_vOut10
forall (m :: * -> *) a. Monad m => a -> m a
return (T_Segment_s11 -> T_Segment_v10
inv_Segment_s11 T_Segment_s11
sem T_Segment_vIn10
arg10)
Syn_Segment -> Identity Syn_Segment
forall (m :: * -> *) a. Monad m => a -> m a
return (CVisits
-> Seq (Vertex, ChildVisit)
-> Seq Edge
-> [([Vertex], [Vertex])]
-> [Vertex]
-> [[Vertex]]
-> Seq Edge
-> [Vertex]
-> [Vertex]
-> CSegment
-> Vertex
-> [[Vertex]]
-> Syn_Segment
Syn_Segment CVisits
_lhsOcvisits Seq (Vertex, ChildVisit)
_lhsOdescr Seq Edge
_lhsOedp [([Vertex], [Vertex])]
_lhsOgroups [Vertex]
_lhsOinh [[Vertex]]
_lhsOintravisits Seq Edge
_lhsOnewedges [Vertex]
_lhsOnewvertices [Vertex]
_lhsOprev CSegment
_lhsOseg Vertex
_lhsOv [[Vertex]]
_lhsOvisitss)
)
{-# INLINE sem_Segment #-}
sem_Segment :: Segment -> T_Segment
sem_Segment :: Segment -> T_Segment
sem_Segment ( Segment ![Vertex]
inh_ ![Vertex]
syn_ ) = [Vertex] -> [Vertex] -> T_Segment
sem_Segment_Segment [Vertex]
inh_ [Vertex]
syn_
newtype T_Segment = T_Segment {
T_Segment -> Identity T_Segment_s11
attach_T_Segment :: Identity (T_Segment_s11 )
}
newtype T_Segment_s11 = C_Segment_s11 {
T_Segment_s11 -> T_Segment_v10
inv_Segment_s11 :: (T_Segment_v10 )
}
data T_Segment_s12 = C_Segment_s12
type T_Segment_v10 = (T_Segment_vIn10 ) -> (T_Segment_vOut10 )
data T_Segment_vIn10 = T_Segment_vIn10 (CInterfaceMap) ([ConstructorIdent]) (Graph) ([Vertex]) (Info) (Bool) (Int) ([Vertex]) ([IntraVisit]) ([Vertex]) ([Vertex]) (Vertex) (Map Vertex ChildVisit) (Graph)
data T_Segment_vOut10 = T_Segment_vOut10 ([CVisit]) (Seq (Vertex,ChildVisit)) (Seq Edge) ([([Vertex],[Vertex])]) ([Vertex]) ([IntraVisit]) (Seq Edge ) ([Vertex]) ([Vertex]) (CSegment) (Vertex) ([VisitSS])
{-# NOINLINE sem_Segment_Segment #-}
sem_Segment_Segment :: ([Vertex]) -> ([Vertex]) -> T_Segment
sem_Segment_Segment :: [Vertex] -> [Vertex] -> T_Segment
sem_Segment_Segment ![Vertex]
arg_inh_ ![Vertex]
arg_syn_ = Identity T_Segment_s11 -> T_Segment
T_Segment (T_Segment_s11 -> Identity T_Segment_s11
forall (m :: * -> *) a. Monad m => a -> m a
return T_Segment_s11
st11) where
{-# NOINLINE st11 #-}
!st11 :: T_Segment_s11
st11 = let
v10 :: T_Segment_v10
v10 :: T_Segment_v10
v10 = \ !(T_Segment_vIn10 CInterfaceMap
_lhsIallInters [Identifier]
_lhsIcons Graph
_lhsIddp [Vertex]
_lhsIfromLhs Info
_lhsIinfo Bool
_lhsIisFirst Vertex
_lhsIn [Vertex]
_lhsInextInh [[Vertex]]
_lhsInextIntravisits [Vertex]
_lhsInextNewvertices [Vertex]
_lhsIprev Vertex
_lhsIv Map Vertex ChildVisit
_lhsIvisitDescr Graph
_lhsIvssGraph) -> ( let
_look :: Vertex -> CRule
_look :: Vertex -> CRule
_look = Info -> Vertex -> CRule
rule65 Info
_lhsIinfo
_occurAs :: (CRule -> Bool) -> [Vertex] -> [Vertex]
_occurAs :: (CRule -> Bool) -> [Vertex] -> [Vertex]
_occurAs = Info
-> (Vertex -> CRule) -> (CRule -> Bool) -> [Vertex] -> [Vertex]
rule66 Info
_lhsIinfo Vertex -> CRule
_look
_groups :: [([Vertex],[Vertex])]
_groups :: [([Vertex], [Vertex])]
_groups = Info
-> (Vertex -> CRule)
-> ((CRule -> Bool) -> [Vertex] -> [Vertex])
-> [Vertex]
-> [Vertex]
-> [([Vertex], [Vertex])]
rule67 Info
_lhsIinfo Vertex -> CRule
_look (CRule -> Bool) -> [Vertex] -> [Vertex]
_occurAs [Vertex]
arg_inh_ [Vertex]
arg_syn_
_v :: Int
_v :: Vertex
_v = [([Vertex], [Vertex])] -> Vertex -> Vertex
rule68 [([Vertex], [Vertex])]
_groups Vertex
_lhsIv
_newvertices :: [Vertex]
_newvertices = Vertex -> Vertex -> [Vertex]
rule69 Vertex
_lhsIv Vertex
_v
_lhsOdescr :: Seq (Vertex,ChildVisit)
_lhsOdescr :: Seq (Vertex, ChildVisit)
_lhsOdescr = [([Vertex], [Vertex])]
-> Vertex
-> (Vertex -> CRule)
-> [Vertex]
-> Seq (Vertex, ChildVisit)
rule70 [([Vertex], [Vertex])]
_groups Vertex
_lhsIn Vertex -> CRule
_look [Vertex]
_newvertices
_attredges :: [Edge]
_attredges = [([Vertex], [Vertex])] -> [Vertex] -> [Edge]
rule71 [([Vertex], [Vertex])]
_groups [Vertex]
_newvertices
_visitedges :: [Edge]
_visitedges = [Vertex] -> [Vertex] -> [Edge]
forall a. [Vertex] -> [a] -> [(a, Vertex)]
rule72 [Vertex]
_lhsInextNewvertices [Vertex]
_newvertices
_lhsOnewedges :: Seq Edge
_lhsOnewedges :: Seq Edge
_lhsOnewedges = [Edge] -> [Edge] -> Seq Edge
forall a. [a] -> [a] -> Seq a
rule73 [Edge]
_attredges [Edge]
_visitedges
_synOccur :: [[Vertex]]
_synOccur = Info
-> ((CRule -> Bool) -> [Vertex] -> [Vertex])
-> [Vertex]
-> [[Vertex]]
rule74 Info
_lhsIinfo (CRule -> Bool) -> [Vertex] -> [Vertex]
_occurAs [Vertex]
arg_syn_
_vss :: [[Vertex]]
_vss = [Identifier]
-> Info -> Graph -> [[Vertex]] -> [Vertex] -> [[Vertex]]
forall a.
[Identifier] -> Info -> Graph -> [[Vertex]] -> [a] -> [[Vertex]]
rule75 [Identifier]
_lhsIcons Info
_lhsIinfo Graph
_lhsIvssGraph [[Vertex]]
_synOccur [Vertex]
arg_syn_
_visitss' :: [[Vertex]]
_visitss' = [Vertex] -> [[Vertex]] -> [[Vertex]]
rule76 [Vertex]
_lhsIprev [[Vertex]]
_vss
_defined :: [Vertex]
_defined = Map Vertex ChildVisit -> [[Vertex]] -> [Vertex]
rule77 Map Vertex ChildVisit
_lhsIvisitDescr [[Vertex]]
_visitss
_lhsOprev :: [Vertex]
_lhsOprev :: [Vertex]
_lhsOprev = [Vertex] -> [Vertex] -> [Vertex]
rule78 [Vertex]
_defined [Vertex]
_lhsIprev
_visitss :: [[Vertex]]
_visitss :: [[Vertex]]
_visitss = Info -> [[Vertex]] -> [[Vertex]]
rule79 Info
_lhsIinfo [[Vertex]]
_visitss'
_fromLhs :: [Vertex]
_fromLhs = [Vertex]
-> ((CRule -> Bool) -> [Vertex] -> [Vertex])
-> [Vertex]
-> [Vertex]
rule80 [Vertex]
_lhsIfromLhs (CRule -> Bool) -> [Vertex] -> [Vertex]
_occurAs [Vertex]
arg_inh_
_computed :: [Vertex]
_computed = Info -> Map Vertex ChildVisit -> [[Vertex]] -> [Vertex]
rule81 Info
_lhsIinfo Map Vertex ChildVisit
_lhsIvisitDescr [[Vertex]]
_visitss
_intravisits :: [[Vertex]]
_intravisits = ([Vertex] -> [Vertex] -> [Vertex])
-> [[Vertex]] -> [[Vertex]] -> [[Vertex]]
forall c.
([Vertex] -> [Vertex] -> c) -> [[Vertex]] -> [[Vertex]] -> [c]
rule82 [Vertex] -> [Vertex] -> [Vertex]
_iv [[Vertex]]
_lhsInextIntravisits [[Vertex]]
_visitss
_iv :: [Vertex] -> [Vertex] -> [Vertex]
_iv = [Vertex] -> [Vertex] -> Graph -> [Vertex] -> [Vertex] -> [Vertex]
rule83 [Vertex]
_computed [Vertex]
_fromLhs Graph
_lhsIddp
_lhsOseg :: CSegment
_lhsOseg :: CSegment
_lhsOseg = Map Identifier Type
-> [Vertex]
-> Map Vertex ChildVisit
-> Graph
-> Map Identifier Type
-> CSegment
rule84 Map Identifier Type
_inhmap [Vertex]
_lhsIprev Map Vertex ChildVisit
_lhsIvisitDescr Graph
_lhsIvssGraph Map Identifier Type
_synmap
_inhmap :: Map Identifier Type
_synmap :: Map Identifier Type
(Map Identifier Type
_inhmap,Map Identifier Type
_synmap) = Info
-> [Vertex]
-> [Vertex]
-> (Map Identifier Type, Map Identifier Type)
rule85 Info
_lhsIinfo [Vertex]
arg_inh_ [Vertex]
arg_syn_
_lhsOcvisits :: [CVisit]
_lhsOcvisits :: CVisits
_lhsOcvisits = Map Identifier Type
-> [[Vertex]]
-> CInterfaceMap
-> Info
-> Map Vertex ChildVisit
-> Map Identifier Type
-> [[Vertex]]
-> CVisits
rule86 Map Identifier Type
_inhmap [[Vertex]]
_intravisits CInterfaceMap
_lhsIallInters Info
_lhsIinfo Map Vertex ChildVisit
_lhsIvisitDescr Map Identifier Type
_synmap [[Vertex]]
_visitss
_lhsOedp :: Seq Edge
_lhsOedp :: Seq Edge
_lhsOedp = [Vertex] -> [Vertex] -> [Vertex] -> Seq Edge
rule87 [Vertex]
_lhsInextInh [Vertex]
arg_inh_ [Vertex]
arg_syn_
_lhsOinh :: [Vertex]
_lhsOinh :: [Vertex]
_lhsOinh = [Vertex] -> [Vertex]
forall a. a -> a
rule88 [Vertex]
arg_inh_
_lhsOgroups :: [([Vertex],[Vertex])]
_lhsOgroups :: [([Vertex], [Vertex])]
_lhsOgroups = [([Vertex], [Vertex])] -> [([Vertex], [Vertex])]
rule89 [([Vertex], [Vertex])]
_groups
_lhsOintravisits :: [IntraVisit]
_lhsOintravisits :: [[Vertex]]
_lhsOintravisits = [[Vertex]] -> [[Vertex]]
forall a. a -> a
rule90 [[Vertex]]
_intravisits
_lhsOnewvertices :: [Vertex]
_lhsOnewvertices :: [Vertex]
_lhsOnewvertices = [Vertex] -> [Vertex]
forall a. a -> a
rule91 [Vertex]
_newvertices
_lhsOv :: Vertex
_lhsOv :: Vertex
_lhsOv = Vertex -> Vertex
rule92 Vertex
_v
_lhsOvisitss :: [VisitSS]
_lhsOvisitss :: [[Vertex]]
_lhsOvisitss = [[Vertex]] -> [[Vertex]]
rule93 [[Vertex]]
_visitss
!__result_ :: T_Segment_vOut10
__result_ = CVisits
-> Seq (Vertex, ChildVisit)
-> Seq Edge
-> [([Vertex], [Vertex])]
-> [Vertex]
-> [[Vertex]]
-> Seq Edge
-> [Vertex]
-> [Vertex]
-> CSegment
-> Vertex
-> [[Vertex]]
-> T_Segment_vOut10
T_Segment_vOut10 CVisits
_lhsOcvisits Seq (Vertex, ChildVisit)
_lhsOdescr Seq Edge
_lhsOedp [([Vertex], [Vertex])]
_lhsOgroups [Vertex]
_lhsOinh [[Vertex]]
_lhsOintravisits Seq Edge
_lhsOnewedges [Vertex]
_lhsOnewvertices [Vertex]
_lhsOprev CSegment
_lhsOseg Vertex
_lhsOv [[Vertex]]
_lhsOvisitss
in T_Segment_vOut10
__result_ )
in T_Segment_v10 -> T_Segment_s11
C_Segment_s11 T_Segment_v10
v10
{-# INLINE rule65 #-}
{-# LINE 101 "src-ag/InterfacesRules.lag" #-}
rule65 = \ ((_lhsIinfo) :: Info) ->
{-# LINE 101 "src-ag/InterfacesRules.lag" #-}
\a -> ruleTable _lhsIinfo ! a
{-# LINE 707 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule66 #-}
{-# LINE 104 "src-ag/InterfacesRules.lag" #-}
rule66 = \ ((_lhsIinfo) :: Info) ((_look) :: Vertex -> CRule) ->
{-# LINE 104 "src-ag/InterfacesRules.lag" #-}
\p us -> [ a | u <- us
, a <- tdsToTdp _lhsIinfo ! u
, p (_look a)]
{-# LINE 715 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule67 #-}
{-# LINE 108 "src-ag/InterfacesRules.lag" #-}
rule67 = \ ((_lhsIinfo) :: Info) ((_look) :: Vertex -> CRule) ((_occurAs) :: (CRule -> Bool) -> [Vertex] -> [Vertex]) inh_ syn_ ->
{-# LINE 108 "src-ag/InterfacesRules.lag" #-}
let group as = gather _lhsIinfo (_occurAs isRhs as)
in map (partition (isInh . _look)) (group (inh_ ++ syn_))
{-# LINE 722 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule68 #-}
{-# LINE 111 "src-ag/InterfacesRules.lag" #-}
rule68 = \ ((_groups) :: [([Vertex],[Vertex])]) ((_lhsIv) :: Vertex) ->
{-# LINE 111 "src-ag/InterfacesRules.lag" #-}
_lhsIv + length _groups
{-# LINE 728 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule69 #-}
{-# LINE 112 "src-ag/InterfacesRules.lag" #-}
rule69 = \ ((_lhsIv) :: Vertex) ((_v) :: Int) ->
{-# LINE 112 "src-ag/InterfacesRules.lag" #-}
[_lhsIv .. _v -1]
{-# LINE 734 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule70 #-}
{-# LINE 127 "src-ag/InterfacesRules.lag" #-}
rule70 = \ ((_groups) :: [([Vertex],[Vertex])]) ((_lhsIn) :: Int) ((_look) :: Vertex -> CRule) _newvertices ->
{-# LINE 127 "src-ag/InterfacesRules.lag" #-}
Seq.fromList $ zipWith (cv _look _lhsIn) _newvertices _groups
{-# LINE 740 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule71 #-}
{-# LINE 150 "src-ag/InterfacesRules.lag" #-}
rule71 = \ ((_groups) :: [([Vertex],[Vertex])]) _newvertices ->
{-# LINE 150 "src-ag/InterfacesRules.lag" #-}
concat (zipWith ed _newvertices _groups)
{-# LINE 746 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule72 #-}
{-# LINE 170 "src-ag/InterfacesRules.lag" #-}
rule72 = \ ((_lhsInextNewvertices) :: [Vertex]) _newvertices ->
{-# LINE 170 "src-ag/InterfacesRules.lag" #-}
zip _newvertices _lhsInextNewvertices
{-# LINE 752 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule73 #-}
{-# LINE 171 "src-ag/InterfacesRules.lag" #-}
rule73 = \ _attredges _visitedges ->
{-# LINE 171 "src-ag/InterfacesRules.lag" #-}
Seq.fromList _attredges Seq.>< Seq.fromList _visitedges
{-# LINE 758 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule74 #-}
{-# LINE 225 "src-ag/InterfacesRules.lag" #-}
rule74 = \ ((_lhsIinfo) :: Info) ((_occurAs) :: (CRule -> Bool) -> [Vertex] -> [Vertex]) syn_ ->
{-# LINE 225 "src-ag/InterfacesRules.lag" #-}
gather _lhsIinfo (_occurAs isLhs syn_)
{-# LINE 764 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule75 #-}
{-# LINE 226 "src-ag/InterfacesRules.lag" #-}
rule75 = \ ((_lhsIcons) :: [ConstructorIdent]) ((_lhsIinfo) :: Info) ((_lhsIvssGraph) :: Graph) _synOccur syn_ ->
{-# LINE 226 "src-ag/InterfacesRules.lag" #-}
let hasCode' v | inRange (bounds (ruleTable _lhsIinfo)) v = getHasCode (ruleTable _lhsIinfo ! v)
| otherwise = True
in if null syn_
then replicate (length _lhsIcons) []
else map (filter hasCode' . topSort' _lhsIvssGraph) _synOccur
{-# LINE 774 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule76 #-}
{-# LINE 270 "src-ag/InterfacesRules.lag" #-}
rule76 = \ ((_lhsIprev) :: [Vertex]) _vss ->
{-# LINE 270 "src-ag/InterfacesRules.lag" #-}
map (\\ _lhsIprev) _vss
{-# LINE 780 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule77 #-}
{-# LINE 271 "src-ag/InterfacesRules.lag" #-}
rule77 = \ ((_lhsIvisitDescr) :: Map Vertex ChildVisit) ((_visitss) :: [[Vertex]]) ->
{-# LINE 271 "src-ag/InterfacesRules.lag" #-}
let defines v = case Map.lookup v _lhsIvisitDescr of
Nothing -> [v]
Just (ChildVisit _ _ _ inh _) -> v:inh
in concatMap (concatMap defines) _visitss
{-# LINE 789 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule78 #-}
{-# LINE 275 "src-ag/InterfacesRules.lag" #-}
rule78 = \ _defined ((_lhsIprev) :: [Vertex]) ->
{-# LINE 275 "src-ag/InterfacesRules.lag" #-}
_lhsIprev ++ _defined
{-# LINE 795 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule79 #-}
{-# LINE 284 "src-ag/InterfacesRules.lag" #-}
rule79 = \ ((_lhsIinfo) :: Info) _visitss' ->
{-# LINE 284 "src-ag/InterfacesRules.lag" #-}
let rem' :: [(Identifier,Identifier,Maybe Type)] -> [Vertex] -> [Vertex]
rem' _ [] = []
rem' prev (v:vs)
| inRange (bounds table) v
= let cr = table ! v
addV = case findIndex cmp prev of
Just _ -> id
_ -> (v:)
cmp (fld,attr,tp) = getField cr == fld && getAttr cr == attr && sameNT (getType cr) tp
sameNT (Just (NT ntA _ _)) (Just (NT ntB _ _)) = ntA == ntB
sameNT _ _ = False
def = Map.elems (getDefines cr)
in addV (rem' (def ++ prev) vs)
| otherwise = v:rem' prev vs
table = ruleTable _lhsIinfo
in map (rem' []) _visitss'
{-# LINE 816 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule80 #-}
{-# LINE 357 "src-ag/InterfacesRules.lag" #-}
rule80 = \ ((_lhsIfromLhs) :: [Vertex]) ((_occurAs) :: (CRule -> Bool) -> [Vertex] -> [Vertex]) inh_ ->
{-# LINE 357 "src-ag/InterfacesRules.lag" #-}
_occurAs isLhs inh_ ++ _lhsIfromLhs
{-# LINE 822 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule81 #-}
{-# LINE 358 "src-ag/InterfacesRules.lag" #-}
rule81 = \ ((_lhsIinfo) :: Info) ((_lhsIvisitDescr) :: Map Vertex ChildVisit) ((_visitss) :: [[Vertex]]) ->
{-# LINE 358 "src-ag/InterfacesRules.lag" #-}
let computes v = case Map.lookup v _lhsIvisitDescr of
Nothing -> Map.keys (getDefines (ruleTable _lhsIinfo ! v))
Just (ChildVisit _ _ _ _ syn) -> v:syn
in concatMap (concatMap computes) _visitss
{-# LINE 831 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule82 #-}
{-# LINE 362 "src-ag/InterfacesRules.lag" #-}
rule82 = \ _iv ((_lhsInextIntravisits) :: [IntraVisit]) ((_visitss) :: [[Vertex]]) ->
{-# LINE 362 "src-ag/InterfacesRules.lag" #-}
zipWith _iv _visitss _lhsInextIntravisits
{-# LINE 837 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule83 #-}
{-# LINE 363 "src-ag/InterfacesRules.lag" #-}
rule83 = \ _computed _fromLhs ((_lhsIddp) :: Graph) ->
{-# LINE 363 "src-ag/InterfacesRules.lag" #-}
\vs next ->
let needed = concatMap (_lhsIddp !) vs
in nub (needed ++ next) \\ (_fromLhs ++ _computed)
{-# LINE 845 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule84 #-}
{-# LINE 406 "src-ag/InterfacesRules.lag" #-}
rule84 = \ ((_inhmap) :: Map Identifier Type) ((_lhsIprev) :: [Vertex]) ((_lhsIvisitDescr) :: Map Vertex ChildVisit) ((_lhsIvssGraph) :: Graph) ((_synmap) :: Map Identifier Type) ->
{-# LINE 406 "src-ag/InterfacesRules.lag" #-}
if False then undefined _lhsIvssGraph _lhsIvisitDescr _lhsIprev else CSegment _inhmap _synmap
{-# LINE 851 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule85 #-}
{-# LINE 410 "src-ag/InterfacesRules.lag" #-}
rule85 = \ ((_lhsIinfo) :: Info) inh_ syn_ ->
{-# LINE 410 "src-ag/InterfacesRules.lag" #-}
let makemap = Map.fromList . map findType
findType v = getNtaNameType (attrTable _lhsIinfo ! v)
in (makemap inh_,makemap syn_)
{-# LINE 859 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule86 #-}
{-# LINE 413 "src-ag/InterfacesRules.lag" #-}
rule86 = \ ((_inhmap) :: Map Identifier Type) _intravisits ((_lhsIallInters) :: CInterfaceMap) ((_lhsIinfo) :: Info) ((_lhsIvisitDescr) :: Map Vertex ChildVisit) ((_synmap) :: Map Identifier Type) ((_visitss) :: [[Vertex]]) ->
{-# LINE 413 "src-ag/InterfacesRules.lag" #-}
let mkVisit vss intra = CVisit _inhmap _synmap (mkSequence vss) (mkSequence intra) True
mkSequence = map mkRule
mkRule v = case Map.lookup v _lhsIvisitDescr of
Nothing -> ruleTable _lhsIinfo ! v
Just (ChildVisit name nt n _ _) -> ccv name nt n _lhsIallInters
in zipWith mkVisit _visitss _intravisits
{-# LINE 870 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule87 #-}
{-# LINE 440 "src-ag/InterfacesRules.lag" #-}
rule87 = \ ((_lhsInextInh) :: [Vertex]) inh_ syn_ ->
{-# LINE 440 "src-ag/InterfacesRules.lag" #-}
Seq.fromList [(i,s) | i <- inh_, s <- syn_]
Seq.>< Seq.fromList [(s,i) | s <- syn_, i <- _lhsInextInh ]
{-# LINE 877 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule88 #-}
{-# LINE 445 "src-ag/InterfacesRules.lag" #-}
rule88 = \ inh_ ->
{-# LINE 445 "src-ag/InterfacesRules.lag" #-}
inh_
{-# LINE 883 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule89 #-}
rule89 = \ ((_groups) :: [([Vertex],[Vertex])]) ->
_groups
{-# INLINE rule90 #-}
rule90 = \ _intravisits ->
_intravisits
{-# INLINE rule91 #-}
rule91 = \ _newvertices ->
_newvertices
{-# INLINE rule92 #-}
rule92 = \ ((_v) :: Int) ->
_v
{-# INLINE rule93 #-}
rule93 = \ ((_visitss) :: [[Vertex]]) ->
_visitss
data Inh_Segments = Inh_Segments { Inh_Segments -> CInterfaceMap
allInters_Inh_Segments :: !(CInterfaceMap), Inh_Segments -> [Identifier]
cons_Inh_Segments :: !([ConstructorIdent]), Inh_Segments -> Graph
ddp_Inh_Segments :: !(Graph), Inh_Segments -> [Vertex]
fromLhs_Inh_Segments :: !([Vertex]), Inh_Segments -> Info
info_Inh_Segments :: !(Info), Inh_Segments -> Bool
isFirst_Inh_Segments :: !(Bool), Inh_Segments -> Vertex
n_Inh_Segments :: !(Int), Inh_Segments -> [Vertex]
prev_Inh_Segments :: !([Vertex]), Inh_Segments -> Vertex
v_Inh_Segments :: !(Vertex), Inh_Segments -> Map Vertex ChildVisit
visitDescr_Inh_Segments :: !(Map Vertex ChildVisit), Inh_Segments -> Graph
vssGraph_Inh_Segments :: !(Graph) }
data Syn_Segments = Syn_Segments { Syn_Segments -> [CVisits]
cvisits_Syn_Segments :: !([[CVisit]]), Syn_Segments -> Seq (Vertex, ChildVisit)
descr_Syn_Segments :: !(Seq (Vertex,ChildVisit)), Syn_Segments -> Seq Edge
edp_Syn_Segments :: !(Seq Edge), Syn_Segments -> [Vertex]
firstInh_Syn_Segments :: !([Vertex]), Syn_Segments -> [([Vertex], [Vertex])]
groups_Syn_Segments :: !([([Vertex],[Vertex])]), Syn_Segments -> [[Vertex]]
hdIntravisits_Syn_Segments :: !([IntraVisit]), Syn_Segments -> Seq Edge
newedges_Syn_Segments :: !(Seq Edge ), Syn_Segments -> [Vertex]
newvertices_Syn_Segments :: !([Vertex]), Syn_Segments -> [Vertex]
prev_Syn_Segments :: !([Vertex]), Syn_Segments -> CSegments
segs_Syn_Segments :: !(CSegments), Syn_Segments -> Vertex
v_Syn_Segments :: !(Vertex) }
{-# INLINABLE wrap_Segments #-}
wrap_Segments :: T_Segments -> Inh_Segments -> (Syn_Segments )
wrap_Segments :: T_Segments -> Inh_Segments -> Syn_Segments
wrap_Segments !(T_Segments Identity T_Segments_s14
act) !(Inh_Segments CInterfaceMap
_lhsIallInters [Identifier]
_lhsIcons Graph
_lhsIddp [Vertex]
_lhsIfromLhs Info
_lhsIinfo Bool
_lhsIisFirst Vertex
_lhsIn [Vertex]
_lhsIprev Vertex
_lhsIv Map Vertex ChildVisit
_lhsIvisitDescr Graph
_lhsIvssGraph) =
Identity Syn_Segments -> Syn_Segments
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (
do !T_Segments_s14
sem <- Identity T_Segments_s14
act
let arg13 :: T_Segments_vIn13
arg13 = CInterfaceMap
-> [Identifier]
-> Graph
-> [Vertex]
-> Info
-> Bool
-> Vertex
-> [Vertex]
-> Vertex
-> Map Vertex ChildVisit
-> Graph
-> T_Segments_vIn13
T_Segments_vIn13 CInterfaceMap
_lhsIallInters [Identifier]
_lhsIcons Graph
_lhsIddp [Vertex]
_lhsIfromLhs Info
_lhsIinfo Bool
_lhsIisFirst Vertex
_lhsIn [Vertex]
_lhsIprev Vertex
_lhsIv Map Vertex ChildVisit
_lhsIvisitDescr Graph
_lhsIvssGraph
!(T_Segments_vOut13 [CVisits]
_lhsOcvisits Seq (Vertex, ChildVisit)
_lhsOdescr Seq Edge
_lhsOedp [Vertex]
_lhsOfirstInh [([Vertex], [Vertex])]
_lhsOgroups [[Vertex]]
_lhsOhdIntravisits Seq Edge
_lhsOnewedges [Vertex]
_lhsOnewvertices [Vertex]
_lhsOprev CSegments
_lhsOsegs Vertex
_lhsOv) <- T_Segments_vOut13 -> Identity T_Segments_vOut13
forall (m :: * -> *) a. Monad m => a -> m a
return (T_Segments_s14 -> T_Segments_v13
inv_Segments_s14 T_Segments_s14
sem T_Segments_vIn13
arg13)
Syn_Segments -> Identity Syn_Segments
forall (m :: * -> *) a. Monad m => a -> m a
return ([CVisits]
-> Seq (Vertex, ChildVisit)
-> Seq Edge
-> [Vertex]
-> [([Vertex], [Vertex])]
-> [[Vertex]]
-> Seq Edge
-> [Vertex]
-> [Vertex]
-> CSegments
-> Vertex
-> Syn_Segments
Syn_Segments [CVisits]
_lhsOcvisits Seq (Vertex, ChildVisit)
_lhsOdescr Seq Edge
_lhsOedp [Vertex]
_lhsOfirstInh [([Vertex], [Vertex])]
_lhsOgroups [[Vertex]]
_lhsOhdIntravisits Seq Edge
_lhsOnewedges [Vertex]
_lhsOnewvertices [Vertex]
_lhsOprev CSegments
_lhsOsegs Vertex
_lhsOv)
)
{-# NOINLINE sem_Segments #-}
sem_Segments :: Segments -> T_Segments
sem_Segments :: Segments -> T_Segments
sem_Segments Segments
list = (T_Segment -> T_Segments -> T_Segments)
-> T_Segments -> [T_Segment] -> T_Segments
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
Prelude.foldr T_Segment -> T_Segments -> T_Segments
sem_Segments_Cons T_Segments
sem_Segments_Nil ((Segment -> T_Segment) -> Segments -> [T_Segment]
forall a b. (a -> b) -> [a] -> [b]
Prelude.map Segment -> T_Segment
sem_Segment Segments
list)
newtype T_Segments = T_Segments {
T_Segments -> Identity T_Segments_s14
attach_T_Segments :: Identity (T_Segments_s14 )
}
newtype T_Segments_s14 = C_Segments_s14 {
T_Segments_s14 -> T_Segments_v13
inv_Segments_s14 :: (T_Segments_v13 )
}
data T_Segments_s15 = C_Segments_s15
type T_Segments_v13 = (T_Segments_vIn13 ) -> (T_Segments_vOut13 )
data T_Segments_vIn13 = T_Segments_vIn13 (CInterfaceMap) ([ConstructorIdent]) (Graph) ([Vertex]) (Info) (Bool) (Int) ([Vertex]) (Vertex) (Map Vertex ChildVisit) (Graph)
data T_Segments_vOut13 = T_Segments_vOut13 ([[CVisit]]) (Seq (Vertex,ChildVisit)) (Seq Edge) ([Vertex]) ([([Vertex],[Vertex])]) ([IntraVisit]) (Seq Edge ) ([Vertex]) ([Vertex]) (CSegments) (Vertex)
{-# NOINLINE sem_Segments_Cons #-}
sem_Segments_Cons :: T_Segment -> T_Segments -> T_Segments
sem_Segments_Cons :: T_Segment -> T_Segments -> T_Segments
sem_Segments_Cons T_Segment
arg_hd_ T_Segments
arg_tl_ = Identity T_Segments_s14 -> T_Segments
T_Segments (T_Segments_s14 -> Identity T_Segments_s14
forall (m :: * -> *) a. Monad m => a -> m a
return T_Segments_s14
st14) where
{-# NOINLINE st14 #-}
!st14 :: T_Segments_s14
st14 = let
v13 :: T_Segments_v13
v13 :: T_Segments_v13
v13 = \ !(T_Segments_vIn13 CInterfaceMap
_lhsIallInters [Identifier]
_lhsIcons Graph
_lhsIddp [Vertex]
_lhsIfromLhs Info
_lhsIinfo Bool
_lhsIisFirst Vertex
_lhsIn [Vertex]
_lhsIprev Vertex
_lhsIv Map Vertex ChildVisit
_lhsIvisitDescr Graph
_lhsIvssGraph) -> ( let
_hdX11 :: T_Segment_s11
_hdX11 = Identity T_Segment_s11 -> T_Segment_s11
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Segment -> Identity T_Segment_s11
attach_T_Segment (T_Segment
arg_hd_))
_tlX14 :: T_Segments_s14
_tlX14 = Identity T_Segments_s14 -> T_Segments_s14
forall a. Identity a -> a
Control.Monad.Identity.runIdentity (T_Segments -> Identity T_Segments_s14
attach_T_Segments (T_Segments
arg_tl_))
(T_Segment_vOut10 CVisits
_hdIcvisits Seq (Vertex, ChildVisit)
_hdIdescr Seq Edge
_hdIedp [([Vertex], [Vertex])]
_hdIgroups [Vertex]
_hdIinh [[Vertex]]
_hdIintravisits Seq Edge
_hdInewedges [Vertex]
_hdInewvertices [Vertex]
_hdIprev CSegment
_hdIseg Vertex
_hdIv [[Vertex]]
_hdIvisitss) = T_Segment_s11 -> T_Segment_v10
inv_Segment_s11 T_Segment_s11
_hdX11 (CInterfaceMap
-> [Identifier]
-> Graph
-> [Vertex]
-> Info
-> Bool
-> Vertex
-> [Vertex]
-> [[Vertex]]
-> [Vertex]
-> [Vertex]
-> Vertex
-> Map Vertex ChildVisit
-> Graph
-> T_Segment_vIn10
T_Segment_vIn10 CInterfaceMap
_hdOallInters [Identifier]
_hdOcons Graph
_hdOddp [Vertex]
_hdOfromLhs Info
_hdOinfo Bool
_hdOisFirst Vertex
_hdOn [Vertex]
_hdOnextInh [[Vertex]]
_hdOnextIntravisits [Vertex]
_hdOnextNewvertices [Vertex]
_hdOprev Vertex
_hdOv Map Vertex ChildVisit
_hdOvisitDescr Graph
_hdOvssGraph)
(T_Segments_vOut13 [CVisits]
_tlIcvisits Seq (Vertex, ChildVisit)
_tlIdescr Seq Edge
_tlIedp [Vertex]
_tlIfirstInh [([Vertex], [Vertex])]
_tlIgroups [[Vertex]]
_tlIhdIntravisits Seq Edge
_tlInewedges [Vertex]
_tlInewvertices [Vertex]
_tlIprev CSegments
_tlIsegs Vertex
_tlIv) = T_Segments_s14 -> T_Segments_v13
inv_Segments_s14 T_Segments_s14
_tlX14 (CInterfaceMap
-> [Identifier]
-> Graph
-> [Vertex]
-> Info
-> Bool
-> Vertex
-> [Vertex]
-> Vertex
-> Map Vertex ChildVisit
-> Graph
-> T_Segments_vIn13
T_Segments_vIn13 CInterfaceMap
_tlOallInters [Identifier]
_tlOcons Graph
_tlOddp [Vertex]
forall a. [a]
_tlOfromLhs Info
_tlOinfo Bool
_tlOisFirst Vertex
_tlOn [Vertex]
_tlOprev Vertex
_tlOv Map Vertex ChildVisit
_tlOvisitDescr Graph
_tlOvssGraph)
_hdOnextNewvertices :: [Vertex]
_hdOnextNewvertices = [Vertex] -> [Vertex]
rule94 [Vertex]
_tlInewvertices
_lhsOnewvertices :: [Vertex]
_lhsOnewvertices :: [Vertex]
_lhsOnewvertices = [Vertex] -> [Vertex]
rule95 [Vertex]
_hdInewvertices
_lhsOgroups :: [([Vertex],[Vertex])]
_lhsOgroups :: [([Vertex], [Vertex])]
_lhsOgroups = [([Vertex], [Vertex])] -> [([Vertex], [Vertex])]
rule96 [([Vertex], [Vertex])]
_hdIgroups
_tlOn :: Vertex
_tlOn = Vertex -> Vertex
rule97 Vertex
_lhsIn
_tlOisFirst :: Bool
_tlOisFirst = () -> Bool
rule98 ()
_hdOnextIntravisits :: [[Vertex]]
_hdOnextIntravisits = [[Vertex]] -> [[Vertex]]
rule99 [[Vertex]]
_tlIhdIntravisits
_lhsOhdIntravisits :: [IntraVisit]
_lhsOhdIntravisits :: [[Vertex]]
_lhsOhdIntravisits = [[Vertex]] -> [[Vertex]]
rule100 [[Vertex]]
_hdIintravisits
_hdOfromLhs :: [Vertex]
_hdOfromLhs = [Vertex] -> [Vertex]
rule101 [Vertex]
_lhsIfromLhs
_tlOfromLhs :: [a]
_tlOfromLhs = () -> [a]
forall a. () -> [a]
rule102 ()
_lhsOsegs :: CSegments
_lhsOsegs :: CSegments
_lhsOsegs = CSegment -> CSegments -> CSegments
rule103 CSegment
_hdIseg CSegments
_tlIsegs
_hdOnextInh :: [Vertex]
_hdOnextInh = [Vertex] -> [Vertex]
rule104 [Vertex]
_tlIfirstInh
_lhsOfirstInh :: [Vertex]
_lhsOfirstInh :: [Vertex]
_lhsOfirstInh = [Vertex] -> [Vertex]
rule105 [Vertex]
_hdIinh
_lhsOcvisits :: [[CVisit]]
_lhsOcvisits :: [CVisits]
_lhsOcvisits = CVisits -> [CVisits] -> [CVisits]
rule106 CVisits
_hdIcvisits [CVisits]
_tlIcvisits
_lhsOdescr :: Seq (Vertex,ChildVisit)
_lhsOdescr :: Seq (Vertex, ChildVisit)
_lhsOdescr = Seq (Vertex, ChildVisit)
-> Seq (Vertex, ChildVisit) -> Seq (Vertex, ChildVisit)
rule107 Seq (Vertex, ChildVisit)
_hdIdescr Seq (Vertex, ChildVisit)
_tlIdescr
_lhsOedp :: Seq Edge
_lhsOedp :: Seq Edge
_lhsOedp = Seq Edge -> Seq Edge -> Seq Edge
rule108 Seq Edge
_hdIedp Seq Edge
_tlIedp
_lhsOnewedges :: Seq Edge
_lhsOnewedges :: Seq Edge
_lhsOnewedges = Seq Edge -> Seq Edge -> Seq Edge
rule109 Seq Edge
_hdInewedges Seq Edge
_tlInewedges
_lhsOprev :: [Vertex]
_lhsOprev :: [Vertex]
_lhsOprev = [Vertex] -> [Vertex]
rule110 [Vertex]
_tlIprev
_lhsOv :: Vertex
_lhsOv :: Vertex
_lhsOv = Vertex -> Vertex
rule111 Vertex
_tlIv
_hdOallInters :: CInterfaceMap
_hdOallInters = CInterfaceMap -> CInterfaceMap
rule112 CInterfaceMap
_lhsIallInters
_hdOcons :: [Identifier]
_hdOcons = [Identifier] -> [Identifier]
rule113 [Identifier]
_lhsIcons
_hdOddp :: Graph
_hdOddp = Graph -> Graph
rule114 Graph
_lhsIddp
_hdOinfo :: Info
_hdOinfo = Info -> Info
rule115 Info
_lhsIinfo
_hdOisFirst :: Bool
_hdOisFirst = Bool -> Bool
rule116 Bool
_lhsIisFirst
_hdOn :: Vertex
_hdOn = Vertex -> Vertex
rule117 Vertex
_lhsIn
_hdOprev :: [Vertex]
_hdOprev = [Vertex] -> [Vertex]
rule118 [Vertex]
_lhsIprev
_hdOv :: Vertex
_hdOv = Vertex -> Vertex
rule119 Vertex
_lhsIv
_hdOvisitDescr :: Map Vertex ChildVisit
_hdOvisitDescr = Map Vertex ChildVisit -> Map Vertex ChildVisit
rule120 Map Vertex ChildVisit
_lhsIvisitDescr
_hdOvssGraph :: Graph
_hdOvssGraph = Graph -> Graph
rule121 Graph
_lhsIvssGraph
_tlOallInters :: CInterfaceMap
_tlOallInters = CInterfaceMap -> CInterfaceMap
rule122 CInterfaceMap
_lhsIallInters
_tlOcons :: [Identifier]
_tlOcons = [Identifier] -> [Identifier]
rule123 [Identifier]
_lhsIcons
_tlOddp :: Graph
_tlOddp = Graph -> Graph
rule124 Graph
_lhsIddp
_tlOinfo :: Info
_tlOinfo = Info -> Info
rule125 Info
_lhsIinfo
_tlOprev :: [Vertex]
_tlOprev = [Vertex] -> [Vertex]
rule126 [Vertex]
_hdIprev
_tlOv :: Vertex
_tlOv = Vertex -> Vertex
rule127 Vertex
_hdIv
_tlOvisitDescr :: Map Vertex ChildVisit
_tlOvisitDescr = Map Vertex ChildVisit -> Map Vertex ChildVisit
rule128 Map Vertex ChildVisit
_lhsIvisitDescr
_tlOvssGraph :: Graph
_tlOvssGraph = Graph -> Graph
rule129 Graph
_lhsIvssGraph
!__result_ :: T_Segments_vOut13
__result_ = [CVisits]
-> Seq (Vertex, ChildVisit)
-> Seq Edge
-> [Vertex]
-> [([Vertex], [Vertex])]
-> [[Vertex]]
-> Seq Edge
-> [Vertex]
-> [Vertex]
-> CSegments
-> Vertex
-> T_Segments_vOut13
T_Segments_vOut13 [CVisits]
_lhsOcvisits Seq (Vertex, ChildVisit)
_lhsOdescr Seq Edge
_lhsOedp [Vertex]
_lhsOfirstInh [([Vertex], [Vertex])]
_lhsOgroups [[Vertex]]
_lhsOhdIntravisits Seq Edge
_lhsOnewedges [Vertex]
_lhsOnewvertices [Vertex]
_lhsOprev CSegments
_lhsOsegs Vertex
_lhsOv
in T_Segments_vOut13
__result_ )
in T_Segments_v13 -> T_Segments_s14
C_Segments_s14 T_Segments_v13
v13
{-# INLINE rule94 #-}
{-# LINE 165 "src-ag/InterfacesRules.lag" #-}
rule94 = \ ((_tlInewvertices) :: [Vertex]) ->
{-# LINE 165 "src-ag/InterfacesRules.lag" #-}
_tlInewvertices
{-# LINE 996 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule95 #-}
{-# LINE 166 "src-ag/InterfacesRules.lag" #-}
rule95 = \ ((_hdInewvertices) :: [Vertex]) ->
{-# LINE 166 "src-ag/InterfacesRules.lag" #-}
_hdInewvertices
{-# LINE 1002 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule96 #-}
{-# LINE 180 "src-ag/InterfacesRules.lag" #-}
rule96 = \ ((_hdIgroups) :: [([Vertex],[Vertex])]) ->
{-# LINE 180 "src-ag/InterfacesRules.lag" #-}
_hdIgroups
{-# LINE 1008 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule97 #-}
{-# LINE 203 "src-ag/InterfacesRules.lag" #-}
rule97 = \ ((_lhsIn) :: Int) ->
{-# LINE 203 "src-ag/InterfacesRules.lag" #-}
_lhsIn + 1
{-# LINE 1014 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule98 #-}
{-# LINE 316 "src-ag/InterfacesRules.lag" #-}
rule98 = \ (_ :: ()) ->
{-# LINE 316 "src-ag/InterfacesRules.lag" #-}
False
{-# LINE 1020 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule99 #-}
{-# LINE 329 "src-ag/InterfacesRules.lag" #-}
rule99 = \ ((_tlIhdIntravisits) :: [IntraVisit]) ->
{-# LINE 329 "src-ag/InterfacesRules.lag" #-}
_tlIhdIntravisits
{-# LINE 1026 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule100 #-}
{-# LINE 330 "src-ag/InterfacesRules.lag" #-}
rule100 = \ ((_hdIintravisits) :: [IntraVisit]) ->
{-# LINE 330 "src-ag/InterfacesRules.lag" #-}
_hdIintravisits
{-# LINE 1032 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule101 #-}
{-# LINE 354 "src-ag/InterfacesRules.lag" #-}
rule101 = \ ((_lhsIfromLhs) :: [Vertex]) ->
{-# LINE 354 "src-ag/InterfacesRules.lag" #-}
_lhsIfromLhs
{-# LINE 1038 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule102 #-}
{-# LINE 355 "src-ag/InterfacesRules.lag" #-}
rule102 = \ (_ :: ()) ->
{-# LINE 355 "src-ag/InterfacesRules.lag" #-}
[]
{-# LINE 1044 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule103 #-}
{-# LINE 401 "src-ag/InterfacesRules.lag" #-}
rule103 = \ ((_hdIseg) :: CSegment) ((_tlIsegs) :: CSegments) ->
{-# LINE 401 "src-ag/InterfacesRules.lag" #-}
_hdIseg : _tlIsegs
{-# LINE 1050 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule104 #-}
{-# LINE 447 "src-ag/InterfacesRules.lag" #-}
rule104 = \ ((_tlIfirstInh) :: [Vertex]) ->
{-# LINE 447 "src-ag/InterfacesRules.lag" #-}
_tlIfirstInh
{-# LINE 1056 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule105 #-}
{-# LINE 448 "src-ag/InterfacesRules.lag" #-}
rule105 = \ ((_hdIinh) :: [Vertex]) ->
{-# LINE 448 "src-ag/InterfacesRules.lag" #-}
_hdIinh
{-# LINE 1062 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule106 #-}
rule106 = \ ((_hdIcvisits) :: [CVisit]) ((_tlIcvisits) :: [[CVisit]]) ->
_hdIcvisits : _tlIcvisits
{-# INLINE rule107 #-}
rule107 = \ ((_hdIdescr) :: Seq (Vertex,ChildVisit)) ((_tlIdescr) :: Seq (Vertex,ChildVisit)) ->
_hdIdescr Seq.>< _tlIdescr
{-# INLINE rule108 #-}
rule108 = \ ((_hdIedp) :: Seq Edge) ((_tlIedp) :: Seq Edge) ->
_hdIedp Seq.>< _tlIedp
{-# INLINE rule109 #-}
rule109 = \ ((_hdInewedges) :: Seq Edge ) ((_tlInewedges) :: Seq Edge ) ->
_hdInewedges Seq.>< _tlInewedges
{-# INLINE rule110 #-}
rule110 = \ ((_tlIprev) :: [Vertex]) ->
_tlIprev
{-# INLINE rule111 #-}
rule111 = \ ((_tlIv) :: Vertex) ->
_tlIv
{-# INLINE rule112 #-}
rule112 = \ ((_lhsIallInters) :: CInterfaceMap) ->
_lhsIallInters
{-# INLINE rule113 #-}
rule113 = \ ((_lhsIcons) :: [ConstructorIdent]) ->
_lhsIcons
{-# INLINE rule114 #-}
rule114 = \ ((_lhsIddp) :: Graph) ->
_lhsIddp
{-# INLINE rule115 #-}
rule115 = \ ((_lhsIinfo) :: Info) ->
_lhsIinfo
{-# INLINE rule116 #-}
rule116 = \ ((_lhsIisFirst) :: Bool) ->
_lhsIisFirst
{-# INLINE rule117 #-}
rule117 = \ ((_lhsIn) :: Int) ->
_lhsIn
{-# INLINE rule118 #-}
rule118 = \ ((_lhsIprev) :: [Vertex]) ->
_lhsIprev
{-# INLINE rule119 #-}
rule119 = \ ((_lhsIv) :: Vertex) ->
_lhsIv
{-# INLINE rule120 #-}
rule120 = \ ((_lhsIvisitDescr) :: Map Vertex ChildVisit) ->
_lhsIvisitDescr
{-# INLINE rule121 #-}
rule121 = \ ((_lhsIvssGraph) :: Graph) ->
_lhsIvssGraph
{-# INLINE rule122 #-}
rule122 = \ ((_lhsIallInters) :: CInterfaceMap) ->
_lhsIallInters
{-# INLINE rule123 #-}
rule123 = \ ((_lhsIcons) :: [ConstructorIdent]) ->
_lhsIcons
{-# INLINE rule124 #-}
rule124 = \ ((_lhsIddp) :: Graph) ->
_lhsIddp
{-# INLINE rule125 #-}
rule125 = \ ((_lhsIinfo) :: Info) ->
_lhsIinfo
{-# INLINE rule126 #-}
rule126 = \ ((_hdIprev) :: [Vertex]) ->
_hdIprev
{-# INLINE rule127 #-}
rule127 = \ ((_hdIv) :: Vertex) ->
_hdIv
{-# INLINE rule128 #-}
rule128 = \ ((_lhsIvisitDescr) :: Map Vertex ChildVisit) ->
_lhsIvisitDescr
{-# INLINE rule129 #-}
rule129 = \ ((_lhsIvssGraph) :: Graph) ->
_lhsIvssGraph
{-# NOINLINE sem_Segments_Nil #-}
sem_Segments_Nil :: T_Segments
sem_Segments_Nil :: T_Segments
sem_Segments_Nil = Identity T_Segments_s14 -> T_Segments
T_Segments (T_Segments_s14 -> Identity T_Segments_s14
forall (m :: * -> *) a. Monad m => a -> m a
return T_Segments_s14
st14) where
{-# NOINLINE st14 #-}
!st14 :: T_Segments_s14
st14 = let
v13 :: T_Segments_v13
v13 :: T_Segments_v13
v13 = \ !(T_Segments_vIn13 CInterfaceMap
_lhsIallInters [Identifier]
_lhsIcons Graph
_lhsIddp [Vertex]
_lhsIfromLhs Info
_lhsIinfo Bool
_lhsIisFirst Vertex
_lhsIn [Vertex]
_lhsIprev Vertex
_lhsIv Map Vertex ChildVisit
_lhsIvisitDescr Graph
_lhsIvssGraph) -> ( let
_lhsOnewvertices :: [Vertex]
_lhsOnewvertices :: [Vertex]
_lhsOnewvertices = () -> [Vertex]
forall a. () -> [a]
rule130 ()
_lhsOgroups :: [([Vertex],[Vertex])]
_lhsOgroups :: [([Vertex], [Vertex])]
_lhsOgroups = () -> [([Vertex], [Vertex])]
forall a. () -> [a]
rule131 ()
_lhsOhdIntravisits :: [IntraVisit]
_lhsOhdIntravisits :: [[Vertex]]
_lhsOhdIntravisits = () -> [[Vertex]]
forall a. () -> [[a]]
rule132 ()
_lhsOsegs :: CSegments
_lhsOsegs :: CSegments
_lhsOsegs = () -> CSegments
forall a. () -> [a]
rule133 ()
_lhsOfirstInh :: [Vertex]
_lhsOfirstInh :: [Vertex]
_lhsOfirstInh = () -> [Vertex]
forall a. () -> [a]
rule134 ()
_lhsOcvisits :: [[CVisit]]
_lhsOcvisits :: [CVisits]
_lhsOcvisits = () -> [CVisits]
forall a. () -> [a]
rule135 ()
_lhsOdescr :: Seq (Vertex,ChildVisit)
_lhsOdescr :: Seq (Vertex, ChildVisit)
_lhsOdescr = () -> Seq (Vertex, ChildVisit)
forall a. () -> Seq a
rule136 ()
_lhsOedp :: Seq Edge
_lhsOedp :: Seq Edge
_lhsOedp = () -> Seq Edge
forall a. () -> Seq a
rule137 ()
_lhsOnewedges :: Seq Edge
_lhsOnewedges :: Seq Edge
_lhsOnewedges = () -> Seq Edge
forall a. () -> Seq a
rule138 ()
_lhsOprev :: [Vertex]
_lhsOprev :: [Vertex]
_lhsOprev = [Vertex] -> [Vertex]
rule139 [Vertex]
_lhsIprev
_lhsOv :: Vertex
_lhsOv :: Vertex
_lhsOv = Vertex -> Vertex
rule140 Vertex
_lhsIv
!__result_ :: T_Segments_vOut13
__result_ = [CVisits]
-> Seq (Vertex, ChildVisit)
-> Seq Edge
-> [Vertex]
-> [([Vertex], [Vertex])]
-> [[Vertex]]
-> Seq Edge
-> [Vertex]
-> [Vertex]
-> CSegments
-> Vertex
-> T_Segments_vOut13
T_Segments_vOut13 [CVisits]
_lhsOcvisits Seq (Vertex, ChildVisit)
_lhsOdescr Seq Edge
_lhsOedp [Vertex]
_lhsOfirstInh [([Vertex], [Vertex])]
_lhsOgroups [[Vertex]]
_lhsOhdIntravisits Seq Edge
_lhsOnewedges [Vertex]
_lhsOnewvertices [Vertex]
_lhsOprev CSegments
_lhsOsegs Vertex
_lhsOv
in T_Segments_vOut13
__result_ )
in T_Segments_v13 -> T_Segments_s14
C_Segments_s14 T_Segments_v13
v13
{-# INLINE rule130 #-}
{-# LINE 167 "src-ag/InterfacesRules.lag" #-}
rule130 = \ (_ :: ()) ->
{-# LINE 167 "src-ag/InterfacesRules.lag" #-}
[]
{-# LINE 1172 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule131 #-}
{-# LINE 181 "src-ag/InterfacesRules.lag" #-}
rule131 = \ (_ :: ()) ->
{-# LINE 181 "src-ag/InterfacesRules.lag" #-}
[]
{-# LINE 1178 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule132 #-}
{-# LINE 331 "src-ag/InterfacesRules.lag" #-}
rule132 = \ (_ :: ()) ->
{-# LINE 331 "src-ag/InterfacesRules.lag" #-}
repeat []
{-# LINE 1184 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule133 #-}
{-# LINE 402 "src-ag/InterfacesRules.lag" #-}
rule133 = \ (_ :: ()) ->
{-# LINE 402 "src-ag/InterfacesRules.lag" #-}
[]
{-# LINE 1190 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule134 #-}
{-# LINE 449 "src-ag/InterfacesRules.lag" #-}
rule134 = \ (_ :: ()) ->
{-# LINE 449 "src-ag/InterfacesRules.lag" #-}
[]
{-# LINE 1196 "src-generated/InterfacesRules.hs" #-}
{-# INLINE rule135 #-}
rule135 = \ (_ :: ()) ->
[]
{-# INLINE rule136 #-}
rule136 = \ (_ :: ()) ->
Seq.empty
{-# INLINE rule137 #-}
rule137 = \ (_ :: ()) ->
Seq.empty
{-# INLINE rule138 #-}
rule138 = \ (_ :: ()) ->
Seq.empty
{-# INLINE rule139 #-}
rule139 = \ ((_lhsIprev) :: [Vertex]) ->
_lhsIprev
{-# INLINE rule140 #-}
rule140 = \ ((_lhsIv) :: Vertex) ->
_lhsIv